{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\bindUser\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\bindUser\\components\\TablePage\\index.vue","mtime":1752055336202},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5LCBzZXRRdWVyeVZhbHVlIH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKaW1wb3J0IHRyZWVTaWRlIGZyb20gJ0AvY29tcG9uZW50cy90cmVlU2lkZS9pbmRleC52dWUnOwppbXBvcnQgU2VhcmNoQ29tbW9uIGZyb20gJ0AvY29tcG9uZW50cy9TZWFyY2hDb21tb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgZ2V0VHJlZSwgdGFibGVEYXRhLCB0YWJsZURlbGV0ZSwgdHJlZURlbGV0ZSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2JpbmRVc2VyJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKLy8g6Lev5q61CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBsb2FkUm9hZCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbyc7CmltcG9ydCBDYXJDaG9pY2VEaWFsb2cgZnJvbSAnQC92aWV3cy9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9iaW5kVXNlci9jb21wb25lbnRzL0NhckNob2ljZURpYWxvZyc7Ci8vIOaVkeaPtOeCuQppbXBvcnQgeyB0YWJsZURhdGEgYXMgcmVzY3VlUG9pbnQgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9yZXNjdWVTaXRlTWdtdCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBDYXJDaG9pY2VEaWFsb2c6IENhckNob2ljZURpYWxvZywKICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sCiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBTZWFyY2hDb21tb246IFNlYXJjaENvbW1vbgogIH0sCiAgbWl4aW5zOiBbVGFibGVNaXhpbl0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGFkZEVkaXRGb3JtOiB7CiAgICAgICAgY2FyOiB7fQogICAgICB9LAogICAgICBjYXJEYXRhOiB7fSwKICAgICAgY2FyQ2hvaWNlRGlhbG9nOiBmYWxzZSwKICAgICAgaXNBZGREaXNhYmxlZDogdHJ1ZSwKICAgICAgLy8g5paw5aKe5oyJ6ZKu5piv5ZCm56aB55SoCiAgICAgIHB1YlN1YjogbnVsbCwKICAgICAgdGFibGVNYXhIZWlnaHQ6ICc2MDBweCcsCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlTG9hZGluZzogdHJ1ZSwKICAgICAgdGFibGVMb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZURhdGE6IFtdLAogICAgICAvL+W3pui+ueagkQogICAgICB0YWJMaXN0OiBbJ+ihjOaUv+e7tOW6piddLAogICAgICAvL+W3pui+uXRhYgogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIGN1cnJlbnREYXRhRGVsOiBbXSwKICAgICAgb3B0aW9uTGlzdDogW3sKICAgICAgICB0aXRsZTogJ+eUqOaIt+Wnk+WQjScsCiAgICAgICAgcHJvcDogJ3RtLm5hbWVfJywKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn6LSm5Y+35ZCNJywKICAgICAgICBwcm9wOiAnYWNjb3VudCcsCiAgICAgICAgdHlwZTogJ2lucHV0JywKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+eUteivnScsCiAgICAgICAgcHJvcDogJ3RtLnRlbF8nLAogICAgICAgIHR5cGU6ICdpbnB1dCcsCiAgICAgICAgZGVmYXVsdDogdHJ1ZQogICAgICB9XSwKICAgICAgcGFyYW1zOiB7CiAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgIHBhZ2VTaXplOiAyMCwKICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICB0b3RhbDogMAogICAgICAgIH0sCiAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgcHJvcGVydHk6ICdibS50ZWFtX2lkXycKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ2FjY291bnQnCiAgICAgICAgfSwgewogICAgICAgICAgZ3JvdXA6ICdxdWljaycsCiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHJlbGF0aW9uOiAnT1InLAogICAgICAgICAgcHJvcGVydHk6ICd0bS5uYW1lXycKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RtLnRlbF8nCiAgICAgICAgfV0sCiAgICAgICAgc29ydGVyOiBbXQogICAgICB9LAogICAgICB0cmVlRGlhbG9nOiBmYWxzZSwKICAgICAgLy8g56eR55uu5L+h5oGv5by55bGCCiAgICAgIHRyZWVJdGVtSWQ6ICcnLAogICAgICAvLyDmoJHlvaLnm67lvZVpZAogICAgICB0cmVlSXRlbToge30sCiAgICAgIC8vIOagkeW9ouiKgueCuemAieS4reWvueixoQogICAgICB0cmVlSXRlbVBhcmVudElkOiAnJywKICAgICAgLy8g5qCR5b2i55uu5b2V54i257qnaWQKICAgICAgcmVzY3VlUG9pbnRPcHRpb25zOiBbXSwKICAgICAgcm9hZE9wdGlvbnM6IFtdCiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAvLyDojrflj5bmoJHlvaLnm67lvZUtCiAgICB0aGlzLmdldE9yZ1RyZWVEYXRhKGZ1bmN0aW9uICh0cmVlRGF0YSkgewogICAgICAvLyDlm57osIPkuK3pu5jorqTpgInkuK3nrKzkuIDpobnlubblsIblhbZpZOS9nOS4uuWPguaVsOivt+axguihqOagvAogICAgICBfdGhpcy50cmVlSXRlbSA9IHRyZWVEYXRhWzBdIHx8IHt9OwogICAgICB2YXIgYXJyYXkgPSBbXTsKICAgICAgaWYgKF90aGlzLnRyZWVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICBhcnJheSA9IF90aGlzLmV4dHJhY3RJZHMoX3RoaXMudHJlZUl0ZW0pOwogICAgICB9CiAgICAgIF90aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGhpcyQkcmVmcyR0cmVlU2lkZSwgX3RyZWVEYXRhJCwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyOwogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoKF90cmVlRGF0YSQgPSB0cmVlRGF0YVswXSkgPT09IG51bGwgfHwgX3RyZWVEYXRhJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyZWVEYXRhJC5pZCk7IC8v6YCa6L+HICRyZWZzIOiOt+WPlnRyZWVTaWRl57uE5Lu25byV55So77yM5bm26LCD55SoIHNldEN1cnJlbnRLZXnmlrnms5Xorr7nva7lvZPliY3pgInkuK3nmoTmoJHoioLngrnjgIIKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgIH0pOwogICAgICBzZXRRdWVyeVZhbHVlKF90aGlzLnBhcmFtcywgJ2JtLnRlYW1faWRfJywgYXJyYXkpOyAvL+WwhumAieS4reeahOagkeiKgueCueeahCBwYXRoIOiuvue9ruS4uuafpeivouWPguaVsOeahOS4gOmDqOWIhu+8jOeUqOS6juWQjue7reeahOihqOagvOaVsOaNruivt+axguOAggogICAgICBfdGhpcy5sb2FkRGF0YSgpOyAvL+WKoOi9veihqOagvOaVsOaNrgogICAgfSk7CiAgICB0aGlzLmxvYWRSb2FkRGF0YSgpOwogICAgdGhpcy5sb2FkUmVzY3VlUG9pbnREYXRhKCk7CiAgICAvLyB0aGlzLmxvYWREYXRhKCkKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnVGFibGVQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKICAgICAgICBjYXNlICdhZGQnOgogICAgICAgICAgX3RoaXMyLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZWRpdCc6CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgLy8g6I635Y+W5YWs5Y+45qCRLeW8guatpeaWueazle+8jOeUqOS6juS7juWQjuerr+iOt+WPluagkeW9ouaVsOaNrgogICAgZ2V0T3JnVHJlZURhdGE6IGZ1bmN0aW9uIGdldE9yZ1RyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRnZXRUcmVlLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczQudHJlZUxvYWRpbmcgPSB0cnVlOyAvL+W8gOWni+WKoOi9veaXtuaYvuekuuWKoOi9veeKtuaAgQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBnZXRUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkZ2V0VHJlZSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkZ2V0VHJlZS52YWx1ZTsKICAgICAgICAgICAgICAvLyDosIPnlKggQVBJIOiOt+WPluagkeW9ouaVsOaNrgogICAgICAgICAgICAgIF90aGlzNC50cmVlRGF0YSA9IFtfdGhpczQudHJhbnNmb3JtVHJlZURhdGEodmFsdWUpXTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA3OwogICAgICAgICAgICAgIF90aGlzNC50cmVlTG9hZGluZyA9IGZhbHNlOyAvLyDml6DorrrmiJDlip/miJblpLHotKXvvIzpg73lhbPpl63liqDovb3nirbmgIEKICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczQudHJlZURhdGEpOyAvLyDlpoLmnpzmj5Dkvpvkuoblm57osIPlh73mlbDvvIzliJnosIPnlKjlroPlubbkvKDlhaXmoJHlvaLmlbDmja4KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDcpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1swLCwgNywgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGhhbmRsZUNhclNlbGVjdDogZnVuY3Rpb24gaGFuZGxlQ2FyU2VsZWN0KCkgewogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgdHJhbnNmb3JtVHJlZURhdGE6IGZ1bmN0aW9uIHRyYW5zZm9ybVRyZWVEYXRhKGRhdGEpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBuYW1lOiBkYXRhLm5hbWUgKyAnKCcgKyBkYXRhLm1lbWJlck51bSArICcpJywKICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICBjaGlsZHJlbjogZGF0YS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY2hpbGQpIHsKICAgICAgICAgIGFjYy5wdXNoKHsKICAgICAgICAgICAgaWQ6IGNoaWxkLmlkLAogICAgICAgICAgICBuYW1lOiBjaGlsZC5uYW1lICsgJygnICsgY2hpbGQubWVtYmVyTnVtICsgJyknLAogICAgICAgICAgICBwYXRoOiBjaGlsZC5wYXRoLAogICAgICAgICAgICBjaGlsZHJlbjogY2hpbGQudGVhbUxpc3QubWFwKGZ1bmN0aW9uIChncmlkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGlkOiBncmlkLmlkLAogICAgICAgICAgICAgICAgbmFtZTogZ3JpZC5uYW1lICsgJygnICsgZ3JpZC5tZW1iZXJOdW0gKyAnKScsCiAgICAgICAgICAgICAgICBwYXRoOiBncmlkLnBhdGgsCiAgICAgICAgICAgICAgICByb2FkSWQ6IGdyaWQucm9hZElkLAogICAgICAgICAgICAgICAgcm9hZE5hbWU6IGdyaWQucm9hZE5hbWUKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gYWNjOwogICAgICAgIH0sIFtdKQogICAgICB9OwogICAgICAvLyBsZXQgY29tYmluYXRpb24gPSBkYXRhCiAgICAgIC8vIGNvbWJpbmF0aW9uLm5hbWUgPSBkYXRhLm5hbWUgKyAnKCcgKyBkYXRhLm1lbWJlck51bSArICcpJwogICAgICAvLyBjb21iaW5hdGlvbi5jaGlsZHJlbiA9IGNvbWJpbmF0aW9uLm9yZ0xpc3QubWFwKGl0ZW0gPT4gKHsKICAgICAgLy8gICBpZDogaXRlbS5pZCwKICAgICAgLy8gICBuYW1lOiBpdGVtLm5hbWUgKyAnKCcgKyBpdGVtLm1lbWJlck51bSArICcpJywgLy8g5LiA57qn55uu5b2V55qEIGxhYmVsCiAgICAgIC8vICAgY2hpbGRyZW46IGl0ZW0udGVhbUxpc3QubWFwKGdyaWQgPT4gKHsKICAgICAgLy8gICAgIGlkOiBncmlkLmlkLAogICAgICAvLyAgICAgbmFtZTogZ3JpZC5uYW1lICsgJygnICsgZ3JpZC5tZW1iZXJOdW0gKyAnKScsIC8vIOS6jOe6p+ebruW9leeahCBsYWJlbAogICAgICAvLyAgICAgcGF0aDogZ3JpZC5wYXRoLAogICAgICAvLyAgICAgcm9hZElkOiBncmlkLnJvYWRJZCwKICAgICAgLy8gICAgIHJvYWROYW1lOiBncmlkLnJvYWROYW1lCiAgICAgIC8vICAgfSkpCiAgICAgIC8vIH0pKQogICAgICAvLyByZXR1cm4gW2NvbWJpbmF0aW9uXQogICAgfSwKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICAvLyDot6/mrrXkv6Hmga8KICAgIGxvYWRSb2FkRGF0YTogZnVuY3Rpb24gbG9hZFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJGxvYWRSb2FkLCBfeWllbGQkbG9hZFJvYWQkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gbG9hZFJvYWQoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJGxvYWRSb2FkID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGxvYWRSb2FkJHJvd3MgPSBfeWllbGQkbG9hZFJvYWQucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGxvYWRSb2FkJHJvd3MgPT09IHZvaWQgMCA/IHt9IDogX3lpZWxkJGxvYWRSb2FkJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM1LnJvYWRPcHRpb25zID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dDIudDApOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOaVkeaPtOeCueS/oeaBrwogICAgbG9hZFJlc2N1ZVBvaW50RGF0YTogZnVuY3Rpb24gbG9hZFJlc2N1ZVBvaW50RGF0YSgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIF95aWVsZCRyZXNjdWVQb2ludCwgX3lpZWxkJHJlc2N1ZVBvaW50JHJvLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiByZXNjdWVQb2ludCh7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEsCiAgICAgICAgICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkcmVzY3VlUG9pbnQgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcmVzY3VlUG9pbnQkcm8gPSBfeWllbGQkcmVzY3VlUG9pbnQucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHJlc2N1ZVBvaW50JHJvID09PSB2b2lkIDAgPyB7fSA6IF95aWVsZCRyZXNjdWVQb2ludCRybzsKICAgICAgICAgICAgICBfdGhpczYucmVzY3VlUG9pbnRPcHRpb25zID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dDMudDApOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v6I635Y+W56eR55uu5qCRCiAgICBnZXRUcmVlRGF0YTogZnVuY3Rpb24gZ2V0VHJlZURhdGEoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgnMycpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQxID0gewogICAgICAgICAgICAgICAgbmFtZTogJ+inhOeroOWItuW6picsCiAgICAgICAgICAgICAgICBlZGl0OiAxLAogICAgICAgICAgICAgICAgaWQ6ICcnLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6ICcnLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IF9jb250ZXh0NC50MAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX3RoaXM3LnRyZWVEYXRhID0gW19jb250ZXh0NC50MV07CiAgICAgICAgICAgICAgLy8g5L+d6K+B6YeN5paw5Yi35paw5qCR5pWw5o2u5ZCO77yM6YCJ5Lit5pWI5p6c5LiN5aSx5pWICiAgICAgICAgICAgICAgaWYgKF90aGlzNy50cmVlSXRlbS5pZCkgewogICAgICAgICAgICAgICAgX3RoaXM3LiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICB2YXIgX3RoaXM3JCRyZWZzJHRyZWVTaWRlOwogICAgICAgICAgICAgICAgICAoX3RoaXM3JCRyZWZzJHRyZWVTaWRlID0gX3RoaXM3LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczckJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpczckJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleShfdGhpczcudHJlZUl0ZW0uaWQpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNy50cmVlRGF0YSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v5bem6L655qCR6IqC54K5CiAgICBjdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBjdXJyZW50Q2hhbmdlKG5vZGVJdGVtKSB7CiAgICAgIGlmIChub2RlSXRlbS5pZCA9PT0gJzE3NjYwMTc0Njg0NDQ0NTA4MTYnKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnYm0udGVhbV9pZF8nLCB0aGlzLmV4dHJhY3RJZHMobm9kZUl0ZW0pKTsKICAgICAgfSBlbHNlIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdibS50ZWFtX2lkXycsIGFycmF5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnYm0udGVhbV9pZF8nLCBbbm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLmlkXSB8fCBbXSk7CiAgICAgIH0KCiAgICAgIC8vIGNvbnNvbGUubG9nKG5vZGVJdGVtLCAn5qCR6IqC54K554K55Ye7JykKICAgICAgLy8gLy8g5Yik5pat5piv5ZCm5piv5LiA57qn55uu5b2V77yI5pyJIGNoaWxkcmVuIOWxnuaAp++8iQogICAgICAvLyBpZiAobm9kZUl0ZW0uY2hpbGRyZW4gJiYgbm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAvLyAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWUgLy8g56aB55So5paw5aKe5oyJ6ZKuCiAgICAgIC8vICAgY29uc3QgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoaXRlbSA9PiBpdGVtLmlkKQogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdibS50ZWFtX2lkXycsIGFycmF5KQogICAgICAvLyAgIC8vIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup5LqM57qn55uu5b2V6L+b6KGM5paw5aKe5pON5L2cJykKICAgICAgLy8gfSBlbHNlIHsKICAgICAgLy8gICB0aGlzLmlzQWRkRGlzYWJsZWQgPSBmYWxzZSAvLyDlkK/nlKjmlrDlop7mjInpkq4KICAgICAgLy8gICAvLyDkv67mlLnlr7nlupTnmoTlrZfmrrXlgLwKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnYm0udGVhbV9pZF8nLCBbbm9kZUl0ZW0/LmlkXSB8fCBbXSkKICAgICAgLy8gfQogICAgICAvLwogICAgICAvLyAvLyDliKTmlq3lpoLmnpzngrnlh7vmmK8g5YWo6YOoIOm7mOiupOS8oOepuuaVsOe7hAogICAgICAvLyBpZiAobm9kZUl0ZW0ub3JnTGlzdCkgewogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdibS50ZWFtX2lkXycsIFtdKQogICAgICAvLyB9CgogICAgICAvLyDkv67mlLnlr7nlupTnmoTlrZfmrrXlgLwKICAgICAgLy8gc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ2NhdGFsb2dfZnVsbF9pZF8gJywgbm9kZUl0ZW0/LmlkIHx8ICcnKQogICAgICB0aGlzLnRyZWVJdGVtID0gbm9kZUl0ZW0gfHwge307CiAgICAgIHRoaXMuY2FsY1RhYmxlSGVpZ2h0KDUwMCk7CiAgICAgIFB1YlN1Yi5wdWJsaXNoKCdUcmVlSXRlbVNlbGVjdGVkJywgewogICAgICAgIGlkOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLmlkKSB8fCAnJywKICAgICAgICBuYW1lOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLm5hbWUpIHx8ICcnLAogICAgICAgIHBhdGg6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ucGF0aCkgfHwgJycsCiAgICAgICAgcm9hZElkOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLnJvYWRJZCkgfHwgJycgLy8g56Gu5L+d5qCR6IqC54K55pWw5o2u5YyF5ZCrIHJvYWRJZC8v546w5Zyo6L+Y5rKh5pyJCiAgICAgIH0pOwogICAgICB0aGlzLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIC8v6I635Y+W5pWw5o2uCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkdGFibGVEYXRhLCBfeWllbGQkdGFibGVEYXRhJHRvdGEsIHRvdGFsLCBfeWllbGQkdGFibGVEYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzOC50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEYXRhKHJlZmluZVJlcXVlc3RCb2R5KF90aGlzOC5wYXJhbXMpKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHRvdGEgPSBfeWllbGQkdGFibGVEYXRhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsID0gX3lpZWxkJHRhYmxlRGF0YSR0b3RhID09PSB2b2lkIDAgPyAwIDogX3lpZWxkJHRhYmxlRGF0YSR0b3RhOwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkcm93cyA9IF95aWVsZCR0YWJsZURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRhYmxlRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YWJsZURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczgucGFyYW1zLnBhZ2VCZWFuLnRvdGFsID0gdG90YWw7CiAgICAgICAgICAgICAgX3RoaXM4LnRhYmxlRGF0YSA9IHJvd3MubWFwKGZ1bmN0aW9uIChyb3cpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgICAgICAgICAgIHJvYWROYW1lOiByb3cucm9hZE5hbWUgfHwgX3RoaXM4LnRyZWVJdGVtLm5hbWUgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczgudGFibGVEYXRhLCAn5pWw5o2uJyk7CiAgICAgICAgICAgICAgX3RoaXM4LnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5qCR6IqC54K55pON5L2cCiAgICBvcGVyYXRlRXZlbnQ6IGZ1bmN0aW9uIG9wZXJhdGVFdmVudCh0eXBlLCBkYXRhKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICfmlrDlop4nOgogICAgICAgICAgdGhpcy50cmVlSXRlbVBhcmVudElkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZURpYWxvZyA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICfnvJbovpEnOgogICAgICAgICAgdGhpcy50cmVlSXRlbUlkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZUl0ZW1QYXJlbnRJZCA9IGRhdGEucGFyZW50SWQ7CiAgICAgICAgICB0aGlzLnRyZWVEaWFsb2cgPSB0cnVlOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn5Yig6ZmkJzoKICAgICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOmAieS4rei9pui+huWQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KCkgewogICAgICAgICAgICB2YXIgX3lpZWxkJHRyZWVEZWxldGUsIHN0YXRlOwogICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZURlbGV0ZShkYXRhLmlkKTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3lpZWxkJHRyZWVEZWxldGUgPSBfY29udGV4dDYuc2VudDsKICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdHJlZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NTIyMFx1OTY2NFx1OEY2Nlx1OEY4Nlx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5lcnJvcigiXHU1MjIwXHU5NjY0XHU4RjY2XHU4Rjg2XHU1OTMxXHU4RDI1Iik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM5LmdldFRyZWVEYXRhKCk7CiAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgcmV0dXJuIF87CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgLy8g55uu5b2V5pS55Y+YCiAgICBjYXRhbG9nQ2hhbmdlOiBmdW5jdGlvbiBjYXRhbG9nQ2hhbmdlKGRpYWxvZ05hbWUpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB0aGlzLmdldFRyZWVEYXRhKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTBbZGlhbG9nTmFtZV0gPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5bGV56S65by55bGCCiAgICBzaG93RGlhbG9nOiBmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZ05hbWUpIHsKICAgICAgaWYgKCFkaWFsb2dOYW1lKSByZXR1cm47CiAgICAgIGlmIChkaWFsb2dOYW1lID09PSAndXNlckNob2ljZScpIHsKICAgICAgICBpZiAoIXRoaXMuYWRkRWRpdEZvcm0udGVhbUlkKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7flhYjpgInmi6nmlZHmj7TmtL7pgaPpmJ/kvI0nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5bCGIHRyZWVJdGVtIOeahCByb2FkSWQg5Lyg6YCS57uZIENhckNob2ljZURpYWxvZwogICAgICAgIHRoaXMuY2FyRGF0YSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy50cmVlSXRlbSksIHt9LCB7CiAgICAgICAgICByb2FkSWQ6IHRoaXMudHJlZUl0ZW0ucm9hZElkIHx8ICcnCiAgICAgICAgfSk7CiAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIC8vIOWIoOmZpAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6K+l5Lq65ZGY5LiO6Zif5LyN55qE57uR5a6a5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBtZXNzYWdlLCBfdGhpczExJHBhcmFtcyRwYWdlQmUsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXMxMS5jdXJyZW50RGF0YURlbC5qb2luKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShpZHMpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGVsZXRlID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVEZWxldGUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5zdWNjZXNzKCJcdTUyMjBcdTk2NjRcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICBfdGhpczExJHBhcmFtcyRwYWdlQmUgPSBfdGhpczExLnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzMTEkcGFyYW1zJHBhZ2VCZS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzMTEkcGFyYW1zJHBhZ2VCZS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczExJHBhcmFtcyRwYWdlQmUudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczExLnRhYmxlRGF0YS5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN6aG15Y+q5pyJ5LiA5p2h5pWw5o2uCiAgICAgICAgICAgICAgICAgIF90aGlzMTEucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgLT0gMTsgLy8g6L+U5Zue5YmN5LiA6aG1CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMTEubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE2OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF90aGlzMTEuJG1lc3NhZ2UuZXJyb3IobWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF87CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L+u5pS5CiAgICBoYW5kbGVEYkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVEYkNsaWNrKHJvdykgewogICAgICBpZiAodGhpcy5jbGlja1RpbWVyKSByZXR1cm4gdGhpcy5jbGlja1RpbWVyID0gZmFsc2U7CiAgICAgIC8vIOehruS/nSByb3cg5Lit5YyF5ZCrIG9yZ05hbWUKICAgICAgdmFyIHBheWxvYWQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCB0aGlzLnRyZWVJdGVtLm5hbWUgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgIH0pOwogICAgICB0aGlzLmNoYW5nZVBhZ2UoJ0VkaXRBZGRQYWdlJywgcGF5bG9hZCk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgcm93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB2YXIgcGF5bG9hZCA9IHJvdy5pZCA/IHJvdyA6IHsKICAgICAgICBjYXRhbG9nSWQ6IHRoaXMudHJlZUl0ZW0uaWQsCiAgICAgICAgcm9hZE5hbWU6IHRoaXMudHJlZUl0ZW0ubmFtZSwKICAgICAgICBwYXRoOiB0aGlzLnRyZWVJdGVtLnBhdGgsCiAgICAgICAgY2xlYXJGb3JtOiB0cnVlIC8vIOa4heepuuihqOWNleagh+W/lwogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHBheWxvYWQpOwogICAgICB9LCByb3cuaWQgPyAn57yW6L6RJyA6ICfmt7vliqAnKTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}