UNPKG

@progress/kendo-react-grid

Version:

React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package

3 lines (2 loc) 19.4 kB
"use strict";const t=require("./utils.js");function b(h,E){const e=E.jscodeshift,d=e(h.source),a=h.path.endsWith(".ts")||h.path.endsWith(".tsx");let u=!1;const c=new Set;d.find(e.Identifier).forEach(s=>{c.add(s.node.name)});const o=t.generateUniqueName("handleEditChange",c),p=t.findImportedName(e,d,"Grid","@progress/kendo-react-grid")||"Grid";return d.find(e.JSXElement,{openingElement:{name:{name:p}}}).forEach(s=>{const n=s.node.openingElement.attributes,m=n?.find(i=>i.type==="JSXAttribute"&&i.name.name==="editField");if(!m)return;const l=m.value?e(m.value).toSource():"No value provided";t.removeAttribute(n,"editField"),u=!0,t.hasJSXAttribute(n,"editable")||t.addStateAttribute(e,n,"editable","true"),t.hasJSXAttribute(n,"dataItemKey")||t.addStateAttribute(e,n,"dataItemKey",'"insert dataItemKey here"');const{isClassComponent:g,isFunctionalComponent:C,parentNode:r}=t.findParentComponent(e,s);if(g){if(t.addStateDeclaration(e,r,"edit",e.objectExpression([])),t.hasJSXAttribute(n,"edit")||t.addStateAttribute(e,n,"edit","this.state.edit"),!t.hasJSXAttribute(n,"onItemChange")){t.addEventAttribute(e,n,"onItemChange","this.handleItemChange");const i=t.createClassMethod(e,"handleItemChange",[`event${a?": GridItemChangeEvent":""}`],[]);t.addMethodToComponent(e,r,i,!0)}if(!t.hasJSXAttribute(n,"onEditChange")){t.addEventAttribute(e,n,"onEditChange",`this.${o}`);const i=t.createClassMethod(e,o,[`event${a?": GridEditChangeEvent":""}`],[e.expressionStatement(e.callExpression(e.memberExpression(e.thisExpression(),e.identifier("setState")),[e.objectExpression([e.property("init",e.identifier("edit"),e.memberExpression(e.identifier("event"),e.identifier("edit")))])]))]);t.addCommentToMethod(e,e(i),`Original editField value: ${l}`,"class"),t.addMethodToComponent(e,r,i,!0)}}else if(C){if(t.addUseStateDeclaration(e,r,"edit","setEdit",e.objectExpression([]),a,"EditDescriptor"),t.hasJSXAttribute(n,"edit")||t.addStateAttribute(e,n,"edit","edit"),!t.hasJSXAttribute(n,"onItemChange")){t.addEventAttribute(e,n,"onItemChange","handleItemChange");const i=t.createArrowFunction(e,"handleItemChange",[`(event${a?": GridItemChangeEvent":""})`],[]);t.addMethodToComponent(e,r,i,!1)}if(!t.hasJSXAttribute(n,"onEditChange")){t.addEventAttribute(e,n,"onEditChange",`${o}`);const i=t.createArrowFunction(e,`${o}`,[`(event${a?": GridEditChangeEvent":""})`],[e.expressionStatement(e.callExpression(e.identifier("setEdit"),[e.memberExpression(e.identifier("event"),e.identifier("edit"))]))]);t.addCommentToMethod(e,e(i),`Original editField value: ${l}`,"function"),t.addMethodToComponent(e,r,i,!1)}}}),u&&a&&(t.ensureImportExists(e,d,"GridItemChangeEvent","@progress/kendo-react-grid"),t.ensureImportExists(e,d,"GridEditChangeEvent","@progress/kendo-react-grid"),t.ensureImportExists(e,d,"EditDescriptor","@progress/kendo-react-data-tools")),d.toSource()}module.exports=b; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1zdGF0ZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9jb2RlbW9kcy92MTEvZWRpdC1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUEksIEZpbGVJbmZvLCBKU0NvZGVzaGlmdCwgSlNYQXR0cmlidXRlLCBKU1hTcHJlYWRBdHRyaWJ1dGUgfSBmcm9tICdqc2NvZGVzaGlmdCc7XG5pbXBvcnQge1xuICAgIGFkZE1ldGhvZFRvQ29tcG9uZW50LFxuICAgIHJlbW92ZUF0dHJpYnV0ZSxcbiAgICBmaW5kUGFyZW50Q29tcG9uZW50LFxuICAgIGdlbmVyYXRlVW5pcXVlTmFtZSxcbiAgICBlbnN1cmVJbXBvcnRFeGlzdHMsXG4gICAgYWRkRXZlbnRBdHRyaWJ1dGUsXG4gICAgYWRkU3RhdGVBdHRyaWJ1dGUsXG4gICAgYWRkU3RhdGVEZWNsYXJhdGlvbixcbiAgICBhZGRVc2VTdGF0ZURlY2xhcmF0aW9uLFxuICAgIGZpbmRJbXBvcnRlZE5hbWUsXG4gICAgY3JlYXRlQ2xhc3NNZXRob2QsXG4gICAgY3JlYXRlQXJyb3dGdW5jdGlvbixcbiAgICBoYXNKU1hBdHRyaWJ1dGUsXG4gICAgYWRkQ29tbWVudFRvTWV0aG9kXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZmlsZUluZm86IEZpbGVJbmZvLCBhcGk6IEFQSSkge1xuICAgIGNvbnN0IGo6IEpTQ29kZXNoaWZ0ID0gYXBpLmpzY29kZXNoaWZ0O1xuICAgIGNvbnN0IHJvb3QgPSBqKGZpbGVJbmZvLnNvdXJjZSk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZmlsZSBpcyBUeXBlU2NyaXB0IG9yIFRTWFxuICAgIGNvbnN0IGlzVHlwZVNjcmlwdCA9IGZpbGVJbmZvLnBhdGguZW5kc1dpdGgoJy50cycpIHx8IGZpbGVJbmZvLnBhdGguZW5kc1dpdGgoJy50c3gnKTtcblxuICAgIGxldCBhZGRJbXBvcnRzID0gZmFsc2U7XG4gICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHJvb3QuZmluZChqLklkZW50aWZpZXIpLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgZXhpc3RpbmdOYW1lcy5hZGQocGF0aC5ub2RlLm5hbWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYmFzZU5hbWUgPSAnaGFuZGxlRWRpdENoYW5nZSc7XG4gICAgY29uc3QgdW5pcXVlTmFtZSA9IGdlbmVyYXRlVW5pcXVlTmFtZShiYXNlTmFtZSwgZXhpc3RpbmdOYW1lcyk7XG5cbiAgICAvLyBEeW5hbWljYWxseSByZXNvbHZlIHRoZSBpbXBvcnRlZCBuYW1lIGZvciBgR3JpZGBcbiAgICBjb25zdCBncmlkTmFtZSA9IGZpbmRJbXBvcnRlZE5hbWUoaiwgcm9vdCwgJ0dyaWQnLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWdyaWQnKSB8fCAnR3JpZCc7XG5cbiAgICAvLyBGaW5kIGFsbCBKU1hFbGVtZW50cyB3aXRoIHRoZSBuYW1lIG9mIHRoZSByZXNvbHZlZCBgR3JpZGAgY29tcG9uZW50XG4gICAgY29uc3QgZ3JpZEVsZW1lbnRzID0gcm9vdC5maW5kKGouSlNYRWxlbWVudCwgeyBvcGVuaW5nRWxlbWVudDogeyBuYW1lOiB7IG5hbWU6IGdyaWROYW1lIH0gfSB9KTtcblxuICAgIGdyaWRFbGVtZW50cy5mb3JFYWNoKChncmlkUGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZ3JpZFBhdGgubm9kZS5vcGVuaW5nRWxlbWVudC5hdHRyaWJ1dGVzO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBgZWRpdEZpZWxkYCBhdHRyaWJ1dGUgZXhpc3RzXG4gICAgICAgIGNvbnN0IGVkaXRGaWVsZEF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXM/LmZpbmQoXG4gICAgICAgICAgICAoYXR0cikgPT4gYXR0ci50eXBlID09PSAnSlNYQXR0cmlidXRlJyAmJiBhdHRyLm5hbWUubmFtZSA9PT0gJ2VkaXRGaWVsZCdcbiAgICAgICAgKSBhcyBKU1hBdHRyaWJ1dGU7XG5cbiAgICAgICAgaWYgKCFlZGl0RmllbGRBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCB0aGlzIEdyaWQgaWYgYGVkaXRGaWVsZGAgaXMgbm90IHByZXNlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvcHkgdGhlIHZhbHVlIG9mIGBlZGl0RmllbGRgIGFzIGEgY29tbWVudFxuICAgICAgICBjb25zdCBlZGl0RmllbGRWYWx1ZSA9IGVkaXRGaWVsZEF0dHJpYnV0ZS52YWx1ZSA/IGooZWRpdEZpZWxkQXR0cmlidXRlLnZhbHVlKS50b1NvdXJjZSgpIDogJ05vIHZhbHVlIHByb3ZpZGVkJztcblxuICAgICAgICAvLyBSZW1vdmUgdGhlIGBlZGl0RmllbGRgIGF0dHJpYnV0ZVxuICAgICAgICByZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlcyBhcyAoSlNYQXR0cmlidXRlIHwgSlNYU3ByZWFkQXR0cmlidXRlKVtdLCAnZWRpdEZpZWxkJyk7XG4gICAgICAgIGFkZEltcG9ydHMgPSB0cnVlO1xuXG4gICAgICAgIC8vIEVuc3VyZSBgZWRpdGFibGVgIGF0dHJpYnV0ZSBpcyBwcmVzZW50IGFuZCBzZXQgdG8gdHJ1ZVxuICAgICAgICBpZiAoIWhhc0pTWEF0dHJpYnV0ZShhdHRyaWJ1dGVzLCAnZWRpdGFibGUnKSkge1xuICAgICAgICAgICAgYWRkU3RhdGVBdHRyaWJ1dGUoaiwgYXR0cmlidXRlcyBhcyAoSlNYQXR0cmlidXRlIHwgSlNYU3ByZWFkQXR0cmlidXRlKVtdLCAnZWRpdGFibGUnLCAndHJ1ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5zdXJlIGBkYXRhSXRlbUtleWAgYXR0cmlidXRlIGlzIHByZXNlbnRcbiAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ2RhdGFJdGVtS2V5JykpIHtcbiAgICAgICAgICAgIGFkZFN0YXRlQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyBhcyAoSlNYQXR0cmlidXRlIHwgSlNYU3ByZWFkQXR0cmlidXRlKVtdLFxuICAgICAgICAgICAgICAgICdkYXRhSXRlbUtleScsXG4gICAgICAgICAgICAgICAgJ1wiaW5zZXJ0IGRhdGFJdGVtS2V5IGhlcmVcIidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIHBhcmVudCBjb21wb25lbnQgaXMgYSBjbGFzcyBvciBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICAgICAgICBjb25zdCB7IGlzQ2xhc3NDb21wb25lbnQsIGlzRnVuY3Rpb25hbENvbXBvbmVudCwgcGFyZW50Tm9kZSB9ID0gZmluZFBhcmVudENvbXBvbmVudChqLCBncmlkUGF0aCk7XG5cbiAgICAgICAgaWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcbiAgICAgICAgICAgIC8vIEFkZCBgZWRpdGAgdG8gdGhlIGNsYXNzIGNvbXBvbmVudCdzIHN0YXRlXG4gICAgICAgICAgICBhZGRTdGF0ZURlY2xhcmF0aW9uKGosIHBhcmVudE5vZGUsICdlZGl0Jywgai5vYmplY3RFeHByZXNzaW9uKFtdKSk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBgZWRpdGAsIGBvbkl0ZW1DaGFuZ2VgLCBhbmQgYG9uRWRpdENoYW5nZWAgYXR0cmlidXRlc1xuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ2VkaXQnKSkge1xuICAgICAgICAgICAgICAgIGFkZFN0YXRlQXR0cmlidXRlKGosIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSwgJ2VkaXQnLCAndGhpcy5zdGF0ZS5lZGl0Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGFzSlNYQXR0cmlidXRlKGF0dHJpYnV0ZXMsICdvbkl0ZW1DaGFuZ2UnKSkge1xuICAgICAgICAgICAgICAgIGFkZEV2ZW50QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIGFzIChKU1hBdHRyaWJ1dGUgfCBKU1hTcHJlYWRBdHRyaWJ1dGUpW10sXG4gICAgICAgICAgICAgICAgICAgICdvbkl0ZW1DaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICAndGhpcy5oYW5kbGVJdGVtQ2hhbmdlJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVJdGVtQ2hhbmdlTWV0aG9kID0gY3JlYXRlQ2xhc3NNZXRob2QoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgICdoYW5kbGVJdGVtQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgW2BldmVudCR7aXNUeXBlU2NyaXB0ID8gJzogR3JpZEl0ZW1DaGFuZ2VFdmVudCcgOiAnJ31gXSxcbiAgICAgICAgICAgICAgICAgICAgW10gLy8gRW1wdHkgYmxvY2sgZm9yIG5vd1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBhZGRNZXRob2RUb0NvbXBvbmVudChqLCBwYXJlbnROb2RlLCBoYW5kbGVJdGVtQ2hhbmdlTWV0aG9kLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ29uRWRpdENoYW5nZScpKSB7XG4gICAgICAgICAgICAgICAgYWRkRXZlbnRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSxcbiAgICAgICAgICAgICAgICAgICAgJ29uRWRpdENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgIGB0aGlzLiR7dW5pcXVlTmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUVkaXRDaGFuZ2VNZXRob2QgPSBjcmVhdGVDbGFzc01ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgaixcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgW2BldmVudCR7aXNUeXBlU2NyaXB0ID8gJzogR3JpZEVkaXRDaGFuZ2VFdmVudCcgOiAnJ31gXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgai5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGouY2FsbEV4cHJlc3Npb24oai5tZW1iZXJFeHByZXNzaW9uKGoudGhpc0V4cHJlc3Npb24oKSwgai5pZGVudGlmaWVyKCdzZXRTdGF0ZScpKSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqLm9iamVjdEV4cHJlc3Npb24oW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5wcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5pdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5pZGVudGlmaWVyKCdlZGl0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5tZW1iZXJFeHByZXNzaW9uKGouaWRlbnRpZmllcignZXZlbnQnKSwgai5pZGVudGlmaWVyKCdlZGl0JykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGBlZGl0RmllbGRgIHZhbHVlIGFzIGEgY29tbWVudCBpbiB0aGUgbWV0aG9kXG4gICAgICAgICAgICAgICAgYWRkQ29tbWVudFRvTWV0aG9kKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBqKGhhbmRsZUVkaXRDaGFuZ2VNZXRob2QpLFxuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZWRpdEZpZWxkIHZhbHVlOiAke2VkaXRGaWVsZFZhbHVlfWAsXG4gICAgICAgICAgICAgICAgICAgICdjbGFzcydcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYWRkTWV0aG9kVG9Db21wb25lbnQoaiwgcGFyZW50Tm9kZSwgaGFuZGxlRWRpdENoYW5nZU1ldGhvZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbmFsQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAvLyBBZGQgYFJlYWN0LnVzZVN0YXRlYCBmb3IgYGVkaXRgXG4gICAgICAgICAgICBhZGRVc2VTdGF0ZURlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICAnZWRpdCcsXG4gICAgICAgICAgICAgICAgJ3NldEVkaXQnLFxuICAgICAgICAgICAgICAgIGoub2JqZWN0RXhwcmVzc2lvbihbXSksXG4gICAgICAgICAgICAgICAgaXNUeXBlU2NyaXB0LFxuICAgICAgICAgICAgICAgICdFZGl0RGVzY3JpcHRvcidcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBgZWRpdGAsIGBvbkl0ZW1DaGFuZ2VgLCBhbmQgYG9uRWRpdENoYW5nZWAgYXR0cmlidXRlc1xuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ2VkaXQnKSkge1xuICAgICAgICAgICAgICAgIGFkZFN0YXRlQXR0cmlidXRlKGosIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSwgJ2VkaXQnLCAnZWRpdCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc0pTWEF0dHJpYnV0ZShhdHRyaWJ1dGVzLCAnb25JdGVtQ2hhbmdlJykpIHtcbiAgICAgICAgICAgICAgICBhZGRFdmVudEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgaixcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyBhcyAoSlNYQXR0cmlidXRlIHwgSlNYU3ByZWFkQXR0cmlidXRlKVtdLFxuICAgICAgICAgICAgICAgICAgICAnb25JdGVtQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2hhbmRsZUl0ZW1DaGFuZ2UnXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZUl0ZW1DaGFuZ2VGdW5jdGlvbiA9IGNyZWF0ZUFycm93RnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgICdoYW5kbGVJdGVtQ2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgW2AoZXZlbnQke2lzVHlwZVNjcmlwdCA/ICc6IEdyaWRJdGVtQ2hhbmdlRXZlbnQnIDogJyd9KWBdLFxuICAgICAgICAgICAgICAgICAgICBbXSAvLyBFbXB0eSBibG9jayBmb3Igbm93XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBhZGRNZXRob2RUb0NvbXBvbmVudChqLCBwYXJlbnROb2RlLCBoYW5kbGVJdGVtQ2hhbmdlRnVuY3Rpb24sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ29uRWRpdENoYW5nZScpKSB7XG4gICAgICAgICAgICAgICAgYWRkRXZlbnRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSxcbiAgICAgICAgICAgICAgICAgICAgJ29uRWRpdENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgIGAke3VuaXF1ZU5hbWV9YFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVFZGl0Q2hhbmdlRnVuY3Rpb24gPSBjcmVhdGVBcnJvd0Z1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBgJHt1bmlxdWVOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIFtgKGV2ZW50JHtpc1R5cGVTY3JpcHQgPyAnOiBHcmlkRWRpdENoYW5nZUV2ZW50JyA6ICcnfSlgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgai5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGouY2FsbEV4cHJlc3Npb24oai5pZGVudGlmaWVyKCdzZXRFZGl0JyksIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5tZW1iZXJFeHByZXNzaW9uKGouaWRlbnRpZmllcignZXZlbnQnKSwgai5pZGVudGlmaWVyKCdlZGl0JykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGBlZGl0RmllbGRgIHZhbHVlIGFzIGEgY29tbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICBhZGRDb21tZW50VG9NZXRob2QoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGooaGFuZGxlRWRpdENoYW5nZUZ1bmN0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVkaXRGaWVsZCB2YWx1ZTogJHtlZGl0RmllbGRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGFkZE1ldGhvZFRvQ29tcG9uZW50KGosIHBhcmVudE5vZGUsIGhhbmRsZUVkaXRDaGFuZ2VGdW5jdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWRkSW1wb3J0cyAmJiBpc1R5cGVTY3JpcHQpIHtcbiAgICAgICAgLy8gRW5zdXJlIFR5cGVTY3JpcHQgaW1wb3J0c1xuICAgICAgICBlbnN1cmVJbXBvcnRFeGlzdHMoaiwgcm9vdCwgJ0dyaWRJdGVtQ2hhbmdlRXZlbnQnLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWdyaWQnKTtcbiAgICAgICAgZW5zdXJlSW1wb3J0RXhpc3RzKGosIHJvb3QsICdHcmlkRWRpdENoYW5nZUV2ZW50JywgJ0Bwcm9ncmVzcy9rZW5kby1yZWFjdC1ncmlkJyk7XG4gICAgICAgIGVuc3VyZUltcG9ydEV4aXN0cyhqLCByb290LCAnRWRpdERlc2NyaXB0b3InLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWRhdGEtdG9vbHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdC50b1NvdXJjZSgpO1xufVxuIl0sIm5hbWVzIjpbImVkaXRTdGF0ZSIsImZpbGVJbmZvIiwiYXBpIiwiaiIsInJvb3QiLCJpc1R5cGVTY3JpcHQiLCJhZGRJbXBvcnRzIiwiZXhpc3RpbmdOYW1lcyIsInBhdGgiLCJ1bmlxdWVOYW1lIiwiZ2VuZXJhdGVVbmlxdWVOYW1lIiwiZ3JpZE5hbWUiLCJmaW5kSW1wb3J0ZWROYW1lIiwiZ3JpZFBhdGgiLCJhdHRyaWJ1dGVzIiwiZWRpdEZpZWxkQXR0cmlidXRlIiwiYXR0ciIsImVkaXRGaWVsZFZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiaGFzSlNYQXR0cmlidXRlIiwiYWRkU3RhdGVBdHRyaWJ1dGUiLCJpc0NsYXNzQ29tcG9uZW50IiwiaXNGdW5jdGlvbmFsQ29tcG9uZW50IiwicGFyZW50Tm9kZSIsImZpbmRQYXJlbnRDb21wb25lbnQiLCJhZGRTdGF0ZURlY2xhcmF0aW9uIiwiYWRkRXZlbnRBdHRyaWJ1dGUiLCJoYW5kbGVJdGVtQ2hhbmdlTWV0aG9kIiwiY3JlYXRlQ2xhc3NNZXRob2QiLCJhZGRNZXRob2RUb0NvbXBvbmVudCIsImhhbmRsZUVkaXRDaGFuZ2VNZXRob2QiLCJhZGRDb21tZW50VG9NZXRob2QiLCJhZGRVc2VTdGF0ZURlY2xhcmF0aW9uIiwiaGFuZGxlSXRlbUNoYW5nZUZ1bmN0aW9uIiwiY3JlYXRlQXJyb3dGdW5jdGlvbiIsImhhbmRsZUVkaXRDaGFuZ2VGdW5jdGlvbiIsImVuc3VyZUltcG9ydEV4aXN0cyJdLCJtYXBwaW5ncyI6IjJDQWtCQSxTQUFBQSxFQUF5QkMsRUFBb0JDLEVBQVUsQ0FDbkQsTUFBTUMsRUFBaUJELEVBQUksWUFDckJFLEVBQU9ELEVBQUVGLEVBQVMsTUFBTSxFQUd4QkksRUFBZUosRUFBUyxLQUFLLFNBQVMsS0FBSyxHQUFLQSxFQUFTLEtBQUssU0FBUyxNQUFNLEVBRW5GLElBQUlLLEVBQWEsR0FDakIsTUFBTUMsTUFBb0IsSUFDMUJILEVBQUssS0FBS0QsRUFBRSxVQUFVLEVBQUUsUUFBU0ssR0FBUyxDQUN0Q0QsRUFBYyxJQUFJQyxFQUFLLEtBQUssSUFBSSxDQUNwQyxDQUFDLEVBR0QsTUFBTUMsRUFBYUMsRUFBQUEsbUJBREYsbUJBQytCSCxDQUFhLEVBR3ZESSxFQUFXQyxFQUFBQSxpQkFBaUJULEVBQUdDLEVBQU0sT0FBUSw0QkFBNEIsR0FBSyxPQUtwRixPQUZxQkEsRUFBSyxLQUFLRCxFQUFFLFdBQVksQ0FBRSxlQUFnQixDQUFFLEtBQU0sQ0FBRSxLQUFNUSxDQUFBLENBQVMsRUFBSyxFQUVoRixRQUFTRSxHQUFhLENBQy9CLE1B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