Socket
Socket
Sign inDemoInstall

vk-chat-bot

Package Overview
Dependencies
120
Maintainers
1
Versions
140
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 15.1.0 to 16.0.0

9

CHANGELOG.md

@@ -10,2 +10,8 @@ # Changelog

## [16.0.0] - 2019-12-28
### Changed
- Replaced `moment` and `moment-duration-format` dependencies with a simple function. The process uptime output format in stats is different now.
- Switched back to `yarn`.
- Upgraded dependencies.
## [15.1.0] - 2019-06-16

@@ -462,3 +468,4 @@ ### Added

[Unreleased]: https://github.com/u32i64/vk-chat-bot/compare/v15.1.0...master
[Unreleased]: https://github.com/u32i64/vk-chat-bot/compare/v16.0.0...master
[16.0.0]: https://github.com/u32i64/vk-chat-bot/compare/v15.1.0...v16.0.0
[15.1.0]: https://github.com/u32i64/vk-chat-bot/compare/v15.0.1...v15.1.0

@@ -465,0 +472,0 @@ [15.0.1]: https://github.com/u32i64/vk-chat-bot/compare/v15.0.0...v15.0.1

4

dist/api/api.js

@@ -1,2 +0,2 @@

"use strict";var __awaiter=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))(function(o,i){function n(e){try{a(r.next(e))}catch(e){i(e)}}function u(e){try{a(r.throw(e))}catch(e){i(e)}}function a(e){e.done?o(e.value):new s(function(t){t(e.value)}).then(n,u)}a((r=r.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const crypto_1=__importDefault(require("crypto")),request_promise_1=__importDefault(require("request-promise")),log_1=require("../extra/log"),API_VERSION="5.95",API_QUOTA=20;class API{constructor(e,t){this.queue=[],this.isQueueProcessing=!1,this.vkToken=e,this.stats=t,this.checkPermissions().then(e=>{log_1.log().i(e).from("api").now()}).catch(e=>{log_1.log().w(e).from("api").now()}),setInterval(()=>{this.isQueueProcessing||(this.isQueueProcessing=!0,this.processQueue().then(()=>{this.isQueueProcessing=!1}).catch(e=>{log_1.log().w(e).from("api").now(),this.isQueueProcessing=!1}))},1e3)}scheduleCall(e,t){return __awaiter(this,void 0,void 0,function*(){return new Promise((s,r)=>{this.queue.push({method:e,params:t,resolve:s,reject:r})})})}call(e,t){return __awaiter(this,void 0,void 0,function*(){const s={uri:`https://api.vk.com/method/${encodeURIComponent(e)}`,json:!0,qs:Object.assign({access_token:this.vkToken,v:API_VERSION},t)},r=request_promise_1.default(s);return r.catch(t=>{log_1.log().w(`Error occured while calling API method '${e}': ${t}`).from("api").now()}),r})}send(e,t,s,r){return __awaiter(this,void 0,void 0,function*(){const o={peer_id:e.toString(),random_id:BigInt.asIntN(32,BigInt(`0x${crypto_1.default.randomBytes(6).toString("hex")}`)).toString()};return t&&(o.message=t),s&&(o.attachment=s),r&&(o.keyboard=r),new Promise(e=>{this.scheduleCall("messages.send",o).then(()=>{this.stats.sent(),e()}).catch(t=>{log_1.log().w(t).from("api").now(),e()})})})}checkPermissions(){return __awaiter(this,void 0,void 0,function*(){const e=yield this.scheduleCall("groups.getTokenPermissions",{}),{permissions:t}=e;let s=!1;return t.forEach(e=>{"messages"===e.name&&(s=!0)}),s?Promise.resolve("Token permission `messages` is present"):Promise.reject(new Error("Token permission `messages` is missing. Bot will be unable to send any messages"))})}processQueue(){return __awaiter(this,void 0,void 0,function*(){if(this.queue){for(let e=1;e<=API_QUOTA&&0!==this.queue.length;e+=1){const e=this.queue.shift(),t=yield this.call(e.method,e.params);if(void 0!==t.response&&null!==t.response)e.resolve(t.response);else if(t.error){const s=t.error.error_code,r=t.error.error_msg;e.reject(`An API call to method '${e.method}' failed due to an API error #${s}: ${r}`)}else e.reject(`An API call to method '${e.method}' failed due to an unknown API error. The API responded with: ${JSON.stringify(t)}`)}return Promise.resolve()}return Promise.reject(new Error("No queue for API calls found"))})}}exports.default=API;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9hcGkuanMiLCJhcGkvYXBpLnRzIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXMiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19pbXBvcnREZWZhdWx0IiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJjcnlwdG9fMSIsInJlcXVpcmUiLCJyZXF1ZXN0X3Byb21pc2VfMSIsImxvZ18xIiwiQVBJX1ZFUlNJT04iLCJBUElfUVVPVEEiLCJBUEkiLCJbb2JqZWN0IE9iamVjdF0iLCJ2a1Rva2VuIiwic3RhdHMiLCJxdWV1ZSIsImlzUXVldWVQcm9jZXNzaW5nIiwiY2hlY2tQZXJtaXNzaW9ucyIsImxvZyIsImkiLCJmcm9tIiwibm93IiwiY2F0Y2giLCJ3Iiwic2V0SW50ZXJ2YWwiLCJwcm9jZXNzUXVldWUiLCJtZXRob2QiLCJwYXJhbXMiLCJwdXNoIiwib3B0aW9ucyIsInVyaSIsImVuY29kZVVSSUNvbXBvbmVudCIsImpzb24iLCJxcyIsImFzc2lnbiIsImFjY2Vzc190b2tlbiIsInYiLCJwcm9taXNlIiwiZXJyIiwicGlkIiwibWVzc2FnZSIsImF0dGFjaG1lbnQiLCJrZXlib2FyZCIsInBlZXJfaWQiLCJ0b1N0cmluZyIsInJhbmRvbV9pZCIsIkJpZ0ludCIsImFzSW50TiIsInJhbmRvbUJ5dGVzIiwic2NoZWR1bGVDYWxsIiwic2VudCIsInJlc3BvbnNlIiwicGVybWlzc2lvbnMiLCJvayIsImZvckVhY2giLCJwZXJtaXNzaW9uIiwibmFtZSIsIkVycm9yIiwibGVuZ3RoIiwic2hpZnQiLCJjYWxsIiwidW5kZWZpbmVkIiwiZXJyb3IiLCJlcnJv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SzlILE9BQU8vQyxRQUFRQyxVQUduQixPQUFPRCxRQUFRRSxPQUFPLElBQUlzRSxNQUFNLG9DQWhTeENyRCxRQUFBSCxRQUFBVSIsImZpbGUiOiJhcGkvYXBpLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICdyZXF1ZXN0LXByb21pc2UnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vZXh0cmEvbG9nJztcbmltcG9ydCBTdGF0cyBmcm9tICcuLi9leHRyYS9zdGF0cyc7XG5cbi8qKlxuICogVksgQVBJIHZlcnNpb24gdXNlZCBieSBBUEkuXG4gKi9cbmNvbnN0IEFQSV9WRVJTSU9OID0gJzUuOTUnO1xuLyoqXG4gKiBBUEkgcXVvdGEsIGluIHJlcXVlc3RzIHBlciBzZWNvbmRcbiAqL1xuY29uc3QgQVBJX1FVT1RBID0gMjA7XG5cbi8qKlxuICogVXNlZCB0byBjYWxsIEFQSSBtZXRob2RzLlxuICpcbiAqIFlvdSBjYW4gZ2V0IHRoZSBbW0FQSV1dIG9iamVjdCBmcm9tIGEgW1tDb250ZXh0XV0gb2JqZWN0OlxuICogYGBganNcbiAqIC8vIEFzc3VtaW5nIHlvdXIgQ29udGV4dCBvYmplY3QgaXMgJFxuICogdmFyIGFwaSA9ICQuYXBpXG4gKiBgYGBcbiAqXG4gKiBPciBmcm9tIFtbQ29yZV1dIChhZnRlciBpbml0aWFsaXphdGlvbiB3aXRoIFtbYm90XV06XG4gKiBgYGBqc1xuICogdmFyIGFwaSA9IGNvcmUuYXBpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQVBJIHtcbiAgICAvKipcbiAgICAgKiBWSyBBUEkgdG9rZW4uXG4gICAgICovXG4gICAgcHJpdmF0ZSB2a1Rva2VuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTdGF0cyBvYmplY3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0czogU3RhdHM7XG5cbiAgICAvKipcbiAgICAgKiBRdWV1ZSBvZiBzY2hlZHVsZWQgQVBJIGNhbGxzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcXVldWU6IHtcbiAgICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAgIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgICAgcmVzb2x2ZTogRnVuY3Rpb247XG4gICAgICAgIHJlamVjdDogRnVuY3Rpb247XG4gICAgfVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGUgcXVldWUgYmVpbmcgcHJvY2Vzc2VkIG5vdz9cbiAgICAgKi9cbiAgICBwcml2YXRlIGlzUXVldWVQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFtbQVBJXV0uXG4gICAgICogQHBhcmFtIHZrVG9rZW4gVksgQVBJIHRva2VuXG4gICAgICogQHBhcmFtIHN0YXRzIFtbU3RhdHNdXSBvYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IodmtUb2tlbjogc3RyaW5nLCBzdGF0czogU3RhdHMpIHtcbiAgICAgICAgdGhpcy52a1Rva2VuID0gdmtUb2tlbjtcbiAgICAgICAgdGhpcy5zdGF0cyA9IHN0YXRzO1xuXG4gICAgICAgIC8vIENoZWNrIHBlcm1pc3Npb25zXG4gICAgICAgIHRoaXMuY2hlY2tQZXJtaXNzaW9ucygpXG4gICAgICAgICAgICAudGhlbigoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5pKGUpXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdhcGknKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgLncoZSlcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2FwaScpXG4gICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN0YXJ0IHRoZSBxdWV1ZSBwcm9jZXNzaW5nXG4gICAgICAgIHNldEludGVydmFsKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1F1ZXVlUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNRdWV1ZVByb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1F1ZXVlKClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1F1ZXVlUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLncoZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYXBpJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUXVldWVQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY2hlZHVsZXMgYSBjYWxsIHRvIGEgVksgQVBJIE1ldGhvZC5cbiAgICAgKlxuICAgICAqIEFmdGVyIHRoZSBjYWxsIGNvbXBsZXRlcywgYSBjaGVjayB3aWxsIGJlIHBlcmZvcm1lZCB0byBzZWUgaWYgdGhlIGNhbGwgd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LFxuICAgICAqIGFuZCBpbiB0aGUgbGF0dGVyIGNhc2UgYSB3YXJuaW5nIHdpbGwgYmUgbG9nZ2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGhvZCBWSyBBUEkgbWV0aG9kIG5hbWVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtZXRlcnMgZm9yIHRoZSBtZXRob2QsIGBhY2Nlc3NfdG9rZW5gIGFuZCBgdmAgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHByb21pc2UsIHdoaWNoIHJlc29sdmVzIHdpdGggYGpzb24ucmVzcG9uc2VgIHdoZW4gdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkXG4gICAgICogYW5kIGEgcmVzcG9uc2UgaXMgZ2l2ZW4sIGFuZCByZWplY3RzIGlmIGFuIGVycm9yIGhhcHBlbmVkXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvcmUuY21kKCdpbmZvJywgYXN5bmMgJCA9PiB7XG4gICAgICogICAgdmFyIHVpZCA9ICQub2JqLmZyb21faWQ7XG4gICAgICpcbiAgICAgKiAgICAvLyBDYWxsIFZLIEFQSSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZXJcbiAgICAgKiAgICB2YXIgcmVzcG9uc2UgPSBhd2FpdCAkLmFwaS5zY2hlZHVsZUNhbGwoJ3VzZXJzLmdldCcsIHsgdXNlcl9pZHM6IHVpZCB9KTtcbiAgICAgKiAgICB2YXIgdXNlckluZm8gPSByZXNwb25zZVswXTtcbiAgICAgKlxuICAgICAqICAgIHZhciBuYW1lID0gdXNlckluZm8uZmlyc3RfbmFtZTtcbiAgICAgKiAgICB2YXIgc3VybmFtZSA9IHVzZXJJbmZvLmxhc3RfbmFtZTtcbiAgICAgKlxuICAgICAqICAkLnRleHQoYFVzZXIgSUQ6ICR7dWlkfVxcbk5hbWU6ICR7bmFtZX0gJHtzdXJuYW1lfWApO1xuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzY2hlZHVsZUNhbGwobWV0aG9kOiBzdHJpbmcsIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgYSBWSyBBUEkgTWV0aG9kLlxuICAgICAqXG4gICAgICogKipJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gdXNlIFtbc2NoZWR1bGVDYWxsXV1cbiAgICAgKiBpbnN0ZWFkIHRvIG5vdCBleGNlZWQgdGhlIEFQSSBxdW90YSBhbmQgdG8gY2hlY2sgd2hldGhlciB0aGUgY2FsbCB3YXMgc3VjY2Vzc2Z1bCBvciBub3QhKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZXRob2QgVksgQVBJIG1ldGhvZCBuYW1lXG4gICAgICogQHBhcmFtIHBhcmFtcyBwYXJhbWV0ZXJzIGZvciB0aGUgbWV0aG9kLCBgYWNjZXNzX3Rva2VuYCBhbmQgYHZgIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBjb3JlLmNtZCgnaW5mbycsIGFzeW5jICQgPT4ge1xuICAgICAqICAgIHZhciB1aWQgPSAkLm9iai5mcm9tX2lkO1xuICAgICAqXG4gICAgICogICAgLy8gQ2FsbCBWSyBBUEkgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2VyXG4gICAgICogICAgdmFyIGpzb24gPSBhd2FpdCAkLmFwaS5jYWxsKCd1c2Vycy5nZXQnLCB7IHVzZXJfaWRzOiB1aWQgfSk7XG4gICAgICogICAgdmFyIHVzZXJJbmZvID0ganNvbi5yZXNwb25zZVswXTtcbiAgICAgKlxuICAgICAqICAgIHZhciBuYW1lID0gdXNlckluZm8uZmlyc3RfbmFtZTtcbiAgICAgKiAgICB2YXIgc3VybmFtZSA9IHVzZXJJbmZvLmxhc3RfbmFtZTtcbiAgICAgKlxuICAgICAqICAkLnRleHQoYFVzZXIgSUQ6ICR7dWlkfVxcbk5hbWU6ICR7bmFtZX0gJHtzdXJuYW1lfWApO1xuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBjYWxsKFxuICAgICAgICBtZXRob2Q6IHN0cmluZyxcbiAgICAgICAgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICk6IFByb21pc2U8YW55PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hcGkudmsuY29tL21ldGhvZC8ke2VuY29kZVVSSUNvbXBvbmVudChtZXRob2QpfWA7XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHVyaTogdXJsLFxuICAgICAgICAgICAganNvbjogdHJ1ZSxcbiAgICAgICAgICAgIHFzOiB7XG4gICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuOiB0aGlzLnZrVG9rZW4sIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZVxuICAgICAgICAgICAgICAgIHY6IEFQSV9WRVJTSU9OLFxuICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHJlcXVlc3Qob3B0aW9ucyk7XG5cbiAgICAgICAgcHJvbWlzZS5jYXRjaCgoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudyhgRXJyb3Igb2NjdXJlZCB3aGlsZSBjYWxsaW5nIEFQSSBtZXRob2QgJyR7bWV0aG9kfSc6ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgLmZyb20oJ2FwaScpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gYSB1c2VyIHZpYSBQZWVyIElELlxuICAgICAqXG4gICAgICogKipOb3RlIHRoYXQgaXQgaXMgbXVjaCBlYXNpZXIgdG8gdXNlIHRoZSBbW0NvbnRleHRdXSBvYmplY3QgcGFzc2VkIHRvIGhhbmRsZXJzXG4gICAgICogdG8gY29tcG9zZSBhbmQgc2VuZCBtZXNzYWdlcywga2V5Ym9hcmRzIGFuZCBhdHRhY2htZW50cyEqKlxuICAgICAqXG4gICAgICogQHBhcmFtIHBpZCBwZWVyIElEXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgbWVzc2FnZSB0ZXh0ICoqKHJlcXVpcmVkLCBpZiBhdHRhY2htZW50IGlzIGVtcHR5KSoqXG4gICAgICogQHBhcmFtIGF0dGFjaG1lbnQgbGlzdCBvZiBhdHRhY2htZW50cywgY29tbWEtc2VwYXJhdGVkXG4gICAgICogKHNlZSBbVksgQVBJIERvY3NdKGh0dHBzOi8vdmsuY29tL2Rldi9tZXNzYWdlcy5zZW5kKSBmb3IgZnVydGhlciBpbmZvcm1hdGlvbilcbiAgICAgKiAqKihyZXF1aXJlZCBpZiBtZXNzYWdlIGlzIGVtcHR5KSoqXG4gICAgICogQHBhcmFtIGtleWJvYXJkIGpzb24gb2Yga2V5Ym9hcmRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogYXdhaXQgYXBpLnNlbmQoMSwgJ0hlbGxvIScsICdwaG90bzY0OTJfNDU2MjQwNzc4JylcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgc2VuZChcbiAgICAgICAgcGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudDogc3RyaW5nLFxuICAgICAgICBrZXlib2FyZDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvKiBnbG9iYWwgQmlnSW50ICovXG5cbiAgICAgICAgY29uc3QgcGFyYW1zOiB7XG4gICAgICAgICAgICBwZWVyX2lkOiBzdHJpbmc7XG4gICAgICAgICAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgICAgICAgICAgYXR0YWNobWVudD86IHN0cmluZztcbiAgICAgICAgICAgIGtleWJvYXJkPzogc3RyaW5nO1xuICAgICAgICAgICAgcmFuZG9tX2lkOiBzdHJpbmc7XG4gICAgICAgIH0gPSB7XG4gICAgICAgICAgICBwZWVyX2lkOiBwaWQudG9TdHJpbmcoKSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlXG4gICAgICAgICAgICByYW5kb21faWQ6IEJpZ0ludC5hc0ludE4oIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZVxuICAgICAgICAgICAgICAgIDMyLFxuICAgICAgICAgICAgICAgIEJpZ0ludChgMHgke2NyeXB0by5yYW5kb21CeXRlcyg2KS50b1N0cmluZygnaGV4Jyl9YCksXG4gICAgICAgICAgICApLnRvU3RyaW5nKCksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHBhcmFtcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgICAgICAgcGFyYW1zLmF0dGFjaG1lbnQgPSBhdHRhY2htZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXlib2FyZCkge1xuICAgICAgICAgICAgcGFyYW1zLmtleWJvYXJkID0ga2V5Ym9hcmQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsKCdtZXNzYWdlcy5zZW5kJywgcGFyYW1zKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgLncoZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mcm9tKCdhcGknKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgZm9yIGJvdCB0byB3b3JrIHByb3Blcmx5IGFyZSBwcmVzZW50LFxuICAgICAqIGFuZCBlbWl0cyBhIHdhcm5pbmcgaWYgdGhhdCBpcyBub3QgdGhlIGNhc2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja1Blcm1pc3Npb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSB0b2tlbiBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zY2hlZHVsZUNhbGwoJ2dyb3Vwcy5nZXRUb2tlblBlcm1pc3Npb25zJywge30pO1xuXG4gICAgICAgIGNvbnN0IHsgcGVybWlzc2lvbnMgfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIGxldCBvayA9IGZhbHNlO1xuICAgICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uOiBhbnkpOiB2b2lkID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbi5uYW1lID09PSAnbWVzc2FnZXMnKSB7XG4gICAgICAgICAgICAgICAgb2sgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAnVG9rZW4gcGVybWlzc2lvbiBgbWVzc2FnZXNgIGlzIG1pc3NpbmcuIEJvdCB3aWxsIGJlIHVuYWJsZSB0byBzZW5kIGFueSBtZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnVG9rZW4gcGVybWlzc2lvbiBgbWVzc2FnZXNgIGlzIHByZXNlbnQnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb3ZlIGZvcndhcmQgdGhyb3VnaCB0aGUgcXVldWUsIHByb2Nlc3NpbmcgYXQgbW9zdCBbW0FQSV9RVU9UQV1dIGl0ZW1zXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzUXVldWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXVlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBBUElfUVVPVEE7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5xdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3AgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgdGhpcy5jYWxsKGUubWV0aG9kLCBlLnBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoanNvbi5yZXNwb25zZSAhPT0gdW5kZWZpbmVkICYmIGpzb24ucmVzcG9uc2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5yZXNvbHZlKGpzb24ucmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoanNvbi5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBqc29uLmVycm9yLmVycm9yX2NvZGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTXNnID0ganNvbi5lcnJvci5lcnJvcl9tc2c7XG5cbiAgICAgICAgICAgICAgICAgICAgZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBgQW4gQVBJIGNhbGwgdG8gbWV0aG9kICcke2UubWV0aG9kfScgZmFpbGVkIGR1ZSB0byBhbiBBUEkgZXJyb3IgIyR7ZXJyb3JDb2RlfTogJHtlcnJvck1zZ31gLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGUucmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgYEFuIEFQSSBjYWxsIHRvIG1ldGhvZCAnJHtlLm1ldGhvZH0nIGZhaWxlZCBkdWUgdG8gYW4gdW5rbm93biBBUEkgZXJyb3IuIFRoZSBBUEkgcmVzcG9uZGVkIHdpdGg6ICR7SlNPTi5zdHJpbmdpZnkoanNvbil9YCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ05vIHF1ZXVlIGZvciBBUEkgY2FsbHMgZm91bmQnKSk7XG4gICAgfVxufVxuIl19
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,s,r){return new(s||(s=Promise))((function(o,i){function n(e){try{a(r.next(e))}catch(e){i(e)}}function u(e){try{a(r.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(n,u)}a((r=r.apply(e,t||[])).next())}))},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const crypto_1=__importDefault(require("crypto")),request_promise_1=__importDefault(require("request-promise")),log_1=require("../extra/log"),API_VERSION="5.95",API_QUOTA=20;class API{constructor(e,t){this.queue=[],this.isQueueProcessing=!1,this.vkToken=e,this.stats=t,this.checkPermissions().then(e=>{log_1.log().i(e).from("api").now()}).catch(e=>{log_1.log().w(e).from("api").now()}),setInterval(()=>{this.isQueueProcessing||(this.isQueueProcessing=!0,this.processQueue().then(()=>{this.isQueueProcessing=!1}).catch(e=>{log_1.log().w(e).from("api").now(),this.isQueueProcessing=!1}))},1e3)}scheduleCall(e,t){return __awaiter(this,void 0,void 0,(function*(){return new Promise((s,r)=>{this.queue.push({method:e,params:t,resolve:s,reject:r})})}))}call(e,t){return __awaiter(this,void 0,void 0,(function*(){const s={uri:`https://api.vk.com/method/${encodeURIComponent(e)}`,json:!0,qs:Object.assign({access_token:this.vkToken,v:API_VERSION},t)},r=request_promise_1.default(s);return r.catch(t=>{log_1.log().w(`Error occured while calling API method '${e}': ${t}`).from("api").now()}),r}))}send(e,t,s,r){return __awaiter(this,void 0,void 0,(function*(){const o={peer_id:e.toString(),random_id:BigInt.asIntN(32,BigInt(`0x${crypto_1.default.randomBytes(6).toString("hex")}`)).toString()};return t&&(o.message=t),s&&(o.attachment=s),r&&(o.keyboard=r),new Promise(e=>{this.scheduleCall("messages.send",o).then(()=>{this.stats.sent(),e()}).catch(t=>{log_1.log().w(t).from("api").now(),e()})})}))}checkPermissions(){return __awaiter(this,void 0,void 0,(function*(){const e=yield this.scheduleCall("groups.getTokenPermissions",{}),{permissions:t}=e;let s=!1;return t.forEach(e=>{"messages"===e.name&&(s=!0)}),s?Promise.resolve("Token permission `messages` is present"):Promise.reject(new Error("Token permission `messages` is missing. Bot will be unable to send any messages"))}))}processQueue(){return __awaiter(this,void 0,void 0,(function*(){if(this.queue){for(let e=1;e<=API_QUOTA&&0!==this.queue.length;e+=1){const e=this.queue.shift(),t=yield this.call(e.method,e.params);if(void 0!==t.response&&null!==t.response)e.resolve(t.response);else if(t.error){const s=t.error.error_code,r=t.error.error_msg;e.reject(`An API call to method '${e.method}' failed due to an API error #${s}: ${r}`)}else e.reject(`An API call to method '${e.method}' failed due to an unknown API error. The API responded with: ${JSON.stringify(t)}`)}return Promise.resolve()}return Promise.reject(new Error("No queue for API calls found"))}))}}exports.default=API;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9hcGkuanMiLCJhcGkvYXBpLnRzIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXMiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19pbXBvcnREZWZhdWx0IiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJjcnlwdG9fMSIsInJlcXVpcmUiLCJyZXF1ZXN0X3Byb21pc2VfMSIsImxvZ18xIiwiQVBJX1ZFUlNJT04iLCJBUElfUVVPVEEiLCJBUEkiLCJbb2JqZWN0IE9iamVjdF0iLCJ2a1Rva2VuIiwic3RhdHMiLCJxdWV1ZSIsImlzUXVldWVQcm9jZXNzaW5nIiwiY2hlY2tQZXJtaXNzaW9ucyIsImxvZyIsImkiLCJmcm9tIiwibm93IiwiY2F0Y2giLCJ3Iiwic2V0SW50ZXJ2YWwiLCJwcm9jZXNzUXVldWUiLCJtZXRob2QiLCJwYXJhbXMiLCJwdXNoIiwib3B0aW9ucyIsInVyaSIsImVuY29kZVVSSUNvbXBvbmVudCIsImpzb24iLCJxcyIsImFzc2lnbiIsImFjY2Vzc190b2tlbiIsInYiLCJwcm9taXNlIiwiZXJyIiwicGlkIiwibWVzc2FnZSIsImF0dGFjaG1lbnQiLCJrZXlib2FyZCIsInBlZXJfaWQiLCJ0b1N0cmluZyIsInJhbmRvbV9pZCIsIkJpZ0ludCIsImFzSW50TiIsInJhbmRvbUJ5dGVzIiwic2NoZWR1bGVDYWxsIiwic2VudCIsInJlc3BvbnNlIiwicGVybWlzc2lvbnMiLCJvayIsImZvckVhY2giLCJwZXJtaXNzaW9uIiwibmFtZSIsIkVycm9yIiwibGVuZ3RoIiwic2hpZnQiLCJjYWxsIiwidW5kZWZpbmVkIiwiZXJyb3IiLCJlcnJv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QUF1Q3FDLE1BQWNFLFVBR3JGekUsRUFBRUwsT0FDRSwwQkFBMEJLLEVBQUVrQyx1RUFBdUV5QyxLQUFLQyxVQUFVcEMsTUFLOUgsT0FBTy9DLFFBQVFDLFVBR25CLE9BQU9ELFFBQVFFLE9BQU8sSUFBSXNFLE1BQU0scUNBaFN4Q3JELFFBQUFILFFBQUFVIiwiZmlsZSI6ImFwaS9hcGkuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJ3JlcXVlc3QtcHJvbWlzZSc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuLi9leHRyYS9sb2cnO1xuaW1wb3J0IFN0YXRzIGZyb20gJy4uL2V4dHJhL3N0YXRzJztcblxuLyoqXG4gKiBWSyBBUEkgdmVyc2lvbiB1c2VkIGJ5IEFQSS5cbiAqL1xuY29uc3QgQVBJX1ZFUlNJT04gPSAnNS45NSc7XG4vKipcbiAqIEFQSSBxdW90YSwgaW4gcmVxdWVzdHMgcGVyIHNlY29uZFxuICovXG5jb25zdCBBUElfUVVPVEEgPSAyMDtcblxuLyoqXG4gKiBVc2VkIHRvIGNhbGwgQVBJIG1ldGhvZHMuXG4gKlxuICogWW91IGNhbiBnZXQgdGhlIFtbQVBJXV0gb2JqZWN0IGZyb20gYSBbW0NvbnRleHRdXSBvYmplY3Q6XG4gKiBgYGBqc1xuICogLy8gQXNzdW1pbmcgeW91ciBDb250ZXh0IG9iamVjdCBpcyAkXG4gKiB2YXIgYXBpID0gJC5hcGlcbiAqIGBgYFxuICpcbiAqIE9yIGZyb20gW1tDb3JlXV0gKGFmdGVyIGluaXRpYWxpemF0aW9uIHdpdGggW1tib3RdXTpcbiAqIGBgYGpzXG4gKiB2YXIgYXBpID0gY29yZS5hcGlcbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBUEkge1xuICAgIC8qKlxuICAgICAqIFZLIEFQSSB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZrVG9rZW46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFN0YXRzIG9iamVjdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRzOiBTdGF0cztcblxuICAgIC8qKlxuICAgICAqIFF1ZXVlIG9mIHNjaGVkdWxlZCBBUEkgY2FsbHMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBxdWV1ZToge1xuICAgICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgICAgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgICByZXNvbHZlOiBGdW5jdGlvbjtcbiAgICAgICAgcmVqZWN0OiBGdW5jdGlvbjtcbiAgICB9W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIElzIHRoZSBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgbm93P1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNRdWV1ZVByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgW1tBUEldXS5cbiAgICAgKiBAcGFyYW0gdmtUb2tlbiBWSyBBUEkgdG9rZW5cbiAgICAgKiBAcGFyYW0gc3RhdHMgW1tTdGF0c11dIG9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcih2a1Rva2VuOiBzdHJpbmcsIHN0YXRzOiBTdGF0cykge1xuICAgICAgICB0aGlzLnZrVG9rZW4gPSB2a1Rva2VuO1xuICAgICAgICB0aGlzLnN0YXRzID0gc3RhdHM7XG5cbiAgICAgICAgLy8gQ2hlY2sgcGVybWlzc2lvbnNcbiAgICAgICAgdGhpcy5jaGVja1Blcm1pc3Npb25zKClcbiAgICAgICAgICAgIC50aGVuKChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgLmkoZSlcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2FwaScpXG4gICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAudyhlKVxuICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYXBpJylcbiAgICAgICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3RhcnQgdGhlIHF1ZXVlIHByb2Nlc3NpbmdcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzUXVldWVQcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1F1ZXVlUHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUXVldWUoKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUXVldWVQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudyhlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mcm9tKCdhcGknKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNRdWV1ZVByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNjaGVkdWxlcyBhIGNhbGwgdG8gYSBWSyBBUEkgTWV0aG9kLlxuICAgICAqXG4gICAgICogQWZ0ZXIgdGhlIGNhbGwgY29tcGxldGVzLCBhIGNoZWNrIHdpbGwgYmUgcGVyZm9ybWVkIHRvIHNlZSBpZiB0aGUgY2FsbCB3YXMgc3VjY2Vzc2Z1bCBvciBub3QsXG4gICAgICogYW5kIGluIHRoZSBsYXR0ZXIgY2FzZSBhIHdhcm5pbmcgd2lsbCBiZSBsb2dnZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0aG9kIFZLIEFQSSBtZXRob2QgbmFtZVxuICAgICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVycyBmb3IgdGhlIG1ldGhvZCwgYGFjY2Vzc190b2tlbmAgYW5kIGB2YCB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHlcbiAgICAgKlxuICAgICAqIEByZXR1cm4gcHJvbWlzZSwgd2hpY2ggcmVzb2x2ZXMgd2l0aCBganNvbi5yZXNwb25zZWAgd2hlbiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWRcbiAgICAgKiBhbmQgYSByZXNwb25zZSBpcyBnaXZlbiwgYW5kIHJlamVjdHMgaWYgYW4gZXJyb3IgaGFwcGVuZWRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogY29yZS5jbWQoJ2luZm8nLCBhc3luYyAkID0+IHtcbiAgICAgKiAgICB2YXIgdWlkID0gJC5vYmouZnJvbV9pZDtcbiAgICAgKlxuICAgICAqICAgIC8vIENhbGwgVksgQVBJIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlclxuICAgICAqICAgIHZhciByZXNwb25zZSA9IGF3YWl0ICQuYXBpLnNjaGVkdWxlQ2FsbCgndXNlcnMuZ2V0JywgeyB1c2VyX2lkczogdWlkIH0pO1xuICAgICAqICAgIHZhciB1c2VySW5mbyA9IHJlc3BvbnNlWzBdO1xuICAgICAqXG4gICAgICogICAgdmFyIG5hbWUgPSB1c2VySW5mby5maXJzdF9uYW1lO1xuICAgICAqICAgIHZhciBzdXJuYW1lID0gdXNlckluZm8ubGFzdF9uYW1lO1xuICAgICAqXG4gICAgICogICQudGV4dChgVXNlciBJRDogJHt1aWR9XFxuTmFtZTogJHtuYW1lfSAke3N1cm5hbWV9YCk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNjaGVkdWxlQ2FsbChtZXRob2Q6IHN0cmluZywgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBhIFZLIEFQSSBNZXRob2QuXG4gICAgICpcbiAgICAgKiAqKkl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byB1c2UgW1tzY2hlZHVsZUNhbGxdXVxuICAgICAqIGluc3RlYWQgdG8gbm90IGV4Y2VlZCB0aGUgQVBJIHF1b3RhIGFuZCB0byBjaGVjayB3aGV0aGVyIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsIG9yIG5vdCEqKlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGhvZCBWSyBBUEkgbWV0aG9kIG5hbWVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtZXRlcnMgZm9yIHRoZSBtZXRob2QsIGBhY2Nlc3NfdG9rZW5gIGFuZCBgdmAgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvcmUuY21kKCdpbmZvJywgYXN5bmMgJCA9PiB7XG4gICAgICogICAgdmFyIHVpZCA9ICQub2JqLmZyb21faWQ7XG4gICAgICpcbiAgICAgKiAgICAvLyBDYWxsIFZLIEFQSSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZXJcbiAgICAgKiAgICB2YXIganNvbiA9IGF3YWl0ICQuYXBpLmNhbGwoJ3VzZXJzLmdldCcsIHsgdXNlcl9pZHM6IHVpZCB9KTtcbiAgICAgKiAgICB2YXIgdXNlckluZm8gPSBqc29uLnJlc3BvbnNlWzBdO1xuICAgICAqXG4gICAgICogICAgdmFyIG5hbWUgPSB1c2VySW5mby5maXJzdF9uYW1lO1xuICAgICAqICAgIHZhciBzdXJuYW1lID0gdXNlckluZm8ubGFzdF9uYW1lO1xuICAgICAqXG4gICAgICogICQudGV4dChgVXNlciBJRDogJHt1aWR9XFxuTmFtZTogJHtuYW1lfSAke3N1cm5hbWV9YCk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGNhbGwoXG4gICAgICAgIG1ldGhvZDogc3RyaW5nLFxuICAgICAgICBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgKTogUHJvbWlzZTxhbnk+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS52ay5jb20vbWV0aG9kLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG1ldGhvZCl9YDtcblxuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgdXJpOiB1cmwsXG4gICAgICAgICAgICBqc29uOiB0cnVlLFxuICAgICAgICAgICAgcXM6IHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NfdG9rZW46IHRoaXMudmtUb2tlbiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlXG4gICAgICAgICAgICAgICAgdjogQVBJX1ZFUlNJT04sXG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwcm9taXNlID0gcmVxdWVzdChvcHRpb25zKTtcblxuICAgICAgICBwcm9taXNlLmNhdGNoKChlcnI6IEVycm9yKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgIC53KGBFcnJvciBvY2N1cmVkIHdoaWxlIGNhbGxpbmcgQVBJIG1ldGhvZCAnJHttZXRob2R9JzogJHtlcnJ9YClcbiAgICAgICAgICAgICAgICAuZnJvbSgnYXBpJylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmRzIGEgbWVzc2FnZSB0byBhIHVzZXIgdmlhIFBlZXIgSUQuXG4gICAgICpcbiAgICAgKiAqKk5vdGUgdGhhdCBpdCBpcyBtdWNoIGVhc2llciB0byB1c2UgdGhlIFtbQ29udGV4dF1dIG9iamVjdCBwYXNzZWQgdG8gaGFuZGxlcnNcbiAgICAgKiB0byBjb21wb3NlIGFuZCBzZW5kIG1lc3NhZ2VzLCBrZXlib2FyZHMgYW5kIGF0dGFjaG1lbnRzISoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGlkIHBlZXIgSURcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIHRleHQgKioocmVxdWlyZWQsIGlmIGF0dGFjaG1lbnQgaXMgZW1wdHkpKipcbiAgICAgKiBAcGFyYW0gYXR0YWNobWVudCBsaXN0IG9mIGF0dGFjaG1lbnRzLCBjb21tYS1zZXBhcmF0ZWRcbiAgICAgKiAoc2VlIFtWSyBBUEkgRG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L21lc3NhZ2VzLnNlbmQpIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uKVxuICAgICAqICoqKHJlcXVpcmVkIGlmIG1lc3NhZ2UgaXMgZW1wdHkpKipcbiAgICAgKiBAcGFyYW0ga2V5Ym9hcmQganNvbiBvZiBrZXlib2FyZFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBhd2FpdCBhcGkuc2VuZCgxLCAnSGVsbG8hJywgJ3Bob3RvNjQ5Ml80NTYyNDA3NzgnKVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kKFxuICAgICAgICBwaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50OiBzdHJpbmcsXG4gICAgICAgIGtleWJvYXJkOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8qIGdsb2JhbCBCaWdJbnQgKi9cblxuICAgICAgICBjb25zdCBwYXJhbXM6IHtcbiAgICAgICAgICAgIHBlZXJfaWQ6IHN0cmluZztcbiAgICAgICAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICAgICAgICBhdHRhY2htZW50Pzogc3RyaW5nO1xuICAgICAgICAgICAga2V5Ym9hcmQ/OiBzdHJpbmc7XG4gICAgICAgICAgICByYW5kb21faWQ6IHN0cmluZztcbiAgICAgICAgfSA9IHtcbiAgICAgICAgICAgIHBlZXJfaWQ6IHBpZC50b1N0cmluZygpLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2VcbiAgICAgICAgICAgIHJhbmRvbV9pZDogQmlnSW50LmFzSW50TiggLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlXG4gICAgICAgICAgICAgICAgMzIsXG4gICAgICAgICAgICAgICAgQmlnSW50KGAweCR7Y3J5cHRvLnJhbmRvbUJ5dGVzKDYpLnRvU3RyaW5nKCdoZXgnKX1gKSxcbiAgICAgICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgcGFyYW1zLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdHRhY2htZW50KSB7XG4gICAgICAgICAgICBwYXJhbXMuYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleWJvYXJkKSB7XG4gICAgICAgICAgICBwYXJhbXMua2V5Ym9hcmQgPSBrZXlib2FyZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZUNhbGwoJ21lc3NhZ2VzLnNlbmQnLCBwYXJhbXMpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRzLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudyhlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2FwaScpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgYm90IHRvIHdvcmsgcHJvcGVybHkgYXJlIHByZXNlbnQsXG4gICAgICogYW5kIGVtaXRzIGEgd2FybmluZyBpZiB0aGF0IGlzIG5vdCB0aGUgY2FzZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrUGVybWlzc2lvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHRva2VuIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnNcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNjaGVkdWxlQ2FsbCgnZ3JvdXBzLmdldFRva2VuUGVybWlzc2lvbnMnLCB7fSk7XG5cbiAgICAgICAgY29uc3QgeyBwZXJtaXNzaW9ucyB9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgbGV0IG9rID0gZmFsc2U7XG4gICAgICAgIHBlcm1pc3Npb25zLmZvckVhY2goKHBlcm1pc3Npb246IGFueSk6IHZvaWQgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLm5hbWUgPT09ICdtZXNzYWdlcycpIHtcbiAgICAgICAgICAgICAgICBvayA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdUb2tlbiBwZXJtaXNzaW9uIGBtZXNzYWdlc2AgaXMgbWlzc2luZy4gQm90IHdpbGwgYmUgdW5hYmxlIHRvIHNlbmQgYW55IG1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCdUb2tlbiBwZXJtaXNzaW9uIGBtZXNzYWdlc2AgaXMgcHJlc2VudCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmUgZm9yd2FyZCB0aHJvdWdoIHRoZSBxdWV1ZSwgcHJvY2Vzc2luZyBhdCBtb3N0IFtbQVBJX1FVT1RBXV0gaXRlbXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIHByb2Nlc3NRdWV1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucXVldWUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IEFQSV9RVU9UQTsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLnF1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCB0aGlzLmNhbGwoZS5tZXRob2QsIGUucGFyYW1zKTtcblxuICAgICAgICAgICAgICAgIGlmIChqc29uLnJlc3BvbnNlICE9PSB1bmRlZmluZWQgJiYganNvbi5yZXNwb25zZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBlLnJlc29sdmUoanNvbi5yZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqc29uLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGpzb24uZXJyb3IuZXJyb3JfY29kZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBqc29uLmVycm9yLmVycm9yX21zZztcblxuICAgICAgICAgICAgICAgICAgICBlLnJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGBBbiBBUEkgY2FsbCB0byBtZXRob2QgJyR7ZS5tZXRob2R9JyBmYWlsZWQgZHVlIHRvIGFuIEFQSSBlcnJvciAjJHtlcnJvckNvZGV9OiAke2Vycm9yTXNnfWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZS5yZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBgQW4gQVBJIGNhbGwgdG8gbWV0aG9kICcke2UubWV0aG9kfScgZmFpbGVkIGR1ZSB0byBhbiB1bmtub3duIEFQSSBlcnJvci4gVGhlIEFQSSByZXNwb25kZWQgd2l0aDogJHtKU09OLnN0cmluZ2lmeShqc29uKX1gLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignTm8gcXVldWUgZm9yIEFQSSBjYWxscyBmb3VuZCcpKTtcbiAgICB9XG59XG4iXX0=

@@ -1,2 +0,2 @@

"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,s){return new(i||(i=Promise))(function(n,r){function o(t){try{h(s.next(t))}catch(t){r(t)}}function a(t){try{h(s.throw(t))}catch(t){r(t)}}function h(t){t.done?n(t.value):new i(function(e){e(t.value)}).then(o,a)}h((s=s.apply(t,e||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0});const log_1=require("../extra/log"),keyboard_1=require("./keyboard");class Context{constructor(t,e,i,s){this.autoSend=!0,this.api=t,this.obj=i,this.msg=s,this.eventType=e,this.clear()}clear(){this.replyText="",this.attachment=[],this.kbdObject="",this.pid=this.getOriginalPid()}noAutoSend(){this.autoSend=!1}needsAutoSend(){return this.autoSend}getPid(){return this.pid}setPid(t){this.pid=t.toString()}getOriginalPid(){let t=this.eventType,e=this.obj;return"message_allow"===t?e.user_id:"message_typing_state"===t?e.from_id:e.peer_id}text(t){this.replyText=t}attach(t,e,i,s){s?this.attachment.push(`${t}${e}_${i}_${s}`):this.attachment.push(`${t}${e}_${i}`)}keyboard(t){this.kbdObject=JSON.stringify(t)}removeKeyboard(){this.keyboard(new keyboard_1.Keyboard)}send(){return __awaiter(this,void 0,void 0,function*(){if("message_deny"===this.eventType)return void log_1.log().w(`No message was sent to peer ${this.pid} ("message_deny" event)`).from("ctx").now();if(""===this.replyText&&this.attachment===[])return void log_1.log().w(`No message was sent to peer ${this.pid} (text or attachment is required)`).from("ctx").now();const t=this.attachment.join(",");return this.api.send(this.pid,this.replyText,t,this.kbdObject)})}}exports.default=Context;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9jb250ZXh0LmpzIiwiYXBpL2NvbnRleHQudHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpcyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwidmFsdWUiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJsb2dfMSIsInJlcXVpcmUiLCJrZXlib2FyZF8xIiwiQ29udGV4dCIsIltvYmplY3QgT2JqZWN0XSIsImFwaSIsImV2ZW50VHlwZSIsIm9iamVjdCIsIm1lc3NhZ2UiLCJhdXRvU2VuZCIsIm9iaiIsIm1zZyIsImNsZWFyIiwicmVwbHlUZXh0IiwiYXR0YWNobWVudCIsImtiZE9iamVjdCIsInBpZCIsImdldE9yaWdpbmFsUGlkIiwidG9TdHJpbmciLCJ1c2VyX2lkIiwiZnJvbV9pZCIsInBlZXJfaWQiLCJ0eHQiLCJ0eXBlIiwib3duZXJJZCIsInJlc0lkIiwiYWNjZXNzS2V5IiwicHVzaCIsImtiZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXlib2FyZCIsIktleWJvYXJkIiwibG9nIiwidyIsImZyb20iLCJub3ciLCJhdHRhY2htZW50TGlzdCIsImpvaW4iLCJzZW5kIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQSxJQUFJQSxVQUFhQyxNQUFRQSxLQUFLRCxXQUFjLFNBQVVFLEVBQVNDLEVBQVlDLEVBQUdDLEdBQzFFLE9BQU8sSUFBS0QsSUFBTUEsRUFBSUUsVUFBVSxTQUFVQyxFQUFTQyxHQUMvQyxTQUFTQyxFQUFVQyxHQUFTLElBQU1DLEVBQUtOLEVBQVVPLEtBQUtGLElBQVcsTUFBT0csR0FBS0wsRUFBT0ssSUFDcEYsU0FBU0MsRUFBU0osR0FBUyxJQUFNQyxFQUFLTixFQUFpQixNQUFFSyxJQUFXLE1BQU9HLEdBQUtMLEVBQU9LLElBQ3ZGLFNBQVNGLEVBQUtJLEdBQVVBLEVBQU9DLEtBQU9ULEVBQVFRLEVBQU9MLE9BQVMsSUFBSU4sRUFBRSxTQUFVRyxHQUFXQSxFQUFRUSxFQUFPTCxTQUFXTyxLQUFLUixFQUFXSyxHQUNuSUgsR0FBTU4sRUFBWUEsRUFBVWEsTUFBTWhCLEVBQVNDLEdBQWMsS0FBS1MsV0FHdEVPLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFWCxPQUFPLElDVHRELE1BQUFZLE1BQUFDLFFBQUEsZ0JBRUFDLFdBQUFELFFBQUEsY0FLQSxNQUFxQkUsUUE4RGpCQyxZQUFtQkMsRUFBVUMsRUFBbUJDLEVBQWdCQyxHQS9CeEQ3QixLQUFBOEIsVUFBb0IsRUFnQ3hCOUIsS0FBSzBCLElBQU1BLEVBQ1gxQixLQUFLK0IsSUFBTUgsRUFDWDVCLEtBQUtnQyxJQUFNSCxFQUNYN0IsS0FBSzJCLFVBQVlBLEVBQ2pCM0IsS0FBS2lDLFFBUUZSLFFBQ0h6QixLQUFLa0MsVUFBWSxHQUNqQmxDLEtBQUttQyxXQUFhLEdBQ2xCbkMsS0FBS29DLFVBQVksR0FDakJwQyxLQUFLcUMsSUFBTXJDLEtBQUtzQyxpQkFNYmIsYUFDSHpCLEtBQUs4QixVQUFXLEVBTWJMLGdCQUNILE9BQU96QixLQUFLOEIsU0FNVEwsU0FDSCxPQUFPekIsS0FBS3FDLElBUVRaLE9BQU9ZLEdBQ1ZyQyxLQUFLcUMsSUFBTUEsRUFBSUUsV0FNWmQsaUJBQ0gsSUFBSUUsRUFBWTNCLEtBQUsyQixVQUNqQkksRUFBTS9CLEtBQUsrQixJQUVmLE1BQWtCLGtCQUFkSixFQUNPSSxFQUFJUyxRQUNVLHlCQUFkYixFQUNBSSxFQUFJVSxRQUVKVixFQUFJVyxRQVNaakIsS0FBS2tCLEdBQ1IzQyxLQUFLa0MsVUFBWVMsRUFlZGxCLE9BQ0htQixFQUNBQyxFQUNBQyxFQUNBQyxHQUVJQSxFQUNBL0MsS0FBS21DLFdBQVdhLFFBQVFKLElBQU9DLEtBQVdDLEtBQVNDLEtBRW5EL0MsS0FBS21DLFdBQVdhLFFBQVFKLElBQU9DLEtBQVdDLEtBaUMzQ3JCLFNBQVN3QixHQUNaakQsS0FBS29DLFVBQVljLEtBQUtDLFVBQVVGLEdBTTdCeEIsaUJBQ0h6QixLQUFLb0QsU0FBUyxJQUFJN0IsV0FBQThCLFVBUVQ1QixPRGhKVCxPQUFPMUIsVUFBVUMsVUFBTSxPQUFRLEVBQVEsWUNpSnZDLEdBQXVCLGlCQUFuQkEsS0FBSzJCLFVBS0wsWUFKQU4sTUFBQWlDLE1BQ0tDLGlDQUFpQ3ZELEtBQUtxQyw4QkFDdENtQixLQUFLLE9BQ0xDLE1BSVQsR0FBdUIsS0FBbkJ6RCxLQUFLa0MsV0FBb0JsQyxLQUFLbUMsYUFBZSxHQUs3QyxZQUpBZCxNQUFBaUMsTUFDS0MsaUNBQWlDdkQsS0FBS3FDLHdDQUN0Q21CLEtBQUssT0FDTEMsTUFJVCxNQUFNQyxFQUFpQjFELEtBQUttQyxXQUFXd0IsS0FBSyxLQUc1QyxPQUFPM0QsS0FBSzBCLElBQUlrQyxLQUNaNUQsS0FBS3FDLElBQ0xyQyxLQUFLa0MsVUFDTHdCLEVBQ0ExRCxLQUFLb0MsY0F2T2pCaEIsUUFBQXlDLFFBQUFyQyIsImZpbGUiOiJhcGkvY29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vZXh0cmEvbG9nJztcbmltcG9ydCBBUEkgZnJvbSAnLi9hcGknO1xuaW1wb3J0IHsgS2V5Ym9hcmQgfSBmcm9tICcuL2tleWJvYXJkJztcblxuLyoqXG4gKiBDb250ZXh0LCB3aGljaCBpcyBwYXNzZWQgdG8gZXZlcnkgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCB7XG4gICAgLyoqXG4gICAgICogQVBJLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhcGk6IEFQSTtcblxuICAgIC8qKlxuICAgICAqIEZ1bGwgb2JqZWN0IHBhc3NlZCBieSBDYWxsYmFjayBBUEkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYG1lc3NhZ2VfbmV3YCwgYG1lc3NhZ2VfcmVwbHlgLCBgbWVzc2FnZV9lZGl0YCBvciBgbm9fbWF0Y2hgIGV2ZW50LFxuICAgICAqIHRoaXMgaXMgYSBbUHJpdmF0ZSBtZXNzYWdlIG9iamVjdF0oaHR0cHM6Ly92ay5jb20vZGV2L29iamVjdHMvbWVzc2FnZSkuXG4gICAgICogRWxzZSwgc2VlIFtDYWxsYmFjayBBUEkgZG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L2NhbGxiYWNrX2FwaSkgb3JcbiAgICAgKiBbR3JvdXBzIEV2ZW50cyBkb2NzXShodHRwczovL3ZrLmNvbS9kZXYvZ3JvdXBzX2V2ZW50cykgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9iajogYW55OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblxuICAgIC8qKlxuICAgICAqIEluY29taW5nIHVzZXIgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBbW0NvcmUuY21kXV0gaGFuZGxlciwgY29udGFpbnMgbWVzc2FnZSB3aXRob3V0IGBjbWRfcHJlZml4YCBhbmQgdGhlIGNvbW1hbmRcbiAgICAgKi9cbiAgICBwdWJsaWMgbXNnOiBzdHJpbmc7IC8vIFRPRE86IFNob3VsZCBiZSByZWFkb25seVxuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGV2ZW50VHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRG9lcyB0aGlzIFtbQ29udGV4dF1dJ3MgcmVzcG9uc2UgbmVlZCBhdXRvLXNlbmRpbmc/XG4gICAgICovXG4gICAgcHJpdmF0ZSBhdXRvU2VuZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgSUQgb2YgYSBwZWVyLCB0byB3aGljaCB0aGUgcmVwbHkgaXMgZ29pbmcgdG8gYmUgc2VudFxuICAgICAqXG4gICAgICogKipOb3RlOioqIFlvdSBjYW4gY2hhbmdlIHRoaXMgdXNpbmcgW1tzZXRQaWRdXSBtZXRob2QsXG4gICAgICogdGhlIG9yaWdpbmFsIFBlZXIgSUQgY2FuIGJlIG9idGFpbmVkIHVzaW5nIFtbZ2V0T3JpZ2luYWxQaWRdXS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHBpZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSByZXBseVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVwbHlUZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2htZW50cywgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSByZXBseVxuICAgICAqL1xuICAgIHByaXZhdGUgYXR0YWNobWVudDogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3Qgb2YgdGhlIFtbS2V5Ym9hcmRdXSwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSByZXBseVxuICAgICAqL1xuICAgIHByaXZhdGUga2JkT2JqZWN0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYXBpIHRoZSBBUEkgb2JqZWN0XG4gICAgICogQHBhcmFtIGV2ZW50VHlwZSB0aGUgZXZlbnQgdHlwZVxuICAgICAqIEBwYXJhbSBvYmplY3QgZnVsbCBvYmplY3QgZnJvbSBDYWxsYmFjayBBUElcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgbWVzc2FnZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhcGk6IEFQSSwgZXZlbnRUeXBlOiBzdHJpbmcsIG9iamVjdDogb2JqZWN0LCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgICAgIHRoaXMub2JqID0gb2JqZWN0O1xuICAgICAgICB0aGlzLm1zZyA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuZXZlbnRUeXBlID0gZXZlbnRUeXBlO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBidWZmZXIgYW5kIHJlc2V0cyB0aGUgUGVlciBJRCBiYWNrIHRvIG9yaWdpbmFsLlxuICAgICAqIFxuICAgICAqIEZvciBleGFtcGxlLCBhZnRlciBjYWxsaW5nIHRoaXMgeW91IGNhbiBjb21wb3NlIGFub3RoZXIgbWVzc2FnZSB0byB0aGUgc2FtZSB1c2VyLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXBseVRleHQgPSAnJztcbiAgICAgICAgdGhpcy5hdHRhY2htZW50ID0gW107XG4gICAgICAgIHRoaXMua2JkT2JqZWN0ID0gJyc7XG4gICAgICAgIHRoaXMucGlkID0gdGhpcy5nZXRPcmlnaW5hbFBpZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXZlbnRzIHRoaXMgaGFuZGxlciBmcm9tIHNlbmRpbmcgdGhlIG1lc3NhZ2UgYXV0b21hdGljYWxseSBhZnRlciBpdCBmaW5pc2hlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm9BdXRvU2VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdXRvU2VuZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvZXMgdGhpcyBbW0NvbnRleHRdXSdzIHJlc3BvbnNlIG5lZWQgYXV0by1zZW5kaW5nP1xuICAgICAqL1xuICAgIHB1YmxpYyBuZWVkc0F1dG9TZW5kKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRvU2VuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHBlZXIgSUQuXG4gICAgICovXG4gICAgcHVibGljIGdldFBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5waWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBhIG5ldyBwZWVyIElELlxuICAgICAqXG4gICAgICogQHBhcmFtIHBpZCBuZXcgcGVlciBJRFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQaWQocGlkOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waWQgPSBwaWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBwZWVyIElEIGZyb20gdGhlIENhbGxiYWNrIEFQSSBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGdldE9yaWdpbmFsUGlkKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCBldmVudFR5cGUgPSB0aGlzLmV2ZW50VHlwZTtcbiAgICAgICAgbGV0IG9iaiA9IHRoaXMub2JqO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgPT09ICdtZXNzYWdlX2FsbG93Jykge1xuICAgICAgICAgICAgcmV0dXJuIG9iai51c2VyX2lkO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ21lc3NhZ2VfdHlwaW5nX3N0YXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5mcm9tX2lkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5wZWVyX2lkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmVwbHkgbWVzc2FnZSB0ZXh0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHR4dCBuZXcgdGV4dFxuICAgICAqL1xuICAgIHB1YmxpYyB0ZXh0KHR4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVwbHlUZXh0ID0gdHh0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYW4gYXR0YWNobWVudCB0byB0aGUgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBmb3VuZCBpblxuICAgICAqIFtWSyBBUEkgZG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L21lc3NhZ2VzLnNlbmQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgdGhlIHR5cGUgb2YgYXR0YWNobWVudFxuICAgICAqIEBwYXJhbSBvd25lcklkIHJlc291cmNlIG93bmVyIElEXG4gICAgICogQHBhcmFtIHJlc0lkIHJlc291cmNlIElEXG4gICAgICogQHBhcmFtIGFjY2Vzc0tleSByZXNvdXJjZSBhY2Nlc3Mga2V5LCBpZiBuZWVkZWQ7XG4gICAgICogc2VlIFtBY2Nlc3MgS2V5XShodHRwczovL3ZrLmNvbS9kZXYvYWNjZXNzX2tleSkgcGFnZSBpbiBBUEkgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBhdHRhY2goXG4gICAgICAgIHR5cGU6IHN0cmluZyxcbiAgICAgICAgb3duZXJJZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgICAgICByZXNJZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgICAgICBhY2Nlc3NLZXk/OiBzdHJpbmcsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmIChhY2Nlc3NLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudC5wdXNoKGAke3R5cGV9JHtvd25lcklkfV8ke3Jlc0lkfV8ke2FjY2Vzc0tleX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudC5wdXNoKGAke3R5cGV9JHtvd25lcklkfV8ke3Jlc0lkfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBrZXlib2FyZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrYmQgdGhlIGtleWJvYXJkXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvbnN0IHsgQ29sb3IsIEtleWJvYXJkLCBidXR0b24gfSA9IHZrLmtiZDtcbiAgICAgKlxuICAgICAqIGNvcmUuY21kKCdrZXlib2FyZCcsICQgPT4ge1xuICAgICAqICAgICAvLyBTZXQgJ3RydWUnIGluc3RlYWQgb2YgJ2ZhbHNlJyB0byBtYWtlIGl0IGRpc2FwcGVhciBhZnRlciBhIGJ1dHRvbiB3YXMgcHJlc3NlZFxuICAgICAqICAgICB2YXIga2JkID0gbmV3IEtleWJvYXJkKFtcbiAgICAgKiAgICAgICAgIC8vIFJvd3NcbiAgICAgKiAgICAgICAgIFtcbiAgICAgKiAgICAgICAgICAgICBidXR0b24udGV4dCgnRGVmYXVsdCcpLFxuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdQcmltYXJ5JywgQ29sb3IuUHJpbWFyeSksXG4gICAgICogICAgICAgICAgICAgYnV0dG9uLnRleHQoJ05lZ2F0aXZlJywgQ29sb3IuTmVnYXRpdmUpLFxuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdQb3NpdGl2ZScsIENvbG9yLlBvc2l0aXZlKVxuICAgICAqICAgICAgICAgXSxcbiAgICAgKiAgICAgICAgIFtcbiAgICAgKiAgICAgICAgICAgICBidXR0b24udGV4dCgnTWF4aW11bSByb3dzIGlzIDEwLCBjb2x1bW5zIC0gNC4nKVxuICAgICAqICAgICAgICAgXSxcbiAgICAgKiAgICBdLCBmYWxzZSk7XG4gICAgICpcbiAgICAgKiAgICAkLnRleHQoJ0hlcmUgaXMgeW91ciBrZXlib2FyZCwgYXMgcHJvbWlzZWQuJyk7XG4gICAgICogICAgJC5rZXlib2FyZChrYmQpO1xuICAgICAqIH0sICdkZW1vIGtleWJvYXJkJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGtleWJvYXJkKGtiZDogS2V5Ym9hcmQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rYmRPYmplY3QgPSBKU09OLnN0cmluZ2lmeShrYmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGFuIGVtcHR5IGtleWJvYXJkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVLZXlib2FyZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlib2FyZChuZXcgS2V5Ym9hcmQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZHMgdGhlIGNvbXBvc2VkIG1lc3NhZ2UgdG8gdXNlci5cbiAgICAgKiAqKk5vdGU6KiogQWZ0ZXIgdGhlIGhhbmRsZXIgZmluaXNoZXMgaXRzIHdvcmssIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5XG4gICAgICogKGlmIFtbbm9BdXRvU2VuZF1dIHdhcyBub3QgY2FsbGVkKVxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzZW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5ldmVudFR5cGUgPT09ICdtZXNzYWdlX2RlbnknKSB7XG4gICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgIC53KGBObyBtZXNzYWdlIHdhcyBzZW50IHRvIHBlZXIgJHt0aGlzLnBpZH0gKFwibWVzc2FnZV9kZW55XCIgZXZlbnQpYClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY3R4JylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXBseVRleHQgPT09ICcnICYmIHRoaXMuYXR0YWNobWVudCA9PT0gW10pIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoYE5vIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gcGVlciAke3RoaXMucGlkfSAodGV4dCBvciBhdHRhY2htZW50IGlzIHJlcXVpcmVkKWApXG4gICAgICAgICAgICAgICAgLmZyb20oJ2N0eCcpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXR0YWNobWVudExpc3QgPSB0aGlzLmF0dGFjaG1lbnQuam9pbignLCcpO1xuXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVybiAqL1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuc2VuZChcbiAgICAgICAgICAgIHRoaXMucGlkLFxuICAgICAgICAgICAgdGhpcy5yZXBseVRleHQsXG4gICAgICAgICAgICBhdHRhY2htZW50TGlzdCxcbiAgICAgICAgICAgIHRoaXMua2JkT2JqZWN0LFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
"use strict";var __awaiter=this&&this.__awaiter||function(t,e,i,s){return new(i||(i=Promise))((function(n,r){function o(t){try{h(s.next(t))}catch(t){r(t)}}function a(t){try{h(s.throw(t))}catch(t){r(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((s=s.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0});const log_1=require("../extra/log"),keyboard_1=require("./keyboard");class Context{constructor(t,e,i,s){this.autoSend=!0,this.api=t,this.obj=i,this.msg=s,this.eventType=e,this.clear()}clear(){this.replyText="",this.attachment=[],this.kbdObject="",this.pid=this.getOriginalPid()}noAutoSend(){this.autoSend=!1}needsAutoSend(){return this.autoSend}getPid(){return this.pid}setPid(t){this.pid=t.toString()}getOriginalPid(){const t=this.eventType,e=this.obj;return"message_allow"===t?e.user_id:"message_typing_state"===t?e.from_id:e.peer_id}text(t){this.replyText=t}attach(t,e,i,s){s?this.attachment.push(`${t}${e}_${i}_${s}`):this.attachment.push(`${t}${e}_${i}`)}keyboard(t){this.kbdObject=JSON.stringify(t)}removeKeyboard(){this.keyboard(new keyboard_1.Keyboard)}send(){return __awaiter(this,void 0,void 0,(function*(){if("message_deny"===this.eventType)return void log_1.log().w(`No message was sent to peer ${this.pid} ("message_deny" event)`).from("ctx").now();if(""===this.replyText&&this.attachment===[])return void log_1.log().w(`No message was sent to peer ${this.pid} (text or attachment is required)`).from("ctx").now();const t=this.attachment.join(",");return this.api.send(this.pid,this.replyText,t,this.kbdObject)}))}}exports.default=Context;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9jb250ZXh0LmpzIiwiYXBpL2NvbnRleHQudHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpcyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwidmFsdWUiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJsb2dfMSIsInJlcXVpcmUiLCJrZXlib2FyZF8xIiwiQ29udGV4dCIsIltvYmplY3QgT2JqZWN0XSIsImFwaSIsImV2ZW50VHlwZSIsIm9iamVjdCIsIm1lc3NhZ2UiLCJhdXRvU2VuZCIsIm9iaiIsIm1zZyIsImNsZWFyIiwicmVwbHlUZXh0IiwiYXR0YWNobWVudCIsImtiZE9iamVjdCIsInBpZCIsImdldE9yaWdpbmFsUGlkIiwidG9TdHJpbmciLCJ1c2VyX2lkIiwiZnJvbV9pZCIsInBlZXJfaWQiLCJ0eHQiLCJ0eXBlIiwib3duZXJJZCIsInJlc0lkIiwiYWNjZXNzS2V5IiwicHVzaCIsImtiZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXlib2FyZCIsIktleWJvYXJkIiwibG9nIiwidyIsImZyb20iLCJub3ciLCJhdHRhY2htZW50TGlzdCIsImpvaW4iLCJzZW5kIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQSxJQUFJQSxVQUFhQyxNQUFRQSxLQUFLRCxXQUFjLFNBQVVFLEVBQVNDLEVBQVlDLEVBQUdDLEdBRTFFLE9BQU8sSUFBS0QsSUFBTUEsRUFBSUUsV0FBVSxTQUFVQyxFQUFTQyxHQUMvQyxTQUFTQyxFQUFVQyxHQUFTLElBQU1DLEVBQUtOLEVBQVVPLEtBQUtGLElBQVcsTUFBT0csR0FBS0wsRUFBT0ssSUFDcEYsU0FBU0MsRUFBU0osR0FBUyxJQUFNQyxFQUFLTixFQUFpQixNQUFFSyxJQUFXLE1BQU9HLEdBQUtMLEVBQU9LLElBQ3ZGLFNBQVNGLEVBQUtJLEdBSmxCLElBQWVMLEVBSWFLLEVBQU9DLEtBQU9ULEVBQVFRLEVBQU9MLFFBSjFDQSxFQUl5REssRUFBT0wsTUFKaERBLGFBQWlCTixFQUFJTSxFQUFRLElBQUlOLEdBQUUsU0FBVUcsR0FBV0EsRUFBUUcsT0FJVE8sS0FBS1IsRUFBV0ssR0FDbEdILEdBQU1OLEVBQVlBLEVBQVVhLE1BQU1oQixFQUFTQyxHQUFjLEtBQUtTLFlBR3RFTyxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRVgsT0FBTyxJQ1Z0RCxNQUFBWSxNQUFBQyxRQUFBLGdCQUVBQyxXQUFBRCxRQUFBLGNBS0EsTUFBcUJFLFFBOERqQkMsWUFBbUJDLEVBQVVDLEVBQW1CQyxFQUFnQkMsR0EvQnhEN0IsS0FBQThCLFVBQVcsRUFnQ2Y5QixLQUFLMEIsSUFBTUEsRUFDWDFCLEtBQUsrQixJQUFNSCxFQUNYNUIsS0FBS2dDLElBQU1ILEVBQ1g3QixLQUFLMkIsVUFBWUEsRUFDakIzQixLQUFLaUMsUUFRRlIsUUFDSHpCLEtBQUtrQyxVQUFZLEdBQ2pCbEMsS0FBS21DLFdBQWEsR0FDbEJuQyxLQUFLb0MsVUFBWSxHQUNqQnBDLEtBQUtxQyxJQUFNckMsS0FBS3NDLGlCQU1iYixhQUNIekIsS0FBSzhCLFVBQVcsRUFNYkwsZ0JBQ0gsT0FBT3pCLEtBQUs4QixTQU1UTCxTQUNILE9BQU96QixLQUFLcUMsSUFRVFosT0FBT1ksR0FDVnJDLEtBQUtxQyxJQUFNQSxFQUFJRSxXQU1aZCxpQkFDSCxNQUFNRSxFQUFZM0IsS0FBSzJCLFVBQ2pCSSxFQUFNL0IsS0FBSytCLElBRWpCLE1BQWtCLGtCQUFkSixFQUNPSSxFQUFJUyxRQUNVLHlCQUFkYixFQUNBSSxFQUFJVSxRQUVKVixFQUFJVyxRQVNaakIsS0FBS2tCLEdBQ1IzQyxLQUFLa0MsVUFBWVMsRUFlZGxCLE9BQ0htQixFQUNBQyxFQUNBQyxFQUNBQyxHQUVJQSxFQUNBL0MsS0FBS21DLFdBQVdhLEtBQUssR0FBR0osSUFBT0MsS0FBV0MsS0FBU0MsS0FFbkQvQyxLQUFLbUMsV0FBV2EsS0FBSyxHQUFHSixJQUFPQyxLQUFXQyxLQWlDM0NyQixTQUFTd0IsR0FDWmpELEtBQUtvQyxVQUFZYyxLQUFLQyxVQUFVRixHQU03QnhCLGlCQUNIekIsS0FBS29ELFNBQVMsSUFBSTdCLFdBQUE4QixVQVFUNUIsT0QvSVQsT0FBTzFCLFVBQVVDLFVBQU0sT0FBUSxHQUFRLFlDZ0p2QyxHQUF1QixpQkFBbkJBLEtBQUsyQixVQUtMLFlBSkFOLE1BQUFpQyxNQUNLQyxFQUFFLCtCQUErQnZELEtBQUtxQyw4QkFDdENtQixLQUFLLE9BQ0xDLE1BSVQsR0FBdUIsS0FBbkJ6RCxLQUFLa0MsV0FBb0JsQyxLQUFLbUMsYUFBZSxHQUs3QyxZQUpBZCxNQUFBaUMsTUFDS0MsRUFBRSwrQkFBK0J2RCxLQUFLcUMsd0NBQ3RDbUIsS0FBSyxPQUNMQyxNQUlULE1BQU1DLEVBQWlCMUQsS0FBS21DLFdBQVd3QixLQUFLLEtBRzVDLE9BQU8zRCxLQUFLMEIsSUFBSWtDLEtBQ1o1RCxLQUFLcUMsSUFDTHJDLEtBQUtrQyxVQUNMd0IsRUFDQTFELEtBQUtvQyxlQXZPakJoQixRQUFBeUMsUUFBQXJDIiwiZmlsZSI6ImFwaS9jb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyBsb2cgfSBmcm9tICcuLi9leHRyYS9sb2cnO1xuaW1wb3J0IEFQSSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBLZXlib2FyZCB9IGZyb20gJy4va2V5Ym9hcmQnO1xuXG4vKipcbiAqIENvbnRleHQsIHdoaWNoIGlzIHBhc3NlZCB0byBldmVyeSBoYW5kbGVyLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IHtcbiAgICAvKipcbiAgICAgKiBBUEkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFwaTogQVBJO1xuXG4gICAgLyoqXG4gICAgICogRnVsbCBvYmplY3QgcGFzc2VkIGJ5IENhbGxiYWNrIEFQSS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbWVzc2FnZV9uZXdgLCBgbWVzc2FnZV9yZXBseWAsIGBtZXNzYWdlX2VkaXRgIG9yIGBub19tYXRjaGAgZXZlbnQsXG4gICAgICogdGhpcyBpcyBhIFtQcml2YXRlIG1lc3NhZ2Ugb2JqZWN0XShodHRwczovL3ZrLmNvbS9kZXYvb2JqZWN0cy9tZXNzYWdlKS5cbiAgICAgKiBFbHNlLCBzZWUgW0NhbGxiYWNrIEFQSSBkb2NzXShodHRwczovL3ZrLmNvbS9kZXYvY2FsbGJhY2tfYXBpKSBvclxuICAgICAqIFtHcm91cHMgRXZlbnRzIGRvY3NdKGh0dHBzOi8vdmsuY29tL2Rldi9ncm91cHNfZXZlbnRzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb2JqOiBhbnk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXG4gICAgLyoqXG4gICAgICogSW5jb21pbmcgdXNlciBtZXNzYWdlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIFtbQ29yZS5jbWRdXSBoYW5kbGVyLCBjb250YWlucyBtZXNzYWdlIHdpdGhvdXQgYGNtZF9wcmVmaXhgIGFuZCB0aGUgY29tbWFuZFxuICAgICAqL1xuICAgIHB1YmxpYyBtc2c6IHN0cmluZzsgLy8gVE9ETzogU2hvdWxkIGJlIHJlYWRvbmx5XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEb2VzIHRoaXMgW1tDb250ZXh0XV0ncyByZXNwb25zZSBuZWVkIGF1dG8tc2VuZGluZz9cbiAgICAgKi9cbiAgICBwcml2YXRlIGF1dG9TZW5kID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiBhIHBlZXIsIHRvIHdoaWNoIHRoZSByZXBseSBpcyBnb2luZyB0byBiZSBzZW50XG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogWW91IGNhbiBjaGFuZ2UgdGhpcyB1c2luZyBbW3NldFBpZF1dIG1ldGhvZCxcbiAgICAgKiB0aGUgb3JpZ2luYWwgUGVlciBJRCBjYW4gYmUgb2J0YWluZWQgdXNpbmcgW1tnZXRPcmlnaW5hbFBpZF1dLlxuICAgICAqL1xuICAgIHByaXZhdGUgcGlkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0LCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSByZXBseVRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaG1lbnRzLCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50OiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCBvZiB0aGUgW1tLZXlib2FyZF1dLCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcGx5XG4gICAgICovXG4gICAgcHJpdmF0ZSBrYmRPYmplY3Q6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBhcGkgdGhlIEFQSSBvYmplY3RcbiAgICAgKiBAcGFyYW0gZXZlbnRUeXBlIHRoZSBldmVudCB0eXBlXG4gICAgICogQHBhcmFtIG9iamVjdCBmdWxsIG9iamVjdCBmcm9tIENhbGxiYWNrIEFQSVxuICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFwaTogQVBJLCBldmVudFR5cGU6IHN0cmluZywgb2JqZWN0OiBvYmplY3QsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICAgICAgdGhpcy5vYmogPSBvYmplY3Q7XG4gICAgICAgIHRoaXMubXNnID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5ldmVudFR5cGUgPSBldmVudFR5cGU7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGJ1ZmZlciBhbmQgcmVzZXRzIHRoZSBQZWVyIElEIGJhY2sgdG8gb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBGb3IgZXhhbXBsZSwgYWZ0ZXIgY2FsbGluZyB0aGlzIHlvdSBjYW4gY29tcG9zZSBhbm90aGVyIG1lc3NhZ2UgdG8gdGhlIHNhbWUgdXNlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVwbHlUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudCA9IFtdO1xuICAgICAgICB0aGlzLmtiZE9iamVjdCA9ICcnO1xuICAgICAgICB0aGlzLnBpZCA9IHRoaXMuZ2V0T3JpZ2luYWxQaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50cyB0aGlzIGhhbmRsZXIgZnJvbSBzZW5kaW5nIHRoZSBtZXNzYWdlIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgaXQgZmluaXNoZXMuXG4gICAgICovXG4gICAgcHVibGljIG5vQXV0b1NlbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXV0b1NlbmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb2VzIHRoaXMgW1tDb250ZXh0XV0ncyByZXNwb25zZSBuZWVkIGF1dG8tc2VuZGluZz9cbiAgICAgKi9cbiAgICBwdWJsaWMgbmVlZHNBdXRvU2VuZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0b1NlbmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBwZWVyIElELlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSBuZXcgcGVlciBJRC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaWQgbmV3IHBlZXIgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGlkKHBpZDogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGlkID0gcGlkLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgb3JpZ2luYWwgcGVlciBJRCBmcm9tIHRoZSBDYWxsYmFjayBBUEkgb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcmlnaW5hbFBpZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBldmVudFR5cGUgPSB0aGlzLmV2ZW50VHlwZTtcbiAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5vYmo7XG5cbiAgICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ21lc3NhZ2VfYWxsb3cnKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnVzZXJfaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbWVzc2FnZV90eXBpbmdfc3RhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLmZyb21faWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnBlZXJfaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSByZXBseSBtZXNzYWdlIHRleHQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHh0IG5ldyB0ZXh0XG4gICAgICovXG4gICAgcHVibGljIHRleHQodHh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXBseVRleHQgPSB0eHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbiBhdHRhY2htZW50IHRvIHRoZSBtZXNzYWdlLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcnMgY2FuIGJlIGZvdW5kIGluXG4gICAgICogW1ZLIEFQSSBkb2NzXShodHRwczovL3ZrLmNvbS9kZXYvbWVzc2FnZXMuc2VuZCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB0aGUgdHlwZSBvZiBhdHRhY2htZW50XG4gICAgICogQHBhcmFtIG93bmVySWQgcmVzb3VyY2Ugb3duZXIgSURcbiAgICAgKiBAcGFyYW0gcmVzSWQgcmVzb3VyY2UgSURcbiAgICAgKiBAcGFyYW0gYWNjZXNzS2V5IHJlc291cmNlIGFjY2VzcyBrZXksIGlmIG5lZWRlZDtcbiAgICAgKiBzZWUgW0FjY2VzcyBLZXldKGh0dHBzOi8vdmsuY29tL2Rldi9hY2Nlc3Nfa2V5KSBwYWdlIGluIEFQSSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgcHVibGljIGF0dGFjaChcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBvd25lcklkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIHJlc0lkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgICAgIGFjY2Vzc0tleT86IHN0cmluZyxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKGFjY2Vzc0tleSkge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50LnB1c2goYCR7dHlwZX0ke293bmVySWR9XyR7cmVzSWR9XyR7YWNjZXNzS2V5fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50LnB1c2goYCR7dHlwZX0ke293bmVySWR9XyR7cmVzSWR9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGtleWJvYXJkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtiZCB0aGUga2V5Ym9hcmRcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogY29uc3QgeyBDb2xvciwgS2V5Ym9hcmQsIGJ1dHRvbiB9ID0gdmsua2JkO1xuICAgICAqXG4gICAgICogY29yZS5jbWQoJ2tleWJvYXJkJywgJCA9PiB7XG4gICAgICogICAgIC8vIFNldCAndHJ1ZScgaW5zdGVhZCBvZiAnZmFsc2UnIHRvIG1ha2UgaXQgZGlzYXBwZWFyIGFmdGVyIGEgYnV0dG9uIHdhcyBwcmVzc2VkXG4gICAgICogICAgIHZhciBrYmQgPSBuZXcgS2V5Ym9hcmQoW1xuICAgICAqICAgICAgICAgLy8gUm93c1xuICAgICAqICAgICAgICAgW1xuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdEZWZhdWx0JyksXG4gICAgICogICAgICAgICAgICAgYnV0dG9uLnRleHQoJ1ByaW1hcnknLCBDb2xvci5QcmltYXJ5KSxcbiAgICAgKiAgICAgICAgICAgICBidXR0b24udGV4dCgnTmVnYXRpdmUnLCBDb2xvci5OZWdhdGl2ZSksXG4gICAgICogICAgICAgICAgICAgYnV0dG9uLnRleHQoJ1Bvc2l0aXZlJywgQ29sb3IuUG9zaXRpdmUpXG4gICAgICogICAgICAgICBdLFxuICAgICAqICAgICAgICAgW1xuICAgICAqICAgICAgICAgICAgIGJ1dHRvbi50ZXh0KCdNYXhpbXVtIHJvd3MgaXMgMTAsIGNvbHVtbnMgLSA0LicpXG4gICAgICogICAgICAgICBdLFxuICAgICAqICAgIF0sIGZhbHNlKTtcbiAgICAgKlxuICAgICAqICAgICQudGV4dCgnSGVyZSBpcyB5b3VyIGtleWJvYXJkLCBhcyBwcm9taXNlZC4nKTtcbiAgICAgKiAgICAkLmtleWJvYXJkKGtiZCk7XG4gICAgICogfSwgJ2RlbW8ga2V5Ym9hcmQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMga2V5Ym9hcmQoa2JkOiBLZXlib2FyZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtiZE9iamVjdCA9IEpTT04uc3RyaW5naWZ5KGtiZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYW4gZW1wdHkga2V5Ym9hcmQuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUtleWJvYXJkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkKG5ldyBLZXlib2FyZCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZW5kcyB0aGUgY29tcG9zZWQgbWVzc2FnZSB0byB1c2VyLlxuICAgICAqICoqTm90ZToqKiBBZnRlciB0aGUgaGFuZGxlciBmaW5pc2hlcyBpdHMgd29yaywgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHlcbiAgICAgKiAoaWYgW1tub0F1dG9TZW5kXV0gd2FzIG5vdCBjYWxsZWQpXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNlbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmV2ZW50VHlwZSA9PT0gJ21lc3NhZ2VfZGVueScpIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoYE5vIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gcGVlciAke3RoaXMucGlkfSAoXCJtZXNzYWdlX2RlbnlcIiBldmVudClgKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdjdHgnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlcGx5VGV4dCA9PT0gJycgJiYgdGhpcy5hdHRhY2htZW50ID09PSBbXSkge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudyhgTm8gbWVzc2FnZSB3YXMgc2VudCB0byBwZWVyICR7dGhpcy5waWR9ICh0ZXh0IG9yIGF0dGFjaG1lbnQgaXMgcmVxdWlyZWQpYClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY3R4JylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdHRhY2htZW50TGlzdCA9IHRoaXMuYXR0YWNobWVudC5qb2luKCcsJyk7XG5cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuICovXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5zZW5kKFxuICAgICAgICAgICAgdGhpcy5waWQsXG4gICAgICAgICAgICB0aGlzLnJlcGx5VGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRMaXN0LFxuICAgICAgICAgICAgdGhpcy5rYmRPYmplY3QsXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class Keyboard{constructor(o=[],t=!1){this.one_time=t,this.buttons=o}}var Color;exports.Keyboard=Keyboard,function(o){o.Primary="primary",o.Secondary="secondary",o.Negative="negative",o.Positive="positive"}(Color=exports.Color||(exports.Color={})),exports.button={text(o="Button",t=Color.Secondary,e=""){const r={action:{type:"text",label:o.toString()},color:t};return e&&(r.action.payload=JSON.stringify(e)),r},location(o=""){const t={action:{type:"location"}};return o&&(t.action.payload=JSON.stringify(o)),t},vkPay:o=>({action:{type:"vkpay",hash:o}}),openApp(o,t=null,e,r){const a={action:{type:"open_app",app_id:o,label:e,hash:r}};return t&&(a.action.owner_id=t),a}};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9rZXlib2FyZC5qcyIsImFwaS9rZXlib2FyZC50cyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIktleWJvYXJkIiwiW29iamVjdCBPYmplY3RdIiwiYnV0dG9ucyIsIm9uZVRpbWUiLCJ0aGlzIiwib25lX3RpbWUiLCJDb2xvciIsImJ1dHRvbiIsImxhYmVsIiwiY29sb3IiLCJTZWNvbmRhcnkiLCJwYXlsb2FkIiwiYnRuIiwiYWN0aW9uIiwidHlwZSIsInRvU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInZrUGF5IiwiaGFzaCIsImFwcElkIiwib3duZXJJZCIsImFwcF9pZCIsIm93bmVyX2lkIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyxJQ0l0RCxNQUFhQyxTQTJCVEMsWUFBbUJDLEVBQXNCLEdBQUlDLEdBQW1CLEdBQzVEQyxLQUFLQyxTQUFXRixFQUNoQkMsS0FBS0YsUUFBVUEsR0FPdkIsSUFBWUksTUFwQ1pSLFFBQUFFLFNBQUFBLFNBb0NBLFNBQVlNLEdBQ1JBLEVBQUEsUUFBQSxVQUNBQSxFQUFBLFVBQUEsWUFDQUEsRUFBQSxTQUFBLFdBQ0FBLEVBQUEsU0FBQSxXQUpKLENBQVlBLE1BQUFSLFFBQUFRLFFBQUFSLFFBQUFRLE1BQUssS0FzREpSLFFBQUFTLE9BQVMsQ0FvQmxCTixLQUNJTyxFQUFnQixTQUNoQkMsRUFBZUgsTUFBTUksVUFDckJDLEVBQW1CLElBRW5CLE1BQU1DLEVBQWtCLENBQ3BCQyxPQUFRLENBQ0pDLEtBQU0sT0FDTk4sTUFBT0EsRUFBTU8sWUFFakJOLE1BQUFBLEdBT0osT0FKSUUsSUFDQUMsRUFBSUMsT0FBT0YsUUFBVUssS0FBS0MsVUFBVU4sSUFHakNDLEdBY1hYLFNBQVNVLEVBQW1CLElBQ3hCLE1BQU1DLEVBQXNCLENBQ3hCQyxPQUFRLENBQ0pDLEtBQU0sYUFRZCxPQUpJSCxJQUNBQyxFQUFJQyxPQUFPRixRQUFVSyxLQUFLQyxVQUFVTixJQUdqQ0MsR0FjWE0sTUFBTUMsSUFDVSxDQUNSTixPQUFRLENBQ0pDLEtBQU0sUUFDTkssS0FBQUEsS0FvQlpsQixRQUNJbUIsRUFDQUMsRUFBa0IsS0FDbEJiLEVBQ0FXLEdBRUEsTUFBTVAsRUFBcUIsQ0FDdkJDLE9BQVEsQ0FDSkMsS0FBTSxXQUNOUSxPQUFRRixFQUNSWixNQUFBQSxFQUNBVyxLQUFBQSxJQVFSLE9BSklFLElBQ0FULEVBQUlDLE9BQU9VLFNBQVdGLEdBR25CVCIsImZpbGUiOiJhcGkva2V5Ym9hcmQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IFBheWxvYWQgfSBmcm9tIFwiLi4vY29yZVwiO1xuXG4vKipcbiAqIFNlZSBmdWxsIGtleWJvYXJkIGV4YW1wbGUgaW4gW1tDb250ZXh0LmtleWJvYXJkXV0uXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlib2FyZCB7XG4gICAgLyoqXG4gICAgICogSXMgdGhpcyBrZXlib2FyZCBvbmUtdGltZT9cbiAgICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgb25lX3RpbWU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJdGVtcyBvZiB0aGlzIGtleWJvYXJkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBidXR0b25zOiBCdXR0b25bXVtdO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBbW0tleWJvYXJkXV0uXG4gICAgICogQHBhcmFtIGJ1dHRvbnMgYXJyYXkgb2YgYXJyYXlzIChyb3dzKSBvZiBidXR0b25zXG4gICAgICogQHBhcmFtIG9uZVRpbWUgc2hvdyBvbmx5IG9uY2U/IChvciBkaXNhcHBlYXIgYWZ0ZXIgYnV0dG9uIHByZXNzPylcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogdmFyIGtiZCA9IG5ldyBLZXlib2FyZChbXG4gICAgICogICAgLy8gT25lIHJvd1xuICAgICAqICAgIFtcbiAgICAgKiAgICAgIGJ1dHRvbi50ZXh0KCdNYXhpbXVtIHJvd3MgaXMgMTAsIGNvbHVtbnMgLSA0LicpXG4gICAgICogICAgXSxcbiAgICAgKiBdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYnV0dG9uczogQnV0dG9uW11bXSA9IFtdLCBvbmVUaW1lOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vbmVfdGltZSA9IG9uZVRpbWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZVxuICAgICAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDb2xvcnMgb2YgYnV0dG9ucyBpbiBhIGtleWJvYXJkLlxuICovXG5leHBvcnQgZW51bSBDb2xvciB7XG4gICAgUHJpbWFyeSA9ICdwcmltYXJ5JyxcbiAgICBTZWNvbmRhcnkgPSAnc2Vjb25kYXJ5JyxcbiAgICBOZWdhdGl2ZSA9ICduZWdhdGl2ZScsXG4gICAgUG9zaXRpdmUgPSAncG9zaXRpdmUnLFxufVxuXG50eXBlIEJ1dHRvbiA9IFRleHRCdXR0b24gfCBMb2NhdGlvbkJ1dHRvbiB8IFZLUGF5QnV0dG9uIHwgT3BlbkFwcEJ1dHRvbjtcblxuLyoqXG4gKiBUZXh0LXNlbmRpbmcgYnV0dG9uLlxuICovXG5pbnRlcmZhY2UgVGV4dEJ1dHRvbiB7XG4gICAgYWN0aW9uOiB7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgcGF5bG9hZD86IHN0cmluZztcbiAgICB9O1xuICAgIGNvbG9yOiBDb2xvcjtcbn1cblxuLyoqXG4gKiBMb2NhdGlvbi1zZW5kaW5nIGJ1dHRvbi5cbiAqL1xuaW50ZXJmYWNlIExvY2F0aW9uQnV0dG9uIHtcbiAgICBhY3Rpb246IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBwYXlsb2FkPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogVksgUGF5IHBheW1lbnQgYnV0dG9uLlxuICovXG5pbnRlcmZhY2UgVktQYXlCdXR0b24ge1xuICAgIGFjdGlvbjoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIGhhc2g6IHN0cmluZztcbiAgICB9O1xufVxuXG4vKipcbiAqIEFwcC1vcGVuaW5nIGJ1dHRvbi5cbiAqL1xuaW50ZXJmYWNlIE9wZW5BcHBCdXR0b24ge1xuICAgIGFjdGlvbjoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIGFwcF9pZDogbnVtYmVyO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAgIG93bmVyX2lkPzogbnVtYmVyO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBidXR0b24gPSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRleHQtc2VuZGluZyBidXR0b24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFiZWwgYnV0dG9uIGxhYmVsXG4gICAgICogQHBhcmFtIGNvbG9yIGJ1dHRvbiBjb2xvclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIGJ1dHRvbiBwYXlsb2FkLCBzZWUgW1ZLIGJvdHMgZG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L2JvdHNfZG9jc18zKVxuICAgICAqICoqLT4qKiBTZWN0aW9uICoqNC4zKiogZm9yIG1vcmUgZGV0YWlsc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24udGV4dCgnU2Vjb25kYXJ5Jyk7XG4gICAgICogYnV0dG9uLnRleHQoJ1NlY29uZGFyeScsIGNvbG9ycy5zZWNvbmRhcnkpO1xuICAgICAqIGJ1dHRvbi50ZXh0KCdTZWNvbmRhcnknLCBjb2xvcnMuc2Vjb25kYXJ5LCB7YTogJ2InfSk7XG4gICAgICpcbiAgICAgKiBidXR0b24udGV4dCgnUHJpbWFyeScsIGNvbG9ycy5wcmltYXJ5KTtcbiAgICAgKiBidXR0b24udGV4dCgnTmVnYXRpdmUnLCBjb2xvcnMubmVnYXRpdmUpO1xuICAgICAqIGJ1dHRvbi50ZXh0KCdQb3NpdGl2ZScsIGNvbG9ycy5wb3NpdGl2ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgdGV4dChcbiAgICAgICAgbGFiZWw6IHN0cmluZyA9ICdCdXR0b24nLFxuICAgICAgICBjb2xvcjogQ29sb3IgPSBDb2xvci5TZWNvbmRhcnksXG4gICAgICAgIHBheWxvYWQ6IFBheWxvYWQgPSAnJyxcbiAgICApOiBUZXh0QnV0dG9uIHtcbiAgICAgICAgY29uc3QgYnRuOiBUZXh0QnV0dG9uID0ge1xuICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICBidG4uYWN0aW9uLnBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidG47XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsb2NhdGlvbi1zZW5kaW5nIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkIGJ1dHRvbiBwYXlsb2FkLCBzZWUgW1ZLIGJvdHMgZG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L2JvdHNfZG9jc18zKVxuICAgICAqICoqLT4qKiBTZWN0aW9uICoqNC4zKiogZm9yIG1vcmUgZGV0YWlsc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24ubG9jYXRpb24oe2E6ICdiJ30pXG4gICAgICogYGBgXG4gICAgICovXG4gICAgbG9jYXRpb24ocGF5bG9hZDogUGF5bG9hZCA9ICcnKTogTG9jYXRpb25CdXR0b24ge1xuICAgICAgICBjb25zdCBidG46IExvY2F0aW9uQnV0dG9uID0ge1xuICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2xvY2F0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHBheWxvYWQpIHtcbiAgICAgICAgICAgIGJ0bi5hY3Rpb24ucGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ0bjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFZLIFBheSBwYXltZW50IGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBoYXNoIFZLIFBheSBwYXJhbWV0ZXJzIGFuZCBhcHAgaWQgaW4gcGFyYW1ldGVyIGBhaWRgLCBkZWxpbWl0ZWQgYnkgYCZgLFxuICAgICAqIHNlZSBbVksgUGF5IGFjdGlvbnNdKGh0dHBzOi8vdmsuY29tL2Rldi92a19wYXlfYWN0aW9ucylcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogYnV0dG9uLnZrUGF5KCdhY3Rpb249dHJhbnNmZXItdG8tZ3JvdXAmZ3JvdXBfaWQ9MSZhaWQ9MTAnKVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHZrUGF5KGhhc2g6IHN0cmluZyk6IFZLUGF5QnV0dG9uIHtcbiAgICAgICAgY29uc3QgYnRuID0ge1xuICAgICAgICAgICAgYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZrcGF5JyxcbiAgICAgICAgICAgICAgICBoYXNoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gYnRuO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFwcC1vcGVuaW5nIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBJZCBBcHBsaWNhdGlvbiBJRFxuICAgICAqIEBwYXJhbSBvd25lcklkIEdyb3VwIElELCBpZiBhcHAgbmVlZHMgdG8gYmUgb3BlbmVkIGluIGdyb3VwIGNvbnRleHRcbiAgICAgKiBAcGFyYW0gbGFiZWwgQnV0dG9uIGxhYmVsXG4gICAgICogQHBhcmFtIGhhc2ggUGFyYW1ldGVycyBmb3IgYXBwIG5hdmlnYXRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogYnV0dG9uLm9wZW5BcHAoMSwgMSwgJ015IEFwcCcsICd0ZXN0JylcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBvcGVuQXBwKFxuICAgICAgICBhcHBJZDogbnVtYmVyLFxuICAgICAgICBvd25lcklkOiBudW1iZXIgPSBudWxsLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBoYXNoOiBzdHJpbmcsXG4gICAgKTogT3BlbkFwcEJ1dHRvbiB7XG4gICAgICAgIGNvbnN0IGJ0bjogT3BlbkFwcEJ1dHRvbiA9IHtcbiAgICAgICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdvcGVuX2FwcCcsXG4gICAgICAgICAgICAgICAgYXBwX2lkOiBhcHBJZCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlXG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgaGFzaCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgICAgIGJ0bi5hY3Rpb24ub3duZXJfaWQgPSBvd25lcklkOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2VcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidG47XG4gICAgfSxcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS9rZXlib2FyZC5qcyIsImFwaS9rZXlib2FyZC50cyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIktleWJvYXJkIiwiW29iamVjdCBPYmplY3RdIiwiYnV0dG9ucyIsIm9uZVRpbWUiLCJ0aGlzIiwib25lX3RpbWUiLCJDb2xvciIsImJ1dHRvbiIsImxhYmVsIiwiY29sb3IiLCJTZWNvbmRhcnkiLCJwYXlsb2FkIiwiYnRuIiwiYWN0aW9uIiwidHlwZSIsInRvU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInZrUGF5IiwiaGFzaCIsImFwcElkIiwib3duZXJJZCIsImFwcF9pZCIsIm93bmVyX2lkIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBQSxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyxJQ0l0RCxNQUFhQyxTQTJCVEMsWUFBbUJDLEVBQXNCLEdBQUlDLEdBQVUsR0FDbkRDLEtBQUtDLFNBQVdGLEVBQ2hCQyxLQUFLRixRQUFVQSxHQU92QixJQUFZSSxNQXBDWlIsUUFBQUUsU0FBQUEsU0FvQ0EsU0FBWU0sR0FDUkEsRUFBQSxRQUFBLFVBQ0FBLEVBQUEsVUFBQSxZQUNBQSxFQUFBLFNBQUEsV0FDQUEsRUFBQSxTQUFBLFdBSkosQ0FBWUEsTUFBQVIsUUFBQVEsUUFBQVIsUUFBQVEsTUFBSyxLQXNESlIsUUFBQVMsT0FBUyxDQW9CbEJOLEtBQ0lPLEVBQVEsU0FDUkMsRUFBZUgsTUFBTUksVUFDckJDLEVBQW1CLElBRW5CLE1BQU1DLEVBQWtCLENBQ3BCQyxPQUFRLENBQ0pDLEtBQU0sT0FDTk4sTUFBT0EsRUFBTU8sWUFFakJOLE1BQUFBLEdBT0osT0FKSUUsSUFDQUMsRUFBSUMsT0FBT0YsUUFBVUssS0FBS0MsVUFBVU4sSUFHakNDLEdBY1hYLFNBQVNVLEVBQW1CLElBQ3hCLE1BQU1DLEVBQXNCLENBQ3hCQyxPQUFRLENBQ0pDLEtBQU0sYUFRZCxPQUpJSCxJQUNBQyxFQUFJQyxPQUFPRixRQUFVSyxLQUFLQyxVQUFVTixJQUdqQ0MsR0FjWE0sTUFBTUMsSUFDVSxDQUNSTixPQUFRLENBQ0pDLEtBQU0sUUFDTkssS0FBQUEsS0FvQlpsQixRQUNJbUIsRUFDQUMsRUFBa0IsS0FDbEJiLEVBQ0FXLEdBRUEsTUFBTVAsRUFBcUIsQ0FDdkJDLE9BQVEsQ0FDSkMsS0FBTSxXQUNOUSxPQUFRRixFQUNSWixNQUFBQSxFQUNBVyxLQUFBQSxJQVFSLE9BSklFLElBQ0FULEVBQUlDLE9BQU9VLFNBQVdGLEdBR25CVCIsImZpbGUiOiJhcGkva2V5Ym9hcmQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IFBheWxvYWQgfSBmcm9tIFwiLi4vY29yZVwiO1xuXG4vKipcbiAqIFNlZSBmdWxsIGtleWJvYXJkIGV4YW1wbGUgaW4gW1tDb250ZXh0LmtleWJvYXJkXV0uXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlib2FyZCB7XG4gICAgLyoqXG4gICAgICogSXMgdGhpcyBrZXlib2FyZCBvbmUtdGltZT9cbiAgICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgb25lX3RpbWU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJdGVtcyBvZiB0aGlzIGtleWJvYXJkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBidXR0b25zOiBCdXR0b25bXVtdO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBbW0tleWJvYXJkXV0uXG4gICAgICogQHBhcmFtIGJ1dHRvbnMgYXJyYXkgb2YgYXJyYXlzIChyb3dzKSBvZiBidXR0b25zXG4gICAgICogQHBhcmFtIG9uZVRpbWUgc2hvdyBvbmx5IG9uY2U/IChvciBkaXNhcHBlYXIgYWZ0ZXIgYnV0dG9uIHByZXNzPylcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogdmFyIGtiZCA9IG5ldyBLZXlib2FyZChbXG4gICAgICogICAgLy8gT25lIHJvd1xuICAgICAqICAgIFtcbiAgICAgKiAgICAgIGJ1dHRvbi50ZXh0KCdNYXhpbXVtIHJvd3MgaXMgMTAsIGNvbHVtbnMgLSA0LicpXG4gICAgICogICAgXSxcbiAgICAgKiBdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYnV0dG9uczogQnV0dG9uW11bXSA9IFtdLCBvbmVUaW1lID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vbmVfdGltZSA9IG9uZVRpbWU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZVxuICAgICAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDb2xvcnMgb2YgYnV0dG9ucyBpbiBhIGtleWJvYXJkLlxuICovXG5leHBvcnQgZW51bSBDb2xvciB7XG4gICAgUHJpbWFyeSA9ICdwcmltYXJ5JyxcbiAgICBTZWNvbmRhcnkgPSAnc2Vjb25kYXJ5JyxcbiAgICBOZWdhdGl2ZSA9ICduZWdhdGl2ZScsXG4gICAgUG9zaXRpdmUgPSAncG9zaXRpdmUnLFxufVxuXG50eXBlIEJ1dHRvbiA9IFRleHRCdXR0b24gfCBMb2NhdGlvbkJ1dHRvbiB8IFZLUGF5QnV0dG9uIHwgT3BlbkFwcEJ1dHRvbjtcblxuLyoqXG4gKiBUZXh0LXNlbmRpbmcgYnV0dG9uLlxuICovXG5pbnRlcmZhY2UgVGV4dEJ1dHRvbiB7XG4gICAgYWN0aW9uOiB7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgcGF5bG9hZD86IHN0cmluZztcbiAgICB9O1xuICAgIGNvbG9yOiBDb2xvcjtcbn1cblxuLyoqXG4gKiBMb2NhdGlvbi1zZW5kaW5nIGJ1dHRvbi5cbiAqL1xuaW50ZXJmYWNlIExvY2F0aW9uQnV0dG9uIHtcbiAgICBhY3Rpb246IHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBwYXlsb2FkPzogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogVksgUGF5IHBheW1lbnQgYnV0dG9uLlxuICovXG5pbnRlcmZhY2UgVktQYXlCdXR0b24ge1xuICAgIGFjdGlvbjoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIGhhc2g6IHN0cmluZztcbiAgICB9O1xufVxuXG4vKipcbiAqIEFwcC1vcGVuaW5nIGJ1dHRvbi5cbiAqL1xuaW50ZXJmYWNlIE9wZW5BcHBCdXR0b24ge1xuICAgIGFjdGlvbjoge1xuICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgIGFwcF9pZDogbnVtYmVyO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAgIG93bmVyX2lkPzogbnVtYmVyO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBidXR0b24gPSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRleHQtc2VuZGluZyBidXR0b24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFiZWwgYnV0dG9uIGxhYmVsXG4gICAgICogQHBhcmFtIGNvbG9yIGJ1dHRvbiBjb2xvclxuICAgICAqIEBwYXJhbSBwYXlsb2FkIGJ1dHRvbiBwYXlsb2FkLCBzZWUgW1ZLIGJvdHMgZG9jc10oaHR0cHM6Ly92ay5jb20vZGV2L2JvdHNfZG9jc18zKVxuICAgICAqICoqLT4qKiBTZWN0aW9uICoqNC4zKiogZm9yIG1vcmUgZGV0YWlsc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24udGV4dCgnU2Vjb25kYXJ5Jyk7XG4gICAgICogYnV0dG9uLnRleHQoJ1NlY29uZGFyeScsIGNvbG9ycy5zZWNvbmRhcnkpO1xuICAgICAqIGJ1dHRvbi50ZXh0KCdTZWNvbmRhcnknLCBjb2xvcnMuc2Vjb25kYXJ5LCB7YTogJ2InfSk7XG4gICAgICpcbiAgICAgKiBidXR0b24udGV4dCgnUHJpbWFyeScsIGNvbG9ycy5wcmltYXJ5KTtcbiAgICAgKiBidXR0b24udGV4dCgnTmVnYXRpdmUnLCBjb2xvcnMubmVnYXRpdmUpO1xuICAgICAqIGJ1dHRvbi50ZXh0KCdQb3NpdGl2ZScsIGNvbG9ycy5wb3NpdGl2ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgdGV4dChcbiAgICAgICAgbGFiZWwgPSAnQnV0dG9uJyxcbiAgICAgICAgY29sb3I6IENvbG9yID0gQ29sb3IuU2Vjb25kYXJ5LFxuICAgICAgICBwYXlsb2FkOiBQYXlsb2FkID0gJycsXG4gICAgKTogVGV4dEJ1dHRvbiB7XG4gICAgICAgIGNvbnN0IGJ0bjogVGV4dEJ1dHRvbiA9IHtcbiAgICAgICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2xvcixcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocGF5bG9hZCkge1xuICAgICAgICAgICAgYnRuLmFjdGlvbi5wYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnRuO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbG9jYXRpb24tc2VuZGluZyBidXR0b24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBidXR0b24gcGF5bG9hZCwgc2VlIFtWSyBib3RzIGRvY3NdKGh0dHBzOi8vdmsuY29tL2Rldi9ib3RzX2RvY3NfMylcbiAgICAgKiAqKi0+KiogU2VjdGlvbiAqKjQuMyoqIGZvciBtb3JlIGRldGFpbHNcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgXG4gICAgICogYnV0dG9uLmxvY2F0aW9uKHthOiAnYid9KVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGxvY2F0aW9uKHBheWxvYWQ6IFBheWxvYWQgPSAnJyk6IExvY2F0aW9uQnV0dG9uIHtcbiAgICAgICAgY29uc3QgYnRuOiBMb2NhdGlvbkJ1dHRvbiA9IHtcbiAgICAgICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdsb2NhdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICBidG4uYWN0aW9uLnBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidG47XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBWSyBQYXkgcGF5bWVudCBidXR0b24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGFzaCBWSyBQYXkgcGFyYW1ldGVycyBhbmQgYXBwIGlkIGluIHBhcmFtZXRlciBgYWlkYCwgZGVsaW1pdGVkIGJ5IGAmYCxcbiAgICAgKiBzZWUgW1ZLIFBheSBhY3Rpb25zXShodHRwczovL3ZrLmNvbS9kZXYvdmtfcGF5X2FjdGlvbnMpXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGJ1dHRvbi52a1BheSgnYWN0aW9uPXRyYW5zZmVyLXRvLWdyb3VwJmdyb3VwX2lkPTEmYWlkPTEwJylcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICB2a1BheShoYXNoOiBzdHJpbmcpOiBWS1BheUJ1dHRvbiB7XG4gICAgICAgIGNvbnN0IGJ0biA9IHtcbiAgICAgICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICd2a3BheScsXG4gICAgICAgICAgICAgICAgaGFzaCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGJ0bjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcHAtb3BlbmluZyBidXR0b24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwSWQgQXBwbGljYXRpb24gSURcbiAgICAgKiBAcGFyYW0gb3duZXJJZCBHcm91cCBJRCwgaWYgYXBwIG5lZWRzIHRvIGJlIG9wZW5lZCBpbiBncm91cCBjb250ZXh0XG4gICAgICogQHBhcmFtIGxhYmVsIEJ1dHRvbiBsYWJlbFxuICAgICAqIEBwYXJhbSBoYXNoIFBhcmFtZXRlcnMgZm9yIGFwcCBuYXZpZ2F0aW9uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGJ1dHRvbi5vcGVuQXBwKDEsIDEsICdNeSBBcHAnLCAndGVzdCcpXG4gICAgICogYGBgXG4gICAgICovXG4gICAgb3BlbkFwcChcbiAgICAgICAgYXBwSWQ6IG51bWJlcixcbiAgICAgICAgb3duZXJJZDogbnVtYmVyID0gbnVsbCxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgaGFzaDogc3RyaW5nLFxuICAgICk6IE9wZW5BcHBCdXR0b24ge1xuICAgICAgICBjb25zdCBidG46IE9wZW5BcHBCdXR0b24gPSB7XG4gICAgICAgICAgICBhY3Rpb246IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnb3Blbl9hcHAnLFxuICAgICAgICAgICAgICAgIGFwcF9pZDogYXBwSWQsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZVxuICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgIGhhc2gsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgICAgICBidG4uYWN0aW9uLm93bmVyX2lkID0gb3duZXJJZDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnRuO1xuICAgIH0sXG59O1xuIl19
"use strict";var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0});const log_1=require("./extra/log"),body_parser_1=__importDefault(require("body-parser")),express_1=__importDefault(require("express"));class Bot{constructor(o,t,e,r,s){this.core=o,this.groupId=t,this.confirmationToken=e,this.secret=r,this.port=s}start(){this.core.lock();const{evt:o,cmd:t,reg:e,pld:r}=this.core.getHandlerCounts();log_1.log().i(`Handlers count: on:${o} cmd:${t} regex:${e} payload:${r}`).from("bot").now(),o+t+e+r===0&&log_1.log().w("The bot won't do anything without handlers!").from("bot").now(),log_1.log().i("Preparing and starting the server...").from("bot").now();const s=express_1.default();s.use(body_parser_1.default.json()),s.get("/",(o,t)=>{t.status(400).send("Only POST allowed."),log_1.log().w("Received a GET request").from("bot").now()}),s.post("/",(o,t)=>{const{body:e}=o;return e.secret!==this.secret?(t.status(400).send("Invalid secret key."),void log_1.log().w("Received a request with an invalid secret key").from("bot").now()):e.group_id.toString()!==this.groupId?(t.status(400).send("Invalid group id."),void log_1.log().w("Received a request with an invalid group id").from("bot").now()):void("confirmation"===e.type?(t.status(200).send(this.confirmationToken),log_1.log().r("Sent confirmation token.").from("bot").now()):(t.status(200).send("ok"),this.core.parseRequest(e)))}),s.listen(this.port,o=>{o&&log_1.log().e(`Error occured while starting the server: ${o}`).from("bot").now(),log_1.log().i(`Server is listening on port ${this.port}`).from("bot").now()})}}exports.default=Bot;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvdC5qcyIsImJvdC50cyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJ0aGlzIiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImxvZ18xIiwicmVxdWlyZSIsImJvZHlfcGFyc2VyXzEiLCJleHByZXNzXzEiLCJCb3QiLCJbb2JqZWN0IE9iamVjdF0iLCJjb3JlIiwiZ3JvdXBJZCIsImNvbmZpcm1hdGlvblRva2VuIiwic2VjcmV0IiwicG9ydCIsImxvY2siLCJldnQiLCJjbWQiLCJyZWciLCJwbGQiLCJnZXRIYW5kbGVyQ291bnRzIiwibG9nIiwiaSIsImZyb20iLCJub3ciLCJ3IiwiYXBwIiwidXNlIiwianNvbiIsImdldCIsIl9yZXEiLCJyZXMiLCJzdGF0dXMiLCJzZW5kIiwicG9zdCIsInJlcSIsImJvZHkiLCJncm91cF9pZCIsInRvU3RyaW5nIiwidHlwZSIsInIiLCJwYXJzZVJlcXVlc3QiLCJsaXN0ZW4iLCJlcnIiLCJlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFeERHLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPLElDSHRELE1BQUFDLE1BQUFDLFFBQUEsZUFFQUMsY0FBQVgsZ0JBQUFVLFFBQUEsZ0JBQ0FFLFVBQUFaLGdCQUFBVSxRQUFBLFlBTUEsTUFBcUJHLElBOEJqQkMsWUFDSUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FFQWxCLEtBQUtjLEtBQU9BLEVBQ1pkLEtBQUtlLFFBQVVBLEVBQ2ZmLEtBQUtnQixrQkFBb0JBLEVBQ3pCaEIsS0FBS2lCLE9BQVNBLEVBQ2RqQixLQUFLa0IsS0FBT0EsRUFNVEwsUUFDSGIsS0FBS2MsS0FBS0ssT0FDVixNQUFNQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxHQUFRdkIsS0FBS2MsS0FBS1UsbUJBRXpDaEIsTUFBQWlCLE1BQ0tDLHdCQUF3Qk4sU0FBV0MsV0FBYUMsYUFBZUMsS0FDL0RJLEtBQUssT0FDTEMsTUFFRFIsRUFBTUMsRUFBTUMsRUFBTUMsSUFBUSxHQUMxQmYsTUFBQWlCLE1BQ0tJLEVBQUUsK0NBQ0ZGLEtBQUssT0FDTEMsTUFHVHBCLE1BQUFpQixNQUNLQyxFQUFFLHdDQUNGQyxLQUFLLE9BQ0xDLE1BRUwsTUFBTUUsRUFBTW5CLFVBQUFSLFVBRVoyQixFQUFJQyxJQUFJckIsY0FBQVAsUUFBVzZCLFFBRW5CRixFQUFJRyxJQUNBLElBQ0EsQ0FDSUMsRUFDQUMsS0FFQUEsRUFBSUMsT0FBTyxLQUFLQyxLQUFLLHNCQUNyQjdCLE1BQUFpQixNQUNLSSxFQUFFLDBCQUNGRixLQUFLLE9BQ0xDLFFBSWJFLEVBQUlRLEtBQ0EsSUFDQSxDQUNJQyxFQUNBSixLQUVBLE1BQU1LLEtBQUVBLEdBQVNELEVBRWpCLE9BQUlDLEVBQUt2QixTQUFXakIsS0FBS2lCLFFBQ3JCa0IsRUFBSUMsT0FBTyxLQUFLQyxLQUFLLDRCQUNyQjdCLE1BQUFpQixNQUNLSSxFQUFFLGlEQUNGRixLQUFLLE9BQ0xDLE9BSUxZLEVBQUtDLFNBQVNDLGFBQWUxQyxLQUFLZSxTQUNsQ29CLEVBQUlDLE9BQU8sS0FBS0MsS0FBSywwQkFDckI3QixNQUFBaUIsTUFDS0ksRUFBRSwrQ0FDRkYsS0FBSyxPQUNMQyxZQUlTLGlCQUFkWSxFQUFLRyxNQUNMUixFQUFJQyxPQUFPLEtBQUtDLEtBQUtyQyxLQUFLZ0IsbUJBQzFCUixNQUFBaUIsTUFDS21CLEVBQUUsNEJBQ0ZqQixLQUFLLE9BQ0xDLFFBRUxPLEVBQUlDLE9BQU8sS0FBS0MsS0FBSyxNQUNyQnJDLEtBQUtjLEtBQUsrQixhQUFhTCxPQUtuQ1YsRUFBSWdCLE9BQU85QyxLQUFLa0IsS0FBTzZCLElBQ2ZBLEdBQ0F2QyxNQUFBaUIsTUFDS3VCLDhDQUE4Q0QsS0FDOUNwQixLQUFLLE9BQ0xDLE1BR1RwQixNQUFBaUIsTUFDS0MsaUNBQWlDMUIsS0FBS2tCLFFBQ3RDUyxLQUFLLE9BQ0xDLFNBeElqQnRCLFFBQUFILFFBQUFTIiwiZmlsZSI6ImJvdC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IENvcmUgZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vZXh0cmEvbG9nJztcblxuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IGV4cHJlc3MsIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuLyoqXG4gKiBUaGUgW1tCb3RdXSBjbGFzcyByZXNwb25kcyB0byBpbmNvbWluZyBldmVudHMgZnJvbSBDYWxsYmFjayBBUEksXG4gKiBhbmQgZmlndXJlcyBvdXQgd2hhdCBuZWVkcyB0byBiZSBkb25lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb3Qge1xuICAgIC8qKlxuICAgICAqIENvcmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3JlOiBDb3JlO1xuICAgIC8qKlxuICAgICAqIEdyb3VwIElELlxuICAgICAqL1xuICAgIHByaXZhdGUgZ3JvdXBJZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbmZpcm1hdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblRva2VuOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU2VjcmV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VjcmV0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUG9ydC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHBvcnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgW1tCb3RdXS5cbiAgICAgKiBAcGFyYW0gY29yZSAtIGEgW1tDb3JlXV0gb2JqZWN0XG4gICAgICogQHBhcmFtIGdyb3VwSWQgLSBncm91cCBJRCBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBjb25maXJtYXRpb25Ub2tlbiAtIGNvbmZpcm1hdGlvbiB0b2tlbiBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBzZWNyZXQgLSBzZWNyZXQga2V5IChjYW4gYmUgc2V0IGluIENhbGxiYWNrIEFQSSBzZXR0aW5ncylcbiAgICAgKiBAcGFyYW0gcG9ydCAtIHRoZSBwb3J0IGJvdCB3aWxsIHJ1biBhdFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29yZTogQ29yZSxcbiAgICAgICAgZ3JvdXBJZDogc3RyaW5nLFxuICAgICAgICBjb25maXJtYXRpb25Ub2tlbjogc3RyaW5nLFxuICAgICAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICkge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLmdyb3VwSWQgPSBncm91cElkO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRva2VuID0gY29uZmlybWF0aW9uVG9rZW47XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJ0cyB0aGUgYm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlLmxvY2soKTtcbiAgICAgICAgY29uc3QgeyBldnQsIGNtZCwgcmVnLCBwbGQgfSA9IHRoaXMuY29yZS5nZXRIYW5kbGVyQ291bnRzKCk7XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKGBIYW5kbGVycyBjb3VudDogb246JHtldnR9IGNtZDoke2NtZH0gcmVnZXg6JHtyZWd9IHBheWxvYWQ6JHtwbGR9YClcbiAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgIGlmIChldnQgKyBjbWQgKyByZWcgKyBwbGQgPT09IDApIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoXCJUaGUgYm90IHdvbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgaGFuZGxlcnMhXCIpXG4gICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKCdQcmVwYXJpbmcgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuLi4nKVxuICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAubm93KCk7XG5cbiAgICAgICAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuXG4gICAgICAgIGFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpO1xuXG4gICAgICAgIGFwcC5nZXQoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgX3JlcTogUmVxdWVzdCxcbiAgICAgICAgICAgICAgICByZXM6IFJlc3BvbnNlLFxuICAgICAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ09ubHkgUE9TVCBhbGxvd2VkLicpO1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIEdFVCByZXF1ZXN0JylcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgYXBwLnBvc3QoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcmVxOiBSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHJlczogUmVzcG9uc2UsXG4gICAgICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGJvZHkgfSA9IHJlcTtcblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnNlY3JldCAhPT0gdGhpcy5zZWNyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgc2VjcmV0IGtleS4nKTtcbiAgICAgICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIHJlcXVlc3Qgd2l0aCBhbiBpbnZhbGlkIHNlY3JldCBrZXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9keS5ncm91cF9pZC50b1N0cmluZygpICE9PSB0aGlzLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgZ3JvdXAgaWQuJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudygnUmVjZWl2ZWQgYSByZXF1ZXN0IHdpdGggYW4gaW52YWxpZCBncm91cCBpZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnR5cGUgPT09ICdjb25maXJtYXRpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHRoaXMuY29uZmlybWF0aW9uVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnIoJ1NlbnQgY29uZmlybWF0aW9uIHRva2VuLicpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnb2snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3JlLnBhcnNlUmVxdWVzdChib2R5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGFwcC5saXN0ZW4odGhpcy5wb3J0LCAoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5lKGBFcnJvciBvY2N1cmVkIHdoaWxlIHN0YXJ0aW5nIHRoZSBzZXJ2ZXI6ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLmkoYFNlcnZlciBpcyBsaXN0ZW5pbmcgb24gcG9ydCAke3RoaXMucG9ydH1gKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvdC5qcyIsImJvdC50cyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJ0aGlzIiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImxvZ18xIiwicmVxdWlyZSIsImJvZHlfcGFyc2VyXzEiLCJleHByZXNzXzEiLCJCb3QiLCJbb2JqZWN0IE9iamVjdF0iLCJjb3JlIiwiZ3JvdXBJZCIsImNvbmZpcm1hdGlvblRva2VuIiwic2VjcmV0IiwicG9ydCIsImxvY2siLCJldnQiLCJjbWQiLCJyZWciLCJwbGQiLCJnZXRIYW5kbGVyQ291bnRzIiwibG9nIiwiaSIsImZyb20iLCJub3ciLCJ3IiwiYXBwIiwidXNlIiwianNvbiIsImdldCIsIl9yZXEiLCJyZXMiLCJzdGF0dXMiLCJzZW5kIiwicG9zdCIsInJlcSIsImJvZHkiLCJncm91cF9pZCIsInRvU3RyaW5nIiwidHlwZSIsInIiLCJwYXJzZVJlcXVlc3QiLCJsaXN0ZW4iLCJlcnIiLCJlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFeERHLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPLElDSHRELE1BQUFDLE1BQUFDLFFBQUEsZUFFQUMsY0FBQVgsZ0JBQUFVLFFBQUEsZ0JBQ0FFLFVBQUFaLGdCQUFBVSxRQUFBLFlBTUEsTUFBcUJHLElBOEJqQkMsWUFDSUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FFQWxCLEtBQUtjLEtBQU9BLEVBQ1pkLEtBQUtlLFFBQVVBLEVBQ2ZmLEtBQUtnQixrQkFBb0JBLEVBQ3pCaEIsS0FBS2lCLE9BQVNBLEVBQ2RqQixLQUFLa0IsS0FBT0EsRUFNVEwsUUFDSGIsS0FBS2MsS0FBS0ssT0FDVixNQUFNQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxFQUFHQyxJQUFFQSxHQUFRdkIsS0FBS2MsS0FBS1UsbUJBRXpDaEIsTUFBQWlCLE1BQ0tDLEVBQUUsc0JBQXNCTixTQUFXQyxXQUFhQyxhQUFlQyxLQUMvREksS0FBSyxPQUNMQyxNQUVEUixFQUFNQyxFQUFNQyxFQUFNQyxJQUFRLEdBQzFCZixNQUFBaUIsTUFDS0ksRUFBRSwrQ0FDRkYsS0FBSyxPQUNMQyxNQUdUcEIsTUFBQWlCLE1BQ0tDLEVBQUUsd0NBQ0ZDLEtBQUssT0FDTEMsTUFFTCxNQUFNRSxFQUFNbkIsVUFBQVIsVUFFWjJCLEVBQUlDLElBQUlyQixjQUFBUCxRQUFXNkIsUUFFbkJGLEVBQUlHLElBQ0EsSUFDQSxDQUNJQyxFQUNBQyxLQUVBQSxFQUFJQyxPQUFPLEtBQUtDLEtBQUssc0JBQ3JCN0IsTUFBQWlCLE1BQ0tJLEVBQUUsMEJBQ0ZGLEtBQUssT0FDTEMsUUFJYkUsRUFBSVEsS0FDQSxJQUNBLENBQ0lDLEVBQ0FKLEtBRUEsTUFBTUssS0FBRUEsR0FBU0QsRUFFakIsT0FBSUMsRUFBS3ZCLFNBQVdqQixLQUFLaUIsUUFDckJrQixFQUFJQyxPQUFPLEtBQUtDLEtBQUssNEJBQ3JCN0IsTUFBQWlCLE1BQ0tJLEVBQUUsaURBQ0ZGLEtBQUssT0FDTEMsT0FJTFksRUFBS0MsU0FBU0MsYUFBZTFDLEtBQUtlLFNBQ2xDb0IsRUFBSUMsT0FBTyxLQUFLQyxLQUFLLDBCQUNyQjdCLE1BQUFpQixNQUNLSSxFQUFFLCtDQUNGRixLQUFLLE9BQ0xDLFlBSVMsaUJBQWRZLEVBQUtHLE1BQ0xSLEVBQUlDLE9BQU8sS0FBS0MsS0FBS3JDLEtBQUtnQixtQkFDMUJSLE1BQUFpQixNQUNLbUIsRUFBRSw0QkFDRmpCLEtBQUssT0FDTEMsUUFFTE8sRUFBSUMsT0FBTyxLQUFLQyxLQUFLLE1BQ3JCckMsS0FBS2MsS0FBSytCLGFBQWFMLE9BS25DVixFQUFJZ0IsT0FBTzlDLEtBQUtrQixLQUFPNkIsSUFDZkEsR0FDQXZDLE1BQUFpQixNQUNLdUIsRUFBRSw0Q0FBNENELEtBQzlDcEIsS0FBSyxPQUNMQyxNQUdUcEIsTUFBQWlCLE1BQ0tDLEVBQUUsK0JBQStCMUIsS0FBS2tCLFFBQ3RDUyxLQUFLLE9BQ0xDLFNBeElqQnRCLFFBQUFILFFBQUFTIiwiZmlsZSI6ImJvdC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IENvcmUgZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vZXh0cmEvbG9nJztcblxuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IGV4cHJlc3MsIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuLyoqXG4gKiBUaGUgW1tCb3RdXSBjbGFzcyByZXNwb25kcyB0byBpbmNvbWluZyBldmVudHMgZnJvbSBDYWxsYmFjayBBUEksXG4gKiBhbmQgZmlndXJlcyBvdXQgd2hhdCBuZWVkcyB0byBiZSBkb25lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb3Qge1xuICAgIC8qKlxuICAgICAqIENvcmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3JlOiBDb3JlO1xuICAgIC8qKlxuICAgICAqIEdyb3VwIElELlxuICAgICAqL1xuICAgIHByaXZhdGUgZ3JvdXBJZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbmZpcm1hdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblRva2VuOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU2VjcmV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2VjcmV0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUG9ydC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHBvcnQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgW1tCb3RdXS5cbiAgICAgKiBAcGFyYW0gY29yZSAtIGEgW1tDb3JlXV0gb2JqZWN0XG4gICAgICogQHBhcmFtIGdyb3VwSWQgLSBncm91cCBJRCBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBjb25maXJtYXRpb25Ub2tlbiAtIGNvbmZpcm1hdGlvbiB0b2tlbiBmcm9tIENhbGxiYWNrIEFQSSBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBzZWNyZXQgLSBzZWNyZXQga2V5IChjYW4gYmUgc2V0IGluIENhbGxiYWNrIEFQSSBzZXR0aW5ncylcbiAgICAgKiBAcGFyYW0gcG9ydCAtIHRoZSBwb3J0IGJvdCB3aWxsIHJ1biBhdFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29yZTogQ29yZSxcbiAgICAgICAgZ3JvdXBJZDogc3RyaW5nLFxuICAgICAgICBjb25maXJtYXRpb25Ub2tlbjogc3RyaW5nLFxuICAgICAgICBzZWNyZXQ6IHN0cmluZyxcbiAgICAgICAgcG9ydDogbnVtYmVyLFxuICAgICkge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLmdyb3VwSWQgPSBncm91cElkO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRva2VuID0gY29uZmlybWF0aW9uVG9rZW47XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJ0cyB0aGUgYm90LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlLmxvY2soKTtcbiAgICAgICAgY29uc3QgeyBldnQsIGNtZCwgcmVnLCBwbGQgfSA9IHRoaXMuY29yZS5nZXRIYW5kbGVyQ291bnRzKCk7XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKGBIYW5kbGVycyBjb3VudDogb246JHtldnR9IGNtZDoke2NtZH0gcmVnZXg6JHtyZWd9IHBheWxvYWQ6JHtwbGR9YClcbiAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgIGlmIChldnQgKyBjbWQgKyByZWcgKyBwbGQgPT09IDApIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLncoXCJUaGUgYm90IHdvbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgaGFuZGxlcnMhXCIpXG4gICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC5pKCdQcmVwYXJpbmcgYW5kIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIuLi4nKVxuICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAubm93KCk7XG5cbiAgICAgICAgY29uc3QgYXBwID0gZXhwcmVzcygpO1xuXG4gICAgICAgIGFwcC51c2UoYm9keVBhcnNlci5qc29uKCkpO1xuXG4gICAgICAgIGFwcC5nZXQoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgX3JlcTogUmVxdWVzdCxcbiAgICAgICAgICAgICAgICByZXM6IFJlc3BvbnNlLFxuICAgICAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ09ubHkgUE9TVCBhbGxvd2VkLicpO1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIEdFVCByZXF1ZXN0JylcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgYXBwLnBvc3QoXG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcmVxOiBSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHJlczogUmVzcG9uc2UsXG4gICAgICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGJvZHkgfSA9IHJlcTtcblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnNlY3JldCAhPT0gdGhpcy5zZWNyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgc2VjcmV0IGtleS4nKTtcbiAgICAgICAgICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC53KCdSZWNlaXZlZCBhIHJlcXVlc3Qgd2l0aCBhbiBpbnZhbGlkIHNlY3JldCBrZXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2JvdCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYm9keS5ncm91cF9pZC50b1N0cmluZygpICE9PSB0aGlzLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoJ0ludmFsaWQgZ3JvdXAgaWQuJyk7XG4gICAgICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAudygnUmVjZWl2ZWQgYSByZXF1ZXN0IHdpdGggYW4gaW52YWxpZCBncm91cCBpZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChib2R5LnR5cGUgPT09ICdjb25maXJtYXRpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHRoaXMuY29uZmlybWF0aW9uVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnIoJ1NlbnQgY29uZmlybWF0aW9uIHRva2VuLicpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZnJvbSgnYm90JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnb2snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3JlLnBhcnNlUmVxdWVzdChib2R5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGFwcC5saXN0ZW4odGhpcy5wb3J0LCAoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5lKGBFcnJvciBvY2N1cmVkIHdoaWxlIHN0YXJ0aW5nIHRoZSBzZXJ2ZXI6ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLmkoYFNlcnZlciBpcyBsaXN0ZW5pbmcgb24gcG9ydCAke3RoaXMucG9ydH1gKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdib3QnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19

@@ -1,2 +0,2 @@

"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(s,a){function i(e){try{o(r.next(e))}catch(e){a(e)}}function l(e){try{o(r.throw(e))}catch(e){a(e)}}function o(e){e.done?s(e.value):new n(function(t){t(e.value)}).then(i,l)}o((r=r.apply(e,t||[])).next())})},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const escape_string_regexp_1=__importDefault(require("escape-string-regexp")),context_1=__importDefault(require("./api/context")),log_1=require("./extra/log");class Core{constructor(e,t,n,r){this.locked=!1,this.eventHandlers={message_new:null,message_reply:null,message_edit:null,message_typing_state:null,message_allow:null,message_deny:null,start:null,service_action:null,no_match:null,handler_error:null},this.exactPayloadHandlers={},this.dynPayloadHandlers=[],this.commandHandlers=[],this.regexHandlers=[],this.eventWarnings=!0,this.helpMessage="",this.api=e,this.stats=t,this.cmdPrefix=n,this.escapedCmdPrefix=escape_string_regexp_1.default(this.cmdPrefix),this.groupId=escape_string_regexp_1.default(r.toString()),this.registerMessageNewHandler()}noEventWarnings(){this.eventWarnings=!1,log_1.log().w("Warnings about missing event handlers were disabled").from("core").now()}lock(){this.locked=!0,this.generateHelpMessage()}on(e,t){this.isLocked()||(Object.keys(this.eventHandlers).includes(e)||log_1.log().e(`Cannot register a handler: unknown event type '${e}'`).from("core").now(),this.eventHandlers[e]?"message_new"===e?log_1.log().e("Cannot register a handler: handler for the `message_new` event is defined internally").from("core").now():log_1.log().e(`Cannot register a handler: duplicate handler for event '${e}'`).from("core").now():this.eventHandlers[e]=t)}payload(e,t){this.isLocked()||("function"!=typeof e?this.exactPayloadHandlers[JSON.stringify(e)]?log_1.log().e(`Cannot register a handler: duplicate handler for payload '${e}'`).from("core").now():this.exactPayloadHandlers[JSON.stringify(e)]=t:this.dynPayloadHandlers.push({tester:e,handler:t}))}cmd(e,t,n=""){this.isLocked()||this.commandHandlers.push({command:e,description:n,handler:t})}regex(e,t){this.isLocked()||this.regexHandlers.push({regex:e,handler:t})}parseRequest(e){return __awaiter(this,void 0,void 0,function*(){const t=e.object,n=e.type,r=new context_1.default(this.api,n,t,t.text);yield this.event(n,r)})}help(){return this.helpMessage}isLocked(){return this.locked&&log_1.log().w("Registering a handler while the bot is running is not allowed").from("core").now(),this.locked}event(e,t){return __awaiter(this,void 0,void 0,function*(){if(this.stats.event(e),this.eventHandlers[e])try{yield this.eventHandlers[e](t),t.needsAutoSend()&&"message_new"!==e&&(yield t.send())}catch(n){log_1.log().w(`Error in handler: ${n}`).from("core").now(),"handler_error"!==e&&(yield this.event("handler_error",t))}else this.eventWarnings&&log_1.log().w(`No handler for event '${e}'`).from("core").now()})}registerMessageNewHandler(){this.on("message_new",e=>__awaiter(this,void 0,void 0,function*(){if(!e.obj.action)return(yield this.tryHandlePayload(e))||(yield this.tryHandleCommand(e))||(yield this.tryHandleRegex(e))?void(e.needsAutoSend()&&(yield e.send())):(log_1.log().w(`Don't know how to respond to ${JSON.stringify(e.msg).replace(/\n/g,"\\n")}, calling 'no_match' event`).from("core").now(),void(yield this.event("no_match",e)));yield this.event("service_action",e)}))}tryHandlePayload(e){return __awaiter(this,void 0,void 0,function*(){const{payload:t}=e.obj;if(t){try{if("start"===JSON.parse(t).command)return yield this.event("start",e),e.noAutoSend(),!0}catch(e){}if(this.exactPayloadHandlers[t])return yield this.exactPayloadHandlers[t](e),!0;const n=this.dynPayloadHandlers.map(e=>{let n=null;try{n=JSON.parse(t)}catch(e){}return e.tester(t,n)?e:null}).filter(e=>e);if(n)return yield n[0].handler(e),!0}return!1})}tryHandleCommand(e){return __awaiter(this,void 0,void 0,function*(){const t=this.commandHandlers.map(t=>{const n=escape_string_regexp_1.default(t.command),r=new RegExp(`^( *\\[club${this.groupId}\\|.*\\])?( *${this.escapedCmdPrefix}${n})+`,"i");return r.test(e.msg)?{handler:t,msg:e.msg.replace(r,"")}:null}).filter(e=>e);if(t.length>0){const{handler:n,msg:r}=t[0];return e.msg=r,yield n.handler(e),!0}return!1})}tryHandleRegex(e){return __awaiter(this,void 0,void 0,function*(){const t=this.regexHandlers.filter(t=>t.regex.test(e.msg));return t.length>0&&(yield t[0].handler(e),!0)})}generateHelpMessage(){let e="\n";this.commandHandlers.forEach(t=>{let n="";n+=this.cmdPrefix,n+=t.command,t.description&&(n+=" - ",n+=t.description),e+=`${n}\n`}),this.helpMessage=e}getHandlerCounts(){return{evt:Object.values(this.eventHandlers).filter(e=>e).length-1,cmd:this.commandHandlers.length,reg:this.regexHandlers.length,pld:Object.keys(this.exactPayloadHandlers).length+this.dynPayloadHandlers.length}}}exports.default=Core;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUuanMiLCJjb3JlLnRzIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXMiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19pbXBvcnREZWZhdWx0IiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJlc2NhcGVfc3RyaW5nX3JlZ2V4cF8xIiwicmVxdWlyZSIsImNvbnRleHRfMSIsImxvZ18xIiwiQ29yZSIsIltvYmplY3QgT2JqZWN0XSIsImFwaSIsInN0YXRzIiwiY21kUHJlZml4IiwiZ3JvdXBJZCIsImxvY2tlZCIsImV2ZW50SGFuZGxlcnMiLCJtZXNzYWdlX25ldyIsIm1lc3NhZ2VfcmVwbHkiLCJtZXNzYWdlX2VkaXQiLCJtZXNzYWdlX3R5cGluZ19zdGF0ZSIsIm1lc3NhZ2VfYWxsb3ciLCJtZXNzYWdlX2RlbnkiLCJzdGFydCIsInNlcnZpY2VfYWN0aW9uIiwibm9fbWF0Y2giLCJoYW5kbGVyX2Vycm9yIiwiZXhhY3RQYXlsb2FkSGFuZGxlcnMiLCJkeW5QYXlsb2FkSGFuZGxlcnMiLCJjb21tYW5kSGFuZGxlcnMiLCJyZWdleEhhbmRsZXJzIiwiZXZlbnRXYXJuaW5ncyIsImhlbHBNZXNzYWdlIiwiZXNjYXBlZENtZFByZWZpeCIsInRvU3RyaW5nIiwicmVnaXN0ZXJNZXNzYWdlTmV3SGFuZGxlciIsImxvZyIsInciLCJmcm9tIiwibm93IiwiZ2VuZXJhdGVIZWxwTWVzc2FnZSIsImV2ZW50IiwiaGFuZGxlciIsImlzTG9ja2VkIiwia2V5cyIsImluY2x1ZGVzIiwicGF5bG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwdXNoIiwidGVzdGVyIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwicmVnZXgiLCJib2R5Iiwib2JqIiwib2JqZWN0IiwidHlwZSIsIiQiLCJ0ZXh0IiwibmFtZSIsIm5lZWRzQXV0b1NlbmQiLCJzZW5kIiwiZXJyb3IiLCJvbiIsImFjdGlvbiIsInRyeUhhbmRsZVBheWxvYWQiLCJ0cnlIYW5kbGVDb21tYW5kIiwidHJ5SGFuZGxlUmVnZXgiLCJtc2ciLCJyZXBsYWNlIiwicGFyc2UiLCJub0F1dG9TZW5kIiwiaGFuZGxlcnMiLCJtYXAiLCJwb3RlbnRpYWxIYW5kbGVyIiwicGFyc2VkIiwiZmlsdGVyIiwiaGFuZGxlck9ianMiLCJjbWQiLCJjbWRSZWdleCIsIlJlZ0V4cCIsInRlc3QiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaGVscEVudHJ5IiwiZXZ0IiwidmFsdWVzIiwicmVnIiwicGxkIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLFVBQWFDLE1BQVFBLEtBQUtELFdBQWMsU0FBVUUsRUFBU0MsRUFBWUMsRUFBR0MsR0FDMUUsT0FBTyxJQUFLRCxJQUFNQSxFQUFJRSxVQUFVLFNBQVVDLEVBQVNDLEdBQy9DLFNBQVNDLEVBQVVDLEdBQVMsSUFBTUMsRUFBS04sRUFBVU8sS0FBS0YsSUFBVyxNQUFPRyxHQUFLTCxFQUFPSyxJQUNwRixTQUFTQyxFQUFTSixHQUFTLElBQU1DLEVBQUtOLEVBQWlCLE1BQUVLLElBQVcsTUFBT0csR0FBS0wsRUFBT0ssSUFDdkYsU0FBU0YsRUFBS0ksR0FBVUEsRUFBT0MsS0FBT1QsRUFBUVEsRUFBT0wsT0FBUyxJQUFJTixFQUFFLFNBQVVHLEdBQVdBLEVBQVFRLEVBQU9MLFNBQVdPLEtBQUtSLEVBQVdLLEdBQ25JSCxHQUFNTixFQUFZQSxFQUFVYSxNQUFNaEIsRUFBU0MsR0FBYyxLQUFLUyxXQUdsRU8sZ0JBQW1CbEIsTUFBUUEsS0FBS2tCLGlCQUFvQixTQUFVQyxHQUM5RCxPQUFRQSxHQUFPQSxFQUFJQyxXQUFjRCxFQUFNLENBQUVFLFFBQVdGLElBRXhERyxPQUFPQyxlQUFlQyxR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LEVBQVFTLFFBRWpCVCxFQUFRVSxjQUNSaUMsR0FBYSxNQUNiQSxHQUFhM0MsRUFBUVUsYUFHekJwQixNQUFrQnFELFFBR3RCekcsS0FBS29ELFlBQWNBLEVBTWhCdEIsbUJBTUgsTUFBTyxDQUVINEUsSUFBS3BGLE9BQU9xRixPQUFPM0csS0FBS29DLGVBQWU2RCxPQUFPckYsR0FBS0EsR0FBRzJGLE9BQVMsRUFDL0RKLElBQUtuRyxLQUFLaUQsZ0JBQWdCc0QsT0FDMUJLLElBQUs1RyxLQUFLa0QsY0FBY3FELE9BQ3hCTSxJQUFLdkYsT0FBTzBDLEtBQUtoRSxLQUFLK0Msc0JBQXNCd0QsT0FBU3ZHLEtBQUtnRCxtQkFBbUJ1RCxTQTdsQnpGL0UsUUFBQUgsUUFBQVEiLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IGVzY2FwZVJlZ2V4IGZyb20gJ2VzY2FwZS1zdHJpbmctcmVnZXhwJztcbmltcG9ydCBDb250ZXh0IGZyb20gJy4vYXBpL2NvbnRleHQnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9leHRyYS9sb2cnO1xuXG5pbXBvcnQgQVBJIGZyb20gJy4vYXBpL2FwaSc7XG5pbXBvcnQgU3RhdHMgZnJvbSAnLi9leHRyYS9zdGF0cyc7XG5cbmV4cG9ydCB0eXBlIEhhbmRsZXIgPSAoJDogQ29udGV4dCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbmV4cG9ydCB0eXBlIFBheWxvYWQgPSBhbnk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXG4vKipcbiAqIEBwYXJhbSBwYXlsb2FkSnNvbiBgcGF5bG9hZEpzb25gIHRoZSBzdHJpbmdpZmllZCBKU09OIG9mIHRoZSBwYXlsb2FkIChhcyBnaXZlbiBieSBDYWxsYmFjayBBUEkpXG4gKiBAcGFyYW0gcGF5bG9hZCBgcGF5bG9hZGAgdGhlIEpTIG9iamVjdCB0aGF0IHdhcyBtYWRlIGJ5IHBhcnNpbmcgdGhlIGBwYXlsb2FkSnNvbmAsIGlmIHRoZVxuICogcGFyc2luZyB3YXMgc3VjY2Vzc2Z1bFxuICovXG5leHBvcnQgdHlwZSBUZXN0ZXIgPSAocGF5bG9hZEpzb246IHN0cmluZywgcGF5bG9hZD86IFBheWxvYWQpID0+IGJvb2xlYW47XG5cbmludGVyZmFjZSBEeW5QYXlsb2FkSGFuZGxlciB7XG4gICAgdGVzdGVyOiBUZXN0ZXI7XG4gICAgaGFuZGxlcjogSGFuZGxlcjtcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyIHtcbiAgICBjb21tYW5kOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBoYW5kbGVyOiBIYW5kbGVyO1xufVxuXG4vKipcbiAqIERpc3BhdGNoZXMgbWVzc2FnZSBoYW5kbGluZyB0byBhcHByb3ByaWF0ZSBoYW5kbGVycyxcbiAqIGFuZCBpcyB1c2VkIGZvciBzZXR0aW5nIHRoZXNlIGhhbmRsZXJzLlxuICpcbiAqIEhhbmRsZXJzIGZvciB0aGUgYG1lc3NhZ2VfbmV3YCBldmVudCB3aWxsIGJlIHNlYXJjaGVkIGluIHRoaXMgb3JkZXI6XG4gKiAxLiBJZiBzZXJ2aWNlIGFjdGlvbiBtZXNzYWdlID0+IFtbb25dXSBoYW5kbGVyIGZvciB0aGUgYHNlcnZpY2VfYWN0aW9uYCBldmVudFxuICogMS4gSWYgdXNlciBwcmVzc2VkIHRoZSBgU3RhcnRgIGJ1dHRvbiA9PiBbW29uXV0gaGFuZGxlciBmb3IgdGhlIGBzdGFydGAgZXZlbnRcbiAqIDEuIFtbcGF5bG9hZF1dXG4gKiAxLiBbW2NtZF1dXG4gKiAxLiBbW3JlZ2V4XV1cbiAqXG4gKiBGb3Igb3RoZXIgZXZlbnRzLCBhIG1hdGNoaW5nIFtbb25dXSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb3JlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBBUEk7XG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXRzOiBTdGF0cztcblxuICAgIC8qKlxuICAgICAqIENvbW1hbmQgcHJlZml4LlxuICAgICAqL1xuICAgIHByaXZhdGUgY21kUHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHcm91cCBJRC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdyb3VwSWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbW1hbmQgcHJlZml4LCBlc2NhcGVkIGZvciB1c2FnZSBpbiByZWd1bGFyIGV4cHJlc3Npb25zXG4gICAgICovXG4gICAgcHJpdmF0ZSBlc2NhcGVkQ21kUHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGlzIGBDb3JlYCBsb2NrZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXJzIGZvciBldmVudHMuXG4gICAgICovXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuICAgIHByaXZhdGUgZXZlbnRIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiBIYW5kbGVyIH0gPSB7XG4gICAgICAgIC8vIENhbGxiYWNrIEFQSVxuICAgICAgICBtZXNzYWdlX25ldzogbnVsbCxcbiAgICAgICAgbWVzc2FnZV9yZXBseTogbnVsbCxcbiAgICAgICAgbWVzc2FnZV9lZGl0OiBudWxsLFxuICAgICAgICBtZXNzYWdlX3R5cGluZ19zdGF0ZTogbnVsbCxcbiAgICAgICAgbWVzc2FnZV9hbGxvdzogbnVsbCxcbiAgICAgICAgbWVzc2FnZV9kZW55OiBudWxsLFxuXG4gICAgICAgIC8vIERldGVjdGVkIHdoZW4gcGFyc2luZyAnbWVzc2FnZV9uZXcnIGV2ZW50XG4gICAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgICBzZXJ2aWNlX2FjdGlvbjogbnVsbCxcblxuICAgICAgICAvLyBJbnRlcm5hbCBldmVudHNcbiAgICAgICAgbm9fbWF0Y2g6IG51bGwsXG4gICAgICAgIGhhbmRsZXJfZXJyb3I6IG51bGwsXG4gICAgfTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9jYW1lbGNhc2UgKi9cblxuICAgIC8qKlxuICAgICAqIEV4YWN0IHBheWxvYWQgaGFuZGxlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBleGFjdFBheWxvYWRIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiBIYW5kbGVyIH0gPSB7fTtcblxuICAgIC8qKlxuICAgICAqIER5bmFtaWMgcGF5bG9hZCBoYW5kbGVycy5cbiAgICAgKiAodGhvc2Ugd2hpY2ggdXNlIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgd2hldGhlciBhIGhhbmRsZXIgaXMgc3VpdGFibGUpXG4gICAgICovXG4gICAgcHJpdmF0ZSBkeW5QYXlsb2FkSGFuZGxlcnM6IER5blBheWxvYWRIYW5kbGVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIENvbW1hbmQgaGFuZGxlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb21tYW5kSGFuZGxlcnM6IENvbW1hbmRIYW5kbGVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBoYW5kbGVycy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZ2V4SGFuZGxlcnM6IHsgcmVnZXg6IFJlZ0V4cDsgaGFuZGxlcjogSGFuZGxlciB9W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEFyZSBldmVudCB3YXJuaW5ncyBlbmFibGVkP1xuICAgICAqL1xuICAgIHByaXZhdGUgZXZlbnRXYXJuaW5nczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaGVscCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHByaXZhdGUgaGVscE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBbW0NvcmVdXS5cbiAgICAgKiBAcGFyYW0gYXBpIFtbQVBJXV0gb2JqZWN0XG4gICAgICogQHBhcmFtIHN0YXRzIFtbU3RhdHNdXSBvYmplY3RcbiAgICAgKiBAcGFyYW0gY21kUHJlZml4IGNvbW1hbmQgcHJlZml4XG4gICAgICogQHBhcmFtIGdyb3VwSWQgZ3JvdXAgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFwaTogQVBJLFxuICAgICAgICBzdGF0czogU3RhdHMsXG4gICAgICAgIGNtZFByZWZpeDogc3RyaW5nLFxuICAgICAgICBncm91cElkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXBpID0gYXBpO1xuICAgICAgICB0aGlzLnN0YXRzID0gc3RhdHM7XG4gICAgICAgIHRoaXMuY21kUHJlZml4ID0gY21kUHJlZml4O1xuICAgICAgICB0aGlzLmVzY2FwZWRDbWRQcmVmaXggPSBlc2NhcGVSZWdleCh0aGlzLmNtZFByZWZpeCk7XG4gICAgICAgIHRoaXMuZ3JvdXBJZCA9IGVzY2FwZVJlZ2V4KGdyb3VwSWQudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3Rlck1lc3NhZ2VOZXdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBldmVudCBoYW5kbGVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm9FdmVudFdhcm5pbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50V2FybmluZ3MgPSBmYWxzZTtcbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC53KCdXYXJuaW5ncyBhYm91dCBtaXNzaW5nIGV2ZW50IGhhbmRsZXJzIHdlcmUgZGlzYWJsZWQnKVxuICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgLm5vdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvY2tzIHRoaXMgYENvcmVgLCBzbyBuZXcgaGFuZGxlcnMgY2FuJ3QgYmUgYWRkZWQsXG4gICAgICogYW5kIGdlbmVyYXRlcyB0aGUgaGVscCBtZXNzYWdlIGZvciBsYXRlciB1c2FnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmdlbmVyYXRlSGVscE1lc3NhZ2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYW4gZXZlbnQgaGFuZGxlci5cbiAgICAgKlxuICAgICAqIERvZXMgbm90IHdvcmsgZm9yIGBtZXNzYWdlX25ld2AsIGFzIGl0cyBoYW5kbGVyIGlzIGRlZmluZWQgYnkgYHZrLWNoYXQtYm90YCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiAjIyMgRXZlbnRzXG4gICAgICpcbiAgICAgKiAjIyMjIENhbGxiYWNrIEFQSSBFdmVudHNcbiAgICAgKiBFdmVudCB8IERlc2NyaXB0aW9uXG4gICAgICogLS0tfC0tLVxuICAgICAqIGBtZXNzYWdlX2FsbG93YCB8IFVzZXIgKiphbGxvd2VkKiogc2VuZGluZyBtZXNzYWdlcyB0byBoaW0vaGVyXG4gICAgICogYG1lc3NhZ2VfZGVueWAgfCBVc2VyICoqZGlzYWxsb3dlZCoqIHNlbmRpbmcgbWVzc2FnZXMgdG8gaGltL2hlclxuICAgICAqIGBtZXNzYWdlX3JlcGx5YCB8IE5ldyAqKm1lc3NhZ2Ugc2VudCoqIGJ5IGNvbW11bml0eSBhZG1pbmlzdHJhdG9yIChvciBieSB0aGUgYm90IGl0c2VsZilcbiAgICAgKiBgbWVzc2FnZV9lZGl0YCB8ICoqTWVzc2FnZSBlZGl0ZWQqKiBieSB1c2VyXG4gICAgICogYG1lc3NhZ2VfdHlwaW5nX3N0YXRlYCB8ICoqVXNlciBpcyB0eXBpbmcqKiBhIG1lc3NhZ2VcbiAgICAgKlxuICAgICAqICMjIyMgT3RoZXIgRXZlbnRzXG4gICAgICogRXZlbnQgdHlwZSB8IFdoZW4gaGFuZGxlciBpcyBjYWxsZWRcbiAgICAgKiAtLS18LS0tXG4gICAgICogYHN0YXJ0YCB8IElmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBge1wiY29tbWFuZFwiOiBcInN0YXJ0XCJ9YCAoaS5lLiBgU3RhcnRgIGJ1dHRvbiBwcmVzc2VkKVxuICAgICAqIGBzZXJ2aWNlX2FjdGlvbmAgfCBTZXJ2aWNlIGFjdGlvbiBtZXNzYWdlIHJlY2VpdmVkXG4gICAgICogYG5vX21hdGNoYCB8IFdoZW4gbm8gbWF0Y2hpbmcgYGNtZCgpYCBvciBgcmVnZXgoKWAgaGFuZGxlciBpcyBmb3VuZFxuICAgICAqIGBoYW5kbGVyX2Vycm9yYCB8IElmIGFuIGVycm9yIGlzIHRocm93biBpbiBhIGhhbmRsZXJcbiAgICAgKlxuICAgICAqICMjIyMgVGhlIGBzZXJ2aWNlX2FjdGlvbmAgZXZlbnRcbiAgICAgKiA+IFRoZSBgJC5vYmouYWN0aW9uYCBvYmplY3QgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZpY2UgYWN0aW9uLlxuICAgICAqID4gSXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWVsZHM6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB0eXBlIChzdHJpbmcpIOKAlCBhY3Rpb24gdHlwZSwgb25lIG9mOlxuICAgICAqICAgIGBjaGF0X3Bob3RvX3VwZGF0ZWAg4oCUIGNoYXQgcGhvdG8gdXBkYXRlZFxuICAgICAqICAgIGBjaGF0X3Bob3RvX3JlbW92ZWAg4oCUIGNoYXQgcGhvdG8gcmVtb3ZlZFxuICAgICAqICAgIGBjaGF0X2NyZWF0ZWAg4oCUIGNoYXQgY3JlYXRlZFxuICAgICAqICAgIGBjaGF0X3RpdGxlX3VwZGF0ZWAg4oCUIGNoYXQgdGl0bGUgdXBkYXRlZFxuICAgICAqICAgIGBjaGF0X2ludml0ZV91c2VyYCDigJQgdXNlciB3YXMgaW52aXRlZCB0byBjaGF0XG4gICAgICogICAgYGNoYXRfa2lja191c2VyYCDigJQgdXNlciB3YXMga2lja2VkIGZyb20gdGhlIGNoYXRcbiAgICAgKiAgICBgY2hhdF9waW5fbWVzc2FnZWAg4oCUIGEgbWVzc2FnZSB3YXMgcGlubmVkXG4gICAgICogICAgYGNoYXRfdW5waW5fbWVzc2FnZWAg4oCUIGEgbWVzc2FnZSB3YXMgdW5waW5uZWRcbiAgICAgKiAgICBgY2hhdF9pbnZpdGVfdXNlcl9ieV9saW5rYCDigJQgdXNlciBqb2luZWQgdGhlIGNoYXQgYnkgbGlua1xuICAgICAqXG4gICAgICogbWVtYmVyX2lkIChpbnRlZ2VyKTpcbiAgICAgKiAgIHVzZXIgaWQgKGlmID4gMCksIHdoaWNoIHdhcyBpbnZpdGVkIG9yIGtpY2tlZCAoaWYgPCAwLCBzZWUgYGVtYWlsYCBmaWVsZClcbiAgICAgKiAgICAgKGBjaGF0X2ludml0ZV91c2VyYCwgYGNoYXRfaW52aXRlX3VzZXJfYnlfbGlua2AsICBgY2hhdF9raWNrX3VzZXJgKVxuICAgICAqICAgdXNlciBpZCwgd2hpY2ggcGlubmVkIG9yIHVucGlubmVkIGEgbWVzc2FnZVxuICAgICAqICAgICAoYGNoYXRfcGluX21lc3NhZ2VgLCBgY2hhdF91bnBpbl9tZXNzYWdlYClcbiAgICAgKlxuICAgICAqIHRleHQgKHN0cmluZyk6XG4gICAgICogICBjaGF0IG5hbWVcbiAgICAgKiAgICAgKGBjaGF0X2NyZWF0ZWAsIGBjaGF0X3RpdGxlX3VwZGF0ZWApXG4gICAgICpcbiAgICAgKiBlbWFpbCAoc3RyaW5nKTpcbiAgICAgKiAgIGVtYWlsLCB3aGljaCB3YXMgaW52aXRlZCBvciBraWNrZWRcbiAgICAgKiAgICAgKGBjaGF0X2ludml0ZV91c2VyYCwgYGNoYXRfa2lja191c2VyYCwgbWVtYmVyX2lkIDwgMClcbiAgICAgKlxuICAgICAqIHBob3RvIChvYmplY3QpIOKAlCBjaGF0IHBpY3R1cmUsIGNvbnRhaW5zOlxuICAgICAqICAgICBwaG90b181MCAoc3RyaW5nKTogVVJMIG9mIGltYWdlIDUwIHggNTAgcHhcbiAgICAgKiAgICAgcGhvdG9fMTAwIChzdHJpbmcpOiBVUkwgb2YgaW1hZ2UgMTAwIHggMTAwIHB4XG4gICAgICogICAgIHBob3RvXzIwMCAoc3RyaW5nKTogVVJMIG9mIGltYWdlIDIwMCB4IDIwMCBweFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIC0gZXZlbnQgbmFtZVxuICAgICAqIEBwYXJhbSAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvcmUub24oJ25vX21hdGNoJywgJCA9PiB7XG4gICAgICogICAkLnRleHQoJ0kgZG9uXFwndCBrbm93IGhvdyB0byByZXNwb25kIHRvIHlvdXIgbWVzc2FnZS4nKTtcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb24oZXZlbnQ6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuZXZlbnRIYW5kbGVycykuaW5jbHVkZXMoZXZlbnQpKSB7XG4gICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgIC5lKGBDYW5ub3QgcmVnaXN0ZXIgYSBoYW5kbGVyOiB1bmtub3duIGV2ZW50IHR5cGUgJyR7ZXZlbnR9J2ApXG4gICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50XSkge1xuICAgICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50XSA9IGhhbmRsZXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdtZXNzYWdlX25ldycpIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLmUoXG4gICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcmVnaXN0ZXIgYSBoYW5kbGVyOiBoYW5kbGVyIGZvciB0aGUgYG1lc3NhZ2VfbmV3YCBldmVudCBpcyBkZWZpbmVkIGludGVybmFsbHknLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY29yZScpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAuZShgQ2Fubm90IHJlZ2lzdGVyIGEgaGFuZGxlcjogZHVwbGljYXRlIGhhbmRsZXIgZm9yIGV2ZW50ICcke2V2ZW50fSdgKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBwYXlsb2FkIGhhbmRsZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGUqKjogZXhhY3QgaGFuZGxlcnMgYXJlIHNlYXJjaGVkIGZpcnN0LCBhbmQgb25seSBpZiB0aGV5IGRvbid0IG1hdGNoLFxuICAgICAqIHRoZSBzZWFyY2ggZm9yIGEgZHluYW1pYyBoYW5kbGVyIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gZXhhY3QgcGF5bG9hZCB0byBoYW5kbGUsXG4gICAgICogb3IgYSBmdW5jdGlvbiAodHlwZSBbW1Rlc3Rlcl1dKSB3aGljaFxuICAgICAqIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaGFuZGxlIHRoZSBwYXlsb2FkIG9yIG5vdC5cbiAgICAgKiBAcGFyYW0gaGFuZGxlciAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIC8vIC0tLS0tLS0+IEtFWUJPQVJEIChmb3Igc2VuZGluZyB0aGUgcGF5bG9hZClcbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBhIGtleWJvYXJkXG4gICAgICogY29uc3QgeyBjb2xvcnMsIEtleWJvYXJkLCBCdXR0b24gfSA9IHZrLmtiZDtcbiAgICAgKlxuICAgICAqIHZhciBrYmQgPSBuZXcgS2V5Ym9hcmQoW1xuICAgICAqICAgICBbXG4gICAgICogICAgICAgICAvLyBDbGlja2luZyBvbiB0aGlzIGJ1dHRvbiB3aWxsIHNlbmQgdGhlIHBheWxvYWQge2E6ICdiJ31cbiAgICAgKiAgICAgICAgIGJ1dHRvbi50ZXh0KCdUZXN0IDEnLCBjb2xvcnMuZGVmYXVsdCwge2E6ICdiJ30pLFxuICAgICAqICAgICAgICAgYnV0dG9uLnRleHQoJ1Rlc3QgMicsIGNvbG9ycy5kZWZhdWx0LCB7YTogJ2InLCBjOiAnZCd9KVxuICAgICAqICAgICBdXG4gICAgICogXSwgZmFsc2UpO1xuICAgICAqXG4gICAgICogLy8gV2hlbiBhc2tlZCwgc2VuZCB0aGUga2V5Ym9hcmRcbiAgICAgKiBjb3JlLnJlZ2V4KC9rZXlib2FyZC9pLCAkID0+IHtcbiAgICAgKiAgICAkLmtleWJvYXJkKGtiZCk7XG4gICAgICogICAgJC50ZXh0KCdIZXJlIGl0IGlzIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gLS0tLS0tLT4gRVhBQ1QgUEFZTE9BRFxuICAgICAqIGNvcmUucGF5bG9hZCh7YTogJ2InfSwgJCA9PiB7XG4gICAgICogICAgJC50ZXh0KCdSZWNlaXZlZCBzZWNyZXQgcGF5bG9hZCEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIC0tLS0tLS0+IERZTkFNSUMgUEFZTE9BRFxuICAgICAqIC8vIEluIHRoaXMgY2FzZSwgdGhlIGhhbmRsZXIgd2lsbCBydW4gb25seSBpZiB0aGVcbiAgICAgKiAvLyBwYXlsb2FkJ3MgcHJvcGVydHkgYGNgIGNvbnRhaW5zIHRoZSB2YWx1ZSBgZGAuXG4gICAgICogY29yZS5wYXlsb2FkKChwYXlsb2FkLCBwYXJzZWQpID0+IHtcbiAgICAgKiAgICBpZiAocGFyc2VkKSB7IC8vIElmIHRoZSBwYXlsb2FkIGlzIGEgdmFsaWQgSlNPTlxuICAgICAqICAgICAgcmV0dXJuIHBhcnNlZC5jID09PSAnZCc7XG4gICAgICogICAgfSBlbHNlIHtcbiAgICAgKiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgKiAgICB9XG4gICAgICogfSwgJCA9PiB7XG4gICAgICogICAgJC50ZXh0KGBJbiBtZXNzYWdlICckeyQubXNnfScsIHBheWxvYWQuYyBpcyAnZCchYCk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHBheWxvYWQocGF5bG9hZDogUGF5bG9hZCwgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEV4YWN0IHBheWxvYWQgbWF0Y2g6XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leGFjdFBheWxvYWRIYW5kbGVyc1tKU09OLnN0cmluZ2lmeShwYXlsb2FkKV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4YWN0UGF5bG9hZEhhbmRsZXJzW0pTT04uc3RyaW5naWZ5KHBheWxvYWQpXSA9IGhhbmRsZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5lKFxuICAgICAgICAgICAgICAgICAgICAgICAgYENhbm5vdCByZWdpc3RlciBhIGhhbmRsZXI6IGR1cGxpY2F0ZSBoYW5kbGVyIGZvciBwYXlsb2FkICcke3BheWxvYWR9J2AsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBEeW5hbWljIHBheWxvYWQgbWF0Y2g6XG5cbiAgICAgICAgICAgIHRoaXMuZHluUGF5bG9hZEhhbmRsZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRlc3RlcjogcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBjb21tYW5kIGhhbmRsZXIuXG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGlzIGNhbGxlZCBpZiB0aGUgbWVzc2FnZSBiZWdpbnMgd2l0aCBgY21kX3ByZWZpeGBcbiAgICAgKiAoZGVmaW5lZCBpbiB0aGUgcGFyYW1ldGVycykgKiorKiogYGNvbW1hbmRgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tbWFuZCAtIGNvbW1hbmRcbiAgICAgKiBAcGFyYW0gaGFuZGxlciAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIC0gdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBjb21tYW5kIGRvZXMsXG4gICAgICogdG8gYmUgdXNlZCBpbiBoZWxwIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBjb3JlLmNtZCgnaGVscCcsICQgPT4ge1xuICAgICAqICAgLy8gY29yZS5oZWxwKCkgcmV0dXJucyB0aGUgaGVscCBtZXNzYWdlXG4gICAgICogICAkLnRleHQoJ1Rlc3QgQm90JyArIGNvcmUuaGVscCgpKTtcbiAgICAgKiB9LCAnc2hvd3MgdGhlIGhlbHAgbWVzc2FnZScpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbWQoXG4gICAgICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICAgICAgaGFuZGxlcjogSGFuZGxlcixcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnLFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbW1hbmRIYW5kbGVycy5wdXNoKHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGhhbmRsZXI6IGhhbmRsZXIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIHJlZ2V4IGhhbmRsZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGFuZGxlciAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvcmUucmVnZXgoL2goaXxlbGxvfGV5KS9pLCAkID0+IHtcbiAgICAgKiAgICAkLnRleHQoJ0hlbGxvLCBJIGFtIGEgdGVzdCBib3QuIFlvdSBzYWlkOiAnICsgJC5tc2cpO1xuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdleChyZWdleDogUmVnRXhwLCBoYW5kbGVyOiBIYW5kbGVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTG9ja2VkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVnZXhIYW5kbGVycy5wdXNoKHtcbiAgICAgICAgICAgIHJlZ2V4LFxuICAgICAgICAgICAgaGFuZGxlcjogaGFuZGxlcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSByZXF1ZXN0LCBjcmVhdGVzIGEgW1tDb250ZXh0XV0sIGFuZCBwcm9jZWVkc1xuICAgICAqIHRvIGNhbGwgW1tDb3JlLmV2ZW50XV0gdG8gaGFuZGxlIHRoZSBldmVudFxuICAgICAqXG4gICAgICogQHBhcmFtIGJvZHkgLSBib2R5IG9mIHRoZSByZXF1ZXN0LCBpbiBwYXJzZWQgSlNPTlxuICAgICAqXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHBhcnNlUmVxdWVzdChib2R5OiBhbnkgLyogVE9ETzogYm9keSB0eXBlPyAqLyk6IFByb21pc2U8dm9pZD4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgXG4gICAgICAgIGNvbnN0IG9iaiA9IGJvZHkub2JqZWN0O1xuICAgICAgICBjb25zdCBldmVudCA9IGJvZHkudHlwZTtcblxuICAgICAgICBjb25zdCAkID0gbmV3IENvbnRleHQodGhpcy5hcGksIGV2ZW50LCBvYmosIG9iai50ZXh0KTtcbiAgICAgICAgYXdhaXQgdGhpcy5ldmVudChldmVudCwgJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVscCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoZWxwKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlbHBNZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYENvcmVgIGlzIGxvY2tlZCwgYW5kIHByaW50cyBhIG1lc3NhZ2VcbiAgICAgKiB0byBub3RpZnkgdGhlIHVzZXIgaWYgaXQgaXMgbG9ja2VkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNMb2NrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudygnUmVnaXN0ZXJpbmcgYSBoYW5kbGVyIHdoaWxlIHRoZSBib3QgaXMgcnVubmluZyBpcyBub3QgYWxsb3dlZCcpXG4gICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2tlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFuIGV2ZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgZXZlbnQobmFtZTogc3RyaW5nLCAkOiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdHMuZXZlbnQobmFtZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXZlbnRIYW5kbGVyc1tuYW1lXSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50SGFuZGxlcnNbbmFtZV0oJCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoJC5uZWVkc0F1dG9TZW5kKCkgJiYgbmFtZSAhPT0gJ21lc3NhZ2VfbmV3Jykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCAkLnNlbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC53KGBFcnJvciBpbiBoYW5kbGVyOiAke2Vycm9yfWApXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgIT09ICdoYW5kbGVyX2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdoYW5kbGVyX2Vycm9yJywgJCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXZlbnRXYXJuaW5ncykge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudyhgTm8gaGFuZGxlciBmb3IgZXZlbnQgJyR7bmFtZX0nYClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY29yZScpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgYG1lc3NhZ2VfbmV3YCBldmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZ2lzdGVyTWVzc2FnZU5ld0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub24oJ21lc3NhZ2VfbmV3JywgYXN5bmMgKCQ6IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIC8vIENoZWNrIGZvciAnc2VydmljZV9hY3Rpb24nIGV2ZW50XG4gICAgICAgICAgICBpZiAoJC5vYmouYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5ldmVudCgnc2VydmljZV9hY3Rpb24nLCAkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSByZWd1bGFyIG1lc3NhZ2VcbiAgICAgICAgICAgIGlmICghKGF3YWl0IHRoaXMudHJ5SGFuZGxlUGF5bG9hZCgkKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShhd2FpdCB0aGlzLnRyeUhhbmRsZUNvbW1hbmQoJCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGF3YWl0IHRoaXMudHJ5SGFuZGxlUmVnZXgoJCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC53KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRG9uJ3Qga25vdyBob3cgdG8gcmVzcG9uZCB0byAke0pTT04uc3RyaW5naWZ5KCQubXNnKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1xcbi9nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcXFxuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0sIGNhbGxpbmcgJ25vX21hdGNoJyBldmVudGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdub19tYXRjaCcsICQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoJC5uZWVkc0F1dG9TZW5kKCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCAkLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gaGFuZGxlIHRoZSBtZXNzYWdlIGluIHRoZSBnaXZlbiBgQ29udGV4dGBcbiAgICAgKiB3aXRoIGEgcGF5bG9hZCBoYW5kbGVyLlxuICAgICAqXG4gICAgICogQHJldHVybiB3YXMgdGhlIG1lc3NhZ2UgaGFuZGxlZD9cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIHRyeUhhbmRsZVBheWxvYWQoJDogQ29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB7IHBheWxvYWQgfSA9ICQub2JqO1xuICAgICAgICBpZiAocGF5bG9hZCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICdzdGFydCcgZXZlbnRcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKEpTT04ucGFyc2UocGF5bG9hZCkuY29tbWFuZCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdzdGFydCcsICQpO1xuICAgICAgICAgICAgICAgICAgICAkLm5vQXV0b1NlbmQoKTsgLy8gTWVzc2FnZSBzZW5kaW5nIHdhcyBhbHJlYWR5IGhhbmRsZWQgYnkgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8qIEpTT04gUGFyc2UgRXJyb3IgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGV4YWN0IHBheWxvYWQgaGFuZGxlclxuICAgICAgICAgICAgaWYgKHRoaXMuZXhhY3RQYXlsb2FkSGFuZGxlcnNbcGF5bG9hZF0pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV4YWN0UGF5bG9hZEhhbmRsZXJzW3BheWxvYWRdKCQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgZHluYW1pYyBwYXlsb2FkIGhhbmRsZXJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5keW5QYXlsb2FkSGFuZGxlcnNcbiAgICAgICAgICAgICAgICAubWFwKChwb3RlbnRpYWxIYW5kbGVyKTogRHluUGF5bG9hZEhhbmRsZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyc2VkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpTT04gUGFyc2UgRXJyb3IgKi9cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxIYW5kbGVyLnRlc3RlcihwYXlsb2FkLCBwYXJzZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG90ZW50aWFsSGFuZGxlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihlID0+IGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVyc1swXS5oYW5kbGVyKCQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIGhhbmRsZSB0aGUgbWVzc2FnZSBpbiB0aGUgZ2l2ZW4gYENvbnRleHRgXG4gICAgICogd2l0aCBhIGNvbW1hbmQgaGFuZGxlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gd2FzIHRoZSBtZXNzYWdlIGhhbmRsZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyB0cnlIYW5kbGVDb21tYW5kKCQ6IENvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlck9ianMgPSB0aGlzLmNvbW1hbmRIYW5kbGVyc1xuICAgICAgICAgICAgLm1hcCgocG90ZW50aWFsSGFuZGxlcik6IHsgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXI7IG1zZzogc3RyaW5nIH0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNtZCA9IGVzY2FwZVJlZ2V4KHBvdGVudGlhbEhhbmRsZXIuY29tbWFuZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY21kUmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICBgXiggKlxcXFxbY2x1YiR7dGhpcy5ncm91cElkfVxcXFx8LipcXFxcXSk/KCAqJHt0aGlzLmVzY2FwZWRDbWRQcmVmaXh9JHtjbWR9KStgLCAnaScsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChjbWRSZWdleC50ZXN0KCQubXNnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogcG90ZW50aWFsSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZzogJC5tc2cucmVwbGFjZShjbWRSZWdleCwgJycpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiBlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGVcblxuICAgICAgICBpZiAoaGFuZGxlck9ianMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBoYW5kbGVyLCBtc2cgfSA9IGhhbmRsZXJPYmpzWzBdO1xuXG4gICAgICAgICAgICAkLm1zZyA9IG1zZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgYXdhaXQgaGFuZGxlci5oYW5kbGVyKCQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gaGFuZGxlIHRoZSBtZXNzYWdlIGluIHRoZSBnaXZlbiBgQ29udGV4dGBcbiAgICAgKiB3aXRoIGEgcmVnZXggaGFuZGxlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gd2FzIHRoZSBtZXNzYWdlIGhhbmRsZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyB0cnlIYW5kbGVSZWdleCgkOiBDb250ZXh0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5yZWdleEhhbmRsZXJzLmZpbHRlcigocG90ZW50aWFsSGFuZGxlcik6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgIHBvdGVudGlhbEhhbmRsZXIucmVnZXgudGVzdCgkLm1zZyksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGhhbmRsZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZXJzWzBdLmhhbmRsZXIoJCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgdGhlIGhlbHAgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlSGVscE1lc3NhZ2UoKTogdm9pZCB7XG4gICAgICAgIGxldCBoZWxwTWVzc2FnZSA9ICdcXG4nO1xuXG4gICAgICAgIHRoaXMuY29tbWFuZEhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGxldCBoZWxwRW50cnkgPSAnJztcblxuICAgICAgICAgICAgaGVscEVudHJ5ICs9IHRoaXMuY21kUHJlZml4O1xuICAgICAgICAgICAgaGVscEVudHJ5ICs9IGhhbmRsZXIuY29tbWFuZDtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXIuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICBoZWxwRW50cnkgKz0gJyAtICc7XG4gICAgICAgICAgICAgICAgaGVscEVudHJ5ICs9IGhhbmRsZXIuZGVzY3JpcHRpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhlbHBNZXNzYWdlICs9IGAke2hlbHBFbnRyeX1cXG5gO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhlbHBNZXNzYWdlID0gaGVscE1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBoYW5kbGVyIGNvdW50cywgZXhjZXB0IGBtZXNzYWdlX25ld2AgZXZlbnQgc2luY2UgaXQgaXMgYnVpbHQtaW4uXG4gICAgICovXG4gICAgcHVibGljIGdldEhhbmRsZXJDb3VudHMoKToge1xuICAgICAgICBldnQ6IG51bWJlcjtcbiAgICAgICAgY21kOiBudW1iZXI7XG4gICAgICAgIHJlZzogbnVtYmVyO1xuICAgICAgICBwbGQ6IG51bWJlcjtcbiAgICB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIERvZXMgbm90IGNvdW50IGBtZXNzYWdlX25ld2AgZXZlbnRcbiAgICAgICAgICAgIGV2dDogT2JqZWN0LnZhbHVlcyh0aGlzLmV2ZW50SGFuZGxlcnMpLmZpbHRlcihlID0+IGUpLmxlbmd0aCAtIDEsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXG4gICAgICAgICAgICBjbWQ6IHRoaXMuY29tbWFuZEhhbmRsZXJzLmxlbmd0aCxcbiAgICAgICAgICAgIHJlZzogdGhpcy5yZWdleEhhbmRsZXJzLmxlbmd0aCxcbiAgICAgICAgICAgIHBsZDogT2JqZWN0LmtleXModGhpcy5leGFjdFBheWxvYWRIYW5kbGVycykubGVuZ3RoICsgdGhpcy5keW5QYXlsb2FkSGFuZGxlcnMubGVuZ3RoLFxuICAgICAgICB9XG4gICAgfVxufVxuIl19
"use strict";var __awaiter=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(s,a){function i(e){try{o(r.next(e))}catch(e){a(e)}}function l(e){try{o(r.throw(e))}catch(e){a(e)}}function o(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}o((r=r.apply(e,t||[])).next())}))},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const escape_string_regexp_1=__importDefault(require("escape-string-regexp")),context_1=__importDefault(require("./api/context")),log_1=require("./extra/log");class Core{constructor(e,t,n,r){this.locked=!1,this.eventHandlers={message_new:null,message_reply:null,message_edit:null,message_typing_state:null,message_allow:null,message_deny:null,start:null,service_action:null,no_match:null,handler_error:null},this.exactPayloadHandlers={},this.dynPayloadHandlers=[],this.commandHandlers=[],this.regexHandlers=[],this.eventWarnings=!0,this.helpMessage="",this.api=e,this.stats=t,this.cmdPrefix=n,this.escapedCmdPrefix=escape_string_regexp_1.default(this.cmdPrefix),this.groupId=escape_string_regexp_1.default(r.toString()),this.registerMessageNewHandler()}noEventWarnings(){this.eventWarnings=!1,log_1.log().w("Warnings about missing event handlers were disabled").from("core").now()}lock(){this.locked=!0,this.generateHelpMessage()}on(e,t){this.isLocked()||(Object.keys(this.eventHandlers).includes(e)||log_1.log().e(`Cannot register a handler: unknown event type '${e}'`).from("core").now(),this.eventHandlers[e]?"message_new"===e?log_1.log().e("Cannot register a handler: handler for the `message_new` event is defined internally").from("core").now():log_1.log().e(`Cannot register a handler: duplicate handler for event '${e}'`).from("core").now():this.eventHandlers[e]=t)}payload(e,t){this.isLocked()||("function"!=typeof e?this.exactPayloadHandlers[JSON.stringify(e)]?log_1.log().e(`Cannot register a handler: duplicate handler for payload '${e}'`).from("core").now():this.exactPayloadHandlers[JSON.stringify(e)]=t:this.dynPayloadHandlers.push({tester:e,handler:t}))}cmd(e,t,n=""){this.isLocked()||this.commandHandlers.push({command:e,description:n,handler:t})}regex(e,t){this.isLocked()||this.regexHandlers.push({regex:e,handler:t})}parseRequest(e){return __awaiter(this,void 0,void 0,(function*(){const t=e.object,n=e.type,r=new context_1.default(this.api,n,t,t.text);yield this.event(n,r)}))}help(){return this.helpMessage}isLocked(){return this.locked&&log_1.log().w("Registering a handler while the bot is running is not allowed").from("core").now(),this.locked}event(e,t){return __awaiter(this,void 0,void 0,(function*(){if(this.stats.event(e),this.eventHandlers[e])try{yield this.eventHandlers[e](t),t.needsAutoSend()&&"message_new"!==e&&(yield t.send())}catch(n){log_1.log().w(`Error in handler: ${n}`).from("core").now(),"handler_error"!==e&&(yield this.event("handler_error",t))}else this.eventWarnings&&log_1.log().w(`No handler for event '${e}'`).from("core").now()}))}registerMessageNewHandler(){this.on("message_new",e=>__awaiter(this,void 0,void 0,(function*(){if(!e.obj.action)return(yield this.tryHandlePayload(e))||(yield this.tryHandleCommand(e))||(yield this.tryHandleRegex(e))?void(e.needsAutoSend()&&(yield e.send())):(log_1.log().w(`Don't know how to respond to ${JSON.stringify(e.msg).replace(/\n/g,"\\n")}, calling 'no_match' event`).from("core").now(),void(yield this.event("no_match",e)));yield this.event("service_action",e)})))}tryHandlePayload(e){return __awaiter(this,void 0,void 0,(function*(){const{payload:t}=e.obj;if(t){try{if("start"===JSON.parse(t).command)return yield this.event("start",e),e.noAutoSend(),!0}catch(e){}if(this.exactPayloadHandlers[t])return yield this.exactPayloadHandlers[t](e),!0;const n=this.dynPayloadHandlers.map(e=>{let n=null;try{n=JSON.parse(t)}catch(e){}return e.tester(t,n)?e:null}).filter(e=>e);if(n)return yield n[0].handler(e),!0}return!1}))}tryHandleCommand(e){return __awaiter(this,void 0,void 0,(function*(){const t=this.commandHandlers.map(t=>{const n=escape_string_regexp_1.default(t.command),r=new RegExp(`^( *\\[club${this.groupId}\\|.*\\])?( *${this.escapedCmdPrefix}${n})+`,"i");return r.test(e.msg)?{handler:t,msg:e.msg.replace(r,"")}:null}).filter(e=>e);if(t.length>0){const{handler:n,msg:r}=t[0];return e.msg=r,yield n.handler(e),!0}return!1}))}tryHandleRegex(e){return __awaiter(this,void 0,void 0,(function*(){const t=this.regexHandlers.filter(t=>t.regex.test(e.msg));return t.length>0&&(yield t[0].handler(e),!0)}))}generateHelpMessage(){let e="\n";this.commandHandlers.forEach(t=>{let n="";n+=this.cmdPrefix,n+=t.command,t.description&&(n+=" - ",n+=t.description),e+=`${n}\n`}),this.helpMessage=e}getHandlerCounts(){return{evt:Object.values(this.eventHandlers).filter(e=>e).length-1,cmd:this.commandHandlers.length,reg:this.regexHandlers.length,pld:Object.keys(this.exactPayloadHandlers).length+this.dynPayloadHandlers.length}}}exports.default=Core;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUuanMiLCJjb3JlLnRzIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXMiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19pbXBvcnREZWZhdWx0IiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJlc2NhcGVfc3RyaW5nX3JlZ2V4cF8xIiwicmVxdWlyZSIsImNvbnRleHRfMSIsImxvZ18xIiwiQ29yZSIsIltvYmplY3QgT2JqZWN0XSIsImFwaSIsInN0YXRzIiwiY21kUHJlZml4IiwiZ3JvdXBJZCIsImxvY2tlZCIsImV2ZW50SGFuZGxlcnMiLCJtZXNzYWdlX25ldyIsIm1lc3NhZ2VfcmVwbHkiLCJtZXNzYWdlX2VkaXQiLCJtZXNzYWdlX3R5cGluZ19zdGF0ZSIsIm1lc3NhZ2VfYWxsb3ciLCJtZXNzYWdlX2RlbnkiLCJzdGFydCIsInNlcnZpY2VfYWN0aW9uIiwibm9fbWF0Y2giLCJoYW5kbGVyX2Vycm9yIiwiZXhhY3RQYXlsb2FkSGFuZGxlcnMiLCJkeW5QYXlsb2FkSGFuZGxlcnMiLCJjb21tYW5kSGFuZGxlcnMiLCJyZWdleEhhbmRsZXJzIiwiZXZlbnRXYXJuaW5ncyIsImhlbHBNZXNzYWdlIiwiZXNjYXBlZENtZFByZWZpeCIsInRvU3RyaW5nIiwicmVnaXN0ZXJNZXNzYWdlTmV3SGFuZGxlciIsImxvZyIsInciLCJmcm9tIiwibm93IiwiZ2VuZXJhdGVIZWxwTWVzc2FnZSIsImV2ZW50IiwiaGFuZGxlciIsImlzTG9ja2VkIiwia2V5cyIsImluY2x1ZGVzIiwicGF5bG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwdXNoIiwidGVzdGVyIiwiY29tbWFuZCIsImRlc2NyaXB0aW9uIiwicmVnZXgiLCJib2R5Iiwib2JqIiwib2JqZWN0IiwidHlwZSIsIiQiLCJ0ZXh0IiwibmFtZSIsIm5lZWRzQXV0b1NlbmQiLCJzZW5kIiwiZXJyb3IiLCJvbiIsImFjdGlvbiIsInRyeUhhbmRsZVBheWxvYWQiLCJ0cnlIYW5kbGVDb21tYW5kIiwidHJ5SGFuZGxlUmVnZXgiLCJtc2ciLCJyZXBsYWNlIiwicGFyc2UiLCJub0F1dG9TZW5kIiwiaGFuZGxlcnMiLCJtYXAiLCJwb3RlbnRpYWxIYW5kbGVyIiwicGFyc2VkIiwiZmlsdGVyIiwiaGFuZGxlck9ianMiLCJjbWQiLCJjbWRSZWdleCIsIlJlZ0V4cCIsInRlc3QiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaGVscEVudHJ5IiwiZXZ0IiwidmFsdWVzIiwicmVnIiwicGxkIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLFVBQWFDLE1BQVFBLEtBQUtELFdBQWMsU0FBVUUsRUFBU0MsRUFBWUMsRUFBR0MsR0FFMUUsT0FBTyxJQUFLRCxJQUFNQSxFQUFJRSxXQUFVLFNBQVVDLEVBQVNDLEdBQy9DLFNBQVNDLEVBQVVDLEdBQVMsSUFBTUMsRUFBS04sRUFBVU8sS0FBS0YsSUFBVyxNQUFPRyxHQUFLTCxFQUFPSyxJQUNwRixTQUFTQyxFQUFTSixHQUFTLElBQU1DLEVBQUtOLEVBQWlCLE1BQUVLLElBQVcsTUFBT0csR0FBS0wsRUFBT0ssSUFDdkYsU0FBU0YsRUFBS0ksR0FKbEIsSUFBZUwsRUFJYUssRUFBT0MsS0FBT1QsRUFBUVEsRUFBT0wsUUFKMUNBLEVBSXlESyxFQUFPTCxNQUpoREEsYUFBaUJOLEVBQUlNLEVBQVEsSUFBSU4sR0FBRSxTQUFVRyxHQUFXQSxFQUFRRyxPQUlUTyxLQUFLUixFQUFXSyxHQUNsR0gsR0FBTU4sRUFBWUEsRUFBVWEsTUFBTWhCLEVBQVNDLEdBQWMsS0FBS1MsWUFHbEVPLGdCQUFtQmxCLE1BQVFBLEtBQUtrQixpQkFBb0IsU0FBVUMsR0FDOUQsT0FBUUEsR0FBT0EsRUFB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S0FBS2lELGdCQUFnQnVELFFBQVMxQyxJQUMxQixJQUFJMkMsRUFBWSxHQUVoQkEsR0FBYXpHLEtBQUtpQyxVQUNsQndFLEdBQWEzQyxFQUFRUyxRQUVqQlQsRUFBUVUsY0FDUmlDLEdBQWEsTUFDYkEsR0FBYTNDLEVBQVFVLGFBR3pCcEIsR0FBZSxHQUFHcUQsUUFHdEJ6RyxLQUFLb0QsWUFBY0EsRUFNaEJ0QixtQkFNSCxNQUFPLENBRUg0RSxJQUFLcEYsT0FBT3FGLE9BQU8zRyxLQUFLb0MsZUFBZTZELE9BQU9yRixHQUFLQSxHQUFHMkYsT0FBUyxFQUMvREosSUFBS25HLEtBQUtpRCxnQkFBZ0JzRCxPQUMxQkssSUFBSzVHLEtBQUtrRCxjQUFjcUQsT0FDeEJNLElBQUt2RixPQUFPMEMsS0FBS2hFLEtBQUsrQyxzQkFBc0J3RCxPQUFTdkcsS0FBS2dELG1CQUFtQnVELFNBN2xCekYvRSxRQUFBSCxRQUFBUSIsImZpbGUiOiJjb3JlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgZXNjYXBlUmVnZXggZnJvbSAnZXNjYXBlLXN0cmluZy1yZWdleHAnO1xuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2V4dHJhL2xvZyc7XG5cbmltcG9ydCBBUEkgZnJvbSAnLi9hcGkvYXBpJztcbmltcG9ydCBTdGF0cyBmcm9tICcuL2V4dHJhL3N0YXRzJztcblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9ICgkOiBDb250ZXh0KSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IHR5cGUgUGF5bG9hZCA9IGFueTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cbi8qKlxuICogQHBhcmFtIHBheWxvYWRKc29uIGBwYXlsb2FkSnNvbmAgdGhlIHN0cmluZ2lmaWVkIEpTT04gb2YgdGhlIHBheWxvYWQgKGFzIGdpdmVuIGJ5IENhbGxiYWNrIEFQSSlcbiAqIEBwYXJhbSBwYXlsb2FkIGBwYXlsb2FkYCB0aGUgSlMgb2JqZWN0IHRoYXQgd2FzIG1hZGUgYnkgcGFyc2luZyB0aGUgYHBheWxvYWRKc29uYCwgaWYgdGhlXG4gKiBwYXJzaW5nIHdhcyBzdWNjZXNzZnVsXG4gKi9cbmV4cG9ydCB0eXBlIFRlc3RlciA9IChwYXlsb2FkSnNvbjogc3RyaW5nLCBwYXlsb2FkPzogUGF5bG9hZCkgPT4gYm9vbGVhbjtcblxuaW50ZXJmYWNlIER5blBheWxvYWRIYW5kbGVyIHtcbiAgICB0ZXN0ZXI6IFRlc3RlcjtcbiAgICBoYW5kbGVyOiBIYW5kbGVyO1xufVxuXG5pbnRlcmZhY2UgQ29tbWFuZEhhbmRsZXIge1xuICAgIGNvbW1hbmQ6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGhhbmRsZXI6IEhhbmRsZXI7XG59XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBtZXNzYWdlIGhhbmRsaW5nIHRvIGFwcHJvcHJpYXRlIGhhbmRsZXJzLFxuICogYW5kIGlzIHVzZWQgZm9yIHNldHRpbmcgdGhlc2UgaGFuZGxlcnMuXG4gKlxuICogSGFuZGxlcnMgZm9yIHRoZSBgbWVzc2FnZV9uZXdgIGV2ZW50IHdpbGwgYmUgc2VhcmNoZWQgaW4gdGhpcyBvcmRlcjpcbiAqIDEuIElmIHNlcnZpY2UgYWN0aW9uIG1lc3NhZ2UgPT4gW1tvbl1dIGhhbmRsZXIgZm9yIHRoZSBgc2VydmljZV9hY3Rpb25gIGV2ZW50XG4gKiAxLiBJZiB1c2VyIHByZXNzZWQgdGhlIGBTdGFydGAgYnV0dG9uID0+IFtbb25dXSBoYW5kbGVyIGZvciB0aGUgYHN0YXJ0YCBldmVudFxuICogMS4gW1twYXlsb2FkXV1cbiAqIDEuIFtbY21kXV1cbiAqIDEuIFtbcmVnZXhdXVxuICpcbiAqIEZvciBvdGhlciBldmVudHMsIGEgbWF0Y2hpbmcgW1tvbl1dIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvcmUge1xuICAgIHB1YmxpYyByZWFkb25seSBhcGk6IEFQSTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHM6IFN0YXRzO1xuXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCBwcmVmaXguXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbWRQcmVmaXg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIElELlxuICAgICAqL1xuICAgIHByaXZhdGUgZ3JvdXBJZDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCBwcmVmaXgsIGVzY2FwZWQgZm9yIHVzYWdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAgICAgKi9cbiAgICBwcml2YXRlIGVzY2FwZWRDbWRQcmVmaXg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElzIHRoaXMgYENvcmVgIGxvY2tlZD9cbiAgICAgKi9cbiAgICBwcml2YXRlIGxvY2tlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcnMgZm9yIGV2ZW50cy5cbiAgICAgKi9cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvY2FtZWxjYXNlICovXG4gICAgcHJpdmF0ZSBldmVudEhhbmRsZXJzOiB7IFtrZXk6IHN0cmluZ106IEhhbmRsZXIgfSA9IHtcbiAgICAgICAgLy8gQ2FsbGJhY2sgQVBJXG4gICAgICAgIG1lc3NhZ2VfbmV3OiBudWxsLFxuICAgICAgICBtZXNzYWdlX3JlcGx5OiBudWxsLFxuICAgICAgICBtZXNzYWdlX2VkaXQ6IG51bGwsXG4gICAgICAgIG1lc3NhZ2VfdHlwaW5nX3N0YXRlOiBudWxsLFxuICAgICAgICBtZXNzYWdlX2FsbG93OiBudWxsLFxuICAgICAgICBtZXNzYWdlX2Rlbnk6IG51bGwsXG5cbiAgICAgICAgLy8gRGV0ZWN0ZWQgd2hlbiBwYXJzaW5nICdtZXNzYWdlX25ldycgZXZlbnRcbiAgICAgICAgc3RhcnQ6IG51bGwsXG4gICAgICAgIHNlcnZpY2VfYWN0aW9uOiBudWxsLFxuXG4gICAgICAgIC8vIEludGVybmFsIGV2ZW50c1xuICAgICAgICBub19tYXRjaDogbnVsbCxcbiAgICAgICAgaGFuZGxlcl9lcnJvcjogbnVsbCxcbiAgICB9O1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuXG4gICAgLyoqXG4gICAgICogRXhhY3QgcGF5bG9hZCBoYW5kbGVycy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGV4YWN0UGF5bG9hZEhhbmRsZXJzOiB7IFtrZXk6IHN0cmluZ106IEhhbmRsZXIgfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogRHluYW1pYyBwYXlsb2FkIGhhbmRsZXJzLlxuICAgICAqICh0aG9zZSB3aGljaCB1c2UgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3aGV0aGVyIGEgaGFuZGxlciBpcyBzdWl0YWJsZSlcbiAgICAgKi9cbiAgICBwcml2YXRlIGR5blBheWxvYWRIYW5kbGVyczogRHluUGF5bG9hZEhhbmRsZXJbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCBoYW5kbGVycy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbW1hbmRIYW5kbGVyczogQ29tbWFuZEhhbmRsZXJbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogUmVndWxhciBleHByZXNzaW9uIGhhbmRsZXJzLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVnZXhIYW5kbGVyczogeyByZWdleDogUmVnRXhwOyBoYW5kbGVyOiBIYW5kbGVyIH1bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQXJlIGV2ZW50IHdhcm5pbmdzIGVuYWJsZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBldmVudFdhcm5pbmdzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoZWxwIG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBoZWxwTWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBbW0NvcmVdXS5cbiAgICAgKiBAcGFyYW0gYXBpIFtbQVBJXV0gb2JqZWN0XG4gICAgICogQHBhcmFtIHN0YXRzIFtbU3RhdHNdXSBvYmplY3RcbiAgICAgKiBAcGFyYW0gY21kUHJlZml4IGNvbW1hbmQgcHJlZml4XG4gICAgICogQHBhcmFtIGdyb3VwSWQgZ3JvdXAgSURcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFwaTogQVBJLFxuICAgICAgICBzdGF0czogU3RhdHMsXG4gICAgICAgIGNtZFByZWZpeDogc3RyaW5nLFxuICAgICAgICBncm91cElkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXBpID0gYXBpO1xuICAgICAgICB0aGlzLnN0YXRzID0gc3RhdHM7XG4gICAgICAgIHRoaXMuY21kUHJlZml4ID0gY21kUHJlZml4O1xuICAgICAgICB0aGlzLmVzY2FwZWRDbWRQcmVmaXggPSBlc2NhcGVSZWdleCh0aGlzLmNtZFByZWZpeCk7XG4gICAgICAgIHRoaXMuZ3JvdXBJZCA9IGVzY2FwZVJlZ2V4KGdyb3VwSWQudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3Rlck1lc3NhZ2VOZXdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBldmVudCBoYW5kbGVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm9FdmVudFdhcm5pbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50V2FybmluZ3MgPSBmYWxzZTtcbiAgICAgICAgbG9nKClcbiAgICAgICAgICAgIC53KCdXYXJuaW5ncyBhYm91dCBtaXNzaW5nIGV2ZW50IGhhbmRsZXJzIHdlcmUgZGlzYWJsZWQnKVxuICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgLm5vdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvY2tzIHRoaXMgYENvcmVgLCBzbyBuZXcgaGFuZGxlcnMgY2FuJ3QgYmUgYWRkZWQsXG4gICAgICogYW5kIGdlbmVyYXRlcyB0aGUgaGVscCBtZXNzYWdlIGZvciBsYXRlciB1c2FnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmdlbmVyYXRlSGVscE1lc3NhZ2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYW4gZXZlbnQgaGFuZGxlci5cbiAgICAgKlxuICAgICAqIERvZXMgbm90IHdvcmsgZm9yIGBtZXNzYWdlX25ld2AsIGFzIGl0cyBoYW5kbGVyIGlzIGRlZmluZWQgYnkgYHZrLWNoYXQtYm90YCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiAjIyMgRXZlbnRzXG4gICAgICpcbiAgICAgKiAjIyMjIENhbGxiYWNrIEFQSSBFdmVudHNcbiAgICAgKiBFdmVudCB8IERlc2NyaXB0aW9uXG4gICAgICogLS0tfC0tLVxuICAgICAqIGBtZXNzYWdlX2FsbG93YCB8IFVzZXIgKiphbGxvd2VkKiogc2VuZGluZyBtZXNzYWdlcyB0byBoaW0vaGVyXG4gICAgICogYG1lc3NhZ2VfZGVueWAgfCBVc2VyICoqZGlzYWxsb3dlZCoqIHNlbmRpbmcgbWVzc2FnZXMgdG8gaGltL2hlclxuICAgICAqIGBtZXNzYWdlX3JlcGx5YCB8IE5ldyAqKm1lc3NhZ2Ugc2VudCoqIGJ5IGNvbW11bml0eSBhZG1pbmlzdHJhdG9yIChvciBieSB0aGUgYm90IGl0c2VsZilcbiAgICAgKiBgbWVzc2FnZV9lZGl0YCB8ICoqTWVzc2FnZSBlZGl0ZWQqKiBieSB1c2VyXG4gICAgICogYG1lc3NhZ2VfdHlwaW5nX3N0YXRlYCB8ICoqVXNlciBpcyB0eXBpbmcqKiBhIG1lc3NhZ2VcbiAgICAgKlxuICAgICAqICMjIyMgT3RoZXIgRXZlbnRzXG4gICAgICogRXZlbnQgdHlwZSB8IFdoZW4gaGFuZGxlciBpcyBjYWxsZWRcbiAgICAgKiAtLS18LS0tXG4gICAgICogYHN0YXJ0YCB8IElmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBge1wiY29tbWFuZFwiOiBcInN0YXJ0XCJ9YCAoaS5lLiBgU3RhcnRgIGJ1dHRvbiBwcmVzc2VkKVxuICAgICAqIGBzZXJ2aWNlX2FjdGlvbmAgfCBTZXJ2aWNlIGFjdGlvbiBtZXNzYWdlIHJlY2VpdmVkXG4gICAgICogYG5vX21hdGNoYCB8IFdoZW4gbm8gbWF0Y2hpbmcgYGNtZCgpYCBvciBgcmVnZXgoKWAgaGFuZGxlciBpcyBmb3VuZFxuICAgICAqIGBoYW5kbGVyX2Vycm9yYCB8IElmIGFuIGVycm9yIGlzIHRocm93biBpbiBhIGhhbmRsZXJcbiAgICAgKlxuICAgICAqICMjIyMgVGhlIGBzZXJ2aWNlX2FjdGlvbmAgZXZlbnRcbiAgICAgKiA+IFRoZSBgJC5vYmouYWN0aW9uYCBvYmplY3QgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZpY2UgYWN0aW9uLlxuICAgICAqID4gSXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBmaWVsZHM6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB0eXBlIChzdHJpbmcpIOKAlCBhY3Rpb24gdHlwZSwgb25lIG9mOlxuICAgICAqICAgIGBjaGF0X3Bob3RvX3VwZGF0ZWAg4oCUIGNoYXQgcGhvdG8gdXBkYXRlZFxuICAgICAqICAgIGBjaGF0X3Bob3RvX3JlbW92ZWAg4oCUIGNoYXQgcGhvdG8gcmVtb3ZlZFxuICAgICAqICAgIGBjaGF0X2NyZWF0ZWAg4oCUIGNoYXQgY3JlYXRlZFxuICAgICAqICAgIGBjaGF0X3RpdGxlX3VwZGF0ZWAg4oCUIGNoYXQgdGl0bGUgdXBkYXRlZFxuICAgICAqICAgIGBjaGF0X2ludml0ZV91c2VyYCDigJQgdXNlciB3YXMgaW52aXRlZCB0byBjaGF0XG4gICAgICogICAgYGNoYXRfa2lja191c2VyYCDigJQgdXNlciB3YXMga2lja2VkIGZyb20gdGhlIGNoYXRcbiAgICAgKiAgICBgY2hhdF9waW5fbWVzc2FnZWAg4oCUIGEgbWVzc2FnZSB3YXMgcGlubmVkXG4gICAgICogICAgYGNoYXRfdW5waW5fbWVzc2FnZWAg4oCUIGEgbWVzc2FnZSB3YXMgdW5waW5uZWRcbiAgICAgKiAgICBgY2hhdF9pbnZpdGVfdXNlcl9ieV9saW5rYCDigJQgdXNlciBqb2luZWQgdGhlIGNoYXQgYnkgbGlua1xuICAgICAqXG4gICAgICogbWVtYmVyX2lkIChpbnRlZ2VyKTpcbiAgICAgKiAgIHVzZXIgaWQgKGlmID4gMCksIHdoaWNoIHdhcyBpbnZpdGVkIG9yIGtpY2tlZCAoaWYgPCAwLCBzZWUgYGVtYWlsYCBmaWVsZClcbiAgICAgKiAgICAgKGBjaGF0X2ludml0ZV91c2VyYCwgYGNoYXRfaW52aXRlX3VzZXJfYnlfbGlua2AsICBgY2hhdF9raWNrX3VzZXJgKVxuICAgICAqICAgdXNlciBpZCwgd2hpY2ggcGlubmVkIG9yIHVucGlubmVkIGEgbWVzc2FnZVxuICAgICAqICAgICAoYGNoYXRfcGluX21lc3NhZ2VgLCBgY2hhdF91bnBpbl9tZXNzYWdlYClcbiAgICAgKlxuICAgICAqIHRleHQgKHN0cmluZyk6XG4gICAgICogICBjaGF0IG5hbWVcbiAgICAgKiAgICAgKGBjaGF0X2NyZWF0ZWAsIGBjaGF0X3RpdGxlX3VwZGF0ZWApXG4gICAgICpcbiAgICAgKiBlbWFpbCAoc3RyaW5nKTpcbiAgICAgKiAgIGVtYWlsLCB3aGljaCB3YXMgaW52aXRlZCBvciBraWNrZWRcbiAgICAgKiAgICAgKGBjaGF0X2ludml0ZV91c2VyYCwgYGNoYXRfa2lja191c2VyYCwgbWVtYmVyX2lkIDwgMClcbiAgICAgKlxuICAgICAqIHBob3RvIChvYmplY3QpIOKAlCBjaGF0IHBpY3R1cmUsIGNvbnRhaW5zOlxuICAgICAqICAgICBwaG90b181MCAoc3RyaW5nKTogVVJMIG9mIGltYWdlIDUwIHggNTAgcHhcbiAgICAgKiAgICAgcGhvdG9fMTAwIChzdHJpbmcpOiBVUkwgb2YgaW1hZ2UgMTAwIHggMTAwIHB4XG4gICAgICogICAgIHBob3RvXzIwMCAoc3RyaW5nKTogVVJMIG9mIGltYWdlIDIwMCB4IDIwMCBweFxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIC0gZXZlbnQgbmFtZVxuICAgICAqIEBwYXJhbSAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIGNvcmUub24oJ25vX21hdGNoJywgJCA9PiB7XG4gICAgICogICAkLnRleHQoJ0kgZG9uXFwndCBrbm93IGhvdyB0byByZXNwb25kIHRvIHlvdXIgbWVzc2FnZS4nKTtcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb24oZXZlbnQ6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHRoaXMuZXZlbnRIYW5kbGVycykuaW5jbHVkZXMoZXZlbnQpKSB7XG4gICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgIC5lKGBDYW5ub3QgcmVnaXN0ZXIgYSBoYW5kbGVyOiB1bmtub3duIGV2ZW50IHR5cGUgJyR7ZXZlbnR9J2ApXG4gICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50XSkge1xuICAgICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXJzW2V2ZW50XSA9IGhhbmRsZXI7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdtZXNzYWdlX25ldycpIHtcbiAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgLmUoXG4gICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcmVnaXN0ZXIgYSBoYW5kbGVyOiBoYW5kbGVyIGZvciB0aGUgYG1lc3NhZ2VfbmV3YCBldmVudCBpcyBkZWZpbmVkIGludGVybmFsbHknLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY29yZScpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAuZShgQ2Fubm90IHJlZ2lzdGVyIGEgaGFuZGxlcjogZHVwbGljYXRlIGhhbmRsZXIgZm9yIGV2ZW50ICcke2V2ZW50fSdgKVxuICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBwYXlsb2FkIGhhbmRsZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGUqKjogZXhhY3QgaGFuZGxlcnMgYXJlIHNlYXJjaGVkIGZpcnN0LCBhbmQgb25seSBpZiB0aGV5IGRvbid0IG1hdGNoLFxuICAgICAqIHRoZSBzZWFyY2ggZm9yIGEgZHluYW1pYyBoYW5kbGVyIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gZXhhY3QgcGF5bG9hZCB0byBoYW5kbGUsXG4gICAgICogb3IgYSBmdW5jdGlvbiAodHlwZSBbW1Rlc3Rlcl1dKSB3aGljaFxuICAgICAqIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaGFuZGxlIHRoZSBwYXlsb2FkIG9yIG5vdC5cbiAgICAgKiBAcGFyYW0gaGFuZGxlciAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYFxuICAgICAqIC8vIC0tLS0tLS0+IEtFWUJPQVJEIChmb3Igc2VuZGluZyB0aGUgcGF5bG9hZClcbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBhIGtleWJvYXJkXG4gICAgICogY29uc3QgeyBjb2xvcnMsIEtleWJvYXJkLCBCdXR0b24gfSA9IHZrLmtiZDtcbiAgICAgKlxuICAgICAqIHZhciBrYmQgPSBuZXcgS2V5Ym9hcmQoW1xuICAgICAqICAgICBbXG4gICAgICogICAgICAgICAvLyBDbGlja2luZyBvbiB0aGlzIGJ1dHRvbiB3aWxsIHNlbmQgdGhlIHBheWxvYWQge2E6ICdiJ31cbiAgICAgKiAgICAgICAgIGJ1dHRvbi50ZXh0KCdUZXN0IDEnLCBjb2xvcnMuZGVmYXVsdCwge2E6ICdiJ30pLFxuICAgICAqICAgICAgICAgYnV0dG9uLnRleHQoJ1Rlc3QgMicsIGNvbG9ycy5kZWZhdWx0LCB7YTogJ2InLCBjOiAnZCd9KVxuICAgICAqICAgICBdXG4gICAgICogXSwgZmFsc2UpO1xuICAgICAqXG4gICAgICogLy8gV2hlbiBhc2tlZCwgc2VuZCB0aGUga2V5Ym9hcmRcbiAgICAgKiBjb3JlLnJlZ2V4KC9rZXlib2FyZC9pLCAkID0+IHtcbiAgICAgKiAgICAkLmtleWJvYXJkKGtiZCk7XG4gICAgICogICAgJC50ZXh0KCdIZXJlIGl0IGlzIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gLS0tLS0tLT4gRVhBQ1QgUEFZTE9BRFxuICAgICAqIGNvcmUucGF5bG9hZCh7YTogJ2InfSwgJCA9PiB7XG4gICAgICogICAgJC50ZXh0KCdSZWNlaXZlZCBzZWNyZXQgcGF5bG9hZCEnKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vIC0tLS0tLS0+IERZTkFNSUMgUEFZTE9BRFxuICAgICAqIC8vIEluIHRoaXMgY2FzZSwgdGhlIGhhbmRsZXIgd2lsbCBydW4gb25seSBpZiB0aGVcbiAgICAgKiAvLyBwYXlsb2FkJ3MgcHJvcGVydHkgYGNgIGNvbnRhaW5zIHRoZSB2YWx1ZSBgZGAuXG4gICAgICogY29yZS5wYXlsb2FkKChwYXlsb2FkLCBwYXJzZWQpID0+IHtcbiAgICAgKiAgICBpZiAocGFyc2VkKSB7IC8vIElmIHRoZSBwYXlsb2FkIGlzIGEgdmFsaWQgSlNPTlxuICAgICAqICAgICAgcmV0dXJuIHBhcnNlZC5jID09PSAnZCc7XG4gICAgICogICAgfSBlbHNlIHtcbiAgICAgKiAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgKiAgICB9XG4gICAgICogfSwgJCA9PiB7XG4gICAgICogICAgJC50ZXh0KGBJbiBtZXNzYWdlICckeyQubXNnfScsIHBheWxvYWQuYyBpcyAnZCchYCk7XG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHBheWxvYWQocGF5bG9hZDogUGF5bG9hZCwgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEV4YWN0IHBheWxvYWQgbWF0Y2g6XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leGFjdFBheWxvYWRIYW5kbGVyc1tKU09OLnN0cmluZ2lmeShwYXlsb2FkKV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4YWN0UGF5bG9hZEhhbmRsZXJzW0pTT04uc3RyaW5naWZ5KHBheWxvYWQpXSA9IGhhbmRsZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC5lKFxuICAgICAgICAgICAgICAgICAgICAgICAgYENhbm5vdCByZWdpc3RlciBhIGhhbmRsZXI6IGR1cGxpY2F0ZSBoYW5kbGVyIGZvciBwYXlsb2FkICcke3BheWxvYWR9J2AsXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBEeW5hbWljIHBheWxvYWQgbWF0Y2g6XG5cbiAgICAgICAgICAgIHRoaXMuZHluUGF5bG9hZEhhbmRsZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRlc3RlcjogcGF5bG9hZCxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBjb21tYW5kIGhhbmRsZXIuXG4gICAgICpcbiAgICAgKiBIYW5kbGVyIGlzIGNhbGxlZCBpZiB0aGUgbWVzc2FnZSBiZWdpbnMgd2l0aCBgY21kX3ByZWZpeGBcbiAgICAgKiAoZGVmaW5lZCBpbiB0aGUgcGFyYW1ldGVycykgKiorKiogYGNvbW1hbmRgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tbWFuZCAtIGNvbW1hbmRcbiAgICAgKiBAcGFyYW0gaGFuZGxlciAtIGZ1bmN0aW9uIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBtZXNzYWdlXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIC0gdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBjb21tYW5kIGRvZXMsXG4gICAgICogdG8gYmUgdXNlZCBpbiBoZWxwIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBjb3JlLmNtZCgnaGVscCcsICQgPT4ge1xuICAgICAqICAgLy8gY29yZS5oZWxwKCkgcmV0dXJucyB0aGUgaGVscCBtZXNzYWdlXG4gICAgICogICAkLnRleHQoJ1Rlc3QgQm90JyArIGNvcmUuaGVscCgpKTtcbiAgICAgKiB9LCAnc2hvd3MgdGhlIGhlbHAgbWVzc2FnZScpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbWQoXG4gICAgICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICAgICAgaGFuZGxlcjogSGFuZGxlcixcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2NrZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21tYW5kSGFuZGxlcnMucHVzaCh7XG4gICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBoYW5kbGVyOiBoYW5kbGVyLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSByZWdleCBoYW5kbGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGhhbmRsZXIgLSBmdW5jdGlvbiB3aGljaCB3aWxsIGhhbmRsZSB0aGUgbWVzc2FnZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBcbiAgICAgKiBjb3JlLnJlZ2V4KC9oKGl8ZWxsb3xleSkvaSwgJCA9PiB7XG4gICAgICogICAgJC50ZXh0KCdIZWxsbywgSSBhbSBhIHRlc3QgYm90LiBZb3Ugc2FpZDogJyArICQubXNnKTtcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnZXgocmVnZXg6IFJlZ0V4cCwgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvY2tlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlZ2V4SGFuZGxlcnMucHVzaCh7XG4gICAgICAgICAgICByZWdleCxcbiAgICAgICAgICAgIGhhbmRsZXI6IGhhbmRsZXIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcmVxdWVzdCwgY3JlYXRlcyBhIFtbQ29udGV4dF1dLCBhbmQgcHJvY2VlZHNcbiAgICAgKiB0byBjYWxsIFtbQ29yZS5ldmVudF1dIHRvIGhhbmRsZSB0aGUgZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBib2R5IC0gYm9keSBvZiB0aGUgcmVxdWVzdCwgaW4gcGFyc2VkIEpTT05cbiAgICAgKlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBwYXJzZVJlcXVlc3QoYm9keTogYW55IC8qIFRPRE86IGJvZHkgdHlwZT8gKi8pOiBQcm9taXNlPHZvaWQ+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IG9iaiA9IGJvZHkub2JqZWN0O1xuICAgICAgICBjb25zdCBldmVudCA9IGJvZHkudHlwZTtcblxuICAgICAgICBjb25zdCAkID0gbmV3IENvbnRleHQodGhpcy5hcGksIGV2ZW50LCBvYmosIG9iai50ZXh0KTtcbiAgICAgICAgYXdhaXQgdGhpcy5ldmVudChldmVudCwgJCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVscCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoZWxwKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlbHBNZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYENvcmVgIGlzIGxvY2tlZCwgYW5kIHByaW50cyBhIG1lc3NhZ2VcbiAgICAgKiB0byBub3RpZnkgdGhlIHVzZXIgaWYgaXQgaXMgbG9ja2VkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNMb2NrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudygnUmVnaXN0ZXJpbmcgYSBoYW5kbGVyIHdoaWxlIHRoZSBib3QgaXMgcnVubmluZyBpcyBub3QgYWxsb3dlZCcpXG4gICAgICAgICAgICAgICAgLmZyb20oJ2NvcmUnKVxuICAgICAgICAgICAgICAgIC5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2tlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFuIGV2ZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgZXZlbnQobmFtZTogc3RyaW5nLCAkOiBDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RhdHMuZXZlbnQobmFtZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXZlbnRIYW5kbGVyc1tuYW1lXSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50SGFuZGxlcnNbbmFtZV0oJCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoJC5uZWVkc0F1dG9TZW5kKCkgJiYgbmFtZSAhPT0gJ21lc3NhZ2VfbmV3Jykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCAkLnNlbmQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGxvZygpXG4gICAgICAgICAgICAgICAgICAgIC53KGBFcnJvciBpbiBoYW5kbGVyOiAke2Vycm9yfWApXG4gICAgICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgIT09ICdoYW5kbGVyX2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdoYW5kbGVyX2Vycm9yJywgJCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXZlbnRXYXJuaW5ncykge1xuICAgICAgICAgICAgbG9nKClcbiAgICAgICAgICAgICAgICAudyhgTm8gaGFuZGxlciBmb3IgZXZlbnQgJyR7bmFtZX0nYClcbiAgICAgICAgICAgICAgICAuZnJvbSgnY29yZScpXG4gICAgICAgICAgICAgICAgLm5vdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgaGFuZGxlciBmb3IgYG1lc3NhZ2VfbmV3YCBldmVudC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZ2lzdGVyTWVzc2FnZU5ld0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub24oJ21lc3NhZ2VfbmV3JywgYXN5bmMgKCQ6IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIC8vIENoZWNrIGZvciAnc2VydmljZV9hY3Rpb24nIGV2ZW50XG4gICAgICAgICAgICBpZiAoJC5vYmouYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5ldmVudCgnc2VydmljZV9hY3Rpb24nLCAkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSByZWd1bGFyIG1lc3NhZ2VcbiAgICAgICAgICAgIGlmICghKGF3YWl0IHRoaXMudHJ5SGFuZGxlUGF5bG9hZCgkKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShhd2FpdCB0aGlzLnRyeUhhbmRsZUNvbW1hbmQoJCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGF3YWl0IHRoaXMudHJ5SGFuZGxlUmVnZXgoJCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC53KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRG9uJ3Qga25vdyBob3cgdG8gcmVzcG9uZCB0byAke0pTT04uc3RyaW5naWZ5KCQubXNnKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1xcbi9nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcXFxuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0sIGNhbGxpbmcgJ25vX21hdGNoJyBldmVudGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mcm9tKCdjb3JlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdub19tYXRjaCcsICQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoJC5uZWVkc0F1dG9TZW5kKCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCAkLnNlbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gaGFuZGxlIHRoZSBtZXNzYWdlIGluIHRoZSBnaXZlbiBgQ29udGV4dGBcbiAgICAgKiB3aXRoIGEgcGF5bG9hZCBoYW5kbGVyLlxuICAgICAqXG4gICAgICogQHJldHVybiB3YXMgdGhlIG1lc3NhZ2UgaGFuZGxlZD9cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIHRyeUhhbmRsZVBheWxvYWQoJDogQ29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCB7IHBheWxvYWQgfSA9ICQub2JqO1xuICAgICAgICBpZiAocGF5bG9hZCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICdzdGFydCcgZXZlbnRcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKEpTT04ucGFyc2UocGF5bG9hZCkuY29tbWFuZCA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2ZW50KCdzdGFydCcsICQpO1xuICAgICAgICAgICAgICAgICAgICAkLm5vQXV0b1NlbmQoKTsgLy8gTWVzc2FnZSBzZW5kaW5nIHdhcyBhbHJlYWR5IGhhbmRsZWQgYnkgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8qIEpTT04gUGFyc2UgRXJyb3IgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGV4YWN0IHBheWxvYWQgaGFuZGxlclxuICAgICAgICAgICAgaWYgKHRoaXMuZXhhY3RQYXlsb2FkSGFuZGxlcnNbcGF5bG9hZF0pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV4YWN0UGF5bG9hZEhhbmRsZXJzW3BheWxvYWRdKCQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgZHluYW1pYyBwYXlsb2FkIGhhbmRsZXJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5keW5QYXlsb2FkSGFuZGxlcnNcbiAgICAgICAgICAgICAgICAubWFwKChwb3RlbnRpYWxIYW5kbGVyKTogRHluUGF5bG9hZEhhbmRsZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyc2VkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpTT04gUGFyc2UgRXJyb3IgKi9cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3RlbnRpYWxIYW5kbGVyLnRlc3RlcihwYXlsb2FkLCBwYXJzZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG90ZW50aWFsSGFuZGxlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihlID0+IGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGVyc1swXS5oYW5kbGVyKCQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIGhhbmRsZSB0aGUgbWVzc2FnZSBpbiB0aGUgZ2l2ZW4gYENvbnRleHRgXG4gICAgICogd2l0aCBhIGNvbW1hbmQgaGFuZGxlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gd2FzIHRoZSBtZXNzYWdlIGhhbmRsZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyB0cnlIYW5kbGVDb21tYW5kKCQ6IENvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlck9ianMgPSB0aGlzLmNvbW1hbmRIYW5kbGVyc1xuICAgICAgICAgICAgLm1hcCgocG90ZW50aWFsSGFuZGxlcik6IHsgaGFuZGxlcjogQ29tbWFuZEhhbmRsZXI7IG1zZzogc3RyaW5nIH0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNtZCA9IGVzY2FwZVJlZ2V4KHBvdGVudGlhbEhhbmRsZXIuY29tbWFuZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY21kUmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICAgICAgICAgICBgXiggKlxcXFxbY2x1YiR7dGhpcy5ncm91cElkfVxcXFx8LipcXFxcXSk/KCAqJHt0aGlzLmVzY2FwZWRDbWRQcmVmaXh9JHtjbWR9KStgLCAnaScsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChjbWRSZWdleC50ZXN0KCQubXNnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogcG90ZW50aWFsSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZzogJC5tc2cucmVwbGFjZShjbWRSZWdleCwgJycpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiBlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGVcblxuICAgICAgICBpZiAoaGFuZGxlck9ianMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBoYW5kbGVyLCBtc2cgfSA9IGhhbmRsZXJPYmpzWzBdO1xuXG4gICAgICAgICAgICAkLm1zZyA9IG1zZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgYXdhaXQgaGFuZGxlci5oYW5kbGVyKCQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gaGFuZGxlIHRoZSBtZXNzYWdlIGluIHRoZSBnaXZlbiBgQ29udGV4dGBcbiAgICAgKiB3aXRoIGEgcmVnZXggaGFuZGxlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gd2FzIHRoZSBtZXNzYWdlIGhhbmRsZWQ/XG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyB0cnlIYW5kbGVSZWdleCgkOiBDb250ZXh0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5yZWdleEhhbmRsZXJzLmZpbHRlcigocG90ZW50aWFsSGFuZGxlcik6IGJvb2xlYW4gPT5cbiAgICAgICAgICAgIHBvdGVudGlhbEhhbmRsZXIucmVnZXgudGVzdCgkLm1zZyksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGhhbmRsZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZXJzWzBdLmhhbmRsZXIoJCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgdGhlIGhlbHAgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlSGVscE1lc3NhZ2UoKTogdm9pZCB7XG4gICAgICAgIGxldCBoZWxwTWVzc2FnZSA9ICdcXG4nO1xuXG4gICAgICAgIHRoaXMuY29tbWFuZEhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGxldCBoZWxwRW50cnkgPSAnJztcblxuICAgICAgICAgICAgaGVscEVudHJ5ICs9IHRoaXMuY21kUHJlZml4O1xuICAgICAgICAgICAgaGVscEVudHJ5ICs9IGhhbmRsZXIuY29tbWFuZDtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXIuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICBoZWxwRW50cnkgKz0gJyAtICc7XG4gICAgICAgICAgICAgICAgaGVscEVudHJ5ICs9IGhhbmRsZXIuZGVzY3JpcHRpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhlbHBNZXNzYWdlICs9IGAke2hlbHBFbnRyeX1cXG5gO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhlbHBNZXNzYWdlID0gaGVscE1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBoYW5kbGVyIGNvdW50cywgZXhjZXB0IGBtZXNzYWdlX25ld2AgZXZlbnQgc2luY2UgaXQgaXMgYnVpbHQtaW4uXG4gICAgICovXG4gICAgcHVibGljIGdldEhhbmRsZXJDb3VudHMoKToge1xuICAgICAgICBldnQ6IG51bWJlcjtcbiAgICAgICAgY21kOiBudW1iZXI7XG4gICAgICAgIHJlZzogbnVtYmVyO1xuICAgICAgICBwbGQ6IG51bWJlcjtcbiAgICB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIERvZXMgbm90IGNvdW50IGBtZXNzYWdlX25ld2AgZXZlbnRcbiAgICAgICAgICAgIGV2dDogT2JqZWN0LnZhbHVlcyh0aGlzLmV2ZW50SGFuZGxlcnMpLmZpbHRlcihlID0+IGUpLmxlbmd0aCAtIDEsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXG4gICAgICAgICAgICBjbWQ6IHRoaXMuY29tbWFuZEhhbmRsZXJzLmxlbmd0aCxcbiAgICAgICAgICAgIHJlZzogdGhpcy5yZWdleEhhbmRsZXJzLmxlbmd0aCxcbiAgICAgICAgICAgIHBsZDogT2JqZWN0LmtleXModGhpcy5leGFjdFBheWxvYWRIYW5kbGVycykubGVuZ3RoICsgdGhpcy5keW5QYXlsb2FkSGFuZGxlcnMubGVuZ3RoLFxuICAgICAgICB9XG4gICAgfVxufVxuIl19

@@ -1,2 +0,2 @@

"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),io_ts_reporters_1=require("io-ts-reporters");var MessageType;!function(e){e[e.Information=0]="Information",e[e.Warning=1]="Warning",e[e.Error=2]="Error",e[e.Response=3]="Response"}(MessageType=exports.MessageType||(exports.MessageType={}));const SRC_SPACING=5;class LogMessageBuilder{constructor(){this.messageFrom="log",this.messageType=MessageType.Information,this.messageText=""}from(e){return this.messageFrom=e,this}type(e){return this.messageType=e,this}text(e){return e instanceof Error?this.messageText=e.message:this.messageText=e,this}now(){return this.log(),this}log(){if(""===this.messageText)return;const e=[chalk_1.default.bold.blue("info"),chalk_1.default.bold.keyword("orange")("warn"),chalk_1.default.bold.red("err!"),chalk_1.default.bold.green("resp")][this.messageType];let t="";for(let e=0;e<SRC_SPACING-this.messageFrom.length;e+=1)t+=" ";const s=`${t}${this.messageFrom} ${e} ${this.messageText}`;if(this.messageType===MessageType.Error)throw new Error(s);console.log(s)}i(e){return this.type(MessageType.Information),this.text(e)}w(e){return this.type(MessageType.Warning),this.text(e)}e(e){return this.type(MessageType.Error),this.text(e)}r(e){return this.type(MessageType.Response),this.text(e)}}function log(){return new LogMessageBuilder}function validate(e,t,s){const r=e.decode(t),o=io_ts_reporters_1.reporter(r);if(r.isLeft()){o.unshift("The following errors occured during validation in `"+s+"`:");let e=o.join("\n "),t=/Expecting (\w+) at (\w+)\.0 but instead got: (.+)\.\n *Expecting (\w+) at \w+\.1 but instead got: (.+)\./g;return e=e.replace(t,chalk_1.default`Expecting {bold.blue $1} or {bold.blue $4} at {bold.green $2} but instead got {bold.red $3}`),t=/Expecting (\w+) at (\w+) but instead got: (.+)\./g,e=e.replace(t,chalk_1.default`Expecting {bold.blue $1} at {bold.green $2} but instead got {bold.red $3}`),log().e(e).from("•_•").now(),null}return r.value}exports.log=log,exports.validate=validate;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dHJhL2xvZy5qcyIsImV4dHJhL2xvZy50cyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJ0aGlzIiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNoYWxrXzEiLCJyZXF1aXJlIiwiaW9fdHNfcmVwb3J0ZXJzXzEiLCJNZXNzYWdlVHlwZSIsIlNSQ19TUEFDSU5HIiwiTG9nTWVzc2FnZUJ1aWxkZXIiLCJbb2JqZWN0IE9iamVjdF0iLCJtZXNzYWdlRnJvbSIsIm1lc3NhZ2VUeXBlIiwiSW5mb3JtYXRpb24iLCJtZXNzYWdlVGV4dCIsImYiLCJ0IiwiRXJyb3IiLCJtZXNzYWdlIiwibG9nIiwibWVzc2FnZVR5cGVTdHJpbmciLCJib2xkIiwiYmx1ZSIsImtleXdvcmQiLCJyZWQiLCJncmVlbiIsInNwYWNpbmciLCJpIiwibGVuZ3RoIiwiY29uc29sZSIsInR5cGUiLCJ0ZXh0IiwiV2FybmluZyIsIlJlc3BvbnNlIiwidmFsaWRhdGUiLCJ2YWxpZGF0b3IiLCJkYXRhIiwibG9jYXRpb24iLCJyZXN1bHQiLCJkZWNvZGUiLCJyZXBvcnQiLCJyZXBvcnRlciIsImlzTGVmdCIsInVuc2hpZnQiLCJuZXdSZXBvcnQiLCJqb2luIiwicmVnZXgiLCJyZXBsYWNlIiwiZSIsImZyb20iLCJub3ciXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0EsSUFBSUEsZ0JBQW1CQyxNQUFRQSxLQUFLRCxpQkFBb0IsU0FBVUUsR0FDOUQsT0FBUUEsR0FBT0EsRUFBSUMsV0FBY0QsRUFBTSxDQUFFRSxRQUFXRixJQUV4REcsT0FBT0MsZUFBZUMsUUFBUyxhQUFjLENBQUVDLE9BQU8sSUNKdEQsTUFBQUMsUUFBQVQsZ0JBQUFVLFFBQUEsVUFFQUMsa0JBQUFELFFBQUEsbUJBS0EsSUFBWUUsYUFBWixTQUFZQSxHQUNSQSxFQUFBQSxFQUFBLFlBQUEsR0FBQSxjQUNBQSxFQUFBQSxFQUFBLFFBQUEsR0FBQSxVQUNBQSxFQUFBQSxFQUFBLE1BQUEsR0FBQSxRQUNBQSxFQUFBQSxFQUFBLFNBQUEsR0FBQSxXQUpKLENBQVlBLFlBQUFMLFFBQUFLLGNBQUFMLFFBQUFLLFlBQVcsS0FVdkIsTUFBTUMsWUFBYyxFQUVwQixNQUFNQyxrQkFBTkMsY0FJV2QsS0FBQWUsWUFBc0IsTUFLdEJmLEtBQUFnQixZQUEyQkwsWUFBWU0sWUFLdkNqQixLQUFBa0IsWUFBc0IsR0FLdEJKLEtBQUtLLEdBRVIsT0FEQW5CLEtBQUtlLFlBQWNJLEVBQ1puQixLQU1KYyxLQUFLTSxHQUVSLE9BREFwQixLQUFLZ0IsWUFBY0ksRUFDWnBCLEtBTUpjLEtBQUtNLEdBT1IsT0FOSUEsYUFBYUMsTUFDYnJCLEtBQUtrQixZQUFjRSxFQUFFRSxRQUVyQnRCLEtBQUtrQixZQUFjRSxFQUdoQnBCLEtBTUpjLE1BRUgsT0FEQWQsS0FBS3VCLE1BQ0V2QixLQU1KYyxNQUNILEdBQXlCLEtBQXJCZCxLQUFLa0IsWUFDTCxPQUdKLE1BQU1NLEVBQW9CLENBQ3RCaEIsUUFBQUwsUUFBTXNCLEtBQUtDLEtBQUssUUFDaEJsQixRQUFBTCxRQUFNc0IsS0FBS0UsUUFBUSxTQUFuQm5CLENBQTZCLFFBQzdCQSxRQUFBTCxRQUFNc0IsS0FBS0csSUFBSSxRQUNmcEIsUUFBQUwsUUFBTXNCLEtBQUtJLE1BQU0sU0FDbkI3QixLQUFLZ0IsYUFFUCxJQUFJYyxFQUFVLEdBQ2QsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUluQixZQUFjWixLQUFLZSxZQUFZaUIsT0FBUUQsR0FBSyxFQUM1REQsR0FBVyxJQUdmLE1BQU1SLEtBQWFRLElBQVU5QixLQUFLZSxlQUFlUyxLQUFxQnhCLEtBQUtrQixjQUUzRSxHQUFJbEIsS0FBS2dCLGNBQWdCTCxZQUFZVSxNQUNqQyxNQUFNLElBQUlBLE1BQU1DLEdBRWhCVyxRQUFRVixJQUFJRCxHQVViUixFQUFFTSxHQUVMLE9BREFwQixLQUFLa0MsS0FBS3ZCLFlBQVlNLGFBQ2ZqQixLQUFLbUMsS0FBS2YsR0FTZE4sRUFBRU0sR0FFTCxPQURBcEIsS0FBS2tDLEtBQUt2QixZQUFZeUIsU0FDZnBDLEtBQUttQyxLQUFLZixHQVNkTixFQUFFTSxHQUVMLE9BREFwQixLQUFLa0MsS0FBS3ZCLFlBQVlVLE9BQ2ZyQixLQUFLbUMsS0FBS2YsR0FTZE4sRUFBRU0sR0FFTCxPQURBcEIsS0FBS2tDLEtBQUt2QixZQUFZMEIsVUFDZnJDLEtBQUttQyxLQUFLZixJQU96QixTQUFnQkcsTUFDWixPQUFPLElBQUlWLGtCQU9mLFNBQWdCeUIsU0FBa0JDLEVBQTRCQyxFQUFXQyxHQUNyRSxNQUFNQyxFQUFTSCxFQUFVSSxPQUFPSCxHQUMxQkksRUFBU2xDLGtCQUFBbUMsU0FBU0gsR0FFeEIsR0FBSUEsRUFBT0ksU0FBVSxDQUNqQkYsRUFBT0csUUFBUSxzREFBd0ROLEVBQVcsTUFFbEYsSUFBSU8sRUFBWUosRUFBT0ssS0FBSyxtQkFDeEJDLEVBQVEsNEdBUVosT0FQQUYsRUFBWUEsRUFBVUcsUUFBUUQsRUFBTzFDLFFBQUFMLHNHQUVyQytDLEVBQVEsb0RBQ1JGLEVBQVlBLEVBQVVHLFFBQVFELEVBQU8xQyxRQUFBTCxvRkFFckNvQixNQUFNNkIsRUFBRUosR0FBV0ssS0FBSyxPQUFPQyxNQUV4QixLQUVQLE9BQU9aLEVBQU9uQyxNQTFCdEJELFFBQUFpQixJQUFBQSxJQVFBakIsUUFBQWdDLFNBQUFBIiwiZmlsZSI6ImV4dHJhL2xvZy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnXG5pbXBvcnQgeyByZXBvcnRlciB9IGZyb20gJ2lvLXRzLXJlcG9ydGVycyc7XG5cbi8qKlxuICogVHlwZXMgb2YgbG9nIG1lc3NhZ2VzLlxuICovXG5leHBvcnQgZW51bSBNZXNzYWdlVHlwZSB7XG4gICAgSW5mb3JtYXRpb24gPSAwLFxuICAgIFdhcm5pbmcgPSAxLFxuICAgIEVycm9yID0gMixcbiAgICBSZXNwb25zZSA9IDMsXG59XG5cbi8qKlxuICogU3BhY2luZyBvZiB0aGUgbWVzc2FnZSBzb3VyY2UuXG4gKi9cbmNvbnN0IFNSQ19TUEFDSU5HID0gNTtcblxuY2xhc3MgTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2Ugb2YgdGhlIG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHVibGljIG1lc3NhZ2VGcm9tOiBzdHJpbmcgPSAnbG9nJztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlVHlwZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlVGV4dDogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzb3VyY2Ugb2YgdGhlIG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHVibGljIGZyb20oZjogc3RyaW5nKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLm1lc3NhZ2VGcm9tID0gZjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdHlwZSBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdHlwZSh0OiBNZXNzYWdlVHlwZSk6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlVHlwZSA9IHQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHVibGljIHRleHQodDogc3RyaW5nIHwgRXJyb3IpOiBMb2dNZXNzYWdlQnVpbGRlciB7XG4gICAgICAgIGlmICh0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVRleHQgPSB0Lm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0ID0gdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvZ3MgdGhlIG1lc3NhZ2Ugbm93LlxuICAgICAqL1xuICAgIHB1YmxpYyBub3coKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLmxvZygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2dzIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VUZXh0ID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZVR5cGVTdHJpbmcgPSBbXG4gICAgICAgICAgICBjaGFsay5ib2xkLmJsdWUoJ2luZm8nKSxcbiAgICAgICAgICAgIGNoYWxrLmJvbGQua2V5d29yZCgnb3JhbmdlJykoJ3dhcm4nKSxcbiAgICAgICAgICAgIGNoYWxrLmJvbGQucmVkKCdlcnIhJyksXG4gICAgICAgICAgICBjaGFsay5ib2xkLmdyZWVuKCdyZXNwJyksXG4gICAgICAgIF1bdGhpcy5tZXNzYWdlVHlwZV07XG5cbiAgICAgICAgbGV0IHNwYWNpbmcgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBTUkNfU1BBQ0lORyAtIHRoaXMubWVzc2FnZUZyb20ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHNwYWNpbmcgKz0gJyAnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke3NwYWNpbmd9JHt0aGlzLm1lc3NhZ2VGcm9tfSAke21lc3NhZ2VUeXBlU3RyaW5nfSAke3RoaXMubWVzc2FnZVRleHR9YDtcblxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlVHlwZSA9PT0gTWVzc2FnZVR5cGUuRXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgbG9nZ2luZyBpbmZvcm1hdGlvbi5cbiAgICAgKiBTZXRzIHRoZSB0eXBlIHRvIFtbTWVzc2FnZVR5cGUuSW5mb3JtYXRpb25dXSBhbmQgYWxzbyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gdCB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gSWYgcGFzc2VkIGFuIGBFcnJvcmAsXG4gICAgICogdGhlIGBtZXNzYWdlYCBwcm9wZXJ0eSBvZiB0aGUgZXJyb3Igd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBpKHQ6IHN0cmluZyB8IEVycm9yKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLnR5cGUoTWVzc2FnZVR5cGUuSW5mb3JtYXRpb24pO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgbG9nZ2luZyB3YXJuaW5ncy5cbiAgICAgKiBTZXRzIHRoZSB0eXBlIHRvIFtbTWVzc2FnZVR5cGUuV2FybmluZ11dIGFuZCBhbHNvIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB0IHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiBJZiBwYXNzZWQgYW4gYEVycm9yYCxcbiAgICAgKiB0aGUgYG1lc3NhZ2VgIHByb3BlcnR5IG9mIHRoZSBlcnJvciB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgcHVibGljIHcodDogc3RyaW5nIHwgRXJyb3IpOiBMb2dNZXNzYWdlQnVpbGRlciB7XG4gICAgICAgIHRoaXMudHlwZShNZXNzYWdlVHlwZS5XYXJuaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGxvZ2dpbmcgZXJyb3JzLlxuICAgICAqIFNldHMgdGhlIHR5cGUgdG8gW1tNZXNzYWdlVHlwZS5FcnJvcl1dIGFuZCBhbHNvIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB0IHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiBJZiBwYXNzZWQgYW4gYEVycm9yYCxcbiAgICAgKiB0aGUgYG1lc3NhZ2VgIHByb3BlcnR5IG9mIHRoZSBlcnJvciB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgcHVibGljIGUodDogc3RyaW5nIHwgRXJyb3IpOiBMb2dNZXNzYWdlQnVpbGRlciB7XG4gICAgICAgIHRoaXMudHlwZShNZXNzYWdlVHlwZS5FcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBsb2dnaW5nIHJlc3BvbnNlcy5cbiAgICAgKiBTZXRzIHRoZSB0eXBlIHRvIFtbTWVzc2FnZVR5cGUuUmVzcG9uc2VdXSBhbmQgYWxzbyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gdCB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gSWYgcGFzc2VkIGFuIGBFcnJvcmAsXG4gICAgICogdGhlIGBtZXNzYWdlYCBwcm9wZXJ0eSBvZiB0aGUgZXJyb3Igd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyByKHQ6IHN0cmluZyB8IEVycm9yKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLnR5cGUoTWVzc2FnZVR5cGUuUmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHQpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBTaG9ydGN1dCBmb3IgY29uc3RydWN0aW5nIFtbTG9nTWVzc2FnZUJ1aWxkZXJdXXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2coKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgTG9nTWVzc2FnZUJ1aWxkZXIoKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdXNpbmcgYGlvLXRzYCBhbmQgY29udmVydHMgcmVwb3J0IGZyb20gdGhlIGBpby10cy1yZXBvcnRlcnNgXG4gKiByZXBvcnRlciB0byBjb2xvcmZ1bCBmb3JtYXQgYW5kIGpvaW5zIGxpbmVzIHdpdGggYC4wYCBhbmQgYC4xYCB1c2luZyBgb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGU8QSwgTywgST4odmFsaWRhdG9yOiB0LlR5cGU8QSwgTywgST4sIGRhdGE6IGFueSwgbG9jYXRpb246IHN0cmluZyk6IGFueSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvci5kZWNvZGUoZGF0YSk7XG4gICAgY29uc3QgcmVwb3J0ID0gcmVwb3J0ZXIocmVzdWx0KTtcblxuICAgIGlmIChyZXN1bHQuaXNMZWZ0KCkpIHtcbiAgICAgICAgcmVwb3J0LnVuc2hpZnQoJ1RoZSBmb2xsb3dpbmcgZXJyb3JzIG9jY3VyZWQgZHVyaW5nIHZhbGlkYXRpb24gaW4gYCcgKyBsb2NhdGlvbiArICdgOicpO1xuXG4gICAgICAgIGxldCBuZXdSZXBvcnQgPSByZXBvcnQuam9pbignXFxuICAgICAgICAgICAgICcpO1xuICAgICAgICBsZXQgcmVnZXggPSAvRXhwZWN0aW5nIChcXHcrKSBhdCAoXFx3KylcXC4wIGJ1dCBpbnN0ZWFkIGdvdDogKC4rKVxcLlxcbiAqRXhwZWN0aW5nIChcXHcrKSBhdCBcXHcrXFwuMSBidXQgaW5zdGVhZCBnb3Q6ICguKylcXC4vZztcbiAgICAgICAgbmV3UmVwb3J0ID0gbmV3UmVwb3J0LnJlcGxhY2UocmVnZXgsIGNoYWxrYEV4cGVjdGluZyB7Ym9sZC5ibHVlICQxfSBvciB7Ym9sZC5ibHVlICQ0fSBhdCB7Ym9sZC5ncmVlbiAkMn0gYnV0IGluc3RlYWQgZ290IHtib2xkLnJlZCAkM31gKTtcblxuICAgICAgICByZWdleCA9IC9FeHBlY3RpbmcgKFxcdyspIGF0IChcXHcrKSBidXQgaW5zdGVhZCBnb3Q6ICguKylcXC4vZztcbiAgICAgICAgbmV3UmVwb3J0ID0gbmV3UmVwb3J0LnJlcGxhY2UocmVnZXgsIGNoYWxrYEV4cGVjdGluZyB7Ym9sZC5ibHVlICQxfSBhdCB7Ym9sZC5ncmVlbiAkMn0gYnV0IGluc3RlYWQgZ290IHtib2xkLnJlZCAkM31gKTtcblxuICAgICAgICBsb2coKS5lKG5ld1JlcG9ydCkuZnJvbSgn4oCiX+KAoicpLm5vdygpO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxufVxuIl19
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),io_ts_reporters_1=require("io-ts-reporters"),Either_1=require("fp-ts/lib/Either");var MessageType;!function(e){e[e.Information=0]="Information",e[e.Warning=1]="Warning",e[e.Error=2]="Error",e[e.Response=3]="Response"}(MessageType=exports.MessageType||(exports.MessageType={}));const SRC_SPACING=5;class LogMessageBuilder{constructor(){this.messageFrom="log",this.messageType=MessageType.Information,this.messageText=""}from(e){return this.messageFrom=e,this}type(e){return this.messageType=e,this}text(e){return e instanceof Error?this.messageText=e.message:this.messageText=e,this}now(){return this.log(),this}log(){if(""===this.messageText)return;const e=[chalk_1.default.bold.blue("info"),chalk_1.default.bold.keyword("orange")("warn"),chalk_1.default.bold.red("err!"),chalk_1.default.bold.green("resp")][this.messageType];let t="";for(let e=0;e<SRC_SPACING-this.messageFrom.length;e+=1)t+=" ";const s=`${t}${this.messageFrom} ${e} ${this.messageText}`;if(this.messageType===MessageType.Error)throw new Error(s);console.log(s)}i(e){return this.type(MessageType.Information),this.text(e)}w(e){return this.type(MessageType.Warning),this.text(e)}e(e){return this.type(MessageType.Error),this.text(e)}r(e){return this.type(MessageType.Response),this.text(e)}}function log(){return new LogMessageBuilder}function validate(e,t,s){const r=e.decode(t),o=io_ts_reporters_1.reporter(r);if(Either_1.isLeft(r)){o.unshift("The following errors occured during validation in `"+s+"`:");let e=o.join("\n "),t=/Expecting (\w+) at (\w+)\.0 but instead got: (.+)\.\n *Expecting (\w+) at \w+\.1 but instead got: (.+)\./g;return e=e.replace(t,chalk_1.default`Expecting {bold.blue $1} or {bold.blue $4} at {bold.green $2} but instead got {bold.red $3}`),t=/Expecting (\w+) at (\w+) but instead got: (.+)\./g,e=e.replace(t,chalk_1.default`Expecting {bold.blue $1} at {bold.green $2} but instead got {bold.red $3}`),log().e(e).from("•_•").now(),null}return r.right}exports.log=log,exports.validate=validate;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dHJhL2xvZy5qcyIsImV4dHJhL2xvZy50cyJdLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJ0aGlzIiwibW9kIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNoYWxrXzEiLCJyZXF1aXJlIiwiaW9fdHNfcmVwb3J0ZXJzXzEiLCJFaXRoZXJfMSIsIk1lc3NhZ2VUeXBlIiwiU1JDX1NQQUNJTkciLCJMb2dNZXNzYWdlQnVpbGRlciIsIltvYmplY3QgT2JqZWN0XSIsIm1lc3NhZ2VGcm9tIiwibWVzc2FnZVR5cGUiLCJJbmZvcm1hdGlvbiIsIm1lc3NhZ2VUZXh0IiwiZiIsInQiLCJFcnJvciIsIm1lc3NhZ2UiLCJsb2ciLCJtZXNzYWdlVHlwZVN0cmluZyIsImJvbGQiLCJibHVlIiwia2V5d29yZCIsInJlZCIsImdyZWVuIiwic3BhY2luZyIsImkiLCJsZW5ndGgiLCJjb25zb2xlIiwidHlwZSIsInRleHQiLCJXYXJuaW5nIiwiUmVzcG9uc2UiLCJ2YWxpZGF0ZSIsInZhbGlkYXRvciIsImRhdGEiLCJsb2NhdGlvbiIsInJlc3VsdCIsImRlY29kZSIsInJlcG9ydCIsInJlcG9ydGVyIiwiaXNMZWZ0IiwidW5zaGlmdCIsIm5ld1JlcG9ydCIsImpvaW4iLCJyZWdleCIsInJlcGxhY2UiLCJlIiwiZnJvbSIsIm5vdyIsInJpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFeERHLE9BQU9DLGVBQWVDLFFBQVMsYUFBYyxDQUFFQyxPQUFPLElDSnRELE1BQUFDLFFBQUFULGdCQUFBVSxRQUFBLFVBRUFDLGtCQUFBRCxRQUFBLG1CQUNBRSxTQUFBRixRQUFBLG9CQUtBLElBQVlHLGFBQVosU0FBWUEsR0FDUkEsRUFBQUEsRUFBQSxZQUFBLEdBQUEsY0FDQUEsRUFBQUEsRUFBQSxRQUFBLEdBQUEsVUFDQUEsRUFBQUEsRUFBQSxNQUFBLEdBQUEsUUFDQUEsRUFBQUEsRUFBQSxTQUFBLEdBQUEsV0FKSixDQUFZQSxZQUFBTixRQUFBTSxjQUFBTixRQUFBTSxZQUFXLEtBVXZCLE1BQU1DLFlBQWMsRUFFcEIsTUFBTUMsa0JBQU5DLGNBSVdmLEtBQUFnQixZQUFjLE1BS2RoQixLQUFBaUIsWUFBMkJMLFlBQVlNLFlBS3ZDbEIsS0FBQW1CLFlBQWMsR0FLZEosS0FBS0ssR0FFUixPQURBcEIsS0FBS2dCLFlBQWNJLEVBQ1pwQixLQU1KZSxLQUFLTSxHQUVSLE9BREFyQixLQUFLaUIsWUFBY0ksRUFDWnJCLEtBTUplLEtBQUtNLEdBT1IsT0FOSUEsYUFBYUMsTUFDYnRCLEtBQUttQixZQUFjRSxFQUFFRSxRQUVyQnZCLEtBQUttQixZQUFjRSxFQUdoQnJCLEtBTUplLE1BRUgsT0FEQWYsS0FBS3dCLE1BQ0V4QixLQU1KZSxNQUNILEdBQXlCLEtBQXJCZixLQUFLbUIsWUFDTCxPQUdKLE1BQU1NLEVBQW9CLENBQ3RCakIsUUFBQUwsUUFBTXVCLEtBQUtDLEtBQUssUUFDaEJuQixRQUFBTCxRQUFNdUIsS0FBS0UsUUFBUSxTQUFuQnBCLENBQTZCLFFBQzdCQSxRQUFBTCxRQUFNdUIsS0FBS0csSUFBSSxRQUNmckIsUUFBQUwsUUFBTXVCLEtBQUtJLE1BQU0sU0FDbkI5QixLQUFLaUIsYUFFUCxJQUFJYyxFQUFVLEdBQ2QsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUluQixZQUFjYixLQUFLZ0IsWUFBWWlCLE9BQVFELEdBQUssRUFDNURELEdBQVcsSUFHZixNQUFNUixFQUFVLEdBQUdRLElBQVUvQixLQUFLZ0IsZUFBZVMsS0FBcUJ6QixLQUFLbUIsY0FFM0UsR0FBSW5CLEtBQUtpQixjQUFnQkwsWUFBWVUsTUFDakMsTUFBTSxJQUFJQSxNQUFNQyxHQUVoQlcsUUFBUVYsSUFBSUQsR0FVYlIsRUFBRU0sR0FFTCxPQURBckIsS0FBS21DLEtBQUt2QixZQUFZTSxhQUNmbEIsS0FBS29DLEtBQUtmLEdBU2ROLEVBQUVNLEdBRUwsT0FEQXJCLEtBQUttQyxLQUFLdkIsWUFBWXlCLFNBQ2ZyQyxLQUFLb0MsS0FBS2YsR0FTZE4sRUFBRU0sR0FFTCxPQURBckIsS0FBS21DLEtBQUt2QixZQUFZVSxPQUNmdEIsS0FBS29DLEtBQUtmLEdBU2ROLEVBQUVNLEdBRUwsT0FEQXJCLEtBQUttQyxLQUFLdkIsWUFBWTBCLFVBQ2Z0QyxLQUFLb0MsS0FBS2YsSUFPekIsU0FBZ0JHLE1BQ1osT0FBTyxJQUFJVixrQkFPZixTQUFnQnlCLFNBQWtCQyxFQUE0QkMsRUFBV0MsR0FDckUsTUFBTUMsRUFBU0gsRUFBVUksT0FBT0gsR0FDMUJJLEVBQVNuQyxrQkFBQW9DLFNBQVNILEdBRXhCLEdBQUloQyxTQUFBb0MsT0FBT0osR0FBUyxDQUNoQkUsRUFBT0csUUFBUSxzREFBd0ROLEVBQVcsTUFFbEYsSUFBSU8sRUFBWUosRUFBT0ssS0FBSyxtQkFDeEJDLEVBQVEsNEdBUVosT0FQQUYsRUFBWUEsRUFBVUcsUUFBUUQsRUFBTzNDLFFBQUFMLE9BQUssK0ZBRTFDZ0QsRUFBUSxvREFDUkYsRUFBWUEsRUFBVUcsUUFBUUQsRUFBTzNDLFFBQUFMLE9BQUssNkVBRTFDcUIsTUFBTTZCLEVBQUVKLEdBQVdLLEtBQUssT0FBT0MsTUFFeEIsS0FFUCxPQUFPWixFQUFPYSxNQTFCdEJsRCxRQUFBa0IsSUFBQUEsSUFRQWxCLFFBQUFpQyxTQUFBQSIsImZpbGUiOiJleHRyYS9sb2cuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJ1xuaW1wb3J0IHsgcmVwb3J0ZXIgfSBmcm9tICdpby10cy1yZXBvcnRlcnMnO1xuaW1wb3J0IHsgaXNMZWZ0IH0gZnJvbSAnZnAtdHMvbGliL0VpdGhlcidcblxuLyoqXG4gKiBUeXBlcyBvZiBsb2cgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE1lc3NhZ2VUeXBlIHtcbiAgICBJbmZvcm1hdGlvbiA9IDAsXG4gICAgV2FybmluZyA9IDEsXG4gICAgRXJyb3IgPSAyLFxuICAgIFJlc3BvbnNlID0gMyxcbn1cblxuLyoqXG4gKiBTcGFjaW5nIG9mIHRoZSBtZXNzYWdlIHNvdXJjZS5cbiAqL1xuY29uc3QgU1JDX1NQQUNJTkcgPSA1O1xuXG5jbGFzcyBMb2dNZXNzYWdlQnVpbGRlciB7XG4gICAgLyoqXG4gICAgICogVGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWVzc2FnZUZyb20gPSAnbG9nJztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlVHlwZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlVGV4dCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc291cmNlIG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBmcm9tKGY6IHN0cmluZyk6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlRnJvbSA9IGY7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHVibGljIHR5cGUodDogTWVzc2FnZVR5cGUpOiBMb2dNZXNzYWdlQnVpbGRlciB7XG4gICAgICAgIHRoaXMubWVzc2FnZVR5cGUgPSB0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyB0ZXh0KHQ6IHN0cmluZyB8IEVycm9yKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICBpZiAodCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0ID0gdC5tZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlVGV4dCA9IHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2dzIHRoZSBtZXNzYWdlIG5vdy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbm93KCk6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICAgICAgdGhpcy5sb2coKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9ncyB0aGUgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlVGV4dCA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VUeXBlU3RyaW5nID0gW1xuICAgICAgICAgICAgY2hhbGsuYm9sZC5ibHVlKCdpbmZvJyksXG4gICAgICAgICAgICBjaGFsay5ib2xkLmtleXdvcmQoJ29yYW5nZScpKCd3YXJuJyksXG4gICAgICAgICAgICBjaGFsay5ib2xkLnJlZCgnZXJyIScpLFxuICAgICAgICAgICAgY2hhbGsuYm9sZC5ncmVlbigncmVzcCcpLFxuICAgICAgICBdW3RoaXMubWVzc2FnZVR5cGVdO1xuXG4gICAgICAgIGxldCBzcGFjaW5nID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgU1JDX1NQQUNJTkcgLSB0aGlzLm1lc3NhZ2VGcm9tLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBzcGFjaW5nICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtzcGFjaW5nfSR7dGhpcy5tZXNzYWdlRnJvbX0gJHttZXNzYWdlVHlwZVN0cmluZ30gJHt0aGlzLm1lc3NhZ2VUZXh0fWA7XG5cbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVR5cGUgPT09IE1lc3NhZ2VUeXBlLkVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGxvZ2dpbmcgaW5mb3JtYXRpb24uXG4gICAgICogU2V0cyB0aGUgdHlwZSB0byBbW01lc3NhZ2VUeXBlLkluZm9ybWF0aW9uXV0gYW5kIGFsc28gdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHQgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuIElmIHBhc3NlZCBhbiBgRXJyb3JgLFxuICAgICAqIHRoZSBgbWVzc2FnZWAgcHJvcGVydHkgb2YgdGhlIGVycm9yIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaSh0OiBzdHJpbmcgfCBFcnJvcik6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICAgICAgdGhpcy50eXBlKE1lc3NhZ2VUeXBlLkluZm9ybWF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGxvZ2dpbmcgd2FybmluZ3MuXG4gICAgICogU2V0cyB0aGUgdHlwZSB0byBbW01lc3NhZ2VUeXBlLldhcm5pbmddXSBhbmQgYWxzbyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gdCB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gSWYgcGFzc2VkIGFuIGBFcnJvcmAsXG4gICAgICogdGhlIGBtZXNzYWdlYCBwcm9wZXJ0eSBvZiB0aGUgZXJyb3Igd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3KHQ6IHN0cmluZyB8IEVycm9yKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLnR5cGUoTWVzc2FnZVR5cGUuV2FybmluZyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBsb2dnaW5nIGVycm9ycy5cbiAgICAgKiBTZXRzIHRoZSB0eXBlIHRvIFtbTWVzc2FnZVR5cGUuRXJyb3JdXSBhbmQgYWxzbyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gdCB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gSWYgcGFzc2VkIGFuIGBFcnJvcmAsXG4gICAgICogdGhlIGBtZXNzYWdlYCBwcm9wZXJ0eSBvZiB0aGUgZXJyb3Igd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBlKHQ6IHN0cmluZyB8IEVycm9yKTogTG9nTWVzc2FnZUJ1aWxkZXIge1xuICAgICAgICB0aGlzLnR5cGUoTWVzc2FnZVR5cGUuRXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgbG9nZ2luZyByZXNwb25zZXMuXG4gICAgICogU2V0cyB0aGUgdHlwZSB0byBbW01lc3NhZ2VUeXBlLlJlc3BvbnNlXV0gYW5kIGFsc28gdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHQgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuIElmIHBhc3NlZCBhbiBgRXJyb3JgLFxuICAgICAqIHRoZSBgbWVzc2FnZWAgcHJvcGVydHkgb2YgdGhlIGVycm9yIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcih0OiBzdHJpbmcgfCBFcnJvcik6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICAgICAgdGhpcy50eXBlKE1lc3NhZ2VUeXBlLlJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogU2hvcnRjdXQgZm9yIGNvbnN0cnVjdGluZyBbW0xvZ01lc3NhZ2VCdWlsZGVyXV1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nKCk6IExvZ01lc3NhZ2VCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IExvZ01lc3NhZ2VCdWlsZGVyKCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHVzaW5nIGBpby10c2AgYW5kIGNvbnZlcnRzIHJlcG9ydCBmcm9tIHRoZSBgaW8tdHMtcmVwb3J0ZXJzYFxuICogcmVwb3J0ZXIgdG8gY29sb3JmdWwgZm9ybWF0IGFuZCBqb2lucyBsaW5lcyB3aXRoIGAuMGAgYW5kIGAuMWAgdXNpbmcgYG9yYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlPEEsIE8sIEk+KHZhbGlkYXRvcjogdC5UeXBlPEEsIE8sIEk+LCBkYXRhOiBhbnksIGxvY2F0aW9uOiBzdHJpbmcpOiBhbnkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0b3IuZGVjb2RlKGRhdGEpO1xuICAgIGNvbnN0IHJlcG9ydCA9IHJlcG9ydGVyKHJlc3VsdCk7XG5cbiAgICBpZiAoaXNMZWZ0KHJlc3VsdCkpIHtcbiAgICAgICAgcmVwb3J0LnVuc2hpZnQoJ1RoZSBmb2xsb3dpbmcgZXJyb3JzIG9jY3VyZWQgZHVyaW5nIHZhbGlkYXRpb24gaW4gYCcgKyBsb2NhdGlvbiArICdgOicpO1xuXG4gICAgICAgIGxldCBuZXdSZXBvcnQgPSByZXBvcnQuam9pbignXFxuICAgICAgICAgICAgICcpO1xuICAgICAgICBsZXQgcmVnZXggPSAvRXhwZWN0aW5nIChcXHcrKSBhdCAoXFx3KylcXC4wIGJ1dCBpbnN0ZWFkIGdvdDogKC4rKVxcLlxcbiAqRXhwZWN0aW5nIChcXHcrKSBhdCBcXHcrXFwuMSBidXQgaW5zdGVhZCBnb3Q6ICguKylcXC4vZztcbiAgICAgICAgbmV3UmVwb3J0ID0gbmV3UmVwb3J0LnJlcGxhY2UocmVnZXgsIGNoYWxrYEV4cGVjdGluZyB7Ym9sZC5ibHVlICQxfSBvciB7Ym9sZC5ibHVlICQ0fSBhdCB7Ym9sZC5ncmVlbiAkMn0gYnV0IGluc3RlYWQgZ290IHtib2xkLnJlZCAkM31gKTtcblxuICAgICAgICByZWdleCA9IC9FeHBlY3RpbmcgKFxcdyspIGF0IChcXHcrKSBidXQgaW5zdGVhZCBnb3Q6ICguKylcXC4vZztcbiAgICAgICAgbmV3UmVwb3J0ID0gbmV3UmVwb3J0LnJlcGxhY2UocmVnZXgsIGNoYWxrYEV4cGVjdGluZyB7Ym9sZC5ibHVlICQxfSBhdCB7Ym9sZC5ncmVlbiAkMn0gYnV0IGluc3RlYWQgZ290IHtib2xkLnJlZCAkM31gKTtcblxuICAgICAgICBsb2coKS5lKG5ld1JlcG9ydCkuZnJvbSgn4oCiX+KAoicpLm5vdygpO1xuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQucmlnaHQ7XG4gICAgfVxufVxuIl19

@@ -12,3 +12,4 @@ export default class Stats {

private getEventCount;
private formatDuration;
private print;
}

@@ -1,2 +0,2 @@

"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),moment_1=__importDefault(require("moment")),log_1=require("./log");require("moment-duration-format")(moment_1.default);class Stats{constructor(){this.rx=0,this.tx=0,this.eventCounters={message_new:0,message_reply:0,message_edit:0,message_typing_state:0,message_allow:0,message_deny:0,start:0,service_action:0,no_match:0,handler_error:0},this.previous="",log_1.log().i("Stats initialized").from("stat").now(),setInterval(()=>{this.print()},1e4)}sent(){this.tx+=1}event(t){this.rx+=1,this.eventCounters[t]+=1;["start","service_action","no_match","handler_error"].includes(t)&&(this.rx-=1)}getEventCount(t){return this.eventCounters[t].toString()}print(){const t=chalk_1.default.underline.green(this.rx.toString()),e=chalk_1.default.underline.cyan(this.tx.toString()),n=chalk_1.default.green(this.getEventCount("message_new")),s=chalk_1.default.green(this.getEventCount("message_allow")),a=chalk_1.default.red(this.getEventCount("message_deny")),r=chalk_1.default.green(this.getEventCount("message_edit")),o=chalk_1.default.cyan(this.getEventCount("message_reply")),i=chalk_1.default.green(this.getEventCount("message_typing_state")),l=chalk_1.default.green(this.getEventCount("start")),u=chalk_1.default.green(this.getEventCount("service_action")),_=chalk_1.default.bold.magenta(this.getEventCount("no_match")),h=chalk_1.default.bold.magenta(this.getEventCount("handler_error")),g=moment_1.default.duration(process.uptime(),"seconds").format("y[y] d[d] h[h] m[m] s[s]");let d=`rx:${t} tx:${e} | allow/deny:${s}/${a} typing:${i} new:${n}(start:${l} action:${u}) edit:${r} | reply:${o} | no_match:${_} err:${h}`;d!==this.previous&&(this.previous=d,d=`[${g}] ${d}`,log_1.log().i(d).from("stat").now())}}exports.default=Stats;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dHJhL3N0YXRzLmpzIiwiZXh0cmEvc3RhdHMudHMiXSwibmFtZXMiOlsiX19pbXBvcnREZWZhdWx0IiwidGhpcyIsIm1vZCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjaGFsa18xIiwicmVxdWlyZSIsIm1vbWVudF8xIiwibG9nXzEiLCJTdGF0cyIsIltvYmplY3QgT2JqZWN0XSIsInJ4IiwidHgiLCJldmVudENvdW50ZXJzIiwibWVzc2FnZV9uZXciLCJtZXNzYWdlX3JlcGx5IiwibWVzc2FnZV9lZGl0IiwibWVzc2FnZV90eXBpbmdfc3RhdGUiLCJtZXNzYWdlX2FsbG93IiwibWVzc2FnZV9kZW55Iiwic3RhcnQiLCJzZXJ2aWNlX2FjdGlvbiIsIm5vX21hdGNoIiwiaGFuZGxlcl9lcnJvciIsInByZXZpb3VzIiwibG9nIiwiaSIsImZyb20iLCJub3ciLCJzZXRJbnRlcnZhbCIsInByaW50IiwiZXZlbnROYW1lIiwiaW5jbHVkZXMiLCJ0b1N0cmluZyIsInVuZGVybGluZSIsImdyZWVuIiwiY3lhbiIsIm1uIiwiZ2V0RXZlbnRDb3VudCIsIm1hIiwibWQiLCJyZWQiLCJtZSIsIm1yIiwibXRzIiwic3QiLCJzYSIsIm5tIiwiYm9sZCIsIm1hZ2VudGEiLCJoZSIsInVwIiwiZHVyYXRpb24iLCJwcm9jZXNzIiwidXB0aW1lIiwiZm9ybWF0IiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFDQSxJQUFJQSxnQkFBbUJDLE1BQVFBLEtBQUtELGlCQUFvQixTQUFVRSxHQUM5RCxPQUFRQSxHQUFPQSxFQUFJQyxXQUFjRCxFQUFNLENBQUVFLFFBQVdGLElBRXhERyxPQUFPQyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyxJQ0p0RCxNQUFBQyxRQUFBVCxnQkFBQVUsUUFBQSxVQUNBQyxTQUFBWCxnQkFBQVUsUUFBQSxXQUNBRSxNQUFBRixRQUFBLFNBRUFBLFFBQVEseUJBQVJBLENBQWtDQyxTQUFBUCxTQXNDbEMsTUFBcUJTLE1BdUNqQkMsY0FuQ09iLEtBQUFjLEdBQWEsRUFLYmQsS0FBQWUsR0FBYSxFQU1iZixLQUFBZ0IsY0FBMkMsQ0FDOUNDLFlBQWEsRUFDYkMsY0FBZSxFQUNmQyxhQUFjLEVBQ2RDLHFCQUFzQixFQUN0QkMsY0FBZSxFQUNmQyxhQUFjLEVBRWRDLE1BQU8sRUFDUEMsZUFBZ0IsRUFFaEJDLFNBQVUsRUFDVkMsY0FBZSxHQU9aMUIsS0FBQTJCLFNBQW1CLEdBTXRCaEIsTUFBQWlCLE1BQ0tDLEVBQUUscUJBQ0ZDLEtBQUssUUFDTEMsTUFFTEMsWUFBWSxLQUNSaEMsS0FBS2lDLFNBQ04sS0FNQXBCLE9BQ0hiLEtBQUtlLElBQU0sRUFNUkYsTUFBTXFCLEdBQ1RsQyxLQUFLYyxJQUFNLEVBQ1hkLEtBQUtnQixjQUFja0IsSUFBYyxFQUVWLENBQ25CLFFBQ0EsaUJBQ0EsV0FDQSxpQkFFZUMsU0FBU0QsS0FDeEJsQyxLQUFLYyxJQUFNLEdBT1hELGNBQWNxQixHQUNsQixPQUFPbEMsS0FBS2dCLGNBQWNrQixHQUFXRSxXQU1qQ3ZCLFFBQ0osTUFBTUMsRUFBS04sUUFBQUwsUUFBTWtDLFVBQVVDLE1BQU10QyxLQUFLYyxHQUFHc0IsWUFDbkNyQixFQUFLUCxRQUFBTCxRQUFNa0MsVUFBVUUsS0FBS3ZDLEtBQUtlLEdBQUdxQixZQUVsQ0ksRUFBS2hDLFFBQUFMLFFBQU1tQyxNQUFNdEMsS0FBS3lDLGNBQWMsZ0JBQ3BDQyxFQUFLbEMsUUFBQUwsUUFBTW1DLE1BQU10QyxLQUFLeUMsY0FBYyxrQkFDcENFLEVBQUtuQyxRQUFBTCxRQUFNeUMsSUFBSTVDLEtBQUt5QyxjQUFjLGlCQUNsQ0ksRUFBS3JDLFFBQUFMLFFBQU1tQyxNQUFNdEMsS0FBS3lDLGNBQWMsaUJBQ3BDSyxFQUFLdEMsUUFBQUwsUUFBTW9DLEtBQUt2QyxLQUFLeUMsY0FBYyxrQkFDbkNNLEVBQU12QyxRQUFBTCxRQUFNbUMsTUFBTXRDLEtBQUt5QyxjQUFjLHlCQUVyQ08sRUFBS3hDLFFBQUFMLFFBQU1tQyxNQUFNdEMsS0FBS3lDLGNBQWMsVUFDcENRLEVBQUt6QyxRQUFBTCxRQUFNbUMsTUFBTXRDLEtBQUt5QyxjQUFjLG1CQUVwQ1MsRUFBSzFDLFFBQUFMLFFBQU1nRCxLQUFLQyxRQUFRcEQsS0FBS3lDLGNBQWMsYUFDM0NZLEVBQUs3QyxRQUFBTCxRQUFNZ0QsS0FBS0MsUUFBUXBELEtBQUt5QyxjQUFjLGtCQUUzQ2EsRUFBSzVDLFNBQUFQLFFBQ05vRCxTQUFTQyxRQUFRQyxTQUFVLFdBQzNCQyxPQUFPLDRCQUVaLElBQUlDLFFBQWdCN0MsUUFBU0Msa0JBQW1CMkIsS0FBTUMsWUFBYUksU0FBV1AsV0FBWVEsWUFBYUMsV0FBWUosYUFBY0MsZ0JBQWlCSSxTQUFVRyxJQUV4Sk0sSUFBWTNELEtBQUsyQixXQUdyQjNCLEtBQUsyQixTQUFXZ0MsRUFFaEJBLE1BQWNMLE1BQU9LLElBRXJCaEQsTUFBQWlCLE1BQ0tDLEVBQUU4QixHQUNGN0IsS0FBSyxRQUNMQyxRQXRIYnpCLFFBQUFILFFBQUFTIiwiZmlsZSI6ImV4dHJhL3N0YXRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cnO1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby12YXItcmVxdWlyZXNcbnJlcXVpcmUoJ21vbWVudC1kdXJhdGlvbi1mb3JtYXQnKShtb21lbnQpO1xuXG4vKipcbiAqIFN0YXRzIHN0b3JlcyBhbmQgcHJpbnRzIHN0YXRpc3RpY3MuXG4gKlxuICogVGhlIGJvdCBsb2dzIHN0YXRpc3RpY3MgZWFjaCAqKn4xMHMqKiAoaWYgdGhleSBjaGFuZ2VkKTpcbiAqXG4gKiAgYGBgY29uc29sZVxuICogICBzdGF0IGluZm8gWzEyeSAzNGQgMTJoIDM0bSA1NnNdIHJ4OjMyIHR4OjE2IHwgYWxsb3cvZGVueTo1LzAgdHlwaW5nOjMgbmV3Ojcoc3RhcnQ6MiBhY3Rpb246MSkgZWRpdDoxIHwgcmVwbHk6MTYgfCBub19tYXRjaDowIGVycjowXG4gKiAgYGBgXG4gKlxuICogIyMjIEdlbmVyYWwgc3RhdGlzdGljc1xuICpcbiAqIFN0YXRpc3RpY3MgfCBEZXNjcmlwdGlvblxuICogLS0tIHwgLS0tXG4gKiBgWy4uLl1gIHwgUHJvY2VzcyB1cHRpbWVcbiAqIGByeGAgfCBBbW91bnQgb2YgcmVjZWl2ZWQgZXZlbnRzIGZyb20gQ2FsbGJhY2sgQVBJXG4gKiBgdHhgIHwgQW1vdW50IG9mIHNlbnQgbWVzc2FnZXNcbiAqXG4gKiAjIyMgQ2FsbGJhY2sgQVBJIGV2ZW50IHN0YXRpc3RpY3NcbiAqIFN0YXRpc3RpY3MgfCBEZXNjcmlwdGlvblxuICogLS0tIHwgLS0tXG4gKiBgbmV3YCB8IGBtZXNzYWdlX25ld2AgZXZlbnRzXG4gKiBgYWxsb3dgIHwgYG1lc3NhZ2VfYWxsb3dgIGV2ZW50c1xuICogYGRlbnlgIHwgYG1lc3NhZ2VfZGVueWAgZXZlbnRzXG4gKiBgZWRpdGAgfCBgbWVzc2FnZV9lZGl0YCBldmVudHNcbiAqIGByZXBseWAgfCBgbWVzc2FnZV9yZXBseWAgZXZlbnRzXG4gKiBgdHlwaW5nYCB8IGBtZXNzYWdlX3R5cGluZ19zdGF0ZWAgZXZlbnRzXG4gKlxuICogIyMjIE90aGVyIGV2ZW50IHN0YXRpc3RpY3NcbiAqIFN0YXRpc3RpY3MgfCBEZXNjcmlwdGlvblxuICogLS0tIHwgLS0tXG4gKiBgc3RhcnRgIHwgYHN0YXJ0YCBldmVudHNcbiAqIGBhY3Rpb25gIHwgYHNlcnZpY2VfYWN0aW9uYCBldmVudHNcbiAqIGBub19tYXRjaGAgfCBgbm9fbWF0Y2hgIGV2ZW50c1xuICogYGVycmAgfCBgaGFuZGxlcl9lcnJvcmAgZXZlbnRzXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0cyB7XG4gICAgLyoqXG4gICAgICogQ291bnQgb2YgcmVxdWVzdHMgZnJvbSB0aGUgQ2FsbGJhY2sgQVBJLlxuICAgICAqL1xuICAgIHB1YmxpYyByeDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIENvdW50IG9mIG1lc3NhZ2VzIHNlbnQuXG4gICAgICovXG4gICAgcHVibGljIHR4OiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQ291bnQgb2YgdmFyaW91cyBldmVudHMuXG4gICAgICovXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuICAgIHB1YmxpYyBldmVudENvdW50ZXJzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICAgICAgICBtZXNzYWdlX25ldzogMCxcbiAgICAgICAgbWVzc2FnZV9yZXBseTogMCxcbiAgICAgICAgbWVzc2FnZV9lZGl0OiAwLFxuICAgICAgICBtZXNzYWdlX3R5cGluZ19zdGF0ZTogMCxcbiAgICAgICAgbWVzc2FnZV9hbGxvdzogMCxcbiAgICAgICAgbWVzc2FnZV9kZW55OiAwLFxuXG4gICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICBzZXJ2aWNlX2FjdGlvbjogMCxcblxuICAgICAgICBub19tYXRjaDogMCxcbiAgICAgICAgaGFuZGxlcl9lcnJvcjogMCxcbiAgICB9O1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuXG4gICAgLyoqXG4gICAgICogUHJldmlvdXMgc3RhdHMgbG9nIG1lc3NhZ2UsIHdpdGhvdXQgdGltZVxuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aW91czogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFtbU3RhdHNdXS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGxvZygpXG4gICAgICAgICAgICAuaSgnU3RhdHMgaW5pdGlhbGl6ZWQnKVxuICAgICAgICAgICAgLmZyb20oJ3N0YXQnKVxuICAgICAgICAgICAgLm5vdygpO1xuXG4gICAgICAgIHNldEludGVydmFsKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJpbnQoKTtcbiAgICAgICAgfSwgMTAwMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdXNlZCB0byB0ZWxsIGBTdGF0c2AgdGhhdCBhIG1lc3NhZ2Ugd2FzIHNlbnQuXG4gICAgICovXG4gICAgcHVibGljIHNlbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHggKz0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gdGVsbCBgU3RhdHNgIHRoYXQgYW4gZXZlbnQgd2FzIGVtaXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucnggKz0gMTtcbiAgICAgICAgdGhpcy5ldmVudENvdW50ZXJzW2V2ZW50TmFtZV0gKz0gMTtcblxuICAgICAgICBjb25zdCBpbnRlcm5hbEV2ZW50cyA9IFtcbiAgICAgICAgICAgICdzdGFydCcsXG4gICAgICAgICAgICAnc2VydmljZV9hY3Rpb24nLFxuICAgICAgICAgICAgJ25vX21hdGNoJyxcbiAgICAgICAgICAgICdoYW5kbGVyX2Vycm9yJyxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKGludGVybmFsRXZlbnRzLmluY2x1ZGVzKGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucnggLT0gMTsgLy8gTm90IGZyb20gQ2FsbGJhY2sgQVBJXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGhvdyBtdWNoIGV2ZW50cyBvZiB0aGlzIHR5cGUgd2VyZSBlbWl0dGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RXZlbnRDb3VudChldmVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50Q291bnRlcnNbZXZlbnROYW1lXS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByaW50cyB0aGUgc3RhdGlzdGljcyBpZiB0aGV5IGNoYW5nZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmludCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcnggPSBjaGFsay51bmRlcmxpbmUuZ3JlZW4odGhpcy5yeC50b1N0cmluZygpKTtcbiAgICAgICAgY29uc3QgdHggPSBjaGFsay51bmRlcmxpbmUuY3lhbih0aGlzLnR4LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGNvbnN0IG1uID0gY2hhbGsuZ3JlZW4odGhpcy5nZXRFdmVudENvdW50KCdtZXNzYWdlX25ldycpKTtcbiAgICAgICAgY29uc3QgbWEgPSBjaGFsay5ncmVlbih0aGlzLmdldEV2ZW50Q291bnQoJ21lc3NhZ2VfYWxsb3cnKSk7XG4gICAgICAgIGNvbnN0IG1kID0gY2hhbGsucmVkKHRoaXMuZ2V0RXZlbnRDb3VudCgnbWVzc2FnZV9kZW55JykpO1xuICAgICAgICBjb25zdCBtZSA9IGNoYWxrLmdyZWVuKHRoaXMuZ2V0RXZlbnRDb3VudCgnbWVzc2FnZV9lZGl0JykpO1xuICAgICAgICBjb25zdCBtciA9IGNoYWxrLmN5YW4odGhpcy5nZXRFdmVudENvdW50KCdtZXNzYWdlX3JlcGx5JykpO1xuICAgICAgICBjb25zdCBtdHMgPSBjaGFsay5ncmVlbih0aGlzLmdldEV2ZW50Q291bnQoJ21lc3NhZ2VfdHlwaW5nX3N0YXRlJykpO1xuXG4gICAgICAgIGNvbnN0IHN0ID0gY2hhbGsuZ3JlZW4odGhpcy5nZXRFdmVudENvdW50KCdzdGFydCcpKTtcbiAgICAgICAgY29uc3Qgc2EgPSBjaGFsay5ncmVlbih0aGlzLmdldEV2ZW50Q291bnQoJ3NlcnZpY2VfYWN0aW9uJykpO1xuXG4gICAgICAgIGNvbnN0IG5tID0gY2hhbGsuYm9sZC5tYWdlbnRhKHRoaXMuZ2V0RXZlbnRDb3VudCgnbm9fbWF0Y2gnKSk7XG4gICAgICAgIGNvbnN0IGhlID0gY2hhbGsuYm9sZC5tYWdlbnRhKHRoaXMuZ2V0RXZlbnRDb3VudCgnaGFuZGxlcl9lcnJvcicpKTtcblxuICAgICAgICBjb25zdCB1cCA9IG1vbWVudFxuICAgICAgICAgICAgLmR1cmF0aW9uKHByb2Nlc3MudXB0aW1lKCksICdzZWNvbmRzJylcbiAgICAgICAgICAgIC5mb3JtYXQoJ3lbeV0gZFtkXSBoW2hdIG1bbV0gc1tzXScpO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICBsZXQgbWVzc2FnZSA9IGByeDoke3J4fSB0eDoke3R4fSB8IGFsbG93L2Rlbnk6JHttYX0vJHttZH0gdHlwaW5nOiR7bXRzfSBuZXc6JHttbn0oc3RhcnQ6JHtzdH0gYWN0aW9uOiR7c2F9KSBlZGl0OiR7bWV9IHwgcmVwbHk6JHttcn0gfCBub19tYXRjaDoke25tfSBlcnI6JHtoZX1gO1xuXG4gICAgICAgIGlmIChtZXNzYWdlID09PSB0aGlzLnByZXZpb3VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IG1lc3NhZ2U7XG5cbiAgICAgICAgbWVzc2FnZSA9IGBbJHt1cH1dICR7bWVzc2FnZX1gO1xuXG4gICAgICAgIGxvZygpXG4gICAgICAgICAgICAuaShtZXNzYWdlKVxuICAgICAgICAgICAgLmZyb20oJ3N0YXQnKVxuICAgICAgICAgICAgLm5vdygpO1xuICAgIH1cbn1cbiJdfQ==
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),log_1=require("./log");class Stats{constructor(){this.rx=0,this.tx=0,this.eventCounters={message_new:0,message_reply:0,message_edit:0,message_typing_state:0,message_allow:0,message_deny:0,start:0,service_action:0,no_match:0,handler_error:0},this.previous="",log_1.log().i("Stats initialized").from("stat").now(),setInterval(()=>{this.print()},1e4)}sent(){this.tx+=1}event(t){this.rx+=1,this.eventCounters[t]+=1;["start","service_action","no_match","handler_error"].includes(t)&&(this.rx-=1)}getEventCount(t){return this.eventCounters[t].toString()}formatDuration(t){const e=t%60,n=(t-e)/60%60,s=t=>(t>9?"":"0")+t.toString();return`${s((t-e-60*n)/3600)}:${s(n)}:${s(e)}`}print(){const t=chalk_1.default.underline.green(this.rx.toString()),e=chalk_1.default.underline.cyan(this.tx.toString()),n=chalk_1.default.green(this.getEventCount("message_new")),s=chalk_1.default.green(this.getEventCount("message_allow")),a=chalk_1.default.red(this.getEventCount("message_deny")),r=chalk_1.default.green(this.getEventCount("message_edit")),i=chalk_1.default.cyan(this.getEventCount("message_reply")),o=chalk_1.default.green(this.getEventCount("message_typing_state")),l=chalk_1.default.green(this.getEventCount("start")),u=chalk_1.default.green(this.getEventCount("service_action")),_=chalk_1.default.bold.magenta(this.getEventCount("no_match")),h=chalk_1.default.bold.magenta(this.getEventCount("handler_error")),g=this.formatDuration(process.uptime());let c=`rx:${t} tx:${e} | allow/deny:${s}/${a} typing:${o} new:${n}(start:${l} action:${u}) edit:${r} | reply:${i} | no_match:${_} err:${h}`;c!==this.previous&&(this.previous=c,c=`[${g}] ${c}`,log_1.log().i(c).from("stat").now())}}exports.default=Stats;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dHJhL3N0YXRzLmpzIiwiZXh0cmEvc3RhdHMudHMiXSwibmFtZXMiOlsiX19pbXBvcnREZWZhdWx0IiwidGhpcyIsIm1vZCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjaGFsa18xIiwicmVxdWlyZSIsImxvZ18xIiwiU3RhdHMiLCJbb2JqZWN0IE9iamVjdF0iLCJyeCIsInR4IiwiZXZlbnRDb3VudGVycyIsIm1lc3NhZ2VfbmV3IiwibWVzc2FnZV9yZXBseSIsIm1lc3NhZ2VfZWRpdCIsIm1lc3NhZ2VfdHlwaW5nX3N0YXRlIiwibWVzc2FnZV9hbGxvdyIsIm1lc3NhZ2VfZGVueSIsInN0YXJ0Iiwic2VydmljZV9hY3Rpb24iLCJub19tYXRjaCIsImhhbmRsZXJfZXJyb3IiLCJwcmV2aW91cyIsImxvZyIsImkiLCJmcm9tIiwibm93Iiwic2V0SW50ZXJ2YWwiLCJwcmludCIsImV2ZW50TmFtZSIsImluY2x1ZGVzIiwidG9TdHJpbmciLCJ0b3RhbFNlY29uZHMiLCJzIiwibSIsInBhZCIsIm4iLCJ1bmRlcmxpbmUiLCJncmVlbiIsImN5YW4iLCJtbiIsImdldEV2ZW50Q291bnQiLCJtYSIsIm1kIiwicmVkIiwibWUiLCJtciIsIm10cyIsInN0Iiwic2EiLCJubSIsImJvbGQiLCJtYWdlbnRhIiwiaGUiLCJ1cCIsImZvcm1hdER1cmF0aW9uIiwicHJvY2VzcyIsInVwdGltZSIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0EsSUFBSUEsZ0JBQW1CQyxNQUFRQSxLQUFLRCxpQkFBb0IsU0FBVUUsR0FDOUQsT0FBUUEsR0FBT0EsRUFBSUMsV0FBY0QsRUFBTSxDQUFFRSxRQUFXRixJQUV4REcsT0FBT0MsZUFBZUMsUUFBUyxhQUFjLENBQUVDLE9BQU8sSUNKdEQsTUFBQUMsUUFBQVQsZ0JBQUFVLFFBQUEsVUFDQUMsTUFBQUQsUUFBQSxTQXNDQSxNQUFxQkUsTUF1Q2pCQyxjQW5DT1osS0FBQWEsR0FBSyxFQUtMYixLQUFBYyxHQUFLLEVBTUxkLEtBQUFlLGNBQTJDLENBQzlDQyxZQUFhLEVBQ2JDLGNBQWUsRUFDZkMsYUFBYyxFQUNkQyxxQkFBc0IsRUFDdEJDLGNBQWUsRUFDZkMsYUFBYyxFQUVkQyxNQUFPLEVBQ1BDLGVBQWdCLEVBRWhCQyxTQUFVLEVBQ1ZDLGNBQWUsR0FPWnpCLEtBQUEwQixTQUFXLEdBTWRoQixNQUFBaUIsTUFDS0MsRUFBRSxxQkFDRkMsS0FBSyxRQUNMQyxNQUVMQyxZQUFZLEtBQ1IvQixLQUFLZ0MsU0FDTixLQU1BcEIsT0FDSFosS0FBS2MsSUFBTSxFQU1SRixNQUFNcUIsR0FDVGpDLEtBQUthLElBQU0sRUFDWGIsS0FBS2UsY0FBY2tCLElBQWMsRUFFVixDQUNuQixRQUNBLGlCQUNBLFdBQ0EsaUJBRWVDLFNBQVNELEtBQ3hCakMsS0FBS2EsSUFBTSxHQU9YRCxjQUFjcUIsR0FDbEIsT0FBT2pDLEtBQUtlLGNBQWNrQixHQUFXRSxXQU1qQ3ZCLGVBQWV3QixHQUNuQixNQUFNQyxFQUFJRCxFQUFlLEdBQ25CRSxHQUFNRixFQUFlQyxHQUFLLEdBQU0sR0FHaENFLEVBQU9DLElBQXdCQSxFQUFJLEVBQUksR0FBSyxLQUFPQSxFQUFFTCxXQUUzRCxNQUFPLEdBQUdJLEdBSkNILEVBQWVDLEVBQVMsR0FBSkMsR0FBVyxTQUl0QkMsRUFBSUQsTUFBTUMsRUFBSUYsS0FNOUJ6QixRQUNKLE1BQU1DLEVBQUtMLFFBQUFMLFFBQU1zQyxVQUFVQyxNQUFNMUMsS0FBS2EsR0FBR3NCLFlBQ25DckIsRUFBS04sUUFBQUwsUUFBTXNDLFVBQVVFLEtBQUszQyxLQUFLYyxHQUFHcUIsWUFFbENTLEVBQUtwQyxRQUFBTCxRQUFNdUMsTUFBTTFDLEtBQUs2QyxjQUFjLGdCQUNwQ0MsRUFBS3RDLFFBQUFMLFFBQU11QyxNQUFNMUMsS0FBSzZDLGNBQWMsa0JBQ3BDRSxFQUFLdkMsUUFBQUwsUUFBTTZDLElBQUloRCxLQUFLNkMsY0FBYyxpQkFDbENJLEVBQUt6QyxRQUFBTCxRQUFNdUMsTUFBTTFDLEtBQUs2QyxjQUFjLGlCQUNwQ0ssRUFBSzFDLFFBQUFMLFFBQU13QyxLQUFLM0MsS0FBSzZDLGNBQWMsa0JBQ25DTSxFQUFNM0MsUUFBQUwsUUFBTXVDLE1BQU0xQyxLQUFLNkMsY0FBYyx5QkFFckNPLEVBQUs1QyxRQUFBTCxRQUFNdUMsTUFBTTFDLEtBQUs2QyxjQUFjLFVBQ3BDUSxFQUFLN0MsUUFBQUwsUUFBTXVDLE1BQU0xQyxLQUFLNkMsY0FBYyxtQkFFcENTLEVBQUs5QyxRQUFBTCxRQUFNb0QsS0FBS0MsUUFBUXhELEtBQUs2QyxjQUFjLGFBQzNDWSxFQUFLakQsUUFBQUwsUUFBTW9ELEtBQUtDLFFBQVF4RCxLQUFLNkMsY0FBYyxrQkFFM0NhLEVBQUsxRCxLQUFLMkQsZUFBZUMsUUFBUUMsVUFFdkMsSUFBSUMsRUFBVSxNQUFNakQsUUFBU0Msa0JBQW1CZ0MsS0FBTUMsWUFBYUksU0FBV1AsV0FBWVEsWUFBYUMsV0FBWUosYUFBY0MsZ0JBQWlCSSxTQUFVRyxJQUV4SkssSUFBWTlELEtBQUswQixXQUdyQjFCLEtBQUswQixTQUFXb0MsRUFFaEJBLEVBQVUsSUFBSUosTUFBT0ksSUFFckJwRCxNQUFBaUIsTUFDS0MsRUFBRWtDLEdBQ0ZqQyxLQUFLLFFBQ0xDLFFBaklieEIsUUFBQUgsUUFBQVEiLCJmaWxlIjoiZXh0cmEvc3RhdHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZyc7XG5cbi8qKlxuICogU3RhdHMgc3RvcmVzIGFuZCBwcmludHMgc3RhdGlzdGljcy5cbiAqXG4gKiBUaGUgYm90IGxvZ3Mgc3RhdGlzdGljcyBlYWNoICoqfjEwcyoqIChpZiB0aGV5IGNoYW5nZWQpOlxuICpcbiAqICBgYGBjb25zb2xlXG4gKiAgIHN0YXQgaW5mbyBbMTI6MzQ6NTZdIHJ4OjMyIHR4OjE2IHwgYWxsb3cvZGVueTo1LzAgdHlwaW5nOjMgbmV3Ojcoc3RhcnQ6MiBhY3Rpb246MSkgZWRpdDoxIHwgcmVwbHk6MTYgfCBub19tYXRjaDowIGVycjowXG4gKiAgYGBgXG4gKlxuICogIyMjIEdlbmVyYWwgc3RhdGlzdGljc1xuICpcbiAqIFN0YXRpc3RpY3MgfCBEZXNjcmlwdGlvblxuICogLS0tIHwgLS0tXG4gKiBgWy4uLl1gIHwgUHJvY2VzcyB1cHRpbWUgKGBoaDptbTpzc2ApXG4gKiBgcnhgIHwgQW1vdW50IG9mIHJlY2VpdmVkIGV2ZW50cyBmcm9tIENhbGxiYWNrIEFQSVxuICogYHR4YCB8IEFtb3VudCBvZiBzZW50IG1lc3NhZ2VzXG4gKlxuICogIyMjIENhbGxiYWNrIEFQSSBldmVudCBzdGF0aXN0aWNzXG4gKiBTdGF0aXN0aWNzIHwgRGVzY3JpcHRpb25cbiAqIC0tLSB8IC0tLVxuICogYG5ld2AgfCBgbWVzc2FnZV9uZXdgIGV2ZW50c1xuICogYGFsbG93YCB8IGBtZXNzYWdlX2FsbG93YCBldmVudHNcbiAqIGBkZW55YCB8IGBtZXNzYWdlX2RlbnlgIGV2ZW50c1xuICogYGVkaXRgIHwgYG1lc3NhZ2VfZWRpdGAgZXZlbnRzXG4gKiBgcmVwbHlgIHwgYG1lc3NhZ2VfcmVwbHlgIGV2ZW50c1xuICogYHR5cGluZ2AgfCBgbWVzc2FnZV90eXBpbmdfc3RhdGVgIGV2ZW50c1xuICpcbiAqICMjIyBPdGhlciBldmVudCBzdGF0aXN0aWNzXG4gKiBTdGF0aXN0aWNzIHwgRGVzY3JpcHRpb25cbiAqIC0tLSB8IC0tLVxuICogYHN0YXJ0YCB8IGBzdGFydGAgZXZlbnRzXG4gKiBgYWN0aW9uYCB8IGBzZXJ2aWNlX2FjdGlvbmAgZXZlbnRzXG4gKiBgbm9fbWF0Y2hgIHwgYG5vX21hdGNoYCBldmVudHNcbiAqIGBlcnJgIHwgYGhhbmRsZXJfZXJyb3JgIGV2ZW50c1xuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdHMge1xuICAgIC8qKlxuICAgICAqIENvdW50IG9mIHJlcXVlc3RzIGZyb20gdGhlIENhbGxiYWNrIEFQSS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcnggPSAwO1xuXG4gICAgLyoqXG4gICAgICogQ291bnQgb2YgbWVzc2FnZXMgc2VudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdHggPSAwO1xuXG4gICAgLyoqXG4gICAgICogQ291bnQgb2YgdmFyaW91cyBldmVudHMuXG4gICAgICovXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuICAgIHB1YmxpYyBldmVudENvdW50ZXJzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICAgICAgICBtZXNzYWdlX25ldzogMCxcbiAgICAgICAgbWVzc2FnZV9yZXBseTogMCxcbiAgICAgICAgbWVzc2FnZV9lZGl0OiAwLFxuICAgICAgICBtZXNzYWdlX3R5cGluZ19zdGF0ZTogMCxcbiAgICAgICAgbWVzc2FnZV9hbGxvdzogMCxcbiAgICAgICAgbWVzc2FnZV9kZW55OiAwLFxuXG4gICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICBzZXJ2aWNlX2FjdGlvbjogMCxcblxuICAgICAgICBub19tYXRjaDogMCxcbiAgICAgICAgaGFuZGxlcl9lcnJvcjogMCxcbiAgICB9O1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuXG4gICAgLyoqXG4gICAgICogUHJldmlvdXMgc3RhdHMgbG9nIG1lc3NhZ2UsIHdpdGhvdXQgdGltZVxuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aW91cyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBbW1N0YXRzXV0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBsb2coKVxuICAgICAgICAgICAgLmkoJ1N0YXRzIGluaXRpYWxpemVkJylcbiAgICAgICAgICAgIC5mcm9tKCdzdGF0JylcbiAgICAgICAgICAgIC5ub3coKTtcblxuICAgICAgICBzZXRJbnRlcnZhbCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICB0aGlzLnByaW50KCk7XG4gICAgICAgIH0sIDEwMDAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gdGVsbCBgU3RhdHNgIHRoYXQgYSBtZXNzYWdlIHdhcyBzZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnR4ICs9IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIHRlbGwgYFN0YXRzYCB0aGF0IGFuIGV2ZW50IHdhcyBlbWl0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBldmVudChldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJ4ICs9IDE7XG4gICAgICAgIHRoaXMuZXZlbnRDb3VudGVyc1tldmVudE5hbWVdICs9IDE7XG5cbiAgICAgICAgY29uc3QgaW50ZXJuYWxFdmVudHMgPSBbXG4gICAgICAgICAgICAnc3RhcnQnLFxuICAgICAgICAgICAgJ3NlcnZpY2VfYWN0aW9uJyxcbiAgICAgICAgICAgICdub19tYXRjaCcsXG4gICAgICAgICAgICAnaGFuZGxlcl9lcnJvcicsXG4gICAgICAgIF07XG4gICAgICAgIGlmIChpbnRlcm5hbEV2ZW50cy5pbmNsdWRlcyhldmVudE5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnJ4IC09IDE7IC8vIE5vdCBmcm9tIENhbGxiYWNrIEFQSVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBob3cgbXVjaCBldmVudHMgb2YgdGhpcyB0eXBlIHdlcmUgZW1pdHRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEV2ZW50Q291bnQoZXZlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudENvdW50ZXJzW2V2ZW50TmFtZV0udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIHNlY29uZHMgaW50byBgaGg6bW06c3NgIChgaGhgIG1heSB1c2UgbW9yZSB0aGFuIHR3byBkaWdpdHMgZm9yIHZlcnkgbGFyZ2UgZHVyYXRpb25zKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZvcm1hdER1cmF0aW9uKHRvdGFsU2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgICAgICBjb25zdCBtID0gKCh0b3RhbFNlY29uZHMgLSBzKSAvIDYwKSAlIDYwO1xuICAgICAgICBjb25zdCBoID0gKHRvdGFsU2Vjb25kcyAtIHMgLSAobSAqIDYwKSkgLyAzNjAwO1xuXG4gICAgICAgIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpOiBzdHJpbmcgPT4gKChuID4gOSA/ICcnIDogJzAnKSArIG4udG9TdHJpbmcoKSk7XG5cbiAgICAgICAgcmV0dXJuIGAke3BhZChoKX06JHtwYWQobSl9OiR7cGFkKHMpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJpbnRzIHRoZSBzdGF0aXN0aWNzIGlmIHRoZXkgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHByaW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByeCA9IGNoYWxrLnVuZGVybGluZS5ncmVlbih0aGlzLnJ4LnRvU3RyaW5nKCkpO1xuICAgICAgICBjb25zdCB0eCA9IGNoYWxrLnVuZGVybGluZS5jeWFuKHRoaXMudHgudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgY29uc3QgbW4gPSBjaGFsay5ncmVlbih0aGlzLmdldEV2ZW50Q291bnQoJ21lc3NhZ2VfbmV3JykpO1xuICAgICAgICBjb25zdCBtYSA9IGNoYWxrLmdyZWVuKHRoaXMuZ2V0RXZlbnRDb3VudCgnbWVzc2FnZV9hbGxvdycpKTtcbiAgICAgICAgY29uc3QgbWQgPSBjaGFsay5yZWQodGhpcy5nZXRFdmVudENvdW50KCdtZXNzYWdlX2RlbnknKSk7XG4gICAgICAgIGNvbnN0IG1lID0gY2hhbGsuZ3JlZW4odGhpcy5nZXRFdmVudENvdW50KCdtZXNzYWdlX2VkaXQnKSk7XG4gICAgICAgIGNvbnN0IG1yID0gY2hhbGsuY3lhbih0aGlzLmdldEV2ZW50Q291bnQoJ21lc3NhZ2VfcmVwbHknKSk7XG4gICAgICAgIGNvbnN0IG10cyA9IGNoYWxrLmdyZWVuKHRoaXMuZ2V0RXZlbnRDb3VudCgnbWVzc2FnZV90eXBpbmdfc3RhdGUnKSk7XG5cbiAgICAgICAgY29uc3Qgc3QgPSBjaGFsay5ncmVlbih0aGlzLmdldEV2ZW50Q291bnQoJ3N0YXJ0JykpO1xuICAgICAgICBjb25zdCBzYSA9IGNoYWxrLmdyZWVuKHRoaXMuZ2V0RXZlbnRDb3VudCgnc2VydmljZV9hY3Rpb24nKSk7XG5cbiAgICAgICAgY29uc3Qgbm0gPSBjaGFsay5ib2xkLm1hZ2VudGEodGhpcy5nZXRFdmVudENvdW50KCdub19tYXRjaCcpKTtcbiAgICAgICAgY29uc3QgaGUgPSBjaGFsay5ib2xkLm1hZ2VudGEodGhpcy5nZXRFdmVudENvdW50KCdoYW5kbGVyX2Vycm9yJykpO1xuXG4gICAgICAgIGNvbnN0IHVwID0gdGhpcy5mb3JtYXREdXJhdGlvbihwcm9jZXNzLnVwdGltZSgpKTtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBgcng6JHtyeH0gdHg6JHt0eH0gfCBhbGxvdy9kZW55OiR7bWF9LyR7bWR9IHR5cGluZzoke210c30gbmV3OiR7bW59KHN0YXJ0OiR7c3R9IGFjdGlvbjoke3NhfSkgZWRpdDoke21lfSB8IHJlcGx5OiR7bXJ9IHwgbm9fbWF0Y2g6JHtubX0gZXJyOiR7aGV9YDtcblxuICAgICAgICBpZiAobWVzc2FnZSA9PT0gdGhpcy5wcmV2aW91cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBtZXNzYWdlO1xuXG4gICAgICAgIG1lc3NhZ2UgPSBgWyR7dXB9XSAke21lc3NhZ2V9YDtcblxuICAgICAgICBsb2coKVxuICAgICAgICAgICAgLmkobWVzc2FnZSlcbiAgICAgICAgICAgIC5mcm9tKCdzdGF0JylcbiAgICAgICAgICAgIC5ub3coKTtcbiAgICB9XG59XG4iXX0=

@@ -1,2 +0,2 @@

"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},__importStar=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),bot_1=__importDefault(require("./bot")),core_1=__importDefault(require("./core")),api_1=__importDefault(require("./api/api")),context_1=__importDefault(require("./api/context")),kbd=__importStar(require("./api/keyboard")),log=__importStar(require("./extra/log")),stats_1=__importDefault(require("./extra/stats")),t=__importStar(require("io-ts"));function bot(e){let r=log.validate(t.type({vkToken:t.string,confirmationToken:t.string,groupId:t.union([t.string,t.number]),secret:t.string,port:t.union([t.string,t.number]),cmdPrefix:t.string}),e,"bot");const{vkToken:o,confirmationToken:i,groupId:n,secret:a,port:u,cmdPrefix:s}=r,l=new stats_1.default,_=new api_1.default(o,l),c=new core_1.default(_,l,s,n.toString()),p="number"==typeof u?u:parseInt(u);return{bot:new bot_1.default(c,n.toString(),i.toString(),a.toString(),p),core:c}}process.on("uncaughtException",t=>{const e=chalk_1.default.inverse("• An error occured. The messages below may contain useful information about the problem.\n• If you think this is an issue with 'vk-chat-bot' itself, please report it at <https://github.com/u32i64/vk-chat-bot/issues>.");console.log(`\n\n${e}\n\n`),console.log(t),process.exit(1)});const vk={bot:bot,Bot:bot_1.default,Core:core_1.default,API:api_1.default,Context:context_1.default,kbd:kbd,log:log,Stats:stats_1.default};exports.default=vk,module.exports=vk;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiLCJtYWluLnRzIl0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsInRoaXMiLCJtb2QiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9faW1wb3J0U3RhciIsInJlc3VsdCIsImsiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNoYWxrXzEiLCJyZXF1aXJlIiwiYm90XzEiLCJjb3JlXzEiLCJhcGlfMSIsImNvbnRleHRfMSIsImtiZCIsImxvZyIsInN0YXRzXzEiLCJ0IiwiYm90Iiwib3B0aW9ucyIsInZhbGlkYXRlIiwidHlwZSIsInZrVG9rZW4iLCJzdHJpbmciLCJjb25maXJtYXRpb25Ub2tlbiIsImdyb3VwSWQiLCJ1bmlvbiIsIm51bWJlciIsInNlY3JldCIsInBvcnQiLCJjbWRQcmVmaXgiLCJzdGF0cyIsImFwaSIsImNvcmUiLCJ0b1N0cmluZyIsIl9wb3J0IiwicGFyc2VJbnQiLCJwcm9jZXNzIiwib24iLCJlcnIiLCJub3RlIiwiaW52ZXJzZSIsImNvbnNvbGUiLCJleGl0IiwidmsiLCJCb3QiLCJDb3JlIiwiQVBJIiwiQ29udGV4dCIsIlN0YXRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFcERHLGFBQWdCSixNQUFRQSxLQUFLSSxjQUFpQixTQUFVSCxHQUN4RCxHQUFJQSxHQUFPQSxFQUFJQyxXQUFZLE9BQU9ELEVBQ2xDLElBQUlJLEVBQVMsR0FDYixHQUFXLE1BQVBKLEVBQWEsSUFBSyxJQUFJSyxLQUFLTCxFQUFTTSxPQUFPQyxlQUFlQyxLQUFLUixFQUFLSyxLQUFJRCxFQUFPQyxHQUFLTCxFQUFJSyxJQUU1RixPQURBRCxFQUFnQixRQUFJSixFQUNiSSxHQUVYRSxPQUFPRyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyxJQ1h0RCxNQUFBQyxRQUFBZCxnQkFBQWUsUUFBQSxVQUNBQyxNQUFBaEIsZ0JBQUFlLFFBQUEsVUFDQUUsT0FBQWpCLGdCQUFBZSxRQUFBLFdBRUFHLE1BQUFsQixnQkFBQWUsUUFBQSxjQUNBSSxVQUFBbkIsZ0JBQUFlLFFBQUEsa0JBQ0FLLElBQUFmLGFBQUFVLFFBQUEsbUJBRUFNLElBQUFoQixhQUFBVSxRQUFBLGdCQUNBTyxRQUFBdEIsZ0JBQUFlLFFBQUEsa0JBRUFRLEVBQUFsQixhQUFBVSxRQUFBLFVBZ0NBLFNBQVNTLElBQUlDLEdBU1QsSUFBSW5CLEVBQVNlLElBQUlLLFNBQVNILEVBQUVJLEtBQUssQ0FDN0JDLFFBQVNMLEVBQUVNLE9BQ1hDLGtCQUFtQlAsRUFBRU0sT0FDckJFLFFBQVNSLEVBQUVTLE1BQU0sQ0FBQ1QsRUFBRU0sT0FBUU4sRUFBRVUsU0FDOUJDLE9BQVFYLEVBQUVNLE9BQ1ZNLEtBQU1aLEVBQUVTLE1BQU0sQ0FBQ1QsRUFBRU0sT0FBUU4sRUFBRVUsU0FDM0JHLFVBQVdiLEVBQUVNLFNBQ2JKLEVBQVMsT0FFYixNQUFNRyxRQUNGQSxFQUFPRSxrQkFDUEEsRUFBaUJDLFFBQ2pCQSxFQUFPRyxPQUNQQSxFQUFNQyxLQUNOQSxFQUFJQyxVQUNKQSxHQUNBOUIsRUFFRStCLEVBQVEsSUFBSWYsUUFBQWxCLFFBQ1prQyxFQUFNLElBQUlwQixNQUFBZCxRQUFJd0IsRUFBU1MsR0FDdkJFLEVBQU8sSUFBSXRCLE9BQUFiLFFBQUtrQyxFQUFLRCxFQUFPRCxFQUFXTCxFQUFRUyxZQUMvQ0MsRUFBd0IsaUJBQVROLEVBQW9CQSxFQUFPTyxTQUFTUCxHQUV6RCxNQUFPLENBQ0hYLElBQUssSUFBSVIsTUFBQVosUUFDTG1DLEVBQ0FSLEVBQVFTLFdBQ1JWLEVBQWtCVSxXQUNsQk4sRUFBT00sV0FDUEMsR0FFSkYsS0FBQUEsR0F0RVJJLFFBQVFDLEdBQUcsb0JBQXNCQyxJQUM3QixNQUFNQyxFQUFPaEMsUUFBQVYsUUFBTTJDLFFBQVEsNE5BSTNCQyxRQUFRM0IsV0FBV3lCLFNBQ25CRSxRQUFRM0IsSUFBSXdCLEdBR1pGLFFBQVFNLEtBQUssS0FvRWpCLE1BQU1DLEdBQUssQ0FFUDFCLElBQUFBLElBR0EyQixJQUFBbkMsTUFBQVosUUFDQWdELEtBQUFuQyxPQUFBYixRQUdBaUQsSUFBQW5DLE1BQUFkLFFBQ0FrRCxRQUFBbkMsVUFBQWYsUUFDQWdCLElBQUFBLElBR0FDLElBQUFBLElBQ0FrQyxNQUFBakMsUUFBQWxCLFNBR0pRLFFBQUFSLFFBQWU4QyxHQUNmTSxPQUFPNUMsUUFBVXNDIiwiZmlsZSI6Im1haW4uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgQm90IGZyb20gJy4vYm90JztcbmltcG9ydCBDb3JlIGZyb20gJy4vY29yZSc7XG5cbmltcG9ydCBBUEkgZnJvbSAnLi9hcGkvYXBpJztcbmltcG9ydCBDb250ZXh0IGZyb20gJy4vYXBpL2NvbnRleHQnO1xuaW1wb3J0ICogYXMga2JkIGZyb20gJy4vYXBpL2tleWJvYXJkJztcblxuaW1wb3J0ICogYXMgbG9nIGZyb20gJy4vZXh0cmEvbG9nJztcbmltcG9ydCBTdGF0cyBmcm9tICcuL2V4dHJhL3N0YXRzJztcblxuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cydcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKTogdm9pZCA9PiB7XG4gICAgY29uc3Qgbm90ZSA9IGNoYWxrLmludmVyc2UoYOKAoiBBbiBlcnJvciBvY2N1cmVkLiBUaGUgbWVzc2FnZXMgYmVsb3cgbWF5IGNvbnRhaW4gdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ibGVtLlxu4oCiIElmIHlvdSB0aGluayB0aGlzIGlzIGFuIGlzc3VlIHdpdGggJ3ZrLWNoYXQtYm90JyBpdHNlbGYsIHBsZWFzZSByZXBvcnQgaXQgYXQgPGh0dHBzOi8vZ2l0aHViLmNvbS91MzJpNjQvdmstY2hhdC1ib3QvaXNzdWVzPi5gKTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICBjb25zb2xlLmxvZyhgXFxuXFxuJHtub3RlfVxcblxcbmApO1xuICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGFsbCB0aGUgbmVjZXNzYXJ5IG9iamVjdHMgZm9yIHRoZSBib3QgYW5kIHRoZSBbW0JvdF1dIG9iamVjdCBpdHNlbGYuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogdmFyIHBhcmFtcyA9IHtcbiAqICAgIHZrVG9rZW46ICd5b3VyX3ZrX2FjY2Vzc190b2tlbicsXG4gKiAgICBjb25maXJtYXRpb25Ub2tlbjogJ2YxMjM0NTYnLFxuICogICAgZ3JvdXBJZDogMTIzNDU2NyxcbiAqICAgIHNlY3JldDogJ3MzcjEwdXMxeV9zM2NyM3RfcGhyNHMzJyxcbiAqICAgIHBvcnQ6IDEyMzQ1LFxuICpcbiAqICAgIGNtZFByZWZpeDogJy8nXG4gKiAgfTtcbiAqXG4gKiB2YXIge2JvdCwgY29yZX0gPSB2ay5ib3QocGFyYW1zKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBib3Qob3B0aW9uczoge1xuICAgIHZrVG9rZW46IHN0cmluZztcbiAgICBjb25maXJtYXRpb25Ub2tlbjogc3RyaW5nO1xuICAgIGdyb3VwSWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICBzZWNyZXQ6IHN0cmluZztcbiAgICBwb3J0OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgY21kUHJlZml4OiBzdHJpbmc7XG59KTogeyBib3Q6IEJvdDsgY29yZTogQ29yZSB9IHtcblxuICAgIGxldCByZXN1bHQgPSBsb2cudmFsaWRhdGUodC50eXBlKHtcbiAgICAgICAgdmtUb2tlbjogdC5zdHJpbmcsXG4gICAgICAgIGNvbmZpcm1hdGlvblRva2VuOiB0LnN0cmluZyxcbiAgICAgICAgZ3JvdXBJZDogdC51bmlvbihbdC5zdHJpbmcsIHQubnVtYmVyXSksXG4gICAgICAgIHNlY3JldDogdC5zdHJpbmcsXG4gICAgICAgIHBvcnQ6IHQudW5pb24oW3Quc3RyaW5nLCB0Lm51bWJlcl0pLFxuICAgICAgICBjbWRQcmVmaXg6IHQuc3RyaW5nLFxuICAgIH0pLCBvcHRpb25zLCAnYm90Jyk7XG5cbiAgICBjb25zdCB7XG4gICAgICAgIHZrVG9rZW4sXG4gICAgICAgIGNvbmZpcm1hdGlvblRva2VuLFxuICAgICAgICBncm91cElkLFxuICAgICAgICBzZWNyZXQsXG4gICAgICAgIHBvcnQsXG4gICAgICAgIGNtZFByZWZpeFxuICAgIH0gPSByZXN1bHQ7XG5cbiAgICBjb25zdCBzdGF0cyA9IG5ldyBTdGF0cygpO1xuICAgIGNvbnN0IGFwaSA9IG5ldyBBUEkodmtUb2tlbiwgc3RhdHMpO1xuICAgIGNvbnN0IGNvcmUgPSBuZXcgQ29yZShhcGksIHN0YXRzLCBjbWRQcmVmaXgsIGdyb3VwSWQudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgX3BvcnQgPSB0eXBlb2YgcG9ydCA9PT0gJ251bWJlcicgPyBwb3J0IDogcGFyc2VJbnQocG9ydCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBib3Q6IG5ldyBCb3QoXG4gICAgICAgICAgICBjb3JlLFxuICAgICAgICAgICAgZ3JvdXBJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgY29uZmlybWF0aW9uVG9rZW4udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNlY3JldC50b1N0cmluZygpLFxuICAgICAgICAgICAgX3BvcnQsXG4gICAgICAgICksXG4gICAgICAgIGNvcmUsXG4gICAgfTtcbn1cblxuLyoqXG4gKiBUaGUgZXhwb3J0ZWQgb2JqZWN0LiBVc2UgaXQgdG8gZ2V0IHdoYXQgeW91IG5lZWQuXG4gKi9cbmNvbnN0IHZrID0ge1xuICAgIC8vIFF1aWNrIGNyZWF0aW9uIGZ1bmN0aW9uXG4gICAgYm90LFxuXG4gICAgLy8gc3JjL1xuICAgIEJvdCxcbiAgICBDb3JlLFxuXG4gICAgLy8gc3JjL2FwaS9cbiAgICBBUEksXG4gICAgQ29udGV4dCxcbiAgICBrYmQsXG5cbiAgICAvLyBzcmMvZXh0cmEvXG4gICAgbG9nLFxuICAgIFN0YXRzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdms7IC8vIGZvciAuZC50cyBnZW5lcmF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9IHZrOyAvLyBmb3IgcGFja2FnZSB0byB3b3JrIGNvcnJlY3RseVxuIl19
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},__importStar=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(exports,"__esModule",{value:!0});const chalk_1=__importDefault(require("chalk")),bot_1=__importDefault(require("./bot")),core_1=__importDefault(require("./core")),api_1=__importDefault(require("./api/api")),context_1=__importDefault(require("./api/context")),kbd=__importStar(require("./api/keyboard")),log=__importStar(require("./extra/log")),stats_1=__importDefault(require("./extra/stats")),t=__importStar(require("io-ts"));function bot(e){const r=log.validate(t.type({vkToken:t.string,confirmationToken:t.string,groupId:t.union([t.string,t.number]),secret:t.string,port:t.union([t.string,t.number]),cmdPrefix:t.string}),e,"bot"),{vkToken:o,confirmationToken:i,groupId:n,secret:a,port:u,cmdPrefix:s}=r,l=new stats_1.default,_=new api_1.default(o,l),c=new core_1.default(_,l,s,n.toString()),p="number"==typeof u?u:parseInt(u);return{bot:new bot_1.default(c,n.toString(),i.toString(),a.toString(),p),core:c}}process.on("uncaughtException",t=>{const e=chalk_1.default.inverse("• An error occured. The messages below may contain useful information about the problem.\n• If you think this is an issue with 'vk-chat-bot' itself, please report it at <https://github.com/u32i64/vk-chat-bot/issues>.");console.log(`\n\n${e}\n\n`),console.log(t),process.exit(1)});const vk={bot:bot,Bot:bot_1.default,Core:core_1.default,API:api_1.default,Context:context_1.default,kbd:kbd,log:log,Stats:stats_1.default};exports.default=vk,module.exports=vk;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiLCJtYWluLnRzIl0sIm5hbWVzIjpbIl9faW1wb3J0RGVmYXVsdCIsInRoaXMiLCJtb2QiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9faW1wb3J0U3RhciIsInJlc3VsdCIsImsiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImNoYWxrXzEiLCJyZXF1aXJlIiwiYm90XzEiLCJjb3JlXzEiLCJhcGlfMSIsImNvbnRleHRfMSIsImtiZCIsImxvZyIsInN0YXRzXzEiLCJ0IiwiYm90Iiwib3B0aW9ucyIsInZhbGlkYXRlIiwidHlwZSIsInZrVG9rZW4iLCJzdHJpbmciLCJjb25maXJtYXRpb25Ub2tlbiIsImdyb3VwSWQiLCJ1bmlvbiIsIm51bWJlciIsInNlY3JldCIsInBvcnQiLCJjbWRQcmVmaXgiLCJzdGF0cyIsImFwaSIsImNvcmUiLCJ0b1N0cmluZyIsIl9wb3J0IiwicGFyc2VJbnQiLCJwcm9jZXNzIiwib24iLCJlcnIiLCJub3RlIiwiaW52ZXJzZSIsImNvbnNvbGUiLCJleGl0IiwidmsiLCJCb3QiLCJDb3JlIiwiQVBJIiwiQ29udGV4dCIsIlN0YXRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLGdCQUFtQkMsTUFBUUEsS0FBS0QsaUJBQW9CLFNBQVVFLEdBQzlELE9BQVFBLEdBQU9BLEVBQUlDLFdBQWNELEVBQU0sQ0FBRUUsUUFBV0YsSUFFcERHLGFBQWdCSixNQUFRQSxLQUFLSSxjQUFpQixTQUFVSCxHQUN4RCxHQUFJQSxHQUFPQSxFQUFJQyxXQUFZLE9BQU9ELEVBQ2xDLElBQUlJLEVBQVMsR0FDYixHQUFXLE1BQVBKLEVBQWEsSUFBSyxJQUFJSyxLQUFLTCxFQUFTTSxPQUFPQyxlQUFlQyxLQUFLUixFQUFLSyxLQUFJRCxFQUFPQyxHQUFLTCxFQUFJSyxJQUU1RixPQURBRCxFQUFnQixRQUFJSixFQUNiSSxHQUVYRSxPQUFPRyxlQUFlQyxRQUFTLGFBQWMsQ0FBRUMsT0FBTyxJQ1h0RCxNQUFBQyxRQUFBZCxnQkFBQWUsUUFBQSxVQUNBQyxNQUFBaEIsZ0JBQUFlLFFBQUEsVUFDQUUsT0FBQWpCLGdCQUFBZSxRQUFBLFdBRUFHLE1BQUFsQixnQkFBQWUsUUFBQSxjQUNBSSxVQUFBbkIsZ0JBQUFlLFFBQUEsa0JBQ0FLLElBQUFmLGFBQUFVLFFBQUEsbUJBRUFNLElBQUFoQixhQUFBVSxRQUFBLGdCQUNBTyxRQUFBdEIsZ0JBQUFlLFFBQUEsa0JBRUFRLEVBQUFsQixhQUFBVSxRQUFBLFVBZ0NBLFNBQVNTLElBQUlDLEdBU1QsTUFBTW5CLEVBQVNlLElBQUlLLFNBQVNILEVBQUVJLEtBQUssQ0FDL0JDLFFBQVNMLEVBQUVNLE9BQ1hDLGtCQUFtQlAsRUFBRU0sT0FDckJFLFFBQVNSLEVBQUVTLE1BQU0sQ0FBQ1QsRUFBRU0sT0FBUU4sRUFBRVUsU0FDOUJDLE9BQVFYLEVBQUVNLE9BQ1ZNLEtBQU1aLEVBQUVTLE1BQU0sQ0FBQ1QsRUFBRU0sT0FBUU4sRUFBRVUsU0FDM0JHLFVBQVdiLEVBQUVNLFNBQ2JKLEVBQVMsUUFFUEcsUUFDRkEsRUFBT0Usa0JBQ1BBLEVBQWlCQyxRQUNqQkEsRUFBT0csT0FDUEEsRUFBTUMsS0FDTkEsRUFBSUMsVUFDSkEsR0FDQTlCLEVBRUUrQixFQUFRLElBQUlmLFFBQUFsQixRQUNaa0MsRUFBTSxJQUFJcEIsTUFBQWQsUUFBSXdCLEVBQVNTLEdBQ3ZCRSxFQUFPLElBQUl0QixPQUFBYixRQUFLa0MsRUFBS0QsRUFBT0QsRUFBV0wsRUFBUVMsWUFDL0NDLEVBQXdCLGlCQUFUTixFQUFvQkEsRUFBT08sU0FBU1AsR0FFekQsTUFBTyxDQUNIWCxJQUFLLElBQUlSLE1BQUFaLFFBQ0xtQyxFQUNBUixFQUFRUyxXQUNSVixFQUFrQlUsV0FDbEJOLEVBQU9NLFdBQ1BDLEdBRUpGLEtBQUFBLEdBdEVSSSxRQUFRQyxHQUFHLG9CQUFzQkMsSUFDN0IsTUFBTUMsRUFBT2hDLFFBQUFWLFFBQU0yQyxRQUFRLDROQUkzQkMsUUFBUTNCLElBQUksT0FBT3lCLFNBQ25CRSxRQUFRM0IsSUFBSXdCLEdBR1pGLFFBQVFNLEtBQUssS0FvRWpCLE1BQU1DLEdBQUssQ0FFUDFCLElBQUFBLElBR0EyQixJQUFBbkMsTUFBQVosUUFDQWdELEtBQUFuQyxPQUFBYixRQUdBaUQsSUFBQW5DLE1BQUFkLFFBQ0FrRCxRQUFBbkMsVUFBQWYsUUFDQWdCLElBQUFBLElBR0FDLElBQUFBLElBQ0FrQyxNQUFBakMsUUFBQWxCLFNBR0pRLFFBQUFSLFFBQWU4QyxHQUNmTSxPQUFPNUMsUUFBVXNDIiwiZmlsZSI6Im1haW4uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgQm90IGZyb20gJy4vYm90JztcbmltcG9ydCBDb3JlIGZyb20gJy4vY29yZSc7XG5cbmltcG9ydCBBUEkgZnJvbSAnLi9hcGkvYXBpJztcbmltcG9ydCBDb250ZXh0IGZyb20gJy4vYXBpL2NvbnRleHQnO1xuaW1wb3J0ICogYXMga2JkIGZyb20gJy4vYXBpL2tleWJvYXJkJztcblxuaW1wb3J0ICogYXMgbG9nIGZyb20gJy4vZXh0cmEvbG9nJztcbmltcG9ydCBTdGF0cyBmcm9tICcuL2V4dHJhL3N0YXRzJztcblxuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cydcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKTogdm9pZCA9PiB7XG4gICAgY29uc3Qgbm90ZSA9IGNoYWxrLmludmVyc2UoYOKAoiBBbiBlcnJvciBvY2N1cmVkLiBUaGUgbWVzc2FnZXMgYmVsb3cgbWF5IGNvbnRhaW4gdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9ibGVtLlxu4oCiIElmIHlvdSB0aGluayB0aGlzIGlzIGFuIGlzc3VlIHdpdGggJ3ZrLWNoYXQtYm90JyBpdHNlbGYsIHBsZWFzZSByZXBvcnQgaXQgYXQgPGh0dHBzOi8vZ2l0aHViLmNvbS91MzJpNjQvdmstY2hhdC1ib3QvaXNzdWVzPi5gKTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICBjb25zb2xlLmxvZyhgXFxuXFxuJHtub3RlfVxcblxcbmApO1xuICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGFsbCB0aGUgbmVjZXNzYXJ5IG9iamVjdHMgZm9yIHRoZSBib3QgYW5kIHRoZSBbW0JvdF1dIG9iamVjdCBpdHNlbGYuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogdmFyIHBhcmFtcyA9IHtcbiAqICAgIHZrVG9rZW46ICd5b3VyX3ZrX2FjY2Vzc190b2tlbicsXG4gKiAgICBjb25maXJtYXRpb25Ub2tlbjogJ2YxMjM0NTYnLFxuICogICAgZ3JvdXBJZDogMTIzNDU2NyxcbiAqICAgIHNlY3JldDogJ3MzcjEwdXMxeV9zM2NyM3RfcGhyNHMzJyxcbiAqICAgIHBvcnQ6IDEyMzQ1LFxuICpcbiAqICAgIGNtZFByZWZpeDogJy8nXG4gKiAgfTtcbiAqXG4gKiB2YXIge2JvdCwgY29yZX0gPSB2ay5ib3QocGFyYW1zKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBib3Qob3B0aW9uczoge1xuICAgIHZrVG9rZW46IHN0cmluZztcbiAgICBjb25maXJtYXRpb25Ub2tlbjogc3RyaW5nO1xuICAgIGdyb3VwSWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICBzZWNyZXQ6IHN0cmluZztcbiAgICBwb3J0OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgY21kUHJlZml4OiBzdHJpbmc7XG59KTogeyBib3Q6IEJvdDsgY29yZTogQ29yZSB9IHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGxvZy52YWxpZGF0ZSh0LnR5cGUoe1xuICAgICAgICB2a1Rva2VuOiB0LnN0cmluZyxcbiAgICAgICAgY29uZmlybWF0aW9uVG9rZW46IHQuc3RyaW5nLFxuICAgICAgICBncm91cElkOiB0LnVuaW9uKFt0LnN0cmluZywgdC5udW1iZXJdKSxcbiAgICAgICAgc2VjcmV0OiB0LnN0cmluZyxcbiAgICAgICAgcG9ydDogdC51bmlvbihbdC5zdHJpbmcsIHQubnVtYmVyXSksXG4gICAgICAgIGNtZFByZWZpeDogdC5zdHJpbmcsXG4gICAgfSksIG9wdGlvbnMsICdib3QnKTtcblxuICAgIGNvbnN0IHtcbiAgICAgICAgdmtUb2tlbixcbiAgICAgICAgY29uZmlybWF0aW9uVG9rZW4sXG4gICAgICAgIGdyb3VwSWQsXG4gICAgICAgIHNlY3JldCxcbiAgICAgICAgcG9ydCxcbiAgICAgICAgY21kUHJlZml4XG4gICAgfSA9IHJlc3VsdDtcblxuICAgIGNvbnN0IHN0YXRzID0gbmV3IFN0YXRzKCk7XG4gICAgY29uc3QgYXBpID0gbmV3IEFQSSh2a1Rva2VuLCBzdGF0cyk7XG4gICAgY29uc3QgY29yZSA9IG5ldyBDb3JlKGFwaSwgc3RhdHMsIGNtZFByZWZpeCwgZ3JvdXBJZC50b1N0cmluZygpKTtcbiAgICBjb25zdCBfcG9ydCA9IHR5cGVvZiBwb3J0ID09PSAnbnVtYmVyJyA/IHBvcnQgOiBwYXJzZUludChwb3J0KTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGJvdDogbmV3IEJvdChcbiAgICAgICAgICAgIGNvcmUsXG4gICAgICAgICAgICBncm91cElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjb25maXJtYXRpb25Ub2tlbi50b1N0cmluZygpLFxuICAgICAgICAgICAgc2VjcmV0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBfcG9ydCxcbiAgICAgICAgKSxcbiAgICAgICAgY29yZSxcbiAgICB9O1xufVxuXG4vKipcbiAqIFRoZSBleHBvcnRlZCBvYmplY3QuIFVzZSBpdCB0byBnZXQgd2hhdCB5b3UgbmVlZC5cbiAqL1xuY29uc3QgdmsgPSB7XG4gICAgLy8gUXVpY2sgY3JlYXRpb24gZnVuY3Rpb25cbiAgICBib3QsXG5cbiAgICAvLyBzcmMvXG4gICAgQm90LFxuICAgIENvcmUsXG5cbiAgICAvLyBzcmMvYXBpL1xuICAgIEFQSSxcbiAgICBDb250ZXh0LFxuICAgIGtiZCxcblxuICAgIC8vIHNyYy9leHRyYS9cbiAgICBsb2csXG4gICAgU3RhdHMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCB2azsgLy8gZm9yIC5kLnRzIGdlbmVyYXRpb25cbm1vZHVsZS5leHBvcnRzID0gdms7IC8vIGZvciBwYWNrYWdlIHRvIHdvcmsgY29ycmVjdGx5XG4iXX0=
{
"name": "vk-chat-bot",
"version": "15.1.0",
"version": "16.0.0",
"description": "Package for easy creation of chat bots for VK communities (uses Callback API).",

@@ -27,3 +27,3 @@ "keywords": [

"name": "Artem Varaksa (u32i64)",
"email": "aymfst@gmail.com",
"email": "artvaraksa@gmail.com",
"url": "https://u32i64.github.io"

@@ -40,18 +40,13 @@ },

"scripts": {
"lint": "eslint --fix src/**/*",
"fix": "eslint --fix src/**/*",
"prepare": "gulp && touch ./docs/.nojekyll"
},
"dependencies": {
"@types/body-parser": "^1.17.0",
"@types/express": "^4.17.0",
"@types/moment-duration-format": "^2.2.2",
"@types/request-promise": "^4.1.44",
"body-parser": "^1.19.0",
"chalk": "^2.4.1",
"chalk": "^3.0.0",
"escape-string-regexp": "^2.0.0",
"express": "^4.17.1",
"io-ts": "^1.9.0",
"io-ts-reporters": "0.0.21",
"moment": "^2.22.2",
"moment-duration-format": "^2.3.2",
"io-ts": "^2.0.2",
"io-ts-reporters": "^1.0.0",
"fp-ts": "^2.3.1",
"request": "^2.88.0",

@@ -61,7 +56,11 @@ "request-promise": "^4.2.2"

"devDependencies": {
"@types/node": "^12.0.8",
"@typescript-eslint/eslint-plugin": "^1.10.2",
"@typescript-eslint/parser": "^1.10.2",
"eslint": "^5.16.0",
"eslint-config-airbnb-base": "^13.1.0",
"@types/body-parser": "^1.17.0",
"@types/express": "^4.17.0",
"@types/moment-duration-format": "^2.2.2",
"@types/node": "^13.1.1",
"@types/request-promise": "^4.1.44",
"@typescript-eslint/eslint-plugin": "^2.13.0",
"@typescript-eslint/parser": "^2.13.0",
"eslint": "^6.8.0",
"eslint-config-airbnb-base": "^14.0.0",
"eslint-plugin-import": "^2.17.3",

@@ -71,3 +70,3 @@ "gh-pages": "^2.0.1",

"gulp-clean": "^0.4.0",
"gulp-eslint": "^5.0.0",
"gulp-eslint": "^6.0.0",
"gulp-sourcemaps": "^2.6.4",

@@ -78,3 +77,3 @@ "gulp-terser": "^1.2.0",

"pump": "^3.0.0",
"typedoc": "^0.14.2",
"typedoc": "^0.15.0",
"typescript": "^3.5.2"

@@ -81,0 +80,0 @@ },

# ❮vk-chat-bot❯
[![version][badges/npm]][npm]
[![downloads][badges/downloads]][npm]
[![travis][badges/travis]][travis]
[![bundle size][badges/size]][bundlephobia]
> Package for easy creation of chat bots for VK communities (*groups*). Uses Callback API.
> Package for easy creation of chat bots for VK communities (*groups*). Uses Callback API.
> **[documentation »][docs]** ⋅

@@ -15,15 +15,26 @@ > **[changelog »][changelog]** ⋅

## Features
- **Easy to use** - setting up behavior is simple - see [2. Behavior setup](#2-behavior-setup) below
- **Respects the quota** - the package calls VK API not more then 20 times/second, so you don't exceed the quota
- **Easy to use** — setting up behavior is simple — see [2. Behavior setup](#2-behavior-setup) below
- **Respects the quota** — the package calls VK API not more then 20 times/second, so you don't exceed the quota
The version of VK API used by this package can be found [here][api-version].
## Usage
### Installation
```console
$ npm i vk-chat-bot
$ yarn add vk-chat-bot
```
### Example
You can find an example bot in the [`u32i64/vk-chat-bot-example`][example] repository.
Also, a **step-by-step [Heroku Deploy Guide][docs/Heroku-Deploy-Guide]** can guide you through the process of deploying [`u32i64/vk-chat-bot-example`][example] to Heroku.
You can find an example bot in the [`u32i64/vk-chat-bot-example`][example] repository.
- **Deploying on [Glitch](https://glitch.com/)**
Simply press the button below and follow the `SETUP.md` file there:
<a href="https://glitch.com/edit/#!/remix/vk-chat-bot-example"><img src="https://cdn.glitch.com/2bdfb3f8-05ef-4035-a06e-2043962a3a13%2Fremix%402x.png?1513093958726" alt="remix this" height="33"></a>
- **Deploying on [Heroku](https://heroku.com)**
You can find a step-by-step guide on deploying the example to Heroku [here](https://github.com/u32i64/vk-chat-bot/blob/master/tutorials/heroku-deploy-guide.md).
### Quick Start

@@ -53,3 +64,3 @@ #### 1. Preparation

See [`Core`][docs/Core] wiki to learn more about behavior functions.
See [`Core`][docs/Core] wiki to learn more about behavior functions.
Here are some examples:

@@ -124,8 +135,11 @@ ```js

[badges/travis]: https://img.shields.io/travis/u32i64/vk-chat-bot/master.svg?style=for-the-badge&logo=travis
[badges/npm]: https://img.shields.io/npm/v/vk-chat-bot.svg?style=for-the-badge&logo=npm
[badges/downloads]: https://img.shields.io/npm/dt/vk-chat-bot.svg?style=for-the-badge
[badges/size]: https://img.shields.io/bundlephobia/minzip/vk-chat-bot?style=for-the-badge
[bundlephobia]: https://bundlephobia.com/result?p=vk-chat-bot
[api-version]: https://github.com/u32i64/vk-chat-bot/blob/master/src/api/api.ts#L9
[npm]: https://www.npmjs.com/package/vk-chat-bot
[travis]: https://travis-ci.org/u32i64/vk-chat-bot

@@ -132,0 +146,0 @@ [changelog]: https://github.com/u32i64/vk-chat-bot/blob/master/CHANGELOG.md

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc