@progress/kendo-react-grid
Version:
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
10 lines (9 loc) • 19.7 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;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 c=!1;const u=new Set;d.find(e.Identifier).forEach(s=>{u.add(s.node.name)});const r=t.generateUniqueName("handleEditChange",u),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==null?void 0: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"),c=!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:o}=t.findParentComponent(e,s);if(g){if(t.addStateDeclaration(e,o,"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,o,i,!0)}if(!t.hasJSXAttribute(n,"onEditChange")){t.addEventAttribute(e,n,"onEditChange",`this.${r}`);const i=t.createClassMethod(e,r,[`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,o,i,!0)}}else if(C){if(t.addUseStateDeclaration(e,o,"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,o,i,!1)}if(!t.hasJSXAttribute(n,"onEditChange")){t.addEventAttribute(e,n,"onEditChange",`${r}`);const i=t.createArrowFunction(e,`${r}`,[`(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,o,i,!1)}}}),c&&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/ICc6IEdyaWRJdGVtQ2hhbmdlRXZlbnQnIDogJyd9KWBdLFxuICAgICAgICAgICAgICAgICAgICBbXSAvLyBFbXB0eSBibG9jayBmb3Igbm93XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBhZGRNZXRob2RUb0NvbXBvbmVudChqLCBwYXJlbnROb2RlLCBoYW5kbGVJdGVtQ2hhbmdlRnVuY3Rpb24sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFoYXNKU1hBdHRyaWJ1dGUoYXR0cmlidXRlcywgJ29uRWRpdENoYW5nZScpKSB7XG4gICAgICAgICAgICAgICAgYWRkRXZlbnRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgYXMgKEpTWEF0dHJpYnV0ZSB8IEpTWFNwcmVhZEF0dHJpYnV0ZSlbXSxcbiAgICAgICAgICAgICAgICAgICAgJ29uRWRpdENoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgIGAke3VuaXF1ZU5hbWV9YFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVFZGl0Q2hhbmdlRnVuY3Rpb24gPSBjcmVhdGVBcnJvd0Z1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICBqLFxuICAgICAgICAgICAgICAgICAgICBgJHt1bmlxdWVOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIFtgKGV2ZW50JHtpc1R5cGVTY3JpcHQgPyAnOiBHcmlkRWRpdENoYW5nZUV2ZW50JyA6ICcnfSlgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgai5leHByZXNzaW9uU3RhdGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGouY2FsbEV4cHJlc3Npb24oai5pZGVudGlmaWVyKCdzZXRFZGl0JyksIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgai5tZW1iZXJFeHByZXNzaW9uKGouaWRlbnRpZmllcignZXZlbnQnKSwgai5pZGVudGlmaWVyKCdlZGl0JykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGBlZGl0RmllbGRgIHZhbHVlIGFzIGEgY29tbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICBhZGRDb21tZW50VG9NZXRob2QoXG4gICAgICAgICAgICAgICAgICAgIGosXG4gICAgICAgICAgICAgICAgICAgIGooaGFuZGxlRWRpdENoYW5nZUZ1bmN0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVkaXRGaWVsZCB2YWx1ZTogJHtlZGl0RmllbGRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGFkZE1ldGhvZFRvQ29tcG9uZW50KGosIHBhcmVudE5vZGUsIGhhbmRsZUVkaXRDaGFuZ2VGdW5jdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYWRkSW1wb3J0cyAmJiBpc1R5cGVTY3JpcHQpIHtcbiAgICAgICAgLy8gRW5zdXJlIFR5cGVTY3JpcHQgaW1wb3J0c1xuICAgICAgICBlbnN1cmVJbXBvcnRFeGlzdHMoaiwgcm9vdCwgJ0dyaWRJdGVtQ2hhbmdlRXZlbnQnLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWdyaWQnKTtcbiAgICAgICAgZW5zdXJlSW1wb3J0RXhpc3RzKGosIHJvb3QsICdHcmlkRWRpdENoYW5nZUV2ZW50JywgJ0Bwcm9ncmVzcy9rZW5kby1yZWFjdC1ncmlkJyk7XG4gICAgICAgIGVuc3VyZUltcG9ydEV4aXN0cyhqLCByb290LCAnRWRpdERlc2NyaXB0b3InLCAnQHByb2dyZXNzL2tlbmRvLXJlYWN0LWRhdGEtdG9vbHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdC50b1NvdXJjZSgpO1xufVxuIl0sIm5hbWVzIjpbImVkaXRTdGF0ZSIsImZpbGVJbmZvIiwiYXBpIiwiaiIsInJvb3QiLCJpc1R5cGVTY3JpcHQiLCJhZGRJbXBvcnRzIiwiZXhpc3RpbmdOYW1lcyIsInBhdGgiLCJ1bmlxdWVOYW1lIiwiZ2VuZXJhdGVVbmlxdWVOYW1lIiwiZ3JpZE5hbWUiLCJmaW5kSW1wb3J0ZWROYW1lIiwiZ3JpZFBhdGgiLCJhdHRyaWJ1dGVzIiwiZWRpdEZpZWxkQXR0cmlidXRlIiwiYXR0ciIsImVkaXRGaWVsZFZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiaGFzSlNYQXR0cmlidXRlIiwiYWRkU3RhdGVBdHRyaWJ1dGUiLCJpc0NsYXNzQ29tcG9uZW50IiwiaXNGdW5jdGlvbmFsQ29tcG9uZW50IiwicGFyZW50Tm9kZSIsImZpbmRQYXJlbnRDb21wb25lbnQiLCJhZGRTdGF0ZURlY2xhcmF0aW9uIiwiYWRkRXZlbnRBdHRyaWJ1dGUiLCJoYW5kbGVJdGVtQ2hhbmdlTWV0aG9kIiwiY3JlYXRlQ2xhc3NNZXRob2QiLCJhZGRNZXRob2RUb0NvbXBvbmVudCIsImhhbmRsZUVkaXRDaGFuZ2VNZXRob2QiLCJhZGRDb21tZW50VG9NZXRob2QiLCJhZGRVc2VTdGF0ZURlY2xhcmF0aW9uIiwiaGFuZGxlSXRlbUNoYW5nZUZ1bmN0aW9uIiwiY3JlYXRlQXJyb3dGdW5jdGlvbiIsImhhbmRsZUVkaXRDaGFuZ2VGdW5jdGlvbiIsImVuc3VyZUltcG9ydEV4aXN0cyJdLCJtYXBwaW5ncyI6IjJDQWtCQSxTQUFBQSxFQUF5QkMsRUFBb0JDLEVBQVUsQ0FDbkQsTUFBTUMsRUFBaUJELEVBQUksWUFDckJFLEVBQU9ELEVBQUVGLEVBQVMsTUFBTSxFQUd4QkksRUFBZUosRUFBUyxLQUFLLFNBQVMsS0FBSyxHQUFLQSxFQUFTLEtBQUssU0FBUyxNQUFNLEVBRW5GLElBQUlLLEVBQWEsR0FDWCxNQUFBQyxNQUFvQixJQUMxQkgsRUFBSyxLQUFLRCxFQUFFLFVBQVUsRUFBRSxRQUFTSyxHQUFTLENBQ3hCRCxFQUFBLElBQUlDLEVBQUssS0FBSyxJQUFJLENBQUEsQ0FDbkMsRUFHSyxNQUFBQyxFQUFhQyxFQUFBQSxtQkFERixtQkFDK0JILENBQWEsRUFHdkRJLEVBQVdDLEVBQUFBLGlCQUFpQlQsRUFBR0MsRUFBTSxPQUFRLDRCQUE0QixHQUFLLE9BS3ZFLE9BRlFBLEVBQUssS0FBS0QsRUFBRSxXQUFZLENBQUUsZUFBZ0IsQ0FBRSxLQUFNLENBQUUsS0FBTVEsQ0FBUyxDQUFBLENBQUssQ0FBQSxFQUVoRixRQUFTRSxHQUFhLENBQ3pC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