UNPKG

@progress/kendo-react-conversational-ui

Version:

React Chat component allows the user to participate in chat sessions with users or chat bots. KendoReact Conversational UI components

10 lines (9 loc) 33.3 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=(e,n,t,i)=>{if(i==="class"){if(n.size()>0&&n.get(0).node.value.body){const o=n.get(0).node.value.body.body;if(o){const r=e.emptyStatement();r.comments=[e.commentBlock(` ${t} `)],o.unshift(r)}}}else{let o;if(n.get(0).node.declarations&&n.get(0).node.declarations[0].init?o=n.get(0).node.declarations[0].init.body.body:n.get(0).node.body&&(o=n.get(0).node.body.body),o){const r=e.emptyStatement();r.comments=[e.commentBlock(` ${t} `)],o.unshift(r)}}},b=(e,n,t,i)=>{const o=n.find(e.ImportDeclaration,{source:{value:i}});if(o.size()>0){const r=o.get(0).node.specifiers;r.some(s=>s.type==="ImportSpecifier"&&s.imported.name===t)||r.push(e.importSpecifier(e.identifier(t)))}else{const r=e.importDeclaration([e.importSpecifier(e.identifier(t))],e.literal(i));n.get().node.program.body.unshift(r)}},y=(e,n)=>{let t=n.parentPath,i=!1,o=!1;for(;t;){if(e.ClassDeclaration.check(t.node)){i=!0;break}else if(e.FunctionDeclaration.check(t.node)||e.FunctionExpression.check(t.node)||e.ArrowFunctionExpression.check(t.node)){o=!0;break}t=t.parentPath}return{isClassComponent:i,isFunctionalComponent:o,parentNode:t}},x=(e,n)=>{let t=e,i=1;for(;n.has(t);)t=`${e}$${i}`,i++;return t},p=(e,n)=>e.find(t=>t.type==="JSXAttribute"&&t.name.name===n),h=(e,n)=>e.some(t=>t.type==="JSXAttribute"&&t.name.name===n),l=(e,n,t,i)=>{if(n.value&&n.value.type==="JSXExpressionContainer"){const o=n.value.expression;o.type==="ObjectExpression"&&o.properties.push(e.property("init",e.identifier(t),e.identifier(i)))}},f=(e,n,t,i,o)=>{const r=e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(i),e.identifier(o))])));n.push(r)},S=(e,n)=>{const t=e==null?void 0:e.findIndex(i=>i.type==="JSXAttribute"&&i.name.name===n);return t!==-1?(e.splice(t,1),!0):!1},A=(e,n,t,i,o)=>{const r=p(n,t);r?l(e,r,i,o):f(e,n,t,i,o)},E=(e,n,t,i)=>e.jsxAttribute(e.jsxIdentifier(n),e.jsxExpressionContainer(e.objectExpression([e.property("init",e.identifier(t),e.identifier(i))]))),g=(e,n,t,i)=>{n.type==="ObjectExpression"&&n.properties.push(e.property("init",e.identifier(t),e.identifier(i)))},C=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,[e.identifier(t?`event: ${i}`:"event")],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))]))),v=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression([e.identifier(`(event${t?`: ${i}`:""})`)],e.blockStatement([e.returnStatement(e.jsxFragment(e.jsxOpeningFragment(),e.jsxClosingFragment(),[]))])))]),D=(e,n,t,i)=>{i?n.node.body.body.push(t):(n.node.body.body||n.node.body).unshift(t)},u=(e,n,t,i)=>{const o=n.find(e.ImportDeclaration,{source:{value:i}});if(o.size()>0){const r=o.find(e.ImportSpecifier,{imported:{name:t}});if(r.size()>0)return r.get(0).node.local.name}return null},I=(e,n,t,i)=>{const o=n.node.body.body.find(r=>r.type==="ClassProperty"&&r.key.name==="state");o&&o.value.type==="ObjectExpression"?o.value.properties.some(a=>a.key.name===t)||o.value.properties.push(e.property("init",e.identifier(t),i)):n.node.body.body.unshift(e.classProperty(e.identifier("state"),e.objectExpression([e.property("init",e.identifier(t),i)])))},F=(e,n)=>(e==null?void 0:e.some(t=>t.type==="JSXAttribute"&&t.name.name===n))||!1,w=(e,n,t,i,o,r,a)=>{const s=e.variableDeclaration("const",[e.variableDeclarator(e.arrayPattern([e.identifier(t),e.identifier(i)]),e.callExpression(e.identifier(`React.useState${r?`<${a}>`:""}`),[o]))]);n.node.body.body.unshift(s)},k=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},P=(e,n,t,i)=>{n.push(e.jsxAttribute(e.jsxIdentifier(t),e.jsxExpressionContainer(e.identifier(i))))},$=(e,n,t,i)=>e.methodDefinition("method",e.identifier(n),e.functionExpression(null,t.map(o=>e.identifier(o)),e.blockStatement(i))),B=(e,n,t,i)=>e.variableDeclaration("const",[e.variableDeclarator(e.identifier(n),e.arrowFunctionExpression(t.map(o=>e.identifier(o)),e.blockStatement(i)))]),M=(e,n,t,i)=>{const o=u(e,n,t,i);if(o)return o;const r=n.find(e.ImportDeclaration,{source:{value:i}}).filter(d=>d.node.importKind==="type").at(0);if(r.size()>0)return r.get().node.specifiers.push(e.importSpecifier(e.identifier(t))),t;const a=e.importSpecifier(e.identifier(t)),s=e.importDeclaration([a],e.literal(i));s.importKind="type";const c=n.find(e.ImportDeclaration).at(0);return c.size()>0?c.insertBefore(s):n.get().node.program.body.unshift(s),t};exports.addCommentToMethod=m;exports.addEventAttribute=k;exports.addMethodToComponent=D;exports.addNewAttribute=f;exports.addPropertyToObjectExpression=g;exports.addStateAttribute=P;exports.addStateDeclaration=I;exports.addUseStateDeclaration=w;exports.createArrowFunction=B;exports.createArrowFunctionForFunctionalComponent=v;exports.createAttribute=E;exports.createClassMethod=$;exports.createMethodForClassComponent=C;exports.doesAttributeExist=h;exports.ensureAttributeExists=A;exports.ensureImportExists=b;exports.ensureTypeImport=M;exports.findAttribute=p;exports.findImportedName=u;exports.findParentComponent=y;exports.generateUniqueName=x;exports.hasJSXAttribute=F;exports.modifyExistingAttribute=l;exports.removeAttribute=S; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnZlcnNhdGlvbmFsLXVpL2NvZGVtb2RzL3YxMi91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbGxlY3Rpb24sXG4gICAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgICBKU0NvZGVzaGlmdCxcbiAgICBKU1hBdHRyaWJ1dGUsXG4gICAgSlNYU3ByZWFkQXR0cmlidXRlLFxuICAgIFZhcmlhYmxlRGVjbGFyYXRpb25cbn0gZnJvbSAnanNjb2Rlc2hpZnQnO1xuXG5leHBvcnQgY29uc3QgYWRkQ29tbWVudFRvTWV0aG9kID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIG1ldGhvZDogQ29sbGVjdGlvbjxWYXJpYWJsZURlY2xhcmF0aW9uPiB8IENvbGxlY3Rpb248RnVuY3Rpb25EZWNsYXJhdGlvbj4sXG4gICAgY29tbWVudFRleHQ6IHN0cmluZyxcbiAgICBwYXJlbnRUeXBlOiAnY2xhc3MnIHwgJ2Z1bmN0aW9uJ1xuKSA9PiB7XG4gICAgaWYgKHBhcmVudFR5cGUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgaWYgKG1ldGhvZC5zaXplKCkgPiAwICYmIG1ldGhvZC5nZXQoMCkubm9kZS52YWx1ZS5ib2R5KSB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RCb2R5ID0gbWV0aG9kLmdldCgwKS5ub2RlLnZhbHVlLmJvZHkuYm9keTtcblxuICAgICAgICAgICAgaWYgKG1ldGhvZEJvZHkpIHtcbiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBjb21tZW50IGFuZCBhdHRhY2ggaXQgdG8gYW4gZW1wdHkgc3RhdGVtZW50XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJTdGF0ZW1lbnQgPSBqLmVtcHR5U3RhdGVtZW50KCk7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJTdGF0ZW1lbnQuY29tbWVudHMgPSBbai5jb21tZW50QmxvY2soYCAke2NvbW1lbnRUZXh0fSBgKV07XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIHBsYWNlaG9sZGVyIHN0YXRlbWVudCB3aXRoIHRoZSBjb21tZW50IHRvIHRoZSBtZXRob2QgYm9keVxuICAgICAgICAgICAgICAgIG1ldGhvZEJvZHkudW5zaGlmdChwbGFjZWhvbGRlclN0YXRlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgbWV0aG9kQm9keTtcblxuICAgICAgICBpZiAobWV0aG9kLmdldCgwKS5ub2RlLmRlY2xhcmF0aW9ucyAmJiBtZXRob2QuZ2V0KDApLm5vZGUuZGVjbGFyYXRpb25zWzBdLmluaXQpIHtcbiAgICAgICAgICAgIG1ldGhvZEJvZHkgPSBtZXRob2QuZ2V0KDApLm5vZGUuZGVjbGFyYXRpb25zWzBdLmluaXQuYm9keS5ib2R5O1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZC5nZXQoMCkubm9kZS5ib2R5KSB7XG4gICAgICAgICAgICBtZXRob2RCb2R5ID0gbWV0aG9kLmdldCgwKS5ub2RlLmJvZHkuYm9keTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRob2RCb2R5KSB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlclN0YXRlbWVudCA9IGouZW1wdHlTdGF0ZW1lbnQoKTtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyU3RhdGVtZW50LmNvbW1lbnRzID0gW2ouY29tbWVudEJsb2NrKGAgJHtjb21tZW50VGV4dH0gYCldO1xuXG4gICAgICAgICAgICBtZXRob2RCb2R5LnVuc2hpZnQocGxhY2Vob2xkZXJTdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVuc3VyZUltcG9ydEV4aXN0cyA9IChqOiBKU0NvZGVzaGlmdCwgcm9vdDogQ29sbGVjdGlvbiwgaW1wb3J0TmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGltcG9ydERlY2xhcmF0aW9uID0gcm9vdC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24sIHtcbiAgICAgICAgc291cmNlOiB7IHZhbHVlOiBzb3VyY2UgfVxuICAgIH0pO1xuXG4gICAgaWYgKGltcG9ydERlY2xhcmF0aW9uLnNpemUoKSA+IDApIHtcbiAgICAgICAgLy8gSWYgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZXhpc3RzLCBhZGQgdGhlIG5ldyBpbXBvcnQgbmFtZSBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICAgIGNvbnN0IHNwZWNpZmllcnMgPSBpbXBvcnREZWNsYXJhdGlvbi5nZXQoMCkubm9kZS5zcGVjaWZpZXJzO1xuICAgICAgICBjb25zdCBhbHJlYWR5SW1wb3J0ZWQgPSBzcGVjaWZpZXJzLnNvbWUoXG4gICAgICAgICAgICAoc3BlY2lmaWVyOiBhbnkpID0+IHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0U3BlY2lmaWVyJyAmJiBzcGVjaWZpZXIuaW1wb3J0ZWQubmFtZSA9PT0gaW1wb3J0TmFtZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghYWxyZWFkeUltcG9ydGVkKSB7XG4gICAgICAgICAgICBzcGVjaWZpZXJzLnB1c2goai5pbXBvcnRTcGVjaWZpZXIoai5pZGVudGlmaWVyKGltcG9ydE5hbWUpKSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgaW1wb3J0IHN0YXRlbWVudCBkb2Vzbid0IGV4aXN0LCBjcmVhdGUgYSBuZXcgb25lXG4gICAgICAgIGNvbnN0IG5ld0ltcG9ydCA9IGouaW1wb3J0RGVjbGFyYXRpb24oW2ouaW1wb3J0U3BlY2lmaWVyKGouaWRlbnRpZmllcihpbXBvcnROYW1lKSldLCBqLmxpdGVyYWwoc291cmNlKSk7XG4gICAgICAgIHJvb3QuZ2V0KCkubm9kZS5wcm9ncmFtLmJvZHkudW5zaGlmdChuZXdJbXBvcnQpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kUGFyZW50Q29tcG9uZW50ID0gKGo6IEpTQ29kZXNoaWZ0LCBwYXRoOiBhbnkpID0+IHtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IHBhdGgucGFyZW50UGF0aDtcbiAgICBsZXQgaXNDbGFzc0NvbXBvbmVudCA9IGZhbHNlO1xuICAgIGxldCBpc0Z1bmN0aW9uYWxDb21wb25lbnQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChwYXJlbnROb2RlKSB7XG4gICAgICAgIGlmIChqLkNsYXNzRGVjbGFyYXRpb24uY2hlY2socGFyZW50Tm9kZS5ub2RlKSkge1xuICAgICAgICAgICAgaXNDbGFzc0NvbXBvbmVudCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGouRnVuY3Rpb25EZWNsYXJhdGlvbi5jaGVjayhwYXJlbnROb2RlLm5vZGUpIHx8XG4gICAgICAgICAgICBqLkZ1bmN0aW9uRXhwcmVzc2lvbi5jaGVjayhwYXJlbnROb2RlLm5vZGUpIHx8XG4gICAgICAgICAgICBqLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLmNoZWNrKHBhcmVudE5vZGUubm9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpc0Z1bmN0aW9uYWxDb21wb25lbnQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50UGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBpc0NsYXNzQ29tcG9uZW50LCBpc0Z1bmN0aW9uYWxDb21wb25lbnQsIHBhcmVudE5vZGUgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVVuaXF1ZU5hbWUgPSAoYmFzZU5hbWU6IHN0cmluZywgZXhpc3RpbmdOYW1lczogU2V0PHN0cmluZz4pOiBzdHJpbmcgPT4ge1xuICAgIGxldCBuYW1lID0gYmFzZU5hbWU7XG4gICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgIHdoaWxlIChleGlzdGluZ05hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgICBuYW1lID0gYCR7YmFzZU5hbWV9JCR7Y291bnRlcn1gO1xuICAgICAgICBjb3VudGVyKys7XG4gICAgfVxuICAgIHJldHVybiBuYW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRBdHRyaWJ1dGUgPSAoYXR0cmlidXRlczogYW55W10sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBhdHRyaWJ1dGVzLmZpbmQoKGF0dHIpID0+IGF0dHIudHlwZSA9PT0gJ0pTWEF0dHJpYnV0ZScgJiYgYXR0ci5uYW1lLm5hbWUgPT09IGF0dHJpYnV0ZU5hbWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRvZXNBdHRyaWJ1dGVFeGlzdCA9IChhdHRyaWJ1dGVzOiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMuc29tZSgoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbW9kaWZ5RXhpc3RpbmdBdHRyaWJ1dGUgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgZXhpc3RpbmdBdHRyaWJ1dGU6IGFueSxcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0eVZhbHVlOiBzdHJpbmdcbikgPT4ge1xuICAgIGlmIChleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSAmJiBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZS50eXBlID09PSAnSlNYRXhwcmVzc2lvbkNvbnRhaW5lcicpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4aXN0aW5nQXR0cmlidXRlLnZhbHVlLmV4cHJlc3Npb247XG4gICAgICAgIGlmIChleHByZXNzaW9uLnR5cGUgPT09ICdPYmplY3RFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgZXhwcmVzc2lvbi5wcm9wZXJ0aWVzLnB1c2goai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBqLmlkZW50aWZpZXIocHJvcGVydHlWYWx1ZSkpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGROZXdBdHRyaWJ1dGUgPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgYXR0cmlidXRlczogYW55W10sXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgY29uc3QgbmV3QXR0cmlidXRlID0gai5qc3hBdHRyaWJ1dGUoXG4gICAgICAgIGouanN4SWRlbnRpZmllcihhdHRyaWJ1dGVOYW1lKSxcbiAgICAgICAgai5qc3hFeHByZXNzaW9uQ29udGFpbmVyKFxuICAgICAgICAgICAgai5vYmplY3RFeHByZXNzaW9uKFtqLnByb3BlcnR5KCdpbml0Jywgai5pZGVudGlmaWVyKHByb3BlcnR5TmFtZSksIGouaWRlbnRpZmllcihwcm9wZXJ0eVZhbHVlKSldKVxuICAgICAgICApXG4gICAgKTtcbiAgICBhdHRyaWJ1dGVzLnB1c2gobmV3QXR0cmlidXRlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVBdHRyaWJ1dGUgPSAoYXR0cmlidXRlczogYW55W10sIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZUluZGV4ID0gYXR0cmlidXRlcz8uZmluZEluZGV4KFxuICAgICAgICAoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gYXR0cmlidXRlTmFtZVxuICAgICk7XG5cbiAgICBpZiAoYXR0cmlidXRlSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKGF0dHJpYnV0ZUluZGV4LCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEluZGljYXRlcyB0aGUgYXR0cmlidXRlIHdhcyBmb3VuZCBhbmQgcmVtb3ZlZFxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTsgLy8gSW5kaWNhdGVzIHRoZSBhdHRyaWJ1dGUgd2FzIG5vdCBmb3VuZFxufTtcblxuZXhwb3J0IGNvbnN0IGVuc3VyZUF0dHJpYnV0ZUV4aXN0cyA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBhdHRyaWJ1dGVzOiBhbnlbXSxcbiAgICBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydHlWYWx1ZTogc3RyaW5nXG4pID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0F0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGUoYXR0cmlidXRlcywgYXR0cmlidXRlTmFtZSk7XG5cbiAgICBpZiAoZXhpc3RpbmdBdHRyaWJ1dGUpIHtcbiAgICAgICAgbW9kaWZ5RXhpc3RpbmdBdHRyaWJ1dGUoaiwgZXhpc3RpbmdBdHRyaWJ1dGUsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWRkTmV3QXR0cmlidXRlKGosIGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUF0dHJpYnV0ZSA9IChqOiBKU0NvZGVzaGlmdCwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGouanN4QXR0cmlidXRlKFxuICAgICAgICBqLmpzeElkZW50aWZpZXIoYXR0cmlidXRlTmFtZSksXG4gICAgICAgIGouanN4RXhwcmVzc2lvbkNvbnRhaW5lcihcbiAgICAgICAgICAgIGoub2JqZWN0RXhwcmVzc2lvbihbai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpLCBqLmlkZW50aWZpZXIocHJvcGVydHlWYWx1ZSkpXSlcbiAgICAgICAgKVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUHJvcGVydHlUb09iamVjdEV4cHJlc3Npb24gPSAoXG4gICAgajogSlNDb2Rlc2hpZnQsXG4gICAgZXhwcmVzc2lvbjogYW55LFxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5VmFsdWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgaWYgKGV4cHJlc3Npb24udHlwZSA9PT0gJ09iamVjdEV4cHJlc3Npb24nKSB7XG4gICAgICAgIGV4cHJlc3Npb24ucHJvcGVydGllcy5wdXNoKGoucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIocHJvcGVydHlOYW1lKSwgai5pZGVudGlmaWVyKHByb3BlcnR5VmFsdWUpKSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1ldGhvZEZvckNsYXNzQ29tcG9uZW50ID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgICBpc1R5cGVTY3JpcHQ6IGJvb2xlYW4sXG4gICAgdHlwZU5hbWU6IHN0cmluZ1xuKSA9PiB7XG4gICAgcmV0dXJuIGoubWV0aG9kRGVmaW5pdGlvbihcbiAgICAgICAgJ21ldGhvZCcsXG4gICAgICAgIGouaWRlbnRpZmllcihtZXRob2ROYW1lKSxcbiAgICAgICAgai5mdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgW2ouaWRlbnRpZmllcihpc1R5cGVTY3JpcHQgPyBgZXZlbnQ6ICR7dHlwZU5hbWV9YCA6ICdldmVudCcpXSxcbiAgICAgICAgICAgIGouYmxvY2tTdGF0ZW1lbnQoW2oucmV0dXJuU3RhdGVtZW50KGouanN4RnJhZ21lbnQoai5qc3hPcGVuaW5nRnJhZ21lbnQoKSwgai5qc3hDbG9zaW5nRnJhZ21lbnQoKSwgW10pKV0pXG4gICAgICAgIClcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycm93RnVuY3Rpb25Gb3JGdW5jdGlvbmFsQ29tcG9uZW50ID0gKFxuICAgIGo6IEpTQ29kZXNoaWZ0LFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIGlzVHlwZVNjcmlwdDogYm9vbGVhbixcbiAgICB0eXBlTmFtZTogc3RyaW5nXG4pID0+IHtcbiAgICByZXR1cm4gai52YXJpYWJsZURlY2xhcmF0aW9uKCdjb25zdCcsIFtcbiAgICAgICAgai52YXJpYWJsZURlY2xhcmF0b3IoXG4gICAgICAgICAgICBqLmlkZW50aWZpZXIoZnVuY3Rpb25OYW1lKSxcbiAgICAgICAgICAgIGouYXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgICAgICAgW2ouaWRlbnRpZmllcihgKGV2ZW50JHtpc1R5cGVTY3JpcHQgPyBgOiAke3R5cGVOYW1lfWAgOiAnJ30pYCldLFxuICAgICAgICAgICAgICAgIGouYmxvY2tTdGF0ZW1lbnQoW2oucmV0dXJuU3RhdGVtZW50KGouanN4RnJhZ21lbnQoai5qc3hPcGVuaW5nRnJhZ21lbnQoKSwgai5qc3hDbG9zaW5nRnJhZ21lbnQoKSwgW10pKV0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICBdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRNZXRob2RUb0NvbXBvbmVudCA9IChqOiBKU0NvZGVzaGlmdCwgcGFyZW50Tm9kZTogYW55LCBtZXRob2Q6IGFueSwgaXNDbGFzc0NvbXBvbmVudDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChpc0NsYXNzQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNsYXNzQm9keSA9IHBhcmVudE5vZGUubm9kZS5ib2R5LmJvZHk7XG4gICAgICAgIGNsYXNzQm9keS5wdXNoKG1ldGhvZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyZW50Qm9keSA9IHBhcmVudE5vZGUubm9kZS5ib2R5LmJvZHkgfHwgcGFyZW50Tm9kZS5ub2RlLmJvZHk7XG4gICAgICAgIHBhcmVudEJvZHkudW5zaGlmdChtZXRob2QpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kSW1wb3J0ZWROYW1lID0gKGo6IEpTQ29kZXNoaWZ0LCByb290OiBhbnksIG9yaWdpbmFsTmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGltcG9ydERlY2xhcmF0aW9uID0gcm9vdC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24sIHtcbiAgICAgICAgc291cmNlOiB7IHZhbHVlOiBzb3VyY2UgfVxuICAgIH0pO1xuXG4gICAgaWYgKGltcG9ydERlY2xhcmF0aW9uLnNpemUoKSA+IDApIHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVyID0gaW1wb3J0RGVjbGFyYXRpb24uZmluZChqLkltcG9ydFNwZWNpZmllciwge1xuICAgICAgICAgICAgaW1wb3J0ZWQ6IHsgbmFtZTogb3JpZ2luYWxOYW1lIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHNwZWNpZmllci5zaXplKCkgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NhbE5hbWUgPSBzcGVjaWZpZXIuZ2V0KDApLm5vZGUubG9jYWwubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBsb2NhbE5hbWU7IC8vIFJldHVybiB0aGUgc2hhZG93IG5hbWUgb3IgdGhlIG9yaWdpbmFsIG5hbWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiB0aGUgaW1wb3J0IGlzIG5vdCBmb3VuZFxufTtcblxuZXhwb3J0IGNvbnN0IGFkZFN0YXRlRGVjbGFyYXRpb24gPSAoajogSlNDb2Rlc2hpZnQsIHBhcmVudE5vZGU6IGFueSwgc3RhdGVOYW1lOiBzdHJpbmcsIGluaXRpYWxWYWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVQcm9wZXJ0eSA9IHBhcmVudE5vZGUubm9kZS5ib2R5LmJvZHkuZmluZChcbiAgICAgICAgKG5vZGU6IGFueSkgPT4gbm9kZS50eXBlID09PSAnQ2xhc3NQcm9wZXJ0eScgJiYgbm9kZS5rZXkubmFtZSA9PT0gJ3N0YXRlJ1xuICAgICk7XG5cbiAgICBpZiAoc3RhdGVQcm9wZXJ0eSAmJiBzdGF0ZVByb3BlcnR5LnZhbHVlLnR5cGUgPT09ICdPYmplY3RFeHByZXNzaW9uJykge1xuICAgICAgICBjb25zdCBoYXNTdGF0ZSA9IHN0YXRlUHJvcGVydHkudmFsdWUucHJvcGVydGllcy5zb21lKChwcm9wOiBhbnkpID0+IHByb3Aua2V5Lm5hbWUgPT09IHN0YXRlTmFtZSk7XG4gICAgICAgIGlmICghaGFzU3RhdGUpIHtcbiAgICAgICAgICAgIHN0YXRlUHJvcGVydHkudmFsdWUucHJvcGVydGllcy5wdXNoKGoucHJvcGVydHkoJ2luaXQnLCBqLmlkZW50aWZpZXIoc3RhdGVOYW1lKSwgaW5pdGlhbFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnROb2RlLm5vZGUuYm9keS5ib2R5LnVuc2hpZnQoXG4gICAgICAgICAgICBqLmNsYXNzUHJvcGVydHkoXG4gICAgICAgICAgICAgICAgai5pZGVudGlmaWVyKCdzdGF0ZScpLFxuICAgICAgICAgICAgICAgIGoub2JqZWN0RXhwcmVzc2lvbihbai5wcm9wZXJ0eSgnaW5pdCcsIGouaWRlbnRpZmllcihzdGF0ZU5hbWUpLCBpbml0aWFsVmFsdWUpXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzSlNYQXR0cmlidXRlID0gKFxuICAgIGF0dHJpYnV0ZXM6IChKU1hBdHRyaWJ1dGUgfCBKU1hTcHJlYWRBdHRyaWJ1dGUpW10gfCB1bmRlZmluZWQsXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nXG4pOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gYXR0cmlidXRlcz8uc29tZSgoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSkgfHwgZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkVXNlU3RhdGVEZWNsYXJhdGlvbiA9IChcbiAgICBqOiBKU0NvZGVzaGlmdCxcbiAgICBwYXJlbnROb2RlOiBhbnksXG4gICAgc3RhdGVOYW1lOiBzdHJpbmcsXG4gICAgc2V0U3RhdGVOYW1lOiBzdHJpbmcsXG4gICAgaW5pdGlhbFZhbHVlOiBhbnksXG4gICAgaXNUeXBlU2NyaXB0OiBib29sZWFuLFxuICAgIHR5cGVOYW1lOiBzdHJpbmdcbikgPT4ge1xuICAgIGNvbnN0IHVzZVN0YXRlRGVjbGFyYXRpb24gPSBqLnZhcmlhYmxlRGVjbGFyYXRpb24oJ2NvbnN0JywgW1xuICAgICAgICBqLnZhcmlhYmxlRGVjbGFyYXRvcihcbiAgICAgICAgICAgIGouYXJyYXlQYXR0ZXJuKFtqLmlkZW50aWZpZXIoc3RhdGVOYW1lKSwgai5pZGVudGlmaWVyKHNldFN0YXRlTmFtZSldKSxcbiAgICAgICAgICAgIGouY2FsbEV4cHJlc3Npb24oai5pZGVudGlmaWVyKGBSZWFjdC51c2VTdGF0ZSR7aXNUeXBlU2NyaXB0ID8gYDwke3R5cGVOYW1lfT5gIDogJyd9YCksIFtpbml0aWFsVmFsdWVdKVxuICAgICAgICApXG4gICAgXSk7XG4gICAgcGFyZW50Tm9kZS5ub2RlLmJvZHkuYm9keS51bnNoaWZ0KHVzZVN0YXRlRGVjbGFyYXRpb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEV2ZW50QXR0cmlidXRlID0gKGo6IEpTQ29kZXNoaWZ0LCBhdHRyaWJ1dGVzOiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBoYW5kbGVyTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgYXR0cmlidXRlcy5wdXNoKFxuICAgICAgICBqLmpzeEF0dHJpYnV0ZShqLmpzeElkZW50aWZpZXIoYXR0cmlidXRlTmFtZSksIGouanN4RXhwcmVzc2lvbkNvbnRhaW5lcihqLmlkZW50aWZpZXIoaGFuZGxlck5hbWUpKSlcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFN0YXRlQXR0cmlidXRlID0gKGo6IEpTQ29kZXNoaWZ0LCBhdHRyaWJ1dGVzOiBhbnlbXSwgYXR0cmlidXRlTmFtZTogc3RyaW5nLCBzdGF0ZU5hbWU6IHN0cmluZykgPT4ge1xuICAgIGF0dHJpYnV0ZXMucHVzaChqLmpzeEF0dHJpYnV0ZShqLmpzeElkZW50aWZpZXIoYXR0cmlidXRlTmFtZSksIGouanN4RXhwcmVzc2lvbkNvbnRhaW5lcihqLmlkZW50aWZpZXIoc3RhdGVOYW1lKSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01ldGhvZCA9IChqOiBKU0NvZGVzaGlmdCwgbWV0aG9kTmFtZTogc3RyaW5nLCBwYXJhbXM6IHN0cmluZ1tdLCBib2R5U3RhdGVtZW50czogYW55W10pID0+IHtcbiAgICByZXR1cm4gai5tZXRob2REZWZpbml0aW9uKFxuICAgICAgICAnbWV0aG9kJyxcbiAgICAgICAgai5pZGVudGlmaWVyKG1ldGhvZE5hbWUpLFxuICAgICAgICBqLmZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwYXJhbXMubWFwKChwYXJhbSkgPT4gai5pZGVudGlmaWVyKHBhcmFtKSksXG4gICAgICAgICAgICBqLmJsb2NrU3RhdGVtZW50KGJvZHlTdGF0ZW1lbnRzKVxuICAgICAgICApXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBcnJvd0Z1bmN0aW9uID0gKGo6IEpTQ29kZXNoaWZ0LCBmdW5jdGlvbk5hbWU6IHN0cmluZywgcGFyYW1zOiBzdHJpbmdbXSwgYm9keVN0YXRlbWVudHM6IGFueVtdKSA9PiB7XG4gICAgcmV0dXJuIGoudmFyaWFibGVEZWNsYXJhdGlvbignY29uc3QnLCBbXG4gICAgICAgIGoudmFyaWFibGVEZWNsYXJhdG9yKFxuICAgICAgICAgICAgai5pZGVudGlmaWVyKGZ1bmN0aW9uTmFtZSksXG4gICAgICAgICAgICBqLmFycm93RnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXAoKHBhcmFtKSA9PiBqLmlkZW50aWZpZXIocGFyYW0pKSxcbiAgICAgICAgICAgICAgICBqLmJsb2NrU3RhdGVtZW50KGJvZHlTdGF0ZW1lbnRzKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgXSk7XG59O1xuXG5leHBvcnQgY29uc3QgZW5zdXJlVHlwZUltcG9ydCA9IChqOiBKU0NvZGVzaGlmdCwgcm9vdDogYW55LCB0eXBlTmFtZTogc3RyaW5nLCBwa2c6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdMb2NhbCA9IGZpbmRJbXBvcnRlZE5hbWUoaiwgcm9vdCwgdHlwZU5hbWUsIHBrZyk7XG4gICAgaWYgKGV4aXN0aW5nTG9jYWwpIHsgcmV0dXJuIGV4aXN0aW5nTG9jYWw7IH1cblxuICAgIC8vIFRyeSB0byBhcHBlbmQgdG8gYW4gZXhpc3RpbmcgdHlwZS1vbmx5IGltcG9ydCBmcm9tIHRoZSBzYW1lIHBrZ1xuICAgIGNvbnN0IHR5cGVPbmx5SW1wb3J0OiBDb2xsZWN0aW9uPGFueT4gPSByb290LmZpbmQoai5JbXBvcnREZWNsYXJhdGlvbiwge1xuICAgICAgc291cmNlOiB7IHZhbHVlOiBwa2cgfVxuICAgIH0pLmZpbHRlcigocDogYW55KSA9PiAocC5ub2RlIGFzIGFueSkuaW1wb3J0S2luZCA9PT0gJ3R5cGUnKS5hdCgwKTtcblxuICAgIGlmICh0eXBlT25seUltcG9ydC5zaXplKCkgPiAwKSB7XG4gICAgICBjb25zdCBkZWNsID0gdHlwZU9ubHlJbXBvcnQuZ2V0KCkubm9kZTtcbiAgICAgIChkZWNsLnNwZWNpZmllcnMgYXMgYW55W10pLnB1c2goai5pbXBvcnRTcGVjaWZpZXIoai5pZGVudGlmaWVyKHR5cGVOYW1lKSkpO1xuICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgY3JlYXRlIGEgbmV3IHR5cGUtb25seSBpbXBvcnRcbiAgICBjb25zdCBzcGVjID0gai5pbXBvcnRTcGVjaWZpZXIoai5pZGVudGlmaWVyKHR5cGVOYW1lKSk7XG4gICAgY29uc3QgdHlwZURlY2wgPSBqLmltcG9ydERlY2xhcmF0aW9uKFtzcGVjXSwgai5saXRlcmFsKHBrZykpO1xuICAgICh0eXBlRGVjbCBhcyBhbnkpLmltcG9ydEtpbmQgPSAndHlwZSc7XG4gICAgY29uc3QgZmlyc3RJbXBvcnQgPSByb290LmZpbmQoai5JbXBvcnREZWNsYXJhdGlvbikuYXQoMCk7XG4gICAgaWYgKGZpcnN0SW1wb3J0LnNpemUoKSA+IDApIHtcbiAgICAgIGZpcnN0SW1wb3J0Lmluc2VydEJlZm9yZSh0eXBlRGVjbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QuZ2V0KCkubm9kZS5wcm9ncmFtLmJvZHkudW5zaGlmdCh0eXBlRGVjbCk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlTmFtZTtcbiAgfTtcbiJdLCJuYW1lcyI6WyJhZGRDb21tZW50VG9NZXRob2QiLCJqIiwibWV0aG9kIiwiY29tbWVudFRleHQiLCJwYXJlbnRUeXBlIiwibWV0aG9kQm9keSIsInBsYWNlaG9sZGVyU3RhdGVtZW50IiwiZW5zdXJlSW1wb3J0RXhpc3RzIiwicm9vdCIsImltcG9ydE5hbWUiLCJzb3VyY2UiLCJpbXBvcnREZWNsYXJhdGlvbiIsInNwZWNpZmllcnMiLCJzcGVjaWZpZXIiLCJuZXdJbXBvcnQiLCJmaW5kUGFyZW50Q29tcG9uZW50IiwicGF0aCIsInBhcmVudE5vZGUiLCJpc0NsYXNzQ29tcG9uZW50IiwiaXNGdW5jdGlvbmFsQ29tcG9uZW50IiwiZ2VuZXJhdGVVbmlxdWVOYW1lIiwiYmFzZU5hbWUiLCJleGlzdGluZ05hbWVzIiwibmFtZSIsImNvdW50ZXIiLCJmaW5kQXR0cmlidXRlIiwiYXR0cmlidXRlcyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyIiwiZG9lc0F0dHJpYnV0ZUV4aXN0IiwibW9kaWZ5RXhpc3RpbmdBdHRyaWJ1dGUiLCJleGlzdGluZ0F0dHJpYnV0ZSIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5VmFsdWUiLCJleHByZXNzaW9uIiwiYWRkTmV3QXR0cmlidXRlIiwibmV3QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiYXR0cmlidXRlSW5kZXgiLCJlbnN1cmVBdHRyaWJ1dGVFeGlzdHMiLCJjcmVhdGVBdHRyaWJ1dGUiLCJhZGRQcm9wZXJ0eVRvT2JqZWN0RXhwcmVzc2lvbiIsImNyZWF0ZU1ldGhvZEZvckNsYXNzQ29tcG9uZW50IiwibWV0aG9kTmFtZSIsImlzVHlwZVNjcmlwdCIsInR5cGVOYW1lIiwiY3JlYXRlQXJyb3dGdW5jdGlvbkZvckZ1bmN0aW9uYWxDb21wb25lbnQiLCJmdW5jdGlvbk5hbWUiLCJhZGRNZXRob2RUb0NvbXBvbmVudCIsImZpbmRJbXBvcnRlZE5hbWUiLCJvcmlnaW5hbE5hbWUiLCJhZGRTdGF0ZURlY2xhcmF0aW9uIiwic3RhdGVOYW1lIiwiaW5pdGlhbFZhbHVlIiwic3RhdGVQcm9wZXJ0eSIsIm5vZGUiLCJwcm9wIiwiaGFzSlNYQXR0cmlidXRlIiwiYWRkVXNlU3RhdGVEZWNsYXJhdGlvbiIsInNldFN0YXRlTmFtZSIsInVzZVN0YXRlRGVjbGFyYXRpb24iLCJhZGRFdmVudEF0dHJpYnV0ZSIsImhhbmRsZXJOYW1lIiwiYWRkU3RhdGVBdHRyaWJ1dGUiLCJjcmVhdGVDbGFzc01ldGhvZCIsInBhcmFtcyIsImJvZHlTdGF0ZW1lbnRzIiwicGFyYW0iLCJjcmVhdGVBcnJvd0Z1bmN0aW9uIiwiZW5zdXJlVHlwZUltcG9ydCIsInBrZyIsImV4aXN0aW5nTG9jYWwiLCJ0eXBlT25seUltcG9ydCIsInAiLCJzcGVjIiwidHlwZURlY2wiLCJmaXJzdEltcG9ydCJdLCJtYXBwaW5ncyI6ImdGQVNPLE1BQU1BLEVBQXFCLENBQzlCQyxFQUNBQyxFQUNBQyxFQUNBQyxJQUNDLENBQ0QsR0FBSUEsSUFBZSxTQUNYLEdBQUFGLEVBQU8sT0FBUyxHQUFLQSxFQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxLQUFNLENBQ3BELE1BQU1HLEVBQWFILEVBQU8s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