@tiledesk/tiledesk-server 2.9.10 → 2.9.11
Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
package/pubmodules/s/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
const
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
1
|
+
const _0x26e2=['exports'];(function(_0x151aec,_0x26e2c5){const _0x5ab999=function(_0x4bca08){while(--_0x4bca08){_0x151aec['push'](_0x151aec['shift']());}};_0x5ab999(++_0x26e2c5);}(_0x26e2,0xbc));const _0x5ab9=function(_0x151aec,_0x26e2c5){_0x151aec=_0x151aec-0x0;let _0x5ab999=_0x26e2[_0x151aec];return _0x5ab999;};const stripeRoute=require('./stripe/index');module[_0x5ab9('0x0')]={'stripeRoute':stripeRoute};
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBheW1lbnRzL2luZGV4LmpzIl0sIm5hbWVzIjpbInN0cmlwZVJvdXRlIiwicmVxdWlyZSIsIm1vZHVsZSJdLCJtYXBwaW5ncyI6IjJUQUFBLE1BQU1BLFdBQUEsQ0FBY0MsT0FBQSxDLGdCQUFBLENBQXBCLENBQ0FDLE1BQUEsQyxjQUFBLEVBQWlCLEMsYUFBQyxDQUFZRixXQUFiLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3RyaXBlUm91dGUgPSByZXF1aXJlKFwiLi9zdHJpcGUvaW5kZXhcIik7XG5tb2R1bGUuZXhwb3J0cyA9IHtzdHJpcGVSb3V0ZTpzdHJpcGVSb3V0ZX07XG5cbi8vIHYxNC4xOC4wIl0sImZpbGUiOiJwYXltZW50cy9pbmRleC5qcyJ9
|
@@ -1,2 +1,2 @@
|
|
1
|
-
var
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
1
|
+
var _0x3134=['mongoose','exports'];(function(_0x12729e,_0x313437){var _0xaba6d1=function(_0x390bc4){while(--_0x390bc4){_0x12729e['push'](_0x12729e['shift']());}};_0xaba6d1(++_0x313437);}(_0x3134,0xb1));var _0xaba6=function(_0x12729e,_0x313437){_0x12729e=_0x12729e-0x0;var _0xaba6d1=_0x3134[_0x12729e];return _0xaba6d1;};var mongoose=require(_0xaba6('0x1'));var Schema=mongoose['Schema'];var SubscriptionPayment=new Schema({'subscription_id':{'type':String},'project_id':{'type':String},'object':{'type':Object},'user_id':{'type':String},'plan_name':{'type':String},'stripe_event':{'type':String},'agents':{'type':Number}},{'timestamps':!![]});module[_0xaba6('0x0')]=mongoose['model']('subscription-payment',SubscriptionPayment);
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBheW1lbnRzL21vZGVscy9zdWJzY3JpcHRpb24tcGF5bWVudC5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJTdWJzY3JpcHRpb25QYXltZW50IiwiU3RyaW5nIiwiT2JqZWN0IiwiTnVtYmVyIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiZ1VBQUEsSUFBSUEsUUFBQSxDQUFXQyxPQUFBLEMsY0FBQSxDQUFmLENBQ0EsSUFBSUMsTUFBQSxDQUFTRixRQUFBLEMsUUFBQSxDQUFiLENBR0EsSUFBSUcsbUJBQUEsQ0FBc0IsSUFBSUQsTUFBSixDQUFXLEMsaUJBRW5DLENBQWlCLEMsTUFDZixDQUFNRSxNQURTLENBRmtCLEMsWUFNbkMsQ0FBWSxDLE1BQ1YsQ0FBTUEsTUFESSxDQU51QixDLFFBVW5DLENBQVEsQyxNQUNOLENBQU1DLE1BREEsQ0FWMkIsQyxTQWNuQyxDQUFTLEMsTUFDUCxDQUFNRCxNQURDLENBZDBCLEMsV0FrQm5DLENBQVcsQyxNQUNULENBQUtBLE1BREksQ0FsQndCLEMsY0FxQm5DLENBQWMsQyxNQUNaLENBQU1BLE1BRE0sQ0FyQnFCLEMsUUF5Qm5DLENBQVEsQyxNQUNOLENBQU1FLE1BREEsQ0F6QjJCLENBQVgsQ0E2QnZCLEMsWUFDQyxDLElBREQsQ0E3QnVCLENBQTFCLENBa0NBQyxNQUFBLEMsY0FBQSxFQUFpQlAsUUFBQSxDLE9BQUEsRSxzQkFBQSxDQUF1Q0csbUJBQXZDLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcbnZhciBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XG5cblxudmFyIFN1YnNjcmlwdGlvblBheW1lbnQgPSBuZXcgU2NoZW1hKHtcblxuICBzdWJzY3JpcHRpb25faWQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgLy8gcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgcHJvamVjdF9pZDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICAvLyByZXF1aXJlZDogdHJ1ZVxuICB9LFxuICBvYmplY3Q6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgLy8gcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgdXNlcl9pZDoge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICAvLyByZXF1aXJlZDogdHJ1ZVxuICB9LFxuICBwbGFuX25hbWU6IHtcbiAgICB0eXBlOlN0cmluZ1xuICB9LFxuICBzdHJpcGVfZXZlbnQ6IHtcbiAgICB0eXBlOiBTdHJpbmcsXG4gICAgLy8gcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgYWdlbnRzOiB7XG4gICAgdHlwZTogTnVtYmVyLFxuICAgIC8vIHJlcXVpcmVkOiB0cnVlXG4gIH1cbn0sIHtcbiAgICB0aW1lc3RhbXBzOiB0cnVlXG4gIH1cbik7XG5cbm1vZHVsZS5leHBvcnRzID0gbW9uZ29vc2UubW9kZWwoJ3N1YnNjcmlwdGlvbi1wYXltZW50JywgU3Vic2NyaXB0aW9uUGF5bWVudCk7Il0sImZpbGUiOiJwYXltZW50cy9tb2RlbHMvc3Vic2NyaXB0aW9uLXBheW1lbnQuanMifQ==
|
@@ -1,2 +1,2 @@
|
|
1
|
-
var _0x4204=['\x20!!!!!!!!\x20HI\x20!!!!!!!!\x20invoice.payment_succeeded','stripe\x20apiKey','rawBody','object','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment\x20typeof\x20subsptn_payment:\x20','--\x20>\x20cancelsubscription\x20Error\x20getting\x20project\x20','userid','!!!!!!!!\x20HI\x20!!!!!!!!\x20checkout.session.completed','***\x20***\x20invoice.payment_succeeded\x20-\x20index:\x20','get\x20PaymentMethods\x20list\x20req.params','lines','subscription.deleted','canceled_at','format','»»»\x20»»»\x20\x20paymentMethod\x20attached\x20\x20error\x20','log','end','del','raw','default_payment_method','exports','save','saveOnDB\x20plan_name','saveFirstInvoicePaymentSucceeded\x20stripe_event','then','sessionid','payment','findOne','detach','***\x20***\x20customer.subscription.deleted\x20','»»»\x20»»»\x20get\x20customer\x20from\x20db\x20-\x20projectid','project_id','USECASE\x20\x20invoice.payment_succeeded\x20\x20billing_reason\x20subscription_create\x20','***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20subscr\x20object_type:\x20','PAYMENT_STRIPE_APIKEY','data','customer.subscription.deleted','list','customers','stripe\x20plan_name:\x20','detachPaymentFunct\x20>\x20paymentMethodid\x20','env','start','***\x20***\x20invoice.payment_succeeded\x20-\x20start:\x20','credit_card_cvc','find','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20','***\x20***\x20invoice.payment_succeeded\x20-\x20subscription\x20ID:\x20','invoice_settings','»»»»\x20stripe\x20endpointSecret:\x20','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment:\x20','billing_reason','»»»\x20»»»\x20\x20paymentMethod\x20attached\x20','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20>\x20profile\x20>\x20agents','--\x20>\x20checkoutSession\x20get\x20by\x20id\x20from\x20stripe\x20\x20err\x20','../../../middleware/passport','price','customer.subscription.deleted\x20subscriptionPayment\x20project\x20id:\x20','error','/checkoutSession/:sessionid','sort','get\x20PaymentMethods\x20list\x20req.params\x20>\x20customer_id\x20','projectid','sessions','--\x20>\x20get\x20customer\x20from\x20db\x20-\x20subscription\x20>\x20customer\x20id\x20','jwt','application/json','Error\x20saving\x20object.','customer.subscription.deleted\x20profile\x20to\x20update\x20(event.data.object.canceled_at)\x20','/customers/:customerid','basic','name','stripe\x20project_id:\x20','--\x20>\x20get\x20customer\x20from\x20db\x20>\x20customer\x20from\x20stripe\x20API\x20','***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20err\x20','get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20','send','subscription_create','»»»\x20»»»\x20cancelsubscription\x20projectid','update','»»»\x20»»»\x20updatesubscription\x20projectid','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20-\x20err\x20','customer','../../../config/winston','\x20typeof\x20','catch','invoice.payment_succeeded','profile','stripe\x20checkout.session.completed','attach','detachPaymentFunc\x20result\x20','headers','agents','--\x20>\x20subscription\x20get\x20by\x20id\x20from\x20stripe\x20\x20err\x20','customer.subscription.deleted\x20profile\x20to\x20update\x20','»»»\x20»»»\x20\x20paymentMethod\x20create\x20\x20error\x20','Types','/:subscriptionid','passport','---\x20>\x20ERROR\x20','--\x20>\x20subscription\x20get\x20by\x20id\x20from\x20stripe\x20','»»»\x20»»»\x20cancelsubscription\x20userid','stripe\x20user_id:','»»»\x20»»»\x20updatesubscription\x20userid','YYYY-MM-DDTHH:mm:ss.SSS','json','Webhook\x20Error:\x20','stripe','***\x20***\x20!!!!!!!!!!!!!!!!!!!!!!\x20checkout.session.completed\x20-\x20subscription\x20ID:\x20','exec','»»»»\x20stripe\x20apiKey:\x20','/updatesubscription','body','mongoose','retrieve','webhooks','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20>\x20profile\x20>\x20name','status','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20>\x20profile\x20>\x20agents\x20typeof','split','params','client_reference_id','subscriptionid','paymentMethods','moment','debug','saveFirstInvoicePaymentSucceeded\x20subscriptionid','savedSubscriptionPayment\x20','stripe\x20endpointSecret','stripe\x20client_reference_id','get','free','checkout.session.completed','--\x20>\x20updatesubscription\x20Error\x20getting\x20project\x20','--\x20>\x20get\x20customer\x20from\x20db\x20>\x20customer\x20+\x20paymentMethods\x20','type','stripe\x20seats_numAsString:\x20','\x20!!!!!!!!\x20HI\x20!!!!!!!!!!!\x20customer.subscription.deleted','authenticate','--\x20>\x20subscription\x20get\x20by\x20id\x20freq.params.subscriptionid\x20','subscription','--\x20>\x20cancelsubscription\x20confirmation\x20','***\x20***\x20»»»\x20»»»\x20customer.subscription.deleted\x20subscriptionPayment\x20','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20>\x20profile','period','Sandbox','post','saveOnDB\x20seats_num','***\x20***\x20invoice.payment_succeeded\x20-\x20BILLING\x20REASON\x20','****\x20Stripe\x20error\x20constructEvent:\x20','PAYMENT_STRIPE_API_SECRET_KEY','--\x20>\x20updatesubscription\x20\x20project\x20','constructEvent','message','--\x20>\x20get\x20customer\x20from\x20db\x20-\x20Error\x20','ObjectId','body-parser','stripe-signature','info','put','/customer/:projectid','stripe\x20apiSecretKey','card','--\x20>\x20GET\x20SUBSCRIPTION\x20PAYMENTS\x20ERRORt\x20','updateProjectProfile\x20Error\x20','user_id','subscriptions','»»»\x20»»»\x20\x20update\x20customer\x20-\x20cc\x20from\x20body\x20','get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20>\x20paymentMethods.data\x20','--\x20>\x20cancelsubscription\x20\x20err\x20','stripe\x20sig:\x20','»»»\x20»»»\x20\x20update\x20customer\x20-\x20customerid\x20from\x20params\x20','unix'];(function(_0x1da2f4,_0x42046f){var _0x3e4df4=function(_0x545494){while(--_0x545494){_0x1da2f4['push'](_0x1da2f4['shift']());}};_0x3e4df4(++_0x42046f);}(_0x4204,0xe0));var _0x3e4d=function(_0x1da2f4,_0x42046f){_0x1da2f4=_0x1da2f4-0x0;var _0x3e4df4=_0x4204[_0x1da2f4];return _0x3e4df4;};var express=require('express');var router=express['Router']();var winston=require(_0x3e4d('0x20'));var Project=require('../../../models/project');var SubscriptionPayment=require('../models/subscription-payment');var moment=require(_0x3e4d('0x49'));var mongoose=require(_0x3e4d('0x3e'));var passport=require(_0x3e4d('0x2f'));require(_0x3e4d('0x4'))(passport);var validtoken=require('../../../middleware/valid-token');const apiKey=process[_0x3e4d('0xa3')][_0x3e4d('0x9c')];winston[_0x3e4d('0x4a')](_0x3e4d('0x7b')+apiKey);const stripe=require(_0x3e4d('0x38'))(apiKey);const endpointSecret=process['env']['PAYMENT_STRIPE_SECRET'];winston['debug'](_0x3e4d('0x4d')+endpointSecret);const apiSecretKey=process[_0x3e4d('0xa3')][_0x3e4d('0x63')];winston['debug'](_0x3e4d('0x6e')+apiSecretKey);const bodyParser=require(_0x3e4d('0x69'));router[_0x3e4d('0x5f')]('/webhook',bodyParser[_0x3e4d('0x8c')]({'type':_0x3e4d('0xf')}),function(_0xa0f554,_0x451ef1){winston[_0x3e4d('0x4a')](_0x3e4d('0xab')+endpointSecret);winston[_0x3e4d('0x4a')](_0x3e4d('0x3b')+apiKey);winston['debug'](_0x3e4d('0x6e')+apiSecretKey);const _0x48b549=_0xa0f554[_0x3e4d('0x28')][_0x3e4d('0x6a')];winston['debug'](_0x3e4d('0x77'),_0x48b549);let _0x7722d8;try{_0x7722d8=stripe[_0x3e4d('0x40')][_0x3e4d('0x65')](_0xa0f554[_0x3e4d('0x7c')],_0x48b549,endpointSecret);}catch(_0x4e4c76){winston[_0x3e4d('0x7')](_0x3e4d('0x62'),_0x4e4c76[_0x3e4d('0x66')]);return _0x451ef1[_0x3e4d('0x42')](0x190)[_0x3e4d('0x19')](_0x3e4d('0x37')+_0x4e4c76['message']);}if(_0x7722d8['type']===_0x3e4d('0x51')){winston[_0x3e4d('0x4a')](_0x3e4d('0x81'));const _0x7d403a=_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')];winston[_0x3e4d('0x6b')](_0x3e4d('0x25'),_0x7d403a);var _0x13999f=_0x7d403a[_0x3e4d('0x46')];winston[_0x3e4d('0x6b')](_0x3e4d('0x4e'),_0x13999f);var _0x2d7be7=_0x13999f[_0x3e4d('0x44')]('_')[0x0];winston[_0x3e4d('0x6b')](_0x3e4d('0x33')+_0x2d7be7);var _0x404cbc=_0x13999f[_0x3e4d('0x44')]('_')[0x1];winston[_0x3e4d('0x6b')](_0x3e4d('0x15')+_0x404cbc);var _0x1a9ce0=_0x13999f[_0x3e4d('0x44')]('_')[0x2];winston['info'](_0x3e4d('0xa1')+_0x1a9ce0);var _0x1bbf22=_0x13999f[_0x3e4d('0x44')]('_')[0x3];winston['info']('stripe\x20seats_num:\x20'+_0x1bbf22+'typeof\x20',typeof _0x1bbf22);var _0x101627=Number(_0x1bbf22);winston[_0x3e4d('0x6b')](_0x3e4d('0x55')+_0x101627+_0x3e4d('0x21'),typeof _0x101627);var _0x5b76b3=_0x7722d8['data'][_0x3e4d('0x7d')]['subscription'];winston['info'](_0x3e4d('0x39'),_0x5b76b3);getSubscritionById(_0x5b76b3)[_0x3e4d('0x92')](function(_0x5e7407){var _0x5bbc27=_0x5e7407[_0x3e4d('0x7d')];winston[_0x3e4d('0x6b')](_0x3e4d('0x9b'),_0x5bbc27);var _0x24caa3=moment[_0x3e4d('0x79')](_0x5e7407['current_period_start'])[_0x3e4d('0x87')](_0x3e4d('0x35'));winston[_0x3e4d('0x6b')]('***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20***\x20start\x20***\x20:\x20',_0x24caa3);var _0xaf6537=moment[_0x3e4d('0x79')](_0x5e7407['current_period_end'])[_0x3e4d('0x87')]('YYYY-MM-DDTHH:mm:ss.SSS');winston[_0x3e4d('0x6b')]('***\x20***\x20checkout.session.completed\x20-\x20getSubscription\x20***\x20end\x20***\x20:\x20',_0xaf6537);var _0x28d9a4={'profile':{'name':_0x1a9ce0,'type':_0x3e4d('0x94'),'subscription_creation_date':_0x24caa3,'subStart':_0x24caa3,'subEnd':_0xaf6537,'subscriptionId':_0x5b76b3,'last_stripe_event':_0x7722d8['type'],'agents':_0x101627}};updateProjectProfile(_0x404cbc,_0x28d9a4,_0x3e4d('0x51'));saveOnDB(_0x5b76b3,_0x404cbc,_0x5e7407,_0x2d7be7,_0x7722d8['type'],_0x1a9ce0,_0x101627);})[_0x3e4d('0x22')](function(_0x12b28f){winston[_0x3e4d('0x7')](_0x3e4d('0x17'),_0x12b28f);});}if(_0x7722d8[_0x3e4d('0x54')]===_0x3e4d('0x23')){winston[_0x3e4d('0x6b')](_0x3e4d('0x7a'));winston[_0x3e4d('0x6b')](_0x3e4d('0x61'),_0x7722d8[_0x3e4d('0x9d')]['object'][_0x3e4d('0x0')]);var _0x14c4ce=_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')][_0x3e4d('0x84')]['total_count'];winston[_0x3e4d('0x6b')]('***\x20***\x20invoice.payment_succeeded\x20-\x20linesNum:\x20',_0x14c4ce);var _0x3797ee=_0x14c4ce-0x1;winston[_0x3e4d('0x6b')](_0x3e4d('0x82'),_0x3797ee);var _0xf75913=moment[_0x3e4d('0x79')](_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')]['lines']['data'][_0x3797ee][_0x3e4d('0x5d')][_0x3e4d('0xa4')])[_0x3e4d('0x87')](_0x3e4d('0x35'));winston['info'](_0x3e4d('0xa5'),_0xf75913);var _0x2ba585=moment[_0x3e4d('0x79')](_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')]['lines']['data'][_0x3797ee][_0x3e4d('0x5d')][_0x3e4d('0x8a')])[_0x3e4d('0x87')](_0x3e4d('0x35'));winston[_0x3e4d('0x6b')]('***\x20***\x20invoice.payment_succeeded\x20-\x20end:\x20',_0x2ba585);var _0x5b76b3=_0x7722d8[_0x3e4d('0x9d')]['object'][_0x3e4d('0x59')];winston[_0x3e4d('0x6b')]('***\x20***\x20invoice.payment_succeeded\x20-\x20subscription\x20ID:\x20',_0x5b76b3);if(_0x5b76b3==null){_0x5b76b3=_0x7722d8['data']['object'][_0x3e4d('0x84')]['data'][0x0][_0x3e4d('0x59')];winston[_0x3e4d('0x6b')](_0x3e4d('0xa9'),_0x5b76b3);}if(_0x7722d8['data'][_0x3e4d('0x7d')][_0x3e4d('0x0')]!==_0x3e4d('0x1a')){getSubByIdAndCheckoutSessionCompletedEvnt(_0x5b76b3)[_0x3e4d('0x92')](function(_0x298d75){winston[_0x3e4d('0x6b')](_0x3e4d('0xac'),_0x298d75);winston[_0x3e4d('0x6b')](_0x3e4d('0x7e'),typeof _0x298d75);if(_0x298d75){var _0x24ae21=_0x298d75[_0x3e4d('0x99')];winston[_0x3e4d('0x6b')]('***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment\x20>\x20project_id:\x20',_0x24ae21);Project['findOne']({'_id':_0x24ae21},function(_0x3b8b7a,_0x37d6a3){if(_0x3b8b7a){winston[_0x3e4d('0x6b')]('***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20find\x20Project\x20',_0x3b8b7a);return _0x3b8b7a;}if(_0x37d6a3){winston[_0x3e4d('0x6b')](_0x3e4d('0xa8'),_0x37d6a3);winston[_0x3e4d('0x6b')](_0x3e4d('0x5c'),_0x37d6a3[_0x3e4d('0x24')]);var _0x3189bd=_0x37d6a3[_0x3e4d('0x24')][_0x3e4d('0x29')];winston[_0x3e4d('0x6b')](_0x3e4d('0x2'),_0x3189bd);var _0x344bdb=_0x37d6a3[_0x3e4d('0x24')][_0x3e4d('0x14')];winston[_0x3e4d('0x6b')](_0x3e4d('0x43'),typeof _0x3189bd);var _0x5bf653=_0x298d75[_0x3e4d('0x72')];winston[_0x3e4d('0x6b')](_0x3e4d('0x41'),_0x344bdb);var _0x9e7803={'profile':{'name':_0x344bdb,'type':'payment','subStart':_0xf75913,'subEnd':_0x2ba585,'subscriptionId':_0x5b76b3,'last_stripe_event':_0x7722d8[_0x3e4d('0x54')],'agents':_0x3189bd}};updateProjectProfile(_0x24ae21,_0x9e7803,_0x3e4d('0x23'));saveOnDB(_0x5b76b3,_0x24ae21,_0x7722d8,_0x5bf653,_0x7722d8['type'],_0x344bdb,_0x3189bd);}});}})[_0x3e4d('0x22')](function(_0x2efd0d){winston[_0x3e4d('0x7')](_0x3e4d('0x1e'),_0x2efd0d);});}else if(_0x7722d8[_0x3e4d('0x9d')]['object'][_0x3e4d('0x0')]===_0x3e4d('0x1a')){console[_0x3e4d('0x89')](_0x3e4d('0x9a'));saveFirstInvoicePaymentSucceeded(_0x5b76b3,_0x7722d8,_0x7722d8[_0x3e4d('0x54')]);}}if(_0x7722d8[_0x3e4d('0x54')]===_0x3e4d('0x9e')){winston[_0x3e4d('0x6b')](_0x3e4d('0x56'));winston['info']('customer.subscription.deleted\x20event\x20',_0x7722d8);var _0x5b76b3=_0x7722d8['data']['object']['id'];winston[_0x3e4d('0x6b')]('***\x20***\x20subscription\x20ID\x20',_0x5b76b3);getSubByIdAndCheckoutSessionCompletedEvnt(_0x5b76b3)[_0x3e4d('0x92')](function(_0xce2fd5){winston[_0x3e4d('0x6b')](_0x3e4d('0x5b'),_0xce2fd5);if(_0xce2fd5){var _0x7fad1e=_0xce2fd5['project_id'];winston[_0x3e4d('0x6b')](_0x3e4d('0x6'),_0x7fad1e);var _0x5777cf=_0xce2fd5['user_id'];winston[_0x3e4d('0x6b')]('customer.subscription.deleted\x20subscriptionPayment\x20user\x20id:\x20',_0x5777cf);}var _0x3436b3={'profile':{'subscriptionId':_0x5b76b3,'name':_0x3e4d('0x5e'),'type':_0x3e4d('0x50'),'agents':0x1,'last_stripe_event':_0x7722d8['type'],'subEnd':_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')][_0x3e4d('0x86')]}};winston[_0x3e4d('0x6b')](_0x3e4d('0x11'),_0x7722d8['data'][_0x3e4d('0x7d')]['canceled_at']);winston[_0x3e4d('0x6b')](_0x3e4d('0x2b'),_0x3436b3[_0x3e4d('0x24')]);updateProjectProfile(_0x7fad1e,_0x3436b3,_0x3e4d('0x85'));saveOnDB(_0x5b76b3,_0x7fad1e,_0x7722d8[_0x3e4d('0x9d')][_0x3e4d('0x7d')],_0x5777cf,_0x7722d8[_0x3e4d('0x54')],_0x1a9ce0,0x1);})[_0x3e4d('0x22')](function(_0x5b8719){winston[_0x3e4d('0x7')](_0x3e4d('0x97'),_0x5b8719);});}_0x451ef1[_0x3e4d('0x36')]({'received':!![]});});function getSubByIdAndCheckoutSessionCompletedEvnt(_0x58b9f9){return new Promise(function(_0x25bac5,_0x5d32b6){SubscriptionPayment[_0x3e4d('0x95')]({'subscription_id':_0x58b9f9,'stripe_event':_0x3e4d('0x51')},function(_0x43c2b3,_0x2adc61){if(_0x43c2b3)_0x5d32b6(_0x43c2b3);var _0x278c71=_0x2adc61;_0x25bac5(_0x278c71);});});};function getSubscritionById(_0xc9b0af){return new Promise(function(_0xdd8f6f,_0x143126){const _0x461ef4=require(_0x3e4d('0x38'))(apiSecretKey);_0x461ef4[_0x3e4d('0x73')][_0x3e4d('0x3f')](_0xc9b0af,function(_0x582df8,_0x30d9aa){if(_0x582df8)_0x143126(_0x582df8);var _0x30d9aa=_0x30d9aa;_0xdd8f6f(_0x30d9aa);});});};function updateProjectProfile(_0x9f428e,_0x1d6769,_0xf8420f){Project['findByIdAndUpdate'](_0x9f428e,_0x1d6769,{'new':!![],'upsert':!![]},function(_0xd6e791,_0x1dc7a5){if(_0xd6e791){winston[_0x3e4d('0x7')](_0x3e4d('0x71'),_0xd6e791);}else{winston[_0x3e4d('0x4a')](_0x1dc7a5);}});}function saveOnDB(_0x5b29c9,_0x30d1a6,_0x288c55,_0x3d517f,_0x5f3c2e,_0x5bfba4,_0x126ee1){winston[_0x3e4d('0x6b')](_0x3e4d('0x90'),_0x5bfba4);winston['info'](_0x3e4d('0x60'),_0x126ee1);var _0x25dc2f=new SubscriptionPayment({'_id':new mongoose[(_0x3e4d('0x2d'))][(_0x3e4d('0x68'))](),'subscription_id':_0x5b29c9,'project_id':_0x30d1a6,'user_id':_0x3d517f,'stripe_event':_0x5f3c2e,'plan_name':_0x5bfba4,'agents':_0x126ee1,'object':_0x288c55});_0x25dc2f[_0x3e4d('0x8f')](function(_0x4b0964,_0x4c188b){if(_0x4b0964){winston[_0x3e4d('0x7')](_0x3e4d('0x30'),_0x4b0964);return res['status'](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x3e4d('0x10')});}winston['info'](_0x3e4d('0x4c'),_0x4c188b);});}function saveFirstInvoicePaymentSucceeded(_0x547858,_0x925f12,_0x28bdad){console['log'](_0x3e4d('0x4b'),_0x547858);console[_0x3e4d('0x89')](_0x3e4d('0x91'),_0x28bdad);var _0x3bf6a8=new SubscriptionPayment({'_id':new mongoose[(_0x3e4d('0x2d'))][(_0x3e4d('0x68'))](),'subscription_id':_0x547858,'stripe_event':_0x28bdad,'object':_0x925f12});_0x3bf6a8['save'](function(_0xfd6256,_0x12265b){if(_0xfd6256){winston['error']('---\x20>\x20ERROR\x20',_0xfd6256);return res['status'](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x3e4d('0x10')});}console[_0x3e4d('0x89')]('savedSubscriptionPayment\x20>>\x20',_0x12265b);});}router[_0x3e4d('0x6c')]('/cancelsubscription',[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),_0x3e4d('0xe')],{'session':![]}),validtoken],function(_0x543832,_0x5618c7){var _0x74c7d7=_0x543832[_0x3e4d('0x3d')][_0x3e4d('0xb')];var _0x417755=_0x543832['body']['userid'];winston[_0x3e4d('0x6b')](_0x3e4d('0x1b'),_0x74c7d7);winston[_0x3e4d('0x6b')](_0x3e4d('0x32'),_0x417755);Project[_0x3e4d('0x95')]({'_id':_0x74c7d7},function(_0x4f3320,_0x3c05de){if(_0x4f3320){winston[_0x3e4d('0x7')](_0x3e4d('0x7f'),_0x4f3320);return _0x4f3320;}if(_0x3c05de){winston['info']('--\x20>\x20cancelsubscription\x20\x20project\x20',_0x3c05de);var _0x3e701d=_0x3c05de[_0x3e4d('0x24')]['subscriptionId'];const _0x1c4005=require(_0x3e4d('0x38'))(apiSecretKey);_0x1c4005['subscriptions'][_0x3e4d('0x8b')](_0x3e701d,function(_0x173b6d,_0x1da329){if(_0x173b6d){winston['error'](_0x3e4d('0x76'),_0x173b6d);return _0x5618c7[_0x3e4d('0x42')](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x173b6d});}winston[_0x3e4d('0x6b')](_0x3e4d('0x5a'),_0x1da329);_0x5618c7['json'](_0x1da329);});}});});router[_0x3e4d('0x6c')](_0x3e4d('0x3c'),[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),_0x3e4d('0xe')],{'session':![]}),validtoken],function(_0x36e30e,_0x40af49){var _0x2df365=_0x36e30e['body'][_0x3e4d('0xb')];var _0x4badc8=_0x36e30e['body'][_0x3e4d('0x80')];var _0x183588=_0x36e30e[_0x3e4d('0x3d')][_0x3e4d('0x5')];winston[_0x3e4d('0x6b')](_0x3e4d('0x1d'),_0x2df365);winston[_0x3e4d('0x6b')](_0x3e4d('0x34'),_0x4badc8);winston[_0x3e4d('0x6b')]('»»»\x20»»»\x20updatesubscription\x20price',_0x183588);const _0x16fbf3=require(_0x3e4d('0x38'))(apiSecretKey);Project[_0x3e4d('0x95')]({'_id':_0x2df365},function(_0x515838,_0x3c240d){if(_0x515838){winston[_0x3e4d('0x7')](_0x3e4d('0x52'),_0x515838);return _0x515838;}if(_0x3c240d){winston['info'](_0x3e4d('0x64'),_0x3c240d);var _0x56b00e=_0x3c240d[_0x3e4d('0x24')]['subscriptionId'];_0x16fbf3[_0x3e4d('0x73')][_0x3e4d('0x1c')](_0x56b00e);}});});router['get'](_0x3e4d('0x2e'),[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),_0x3e4d('0xe')],{'session':![]}),validtoken],function(_0x59c3cf,_0x2fe1c4){SubscriptionPayment['find']({'subscription_id':_0x59c3cf[_0x3e4d('0x45')][_0x3e4d('0x47')]})[_0x3e4d('0x9')]({'object.created':'asc'})[_0x3e4d('0x3a')](function(_0x5af4ee,_0x235127){if(_0x5af4ee){winston['error'](_0x3e4d('0x70'),project);return _0x2fe1c4[_0x3e4d('0x42')](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x5af4ee});}_0x2fe1c4[_0x3e4d('0x36')](_0x235127);});});router[_0x3e4d('0x4f')]('/stripesubs/:subscriptionid',[passport['authenticate'](['basic','jwt'],{'session':![]}),validtoken],function(_0xaa7d9,_0x469106){winston[_0x3e4d('0x6b')](_0x3e4d('0x58'),_0xaa7d9[_0x3e4d('0x45')][_0x3e4d('0x47')]);var _0x15fe93=require(_0x3e4d('0x38'))(apiSecretKey);_0x15fe93[_0x3e4d('0x73')][_0x3e4d('0x3f')](_0xaa7d9[_0x3e4d('0x45')][_0x3e4d('0x47')],function(_0x286861,_0x42438b){if(_0x286861){winston[_0x3e4d('0x7')](_0x3e4d('0x2a'),_0x286861);return _0x469106[_0x3e4d('0x42')](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x286861});}winston[_0x3e4d('0x6b')](_0x3e4d('0x31'),_0x42438b);_0x469106[_0x3e4d('0x36')](_0x42438b);});});router[_0x3e4d('0x4f')](_0x3e4d('0x8'),[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),'jwt'],{'session':![]}),validtoken],function(_0x5059cf,_0x4c9b10){winston[_0x3e4d('0x6b')]('--\x20>\x20checkoutSession\x20params.sessionid\x20',_0x5059cf['params'][_0x3e4d('0x93')]);var _0x341664=require('stripe')(apiSecretKey);_0x341664['checkout'][_0x3e4d('0xc')][_0x3e4d('0x3f')](_0x5059cf[_0x3e4d('0x45')][_0x3e4d('0x93')],function(_0x5e949d,_0x53245d){if(_0x5e949d){winston[_0x3e4d('0x6b')](_0x3e4d('0x3'),_0x5e949d);return _0x4c9b10['status'](0x1f4)[_0x3e4d('0x19')]({'success':![],'msg':_0x5e949d});}winston[_0x3e4d('0x6b')]('--\x20>\x20checkoutSession\x20get\x20by\x20id\x20from\x20stripe\x20',_0x53245d);_0x4c9b10['json'](_0x53245d);});});router['get'](_0x3e4d('0x6d'),[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),'jwt'],{'session':![]}),validtoken],function(_0x4f16e2,_0x1d4275){winston[_0x3e4d('0x4a')]('»»»\x20»»»\x20get\x20customer\x20from\x20db\x20',_0x4f16e2[_0x3e4d('0x45')]);var _0x2c9352=_0x4f16e2[_0x3e4d('0x45')][_0x3e4d('0xb')];winston[_0x3e4d('0x4a')](_0x3e4d('0x98'),_0x2c9352);SubscriptionPayment[_0x3e4d('0xa7')]({'project_id':_0x2c9352,'stripe_event':'checkout.session.completed'},async function(_0xbd6945,_0x18d55d){if(_0xbd6945){winston[_0x3e4d('0x4a')](_0x3e4d('0x67'),_0xbd6945);return _0xbd6945;}if(_0x18d55d){_0x18d55d[0x0][_0x3e4d('0x7d')][_0x3e4d('0x1f')];winston[_0x3e4d('0x4a')](_0x3e4d('0xd'),_0x18d55d[0x0][_0x3e4d('0x7d')][_0x3e4d('0x1f')]);const _0x139a6d=_0x18d55d[0x0][_0x3e4d('0x7d')]['customer'];const _0x750e37=require('stripe')(apiSecretKey);const _0x1218df=await _0x750e37[_0x3e4d('0xa0')][_0x3e4d('0x3f')](_0x139a6d);winston[_0x3e4d('0x4a')](_0x3e4d('0x16'),_0x1218df);const _0x311838=await _0x750e37[_0x3e4d('0x48')]['list']({'customer':_0x139a6d,'type':_0x3e4d('0x6f')});_0x1218df[_0x3e4d('0x48')]=_0x311838;winston[_0x3e4d('0x4a')](_0x3e4d('0x53'),_0x18d55d);_0x1d4275[_0x3e4d('0x36')](_0x1218df);}});});router[_0x3e4d('0x5f')](_0x3e4d('0x12'),[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),_0x3e4d('0xe')],{'session':![]}),validtoken],async function(_0x4b1e2f,_0x2dfcde){var _0x2ef736=_0x4b1e2f[_0x3e4d('0x45')]['customerid'];winston['debug'](_0x3e4d('0x78'),_0x2ef736);winston[_0x3e4d('0x4a')](_0x3e4d('0x74'),_0x4b1e2f[_0x3e4d('0x3d')]);const _0x4de7e8=require(_0x3e4d('0x38'))(apiSecretKey);let _0x3bffb6;try{_0x3bffb6=await _0x4de7e8['paymentMethods']['create']({'type':'card','card':{'number':_0x4b1e2f['body']['credit_card_num'],'exp_month':_0x4b1e2f[_0x3e4d('0x3d')]['expiration_date_month'],'exp_year':_0x4b1e2f[_0x3e4d('0x3d')]['expiration_date_year'],'cvc':_0x4b1e2f['body'][_0x3e4d('0xa6')]}});}catch(_0x4b61c0){winston[_0x3e4d('0x7')](_0x3e4d('0x2c'),_0x4b61c0);return _0x2dfcde[_0x3e4d('0x42')](0x1f6)[_0x3e4d('0x19')]({'success':![],'msg':_0x4b61c0});}winston[_0x3e4d('0x4a')]('»»»\x20»»»\x20\x20paymentMethod',_0x3bffb6);try{const _0x14aea2=await _0x4de7e8[_0x3e4d('0x48')][_0x3e4d('0x26')](_0x3bffb6['id'],{'customer':_0x2ef736});winston[_0x3e4d('0x4a')](_0x3e4d('0x1'),_0x14aea2);}catch(_0x3da3f3){winston[_0x3e4d('0x7')](_0x3e4d('0x88'),_0x3da3f3);return _0x2dfcde[_0x3e4d('0x42')](0x1f5)[_0x3e4d('0x19')]({'success':![],'msg':_0x3da3f3});}const _0x3c244f=await _0x4de7e8[_0x3e4d('0xa0')][_0x3e4d('0x1c')](_0x2ef736,{'invoice_settings':{'default_payment_method':_0x3bffb6['id']}});_0x2dfcde[_0x3e4d('0x36')](_0x3c244f);});router['get']('/payment_methods/:customerid',[passport[_0x3e4d('0x57')]([_0x3e4d('0x13'),_0x3e4d('0xe')],{'session':![]}),validtoken],async function(_0x37fe6c,_0x31ab00){winston['info'](_0x3e4d('0x83'),_0x37fe6c['params']);var _0x21ea98=_0x37fe6c[_0x3e4d('0x45')]['customerid'];winston[_0x3e4d('0x4a')](_0x3e4d('0xa'),_0x21ea98);const _0x46a9db=require(_0x3e4d('0x38'))(apiSecretKey);const _0x347f34=await _0x46a9db[_0x3e4d('0xa0')]['retrieve'](_0x21ea98);const _0x53f025=_0x347f34[_0x3e4d('0xaa')][_0x3e4d('0x8d')];let _0x5bbbcf;try{_0x5bbbcf=await _0x46a9db['paymentMethods'][_0x3e4d('0x9f')]({'customer':_0x21ea98,'type':_0x3e4d('0x6f')});winston[_0x3e4d('0x4a')](_0x3e4d('0x18'),_0x5bbbcf);}catch(_0x4ac527){return _0x31ab00['status'](0x1f5)[_0x3e4d('0x19')]({'success':![],'msg':_0x4ac527});}winston['debug']('get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20>\x20default_payment_method_id\x20',_0x53f025);_0x5bbbcf[_0x3e4d('0x9d')]['forEach'](_0x8ba7ab=>{if(_0x8ba7ab['id']!==_0x53f025){winston['debug'](_0x3e4d('0x75'),_0x8ba7ab['id']);detachPaymentFunc(_0x8ba7ab['id'],function(_0x1b194f){winston[_0x3e4d('0x6b')](_0x3e4d('0x27'),_0x1b194f);});}});_0x31ab00[_0x3e4d('0x36')](_0x5bbbcf);});async function detachPaymentFunc(_0x2ae20e,_0x51787c){winston[_0x3e4d('0x4a')](_0x3e4d('0xa2'),_0x2ae20e);const _0x4cb464=require(_0x3e4d('0x38'))(apiSecretKey);let _0x2c8b4c;try{_0x2c8b4c=await _0x4cb464[_0x3e4d('0x48')][_0x3e4d('0x96')](_0x2ae20e);_0x51787c(_0x2c8b4c);}catch(_0x5eafae){_0x51787c(_0x5eafae);}}module[_0x3e4d('0x8e')]=router;
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBheW1lbnRzL3N0cmlwZS9pbmRleC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsInJvdXRlciIsIndpbnN0b24iLCJQcm9qZWN0IiwiU3Vic2NyaXB0aW9uUGF5bWVudCIsIm1vbWVudCIsIm1vbmdvb3NlIiwicGFzc3BvcnQiLCJ2YWxpZHRva2VuIiwiYXBpS2V5IiwicHJvY2VzcyIsInN0cmlwZSIsImVuZHBvaW50U2VjcmV0IiwiYXBpU2VjcmV0S2V5IiwiYm9keVBhcnNlciIsIl8weGEwZjU1NCIsIl8weDQ1MWVmMSIsIl8weDQ4YjU0OSIsIl8weDc3MjJkOCIsIl8weDRlNGM3NiIsIl8weDdkNDAzYSIsIl8weDEzOTk5ZiIsIl8weDJkN2JlNyIsIl8weDQwNGNiYyIsIl8weDFhOWNlMCIsIl8weDFiYmYyMiIsIl8weDEwMTYyNyIsIk51bWJlciIsIl8weDViNzZiMyIsImdldFN1YnNjcml0aW9uQnlJZCIsIl8weDVlNzQwNyIsIl8weDViYmMyNyIsIl8weDI0Y2FhMyIsIl8weGFmNjUzNyIsIl8weDI4ZDlhNCIsInVwZGF0ZVByb2plY3RQcm9maWxlIiwic2F2ZU9uREIiLCJfMHgxMmIyOGYiLCJfMHgxNGM0Y2UiLCJfMHgzNzk3ZWUiLCJfMHhmNzU5MTMiLCJfMHgyYmE1ODUiLCJnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCIsIl8weDI5OGQ3NSIsIl8weDI0YWUyMSIsIl8weDNiOGI3YSIsIl8weDM3ZDZhMyIsIl8weDMxODliZCIsIl8weDM0NGJkYiIsIl8weDViZjY1MyIsIl8weDllNzgwMyIsIl8weDJlZmQwZCIsImNvbnNvbGUiLCJzYXZlRmlyc3RJbnZvaWNlUGF5bWVudFN1Y2NlZWRlZCIsIl8weGNlMmZkNSIsIl8weDdmYWQxZSIsIl8weDU3NzdjZiIsIl8weDM0MzZiMyIsIl8weDViODcxOSIsIl8weDU4YjlmOSIsIlByb21pc2UiLCJfMHgyNWJhYzUiLCJfMHg1ZDMyYjYiLCJfMHg0M2MyYjMiLCJfMHgyYWRjNjEiLCJfMHgyNzhjNzEiLCJfMHhjOWIwYWYiLCJfMHhkZDhmNmYiLCJfMHgxNDMxMjYiLCJfMHg0NjFlZjQiLCJfMHg1ODJkZjgiLCJfMHgzMGQ5YWEiLCJfMHg5ZjQyOGUiLCJfMHgxZDY3NjkiLCJfMHhmODQyMGYiLCJfMHhkNmU3OTEiLCJfMHgxZGM3YTUiLCJfMHg1YjI5YzkiLCJfMHgzMGQxYTYiLCJfMHgyODhjNTUiLCJfMHgzZDUxN2YiLCJfMHg1ZjNjMmUiLCJfMHg1YmZiYTQiLCJfMHgxMjZlZTEiLCJfMHgyNWRjMmYiLCJfMHg0YjA5NjQiLCJfMHg0YzE4OGIiLCJyZXMiLCJfMHg1NDc4NTgiLCJfMHg5MjVmMTIiLCJfMHgyOGJkYWQiLCJfMHgzYmY2YTgiLCJfMHhmZDYyNTYiLCJfMHgxMjI2NWIiLCJfMHg1NDM4MzIiLCJfMHg1NjE4YzciLCJfMHg3NGM3ZDciLCJfMHg0MTc3NTUiLCJfMHg0ZjMzMjAiLCJfMHgzYzA1ZGUiLCJfMHgzZTcwMWQiLCJfMHgxYzQwMDUiLCJfMHgxNzNiNmQiLCJfMHgxZGEzMjkiLCJfMHgzNmUzMGUiLCJfMHg0MGFmNDkiLCJfMHgyZGYzNjUiLCJfMHg0YmFkYzgiLCJfMHgxODM1ODgiLCJfMHgxNmZiZjMiLCJfMHg1MTU4MzgiLCJfMHgzYzI0MGQiLCJfMHg1NmIwMGUiLCJfMHg1OWMzY2YiLCJfMHgyZmUxYzQiLCJfMHg1YWY0ZWUiLCJfMHgyMzUxMjciLCJwcm9qZWN0IiwiXzB4YWE3ZDkiLCJfMHg0NjkxMDYiLCJfMHgxNWZlOTMiLCJfMHgyODY4NjEiLCJfMHg0MjQzOGIiLCJfMHg1MDU5Y2YiLCJfMHg0YzliMTAiLCJfMHgzNDE2NjQiLCJfMHg1ZTk0OWQiLCJfMHg1MzI0NWQiLCJfMHg0ZjE2ZTIiLCJfMHgxZDQyNzUiLCJfMHgyYzkzNTIiLCJfMHhiZDY5NDUiLCJfMHgxOGQ1NWQiLCJfMHgxMzlhNmQiLCJfMHg3NTBlMzciLCJfMHgxMjE4ZGYiLCJfMHgzMTE4MzgiLCJfMHg0YjFlMmYiLCJfMHgyZGZjZGUiLCJfMHgyZWY3MzYiLCJfMHg0ZGU3ZTgiLCJfMHgzYmZmYjYiLCJfMHg0YjYxYzAiLCJfMHgxNGFlYTIiLCJfMHgzZGEzZjMiLCJfMHgzYzI0NGYiLCJfMHgzN2ZlNmMiLCJfMHgzMWFiMDAiLCJfMHgyMWVhOTgiLCJfMHg0NmE5ZGIiLCJfMHgzNDdmMzQiLCJfMHg1M2YwMjUiLCJfMHg1YmJiY2YiLCJfMHg0YWM1MjciLCJfMHg4YmE3YWIiLCJkZXRhY2hQYXltZW50RnVuYyIsIl8weDFiMTk0ZiIsIl8weDJhZTIwZSIsIl8weDUxNzg3YyIsIl8weDRjYjQ2NCIsIl8weDJjOGI0YyIsIl8weDVlYWZhZSIsIm1vZHVsZSJdLCJtYXBwaW5ncyI6Imk4TEFBQSxJQUFJQSxPQUFBLENBQVVDLE9BQUEsQyxTQUFBLENBQWQsQ0FDQSxJQUFJQyxNQUFBLENBQVNGLE9BQUEsQyxRQUFBLEdBQWIsQ0FFQSxJQUFJRyxPQUFBLENBQVVGLE9BQUEsQyxlQUFBLENBQWQsQ0FFQSxJQUFJRyxPQUFBLENBQVVILE9BQUEsQyx5QkFBQSxDQUFkLENBQ0EsSUFBSUksbUJBQUEsQ0FBc0JKLE9BQUEsQyxnQ0FBQSxDQUExQixDQUNBLElBQUlLLE1BQUEsQ0FBU0wsT0FBQSxDLGVBQUEsQ0FBYixDQUNBLElBQUlNLFFBQUEsQ0FBV04sT0FBQSxDLGVBQUEsQ0FBZixDQUNBLElBQUlPLFFBQUEsQ0FBV1AsT0FBQSxDLGVBQUEsQ0FBZixDQUVBQSxPQUFBLEMsY0FBQSxFQUF3Q08sUUFBeEMsRUFFQSxJQUFJQyxVQUFBLENBQWFSLE9BQUEsQyxpQ0FBQSxDQUFqQixDQUdBLE1BQU1TLE1BQUEsQ0FBU0MsT0FBQSxDLGVBQUEsRSxlQUFBLENBQWYsQ0FDQVIsT0FBQSxDLGVBQUEsRSxlQUFjLENBQWtCTyxNQUFoQyxFQUVBLE1BQU1FLE1BQUEsQ0FBU1gsT0FBQSxDLGVBQUEsRUFBa0JTLE1BQWxCLENBQWYsQ0FHQSxNQUFNRyxjQUFBLENBQWlCRixPQUFBLEMsS0FBQSxFLHVCQUFBLENBQXZCLENBQ0FSLE9BQUEsQyxPQUFBLEUsZUFB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QyxlQUFBLEUsZUFBQSxDQUF1RDJKLFNBQXZELEVBQ0EsTUFBTUUsU0FBQSxDQUFTL0osT0FBQSxDLGVBQUEsRUFBa0JhLFlBQWxCLENBQWYsQ0FDQSxJQUFJbUosU0FBSixDQUNBLEdBQUksQ0FDRkEsU0FBQSxDQUFnQixNQUFNRCxTQUFBLEMsZUFBQSxFLGVBQUEsRUFDcEJGLFNBRG9CLENBQXRCLENBR0FDLFNBQUEsQ0FBU0UsU0FBVCxFQUpFLENBS0YsTUFBT0MsU0FBUCxDQUFVLENBQ1ZILFNBQUEsQ0FBU0csU0FBVCxFQURVLENBVDhDLENBaUQ1REMsTUFBQSxDLGVBQUEsRUFBaUJqSyxNQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xudmFyIHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4vLyB2YXIgd2luc3RvbiA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2NvbmZpZy93aW5zdG9uJyk7XG52YXIgd2luc3RvbiA9IHJlcXVpcmUoJy4uLy4uLy4uL2NvbmZpZy93aW5zdG9uJylcbi8vIHZhciBQcm9qZWN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL21vZGVscy9wcm9qZWN0XCIpO1xudmFyIFByb2plY3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vbW9kZWxzL3Byb2plY3RcIik7XG52YXIgU3Vic2NyaXB0aW9uUGF5bWVudCA9IHJlcXVpcmUoXCIuLi9tb2RlbHMvc3Vic2NyaXB0aW9uLXBheW1lbnRcIik7XG52YXIgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG52YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xudmFyIHBhc3Nwb3J0ID0gcmVxdWlyZSgncGFzc3BvcnQnKTtcbi8vIHJlcXVpcmUoJy4uLy4uLy4uLy4uL21pZGRsZXdhcmUvcGFzc3BvcnQnKShwYXNzcG9ydCk7XG5yZXF1aXJlKFwiLi4vLi4vLi4vbWlkZGxld2FyZS9wYXNzcG9ydFwiKShwYXNzcG9ydCk7XG4vLyB2YXIgdmFsaWR0b2tlbiA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL21pZGRsZXdhcmUvdmFsaWQtdG9rZW4nKVxudmFyIHZhbGlkdG9rZW4gPSByZXF1aXJlKCcuLi8uLi8uLi9taWRkbGV3YXJlL3ZhbGlkLXRva2VuJylcbi8vIFNldCB5b3VyIHNlY3JldCBrZXk6IHJlbWVtYmVyIHRvIGNoYW5nZSB0aGlzIHRvIHlvdXIgbGl2ZSBzZWNyZXQga2V5IGluIHByb2R1Y3Rpb25cbi8vIFNlZSB5b3VyIGtleXMgaGVyZTogaHR0cHM6Ly9kYXNoYm9hcmQuc3RyaXBlLmNvbS9hY2NvdW50L2FwaWtleXNcbmNvbnN0IGFwaUtleSA9IHByb2Nlc3MuZW52LlBBWU1FTlRfU1RSSVBFX0FQSUtFWTtcbndpbnN0b24uZGVidWcoJ3N0cmlwZSBhcGlLZXknICsgYXBpS2V5KTtcblxuY29uc3Qgc3RyaXBlID0gcmVxdWlyZSgnc3RyaXBlJykoYXBpS2V5KTtcblxuLy8gRmluZCB5b3VyIGVuZHBvaW50J3Mgc2VjcmV0IGluIHlvdXIgRGFzaGJvYXJkJ3Mgd2ViaG9vayBzZXR0aW5nc1xuY29uc3QgZW5kcG9pbnRTZWNyZXQgPSBwcm9jZXNzLmVudi5QQVlNRU5UX1NUUklQRV9TRUNSRVQ7XG53aW5zdG9uLmRlYnVnKCdzdHJpcGUgZW5kcG9pbnRTZWNyZXQnICsgZW5kcG9pbnRTZWNyZXQpO1xuXG5jb25zdCBhcGlTZWNyZXRLZXkgPSBwcm9jZXNzLmVudi5QQVlNRU5UX1NUUklQRV9BUElfU0VDUkVUX0tFWTtcbndpbnN0b24uZGVidWcoJ3N0cmlwZSBhcGlTZWNyZXRLZXknICsgYXBpU2VjcmV0S2V5KTtcblxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XG5cbi8vIGh0dHBzOi8vc3RyaXBlLmNvbS9kb2NzL3BheW1lbnRzL2NoZWNrb3V0L2Z1bGZpbGxtZW50I3dlYmhvb2tzXG4vLyBjdXJsIC1YIFBPU1QgLXUgYW5kcmVhLmxlb0BmMjEuaXQ6MTIzNDU2IC1IICdDb250ZW50LVR5cGU6YXBwbGljYXRpb24vanNvbicgLWQgJ3tcInR5cGVcIjpcInBheW1lbnRfaW50ZW50LnN1Y2NlZWRlZFwifScgIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9tb2R1bGVzL3BheW1lbnRzL3N0cmlwZS93ZWJob29rXG5yb3V0ZXIucG9zdCgnL3dlYmhvb2snLCBib2R5UGFyc2VyLnJhdyh7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KSwgZnVuY3Rpb24gKHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIFxuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrvCuyBzdHJpcGUgZW5kcG9pbnRTZWNyZXQ6ICcgKyBlbmRwb2ludFNlY3JldClcbiAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7wrsgc3RyaXBlIGFwaUtleTogJyArIGFwaUtleSk7XG4gIHdpbnN0b24uZGVidWcoJ3N0cmlwZSBhcGlTZWNyZXRLZXknICsgYXBpU2VjcmV0S2V5KTtcblxuICBjb25zdCBzaWcgPSByZXF1ZXN0LmhlYWRlcnNbJ3N0cmlwZS1zaWduYXR1cmUnXTtcblxuICB3aW5zdG9uLmRlYnVnKCdzdHJpcGUgc2lnOiAnLCBzaWcpXG5cbiAgbGV0IGV2ZW50O1xuXG4gIHRyeSB7XG4gICAgZXZlbnQgPSBzdHJpcGUud2ViaG9va3MuY29uc3RydWN0RXZlbnQocmVxdWVzdC5yYXdCb2R5LCBzaWcsIGVuZHBvaW50U2VjcmV0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgd2luc3Rvbi5lcnJvcignKioqKiBTdHJpcGUgZXJyb3IgY29uc3RydWN0RXZlbnQ6ICcsIGVyci5tZXNzYWdlKVxuICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNDAwKS5zZW5kKGBXZWJob29rIEVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqKiEgKioqIEhhbmRsZSB0aGUgY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgZXZlbnQgKioqXG4gICAqIE5PVEU6IFRISVMgRVZFTlQgT0NDVVIgT05MWSBXSEVOIElTIENSRUFURUQgQSBORVcgU1VCU0NSSVBUSU9OXG4gICAqIDEpIEZST00gVEhFIFBST1BFUlRZIFwiY2xpZW50X3JlZmVyZW5jZV9pZFwiIEFSRSBPQlRBSU5FRCBUSEU6XG4gICAqICAgIEEpIFVTRVIgSURcbiAgICogICAgQikgUFJPSkVDVCBJRCBcbiAgICogMikgV0lUSCBUSEUgc3Vic2NyaXB0aW9uIElEIChOT1RFIGlzIHRoZSBwcm9wZXJ0eSBzdWJzY3JpcHRpb24pIElTIFJVTk5FRCBBIENBTExCQUNLIFRPIFNUUklQRVxuICAgKiAgICBUTyBPQlRBSU4gVEhFIE9CSkVDVCBcIlNVQlNDUklQVElPTlwiIEFORCBUSEVOIEZST00gVEhJUyBBUkUgT0JUQUlORUQgVEhFOlxuICAgKiAgICBBKSBzdWJzY3JpcHRpb25TdGFydERhdGVcbiAgICogICAgQikgc3Vic2NyaXB0aW9uRW5kRGF0ZVxuICAgKiAgICBDKSBxdWFudGl0eSAod2hpY2ggaW4gdGhlIHRpbGVkZXNrIGRhc2hib2FyZCBjb3JyZXNwb25kcyB0byB0aGUgbnVtYmVyIG9mIGFnZW50cyAvIG9wZXJhdG9ycyBzZWF0cylcbiAgICogMykgV0lUSCBUSEUgT0JUQUlORUQgREFUQSBJUyBVUERBVEVEIFRIRSBQUk9KRUNUICdQUk9GSUxFJyAoaXMgYW4gb2JqZWN0IG5lc3RlZCBpbiB0aGUgcHJvamVjdCBvYmplY3QpIFxuICAgKiA0KSBUSEUgT0JUQUlORUQgT0JKRUNUIFwiU1VCU0NSSVBUSU9OXCIgQU5EIHRoZSBcIlNVQlNDUklQVElPTiBJRFwiLCB0aGUgXCJQUk9KRUNUIElEXCIsIHRoZSBcIlVTRVIgSURcIiBBTkQgc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCIgQVJFIFNBVkVEIE9OIE9VUiBEQlxuICAgKiAgICBBUyBcIlNVQlNDUklQVElPTi1QQVlNRU5UXCJcbiAgICovXG5cbiAgaWYgKGV2ZW50LnR5cGUgPT09ICdjaGVja291dC5zZXNzaW9uLmNvbXBsZXRlZCcpIHtcbiAgICB3aW5zdG9uLmRlYnVnKCchISEhISEhISBISSAhISEhISEhISBjaGVja291dC5zZXNzaW9uLmNvbXBsZXRlZCcpO1xuXG4gICAgY29uc3Qgc2Vzc2lvbiA9IGV2ZW50LmRhdGEub2JqZWN0O1xuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkJywgc2Vzc2lvbik7XG5cbiAgICB2YXIgY2xpZW50X3JlZmVyZW5jZV9pZCA9IHNlc3Npb24uY2xpZW50X3JlZmVyZW5jZV9pZDtcbiAgICB3aW5zdG9uLmluZm8oJ3N0cmlwZSBjbGllbnRfcmVmZXJlbmNlX2lkJywgY2xpZW50X3JlZmVyZW5jZV9pZCk7XG5cbiAgICAvKiogMUEgKi9cbiAgICB2YXIgdXNlcl9pZCA9IGNsaWVudF9yZWZlcmVuY2VfaWQuc3BsaXQoXCJfXCIpWzBdO1xuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIHVzZXJfaWQ6JyArIHVzZXJfaWQpO1xuXG4gICAgLyoqIDFCICovXG4gICAgdmFyIHByb2plY3RfaWQgPSBjbGllbnRfcmVmZXJlbmNlX2lkLnNwbGl0KFwiX1wiKVsxXTtcbiAgICB3aW5zdG9uLmluZm8oJ3N0cmlwZSBwcm9qZWN0X2lkOiAnICsgcHJvamVjdF9pZCk7XG5cbiAgICB2YXIgcGxhbl9uYW1lID0gY2xpZW50X3JlZmVyZW5jZV9pZC5zcGxpdChcIl9cIilbMl07XG4gICAgd2luc3Rvbi5pbmZvKCdzdHJpcGUgcGxhbl9uYW1lOiAnICsgcGxhbl9uYW1lKTtcblxuICAgIHZhciBzZWF0c19udW1Bc1N0cmluZyA9IGNsaWVudF9yZWZlcmVuY2VfaWQuc3BsaXQoXCJfXCIpWzNdO1xuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIHNlYXRzX251bTogJyArIHNlYXRzX251bUFzU3RyaW5nICsgJ3R5cGVvZiAnLCB0eXBlb2Ygc2VhdHNfbnVtQXNTdHJpbmcpO1xuXG4gICAgdmFyIHNlYXRzX251bSA9IE51bWJlcihzZWF0c19udW1Bc1N0cmluZylcbiAgICB3aW5zdG9uLmluZm8oJ3N0cmlwZSBzZWF0c19udW1Bc1N0cmluZzogJyArIHNlYXRzX251bSArICcgdHlwZW9mICcsIHR5cGVvZiBzZWF0c19udW0pO1xuXG4gICAgdmFyIHN1YnNjcmlwdGlvbklkID0gZXZlbnQuZGF0YS5vYmplY3Quc3Vic2NyaXB0aW9uO1xuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiAhISEhISEhISEhISEhISEhISEhISEhIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkIC0gc3Vic2NyaXB0aW9uIElEOiAnLCBzdWJzY3JpcHRpb25JZCk7XG5cbiAgICBnZXRTdWJzY3JpdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQpLnRoZW4oZnVuY3Rpb24gKHN1YnNjcmlwdGlvbl9vYmopIHtcblxuICAgICAgdmFyIG9iamVjdF90eXBlID0gc3Vic2NyaXB0aW9uX29iai5vYmplY3Q7XG4gICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgLSBnZXRTdWJzY3JpdGlvbkJ5SWQgc3Vic2NyIG9iamVjdF90eXBlOiAnLCBvYmplY3RfdHlwZSk7XG5cbiAgICAgIC8qKiAyQSAqL1xuICAgICAgdmFyIHN1YnNjcmlwdGlvblN0YXJ0RGF0ZSA9IG1vbWVudC51bml4KHN1YnNjcmlwdGlvbl9vYmouY3VycmVudF9wZXJpb2Rfc3RhcnQpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnKVxuICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkIC0gZ2V0U3Vic2NyaXRpb25CeUlkICoqKiBzdGFydCAqKiogOiAnLCBzdWJzY3JpcHRpb25TdGFydERhdGUpO1xuXG4gICAgICAvKiogMkIgKi9cbiAgICAgIHZhciBzdWJzY3JpcHRpb25FbmREYXRlID0gbW9tZW50LnVuaXgoc3Vic2NyaXB0aW9uX29iai5jdXJyZW50X3BlcmlvZF9lbmQpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnKVxuICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkIC0gZ2V0U3Vic2NyaXB0aW9uICoqKiBlbmQgKioqIDogJywgc3Vic2NyaXB0aW9uRW5kRGF0ZSk7XG5cbiAgICAgIC8qKlxuICAgICAgICohICoqKiBCT0RZICoqKlxuICAgICAgICovXG4gICAgICB2YXIgYm9keSA9IHtcbiAgICAgICAgcHJvZmlsZToge1xuICAgICAgICAgIG5hbWU6IHBsYW5fbmFtZSxcbiAgICAgICAgICB0eXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgc3Vic2NyaXB0aW9uX2NyZWF0aW9uX2RhdGU6IHN1YnNjcmlwdGlvblN0YXJ0RGF0ZSxcbiAgICAgICAgICBzdWJTdGFydDogc3Vic2NyaXB0aW9uU3RhcnREYXRlLFxuICAgICAgICAgIHN1YkVuZDogc3Vic2NyaXB0aW9uRW5kRGF0ZSxcbiAgICAgICAgICBzdWJzY3JpcHRpb25JZDogc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgbGFzdF9zdHJpcGVfZXZlbnQ6IGV2ZW50LnR5cGUsXG4gICAgICAgICAgYWdlbnRzOiBzZWF0c19udW1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiogMyAqL1xuICAgICAgdXBkYXRlUHJvamVjdFByb2ZpbGUocHJvamVjdF9pZCwgYm9keSwgJ2NoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkJyk7XG5cbiAgICAgIC8qKiA0ICovXG4gICAgICBzYXZlT25EQihzdWJzY3JpcHRpb25JZCwgcHJvamVjdF9pZCwgc3Vic2NyaXB0aW9uX29iaiwgdXNlcl9pZCwgZXZlbnQudHlwZSwgcGxhbl9uYW1lLCBzZWF0c19udW0pXG5cbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmVycm9yKCcqKiogKioqIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkIC0gZ2V0U3Vic2NyaXRpb25CeUlkIGVyciAnLCBlcnIpO1xuICAgIH0pO1xuXG4gIH1cbiAgLy8gb2JqZWN0X3R5cGUgPSBzdWJzY3JpcHRpb24uXG4gIC8qKlxuICAgKiohICoqKiBIYW5kbGUgdGhlIGludm9pY2UucGF5bWVudF9zdWNjZWVkZWQgZXZlbnQgKioqXG4gICAqIE5PVEU6IFRISVMgRVZFTlQgT0NDVVIgV0hFTiBJUyBDUkVBVEVEIEEgTkVXIFNVQlNDUklQVElPTiBBTkQgRVZFUlkgVElNRSBUSEUgU0FNRSBJUyBSRU5FV0VEXG4gICAqIDEpIEZST00gVEhFIE9CSkVDVCBPRiBUSEUgRVZFTlQgQVJFIE9CVEFJTkVEIFRIRTpcbiAgICogICAgQSkgc3Vic2NyaXB0aW9uU3RhcnREYXRlXG4gICAqICAgIEIpIHN1YnNjcmlwdGlvbkVuZERhdGVcbiAgICogICAgQykgc3Vic2NyaXRwdGlvbklkICBcbiAgICogMikgd2hlbiByZWZlciB0byBhIFJFTkVXQUwgKCBiaWxsaW5nX3JlYXNvbiA9PT0gc3Vic2NyaXB0aW9uX2N5Y2xlKVxuICAgKiAgICBJRiBUSEUgVkFMVUUgT0YgVEhFIFBST1BFUlRZIFwiYmlsbGluZ19yZWFzb25cIiBJUyBVTkxJS0UgT0YgXCJzdWJzY3JpcHRpb25fY3JlYXRlXCIgKE1FQU5TIFRIQVQgVEhFIEVWRU5UIFJFRkVSIFRPIEEgUkVORVdBTCBcbiAgICogICAgRk9SIFdISUNIIGJpbGxpbmdfcmVhc29uOiBzdWJzY3JpcHRpb25fY3ljbGUgQU5EIE5PVCBUTyBUSEUgRklSU1QgU1VCU0NSSVBUSU9OKSBcbiAgICogICAgQSkgSVMgT0JUQUlORUQgVEhFICdTVUJTQ1JJUFRJT04tUEFZTUVOVCcgKHdpdGggc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCIpIFNBVkVEIEFCT1ZFIEFORCBUSEVOIEZST00gVEhJUzpcbiAgICogICAgICAgLSBUSEUgXCJQUk9KRUNUIElEXCIgXG4gICAqICAgICAgIC0gVEhFIFwiVVNFUiBJRFwiXG4gICAqICAgICAgIFRPIE9CVEFJTiBUSEUgJ1NVQlNDUklQVElPTi1QQVlNRU5UJ0lOIE9VUiBEQiBJUyBMT09LRUQgRk9SIFRIRSBcIlNVQlNDUklQSU9OLVBBWU1FTlRcIiBUSEFUIEhBUyBGT1Igc3Vic2NyaXB0aW9uIGlkIFRIRSBWQUxVRSBPRiAxQyBBTkQgc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCJcbiAgICogICAgICAgVEhFIENPTkRJVElPTiBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIiAoTk8gTU9SRTogb2JqZWN0X3R5cGUgPSBzdWJzY3JpcHRpb24pIElUJ1MgTkVDRVNTQVJZIFRPIEZJTFRFUiBUSEUgXCJTVUJTQ1JJUElPTi1QQVlNRU5UU1wiIFxuICAgKiAgICAgICBUSEFUIENPTlRBSU4gVEhFICBQUk9QRVJUSUVTICBcInByb2plY3RJRFwiIEFORCBcInVzZXJJRFwiXG4gICAqICAgICAgIFRIRSBFWElTVEVOQ0UgT0YgQSBcIlNVQlNDUklQVElPTi1QQVlNRU5UXCIgV0lUSE9VVCBcInByb2plY3RJRFwiIEFORCBcInVzZXJJRFwiIElTIERVRSBUTyBUSEUgRkFDVCBUSEFUIEFUIFRIRSBNT01FTlQgT0YgVEhFIENSRUFUSU9OIE9GIEEgU1VCU0NSSVBUSU9OIFxuICAgKiAgICAgICBJUyBTQVZFRCBJTiBPVVIgREIgQUxTTyBBIFwiU1VCU0NSSVBUSU9OLVBBWU1FTlRcIiBDT1JSRVNQT05ESU5HIFRPIFRIRSBPQkpFQ1QgUkVUVVJORUQgQlkgIFRIRSBFVkVOVCBcImludm9pY2UucGF5bWVudF9zdWNjZWVkZWRcIiBVU0VGVUwgQkVDQVVTRSBcbiAgICogICAgICAgSVQgQ09OVEFJTlMgVEhFIExJTktTIE9GIFRIRSBJTlZPSUNFIE9GIFRIRSBGSVJTVCBTVUJTQ1JJUFRJT04gKHVzZWQgYnkgdGlsZWRlc2sgZGFzaGJvYXJkIGluIHRoZSBjb21wb25lbnRzIHBheW1lbnRzKVxuICAgKiAgICAgICBCVVQgRlJPTSBXSElDSCBJVCBJUyBOT1QgUE9TU0lCTEUgUFVTSCBBTkQgVEhFTiBUTyBUTyBPQlRBSU4gVEhFIFwicHJvamVjdElEXCIgQU5EIFwidXNlcklEXCJcbiAgICogICAgQikgSVMgVVBEQVRFRCBUSEUgUFJPSkVDVCAnUFJPRklMRScgV0lUSDpcbiAgICogICAgICAgLSBEQVRBIE9CVEFJTkVEIEZST00gVEhFIEVWRU5UJ1MgT0JKRUNUOlxuICAgKiAgICAgICAgIC0gc3Vic2NyaXB0aW9uU3RhcnREYXRlXG4gICAqICAgICAgICAgLSBzdWJzY3JpcHRpb25FbmREYXRlXG4gICAqICAgICAgICAgLSBzdWJzY3JpcHRpb25JZCBcbiAgICogICAgICAgICAtIGxhc3Rfc3RyaXBlX2V2ZW50IFxuICAgKiAgICAgICAgIC0gcXVhbnRpdHkgKHdoaWNoIGluIHRoZSBkYXNoYm9hcmQgY29ycmVzcG9uZHMgdG8gdGhlIG51bWJlciBvZiBhZ2VudHMgLyBvcGVyYXRvcnMgc2VhdHMpXG4gICAqICAgICAgIC0gREFUQSBPQlRBSU5FRCBGUk9NIFRIRSAnU1VCU0NSSVBUSU9OLVBBWU1FTlQnIHdpdGggc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCJcbiAgICogICAgICAgICAtIFwiUFJPSkVDVCBJRFwiIGFuZCBcIlVTRVIgSURcIlxuICAgKiAgICBDKSBUSEUgT0JKRUNUIE9GIFRIRSBFVkVOVCBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIEFORCB0aGUgXCJTVUJTQ1JJUFRJT04gSURcIiwgdGhlIFwiUFJPSkVDVCBJRFwiLCB0aGUgXCJVU0VSIElEXCIgQU5EIHRoZSBcIk9CSkVDVF9UWVBFXCIgKGV2ZW50KSBcbiAgICogICAgICAgQVJFIFNBVkVEIEFTIFwiU1VCU0NSSVBUSU9OLVBBWU1FTlRcIiBPTiBPVVIgREJcbiAgICogMykgd2hlbiByZWZlciB0byBhIENSRUFUSU9OIChiaWxsaW5nX3JlYXNvbiA9PT0gc3Vic2NyaXB0aW9uX2NyZWF0ZSlcbiAgICogICAgQSkgVEhFIE9CSkVDVCBPRiBUSEUgRVZFTlQgaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCBBTkQgVEhFIERBVEEgZXZlbnQudHlwZSA9PT0gaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAgQVJFIFNBVkVEIEFTIFwiU1VCU0NSSVBUSU9OLVBBWU1FTlRcIlxuICAgKiAgICAgICBPTiBPVVIgREIgKE5PVEU6IFwiUFJPSkVDVCBJRFwiIEFORCBcIlVTRVIgSURcIiBBUkUgU0FWRUQgQVMgbnVsbCBTSU5DRSBJUyBOT1QgUE9TU0lCTEUgVE8gUkVUUklFVkUgVEhFIFZBTFVFUykgXG4gICAqIFxuICAgKi9cbiAgaWYgKGV2ZW50LnR5cGUgPT09ICdpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkJykge1xuXG4gICAgd2luc3Rvbi5pbmZvKCcgISEhISEhISEgSEkgISEhISEhISEgaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCcpO1xuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gQklMTElORyBSRUFTT04gJywgZXZlbnQuZGF0YS5vYmplY3QuYmlsbGluZ19yZWFzb24pO1xuXG4gICAgdmFyIGxpbmVzTnVtID0gZXZlbnQuZGF0YS5vYmplY3QubGluZXMudG90YWxfY291bnRcbiAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAtIGxpbmVzTnVtOiAnLCBsaW5lc051bSk7XG5cbiAgICB2YXIgaW5kZXggPSBsaW5lc051bSAtIDE7XG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGludm9pY2UucGF5bWVudF9zdWNjZWVkZWQgLSBpbmRleDogJywgaW5kZXgpO1xuXG4gICAgLyoqIDFBICovIC8vIFRISVMgV09SS1NcbiAgICB2YXIgc3Vic2NyaXB0aW9uU3RhcnREYXRlID0gbW9tZW50LnVuaXgoZXZlbnQuZGF0YS5vYmplY3QubGluZXMuZGF0YVtpbmRleF0ucGVyaW9kLnN0YXJ0KS5mb3JtYXQoJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJylcbiAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAtIHN0YXJ0OiAnLCBzdWJzY3JpcHRpb25TdGFydERhdGUpO1xuXG4gICAgLyoqIDFCICovIC8vIFRISVMgV09SS1NcbiAgICB2YXIgc3Vic2NyaXB0aW9uRW5kRGF0ZSA9IG1vbWVudC51bml4KGV2ZW50LmRhdGEub2JqZWN0LmxpbmVzLmRhdGFbaW5kZXhdLnBlcmlvZC5lbmQpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnKVxuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gZW5kOiAnLCBzdWJzY3JpcHRpb25FbmREYXRlKTtcblxuICAgIHZhciBzdWJzY3JpcHRpb25JZCA9IGV2ZW50LmRhdGEub2JqZWN0LnN1YnNjcmlwdGlvbjtcbiAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAtIHN1YnNjcmlwdGlvbiBJRDogJywgc3Vic2NyaXB0aW9uSWQpO1xuXG4gICAgaWYgKHN1YnNjcmlwdGlvbklkID09IG51bGwpIHtcbiAgICAgIHN1YnNjcmlwdGlvbklkID0gZXZlbnQuZGF0YS5vYmplY3QubGluZXMuZGF0YVswXS5zdWJzY3JpcHRpb247XG4gICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAtIHN1YnNjcmlwdGlvbiBJRDogJywgc3Vic2NyaXB0aW9uSWQpO1xuICAgIH1cblxuICAgIGlmIChldmVudC5kYXRhLm9iamVjdC5iaWxsaW5nX3JlYXNvbiAhPT0gJ3N1YnNjcmlwdGlvbl9jcmVhdGUnKSB7XG5cblxuICAgICAgLy8gVE8gVEVTVCBUSEUgUkVORVdBTCBVTkNPTU1FTlQgU0VUIFRJTUVPVVRcbiAgICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgLyoqIDJBICovXG4gICAgICBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudChzdWJzY3JpcHRpb25JZCkudGhlbihmdW5jdGlvbiAoc3Vic3B0bl9wYXltZW50KSB7XG4gICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCBzdWJzcHRuX3BheW1lbnQ6ICcsIHN1YnNwdG5fcGF5bWVudCk7XG4gICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCBzdWJzcHRuX3BheW1lbnQgdHlwZW9mIHN1YnNwdG5fcGF5bWVudDogJywgdHlwZW9mIHN1YnNwdG5fcGF5bWVudCk7XG4gICAgICAgIGlmIChzdWJzcHRuX3BheW1lbnQpIHtcblxuICAgICAgICAgIHZhciBwcm9qZWN0SWQgPSBzdWJzcHRuX3BheW1lbnQucHJvamVjdF9pZFxuICAgICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCBzdWJzcHRuX3BheW1lbnQgPiBwcm9qZWN0X2lkOiAnLCBwcm9qZWN0SWQpO1xuXG4gICAgICAgICAgUHJvamVjdC5maW5kT25lKHsgX2lkOiBwcm9qZWN0SWQgfSwgZnVuY3Rpb24gKGVyciwgcHJvamVjdCkge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQgIGZpbmQgUHJvamVjdCAnLCBlcnIpO1xuICAgICAgICAgICAgICByZXR1cm4gKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvamVjdCkge1xuICAgICAgICAgICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQgIHByb2plY3QgJywgcHJvamVjdCk7XG4gICAgICAgICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCAgcHJvamVjdCA+IHByb2ZpbGUnLCBwcm9qZWN0LnByb2ZpbGUpO1xuXG4gICAgICAgICAgICAgIHZhciBzZWF0c19udW0gPSBwcm9qZWN0LnByb2ZpbGUuYWdlbnRzO1xuICAgICAgICAgICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQgIHByb2plY3QgPiBwcm9maWxlID4gYWdlbnRzJywgc2VhdHNfbnVtKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHZhciBwbGFuX25hbWUgPSBwcm9qZWN0LnByb2ZpbGUubmFtZTtcbiAgICAgICAgICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50ICBwcm9qZWN0ID4gcHJvZmlsZSA+IGFnZW50cyB0eXBlb2YnLCB0eXBlb2Ygc2VhdHNfbnVtKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHZhciB1c2VySWQgPSBzdWJzcHRuX3BheW1lbnQudXNlcl9pZFxuICAgICAgICAgICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQgIHByb2plY3QgPiBwcm9maWxlID4gbmFtZScsIHBsYW5fbmFtZSk7XG5cbiAgICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgLy8gIEJPRFkgXG4gICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgIHZhciBib2R5ID0ge1xuICAgICAgICAgICAgICAgIHByb2ZpbGU6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHBsYW5fbmFtZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgICAgICAgIHN1YlN0YXJ0OiBzdWJzY3JpcHRpb25TdGFydERhdGUsXG4gICAgICAgICAgICAgICAgICBzdWJFbmQ6IHN1YnNjcmlwdGlvbkVuZERhdGUsXG4gICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25JZDogc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICAgICAgICBsYXN0X3N0cmlwZV9ldmVudDogZXZlbnQudHlwZSxcbiAgICAgICAgICAgICAgICAgIGFnZW50czogc2VhdHNfbnVtXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLyoqIDJCICovXG4gICAgICAgICAgICAgIHVwZGF0ZVByb2plY3RQcm9maWxlKHByb2plY3RJZCwgYm9keSwgJ2ludm9pY2UucGF5bWVudF9zdWNjZWVkZWQnKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8qKiAyQyAqL1xuICAgICAgICAgICAgICBzYXZlT25EQihzdWJzY3JpcHRpb25JZCwgcHJvamVjdElkLCBldmVudCwgdXNlcklkLCBldmVudC50eXBlLCBwbGFuX25hbWUsIHNlYXRzX251bSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHdpbnN0b24uZXJyb3IoJyoqKiAqKiogZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQgLSBlcnIgJywgZXJyKTtcbiAgICAgIH0pO1xuICAgICAgLy8gfSwgNTAwMCk7XG4gICAgfSBcbiAgICBlbHNlIGlmIChldmVudC5kYXRhLm9iamVjdC5iaWxsaW5nX3JlYXNvbiA9PT0gJ3N1YnNjcmlwdGlvbl9jcmVhdGUnKSB7XG4gICAgICBjb25zb2xlLmxvZygnVVNFQ0FTRSAgaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAgYmlsbGluZ19yZWFzb24gc3Vic2NyaXB0aW9uX2NyZWF0ZSAnKSBcbiAgICAgIHNhdmVGaXJzdEludm9pY2VQYXltZW50U3VjY2VlZGVkKHN1YnNjcmlwdGlvbklkLCBldmVudCwgZXZlbnQudHlwZSk7XG4gICAgfSBcbiAgXG4gIH1cblxuICAvKipcbiAgICoqISAqKiogSEFORExFIFRIRSBFVkVOVCBjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCAqKipcbiAgICogdGhpcyBldmVudCBvY2N1cnMgd2hlbiBhIHN1YnNjcmlwdGlvbiBpcyBjYW5jZWxsZWRcbiAgICogLSBmcm9tIHRoZSBUSUxFREVTSycgZGFzaGJvYXJkIChieSBjbGlja2luZyBDQU5DRUwgU1VCU0NSSVBUSU9OIHRoYXQgY2FsbCBjYW5jZWxzdWJzY3JpcHRpb24oKSAtIHNlZSBiZWxvdylcbiAgICogLSBmcm9tIHRoZSBTVFJJUEUnIGRhc2hib2FyZFxuICAgKi9cbiAgaWYgKGV2ZW50LnR5cGUgPT09ICdjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCcpIHtcbiAgICB3aW5zdG9uLmluZm8oJyAhISEhISEhISBISSAhISEhISEhISEhISBjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCcpO1xuICAgIHdpbnN0b24uaW5mbygnY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgZXZlbnQgJywgZXZlbnQpO1xuICAgIHZhciBzdWJzY3JpcHRpb25JZCA9IGV2ZW50LmRhdGEub2JqZWN0LmlkXG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIHN1YnNjcmlwdGlvbiBJRCAnLCBzdWJzY3JpcHRpb25JZCk7XG5cbiAgICBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudChzdWJzY3JpcHRpb25JZCkudGhlbihmdW5jdGlvbiAoc3Vic2NyaXB0aW9uUGF5bWVudCkge1xuICAgICAgLy8gU3Vic2NyaXB0aW9uUGF5bWVudC5maW5kKHsgc3Vic2NyaXB0aW9uX2lkOiBzdWJzY3JpcHRpb25JZCwgb2JqZWN0X3R5cGU6IFwic3Vic2NyaXB0aW9uXCIgfSwgZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uUGF5bWVudCkge1xuXG4gICAgICAvLyBpZiAoZXJyKSB7XG4gICAgICAvLyAgIHdpbnN0b24uaW5mbygnRXJyb3IgZ2V0dGluZyB0aGUgc3Vic2NyaXB0aW9uUGF5bWVudCAnLCBlcnIpO1xuICAgICAgLy8gICByZXR1cm4gZXJyO1xuICAgICAgLy8gfVxuICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIMK7wrvCuyDCu8K7wrsgY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgc3Vic2NyaXB0aW9uUGF5bWVudCAnLCBzdWJzY3JpcHRpb25QYXltZW50KTtcbiAgICAgIGlmIChzdWJzY3JpcHRpb25QYXltZW50KSB7IFxuICAgICAgICB2YXIgcHJvamVjdElkID0gc3Vic2NyaXB0aW9uUGF5bWVudC5wcm9qZWN0X2lkOyBcbiAgICAgICAgd2luc3Rvbi5pbmZvKCdjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCBzdWJzY3JpcHRpb25QYXltZW50IHByb2plY3QgaWQ6ICcsIHByb2plY3RJZClcbiAgICAgICAgXG4gICAgICAgIHZhciB1c2VySWQgPSBzdWJzY3JpcHRpb25QYXltZW50LnVzZXJfaWQ7XG4gICAgICAgIHdpbnN0b24uaW5mbygnY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgc3Vic2NyaXB0aW9uUGF5bWVudCB1c2VyIGlkOiAnLCB1c2VySWQpXG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICohICoqKiBCT0RZICoqKlxuICAgICAgICovXG4gICAgICB2YXIgYm9keSA9IHtcbiAgICAgICAgcHJvZmlsZToge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBzdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICBuYW1lOiAnU2FuZGJveCcsXG4gICAgICAgICAgdHlwZTogJ2ZyZWUnLFxuICAgICAgICAgIGFnZW50czogMSxcbiAgICAgICAgICBsYXN0X3N0cmlwZV9ldmVudDogZXZlbnQudHlwZSxcbiAgICAgICAgICBzdWJFbmQ6IGV2ZW50LmRhdGEub2JqZWN0LmNhbmNlbGVkX2F0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgd2luc3Rvbi5pbmZvKFwiY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgcHJvZmlsZSB0byB1cGRhdGUgKGV2ZW50LmRhdGEub2JqZWN0LmNhbmNlbGVkX2F0KSBcIiwgZXZlbnQuZGF0YS5vYmplY3QuY2FuY2VsZWRfYXQpXG4gICAgICB3aW5zdG9uLmluZm8oXCJjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCBwcm9maWxlIHRvIHVwZGF0ZSBcIiwgYm9keS5wcm9maWxlKVxuICAgICAgXG4gICAgICB1cGRhdGVQcm9qZWN0UHJvZmlsZShwcm9qZWN0SWQsIGJvZHksICdzdWJzY3JpcHRpb24uZGVsZXRlZCcpO1xuICAgICAgc2F2ZU9uREIoc3Vic2NyaXB0aW9uSWQsIHByb2plY3RJZCwgZXZlbnQuZGF0YS5vYmplY3QsIHVzZXJJZCwgZXZlbnQudHlwZSwgcGxhbl9uYW1lLCAxKTtcblxuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJyoqKiAqKiogY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgJywgZXJyKTtcbiAgICB9KTtcblxuICB9XG4gIC8vIFJldHVybiBhIHJlc3BvbnNlIHRvIGFja25vd2xlZGdlIHJlY2VpcHQgb2YgdGhlIGV2ZW50XG4gIHJlc3BvbnNlLmpzb24oeyByZWNlaXZlZDogdHJ1ZSB9KTtcbn0pO1xuXG5cbmZ1bmN0aW9uIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50KHN1YnNjcmlwdGlvbmlkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgU3Vic2NyaXB0aW9uUGF5bWVudC5maW5kT25lKHsgc3Vic2NyaXB0aW9uX2lkOiBzdWJzY3JpcHRpb25pZCwgc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCIgfSwgZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uUGF5bWVudCkge1xuICAgICAgaWYgKGVycikgcmVqZWN0KGVycik7XG5cbiAgICAgIHZhciBzdWJzY3JpcHRpb25fcGF5bWVudCA9IHN1YnNjcmlwdGlvblBheW1lbnQ7XG4gICAgICByZXNvbHZlKHN1YnNjcmlwdGlvbl9wYXltZW50KTtcbiAgICB9KTtcbiAgfSlcbn07XG5cbmZ1bmN0aW9uIGdldFN1YnNjcml0aW9uQnlJZChzdWJzY3JpcHRpb25pZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGNvbnN0IF9zdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG4gICAgX3N0cmlwZS5zdWJzY3JpcHRpb25zLnJldHJpZXZlKHN1YnNjcmlwdGlvbmlkLCBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb24pIHtcbiAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpO1xuXG4gICAgICB2YXIgc3Vic2NyaXB0aW9uID0gc3Vic2NyaXB0aW9uO1xuICAgICAgcmVzb2x2ZShzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICB9KVxufTtcblxuLy8gU0VFIFVwZGF0aW5nIG5lc3RlZCBvYmplY3QgaW4gbW9uZ29vc2UgXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzgzMjkyMS91cGRhdGluZy1uZXN0ZWQtb2JqZWN0LWluLW1vbmdvb3NlXG5mdW5jdGlvbiB1cGRhdGVQcm9qZWN0UHJvZmlsZShwcm9qZWN0X2lkLCBib2R5LCBjYWxsZWRCeSkge1xuICBQcm9qZWN0LmZpbmRCeUlkQW5kVXBkYXRlKHByb2plY3RfaWQsIGJvZHksIHsgbmV3OiB0cnVlLCB1cHNlcnQ6IHRydWUgfSwgZnVuY3Rpb24gKGVyciwgdXBkYXRlZFByb2plY3QpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmVycm9yKCd1cGRhdGVQcm9qZWN0UHJvZmlsZSBFcnJvciAnLCBlcnIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5zdG9uLmRlYnVnKHVwZGF0ZWRQcm9qZWN0KVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNhdmVPbkRCKHN1YnNjcmlwdGlvbmlkLCBwcm9qZWN0aWQsIG9iaiwgdXNlcmlkLCBzdHJpcGVfZXZlbnQsIHBsYW5fbmFtZSwgc2VhdHNfbnVtKSB7XG4gIHdpbnN0b24uaW5mbygnc2F2ZU9uREIgcGxhbl9uYW1lJywgcGxhbl9uYW1lKVxuICB3aW5zdG9uLmluZm8oJ3NhdmVPbkRCIHNlYXRzX251bScsIHNlYXRzX251bSlcblxuICB2YXIgbmV3UGF5bWVudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25QYXltZW50KHtcbiAgICBfaWQ6IG5ldyBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxuICAgIHN1YnNjcmlwdGlvbl9pZDogc3Vic2NyaXB0aW9uaWQsXG4gICAgcHJvamVjdF9pZDogcHJvamVjdGlkLFxuICAgIHVzZXJfaWQ6IHVzZXJpZCxcbiAgICBzdHJpcGVfZXZlbnQ6IHN0cmlwZV9ldmVudCxcbiAgICBwbGFuX25hbWU6IHBsYW5fbmFtZSxcbiAgICBhZ2VudHM6IHNlYXRzX251bSxcbiAgICBvYmplY3Q6IG9ialxuICB9KTtcblxuICBuZXdQYXltZW50U3Vic2NyaXB0aW9uLnNhdmUoZnVuY3Rpb24gKGVyciwgc2F2ZWRTdWJzY3JpcHRpb25QYXltZW50KSB7XG4gICAgaWYgKGVycikge1xuICAgICAgd2luc3Rvbi5lcnJvcignLS0tID4gRVJST1IgJywgZXJyKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogJ0Vycm9yIHNhdmluZyBvYmplY3QuJyB9KTtcbiAgICB9XG4gICAgd2luc3Rvbi5pbmZvKCdzYXZlZFN1YnNjcmlwdGlvblBheW1lbnQgJywgc2F2ZWRTdWJzY3JpcHRpb25QYXltZW50KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNhdmVGaXJzdEludm9pY2VQYXltZW50U3VjY2VlZGVkKHN1YnNjcmlwdGlvbmlkLCBvYmosIHN0cmlwZV9ldmVudCkge1xuICBjb25zb2xlLmxvZygnc2F2ZUZpcnN0SW52b2ljZVBheW1lbnRTdWNjZWVkZWQgc3Vic2NyaXB0aW9uaWQnLCBzdWJzY3JpcHRpb25pZClcbiAgY29uc29sZS5sb2coJ3NhdmVGaXJzdEludm9pY2VQYXltZW50U3VjY2VlZGVkIHN0cmlwZV9ldmVudCcsIHN0cmlwZV9ldmVudClcblxuICB2YXIgbmV3UGF5bWVudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25QYXltZW50KHtcbiAgICBfaWQ6IG5ldyBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxuICAgIHN1YnNjcmlwdGlvbl9pZDogc3Vic2NyaXB0aW9uaWQsXG4gICAgc3RyaXBlX2V2ZW50OiBzdHJpcGVfZXZlbnQsXG4gICAgb2JqZWN0OiBvYmpcbiAgfSk7XG5cbiAgbmV3UGF5bWVudFN1YnNjcmlwdGlvbi5zYXZlKGZ1bmN0aW9uIChlcnIsIHNhdmVkU3Vic2NyaXB0aW9uUGF5bWVudCkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJy0tLSA+IEVSUk9SICcsIGVycilcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6ICdFcnJvciBzYXZpbmcgb2JqZWN0LicgfSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdzYXZlZFN1YnNjcmlwdGlvblBheW1lbnQgPj4gJywgc2F2ZWRTdWJzY3JpcHRpb25QYXltZW50KTtcbiAgfSk7XG59XG5cbnJvdXRlci5wdXQoJy9jYW5jZWxzdWJzY3JpcHRpb24nLCBbcGFzc3BvcnQuYXV0aGVudGljYXRlKFsnYmFzaWMnLCAnand0J10sIHsgc2Vzc2lvbjogZmFsc2UgfSksIHZhbGlkdG9rZW5dLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAgdmFyIHByb2plY3RpZCA9IHJlcS5ib2R5LnByb2plY3RpZFxuICB2YXIgdXNlcmlkID0gcmVxLmJvZHkudXNlcmlkXG4gIHdpbnN0b24uaW5mbygnwrvCu8K7IMK7wrvCuyBjYW5jZWxzdWJzY3JpcHRpb24gcHJvamVjdGlkJywgcHJvamVjdGlkKTtcbiAgd2luc3Rvbi5pbmZvKCfCu8K7wrsgwrvCu8K7IGNhbmNlbHN1YnNjcmlwdGlvbiB1c2VyaWQnLCB1c2VyaWQpO1xuXG4gIFByb2plY3QuZmluZE9uZSh7IF9pZDogcHJvamVjdGlkIH0sIGZ1bmN0aW9uIChlcnIsIHByb2plY3QpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmVycm9yKCctLSA+IGNhbmNlbHN1YnNjcmlwdGlvbiBFcnJvciBnZXR0aW5nIHByb2plY3QgJywgZXJyKVxuICAgICAgcmV0dXJuIChlcnIpO1xuICAgIH1cbiAgICBpZiAocHJvamVjdCkge1xuICAgICAgd2luc3Rvbi5pbmZvKCctLSA+IGNhbmNlbHN1YnNjcmlwdGlvbiAgcHJvamVjdCAnLCBwcm9qZWN0KTtcblxuICAgICAgdmFyIHN1YnNjcmlwdGlvbmlkID0gcHJvamVjdC5wcm9maWxlLnN1YnNjcmlwdGlvbklkO1xuXG4gICAgICBjb25zdCBzdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG5cbiAgICAgIHN0cmlwZS5zdWJzY3JpcHRpb25zLmRlbChzdWJzY3JpcHRpb25pZCwgZnVuY3Rpb24gKGVyciwgY29uZmlybWF0aW9uKSB7XG4gICAgICAgIC8vIGFzeW5jaHJvbm91c2x5IGNhbGxlZFxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgd2luc3Rvbi5lcnJvcignLS0gPiBjYW5jZWxzdWJzY3JpcHRpb24gIGVyciAnLCBlcnIpO1xuICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6IGVyciB9KVxuICAgICAgICB9XG4gICAgICAgIHdpbnN0b24uaW5mbygnLS0gPiBjYW5jZWxzdWJzY3JpcHRpb24gY29uZmlybWF0aW9uICcsIGNvbmZpcm1hdGlvbilcbiAgICAgICAgcmVzLmpzb24oY29uZmlybWF0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSlcbn0pO1xuXG5yb3V0ZXIucHV0KCcvdXBkYXRlc3Vic2NyaXB0aW9uJywgW3Bhc3Nwb3J0LmF1dGhlbnRpY2F0ZShbJ2Jhc2ljJywgJ2p3dCddLCB7IHNlc3Npb246IGZhbHNlIH0pLCB2YWxpZHRva2VuXSwgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG5cbiAgdmFyIHByb2plY3RpZCA9IHJlcS5ib2R5LnByb2plY3RpZFxuICB2YXIgdXNlcmlkID0gcmVxLmJvZHkudXNlcmlkXG4gIHZhciBwcmljZSA9IHJlcS5ib2R5LnByaWNlXG4gIHdpbnN0b24uaW5mbygnwrvCu8K7IMK7wrvCuyB1cGRhdGVzdWJzY3JpcHRpb24gcHJvamVjdGlkJywgcHJvamVjdGlkKTtcbiAgd2luc3Rvbi5pbmZvKCfCu8K7wrsgwrvCu8K7IHVwZGF0ZXN1YnNjcmlwdGlvbiB1c2VyaWQnLCB1c2VyaWQpO1xuICB3aW5zdG9uLmluZm8oJ8K7wrvCuyDCu8K7wrsgdXBkYXRlc3Vic2NyaXB0aW9uIHByaWNlJywgcHJpY2UpO1xuICBjb25zdCBzdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG5cbiAgUHJvamVjdC5maW5kT25lKHsgX2lkOiBwcm9qZWN0aWQgfSwgZnVuY3Rpb24gKGVyciwgcHJvamVjdCkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJy0tID4gdXBkYXRlc3Vic2NyaXB0aW9uIEVycm9yIGdldHRpbmcgcHJvamVjdCAnLCBlcnIpXG4gICAgICByZXR1cm4gKGVycik7XG4gICAgfVxuICAgIGlmIChwcm9qZWN0KSB7XG4gICAgICB3aW5zdG9uLmluZm8oJy0tID4gdXBkYXRlc3Vic2NyaXB0aW9uICBwcm9qZWN0ICcsIHByb2plY3QpO1xuXG4gICAgICB2YXIgc3Vic2NyaXB0aW9uaWQgPSBwcm9qZWN0LnByb2ZpbGUuc3Vic2NyaXB0aW9uSWQ7XG5cbiAgICAgIC8vIHN1YnNjcmlwdGlvbmlkXG4gICAgICBzdHJpcGUuc3Vic2NyaXB0aW9ucy51cGRhdGUoXG4gICAgICAgIHN1YnNjcmlwdGlvbmlkLFxuICAgICAgICAvLyB7IHRyaWFsX2VuZDogMTU2ODIxMDY1NSB9LFxuICAgICAgICAvLyBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb24pIHtcbiAgICAgICAgLy8gICAvLyBhc3luY2hyb25vdXNseSBjYWxsZWRcbiAgICAgICAgLy8gICBpZiAoZXJyKSB7XG4gICAgICAgIC8vICAgICB3aW5zdG9uLmVycm9yKCd1cGRhdGVzdWJzY3JpcHRpb24gc3Vic2NyaXB0aW9uIGVyciAnLCBlcnIpXG4gICAgICAgIC8vICAgICByZXR1cm5cbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vICAgd2luc3Rvbi5pbmZvKCd1cGRhdGVzdWJzY3JpcHRpb24gc3Vic2NyaXB0aW9uICcsIHN1YnNjcmlwdGlvbilcbiAgICAgICAgLy8gfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzdHJpcGUuc3Vic2NyaXB0aW9ucy5yZXRyaWV2ZShzdWJzY3JpcHRpb25pZCwgZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uKSB7XG4gICAgLy8gICAvLyBhc3luY2hyb25vdXNseSBjYWxsZWRcbiAgICAvLyAgIGlmIChlcnIpIHtcbiAgICAvLyAgICAgd2luc3Rvbi5pbmZvKCdyZXRyaWV2ZSB1cGRhdGVkIHN1YnNjcmlwdGlvbiBlcnIgJywgZXJyKVxuICAgIC8vICAgfSBlbHNlIHtcbiAgICAvLyAgICAgd2luc3Rvbi5pbmZvKCfCu8K7wrvCu8K7wrvCu8K7wrsgZ3JldHJpZXZlIHVwZGF0ZWQgc3Vic2NyaXB0aW9uOiAnLCBzdWJzY3JpcHRpb24pO1xuXG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgfSlcblxufSlcblxucm91dGVyLmdldCgnLzpzdWJzY3JpcHRpb25pZCcsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuXG4gIFN1YnNjcmlwdGlvblBheW1lbnQuZmluZCh7IHN1YnNjcmlwdGlvbl9pZDogcmVxLnBhcmFtcy5zdWJzY3JpcHRpb25pZCB9KS5zb3J0KHsgJ29iamVjdC5jcmVhdGVkJzogXCJhc2NcIiB9KS5leGVjKGZ1bmN0aW9uIChlcnIsIHN1YnNjcmlwdGlvblBheW1lbnRzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgd2luc3Rvbi5lcnJvcignLS0gPiBHRVQgU1VCU0NSSVBUSU9OIFBBWU1FTlRTIEVSUk9SdCAnLCBwcm9qZWN0KTtcbiAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6IGVyciB9KVxuICAgIH1cbiAgICByZXMuanNvbihzdWJzY3JpcHRpb25QYXltZW50cyk7XG4gIH0pO1xuXG59KTtcblxuLy8gIFJFVFJJRVZFIFRIRSBDVVJSRU5UIFNVQlNDUklQVElPTiBGUk9NIFNUUklQRVxucm91dGVyLmdldCgnL3N0cmlwZXN1YnMvOnN1YnNjcmlwdGlvbmlkJywgW3Bhc3Nwb3J0LmF1dGhlbnRpY2F0ZShbJ2Jhc2ljJywgJ2p3dCddLCB7IHNlc3Npb246IGZhbHNlIH0pLCB2YWxpZHRva2VuXSwgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG5cbiAgd2luc3Rvbi5pbmZvKCctLSA+IHN1YnNjcmlwdGlvbiBnZXQgYnkgaWQgZnJlcS5wYXJhbXMuc3Vic2NyaXB0aW9uaWQgJywgcmVxLnBhcmFtcy5zdWJzY3JpcHRpb25pZCk7XG4gIHZhciBzdHJpcGUgPSByZXF1aXJlKCdzdHJpcGUnKShhcGlTZWNyZXRLZXkpO1xuXG4gIHN0cmlwZS5zdWJzY3JpcHRpb25zLnJldHJpZXZlKFxuICAgIHJlcS5wYXJhbXMuc3Vic2NyaXB0aW9uaWQsXG4gICAgZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHdpbnN0b24uZXJyb3IoJy0tID4gc3Vic2NyaXB0aW9uIGdldCBieSBpZCBmcm9tIHN0cmlwZSAgZXJyICcsIGVycik7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6IGVyciB9KVxuICAgICAgfVxuICAgICAgd2luc3Rvbi5pbmZvKCctLSA+IHN1YnNjcmlwdGlvbiBnZXQgYnkgaWQgZnJvbSBzdHJpcGUgJywgc3Vic2NyaXB0aW9uKVxuICAgICAgcmVzLmpzb24oc3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICk7XG59KTtcblxuLy8gIFJFVFJJRVZFIFRIRSBDSEVDS09VVCBTRVNTSU9OXG5yb3V0ZXIuZ2V0KCcvY2hlY2tvdXRTZXNzaW9uLzpzZXNzaW9uaWQnLCBbcGFzc3BvcnQuYXV0aGVudGljYXRlKFsnYmFzaWMnLCAnand0J10sIHsgc2Vzc2lvbjogZmFsc2UgfSksIHZhbGlkdG9rZW5dLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcblxuICB3aW5zdG9uLmluZm8oJy0tID4gY2hlY2tvdXRTZXNzaW9uIHBhcmFtcy5zZXNzaW9uaWQgJywgcmVxLnBhcmFtcy5zZXNzaW9uaWQpO1xuICB2YXIgc3RyaXBlID0gcmVxdWlyZSgnc3RyaXBlJykoYXBpU2VjcmV0S2V5KTtcblxuICBzdHJpcGUuY2hlY2tvdXQuc2Vzc2lvbnMucmV0cmlldmUoXG4gICAgcmVxLnBhcmFtcy5zZXNzaW9uaWQsXG4gICAgZnVuY3Rpb24gKGVyciwgc2Vzc2lvbikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICB3aW5zdG9uLmluZm8oJy0tID4gY2hlY2tvdXRTZXNzaW9uIGdldCBieSBpZCBmcm9tIHN0cmlwZSAgZXJyICcsIGVycik7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6IGVyciB9KVxuICAgICAgfVxuICAgICAgd2luc3Rvbi5pbmZvKCctLSA+IGNoZWNrb3V0U2Vzc2lvbiBnZXQgYnkgaWQgZnJvbSBzdHJpcGUgJywgc2Vzc2lvbilcbiAgICAgIHJlcy5qc29uKHNlc3Npb24pO1xuICAgIH1cbiAgKTtcbn0pO1xuXG4vL25ldyBjb2RlXG5yb3V0ZXIuZ2V0KCcvY3VzdG9tZXIvOnByb2plY3RpZCcsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrsgwrvCu8K7IGdldCBjdXN0b21lciBmcm9tIGRiICcsIHJlcS5wYXJhbXMpXG4gIHZhciBwcm9qZWN0aWQgPSByZXEucGFyYW1zLnByb2plY3RpZFxuXG4gIHdpbnN0b24uZGVidWcoJ8K7wrvCuyDCu8K7wrsgZ2V0IGN1c3RvbWVyIGZyb20gZGIgLSBwcm9qZWN0aWQnLCBwcm9qZWN0aWQpO1xuXG4gIFN1YnNjcmlwdGlvblBheW1lbnQuZmluZCh7IHByb2plY3RfaWQ6IHByb2plY3RpZCwgc3RyaXBlX2V2ZW50OiBcImNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkXCIgfSwgYXN5bmMgZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgd2luc3Rvbi5kZWJ1ZygnLS0gPiBnZXQgY3VzdG9tZXIgZnJvbSBkYiAtIEVycm9yICcsIGVycilcbiAgICAgIHJldHVybiAoZXJyKTtcbiAgICB9XG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xuXG4gICAgICBzdWJzY3JpcHRpb25bMF0ub2JqZWN0LmN1c3RvbWVyXG4gICAgICB3aW5zdG9uLmRlYnVnKCctLSA+IGdldCBjdXN0b21lciBmcm9tIGRiIC0gc3Vic2NyaXB0aW9uID4gY3VzdG9tZXIgaWQgJywgc3Vic2NyaXB0aW9uWzBdLm9iamVjdC5jdXN0b21lcik7XG4gICAgICBjb25zdCBjdXN0b21lcmlkID0gc3Vic2NyaXB0aW9uWzBdLm9iamVjdC5jdXN0b21lclxuICAgICAgY29uc3Qgc3RyaXBlID0gcmVxdWlyZShcInN0cmlwZVwiKShhcGlTZWNyZXRLZXkpO1xuXG4gICAgICBjb25zdCBjdXN0b21lciA9IGF3YWl0IHN0cmlwZS5jdXN0b21lcnMucmV0cmlldmUoXG4gICAgICAgIGN1c3RvbWVyaWRcbiAgICAgICk7XG4gICAgICB3aW5zdG9uLmRlYnVnKCctLSA+IGdldCBjdXN0b21lciBmcm9tIGRiID4gY3VzdG9tZXIgZnJvbSBzdHJpcGUgQVBJICcsIGN1c3RvbWVyKVxuXG4gICAgICBjb25zdCBwYXltZW50TWV0aG9kcyA9IGF3YWl0IHN0cmlwZS5wYXltZW50TWV0aG9kcy5saXN0KHtcbiAgICAgICAgY3VzdG9tZXI6IGN1c3RvbWVyaWQsXG4gICAgICAgIHR5cGU6ICdjYXJkJyxcbiAgICAgIH0pO1xuICAgICAgY3VzdG9tZXJbJ3BheW1lbnRNZXRob2RzJ10gPSBwYXltZW50TWV0aG9kcztcbiAgICAgIHdpbnN0b24uZGVidWcoJy0tID4gZ2V0IGN1c3RvbWVyIGZyb20gZGIgPiBjdXN0b21lciArIHBheW1lbnRNZXRob2RzICcsIHN1YnNjcmlwdGlvbilcbiAgICAgIHJlcy5qc29uKGN1c3RvbWVyKVxuICAgIH1cbiAgfSlcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVcGRhdGVkIGN1c3RvbWVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5yb3V0ZXIucG9zdCgnL2N1c3RvbWVycy86Y3VzdG9tZXJpZCcsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICB2YXIgY3VzdG9tZXJpZCA9IHJlcS5wYXJhbXMuY3VzdG9tZXJpZDtcbiAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7IMK7wrvCuyAgdXBkYXRlIGN1c3RvbWVyIC0gY3VzdG9tZXJpZCBmcm9tIHBhcmFtcyAnLCBjdXN0b21lcmlkKTtcbiAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7IMK7wrvCuyAgdXBkYXRlIGN1c3RvbWVyIC0gY2MgZnJvbSBib2R5ICcsIHJlcS5ib2R5KTtcblxuICBjb25zdCBzdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG5cbiAgbGV0IHBheW1lbnRNZXRob2Q7XG4gIHRyeSB7XG4gICAgcGF5bWVudE1ldGhvZCA9IGF3YWl0IHN0cmlwZS5wYXltZW50TWV0aG9kcy5jcmVhdGUoe1xuICAgICAgdHlwZTogJ2NhcmQnLFxuICAgICAgY2FyZDoge1xuICAgICAgICBudW1iZXI6IHJlcS5ib2R5LmNyZWRpdF9jYXJkX251bSxcbiAgICAgICAgZXhwX21vbnRoOiByZXEuYm9keS5leHBpcmF0aW9uX2RhdGVfbW9udGgsXG4gICAgICAgIGV4cF95ZWFyOiByZXEuYm9keS5leHBpcmF0aW9uX2RhdGVfeWVhcixcbiAgICAgICAgY3ZjOiByZXEuYm9keS5jcmVkaXRfY2FyZF9jdmMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgd2luc3Rvbi5lcnJvcignwrvCu8K7IMK7wrvCuyAgcGF5bWVudE1ldGhvZCBjcmVhdGUgIGVycm9yICcsIGUpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAyKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZSB9KVxuXG4gIH1cbiAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7IMK7wrvCuyAgcGF5bWVudE1ldGhvZCcsIHBheW1lbnRNZXRob2QpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBfcGF5bWVudE1ldGhvZCA9IGF3YWl0IHN0cmlwZS5wYXltZW50TWV0aG9kcy5hdHRhY2goXG4gICAgICBwYXltZW50TWV0aG9kLmlkLFxuICAgICAgeyBjdXN0b21lcjogY3VzdG9tZXJpZCB9XG4gICAgKTtcblxuICAgIHdpbnN0b24uZGVidWcoJ8K7wrvCuyDCu8K7wrsgIHBheW1lbnRNZXRob2QgYXR0YWNoZWQgJywgX3BheW1lbnRNZXRob2QpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB3aW5zdG9uLmVycm9yKCfCu8K7wrsgwrvCu8K7ICBwYXltZW50TWV0aG9kIGF0dGFjaGVkICBlcnJvciAnLCBlKVxuICAgIHJldHVybiByZXMuc3RhdHVzKDUwMSkuc2VuZCh7IHN1Y2Nlc3M6IGZhbHNlLCBtc2c6IGUgfSlcbiAgfVxuXG4gIGNvbnN0IF9jdXN0b21lciA9IGF3YWl0IHN0cmlwZS5jdXN0b21lcnMudXBkYXRlKFxuICAgIGN1c3RvbWVyaWQsXG4gICAge1xuICAgICAgaW52b2ljZV9zZXR0aW5nczogeyBkZWZhdWx0X3BheW1lbnRfbWV0aG9kOiBwYXltZW50TWV0aG9kLmlkIH1cbiAgICB9KTtcbiAgcmVzLmpzb24oX2N1c3RvbWVyKTtcbn0pO1xuXG5cbnJvdXRlci5nZXQoJy9wYXltZW50X21ldGhvZHMvOmN1c3RvbWVyaWQnLCBbcGFzc3BvcnQuYXV0aGVudGljYXRlKFsnYmFzaWMnLCAnand0J10sIHsgc2Vzc2lvbjogZmFsc2UgfSksIHZhbGlkdG9rZW5dLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAgd2luc3Rvbi5pbmZvKCdnZXQgUGF5bWVudE1ldGhvZHMgbGlzdCByZXEucGFyYW1zJywgcmVxLnBhcmFtcylcbiAgdmFyIGN1c3RvbWVyX2lkID0gcmVxLnBhcmFtcy5jdXN0b21lcmlkO1xuICB3aW5zdG9uLmRlYnVnKCdnZXQgUGF5bWVudE1ldGhvZHMgbGlzdCByZXEucGFyYW1zID4gY3VzdG9tZXJfaWQgJywgY3VzdG9tZXJfaWQpXG4gIGNvbnN0IHN0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcblxuICBjb25zdCBjdXN0b21lciA9IGF3YWl0IHN0cmlwZS5jdXN0b21lcnMucmV0cmlldmUoXG4gICAgY3VzdG9tZXJfaWRcbiAgKTtcblxuICBjb25zdCBkZWZhdWx0X3BheW1lbnRfbWV0aG9kX2lkID0gY3VzdG9tZXIuaW52b2ljZV9zZXR0aW5ncy5kZWZhdWx0X3BheW1lbnRfbWV0aG9kXG4gIGxldCBwYXltZW50TWV0aG9kcztcbiAgdHJ5IHtcbiAgICBwYXltZW50TWV0aG9kcyA9IGF3YWl0IHN0cmlwZS5wYXltZW50TWV0aG9kcy5saXN0KHtcbiAgICAgIGN1c3RvbWVyOiBjdXN0b21lcl9pZCxcbiAgICAgIHR5cGU6ICdjYXJkJyxcbiAgICB9KTtcbiAgICB3aW5zdG9uLmRlYnVnKCdnZXQgUGF5bWVudE1ldGhvZHMgbGlzdCA+IHBheW1lbnRNZXRob2RzICcsIHBheW1lbnRNZXRob2RzKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAxKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZSB9KVxuICB9XG5cbiAgd2luc3Rvbi5kZWJ1ZygnZ2V0IFBheW1lbnRNZXRob2RzIGxpc3QgPiBwYXltZW50TWV0aG9kcyA+IGRlZmF1bHRfcGF5bWVudF9tZXRob2RfaWQgJywgZGVmYXVsdF9wYXltZW50X21ldGhvZF9pZClcbiAgcGF5bWVudE1ldGhvZHMuZGF0YS5mb3JFYWNoKHBheW1lbnRNZXRob2QgPT4ge1xuICAgIGlmIChwYXltZW50TWV0aG9kLmlkICE9PSBkZWZhdWx0X3BheW1lbnRfbWV0aG9kX2lkKSB7XG4gICAgICB3aW5zdG9uLmRlYnVnKCdnZXQgUGF5bWVudE1ldGhvZHMgbGlzdCA+IHBheW1lbnRNZXRob2RzID4gcGF5bWVudE1ldGhvZHMuZGF0YSAnLCBwYXltZW50TWV0aG9kLmlkKVxuICAgICAgZGV0YWNoUGF5bWVudEZ1bmMocGF5bWVudE1ldGhvZC5pZCwgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB3aW5zdG9uLmluZm8oJ2RldGFjaFBheW1lbnRGdW5jIHJlc3VsdCAnLCByZXN1bHQpXG4gICAgICB9KVxuICAgIH1cbiAgfSk7XG4gIHJlcy5qc29uKHBheW1lbnRNZXRob2RzKVxufSlcblxuYXN5bmMgZnVuY3Rpb24gZGV0YWNoUGF5bWVudEZ1bmMocGF5bWVudE1ldGhvZGlkLCBjYWxsYmFjaykge1xuICB3aW5zdG9uLmRlYnVnKCdkZXRhY2hQYXltZW50RnVuY3QgPiBwYXltZW50TWV0aG9kaWQgJywgcGF5bWVudE1ldGhvZGlkKVxuICBjb25zdCBzdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG4gIGxldCBwYXltZW50TWV0aG9kO1xuICB0cnkge1xuICAgIHBheW1lbnRNZXRob2QgPSBhd2FpdCBzdHJpcGUucGF5bWVudE1ldGhvZHMuZGV0YWNoKFxuICAgICAgcGF5bWVudE1ldGhvZGlkXG4gICAgKTtcbiAgICBjYWxsYmFjayhwYXltZW50TWV0aG9kKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY2FsbGJhY2soZSlcbiAgfVxufVxuXG5cblxuLy8gY3VybCAtWCBQT1NUIC11IGFuZHJlYS5sZW9AZjIxLml0OjEyMzQ1NiAtSCAnQ29udGVudC1UeXBlOmFwcGxpY2F0aW9uL2pzb24nIC1kICd7XCJ0eXBlXCI6XCJwYXltZW50X2ludGVudC5zdWNjZWVkZWRcIn0nICBodHRwOi8vbG9jYWxob3N0OjMwMDAvbW9kdWxlcy9wYXltZW50cy9zdHJpcGUvd2ViaG9va1xuXG4vLyByb3V0ZXIucG9zdCgnL3dlYmhvb2snLCBmdW5jdGlvbihyZXF1ZXN0LCByZXNwb25zZSkge1xuLy8gICB3aW5zdG9uLmluZm8oJ3N0cmlwZSB3ZWJob29rJyk7XG5cbi8vIC8vIE1hdGNoIHRoZSByYXcgYm9keSB0byBjb250ZW50IHR5cGUgYXBwbGljYXRpb24vanNvblxuLy8gLy8gYXBwLnBvc3QoJycsIGJvZHlQYXJzZXIucmF3KHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KSwgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4vLyAgICAgbGV0IGV2ZW50ID0gcmVxdWVzdC5ib2R5O1xuLy8gICAgIHdpbnN0b24uaW5mbygnZXZlbnQnLGV2ZW50KTsgIFxuXG4vLyAgICAgLy8gSGFuZGxlIHRoZSBldmVudFxuLy8gICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuLy8gICAgICAgY2FzZSAncGF5bWVudF9pbnRlbnQuc3VjY2VlZGVkJzpcbi8vICAgICAgICAgY29uc3QgcGF5bWVudEludGVudCA9IGV2ZW50LmRhdGEub2JqZWN0O1xuLy8gICAgICAgICBoYW5kbGVQYXltZW50SW50ZW50U3VjY2VlZGVkKHBheW1lbnRJbnRlbnQpO1xuLy8gICAgICAgICBicmVhaztcbi8vICAgICAgIGNhc2UgJ3BheW1lbnRfbWV0aG9kLmF0dGFjaGVkJzpcbi8vICAgICAgICAgY29uc3QgcGF5bWVudE1ldGhvZCA9IGV2ZW50LmRhdGEub2JqZWN0O1xuLy8gICAgICAgICBoYW5kbGVQYXltZW50TWV0aG9kQXR0YWNoZWQocGF5bWVudE1ldGhvZCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgLy8gLi4uIGhhbmRsZSBvdGhlciBldmVudCB0eXBlc1xuLy8gICAgICAgZGVmYXVsdDpcbi8vICAgICAgICAgLy8gVW5leHBlY3RlZCBldmVudCB0eXBlXG4vLyAgICAgICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMoNDAwKS5lbmQoKTtcbi8vICAgICB9XG5cbi8vICAgICAvLyBSZXR1cm4gYSByZXNwb25zZSB0byBhY2tub3dsZWRnZSByZWNlaXB0IG9mIHRoZSBldmVudFxuLy8gICAgIHJlc3BvbnNlLmpzb24oe3JlY2VpdmVkOiB0cnVlfSk7XG4vLyB9KTtcblxuXG5cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7Il0sImZpbGUiOiJwYXltZW50cy9zdHJpcGUvaW5kZXguanMifQ==
|
1
|
+
var _0x4ef7=['--\x20>\x20cancelsubscription\x20\x20err\x20','error','detach','save','Webhook\x20Error:\x20','free','get\x20PaymentMethods\x20list\x20req.params\x20>\x20customer_id\x20','subscription_create','detachPaymentFunct\x20>\x20paymentMethodid\x20','***\x20***\x20customer.subscription.deleted\x20','get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20','customers','env','YYYY-MM-DDTHH:mm:ss.SSS','data','rawBody','»»»\x20»»»\x20cancelsubscription\x20projectid','invoice_settings','stripe\x20endpointSecret','***\x20***\x20invoice.payment_succeeded\x20-\x20subscription\x20ID:\x20','PAYMENT_STRIPE_APIKEY','***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20err\x20','credit_card_num','card','credit_card_cvc','/customer/:projectid','--\x20>\x20get\x20customer\x20from\x20db\x20-\x20subscription\x20>\x20customer\x20id\x20','forEach','catch','Error\x20saving\x20object.','customer.subscription.deleted\x20event\x20','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment:\x20','subEnd','lines','***\x20***\x20checkout.session.completed\x20-\x20getSubscription\x20***\x20end\x20***\x20:\x20','body-parser','get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20>\x20default_payment_method_id\x20','--\x20>\x20checkoutSession\x20get\x20by\x20id\x20from\x20stripe\x20','total_count','subscriptions','stripe-signature','exports','../models/subscription-payment','webhooks','body','customer.subscription.deleted\x20profile\x20to\x20update\x20(event.data.object.canceled_at)\x20','passport','stripe\x20apiSecretKey','invoice.payment_succeeded','customer.subscription.deleted\x20subscriptionPayment\x20user\x20id:\x20','application/json','saveOnDB\x20plan_name','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment\x20typeof\x20subsptn_payment:\x20','\x20!!!!!!!!\x20HI\x20!!!!!!!!\x20invoice.payment_succeeded','»»»\x20»»»\x20\x20paymentMethod','split','sort','stripe\x20seats_numAsString:\x20','period','saveFirstInvoicePaymentSucceeded\x20stripe_event','message','moment','put','../../../config/winston','expiration_date_year','update','detachPaymentFunc\x20result\x20','--\x20>\x20subscription\x20get\x20by\x20id\x20freq.params.subscriptionid\x20','***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20subscr\x20object_type:\x20','Types','savedSubscriptionPayment\x20>>\x20','debug','payment','end','constructEvent','params','subscription','del','/checkoutSession/:sessionid','current_period_start','stripe\x20seats_num:\x20','stripe\x20plan_name:\x20','subscriptionId','info','USECASE\x20\x20invoice.payment_succeeded\x20\x20billing_reason\x20subscription_create\x20','get','\x20typeof\x20','***\x20***\x20invoice.payment_succeeded\x20-\x20end:\x20','agents','retrieve','subscriptionid','findOne','type','checkout','client_reference_id','checkout.session.completed','express','json','/stripesubs/:subscriptionid','basic','../../../models/project','***\x20***\x20invoice.payment_succeeded\x20-\x20BILLING\x20REASON\x20','raw','object','***\x20***\x20subscriptionEnd\x20','***\x20***\x20»»»\x20»»»\x20customer.subscription.deleted\x20subscriptionPayment\x20','/cancelsubscription','--\x20>\x20get\x20customer\x20from\x20db\x20>\x20customer\x20+\x20paymentMethods\x20','--\x20>\x20updatesubscription\x20\x20project\x20','post','»»»\x20»»»\x20updatesubscription\x20price','userid','***\x20***\x20checkout.session.completed\x20-\x20getSubscritionById\x20***\x20start\x20***\x20:\x20','saveOnDB\x20seats_num','paymentMethods','project_id','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20find\x20Project\x20','list','then','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20-\x20err\x20','savedSubscriptionPayment\x20','attach','last_stripe_event','»»»\x20»»»\x20\x20paymentMethod\x20attached\x20','billing_reason','sessionid','***\x20***\x20!!!!!!!!!!!!!!!!!!!!!!\x20checkout.session.completed\x20-\x20subscription\x20ID:\x20','headers','--\x20>\x20updatesubscription\x20Error\x20getting\x20project\x20','****\x20Stripe\x20error\x20constructEvent:\x20','stripe\x20apiKey','saveFirstInvoicePaymentSucceeded\x20subscriptionid','find','default_payment_method','»»»\x20»»»\x20get\x20customer\x20from\x20db\x20-\x20projectid','jwt','--\x20>\x20GET\x20SUBSCRIPTION\x20PAYMENTS\x20ERRORt\x20','***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20subsptn_payment\x20>\x20project_id:\x20','customerid','/payment_methods/:customerid','stripe','log','stripe\x20project_id:\x20','»»»»\x20stripe\x20endpointSecret:\x20','unix','stripe\x20client_reference_id','status','customer.subscription.deleted\x20profile\x20to\x20update\x20','/updatesubscription','--\x20>\x20checkoutSession\x20params.sessionid\x20','sessions','findByIdAndUpdate','projectid','start','profile','authenticate','--\x20>\x20cancelsubscription\x20Error\x20getting\x20project\x20','subscription.deleted','get\x20PaymentMethods\x20list\x20req.params','../../../middleware/valid-token','exec','PAYMENT_STRIPE_API_SECRET_KEY','user_id','stripe\x20checkout.session.completed','../../../middleware/passport','»»»\x20»»»\x20get\x20customer\x20from\x20db\x20','»»»\x20»»»\x20\x20update\x20customer\x20-\x20customerid\x20from\x20params\x20','»»»\x20»»»\x20cancelsubscription\x20userid','***\x20***\x20invoice.payment_succeeded\x20-\x20index:\x20','ObjectId','Sandbox','expiration_date_month','»»»\x20»»»\x20updatesubscription\x20projectid','***\x20***\x20invoice.payment_succeeded\x20-\x20start:\x20','--\x20>\x20cancelsubscription\x20confirmation\x20','customer','PAYMENT_STRIPE_SECRET','--\x20>\x20subscription\x20get\x20by\x20id\x20from\x20stripe\x20\x20err\x20','canceled_at','format','customer.subscription.deleted\x20subscriptionPayment\x20project\x20id:\x20','send'];(function(_0x418770,_0x4ef704){var _0x15b190=function(_0x28a7c7){while(--_0x28a7c7){_0x418770['push'](_0x418770['shift']());}};_0x15b190(++_0x4ef704);}(_0x4ef7,0x177));var _0x15b1=function(_0x418770,_0x4ef704){_0x418770=_0x418770-0x0;var _0x15b190=_0x4ef7[_0x418770];return _0x15b190;};var express=require(_0x15b1('0x55'));var router=express['Router']();var winston=require(_0x15b1('0x34'));var Project=require(_0x15b1('0x59'));var SubscriptionPayment=require(_0x15b1('0x1f'));var moment=require(_0x15b1('0x32'));var mongoose=require('mongoose');var passport=require(_0x15b1('0x23'));require(_0x15b1('0x99'))(passport);var validtoken=require(_0x15b1('0x94'));const apiKey=process[_0x15b1('0x1')][_0x15b1('0x9')];winston[_0x15b1('0x3c')](_0x15b1('0x77')+apiKey);const stripe=require(_0x15b1('0x81'))(apiKey);const endpointSecret=process[_0x15b1('0x1')][_0x15b1('0xa5')];winston[_0x15b1('0x3c')](_0x15b1('0x7')+endpointSecret);const apiSecretKey=process[_0x15b1('0x1')][_0x15b1('0x96')];winston[_0x15b1('0x3c')](_0x15b1('0x24')+apiSecretKey);const bodyParser=require(_0x15b1('0x18'));router[_0x15b1('0x62')]('/webhook',bodyParser[_0x15b1('0x5b')]({'type':_0x15b1('0x27')}),function(_0x1bc881,_0x231607){winston[_0x15b1('0x3c')](_0x15b1('0x84')+endpointSecret);winston[_0x15b1('0x3c')]('»»»»\x20stripe\x20apiKey:\x20'+apiKey);winston[_0x15b1('0x3c')](_0x15b1('0x24')+apiSecretKey);const _0x175799=_0x1bc881[_0x15b1('0x74')][_0x15b1('0x1d')];winston[_0x15b1('0x3c')]('stripe\x20sig:\x20',_0x175799);let _0x52fcd0;try{_0x52fcd0=stripe[_0x15b1('0x20')][_0x15b1('0x3f')](_0x1bc881[_0x15b1('0x4')],_0x175799,endpointSecret);}catch(_0x5f3b19){winston[_0x15b1('0xac')](_0x15b1('0x76'),_0x5f3b19[_0x15b1('0x31')]);return _0x231607[_0x15b1('0x87')](0x190)[_0x15b1('0xaa')](_0x15b1('0xaf')+_0x5f3b19[_0x15b1('0x31')]);}if(_0x52fcd0[_0x15b1('0x51')]==='checkout.session.completed'){winston['debug']('!!!!!!!!\x20HI\x20!!!!!!!!\x20checkout.session.completed');const _0x2787f7=_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')];winston[_0x15b1('0x48')](_0x15b1('0x98'),_0x2787f7);var _0x1e8a3e=_0x2787f7[_0x15b1('0x53')];winston[_0x15b1('0x48')](_0x15b1('0x86'),_0x1e8a3e);var _0x5e28e2=_0x1e8a3e[_0x15b1('0x2c')]('_')[0x0];winston[_0x15b1('0x48')]('stripe\x20user_id:'+_0x5e28e2);var _0x3d054d=_0x1e8a3e['split']('_')[0x1];winston['info'](_0x15b1('0x83')+_0x3d054d);var _0x282810=_0x1e8a3e['split']('_')[0x2];winston[_0x15b1('0x48')](_0x15b1('0x46')+_0x282810);var _0x310977=_0x1e8a3e[_0x15b1('0x2c')]('_')[0x3];winston['info'](_0x15b1('0x45')+_0x310977+'typeof\x20',typeof _0x310977);var _0x1a282b=Number(_0x310977);winston[_0x15b1('0x48')](_0x15b1('0x2e')+_0x1a282b+_0x15b1('0x4b'),typeof _0x1a282b);var _0x4c51c2=_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')]['subscription'];winston[_0x15b1('0x48')](_0x15b1('0x73'),_0x4c51c2);getSubscritionById(_0x4c51c2)['then'](function(_0x3813f8){var _0x4b3f99=_0x3813f8['object'];winston[_0x15b1('0x48')](_0x15b1('0x39'),_0x4b3f99);var _0x3a8f3e=moment[_0x15b1('0x85')](_0x3813f8[_0x15b1('0x44')])[_0x15b1('0xa8')](_0x15b1('0x2'));winston[_0x15b1('0x48')](_0x15b1('0x65'),_0x3a8f3e);var _0x22a488=moment[_0x15b1('0x85')](_0x3813f8['current_period_end'])[_0x15b1('0xa8')](_0x15b1('0x2'));winston[_0x15b1('0x48')](_0x15b1('0x17'),_0x22a488);var _0x403371={'profile':{'name':_0x282810,'type':_0x15b1('0x3d'),'subscription_creation_date':_0x3a8f3e,'subStart':_0x3a8f3e,'subEnd':_0x22a488,'subscriptionId':_0x4c51c2,'last_stripe_event':_0x52fcd0['type'],'agents':_0x1a282b}};updateProjectProfile(_0x3d054d,_0x403371,'checkout.session.completed');saveOnDB(_0x4c51c2,_0x3d054d,_0x3813f8,_0x5e28e2,_0x52fcd0[_0x15b1('0x51')],_0x282810,_0x1a282b);})['catch'](function(_0x28d01d){winston[_0x15b1('0xac')](_0x15b1('0xa'),_0x28d01d);});}if(_0x52fcd0[_0x15b1('0x51')]==='invoice.payment_succeeded'){winston['info'](_0x15b1('0x2a'));winston['info'](_0x15b1('0x5a'),_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')][_0x15b1('0x71')]);var _0x1fdf5b=_0x52fcd0['data'][_0x15b1('0x5c')][_0x15b1('0x16')][_0x15b1('0x1b')];winston[_0x15b1('0x48')]('***\x20***\x20invoice.payment_succeeded\x20-\x20linesNum:\x20',_0x1fdf5b);var _0xdce2a8=_0x1fdf5b-0x1;winston[_0x15b1('0x48')](_0x15b1('0x9d'),_0xdce2a8);var _0x467c8c=moment[_0x15b1('0x85')](_0x52fcd0['data'][_0x15b1('0x5c')][_0x15b1('0x16')][_0x15b1('0x3')][_0xdce2a8]['period'][_0x15b1('0x8e')])[_0x15b1('0xa8')](_0x15b1('0x2'));winston[_0x15b1('0x48')](_0x15b1('0xa2'),_0x467c8c);var _0x33ea7e=moment[_0x15b1('0x85')](_0x52fcd0[_0x15b1('0x3')]['object']['lines'][_0x15b1('0x3')][_0xdce2a8][_0x15b1('0x2f')][_0x15b1('0x3e')])[_0x15b1('0xa8')](_0x15b1('0x2'));winston[_0x15b1('0x48')](_0x15b1('0x4c'),_0x33ea7e);var _0x4c51c2=_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')][_0x15b1('0x41')];winston[_0x15b1('0x48')](_0x15b1('0x8'),_0x4c51c2);if(_0x4c51c2==null){_0x4c51c2=_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')]['lines'][_0x15b1('0x3')][0x0][_0x15b1('0x41')];winston[_0x15b1('0x48')](_0x15b1('0x8'),_0x4c51c2);}if(_0x52fcd0['data']['object']['billing_reason']!==_0x15b1('0xb2')){getSubByIdAndCheckoutSessionCompletedEvnt(_0x4c51c2)[_0x15b1('0x6b')](function(_0x3ff5d3){winston[_0x15b1('0x48')](_0x15b1('0x14'),_0x3ff5d3);winston[_0x15b1('0x48')](_0x15b1('0x29'),typeof _0x3ff5d3);if(_0x3ff5d3){var _0x56ad04=_0x3ff5d3[_0x15b1('0x68')];winston[_0x15b1('0x48')](_0x15b1('0x7e'),_0x56ad04);Project[_0x15b1('0x50')]({'_id':_0x56ad04},function(_0x50aa7c,_0x320046){if(_0x50aa7c){winston[_0x15b1('0x48')](_0x15b1('0x69'),_0x50aa7c);return _0x50aa7c;}if(_0x320046){winston[_0x15b1('0x48')]('***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20',_0x320046);winston[_0x15b1('0x48')]('***\x20***\x20getSubByIdAndCheckoutSessionCompletedEvnt\x20\x20project\x20>\x20profile',_0x320046[_0x15b1('0x8f')]);var _0x57de76=_0x320046['profile'][_0x15b1('0x4d')];var _0x182389=_0x320046[_0x15b1('0x8f')]['name'];var _0x47fbda=_0x3ff5d3[_0x15b1('0x97')];let _0x11b7fe=_0x320046['profile'];_0x11b7fe['name']=_0x182389;_0x11b7fe[_0x15b1('0x51')]=_0x15b1('0x3d');_0x11b7fe['subStart']=_0x467c8c;_0x11b7fe[_0x15b1('0x15')]=_0x33ea7e;_0x11b7fe['subscriptionId']=_0x4c51c2;_0x11b7fe[_0x15b1('0x6f')]=_0x52fcd0['type'];var _0x4b1a4e={'profile':_0x11b7fe};updateProjectProfile(_0x56ad04,_0x4b1a4e,_0x15b1('0x25'));saveOnDB(_0x4c51c2,_0x56ad04,_0x52fcd0,_0x47fbda,_0x52fcd0['type'],_0x182389,_0x57de76);}});}})[_0x15b1('0x11')](function(_0x36b60b){winston[_0x15b1('0xac')](_0x15b1('0x6c'),_0x36b60b);});}else if(_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')][_0x15b1('0x71')]==='subscription_create'){console[_0x15b1('0x82')](_0x15b1('0x49'));saveFirstInvoicePaymentSucceeded(_0x4c51c2,_0x52fcd0,_0x52fcd0['type']);}}if(_0x52fcd0['type']==='customer.subscription.deleted'){winston[_0x15b1('0x48')]('\x20!!!!!!!!\x20HI\x20!!!!!!!!!!!\x20customer.subscription.deleted');winston[_0x15b1('0x48')](_0x15b1('0x13'),_0x52fcd0);var _0x4c51c2=_0x52fcd0[_0x15b1('0x3')]['object']['id'];winston['info']('***\x20***\x20subscription\x20ID\x20',_0x4c51c2);var _0x3bdb9c=moment['unix'](_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')]['canceled_at'])[_0x15b1('0xa8')](_0x15b1('0x2'));winston[_0x15b1('0x48')](_0x15b1('0x5d'),_0x3bdb9c);getSubByIdAndCheckoutSessionCompletedEvnt(_0x4c51c2)[_0x15b1('0x6b')](function(_0x383645){winston[_0x15b1('0x48')](_0x15b1('0x5e'),_0x383645);if(_0x383645){var _0x39f7d8=_0x383645[_0x15b1('0x68')];winston[_0x15b1('0x48')](_0x15b1('0xa9'),_0x39f7d8);var _0x52e503=_0x383645[_0x15b1('0x97')];winston['info'](_0x15b1('0x26'),_0x52e503);}var _0x4acbc1={'profile':{'subscriptionId':_0x4c51c2,'name':_0x15b1('0x9f'),'type':_0x15b1('0xb0'),'agents':0x1,'last_stripe_event':_0x52fcd0[_0x15b1('0x51')],'subEnd':_0x3bdb9c}};winston['info'](_0x15b1('0x22'),_0x52fcd0[_0x15b1('0x3')]['object'][_0x15b1('0xa7')]);winston['info'](_0x15b1('0x88'),_0x4acbc1[_0x15b1('0x8f')]);updateProjectProfile(_0x39f7d8,_0x4acbc1,_0x15b1('0x92'));saveOnDB(_0x4c51c2,_0x39f7d8,_0x52fcd0[_0x15b1('0x3')][_0x15b1('0x5c')],_0x52e503,_0x52fcd0['type'],_0x282810,0x1);})[_0x15b1('0x11')](function(_0x2a1a3a){winston['error'](_0x15b1('0xb4'),_0x2a1a3a);});}_0x231607[_0x15b1('0x56')]({'received':!![]});});function getSubByIdAndCheckoutSessionCompletedEvnt(_0x430853){return new Promise(function(_0x365ecb,_0x52206a){SubscriptionPayment[_0x15b1('0x50')]({'subscription_id':_0x430853,'stripe_event':'checkout.session.completed'},function(_0x2dc6c6,_0x3a269b){if(_0x2dc6c6)_0x52206a(_0x2dc6c6);var _0x88dbce=_0x3a269b;_0x365ecb(_0x88dbce);});});};function getSubscritionById(_0xb497f4){return new Promise(function(_0x4d66d4,_0x3e3890){const _0x32d11c=require(_0x15b1('0x81'))(apiSecretKey);_0x32d11c[_0x15b1('0x1c')][_0x15b1('0x4e')](_0xb497f4,function(_0x112286,_0x534d58){if(_0x112286)_0x3e3890(_0x112286);var _0x534d58=_0x534d58;_0x4d66d4(_0x534d58);});});};function updateProjectProfile(_0x26b5d9,_0x36c121,_0xf15e2d){Project[_0x15b1('0x8c')](_0x26b5d9,_0x36c121,{'new':!![],'upsert':!![]},function(_0x5ab848,_0x4bec81){if(_0x5ab848){winston[_0x15b1('0xac')]('updateProjectProfile\x20Error\x20',_0x5ab848);}else{winston[_0x15b1('0x3c')](_0x4bec81);}});}function saveOnDB(_0x462571,_0x47f4eb,_0x696fb9,_0x51275d,_0x27b4c5,_0x4e92fa,_0x464282){winston[_0x15b1('0x48')](_0x15b1('0x28'),_0x4e92fa);winston['info'](_0x15b1('0x66'),_0x464282);var _0x2266ff=new SubscriptionPayment({'_id':new mongoose[(_0x15b1('0x3a'))][(_0x15b1('0x9e'))](),'subscription_id':_0x462571,'project_id':_0x47f4eb,'user_id':_0x51275d,'stripe_event':_0x27b4c5,'plan_name':_0x4e92fa,'agents':_0x464282,'object':_0x696fb9});_0x2266ff['save'](function(_0x325b75,_0x1fb921){if(_0x325b75){winston[_0x15b1('0xac')]('---\x20>\x20ERROR\x20',_0x325b75);return res[_0x15b1('0x87')](0x1f4)['send']({'success':![],'msg':_0x15b1('0x12')});}winston[_0x15b1('0x48')](_0x15b1('0x6d'),_0x1fb921);});}function saveFirstInvoicePaymentSucceeded(_0x19242c,_0x27ead3,_0x37ca2c){console[_0x15b1('0x82')](_0x15b1('0x78'),_0x19242c);console[_0x15b1('0x82')](_0x15b1('0x30'),_0x37ca2c);var _0x1be6d8=new SubscriptionPayment({'_id':new mongoose[(_0x15b1('0x3a'))]['ObjectId'](),'subscription_id':_0x19242c,'stripe_event':_0x37ca2c,'object':_0x27ead3});_0x1be6d8[_0x15b1('0xae')](function(_0x26a88e,_0x233e97){if(_0x26a88e){winston['error']('---\x20>\x20ERROR\x20',_0x26a88e);return res[_0x15b1('0x87')](0x1f4)[_0x15b1('0xaa')]({'success':![],'msg':_0x15b1('0x12')});}console['log'](_0x15b1('0x3b'),_0x233e97);});}router[_0x15b1('0x33')](_0x15b1('0x5f'),[passport[_0x15b1('0x90')]([_0x15b1('0x58'),_0x15b1('0x7c')],{'session':![]}),validtoken],function(_0x2cae72,_0x569a6d){var _0x2a03f2=_0x2cae72[_0x15b1('0x21')][_0x15b1('0x8d')];var _0x2d1562=_0x2cae72[_0x15b1('0x21')][_0x15b1('0x64')];winston[_0x15b1('0x48')](_0x15b1('0x5'),_0x2a03f2);winston['info'](_0x15b1('0x9c'),_0x2d1562);Project[_0x15b1('0x50')]({'_id':_0x2a03f2},function(_0x708b43,_0x3bbc53){if(_0x708b43){winston[_0x15b1('0xac')](_0x15b1('0x91'),_0x708b43);return _0x708b43;}if(_0x3bbc53){winston[_0x15b1('0x48')]('--\x20>\x20cancelsubscription\x20\x20project\x20',_0x3bbc53);var _0x1c6e9c=_0x3bbc53[_0x15b1('0x8f')][_0x15b1('0x47')];const _0x1100ec=require(_0x15b1('0x81'))(apiSecretKey);_0x1100ec[_0x15b1('0x1c')][_0x15b1('0x42')](_0x1c6e9c,function(_0x377195,_0x1c2788){if(_0x377195){winston[_0x15b1('0xac')](_0x15b1('0xab'),_0x377195);return _0x569a6d['status'](0x1f4)[_0x15b1('0xaa')]({'success':![],'msg':_0x377195});}winston[_0x15b1('0x48')](_0x15b1('0xa3'),_0x1c2788);_0x569a6d[_0x15b1('0x56')](_0x1c2788);});}});});router[_0x15b1('0x33')](_0x15b1('0x89'),[passport[_0x15b1('0x90')](['basic',_0x15b1('0x7c')],{'session':![]}),validtoken],function(_0x2ecc24,_0x4caea2){var _0x10b790=_0x2ecc24[_0x15b1('0x21')][_0x15b1('0x8d')];var _0x5f0d84=_0x2ecc24[_0x15b1('0x21')][_0x15b1('0x64')];var _0x2b520e=_0x2ecc24[_0x15b1('0x21')]['price'];winston['info'](_0x15b1('0xa1'),_0x10b790);winston[_0x15b1('0x48')]('»»»\x20»»»\x20updatesubscription\x20userid',_0x5f0d84);winston[_0x15b1('0x48')](_0x15b1('0x63'),_0x2b520e);const _0x191994=require(_0x15b1('0x81'))(apiSecretKey);Project[_0x15b1('0x50')]({'_id':_0x10b790},function(_0x3c37b6,_0x25d605){if(_0x3c37b6){winston[_0x15b1('0xac')](_0x15b1('0x75'),_0x3c37b6);return _0x3c37b6;}if(_0x25d605){winston[_0x15b1('0x48')](_0x15b1('0x61'),_0x25d605);var _0x14da8b=_0x25d605['profile'][_0x15b1('0x47')];_0x191994[_0x15b1('0x1c')][_0x15b1('0x36')](_0x14da8b);}});});router[_0x15b1('0x4a')]('/:subscriptionid',[passport[_0x15b1('0x90')]([_0x15b1('0x58'),_0x15b1('0x7c')],{'session':![]}),validtoken],function(_0xe18688,_0x32ed43){SubscriptionPayment[_0x15b1('0x79')]({'subscription_id':_0xe18688[_0x15b1('0x40')][_0x15b1('0x4f')]})[_0x15b1('0x2d')]({'object.created':'asc'})[_0x15b1('0x95')](function(_0x186afc,_0x328c41){if(_0x186afc){winston['error'](_0x15b1('0x7d'),project);return _0x32ed43[_0x15b1('0x87')](0x1f4)[_0x15b1('0xaa')]({'success':![],'msg':_0x186afc});}_0x32ed43[_0x15b1('0x56')](_0x328c41);});});router[_0x15b1('0x4a')](_0x15b1('0x57'),[passport[_0x15b1('0x90')]([_0x15b1('0x58'),'jwt'],{'session':![]}),validtoken],function(_0x32af3a,_0x42895b){winston['info'](_0x15b1('0x38'),_0x32af3a[_0x15b1('0x40')][_0x15b1('0x4f')]);var _0x3fb3e4=require(_0x15b1('0x81'))(apiSecretKey);_0x3fb3e4[_0x15b1('0x1c')][_0x15b1('0x4e')](_0x32af3a[_0x15b1('0x40')][_0x15b1('0x4f')],function(_0x240fd4,_0x35d5f1){if(_0x240fd4){winston[_0x15b1('0xac')](_0x15b1('0xa6'),_0x240fd4);return _0x42895b['status'](0x1f4)[_0x15b1('0xaa')]({'success':![],'msg':_0x240fd4});}winston[_0x15b1('0x48')]('--\x20>\x20subscription\x20get\x20by\x20id\x20from\x20stripe\x20',_0x35d5f1);_0x42895b[_0x15b1('0x56')](_0x35d5f1);});});router[_0x15b1('0x4a')](_0x15b1('0x43'),[passport[_0x15b1('0x90')](['basic','jwt'],{'session':![]}),validtoken],function(_0x54f287,_0x428ea5){winston[_0x15b1('0x48')](_0x15b1('0x8a'),_0x54f287[_0x15b1('0x40')][_0x15b1('0x72')]);var _0x1357e4=require(_0x15b1('0x81'))(apiSecretKey);_0x1357e4[_0x15b1('0x52')][_0x15b1('0x8b')][_0x15b1('0x4e')](_0x54f287[_0x15b1('0x40')]['sessionid'],function(_0x36f1df,_0x481728){if(_0x36f1df){winston[_0x15b1('0x48')]('--\x20>\x20checkoutSession\x20get\x20by\x20id\x20from\x20stripe\x20\x20err\x20',_0x36f1df);return _0x428ea5[_0x15b1('0x87')](0x1f4)[_0x15b1('0xaa')]({'success':![],'msg':_0x36f1df});}winston[_0x15b1('0x48')](_0x15b1('0x1a'),_0x481728);_0x428ea5[_0x15b1('0x56')](_0x481728);});});router[_0x15b1('0x4a')](_0x15b1('0xe'),[passport['authenticate']([_0x15b1('0x58'),_0x15b1('0x7c')],{'session':![]}),validtoken],function(_0x1f217f,_0xe893d){winston['debug'](_0x15b1('0x9a'),_0x1f217f['params']);var _0x57d7b5=_0x1f217f[_0x15b1('0x40')]['projectid'];winston['debug'](_0x15b1('0x7b'),_0x57d7b5);SubscriptionPayment['find']({'project_id':_0x57d7b5,'stripe_event':_0x15b1('0x54')},async function(_0x57b2c7,_0x3a1ac2){if(_0x57b2c7){winston['debug']('--\x20>\x20get\x20customer\x20from\x20db\x20-\x20Error\x20',_0x57b2c7);return _0x57b2c7;}if(_0x3a1ac2){_0x3a1ac2[0x0][_0x15b1('0x5c')][_0x15b1('0xa4')];winston['debug'](_0x15b1('0xf'),_0x3a1ac2[0x0][_0x15b1('0x5c')][_0x15b1('0xa4')]);const _0x133227=_0x3a1ac2[0x0][_0x15b1('0x5c')][_0x15b1('0xa4')];const _0x3cf78b=require(_0x15b1('0x81'))(apiSecretKey);const _0x1ec856=await _0x3cf78b[_0x15b1('0x0')]['retrieve'](_0x133227);winston[_0x15b1('0x3c')]('--\x20>\x20get\x20customer\x20from\x20db\x20>\x20customer\x20from\x20stripe\x20API\x20',_0x1ec856);const _0x27a810=await _0x3cf78b[_0x15b1('0x67')][_0x15b1('0x6a')]({'customer':_0x133227,'type':_0x15b1('0xc')});_0x1ec856['paymentMethods']=_0x27a810;winston['debug'](_0x15b1('0x60'),_0x3a1ac2);_0xe893d[_0x15b1('0x56')](_0x1ec856);}});});router['post']('/customers/:customerid',[passport['authenticate']([_0x15b1('0x58'),'jwt'],{'session':![]}),validtoken],async function(_0x45235a,_0x338697){var _0x2e54f6=_0x45235a[_0x15b1('0x40')][_0x15b1('0x7f')];winston[_0x15b1('0x3c')](_0x15b1('0x9b'),_0x2e54f6);winston[_0x15b1('0x3c')]('»»»\x20»»»\x20\x20update\x20customer\x20-\x20cc\x20from\x20body\x20',_0x45235a[_0x15b1('0x21')]);const _0x211a72=require(_0x15b1('0x81'))(apiSecretKey);let _0x1de67d;try{_0x1de67d=await _0x211a72[_0x15b1('0x67')]['create']({'type':'card','card':{'number':_0x45235a[_0x15b1('0x21')][_0x15b1('0xb')],'exp_month':_0x45235a[_0x15b1('0x21')][_0x15b1('0xa0')],'exp_year':_0x45235a['body'][_0x15b1('0x35')],'cvc':_0x45235a['body'][_0x15b1('0xd')]}});}catch(_0x23fbed){winston[_0x15b1('0xac')]('»»»\x20»»»\x20\x20paymentMethod\x20create\x20\x20error\x20',_0x23fbed);return _0x338697[_0x15b1('0x87')](0x1f6)[_0x15b1('0xaa')]({'success':![],'msg':_0x23fbed});}winston['debug'](_0x15b1('0x2b'),_0x1de67d);try{const _0x357fdf=await _0x211a72[_0x15b1('0x67')][_0x15b1('0x6e')](_0x1de67d['id'],{'customer':_0x2e54f6});winston[_0x15b1('0x3c')](_0x15b1('0x70'),_0x357fdf);}catch(_0x388221){winston[_0x15b1('0xac')]('»»»\x20»»»\x20\x20paymentMethod\x20attached\x20\x20error\x20',_0x388221);return _0x338697[_0x15b1('0x87')](0x1f5)[_0x15b1('0xaa')]({'success':![],'msg':_0x388221});}const _0x1dd031=await _0x211a72[_0x15b1('0x0')][_0x15b1('0x36')](_0x2e54f6,{'invoice_settings':{'default_payment_method':_0x1de67d['id']}});_0x338697[_0x15b1('0x56')](_0x1dd031);});router[_0x15b1('0x4a')](_0x15b1('0x80'),[passport[_0x15b1('0x90')](['basic',_0x15b1('0x7c')],{'session':![]}),validtoken],async function(_0x4a1e03,_0x347cbd){winston[_0x15b1('0x48')](_0x15b1('0x93'),_0x4a1e03[_0x15b1('0x40')]);var _0xf4172c=_0x4a1e03[_0x15b1('0x40')][_0x15b1('0x7f')];winston[_0x15b1('0x3c')](_0x15b1('0xb1'),_0xf4172c);const _0x36307d=require(_0x15b1('0x81'))(apiSecretKey);const _0x27a45f=await _0x36307d['customers'][_0x15b1('0x4e')](_0xf4172c);const _0x13af46=_0x27a45f[_0x15b1('0x6')][_0x15b1('0x7a')];let _0x3a54a0;try{_0x3a54a0=await _0x36307d['paymentMethods'][_0x15b1('0x6a')]({'customer':_0xf4172c,'type':_0x15b1('0xc')});winston[_0x15b1('0x3c')](_0x15b1('0xb5'),_0x3a54a0);}catch(_0x468a4c){return _0x347cbd[_0x15b1('0x87')](0x1f5)['send']({'success':![],'msg':_0x468a4c});}winston[_0x15b1('0x3c')](_0x15b1('0x19'),_0x13af46);_0x3a54a0[_0x15b1('0x3')][_0x15b1('0x10')](_0x1e84c8=>{if(_0x1e84c8['id']!==_0x13af46){winston[_0x15b1('0x3c')]('get\x20PaymentMethods\x20list\x20>\x20paymentMethods\x20>\x20paymentMethods.data\x20',_0x1e84c8['id']);detachPaymentFunc(_0x1e84c8['id'],function(_0x165391){winston[_0x15b1('0x48')](_0x15b1('0x37'),_0x165391);});}});_0x347cbd[_0x15b1('0x56')](_0x3a54a0);});async function detachPaymentFunc(_0x5c72a1,_0x5379eb){winston[_0x15b1('0x3c')](_0x15b1('0xb3'),_0x5c72a1);const _0x3612b3=require(_0x15b1('0x81'))(apiSecretKey);let _0x113a94;try{_0x113a94=await _0x3612b3[_0x15b1('0x67')][_0x15b1('0xad')](_0x5c72a1);_0x5379eb(_0x113a94);}catch(_0x3f8cbf){_0x5379eb(_0x3f8cbf);}}module[_0x15b1('0x1e')]=router;
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBheW1lbnRzL3N0cmlwZS9pbmRleC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsInJvdXRlciIsIndpbnN0b24iLCJQcm9qZWN0IiwiU3Vic2NyaXB0aW9uUGF5bWVudCIsIm1vbWVudCIsIm1vbmdvb3NlIiwicGFzc3BvcnQiLCJ2YWxpZHRva2VuIiwiYXBpS2V5IiwicHJvY2VzcyIsInN0cmlwZSIsImVuZHBvaW50U2VjcmV0IiwiYXBpU2VjcmV0S2V5IiwiYm9keVBhcnNlciIsIl8weDFiYzg4MSIsIl8weDIzMTYwNyIsIl8weDE3NTc5OSIsIl8weDUyZmNkMCIsIl8weDVmM2IxOSIsIl8weDI3ODdmNyIsIl8weDFlOGEzZSIsIl8weDVlMjhlMiIsIl8weDNkMDU0ZCIsIl8weDI4MjgxMCIsIl8weDMxMDk3NyIsIl8weDFhMjgyYiIsIk51bWJlciIsIl8weDRjNTFjMiIsImdldFN1YnNjcml0aW9uQnlJZCIsIl8weDM4MTNmOCIsIl8weDRiM2Y5OSIsIl8weDNhOGYzZSIsIl8weDIyYTQ4OCIsIl8weDQwMzM3MSIsInVwZGF0ZVByb2plY3RQcm9maWxlIiwic2F2ZU9uREIiLCJfMHgyOGQwMWQiLCJfMHgxZmRmNWIiLCJfMHhkY2UyYTgiLCJfMHg0NjdjOGMiLCJfMHgzM2VhN2UiLCJnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCIsIl8weDNmZjVkMyIsIl8weDU2YWQwNCIsIl8weDUwYWE3YyIsIl8weDMyMDA0NiIsIl8weDU3ZGU3NiIsIl8weDE4MjM4OSIsIl8weDQ3ZmJkYSIsIl8weDExYjdmZSIsIl8weDRiMWE0ZSIsIl8weDM2YjYwYiIsImNvbnNvbGUiLCJzYXZlRmlyc3RJbnZvaWNlUGF5bWVudFN1Y2NlZWRlZCIsIl8weDNiZGI5YyIsIl8weDM4MzY0NSIsIl8weDM5ZjdkOCIsIl8weDUyZTUwMyIsIl8weDRhY2JjMSIsIl8weDJhMWEzYSIsIl8weDQzMDg1MyIsIlByb21pc2UiLCJfMHgzNjVlY2IiLCJfMHg1MjIwNmEiLCJfMHgyZGM2YzYiLCJfMHgzYTI2OWIiLCJfMHg4OGRiY2UiLCJfMHhiNDk3ZjQiLCJfMHg0ZDY2ZDQiLCJfMHgzZTM4OTAiLCJfMHgzMmQxMWMiLCJfMHgxMTIyODYiLCJfMHg1MzRkNTgiLCJfMHgyNmI1ZDkiLCJfMHgzNmMxMjEiLCJfMHhmMTVlMmQiLCJfMHg1YWI4NDgiLCJfMHg0YmVjODEiLCJfMHg0NjI1NzEiLCJfMHg0N2Y0ZWIiLCJfMHg2OTZmYjkiLCJfMHg1MTI3NWQiLCJfMHgyN2I0YzUiLCJfMHg0ZTkyZmEiLCJfMHg0NjQyODIiLCJfMHgyMjY2ZmYiLCJfMHgzMjViNzUiLCJfMHgxZmI5MjEiLCJyZXMiLCJfMHgxOTI0MmMiLCJfMHgyN2VhZDMiLCJfMHgzN2NhMmMiLCJfMHgxYmU2ZDgiLCJfMHgyNmE4OGUiLCJfMHgyMzNlOTciLCJfMHgyY2FlNzIiLCJfMHg1NjlhNmQiLCJfMHgyYTAzZjIiLCJfMHgyZDE1NjIiLCJfMHg3MDhiNDMiLCJfMHgzYmJjNTMiLCJfMHgxYzZlOWMiLCJfMHgxMTAwZWMiLCJfMHgzNzcxOTUiLCJfMHgxYzI3ODgiLCJfMHgyZWNjMjQiLCJfMHg0Y2FlYTIiLCJfMHgxMGI3OTAiLCJfMHg1ZjBkODQiLCJfMHgyYjUyMGUiLCJfMHgxOTE5OTQiLCJfMHgzYzM3YjYiLCJfMHgyNWQ2MDUiLCJfMHgxNGRhOGIiLCJfMHhlMTg2ODgiLCJfMHgzMmVkNDMiLCJfMHgxODZhZmMiLCJfMHgzMjhjNDEiLCJwcm9qZWN0IiwiXzB4MzJhZjNhIiwiXzB4NDI4OTViIiwiXzB4M2ZiM2U0IiwiXzB4MjQwZmQ0IiwiXzB4MzVkNWYxIiwiXzB4NTRmMjg3IiwiXzB4NDI4ZWE1IiwiXzB4MTM1N2U0IiwiXzB4MzZmMWRmIiwiXzB4NDgxNzI4IiwiXzB4MWYyMTdmIiwiXzB4ZTg5M2QiLCJfMHg1N2Q3YjUiLCJfMHg1N2IyYzciLCJfMHgzYTFhYzIiLCJfMHgxMzMyMjciLCJfMHgzY2Y3OGIiLCJfMHgxZWM4NTYiLCJfMHgyN2E4MTAiLCJfMHg0NTIzNWEiLCJfMHgzMzg2OTciLCJfMHgyZTU0ZjYiLCJfMHgyMTFhNzIiLCJfMHgxZGU2N2QiLCJfMHgyM2ZiZWQiLCJfMHgzNTdmZGYiLCJfMHgzODgyMjEiLCJfMHgxZGQwMzEiLCJfMHg0YTFlMDMiLCJfMHgzNDdjYmQiLCJfMHhmNDE3MmMiLCJfMHgzNjMwN2QiLCJfMHgyN2E0NWYiLCJfMHgxM2FmNDYiLCJfMHgzYTU0YTAiLCJfMHg0NjhhNGMiLCJfMHgxZTg0YzgiLCJkZXRhY2hQYXltZW50RnVuYyIsIl8weDE2NTM5MSIsIl8weDVjNzJhMSIsIl8weDUzNzllYiIsIl8weDM2MTJiMyIsIl8weDExM2E5NCIsIl8weDNmOGNiZiIsIm1vZHVsZSJdLCJtYXBwaW5ncyI6IjI0TEFBQSxJQUFJQSxPQUFBLENBQVVDLE9BQUEsQyxlQUFBLENBQWQsQ0FDQSxJQUFJQyxNQUFBLENBQVNGLE9BQUEsQyxRQUFBLEdBQWIsQ0FFQSxJQUFJRyxPQUFBLENBQVVGLE9BQUEsQyxlQUFBLENBQWQsQ0FFQSxJQUFJRyxPQUFBLENBQVVILE9BQUEsQyxlQUFBLENBQWQsQ0FDQSxJQUFJSSxtQkFBQSxDQUFzQkosT0FBQSxDLGVBQUEsQ0FBMUIsQ0FDQSxJQUFJSyxNQUFBLENBQVNMLE9BQUEsQyxlQUFBLENBQWIsQ0FDQSxJQUFJTSxRQUFBLENBQVdOLE9BQUEsQyxVQUFBLENBQWYsQ0FDQSxJQUFJTyxRQUFBLENBQVdQLE9BQUEsQyxlQUFBLENBQWYsQ0FFQUEsT0FBQSxDLGVBQUEsRUFBd0NPLFFBQXhDLEVBRUEsSUFBSUMsVUFBQSxDQUFhUixPQUFBLEMsZUFBQSxDQUFqQixDQUdBLE1BQU1TLE1BQUEsQ0FBU0MsT0FBQSxDLGNBQUEsRSxjQUFBLENBQWYsQ0FDQVIsT0FBQSxDLGVBQUEsRSxlQUFjLENBQWtCTyxNQUFoQyxFQUVBLE1BQU1FLE1BQUEsQ0FBU1gsT0FBQSxDLGVBQUEsRUFBa0JTLE1BQWxCLENBQWYsQ0FHQSxNQUFNRyxjQUFBLENBQWlCRixPQUFBLEMsY0FBQSxFLGVBQUEsQ0FBdkIsQ0FD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QUFBLEMsZUFBQSxFQUFTSyxTQUFULEVBL0I4SSxDQUFoSixFQWtDQSxlQUFlRyxpQkFBZixDQUFpQ0UsU0FBakMsQ0FBa0RDLFNBQWxELENBQTRELENBQzFEOUosT0FBQSxDLGVBQUEsRSxlQUFBLENBQXVENkosU0FBdkQsRUFDQSxNQUFNRSxTQUFBLENBQVNqSyxPQUFBLEMsZUFBQSxFQUFrQmEsWUFBbEIsQ0FBZixDQUNBLElBQUlxSixTQUFKLENBQ0EsR0FBSSxDQUNGQSxTQUFBLENBQWdCLE1BQU1ELFNBQUEsQyxlQUFBLEUsZUFBQSxFQUNwQkYsU0FEb0IsQ0FBdEIsQ0FHQUMsU0FBQSxDQUFTRSxTQUFULEVBSkUsQ0FLRixNQUFPQyxTQUFQLENBQVUsQ0FDVkgsU0FBQSxDQUFTRyxTQUFULEVBRFUsQ0FUOEMsQ0FpRDVEQyxNQUFBLEMsZUFBQSxFQUFpQm5LLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyk7XG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcbi8vIHZhciB3aW5zdG9uID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vY29uZmlnL3dpbnN0b24nKTtcbnZhciB3aW5zdG9uID0gcmVxdWlyZSgnLi4vLi4vLi4vY29uZmlnL3dpbnN0b24nKVxuLy8gdmFyIFByb2plY3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbW9kZWxzL3Byb2plY3RcIik7XG52YXIgUHJvamVjdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9tb2RlbHMvcHJvamVjdFwiKTtcbnZhciBTdWJzY3JpcHRpb25QYXltZW50ID0gcmVxdWlyZShcIi4uL21vZGVscy9zdWJzY3JpcHRpb24tcGF5bWVudFwiKTtcbnZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcbnZhciBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xuLy8gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbWlkZGxld2FyZS9wYXNzcG9ydCcpKHBhc3Nwb3J0KTtcbnJlcXVpcmUoXCIuLi8uLi8uLi9taWRkbGV3YXJlL3Bhc3Nwb3J0XCIpKHBhc3Nwb3J0KTtcbi8vIHZhciB2YWxpZHRva2VuID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbWlkZGxld2FyZS92YWxpZC10b2tlbicpXG52YXIgdmFsaWR0b2tlbiA9IHJlcXVpcmUoJy4uLy4uLy4uL21pZGRsZXdhcmUvdmFsaWQtdG9rZW4nKVxuLy8gU2V0IHlvdXIgc2VjcmV0IGtleTogcmVtZW1iZXIgdG8gY2hhbmdlIHRoaXMgdG8geW91ciBsaXZlIHNlY3JldCBrZXkgaW4gcHJvZHVjdGlvblxuLy8gU2VlIHlvdXIga2V5cyBoZXJlOiBodHRwczovL2Rhc2hib2FyZC5zdHJpcGUuY29tL2FjY291bnQvYXBpa2V5c1xuY29uc3QgYXBpS2V5ID0gcHJvY2Vzcy5lbnYuUEFZTUVOVF9TVFJJUEVfQVBJS0VZO1xud2luc3Rvbi5kZWJ1Zygnc3RyaXBlIGFwaUtleScgKyBhcGlLZXkpO1xuXG5jb25zdCBzdHJpcGUgPSByZXF1aXJlKCdzdHJpcGUnKShhcGlLZXkpO1xuXG4vLyBGaW5kIHlvdXIgZW5kcG9pbnQncyBzZWNyZXQgaW4geW91ciBEYXNoYm9hcmQncyB3ZWJob29rIHNldHRpbmdzXG5jb25zdCBlbmRwb2ludFNlY3JldCA9IHByb2Nlc3MuZW52LlBBWU1FTlRfU1RSSVBFX1NFQ1JFVDtcbndpbnN0b24uZGVidWcoJ3N0cmlwZSBlbmRwb2ludFNlY3JldCcgKyBlbmRwb2ludFNlY3JldCk7XG5cbmNvbnN0IGFwaVNlY3JldEtleSA9IHByb2Nlc3MuZW52LlBBWU1FTlRfU1RSSVBFX0FQSV9TRUNSRVRfS0VZO1xud2luc3Rvbi5kZWJ1Zygnc3RyaXBlIGFwaVNlY3JldEtleScgKyBhcGlTZWNyZXRLZXkpO1xuXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcblxuLy8gaHR0cHM6Ly9zdHJpcGUuY29tL2RvY3MvcGF5bWVudHMvY2hlY2tvdXQvZnVsZmlsbG1lbnQjd2ViaG9va3Ncbi8vIGN1cmwgLVggUE9TVCAtdSBhbmRyZWEubGVvQGYyMS5pdDoxMjM0NTYgLUggJ0NvbnRlbnQtVHlwZTphcHBsaWNhdGlvbi9qc29uJyAtZCAne1widHlwZVwiOlwicGF5bWVudF9pbnRlbnQuc3VjY2VlZGVkXCJ9JyAgaHR0cDovL2xvY2FsaG9zdDozMDAwL21vZHVsZXMvcGF5bWVudHMvc3RyaXBlL3dlYmhvb2tcbnJvdXRlci5wb3N0KCcvd2ViaG9vaycsIGJvZHlQYXJzZXIucmF3KHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pLCBmdW5jdGlvbiAocmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgXG4gIHdpbnN0b24uZGVidWcoJ8K7wrvCu8K7IHN0cmlwZSBlbmRwb2ludFNlY3JldDogJyArIGVuZHBvaW50U2VjcmV0KVxuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrvCuyBzdHJpcGUgYXBpS2V5OiAnICsgYXBpS2V5KTtcbiAgd2luc3Rvbi5kZWJ1Zygnc3RyaXBlIGFwaVNlY3JldEtleScgKyBhcGlTZWNyZXRLZXkpO1xuXG4gIGNvbnN0IHNpZyA9IHJlcXVlc3QuaGVhZGVyc1snc3RyaXBlLXNpZ25hdHVyZSddO1xuXG4gIHdpbnN0b24uZGVidWcoJ3N0cmlwZSBzaWc6ICcsIHNpZylcblxuICBsZXQgZXZlbnQ7XG5cbiAgdHJ5IHtcbiAgICBldmVudCA9IHN0cmlwZS53ZWJob29rcy5jb25zdHJ1Y3RFdmVudChyZXF1ZXN0LnJhd0JvZHksIHNpZywgZW5kcG9pbnRTZWNyZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB3aW5zdG9uLmVycm9yKCcqKioqIFN0cmlwZSBlcnJvciBjb25zdHJ1Y3RFdmVudDogJywgZXJyLm1lc3NhZ2UpXG4gICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyg0MDApLnNlbmQoYFdlYmhvb2sgRXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cblxuICAvKipcbiAgICoqISAqKiogSGFuZGxlIHRoZSBjaGVja291dC5zZXNzaW9uLmNvbXBsZXRlZCBldmVudCAqKipcbiAgICogTk9URTogVEhJUyBFVkVOVCBPQ0NVUiBPTkxZIFdIRU4gSVMgQ1JFQVRFRCBBIE5FVyBTVUJTQ1JJUFRJT05cbiAgICogMSkgRlJPTSBUSEUgUFJPUEVSVFkgXCJjbGllbnRfcmVmZXJlbmNlX2lkXCIgQVJFIE9CVEFJTkVEIFRIRTpcbiAgICogICAgQSkgVVNFUiBJRFxuICAgKiAgICBCKSBQUk9KRUNUIElEIFxuICAgKiAyKSBXSVRIIFRIRSBzdWJzY3JpcHRpb24gSUQgKE5PVEUgaXMgdGhlIHByb3BlcnR5IHN1YnNjcmlwdGlvbikgSVMgUlVOTkVEIEEgQ0FMTEJBQ0sgVE8gU1RSSVBFXG4gICAqICAgIFRPIE9CVEFJTiBUSEUgT0JKRUNUIFwiU1VCU0NSSVBUSU9OXCIgQU5EIFRIRU4gRlJPTSBUSElTIEFSRSBPQlRBSU5FRCBUSEU6XG4gICAqICAgIEEpIHN1YnNjcmlwdGlvblN0YXJ0RGF0ZVxuICAgKiAgICBCKSBzdWJzY3JpcHRpb25FbmREYXRlXG4gICAqICAgIEMpIHF1YW50aXR5ICh3aGljaCBpbiB0aGUgdGlsZWRlc2sgZGFzaGJvYXJkIGNvcnJlc3BvbmRzIHRvIHRoZSBudW1iZXIgb2YgYWdlbnRzIC8gb3BlcmF0b3JzIHNlYXRzKVxuICAgKiAzKSBXSVRIIFRIRSBPQlRBSU5FRCBEQVRBIElTIFVQREFURUQgVEhFIFBST0pFQ1QgJ1BST0ZJTEUnIChpcyBhbiBvYmplY3QgbmVzdGVkIGluIHRoZSBwcm9qZWN0IG9iamVjdCkgXG4gICAqIDQpIFRIRSBPQlRBSU5FRCBPQkpFQ1QgXCJTVUJTQ1JJUFRJT05cIiBBTkQgdGhlIFwiU1VCU0NSSVBUSU9OIElEXCIsIHRoZSBcIlBST0pFQ1QgSURcIiwgdGhlIFwiVVNFUiBJRFwiIEFORCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIiBBUkUgU0FWRUQgT04gT1VSIERCXG4gICAqICAgIEFTIFwiU1VCU0NSSVBUSU9OLVBBWU1FTlRcIlxuICAgKi9cblxuICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkJykge1xuICAgIHdpbnN0b24uZGVidWcoJyEhISEhISEhIEhJICEhISEhISEhIGNoZWNrb3V0LnNlc3Npb24uY29tcGxldGVkJyk7XG5cbiAgICBjb25zdCBzZXNzaW9uID0gZXZlbnQuZGF0YS5vYmplY3Q7XG4gICAgd2luc3Rvbi5pbmZvKCdzdHJpcGUgY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQnLCBzZXNzaW9uKTtcblxuICAgIHZhciBjbGllbnRfcmVmZXJlbmNlX2lkID0gc2Vzc2lvbi5jbGllbnRfcmVmZXJlbmNlX2lkO1xuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIGNsaWVudF9yZWZlcmVuY2VfaWQnLCBjbGllbnRfcmVmZXJlbmNlX2lkKTtcblxuICAgIC8qKiAxQSAqL1xuICAgIHZhciB1c2VyX2lkID0gY2xpZW50X3JlZmVyZW5jZV9pZC5zcGxpdChcIl9cIilbMF07XG4gICAgd2luc3Rvbi5pbmZvKCdzdHJpcGUgdXNlcl9pZDonICsgdXNlcl9pZCk7XG5cbiAgICAvKiogMUIgKi9cbiAgICB2YXIgcHJvamVjdF9pZCA9IGNsaWVudF9yZWZlcmVuY2VfaWQuc3BsaXQoXCJfXCIpWzFdO1xuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIHByb2plY3RfaWQ6ICcgKyBwcm9qZWN0X2lkKTtcblxuICAgIHZhciBwbGFuX25hbWUgPSBjbGllbnRfcmVmZXJlbmNlX2lkLnNwbGl0KFwiX1wiKVsyXTtcbiAgICB3aW5zdG9uLmluZm8oJ3N0cmlwZSBwbGFuX25hbWU6ICcgKyBwbGFuX25hbWUpO1xuXG4gICAgdmFyIHNlYXRzX251bUFzU3RyaW5nID0gY2xpZW50X3JlZmVyZW5jZV9pZC5zcGxpdChcIl9cIilbM107XG4gICAgd2luc3Rvbi5pbmZvKCdzdHJpcGUgc2VhdHNfbnVtOiAnICsgc2VhdHNfbnVtQXNTdHJpbmcgKyAndHlwZW9mICcsIHR5cGVvZiBzZWF0c19udW1Bc1N0cmluZyk7XG5cbiAgICB2YXIgc2VhdHNfbnVtID0gTnVtYmVyKHNlYXRzX251bUFzU3RyaW5nKVxuICAgIHdpbnN0b24uaW5mbygnc3RyaXBlIHNlYXRzX251bUFzU3RyaW5nOiAnICsgc2VhdHNfbnVtICsgJyB0eXBlb2YgJywgdHlwZW9mIHNlYXRzX251bSk7XG5cbiAgICB2YXIgc3Vic2NyaXB0aW9uSWQgPSBldmVudC5kYXRhLm9iamVjdC5zdWJzY3JpcHRpb247XG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqICEhISEhISEhISEhISEhISEhISEhISEgY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgLSBzdWJzY3JpcHRpb24gSUQ6ICcsIHN1YnNjcmlwdGlvbklkKTtcblxuICAgIGdldFN1YnNjcml0aW9uQnlJZChzdWJzY3JpcHRpb25JZCkudGhlbihmdW5jdGlvbiAoc3Vic2NyaXB0aW9uX29iaikge1xuXG4gICAgICB2YXIgb2JqZWN0X3R5cGUgPSBzdWJzY3JpcHRpb25fb2JqLm9iamVjdDtcbiAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBjaGVja291dC5zZXNzaW9uLmNvbXBsZXRlZCAtIGdldFN1YnNjcml0aW9uQnlJZCBzdWJzY3Igb2JqZWN0X3R5cGU6ICcsIG9iamVjdF90eXBlKTtcblxuICAgICAgLyoqIDJBICovXG4gICAgICB2YXIgc3Vic2NyaXB0aW9uU3RhcnREYXRlID0gbW9tZW50LnVuaXgoc3Vic2NyaXB0aW9uX29iai5jdXJyZW50X3BlcmlvZF9zdGFydCkuZm9ybWF0KCdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycpXG4gICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgLSBnZXRTdWJzY3JpdGlvbkJ5SWQgKioqIHN0YXJ0ICoqKiA6ICcsIHN1YnNjcmlwdGlvblN0YXJ0RGF0ZSk7XG5cbiAgICAgIC8qKiAyQiAqL1xuICAgICAgdmFyIHN1YnNjcmlwdGlvbkVuZERhdGUgPSBtb21lbnQudW5peChzdWJzY3JpcHRpb25fb2JqLmN1cnJlbnRfcGVyaW9kX2VuZCkuZm9ybWF0KCdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycpXG4gICAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgLSBnZXRTdWJzY3JpcHRpb24gKioqIGVuZCAqKiogOiAnLCBzdWJzY3JpcHRpb25FbmREYXRlKTtcblxuICAgICAgLyoqXG4gICAgICAgKiEgKioqIEJPRFkgKioqXG4gICAgICAgKi9cbiAgICAgIHZhciBib2R5ID0ge1xuICAgICAgICBwcm9maWxlOiB7XG4gICAgICAgICAgbmFtZTogcGxhbl9uYW1lLFxuICAgICAgICAgIHR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICBzdWJzY3JpcHRpb25fY3JlYXRpb25fZGF0ZTogc3Vic2NyaXB0aW9uU3RhcnREYXRlLFxuICAgICAgICAgIHN1YlN0YXJ0OiBzdWJzY3JpcHRpb25TdGFydERhdGUsXG4gICAgICAgICAgc3ViRW5kOiBzdWJzY3JpcHRpb25FbmREYXRlLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBzdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICBsYXN0X3N0cmlwZV9ldmVudDogZXZlbnQudHlwZSxcbiAgICAgICAgICBhZ2VudHM6IHNlYXRzX251bVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKiAzICovXG4gICAgICB1cGRhdGVQcm9qZWN0UHJvZmlsZShwcm9qZWN0X2lkLCBib2R5LCAnY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQnKTtcblxuICAgICAgLyoqIDQgKi9cbiAgICAgIHNhdmVPbkRCKHN1YnNjcmlwdGlvbklkLCBwcm9qZWN0X2lkLCBzdWJzY3JpcHRpb25fb2JqLCB1c2VyX2lkLCBldmVudC50eXBlLCBwbGFuX25hbWUsIHNlYXRzX251bSlcblxuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJyoqKiAqKiogY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWQgLSBnZXRTdWJzY3JpdGlvbkJ5SWQgZXJyICcsIGVycik7XG4gICAgfSk7XG5cbiAgfVxuICAvLyBvYmplY3RfdHlwZSA9IHN1YnNjcmlwdGlvbi5cbiAgLyoqXG4gICAqKiEgKioqIEhhbmRsZSB0aGUgaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCBldmVudCAqKipcbiAgICogTk9URTogVEhJUyBFVkVOVCBPQ0NVUiBXSEVOIElTIENSRUFURUQgQSBORVcgU1VCU0NSSVBUSU9OIEFORCBFVkVSWSBUSU1FIFRIRSBTQU1FIElTIFJFTkVXRURcbiAgICogMSkgRlJPTSBUSEUgT0JKRUNUIE9GIFRIRSBFVkVOVCBBUkUgT0JUQUlORUQgVEhFOlxuICAgKiAgICBBKSBzdWJzY3JpcHRpb25TdGFydERhdGVcbiAgICogICAgQikgc3Vic2NyaXB0aW9uRW5kRGF0ZVxuICAgKiAgICBDKSBzdWJzY3JpdHB0aW9uSWQgIFxuICAgKiAyKSB3aGVuIHJlZmVyIHRvIGEgUkVORVdBTCAoIGJpbGxpbmdfcmVhc29uID09PSBzdWJzY3JpcHRpb25fY3ljbGUpXG4gICAqICAgIElGIFRIRSBWQUxVRSBPRiBUSEUgUFJPUEVSVFkgXCJiaWxsaW5nX3JlYXNvblwiIElTIFVOTElLRSBPRiBcInN1YnNjcmlwdGlvbl9jcmVhdGVcIiAoTUVBTlMgVEhBVCBUSEUgRVZFTlQgUkVGRVIgVE8gQSBSRU5FV0FMIFxuICAgKiAgICBGT1IgV0hJQ0ggYmlsbGluZ19yZWFzb246IHN1YnNjcmlwdGlvbl9jeWNsZSBBTkQgTk9UIFRPIFRIRSBGSVJTVCBTVUJTQ1JJUFRJT04pIFxuICAgKiAgICBBKSBJUyBPQlRBSU5FRCBUSEUgJ1NVQlNDUklQVElPTi1QQVlNRU5UJyAod2l0aCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIikgU0FWRUQgQUJPVkUgQU5EIFRIRU4gRlJPTSBUSElTOlxuICAgKiAgICAgICAtIFRIRSBcIlBST0pFQ1QgSURcIiBcbiAgICogICAgICAgLSBUSEUgXCJVU0VSIElEXCJcbiAgICogICAgICAgVE8gT0JUQUlOIFRIRSAnU1VCU0NSSVBUSU9OLVBBWU1FTlQnSU4gT1VSIERCIElTIExPT0tFRCBGT1IgVEhFIFwiU1VCU0NSSVBJT04tUEFZTUVOVFwiIFRIQVQgSEFTIEZPUiBzdWJzY3JpcHRpb24gaWQgVEhFIFZBTFVFIE9GIDFDIEFORCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIlxuICAgKiAgICAgICBUSEUgQ09ORElUSU9OIHN0cmlwZV9ldmVudDogXCJjaGVja291dC5zZXNzaW9uLmNvbXBsZXRlZFwiIChOTyBNT1JFOiBvYmplY3RfdHlwZSA9IHN1YnNjcmlwdGlvbikgSVQnUyBORUNFU1NBUlkgVE8gRklMVEVSIFRIRSBcIlNVQlNDUklQSU9OLVBBWU1FTlRTXCIgXG4gICAqICAgICAgIFRIQVQgQ09OVEFJTiBUSEUgIFBST1BFUlRJRVMgIFwicHJvamVjdElEXCIgQU5EIFwidXNlcklEXCJcbiAgICogICAgICAgVEhFIEVYSVNURU5DRSBPRiBBIFwiU1VCU0NSSVBUSU9OLVBBWU1FTlRcIiBXSVRIT1VUIFwicHJvamVjdElEXCIgQU5EIFwidXNlcklEXCIgSVMgRFVFIFRPIFRIRSBGQUNUIFRIQVQgQVQgVEhFIE1PTUVOVCBPRiBUSEUgQ1JFQVRJT04gT0YgQSBTVUJTQ1JJUFRJT04gXG4gICAqICAgICAgIElTIFNBVkVEIElOIE9VUiBEQiBBTFNPIEEgXCJTVUJTQ1JJUFRJT04tUEFZTUVOVFwiIENPUlJFU1BPTkRJTkcgVE8gVEhFIE9CSkVDVCBSRVRVUk5FRCBCWSAgVEhFIEVWRU5UIFwiaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZFwiIFVTRUZVTCBCRUNBVVNFIFxuICAgKiAgICAgICBJVCBDT05UQUlOUyBUSEUgTElOS1MgT0YgVEhFIElOVk9JQ0UgT0YgVEhFIEZJUlNUIFNVQlNDUklQVElPTiAodXNlZCBieSB0aWxlZGVzayBkYXNoYm9hcmQgaW4gdGhlIGNvbXBvbmVudHMgcGF5bWVudHMpXG4gICAqICAgICAgIEJVVCBGUk9NIFdISUNIIElUIElTIE5PVCBQT1NTSUJMRSBQVVNIIEFORCBUSEVOIFRPIFRPIE9CVEFJTiBUSEUgXCJwcm9qZWN0SURcIiBBTkQgXCJ1c2VySURcIlxuICAgKiAgICBCKSBJUyBVUERBVEVEIFRIRSBQUk9KRUNUICdQUk9GSUxFJyBXSVRIOlxuICAgKiAgICAgICAtIERBVEEgT0JUQUlORUQgRlJPTSBUSEUgRVZFTlQnUyBPQkpFQ1Q6XG4gICAqICAgICAgICAgLSBzdWJzY3JpcHRpb25TdGFydERhdGVcbiAgICogICAgICAgICAtIHN1YnNjcmlwdGlvbkVuZERhdGVcbiAgICogICAgICAgICAtIHN1YnNjcmlwdGlvbklkIFxuICAgKiAgICAgICAgIC0gbGFzdF9zdHJpcGVfZXZlbnQgXG4gICAqICAgICAgICAgLSBxdWFudGl0eSAod2hpY2ggaW4gdGhlIGRhc2hib2FyZCBjb3JyZXNwb25kcyB0byB0aGUgbnVtYmVyIG9mIGFnZW50cyAvIG9wZXJhdG9ycyBzZWF0cylcbiAgICogICAgICAgLSBEQVRBIE9CVEFJTkVEIEZST00gVEhFICdTVUJTQ1JJUFRJT04tUEFZTUVOVCcgd2l0aCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIlxuICAgKiAgICAgICAgIC0gXCJQUk9KRUNUIElEXCIgYW5kIFwiVVNFUiBJRFwiXG4gICAqICAgIEMpIFRIRSBPQkpFQ1QgT0YgVEhFIEVWRU5UIGludm9pY2UucGF5bWVudF9zdWNjZWVkZWQgQU5EIHRoZSBcIlNVQlNDUklQVElPTiBJRFwiLCB0aGUgXCJQUk9KRUNUIElEXCIsIHRoZSBcIlVTRVIgSURcIiBBTkQgdGhlIFwiT0JKRUNUX1RZUEVcIiAoZXZlbnQpIFxuICAgKiAgICAgICBBUkUgU0FWRUQgQVMgXCJTVUJTQ1JJUFRJT04tUEFZTUVOVFwiIE9OIE9VUiBEQlxuICAgKiAzKSB3aGVuIHJlZmVyIHRvIGEgQ1JFQVRJT04gKGJpbGxpbmdfcmVhc29uID09PSBzdWJzY3JpcHRpb25fY3JlYXRlKVxuICAgKiAgICBBKSBUSEUgT0JKRUNUIE9GIFRIRSBFVkVOVCBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIEFORCBUSEUgREFUQSBldmVudC50eXBlID09PSBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkICBBUkUgU0FWRUQgQVMgXCJTVUJTQ1JJUFRJT04tUEFZTUVOVFwiXG4gICAqICAgICAgIE9OIE9VUiBEQiAoTk9URTogXCJQUk9KRUNUIElEXCIgQU5EIFwiVVNFUiBJRFwiIEFSRSBTQVZFRCBBUyBudWxsIFNJTkNFIElTIE5PVCBQT1NTSUJMRSBUTyBSRVRSSUVWRSBUSEUgVkFMVUVTKSBcbiAgICogXG4gICAqL1xuICBpZiAoZXZlbnQudHlwZSA9PT0gJ2ludm9pY2UucGF5bWVudF9zdWNjZWVkZWQnKSB7XG5cbiAgICB3aW5zdG9uLmluZm8oJyAhISEhISEhISBISSAhISEhISEhISBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkJyk7XG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGludm9pY2UucGF5bWVudF9zdWNjZWVkZWQgLSBCSUxMSU5HIFJFQVNPTiAnLCBldmVudC5kYXRhLm9iamVjdC5iaWxsaW5nX3JlYXNvbik7XG5cbiAgICB2YXIgbGluZXNOdW0gPSBldmVudC5kYXRhLm9iamVjdC5saW5lcy50b3RhbF9jb3VudFxuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gbGluZXNOdW06ICcsIGxpbmVzTnVtKTtcblxuICAgIHZhciBpbmRleCA9IGxpbmVzTnVtIC0gMTtcbiAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCAtIGluZGV4OiAnLCBpbmRleCk7XG5cbiAgICAvKiogMUEgKi8gLy8gVEhJUyBXT1JLU1xuICAgIHZhciBzdWJzY3JpcHRpb25TdGFydERhdGUgPSBtb21lbnQudW5peChldmVudC5kYXRhLm9iamVjdC5saW5lcy5kYXRhW2luZGV4XS5wZXJpb2Quc3RhcnQpLmZvcm1hdCgnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnKVxuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gc3RhcnQ6ICcsIHN1YnNjcmlwdGlvblN0YXJ0RGF0ZSk7XG5cbiAgICAvKiogMUIgKi8gLy8gVEhJUyBXT1JLU1xuICAgIHZhciBzdWJzY3JpcHRpb25FbmREYXRlID0gbW9tZW50LnVuaXgoZXZlbnQuZGF0YS5vYmplY3QubGluZXMuZGF0YVtpbmRleF0ucGVyaW9kLmVuZCkuZm9ybWF0KCdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycpXG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGludm9pY2UucGF5bWVudF9zdWNjZWVkZWQgLSBlbmQ6ICcsIHN1YnNjcmlwdGlvbkVuZERhdGUpO1xuXG4gICAgdmFyIHN1YnNjcmlwdGlvbklkID0gZXZlbnQuZGF0YS5vYmplY3Quc3Vic2NyaXB0aW9uO1xuICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gc3Vic2NyaXB0aW9uIElEOiAnLCBzdWJzY3JpcHRpb25JZCk7XG5cbiAgICBpZiAoc3Vic2NyaXB0aW9uSWQgPT0gbnVsbCkge1xuICAgICAgc3Vic2NyaXB0aW9uSWQgPSBldmVudC5kYXRhLm9iamVjdC5saW5lcy5kYXRhWzBdLnN1YnNjcmlwdGlvbjtcbiAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkIC0gc3Vic2NyaXB0aW9uIElEOiAnLCBzdWJzY3JpcHRpb25JZCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmRhdGEub2JqZWN0LmJpbGxpbmdfcmVhc29uICE9PSAnc3Vic2NyaXB0aW9uX2NyZWF0ZScpIHtcblxuXG4gICAgICAvLyBUTyBURVNUIFRIRSBSRU5FV0FMIFVOQ09NTUVOVCBTRVQgVElNRU9VVFxuICAgICAgLy8gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAvKiogMkEgKi9cbiAgICAgIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50KHN1YnNjcmlwdGlvbklkKS50aGVuKGZ1bmN0aW9uIChzdWJzcHRuX3BheW1lbnQpIHtcbiAgICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50IHN1YnNwdG5fcGF5bWVudDogJywgc3Vic3B0bl9wYXltZW50KTtcbiAgICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50IHN1YnNwdG5fcGF5bWVudCB0eXBlb2Ygc3Vic3B0bl9wYXltZW50OiAnLCB0eXBlb2Ygc3Vic3B0bl9wYXltZW50KTtcbiAgICAgICAgaWYgKHN1YnNwdG5fcGF5bWVudCkge1xuXG4gICAgICAgICAgdmFyIHByb2plY3RJZCA9IHN1YnNwdG5fcGF5bWVudC5wcm9qZWN0X2lkXG4gICAgICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50IHN1YnNwdG5fcGF5bWVudCA+IHByb2plY3RfaWQ6ICcsIHByb2plY3RJZCk7XG5cbiAgICAgICAgICBQcm9qZWN0LmZpbmRPbmUoeyBfaWQ6IHByb2plY3RJZCB9LCBmdW5jdGlvbiAoZXJyLCBwcm9qZWN0KSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCAgZmluZCBQcm9qZWN0ICcsIGVycik7XG4gICAgICAgICAgICAgIHJldHVybiAoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9qZWN0KSB7XG4gICAgICAgICAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCAgcHJvamVjdCAnLCBwcm9qZWN0KTtcbiAgICAgICAgICAgICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIGdldFN1YkJ5SWRBbmRDaGVja291dFNlc3Npb25Db21wbGV0ZWRFdm50ICBwcm9qZWN0ID4gcHJvZmlsZScsIHByb2plY3QucHJvZmlsZSk7XG5cbiAgICAgICAgICAgICAgdmFyIHNlYXRzX251bSA9IHByb2plY3QucHJvZmlsZS5hZ2VudHM7XG4gICAgICAgICAgICAgIHZhciBwbGFuX25hbWUgPSBwcm9qZWN0LnByb2ZpbGUubmFtZTtcbiAgICAgICAgICAgICAgdmFyIHVzZXJJZCA9IHN1YnNwdG5fcGF5bWVudC51c2VyX2lkXG5cbiAgICAgICAgICAgICAgbGV0IHByb2ZpbGUgPSBwcm9qZWN0LnByb2ZpbGU7XG4gICAgICAgICAgICAgIHByb2ZpbGUubmFtZSA9IHBsYW5fbmFtZTtcbiAgICAgICAgICAgICAgcHJvZmlsZS50eXBlID0gXCJwYXltZW50XCI7XG4gICAgICAgICAgICAgIHByb2ZpbGUuc3ViU3RhcnQgPSBzdWJzY3JpcHRpb25TdGFydERhdGU7XG4gICAgICAgICAgICAgIHByb2ZpbGUuc3ViRW5kID0gc3Vic2NyaXB0aW9uRW5kRGF0ZTtcbiAgICAgICAgICAgICAgcHJvZmlsZS5zdWJzY3JpcHRpb25JZCA9IHN1YnNjcmlwdGlvbklkO1xuICAgICAgICAgICAgICBwcm9maWxlLmxhc3Rfc3RyaXBlX2V2ZW50ID0gZXZlbnQudHlwZTtcblxuXG4gICAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgIC8vICBCT0RZIFxuICAgICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICB2YXIgYm9keSA9IHtcbiAgICAgICAgICAgICAgICBwcm9maWxlOiBwcm9maWxlXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvKiogMkIgKi9cbiAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdFByb2ZpbGUocHJvamVjdElkLCBib2R5LCAnaW52b2ljZS5wYXltZW50X3N1Y2NlZWRlZCcpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgLyoqIDJDICovXG4gICAgICAgICAgICAgIHNhdmVPbkRCKHN1YnNjcmlwdGlvbklkLCBwcm9qZWN0SWQsIGV2ZW50LCB1c2VySWQsIGV2ZW50LnR5cGUsIHBsYW5fbmFtZSwgc2VhdHNfbnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgd2luc3Rvbi5lcnJvcignKioqICoqKiBnZXRTdWJCeUlkQW5kQ2hlY2tvdXRTZXNzaW9uQ29tcGxldGVkRXZudCAtIGVyciAnLCBlcnIpO1xuICAgICAgfSk7XG4gICAgICAvLyB9LCA1MDAwKTtcbiAgICB9IFxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEub2JqZWN0LmJpbGxpbmdfcmVhc29uID09PSAnc3Vic2NyaXB0aW9uX2NyZWF0ZScpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdVU0VDQVNFICBpbnZvaWNlLnBheW1lbnRfc3VjY2VlZGVkICBiaWxsaW5nX3JlYXNvbiBzdWJzY3JpcHRpb25fY3JlYXRlICcpIFxuICAgICAgc2F2ZUZpcnN0SW52b2ljZVBheW1lbnRTdWNjZWVkZWQoc3Vic2NyaXB0aW9uSWQsIGV2ZW50LCBldmVudC50eXBlKTtcbiAgICB9IFxuICBcbiAgfVxuXG4gIC8qKlxuICAgKiohICoqKiBIQU5ETEUgVEhFIEVWRU5UIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkICoqKlxuICAgKiB0aGlzIGV2ZW50IG9jY3VycyB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIGNhbmNlbGxlZFxuICAgKiAtIGZyb20gdGhlIFRJTEVERVNLJyBkYXNoYm9hcmQgKGJ5IGNsaWNraW5nIENBTkNFTCBTVUJTQ1JJUFRJT04gdGhhdCBjYWxsIGNhbmNlbHN1YnNjcmlwdGlvbigpIC0gc2VlIGJlbG93KVxuICAgKiAtIGZyb20gdGhlIFNUUklQRScgZGFzaGJvYXJkXG4gICAqL1xuICBpZiAoZXZlbnQudHlwZSA9PT0gJ2N1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkJykge1xuICAgIHdpbnN0b24uaW5mbygnICEhISEhISEhIEhJICEhISEhISEhISEhIGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkJyk7XG4gICAgd2luc3Rvbi5pbmZvKCdjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCBldmVudCAnLCBldmVudCk7XG4gICAgdmFyIHN1YnNjcmlwdGlvbklkID0gZXZlbnQuZGF0YS5vYmplY3QuaWRcbiAgICB3aW5zdG9uLmluZm8oJyoqKiAqKiogc3Vic2NyaXB0aW9uIElEICcsIHN1YnNjcmlwdGlvbklkKTtcblxuICAgIHZhciBzdWJzY3JpcHRpb25FbmQgPSBtb21lbnQudW5peChldmVudC5kYXRhLm9iamVjdC5jYW5jZWxlZF9hdCkuZm9ybWF0KCdZWVlZLU1NLUREVEhIOm1tOnNzLlNTUycpXG4gICAgd2luc3Rvbi5pbmZvKCcqKiogKioqIHN1YnNjcmlwdGlvbkVuZCAnLCBzdWJzY3JpcHRpb25FbmQpO1xuXG4gICAgZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQoc3Vic2NyaXB0aW9uSWQpLnRoZW4oZnVuY3Rpb24gKHN1YnNjcmlwdGlvblBheW1lbnQpIHtcbiAgICAgIC8vIFN1YnNjcmlwdGlvblBheW1lbnQuZmluZCh7IHN1YnNjcmlwdGlvbl9pZDogc3Vic2NyaXB0aW9uSWQsIG9iamVjdF90eXBlOiBcInN1YnNjcmlwdGlvblwiIH0sIGZ1bmN0aW9uIChlcnIsIHN1YnNjcmlwdGlvblBheW1lbnQpIHtcblxuICAgICAgLy8gaWYgKGVycikge1xuICAgICAgLy8gICB3aW5zdG9uLmluZm8oJ0Vycm9yIGdldHRpbmcgdGhlIHN1YnNjcmlwdGlvblBheW1lbnQgJywgZXJyKTtcbiAgICAgIC8vICAgcmV0dXJuIGVycjtcbiAgICAgIC8vIH1cbiAgICAgIHdpbnN0b24uaW5mbygnKioqICoqKiDCu8K7wrsgwrvCu8K7IGN1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkIHN1YnNjcmlwdGlvblBheW1lbnQgJywgc3Vic2NyaXB0aW9uUGF5bWVudCk7XG4gICAgICBpZiAoc3Vic2NyaXB0aW9uUGF5bWVudCkgeyBcbiAgICAgICAgdmFyIHByb2plY3RJZCA9IHN1YnNjcmlwdGlvblBheW1lbnQucHJvamVjdF9pZDsgXG4gICAgICAgIHdpbnN0b24uaW5mbygnY3VzdG9tZXIuc3Vic2NyaXB0aW9uLmRlbGV0ZWQgc3Vic2NyaXB0aW9uUGF5bWVudCBwcm9qZWN0IGlkOiAnLCBwcm9qZWN0SWQpXG4gICAgICAgIFxuICAgICAgICB2YXIgdXNlcklkID0gc3Vic2NyaXB0aW9uUGF5bWVudC51c2VyX2lkO1xuICAgICAgICB3aW5zdG9uLmluZm8oJ2N1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkIHN1YnNjcmlwdGlvblBheW1lbnQgdXNlciBpZDogJywgdXNlcklkKVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqISAqKiogQk9EWSAqKipcbiAgICAgICAqL1xuICAgICAgdmFyIGJvZHkgPSB7XG4gICAgICAgIHByb2ZpbGU6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25JZDogc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgbmFtZTogJ1NhbmRib3gnLFxuICAgICAgICAgIHR5cGU6ICdmcmVlJyxcbiAgICAgICAgICBhZ2VudHM6IDEsXG4gICAgICAgICAgbGFzdF9zdHJpcGVfZXZlbnQ6IGV2ZW50LnR5cGUsXG4gICAgICAgICAgc3ViRW5kOiBzdWJzY3JpcHRpb25FbmRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB3aW5zdG9uLmluZm8oXCJjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCBwcm9maWxlIHRvIHVwZGF0ZSAoZXZlbnQuZGF0YS5vYmplY3QuY2FuY2VsZWRfYXQpIFwiLCBldmVudC5kYXRhLm9iamVjdC5jYW5jZWxlZF9hdClcbiAgICAgIHdpbnN0b24uaW5mbyhcImN1c3RvbWVyLnN1YnNjcmlwdGlvbi5kZWxldGVkIHByb2ZpbGUgdG8gdXBkYXRlIFwiLCBib2R5LnByb2ZpbGUpXG4gICAgICBcbiAgICAgIHVwZGF0ZVByb2plY3RQcm9maWxlKHByb2plY3RJZCwgYm9keSwgJ3N1YnNjcmlwdGlvbi5kZWxldGVkJyk7XG4gICAgICBzYXZlT25EQihzdWJzY3JpcHRpb25JZCwgcHJvamVjdElkLCBldmVudC5kYXRhLm9iamVjdCwgdXNlcklkLCBldmVudC50eXBlLCBwbGFuX25hbWUsIDEpO1xuXG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgd2luc3Rvbi5lcnJvcignKioqICoqKiBjdXN0b21lci5zdWJzY3JpcHRpb24uZGVsZXRlZCAnLCBlcnIpO1xuICAgIH0pO1xuXG4gIH1cbiAgLy8gUmV0dXJuIGEgcmVzcG9uc2UgdG8gYWNrbm93bGVkZ2UgcmVjZWlwdCBvZiB0aGUgZXZlbnRcbiAgcmVzcG9uc2UuanNvbih7IHJlY2VpdmVkOiB0cnVlIH0pO1xufSk7XG5cblxuZnVuY3Rpb24gZ2V0U3ViQnlJZEFuZENoZWNrb3V0U2Vzc2lvbkNvbXBsZXRlZEV2bnQoc3Vic2NyaXB0aW9uaWQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBTdWJzY3JpcHRpb25QYXltZW50LmZpbmRPbmUoeyBzdWJzY3JpcHRpb25faWQ6IHN1YnNjcmlwdGlvbmlkLCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIiB9LCBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb25QYXltZW50KSB7XG4gICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTtcblxuICAgICAgdmFyIHN1YnNjcmlwdGlvbl9wYXltZW50ID0gc3Vic2NyaXB0aW9uUGF5bWVudDtcbiAgICAgIHJlc29sdmUoc3Vic2NyaXB0aW9uX3BheW1lbnQpO1xuICAgIH0pO1xuICB9KVxufTtcblxuZnVuY3Rpb24gZ2V0U3Vic2NyaXRpb25CeUlkKHN1YnNjcmlwdGlvbmlkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgY29uc3QgX3N0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcbiAgICBfc3RyaXBlLnN1YnNjcmlwdGlvbnMucmV0cmlldmUoc3Vic2NyaXB0aW9uaWQsIGZ1bmN0aW9uIChlcnIsIHN1YnNjcmlwdGlvbikge1xuICAgICAgaWYgKGVycikgcmVqZWN0KGVycik7XG5cbiAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb247XG4gICAgICByZXNvbHZlKHN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gIH0pXG59O1xuXG4vLyBTRUUgVXBkYXRpbmcgbmVzdGVkIG9iamVjdCBpbiBtb25nb29zZSBcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzODMyOTIxL3VwZGF0aW5nLW5lc3RlZC1vYmplY3QtaW4tbW9uZ29vc2VcbmZ1bmN0aW9uIHVwZGF0ZVByb2plY3RQcm9maWxlKHByb2plY3RfaWQsIGJvZHksIGNhbGxlZEJ5KSB7XG4gIFByb2plY3QuZmluZEJ5SWRBbmRVcGRhdGUocHJvamVjdF9pZCwgYm9keSwgeyBuZXc6IHRydWUsIHVwc2VydDogdHJ1ZSB9LCBmdW5jdGlvbiAoZXJyLCB1cGRhdGVkUHJvamVjdCkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJ3VwZGF0ZVByb2plY3RQcm9maWxlIEVycm9yICcsIGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbnN0b24uZGVidWcodXBkYXRlZFByb2plY3QpXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2F2ZU9uREIoc3Vic2NyaXB0aW9uaWQsIHByb2plY3RpZCwgb2JqLCB1c2VyaWQsIHN0cmlwZV9ldmVudCwgcGxhbl9uYW1lLCBzZWF0c19udW0pIHtcbiAgd2luc3Rvbi5pbmZvKCdzYXZlT25EQiBwbGFuX25hbWUnLCBwbGFuX25hbWUpXG4gIHdpbnN0b24uaW5mbygnc2F2ZU9uREIgc2VhdHNfbnVtJywgc2VhdHNfbnVtKVxuXG4gIHZhciBuZXdQYXltZW50U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvblBheW1lbnQoe1xuICAgIF9pZDogbmV3IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKCksXG4gICAgc3Vic2NyaXB0aW9uX2lkOiBzdWJzY3JpcHRpb25pZCxcbiAgICBwcm9qZWN0X2lkOiBwcm9qZWN0aWQsXG4gICAgdXNlcl9pZDogdXNlcmlkLFxuICAgIHN0cmlwZV9ldmVudDogc3RyaXBlX2V2ZW50LFxuICAgIHBsYW5fbmFtZTogcGxhbl9uYW1lLFxuICAgIGFnZW50czogc2VhdHNfbnVtLFxuICAgIG9iamVjdDogb2JqXG4gIH0pO1xuXG4gIG5ld1BheW1lbnRTdWJzY3JpcHRpb24uc2F2ZShmdW5jdGlvbiAoZXJyLCBzYXZlZFN1YnNjcmlwdGlvblBheW1lbnQpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmVycm9yKCctLS0gPiBFUlJPUiAnLCBlcnIpXG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDApLnNlbmQoeyBzdWNjZXNzOiBmYWxzZSwgbXNnOiAnRXJyb3Igc2F2aW5nIG9iamVjdC4nIH0pO1xuICAgIH1cbiAgICB3aW5zdG9uLmluZm8oJ3NhdmVkU3Vic2NyaXB0aW9uUGF5bWVudCAnLCBzYXZlZFN1YnNjcmlwdGlvblBheW1lbnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2F2ZUZpcnN0SW52b2ljZVBheW1lbnRTdWNjZWVkZWQoc3Vic2NyaXB0aW9uaWQsIG9iaiwgc3RyaXBlX2V2ZW50KSB7XG4gIGNvbnNvbGUubG9nKCdzYXZlRmlyc3RJbnZvaWNlUGF5bWVudFN1Y2NlZWRlZCBzdWJzY3JpcHRpb25pZCcsIHN1YnNjcmlwdGlvbmlkKVxuICBjb25zb2xlLmxvZygnc2F2ZUZpcnN0SW52b2ljZVBheW1lbnRTdWNjZWVkZWQgc3RyaXBlX2V2ZW50Jywgc3RyaXBlX2V2ZW50KVxuXG4gIHZhciBuZXdQYXltZW50U3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvblBheW1lbnQoe1xuICAgIF9pZDogbmV3IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKCksXG4gICAgc3Vic2NyaXB0aW9uX2lkOiBzdWJzY3JpcHRpb25pZCxcbiAgICBzdHJpcGVfZXZlbnQ6IHN0cmlwZV9ldmVudCxcbiAgICBvYmplY3Q6IG9ialxuICB9KTtcblxuICBuZXdQYXltZW50U3Vic2NyaXB0aW9uLnNhdmUoZnVuY3Rpb24gKGVyciwgc2F2ZWRTdWJzY3JpcHRpb25QYXltZW50KSB7XG4gICAgaWYgKGVycikge1xuICAgICAgd2luc3Rvbi5lcnJvcignLS0tID4gRVJST1IgJywgZXJyKVxuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogJ0Vycm9yIHNhdmluZyBvYmplY3QuJyB9KTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ3NhdmVkU3Vic2NyaXB0aW9uUGF5bWVudCA+PiAnLCBzYXZlZFN1YnNjcmlwdGlvblBheW1lbnQpO1xuICB9KTtcbn1cblxucm91dGVyLnB1dCgnL2NhbmNlbHN1YnNjcmlwdGlvbicsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICB2YXIgcHJvamVjdGlkID0gcmVxLmJvZHkucHJvamVjdGlkXG4gIHZhciB1c2VyaWQgPSByZXEuYm9keS51c2VyaWRcbiAgd2luc3Rvbi5pbmZvKCfCu8K7wrsgwrvCu8K7IGNhbmNlbHN1YnNjcmlwdGlvbiBwcm9qZWN0aWQnLCBwcm9qZWN0aWQpO1xuICB3aW5zdG9uLmluZm8oJ8K7wrvCuyDCu8K7wrsgY2FuY2Vsc3Vic2NyaXB0aW9uIHVzZXJpZCcsIHVzZXJpZCk7XG5cbiAgUHJvamVjdC5maW5kT25lKHsgX2lkOiBwcm9qZWN0aWQgfSwgZnVuY3Rpb24gKGVyciwgcHJvamVjdCkge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHdpbnN0b24uZXJyb3IoJy0tID4gY2FuY2Vsc3Vic2NyaXB0aW9uIEVycm9yIGdldHRpbmcgcHJvamVjdCAnLCBlcnIpXG4gICAgICByZXR1cm4gKGVycik7XG4gICAgfVxuICAgIGlmIChwcm9qZWN0KSB7XG4gICAgICB3aW5zdG9uLmluZm8oJy0tID4gY2FuY2Vsc3Vic2NyaXB0aW9uICBwcm9qZWN0ICcsIHByb2plY3QpO1xuXG4gICAgICB2YXIgc3Vic2NyaXB0aW9uaWQgPSBwcm9qZWN0LnByb2ZpbGUuc3Vic2NyaXB0aW9uSWQ7XG5cbiAgICAgIGNvbnN0IHN0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcblxuICAgICAgc3RyaXBlLnN1YnNjcmlwdGlvbnMuZGVsKHN1YnNjcmlwdGlvbmlkLCBmdW5jdGlvbiAoZXJyLCBjb25maXJtYXRpb24pIHtcbiAgICAgICAgLy8gYXN5bmNocm9ub3VzbHkgY2FsbGVkXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICB3aW5zdG9uLmVycm9yKCctLSA+IGNhbmNlbHN1YnNjcmlwdGlvbiAgZXJyICcsIGVycik7XG4gICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZXJyIH0pXG4gICAgICAgIH1cbiAgICAgICAgd2luc3Rvbi5pbmZvKCctLSA+IGNhbmNlbHN1YnNjcmlwdGlvbiBjb25maXJtYXRpb24gJywgY29uZmlybWF0aW9uKVxuICAgICAgICByZXMuanNvbihjb25maXJtYXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KVxufSk7XG5cbnJvdXRlci5wdXQoJy91cGRhdGVzdWJzY3JpcHRpb24nLCBbcGFzc3BvcnQuYXV0aGVudGljYXRlKFsnYmFzaWMnLCAnand0J10sIHsgc2Vzc2lvbjogZmFsc2UgfSksIHZhbGlkdG9rZW5dLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcblxuICB2YXIgcHJvamVjdGlkID0gcmVxLmJvZHkucHJvamVjdGlkXG4gIHZhciB1c2VyaWQgPSByZXEuYm9keS51c2VyaWRcbiAgdmFyIHByaWNlID0gcmVxLmJvZHkucHJpY2VcbiAgd2luc3Rvbi5pbmZvKCfCu8K7wrsgwrvCu8K7IHVwZGF0ZXN1YnNjcmlwdGlvbiBwcm9qZWN0aWQnLCBwcm9qZWN0aWQpO1xuICB3aW5zdG9uLmluZm8oJ8K7wrvCuyDCu8K7wrsgdXBkYXRlc3Vic2NyaXB0aW9uIHVzZXJpZCcsIHVzZXJpZCk7XG4gIHdpbnN0b24uaW5mbygnwrvCu8K7IMK7wrvCuyB1cGRhdGVzdWJzY3JpcHRpb24gcHJpY2UnLCBwcmljZSk7XG4gIGNvbnN0IHN0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcblxuICBQcm9qZWN0LmZpbmRPbmUoeyBfaWQ6IHByb2plY3RpZCB9LCBmdW5jdGlvbiAoZXJyLCBwcm9qZWN0KSB7XG4gICAgaWYgKGVycikge1xuICAgICAgd2luc3Rvbi5lcnJvcignLS0gPiB1cGRhdGVzdWJzY3JpcHRpb24gRXJyb3IgZ2V0dGluZyBwcm9qZWN0ICcsIGVycilcbiAgICAgIHJldHVybiAoZXJyKTtcbiAgICB9XG4gICAgaWYgKHByb2plY3QpIHtcbiAgICAgIHdpbnN0b24uaW5mbygnLS0gPiB1cGRhdGVzdWJzY3JpcHRpb24gIHByb2plY3QgJywgcHJvamVjdCk7XG5cbiAgICAgIHZhciBzdWJzY3JpcHRpb25pZCA9IHByb2plY3QucHJvZmlsZS5zdWJzY3JpcHRpb25JZDtcblxuICAgICAgLy8gc3Vic2NyaXB0aW9uaWRcbiAgICAgIHN0cmlwZS5zdWJzY3JpcHRpb25zLnVwZGF0ZShcbiAgICAgICAgc3Vic2NyaXB0aW9uaWQsXG4gICAgICAgIC8vIHsgdHJpYWxfZW5kOiAxNTY4MjEwNjU1IH0sXG4gICAgICAgIC8vIGZ1bmN0aW9uIChlcnIsIHN1YnNjcmlwdGlvbikge1xuICAgICAgICAvLyAgIC8vIGFzeW5jaHJvbm91c2x5IGNhbGxlZFxuICAgICAgICAvLyAgIGlmIChlcnIpIHtcbiAgICAgICAgLy8gICAgIHdpbnN0b24uZXJyb3IoJ3VwZGF0ZXN1YnNjcmlwdGlvbiBzdWJzY3JpcHRpb24gZXJyICcsIGVycilcbiAgICAgICAgLy8gICAgIHJldHVyblxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gICB3aW5zdG9uLmluZm8oJ3VwZGF0ZXN1YnNjcmlwdGlvbiBzdWJzY3JpcHRpb24gJywgc3Vic2NyaXB0aW9uKVxuICAgICAgICAvLyB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHN0cmlwZS5zdWJzY3JpcHRpb25zLnJldHJpZXZlKHN1YnNjcmlwdGlvbmlkLCBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb24pIHtcbiAgICAvLyAgIC8vIGFzeW5jaHJvbm91c2x5IGNhbGxlZFxuICAgIC8vICAgaWYgKGVycikge1xuICAgIC8vICAgICB3aW5zdG9uLmluZm8oJ3JldHJpZXZlIHVwZGF0ZWQgc3Vic2NyaXB0aW9uIGVyciAnLCBlcnIpXG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICB3aW5zdG9uLmluZm8oJ8K7wrvCu8K7wrvCu8K7wrvCuyBncmV0cmlldmUgdXBkYXRlZCBzdWJzY3JpcHRpb246ICcsIHN1YnNjcmlwdGlvbik7XG5cbiAgICAvLyAgIH1cbiAgICAvLyB9KVxuICB9KVxuXG59KVxuXG5yb3V0ZXIuZ2V0KCcvOnN1YnNjcmlwdGlvbmlkJywgW3Bhc3Nwb3J0LmF1dGhlbnRpY2F0ZShbJ2Jhc2ljJywgJ2p3dCddLCB7IHNlc3Npb246IGZhbHNlIH0pLCB2YWxpZHRva2VuXSwgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG5cbiAgU3Vic2NyaXB0aW9uUGF5bWVudC5maW5kKHsgc3Vic2NyaXB0aW9uX2lkOiByZXEucGFyYW1zLnN1YnNjcmlwdGlvbmlkIH0pLnNvcnQoeyAnb2JqZWN0LmNyZWF0ZWQnOiBcImFzY1wiIH0pLmV4ZWMoZnVuY3Rpb24gKGVyciwgc3Vic2NyaXB0aW9uUGF5bWVudHMpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmVycm9yKCctLSA+IEdFVCBTVUJTQ1JJUFRJT04gUEFZTUVOVFMgRVJST1J0ICcsIHByb2plY3QpO1xuICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZXJyIH0pXG4gICAgfVxuICAgIHJlcy5qc29uKHN1YnNjcmlwdGlvblBheW1lbnRzKTtcbiAgfSk7XG5cbn0pO1xuXG4vLyAgUkVUUklFVkUgVEhFIENVUlJFTlQgU1VCU0NSSVBUSU9OIEZST00gU1RSSVBFXG5yb3V0ZXIuZ2V0KCcvc3RyaXBlc3Vicy86c3Vic2NyaXB0aW9uaWQnLCBbcGFzc3BvcnQuYXV0aGVudGljYXRlKFsnYmFzaWMnLCAnand0J10sIHsgc2Vzc2lvbjogZmFsc2UgfSksIHZhbGlkdG9rZW5dLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcblxuICB3aW5zdG9uLmluZm8oJy0tID4gc3Vic2NyaXB0aW9uIGdldCBieSBpZCBmcmVxLnBhcmFtcy5zdWJzY3JpcHRpb25pZCAnLCByZXEucGFyYW1zLnN1YnNjcmlwdGlvbmlkKTtcbiAgdmFyIHN0cmlwZSA9IHJlcXVpcmUoJ3N0cmlwZScpKGFwaVNlY3JldEtleSk7XG5cbiAgc3RyaXBlLnN1YnNjcmlwdGlvbnMucmV0cmlldmUoXG4gICAgcmVxLnBhcmFtcy5zdWJzY3JpcHRpb25pZCxcbiAgICBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb24pIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgd2luc3Rvbi5lcnJvcignLS0gPiBzdWJzY3JpcHRpb24gZ2V0IGJ5IGlkIGZyb20gc3RyaXBlICBlcnIgJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZXJyIH0pXG4gICAgICB9XG4gICAgICB3aW5zdG9uLmluZm8oJy0tID4gc3Vic2NyaXB0aW9uIGdldCBieSBpZCBmcm9tIHN0cmlwZSAnLCBzdWJzY3JpcHRpb24pXG4gICAgICByZXMuanNvbihzdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgKTtcbn0pO1xuXG4vLyAgUkVUUklFVkUgVEhFIENIRUNLT1VUIFNFU1NJT05cbnJvdXRlci5nZXQoJy9jaGVja291dFNlc3Npb24vOnNlc3Npb25pZCcsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuXG4gIHdpbnN0b24uaW5mbygnLS0gPiBjaGVja291dFNlc3Npb24gcGFyYW1zLnNlc3Npb25pZCAnLCByZXEucGFyYW1zLnNlc3Npb25pZCk7XG4gIHZhciBzdHJpcGUgPSByZXF1aXJlKCdzdHJpcGUnKShhcGlTZWNyZXRLZXkpO1xuXG4gIHN0cmlwZS5jaGVja291dC5zZXNzaW9ucy5yZXRyaWV2ZShcbiAgICByZXEucGFyYW1zLnNlc3Npb25pZCxcbiAgICBmdW5jdGlvbiAoZXJyLCBzZXNzaW9uKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHdpbnN0b24uaW5mbygnLS0gPiBjaGVja291dFNlc3Npb24gZ2V0IGJ5IGlkIGZyb20gc3RyaXBlICBlcnIgJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZXJyIH0pXG4gICAgICB9XG4gICAgICB3aW5zdG9uLmluZm8oJy0tID4gY2hlY2tvdXRTZXNzaW9uIGdldCBieSBpZCBmcm9tIHN0cmlwZSAnLCBzZXNzaW9uKVxuICAgICAgcmVzLmpzb24oc2Vzc2lvbik7XG4gICAgfVxuICApO1xufSk7XG5cbi8vbmV3IGNvZGVcbnJvdXRlci5nZXQoJy9jdXN0b21lci86cHJvamVjdGlkJywgW3Bhc3Nwb3J0LmF1dGhlbnRpY2F0ZShbJ2Jhc2ljJywgJ2p3dCddLCB7IHNlc3Npb246IGZhbHNlIH0pLCB2YWxpZHRva2VuXSwgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gIHdpbnN0b24uZGVidWcoJ8K7wrvCuyDCu8K7wrsgZ2V0IGN1c3RvbWVyIGZyb20gZGIgJywgcmVxLnBhcmFtcylcbiAgdmFyIHByb2plY3RpZCA9IHJlcS5wYXJhbXMucHJvamVjdGlkXG5cbiAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7IMK7wrvCuyBnZXQgY3VzdG9tZXIgZnJvbSBkYiAtIHByb2plY3RpZCcsIHByb2plY3RpZCk7XG5cbiAgU3Vic2NyaXB0aW9uUGF5bWVudC5maW5kKHsgcHJvamVjdF9pZDogcHJvamVjdGlkLCBzdHJpcGVfZXZlbnQ6IFwiY2hlY2tvdXQuc2Vzc2lvbi5jb21wbGV0ZWRcIiB9LCBhc3luYyBmdW5jdGlvbiAoZXJyLCBzdWJzY3JpcHRpb24pIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICB3aW5zdG9uLmRlYnVnKCctLSA+IGdldCBjdXN0b21lciBmcm9tIGRiIC0gRXJyb3IgJywgZXJyKVxuICAgICAgcmV0dXJuIChlcnIpO1xuICAgIH1cbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG5cbiAgICAgIHN1YnNjcmlwdGlvblswXS5vYmplY3QuY3VzdG9tZXJcbiAgICAgIHdpbnN0b24uZGVidWcoJy0tID4gZ2V0IGN1c3RvbWVyIGZyb20gZGIgLSBzdWJzY3JpcHRpb24gPiBjdXN0b21lciBpZCAnLCBzdWJzY3JpcHRpb25bMF0ub2JqZWN0LmN1c3RvbWVyKTtcbiAgICAgIGNvbnN0IGN1c3RvbWVyaWQgPSBzdWJzY3JpcHRpb25bMF0ub2JqZWN0LmN1c3RvbWVyXG4gICAgICBjb25zdCBzdHJpcGUgPSByZXF1aXJlKFwic3RyaXBlXCIpKGFwaVNlY3JldEtleSk7XG5cbiAgICAgIGNvbnN0IGN1c3RvbWVyID0gYXdhaXQgc3RyaXBlLmN1c3RvbWVycy5yZXRyaWV2ZShcbiAgICAgICAgY3VzdG9tZXJpZFxuICAgICAgKTtcbiAgICAgIHdpbnN0b24uZGVidWcoJy0tID4gZ2V0IGN1c3RvbWVyIGZyb20gZGIgPiBjdXN0b21lciBmcm9tIHN0cmlwZSBBUEkgJywgY3VzdG9tZXIpXG5cbiAgICAgIGNvbnN0IHBheW1lbnRNZXRob2RzID0gYXdhaXQgc3RyaXBlLnBheW1lbnRNZXRob2RzLmxpc3Qoe1xuICAgICAgICBjdXN0b21lcjogY3VzdG9tZXJpZCxcbiAgICAgICAgdHlwZTogJ2NhcmQnLFxuICAgICAgfSk7XG4gICAgICBjdXN0b21lclsncGF5bWVudE1ldGhvZHMnXSA9IHBheW1lbnRNZXRob2RzO1xuICAgICAgd2luc3Rvbi5kZWJ1ZygnLS0gPiBnZXQgY3VzdG9tZXIgZnJvbSBkYiA+IGN1c3RvbWVyICsgcGF5bWVudE1ldGhvZHMgJywgc3Vic2NyaXB0aW9uKVxuICAgICAgcmVzLmpzb24oY3VzdG9tZXIpXG4gICAgfVxuICB9KVxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVwZGF0ZWQgY3VzdG9tZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnJvdXRlci5wb3N0KCcvY3VzdG9tZXJzLzpjdXN0b21lcmlkJywgW3Bhc3Nwb3J0LmF1dGhlbnRpY2F0ZShbJ2Jhc2ljJywgJ2p3dCddLCB7IHNlc3Npb246IGZhbHNlIH0pLCB2YWxpZHRva2VuXSwgYXN5bmMgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gIHZhciBjdXN0b21lcmlkID0gcmVxLnBhcmFtcy5jdXN0b21lcmlkO1xuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrsgwrvCu8K7ICB1cGRhdGUgY3VzdG9tZXIgLSBjdXN0b21lcmlkIGZyb20gcGFyYW1zICcsIGN1c3RvbWVyaWQpO1xuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrsgwrvCu8K7ICB1cGRhdGUgY3VzdG9tZXIgLSBjYyBmcm9tIGJvZHkgJywgcmVxLmJvZHkpO1xuXG4gIGNvbnN0IHN0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcblxuICBsZXQgcGF5bWVudE1ldGhvZDtcbiAgdHJ5IHtcbiAgICBwYXltZW50TWV0aG9kID0gYXdhaXQgc3RyaXBlLnBheW1lbnRNZXRob2RzLmNyZWF0ZSh7XG4gICAgICB0eXBlOiAnY2FyZCcsXG4gICAgICBjYXJkOiB7XG4gICAgICAgIG51bWJlcjogcmVxLmJvZHkuY3JlZGl0X2NhcmRfbnVtLFxuICAgICAgICBleHBfbW9udGg6IHJlcS5ib2R5LmV4cGlyYXRpb25fZGF0ZV9tb250aCxcbiAgICAgICAgZXhwX3llYXI6IHJlcS5ib2R5LmV4cGlyYXRpb25fZGF0ZV95ZWFyLFxuICAgICAgICBjdmM6IHJlcS5ib2R5LmNyZWRpdF9jYXJkX2N2YyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB3aW5zdG9uLmVycm9yKCfCu8K7wrsgwrvCu8K7ICBwYXltZW50TWV0aG9kIGNyZWF0ZSAgZXJyb3IgJywgZSlcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDIpLnNlbmQoeyBzdWNjZXNzOiBmYWxzZSwgbXNnOiBlIH0pXG5cbiAgfVxuICB3aW5zdG9uLmRlYnVnKCfCu8K7wrsgwrvCu8K7ICBwYXltZW50TWV0aG9kJywgcGF5bWVudE1ldGhvZClcblxuICB0cnkge1xuICAgIGNvbnN0IF9wYXltZW50TWV0aG9kID0gYXdhaXQgc3RyaXBlLnBheW1lbnRNZXRob2RzLmF0dGFjaChcbiAgICAgIHBheW1lbnRNZXRob2QuaWQsXG4gICAgICB7IGN1c3RvbWVyOiBjdXN0b21lcmlkIH1cbiAgICApO1xuXG4gICAgd2luc3Rvbi5kZWJ1ZygnwrvCu8K7IMK7wrvCuyAgcGF5bWVudE1ldGhvZCBhdHRhY2hlZCAnLCBfcGF5bWVudE1ldGhvZClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHdpbnN0b24uZXJyb3IoJ8K7wrvCuyDCu8K7wrsgIHBheW1lbnRNZXRob2QgYXR0YWNoZWQgIGVycm9yICcsIGUpXG4gICAgcmV0dXJuIHJlcy5zdGF0dXMoNTAxKS5zZW5kKHsgc3VjY2VzczogZmFsc2UsIG1zZzogZSB9KVxuICB9XG5cbiAgY29uc3QgX2N1c3RvbWVyID0gYXdhaXQgc3RyaXBlLmN1c3RvbWVycy51cGRhdGUoXG4gICAgY3VzdG9tZXJpZCxcbiAgICB7XG4gICAgICBpbnZvaWNlX3NldHRpbmdzOiB7IGRlZmF1bHRfcGF5bWVudF9tZXRob2Q6IHBheW1lbnRNZXRob2QuaWQgfVxuICAgIH0pO1xuICByZXMuanNvbihfY3VzdG9tZXIpO1xufSk7XG5cblxucm91dGVyLmdldCgnL3BheW1lbnRfbWV0aG9kcy86Y3VzdG9tZXJpZCcsIFtwYXNzcG9ydC5hdXRoZW50aWNhdGUoWydiYXNpYycsICdqd3QnXSwgeyBzZXNzaW9uOiBmYWxzZSB9KSwgdmFsaWR0b2tlbl0sIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICB3aW5zdG9uLmluZm8oJ2dldCBQYXltZW50TWV0aG9kcyBsaXN0IHJlcS5wYXJhbXMnLCByZXEucGFyYW1zKVxuICB2YXIgY3VzdG9tZXJfaWQgPSByZXEucGFyYW1zLmN1c3RvbWVyaWQ7XG4gIHdpbnN0b24uZGVidWcoJ2dldCBQYXltZW50TWV0aG9kcyBsaXN0IHJlcS5wYXJhbXMgPiBjdXN0b21lcl9pZCAnLCBjdXN0b21lcl9pZClcbiAgY29uc3Qgc3RyaXBlID0gcmVxdWlyZShcInN0cmlwZVwiKShhcGlTZWNyZXRLZXkpO1xuXG4gIGNvbnN0IGN1c3RvbWVyID0gYXdhaXQgc3RyaXBlLmN1c3RvbWVycy5yZXRyaWV2ZShcbiAgICBjdXN0b21lcl9pZFxuICApO1xuXG4gIGNvbnN0IGRlZmF1bHRfcGF5bWVudF9tZXRob2RfaWQgPSBjdXN0b21lci5pbnZvaWNlX3NldHRpbmdzLmRlZmF1bHRfcGF5bWVudF9tZXRob2RcbiAgbGV0IHBheW1lbnRNZXRob2RzO1xuICB0cnkge1xuICAgIHBheW1lbnRNZXRob2RzID0gYXdhaXQgc3RyaXBlLnBheW1lbnRNZXRob2RzLmxpc3Qoe1xuICAgICAgY3VzdG9tZXI6IGN1c3RvbWVyX2lkLFxuICAgICAgdHlwZTogJ2NhcmQnLFxuICAgIH0pO1xuICAgIHdpbnN0b24uZGVidWcoJ2dldCBQYXltZW50TWV0aG9kcyBsaXN0ID4gcGF5bWVudE1ldGhvZHMgJywgcGF5bWVudE1ldGhvZHMpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDEpLnNlbmQoeyBzdWNjZXNzOiBmYWxzZSwgbXNnOiBlIH0pXG4gIH1cblxuICB3aW5zdG9uLmRlYnVnKCdnZXQgUGF5bWVudE1ldGhvZHMgbGlzdCA+IHBheW1lbnRNZXRob2RzID4gZGVmYXVsdF9wYXltZW50X21ldGhvZF9pZCAnLCBkZWZhdWx0X3BheW1lbnRfbWV0aG9kX2lkKVxuICBwYXltZW50TWV0aG9kcy5kYXRhLmZvckVhY2gocGF5bWVudE1ldGhvZCA9PiB7XG4gICAgaWYgKHBheW1lbnRNZXRob2QuaWQgIT09IGRlZmF1bHRfcGF5bWVudF9tZXRob2RfaWQpIHtcbiAgICAgIHdpbnN0b24uZGVidWcoJ2dldCBQYXltZW50TWV0aG9kcyBsaXN0ID4gcGF5bWVudE1ldGhvZHMgPiBwYXltZW50TWV0aG9kcy5kYXRhICcsIHBheW1lbnRNZXRob2QuaWQpXG4gICAgICBkZXRhY2hQYXltZW50RnVuYyhwYXltZW50TWV0aG9kLmlkLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHdpbnN0b24uaW5mbygnZGV0YWNoUGF5bWVudEZ1bmMgcmVzdWx0ICcsIHJlc3VsdClcbiAgICAgIH0pXG4gICAgfVxuICB9KTtcbiAgcmVzLmpzb24ocGF5bWVudE1ldGhvZHMpXG59KVxuXG5hc3luYyBmdW5jdGlvbiBkZXRhY2hQYXltZW50RnVuYyhwYXltZW50TWV0aG9kaWQsIGNhbGxiYWNrKSB7XG4gIHdpbnN0b24uZGVidWcoJ2RldGFjaFBheW1lbnRGdW5jdCA+IHBheW1lbnRNZXRob2RpZCAnLCBwYXltZW50TWV0aG9kaWQpXG4gIGNvbnN0IHN0cmlwZSA9IHJlcXVpcmUoXCJzdHJpcGVcIikoYXBpU2VjcmV0S2V5KTtcbiAgbGV0IHBheW1lbnRNZXRob2Q7XG4gIHRyeSB7XG4gICAgcGF5bWVudE1ldGhvZCA9IGF3YWl0IHN0cmlwZS5wYXltZW50TWV0aG9kcy5kZXRhY2goXG4gICAgICBwYXltZW50TWV0aG9kaWRcbiAgICApO1xuICAgIGNhbGxiYWNrKHBheW1lbnRNZXRob2QpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYWxsYmFjayhlKVxuICB9XG59XG5cblxuXG4vLyBjdXJsIC1YIFBPU1QgLXUgYW5kcmVhLmxlb0BmMjEuaXQ6MTIzNDU2IC1IICdDb250ZW50LVR5cGU6YXBwbGljYXRpb24vanNvbicgLWQgJ3tcInR5cGVcIjpcInBheW1lbnRfaW50ZW50LnN1Y2NlZWRlZFwifScgIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9tb2R1bGVzL3BheW1lbnRzL3N0cmlwZS93ZWJob29rXG5cbi8vIHJvdXRlci5wb3N0KCcvd2ViaG9vaycsIGZ1bmN0aW9uKHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4vLyAgIHdpbnN0b24uaW5mbygnc3RyaXBlIHdlYmhvb2snKTtcblxuLy8gLy8gTWF0Y2ggdGhlIHJhdyBib2R5IHRvIGNvbnRlbnQgdHlwZSBhcHBsaWNhdGlvbi9qc29uXG4vLyAvLyBhcHAucG9zdCgnJywgYm9keVBhcnNlci5yYXcoe3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pLCAocmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbi8vICAgICBsZXQgZXZlbnQgPSByZXF1ZXN0LmJvZHk7XG4vLyAgICAgd2luc3Rvbi5pbmZvKCdldmVudCcsZXZlbnQpOyAgXG5cbi8vICAgICAvLyBIYW5kbGUgdGhlIGV2ZW50XG4vLyAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4vLyAgICAgICBjYXNlICdwYXltZW50X2ludGVudC5zdWNjZWVkZWQnOlxuLy8gICAgICAgICBjb25zdCBwYXltZW50SW50ZW50ID0gZXZlbnQuZGF0YS5vYmplY3Q7XG4vLyAgICAgICAgIGhhbmRsZVBheW1lbnRJbnRlbnRTdWNjZWVkZWQocGF5bWVudEludGVudCk7XG4vLyAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgY2FzZSAncGF5bWVudF9tZXRob2QuYXR0YWNoZWQnOlxuLy8gICAgICAgICBjb25zdCBwYXltZW50TWV0aG9kID0gZXZlbnQuZGF0YS5vYmplY3Q7XG4vLyAgICAgICAgIGhhbmRsZVBheW1lbnRNZXRob2RBdHRhY2hlZChwYXltZW50TWV0aG9kKTtcbi8vICAgICAgICAgYnJlYWs7XG4vLyAgICAgICAvLyAuLi4gaGFuZGxlIG90aGVyIGV2ZW50IHR5cGVzXG4vLyAgICAgICBkZWZhdWx0OlxuLy8gICAgICAgICAvLyBVbmV4cGVjdGVkIGV2ZW50IHR5cGVcbi8vICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyg0MDApLmVuZCgpO1xuLy8gICAgIH1cblxuLy8gICAgIC8vIFJldHVybiBhIHJlc3BvbnNlIHRvIGFja25vd2xlZGdlIHJlY2VpcHQgb2YgdGhlIGV2ZW50XG4vLyAgICAgcmVzcG9uc2UuanNvbih7cmVjZWl2ZWQ6IHRydWV9KTtcbi8vIH0pO1xuXG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjsiXSwiZmlsZSI6InBheW1lbnRzL3N0cmlwZS9pbmRleC5qcyJ9
|