appium-android-driver 5.0.12 → 5.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +1 -1
- package/build/lib/android-helpers.js +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/app-management.js +24 -11
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/lib/commands/app-management.js +35 -15
- package/package.json +3 -3
|
@@ -420,4 +420,4 @@ var _default = commands;
|
|
|
420
420
|
exports.default = _default;require('source-map-support').install();
|
|
421
421
|
|
|
422
422
|
|
|
423
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3N0cmVhbXNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVDT1JESU5HX0lOVEVSVkFMX1NFQyIsIlNUUkVBTUlOR19TVEFSVFVQX1RJTUVPVVRfTVMiLCJHU1RSRUFNRVJfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiR1NUX0lOU1BFQ1RfQklOQVJZIiwiUkVRVUlSRURfR1NUX1BMVUdJTlMiLCJhdmRlY19oMjY0IiwiaDI2NHBhcnNlIiwianBlZ2VuYyIsInRjcHNlcnZlcnNpbmsiLCJtdWx0aXBhcnRtdXgiLCJTQ1JFRU5SRUNPUkRfQklOQVJZIiwiR1NUX1RVVE9SSUFMX1VSTCIsIkRFRkFVTFRfSE9TVCIsIlRDUF9IT1NUIiwiREVGQVVMVF9QT1JUIiwiREVGQVVMVF9RVUFMSVRZIiwiREVGQVVMVF9CSVRSQVRFIiwiQk9VTkRBUllfU1RSSU5HIiwiQURCX1NDUkVFTl9TVFJFQU1JTkdfRkVBVFVSRSIsImNyZWF0ZVN0cmVhbWluZ0xvZ2dlciIsInN0cmVhbU5hbWUiLCJ1ZGlkIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiXyIsInRydW5jYXRlIiwibGVuZ3RoIiwib21pc3Npb24iLCJ2ZXJpZnlTdHJlYW1pbmdSZXF1aXJlbWVudHMiLCJhZGIiLCJ0cmltIiwic2hlbGwiLCJFcnJvciIsImdzdHJlYW1lckNoZWNrUHJvbWlzZXMiLCJiaW5hcnlOYW1lIiwicHVzaCIsImZzIiwid2hpY2giLCJlIiwiQiIsImFsbCIsIm1vZHVsZUNoZWNrUHJvbWlzZXMiLCJuYW1lIiwibW9kTmFtZSIsInRvUGFpcnMiLCJzdGRvdXQiLCJpbmNsdWRlcyIsImdldERldmljZUluZm8iLCJsb2ciLCJvdXRwdXQiLCJyZXN1bHQiLCJrZXkiLCJwYXR0ZXJuIiwibWF0Y2giLCJleGVjIiwiZGVidWciLCJwYXJzZUludCIsImN1ckRldmljZUlkIiwiaW5pdERldmljZVN0cmVhbWluZ1Byb2MiLCJkZXZpY2VJbmZvIiwib3B0cyIsIndpZHRoIiwiaGVpZ2h0IiwiYml0UmF0ZSIsImFkanVzdGVkV2lkdGgiLCJhZGp1c3RlZEhlaWdodCIsImFkanVzdGVkQml0cmF0ZSIsInNjcmVlblJlY29yZENtZCIsImFkYkFyZ3MiLCJleGVjdXRhYmxlIiwiZGVmYXVsdEFyZ3MiLCJkZXZpY2VTdHJlYW1pbmciLCJwYXRoIiwib24iLCJjb2RlIiwic2lnbmFsIiwiaXNTdGFydGVkIiwiZGV2aWNlU3RyZWFtaW5nTG9nZ2VyIiwiZXJyb3JzTGlzdGVuZXIiLCJjaHVuayIsInN0ZGVyciIsInRvU3RyaW5nIiwic3RhcnR1cExpc3RlbmVyIiwiaXNFbXB0eSIsImluZm8iLCJ1dGlsIiwicXVvdGUiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiLCJyZW1vdmVMaXN0ZW5lciIsImluaXRHc3RyZWFtZXJQaXBlbGluZSIsImRldmljZVN0cmVhbWluZ1Byb2MiLCJxdWFsaXR5IiwidGNwUG9ydCIsImNvbnNpZGVyUm90YXRpb24iLCJsb2dQaXBlbGluZURldGFpbHMiLCJnc3RyZWFtZXJQaXBlbGluZSIsIlN1YlByb2Nlc3MiLCJNYXRoIiwibWF4IiwiZnBzIiwic3RkaW8iLCJnc3RyZWFtZXJMb2dnZXIiLCJnc3RPdXRwdXRMaXN0ZW5lciIsImRpZEZhaWwiLCJyZXAiLCJzdGFydCIsImlnbiIsImV4dHJhY3RSZW1vdGVBZGRyZXNzIiwicmVxIiwiaGVhZGVycyIsInNvY2tldCIsInJlbW90ZUFkZHJlc3MiLCJjb25uZWN0aW9uIiwibW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmciLCJvcHRpb25zIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJob3N0IiwicG9ydCIsInBhdGhuYW1lIiwiaXNVbmRlZmluZWQiLCJfc2NyZWVuU3RyZWFtaW5nUHJvcHMiLCJraWxsIiwibWpwZWdTb2NrZXQiLCJtanBlZ1NlcnZlciIsInJlc29sdmUiLCJyZWplY3QiLCJuZXQiLCJjcmVhdGVDb25uZWN0aW9uIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsInJlcyIsImN1cnJlbnRQYXRobmFtZSIsInVybCIsInBhcnNlIiwid3JpdGVIZWFkIiwiQ29ubmVjdGlvbiIsIndyaXRlIiwiZW5kIiwiUHJhZ21hIiwicGlwZSIsIndhcm4iLCJsaXN0ZW4iLCJlcnJvciIsInRpbWVvdXQiLCJpc1J1bm5pbmciLCJzdG9wIiwiZGVzdHJveSIsImxpc3RlbmluZyIsImNsb3NlIiwibW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyIsImUxIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3N0cmVhbXNjcmVlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHN5c3RlbSwgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMsIFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgUkVDT1JESU5HX0lOVEVSVkFMX1NFQyA9IDU7XG5jb25zdCBTVFJFQU1JTkdfU1RBUlRVUF9USU1FT1VUX01TID0gNTAwMDtcbmNvbnN0IEdTVFJFQU1FUl9CSU5BUlkgPSBgZ3N0LWxhdW5jaC0xLjAke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHU1RfSU5TUEVDVF9CSU5BUlkgPSBgZ3N0LWluc3BlY3QtMS4wJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgUkVRVUlSRURfR1NUX1BMVUdJTlMgPSB7XG4gIGF2ZGVjX2gyNjQ6ICdnc3QtbGliYXYnLFxuICBoMjY0cGFyc2U6ICdnc3QtcGx1Z2lucy1iYWQnLFxuICBqcGVnZW5jOiAnZ3N0LXBsdWdpbnMtZ29vZCcsXG4gIHRjcHNlcnZlcnNpbms6ICdnc3QtcGx1Z2lucy1iYXNlJyxcbiAgbXVsdGlwYXJ0bXV4OiAnZ3N0LXBsdWdpbnMtZ29vZCcsXG59O1xuY29uc3QgU0NSRUVOUkVDT1JEX0JJTkFSWSA9ICdzY3JlZW5yZWNvcmQnO1xuY29uc3QgR1NUX1RVVE9SSUFMX1VSTCA9ICdodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nL2luZGV4Lmh0bWwnO1xuY29uc3QgREVGQVVMVF9IT1NUID0gJzEyNy4wLjAuMSc7XG5jb25zdCBUQ1BfSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gODA5MztcbmNvbnN0IERFRkFVTFRfUVVBTElUWSA9IDcwO1xuY29uc3QgREVGQVVMVF9CSVRSQVRFID0gNDAwMDAwMDsgLy8gNCBNYnBzXG5jb25zdCBCT1VOREFSWV9TVFJJTkcgPSAnLS0yYWU5NzQ2ODg3ZjE3MGI4Y2Y3YzI3MTA0N2NlMzE0Yyc7XG5cbmNvbnN0IEFEQl9TQ1JFRU5fU1RSRUFNSU5HX0ZFQVRVUkUgPSAnYWRiX3NjcmVlbl9zdHJlYW1pbmcnO1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJlYW1pbmdMb2dnZXIgKHN0cmVhbU5hbWUsIHVkaWQpIHtcbiAgcmV0dXJuIGxvZ2dlci5nZXRMb2dnZXIoYCR7c3RyZWFtTmFtZX1AYCArIF8udHJ1bmNhdGUodWRpZCwge1xuICAgIGxlbmd0aDogOCxcbiAgICBvbWlzc2lvbjogJycsXG4gIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U3RyZWFtaW5nUmVxdWlyZW1lbnRzIChhZGIpIHtcbiAgaWYgKCFfLnRyaW0oYXdhaXQgYWRiLnNoZWxsKFsnd2hpY2gnLCBTQ1JFRU5SRUNPUkRfQklOQVJZXSkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSByZXF1aXJlZCAnJHtTQ1JFRU5SRUNPUkRfQklOQVJZfScgYmluYXJ5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0YCk7XG4gIH1cblxuICBjb25zdCBnc3RyZWFtZXJDaGVja1Byb21pc2VzID0gW107XG4gIGZvciAoY29uc3QgYmluYXJ5TmFtZSBvZiBbR1NUUkVBTUVSX0JJTkFSWSwgR1NUX0lOU1BFQ1RfQklOQVJZXSkge1xuICAgIGdzdHJlYW1lckNoZWNrUHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud2hpY2goYmluYXJ5TmFtZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICcke2JpbmFyeU5hbWV9JyBiaW5hcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgUEFUSCBvbiB0aGUgaG9zdCBzeXN0ZW0uIGAgK1xuICAgICAgICAgIGBTZWUgJHtHU1RfVFVUT1JJQUxfVVJMfSBmb3IgbW9yZSBkZXRhaWxzIG9uIGhvdyB0byBpbnN0YWxsIGl0LmApO1xuICAgICAgfVxuICAgIH0pKCkpO1xuICB9XG4gIGF3YWl0IEIuYWxsKGdzdHJlYW1lckNoZWNrUHJvbWlzZXMpO1xuXG4gIGNvbnN0IG1vZHVsZUNoZWNrUHJvbWlzZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgbW9kTmFtZV0gb2YgXy50b1BhaXJzKFJFUVVJUkVEX0dTVF9QTFVHSU5TKSkge1xuICAgIG1vZHVsZUNoZWNrUHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdTVF9JTlNQRUNUX0JJTkFSWSwgW25hbWVdKTtcbiAgICAgIGlmICghXy5pbmNsdWRlcyhzdGRvdXQsIG1vZE5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIHJlcXVpcmVkIEdTdHJlYW1lciBwbHVnaW4gJyR7bmFtZX0nIGZyb20gJyR7bW9kTmFtZX0nIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgU2VlICR7R1NUX1RVVE9SSUFMX1VSTH0gZm9yIG1vcmUgZGV0YWlscyBvbiBob3cgdG8gaW5zdGFsbCBpdC5gKTtcbiAgICAgIH1cbiAgICB9KSgpKTtcbiAgfVxuICBhd2FpdCBCLmFsbChtb2R1bGVDaGVja1Byb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlSW5mbyAoYWRiLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnZGlzcGxheSddKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgcGF0dGVybl0gb2YgW1xuICAgIFsnd2lkdGgnLCAvXFxiZGV2aWNlV2lkdGg9KFxcZCspL10sXG4gICAgWydoZWlnaHQnLCAvXFxiZGV2aWNlSGVpZ2h0PShcXGQrKS9dLFxuICAgIFsnZnBzJywgL1xcYmZwcz0oXFxkKykvXSxcbiAgXSkge1xuICAgIGNvbnN0IG1hdGNoID0gcGF0dGVybi5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgbG9nPy5kZWJ1ZyhvdXRwdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGRldmljZSAke2tleX0gZnJvbSB0aGUgYWRiIGNvbW1hbmQgb3V0cHV0LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMuYCk7XG4gICAgfVxuICAgIHJlc3VsdFtrZXldID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgfVxuICByZXN1bHQudWRpZCA9IGFkYi5jdXJEZXZpY2VJZDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdERldmljZVN0cmVhbWluZ1Byb2MgKGFkYiwgbG9nLCBkZXZpY2VJbmZvLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBiaXRSYXRlLFxuICB9ID0gb3B0cztcbiAgY29uc3QgYWRqdXN0ZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCkgfHwgZGV2aWNlSW5mby53aWR0aDtcbiAgY29uc3QgYWRqdXN0ZWRIZWlnaHQgPSBwYXJzZUludChoZWlnaHQsIDEwKSB8fCBkZXZpY2VJbmZvLmhlaWdodDtcbiAgY29uc3QgYWRqdXN0ZWRCaXRyYXRlID0gcGFyc2VJbnQoYml0UmF0ZSwgMTApIHx8IERFRkFVTFRfQklUUkFURTtcbiAgbGV0IHNjcmVlblJlY29yZENtZCA9IFNDUkVFTlJFQ09SRF9CSU5BUlkgK1xuICAgIGAgLS1vdXRwdXQtZm9ybWF0PWgyNjRgICtcbiAgICAvLyA1IHNlY29uZHMgaXMgZmluZSB0byBkZXRlY3Qgcm90YXRpb24gY2hhbmdlc1xuICAgIGAgLS10aW1lLWxpbWl0PSR7UkVDT1JESU5HX0lOVEVSVkFMX1NFQ31gO1xuICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7XG4gICAgc2NyZWVuUmVjb3JkQ21kICs9IGAgLS1zaXplPSR7YWRqdXN0ZWRXaWR0aH14JHthZGp1c3RlZEhlaWdodH1gO1xuICB9XG4gIGlmIChiaXRSYXRlKSB7XG4gICAgc2NyZWVuUmVjb3JkQ21kICs9IGAgLS1iaXQtcmF0ZT0ke2FkanVzdGVkQml0cmF0ZX1gO1xuICB9XG4gIGNvbnN0IGFkYkFyZ3MgPSBbXG4gICAgLi4uYWRiLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MsXG4gICAgJ2V4ZWMtb3V0JyxcbiAgICAvLyBUaGUgbG9vcCBpcyByZXF1aXJlZCwgYmVjYXVzZSBieSBkZWZhdWx0IHRoZSBtYXhpbXVtIHJlY29yZCBkdXJhdGlvblxuICAgIC8vIGZvciBzY3JlZW5yZWNvcmQgaXMgYWx3YXlzIGxpbWl0ZWRcbiAgICBgd2hpbGUgdHJ1ZTsgZG8gJHtzY3JlZW5SZWNvcmRDbWR9IC07IGRvbmVgLFxuICBdO1xuICBjb25zdCBkZXZpY2VTdHJlYW1pbmcgPSBzcGF3bihhZGIuZXhlY3V0YWJsZS5wYXRoLCBhZGJBcmdzKTtcbiAgZGV2aWNlU3RyZWFtaW5nLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgIGxvZy5kZWJ1ZyhgRGV2aWNlIHN0cmVhbWluZyBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICB9KTtcblxuICBsZXQgaXNTdGFydGVkID0gZmFsc2U7XG4gIGNvbnN0IGRldmljZVN0cmVhbWluZ0xvZ2dlciA9IGNyZWF0ZVN0cmVhbWluZ0xvZ2dlcihTQ1JFRU5SRUNPUkRfQklOQVJZLCBkZXZpY2VJbmZvLnVkaWQpO1xuICBjb25zdCBlcnJvcnNMaXN0ZW5lciA9IChjaHVuaykgPT4ge1xuICAgIGNvbnN0IHN0ZGVyciA9IGNodW5rLnRvU3RyaW5nKCk7XG4gICAgaWYgKF8udHJpbShzdGRlcnIpKSB7XG4gICAgICBkZXZpY2VTdHJlYW1pbmdMb2dnZXIuZGVidWcoc3RkZXJyKTtcbiAgICB9XG4gIH07XG4gIGRldmljZVN0cmVhbWluZy5zdGRlcnIub24oJ2RhdGEnLCBlcnJvcnNMaXN0ZW5lcik7XG5cbiAgY29uc3Qgc3RhcnR1cExpc3RlbmVyID0gKGNodW5rKSA9PiB7XG4gICAgaWYgKCFpc1N0YXJ0ZWQpIHtcbiAgICAgIGlzU3RhcnRlZCA9ICFfLmlzRW1wdHkoY2h1bmspO1xuICAgIH1cbiAgfTtcbiAgZGV2aWNlU3RyZWFtaW5nLnN0ZG91dC5vbignZGF0YScsIHN0YXJ0dXBMaXN0ZW5lcik7XG5cbiAgdHJ5IHtcbiAgICBsb2cuaW5mbyhgU3RhcnRpbmcgZGV2aWNlIHN0cmVhbWluZzogJHt1dGlsLnF1b3RlKFthZGIuZXhlY3V0YWJsZS5wYXRoLCAuLi5hZGJBcmdzXSl9YCk7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiBpc1N0YXJ0ZWQsIHtcbiAgICAgIHdhaXRNczogU1RSRUFNSU5HX1NUQVJUVVBfVElNRU9VVF9NUyxcbiAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KFxuICAgICAgYENhbm5vdCBzdGFydCB0aGUgc2NyZWVuIHN0cmVhbWluZyBwcm9jZXNzLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgZGV2aWNlU3RyZWFtaW5nLnN0ZGVyci5yZW1vdmVMaXN0ZW5lcignZGF0YScsIGVycm9yc0xpc3RlbmVyKTtcbiAgICBkZXZpY2VTdHJlYW1pbmcuc3Rkb3V0LnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgc3RhcnR1cExpc3RlbmVyKTtcbiAgfVxuICByZXR1cm4gZGV2aWNlU3RyZWFtaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbml0R3N0cmVhbWVyUGlwZWxpbmUgKGRldmljZVN0cmVhbWluZ1Byb2MsIGRldmljZUluZm8sIGxvZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgcXVhbGl0eSxcbiAgICB0Y3BQb3J0LFxuICAgIGNvbnNpZGVyUm90YXRpb24sXG4gICAgbG9nUGlwZWxpbmVEZXRhaWxzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgYWRqdXN0ZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCkgfHwgZGV2aWNlSW5mby53aWR0aDtcbiAgY29uc3QgYWRqdXN0ZWRIZWlnaHQgPSBwYXJzZUludChoZWlnaHQsIDEwKSB8fCBkZXZpY2VJbmZvLmhlaWdodDtcbiAgY29uc3QgZ3N0cmVhbWVyUGlwZWxpbmUgPSBuZXcgU3ViUHJvY2VzcyhHU1RSRUFNRVJfQklOQVJZLCBbXG4gICAgJy12JyxcbiAgICAnZmRzcmMnLCAnZmQ9MCcsXG4gICAgJyEnLCAndmlkZW8veC1oMjY0LCcgK1xuICAgICAgYHdpZHRoPSR7Y29uc2lkZXJSb3RhdGlvbiA/IE1hdGgubWF4KGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSA6IGFkanVzdGVkV2lkdGh9LGAgK1xuICAgICAgYGhlaWdodD0ke2NvbnNpZGVyUm90YXRpb24gPyBNYXRoLm1heChhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkgOiBhZGp1c3RlZEhlaWdodH0sYCArXG4gICAgICBgZnJhbWVyYXRlPSR7ZGV2aWNlSW5mby5mcHN9LzEsYCArXG4gICAgICAnYnl0ZS1zdHJlYW09dHJ1ZScsXG4gICAgJyEnLCAnaDI2NHBhcnNlJyxcbiAgICAnIScsICdxdWV1ZScsICdsZWFreT1kb3duc3RyZWFtJyxcbiAgICAnIScsICdhdmRlY19oMjY0JyxcbiAgICAnIScsICdxdWV1ZScsICdsZWFreT1kb3duc3RyZWFtJyxcbiAgICAnIScsICdqcGVnZW5jJywgYHF1YWxpdHk9JHtxdWFsaXR5fWAsXG4gICAgJyEnLCAnbXVsdGlwYXJ0bXV4JywgYGJvdW5kYXJ5PSR7Qk9VTkRBUllfU1RSSU5HfWAsXG4gICAgJyEnLCAndGNwc2VydmVyc2luaycsIGBob3N0PSR7VENQX0hPU1R9YCwgYHBvcnQ9JHt0Y3BQb3J0fWAsXG4gIF0sIHtcbiAgICBzdGRpbzogW2RldmljZVN0cmVhbWluZ1Byb2Muc3Rkb3V0LCAncGlwZScsICdwaXBlJ11cbiAgfSk7XG4gIGdzdHJlYW1lclBpcGVsaW5lLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgIGxvZy5kZWJ1ZyhgUGlwZWxpbmUgc3RyZWFtaW5nIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gIH0pO1xuICBjb25zdCBnc3RyZWFtZXJMb2dnZXIgPSBjcmVhdGVTdHJlYW1pbmdMb2dnZXIoJ2dzdCcsIGRldmljZUluZm8udWRpZCk7XG4gIGNvbnN0IGdzdE91dHB1dExpc3RlbmVyID0gKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgaWYgKF8udHJpbShzdGRlcnIgfHwgc3Rkb3V0KSkge1xuICAgICAgZ3N0cmVhbWVyTG9nZ2VyLmRlYnVnKHN0ZGVyciB8fCBzdGRvdXQpO1xuICAgIH1cbiAgfTtcbiAgZ3N0cmVhbWVyUGlwZWxpbmUub24oJ291dHB1dCcsIGdzdE91dHB1dExpc3RlbmVyKTtcbiAgbGV0IGRpZEZhaWwgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBsb2cuaW5mbyhgU3RhcnRpbmcgR1N0cmVhbWVyIHBpcGVsaW5lOiAke2dzdHJlYW1lclBpcGVsaW5lLnJlcH1gKTtcbiAgICBhd2FpdCBnc3RyZWFtZXJQaXBlbGluZS5zdGFydCgwKTtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKHRjcFBvcnQsIFRDUF9IT1NUKSkgPT09ICdvcGVuJztcbiAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgd2FpdE1zOiBTVFJFQU1JTkdfU1RBUlRVUF9USU1FT1VUX01TLFxuICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGlkRmFpbCA9IHRydWU7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coXG4gICAgICBgQ2Fubm90IHN0YXJ0IHRoZSBzY3JlZW4gc3RyZWFtaW5nIHBpcGVsaW5lLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKCFsb2dQaXBlbGluZURldGFpbHMgfHwgZGlkRmFpbCkge1xuICAgICAgZ3N0cmVhbWVyUGlwZWxpbmUucmVtb3ZlTGlzdGVuZXIoJ291dHB1dCcsIGdzdE91dHB1dExpc3RlbmVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdzdHJlYW1lclBpcGVsaW5lO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0UmVtb3RlQWRkcmVzcyAocmVxKSB7XG4gIHJldHVybiByZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ11cbiAgICB8fCByZXEuc29ja2V0LnJlbW90ZUFkZHJlc3NcbiAgICB8fCByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzXG4gICAgfHwgcmVxLmNvbm5lY3Rpb24uc29ja2V0LnJlbW90ZUFkZHJlc3M7XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFNjcmVlblN0cmVhbWluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHNjYWxlZCB3aWR0aCBvZiB0aGUgZGV2aWNlJ3Mgc2NyZWVuLiBJZiB1bnNldCB0aGVuIHRoZSBzY3JpcHQgd2lsbCBhc3NpZ24gaXRcbiAqIHRvIHRoZSBhY3R1YWwgc2NyZWVuIHdpZHRoIG1lYXN1cmVkIGluIHBpeGVscy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gaGVpZ2h0IC0gVGhlIHNjYWxlZCBoZWlnaHQgb2YgdGhlIGRldmljZSdzIHNjcmVlbi4gSWYgdW5zZXQgdGhlbiB0aGUgc2NyaXB0IHdpbGwgYXNzaWduIGl0XG4gKiB0byB0aGUgYWN0dWFsIHNjcmVlbiBoZWlnaHQgbWVhc3VyZWQgaW4gcGl4ZWxzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBiaXRSYXRlIC0gVGhlIHZpZGVvIGJpdCByYXRlIGZvciB0aGUgdmlkZW8sIGluIGJpdHMgcGVyIHNlY29uZC5cbiAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwMDAwMDAgKDQgTWIvcykuIFlvdSBjYW4gaW5jcmVhc2UgdGhlIGJpdCByYXRlIHRvIGltcHJvdmUgdmlkZW8gcXVhbGl0eSxcbiAqIGJ1dCBkb2luZyBzbyByZXN1bHRzIGluIGxhcmdlciBtb3ZpZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaG9zdCBbMTI3LjAuMC4xXSAtIFRoZSBJUCBhZGRyZXNzL2hvc3QgbmFtZSB0byBzdGFydCB0aGUgTUpQRUcgc2VydmVyIG9uLlxuICogWW91IGNhbiBzZXQgaXQgdG8gYDAuMC4wLjBgIHRvIHRyaWdnZXIgdGhlIGJyb2FkY2FzdCBvbiBhbGwgYXZhaWxhYmxlIG5ldHdvcmsgaW50ZXJmYWNlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGF0aG5hbWUgLSBUaGUgSFRUUCByZXF1ZXN0IHBhdGggdGhlIE1KUEVHIHNlcnZlciBzaG91bGQgYmUgYXZhaWxhYmxlIG9uLlxuICogSWYgdW5zZXQgdGhlbiBhbnkgcGF0aG5hbWUgb24gdGhlIGdpdmVuIGBob3N0YC9gcG9ydGAgY29tYmluYXRpb24gd2lsbCB3b3JrLiBOb3RlIHRoYXQgdGhlIHZhbHVlXG4gKiBzaG91bGQgYWx3YXlzIHN0YXJ0IHdpdGggYSBzaW5nbGUgc2xhc2g6IGAvYFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB0Y3BQb3J0IFs4MDk0XSAtIFRoZSBwb3J0IG51bWJlciB0byBzdGFydCB0aGUgaW50ZXJuYWwgVENQIE1KUEVHIGJyb2FkY2FzdCBvbi5cbiAqIFRoaXMgdHlwZSBvZiBicm9hZGNhc3QgYWx3YXlzIHN0YXJ0cyBvbiB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlIChgMTI3LjAuMC4xYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHBvcnQgWzgwOTNdIC0gVGhlIHBvcnQgbnVtYmVyIHRvIHN0YXJ0IHRoZSBNSlBFRyBzZXJ2ZXIgb24uXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHF1YWxpdHkgWzcwXSAtIFRoZSBxdWFsaXR5IHZhbHVlIGZvciB0aGUgc3RyZWFtZWQgSlBFRyBpbWFnZXMuXG4gKiBUaGlzIG51bWJlciBzaG91bGQgYmUgaW4gcmFuZ2UgWzEsIDEwMF0sIHdoZXJlIDEwMCBpcyB0aGUgYmVzdCBxdWFsaXR5LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gY29uc2lkZXJSb3RhdGlvbiBbZmFsc2VdIC0gSWYgc2V0IHRvIGB0cnVlYCB0aGVuIEdTdHJlYW1lciBwaXBlbGluZSB3aWxsXG4gKiBpbmNyZWFzZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcmVzdWx0aW5nIGltYWdlcyB0byBwcm9wZXJseSBmaXQgaW1hZ2VzIGluIGJvdGggbGFuZHNjYXBlIGFuZFxuICogcG9ydHJhaXQgb3JpZW50YXRpb25zLiBTZXQgaXQgdG8gYHRydWVgIGlmIHRoZSBkZXZpY2Ugcm90YXRpb24gaXMgbm90IGdvaW5nIHRvIGJlIHRoZSBzYW1lIGR1cmluZyB0aGVcbiAqIGJyb2FkY2FzdGluZyBzZXNzaW9uLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gbG9nUGlwZWxpbmVEZXRhaWxzIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBHU3RyZWFtZXIgcGlwZWxpbmUgZXZlbnRzIGludG9cbiAqIHRoZSBzdGFuZGFyZCBsb2cgb3V0cHV0LiBNaWdodCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiAqL1xuXG4vKipcbiAqIFN0YXJ0cyBkZXZpY2Ugc2NyZWVuIGJyb2FkY2FzdCBieSBjcmVhdGluZyBNSlBFRyBzZXJ2ZXIuXG4gKiBNdWx0aXBsZSBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIG5vIGVmZmVjdCB1bmxlc3MgdGhlIHByZXZpb3VzIHN0cmVhbWluZ1xuICogc2Vzc2lvbiBpcyBzdG9wcGVkLlxuICogVGhpcyBtZXRob2Qgb25seSB3b3JrcyBpZiB0aGUgYGFkYl9zY3JlZW5fc3RyZWFtaW5nYCBmZWF0dXJlIGlzXG4gKiBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgc2lkZS5cbiAqXG4gKiBAcGFyYW0gez9TdGFydFNjcmVlblN0cmVhbWluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2NyZWVuIHN0cmVhbWluZyBoYXMgZmFpbGVkIHRvIHN0YXJ0IG9yXG4gKiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBob3N0IHN5c3RlbSBvclxuICogdGhlIGNvcnJlc3BvbmRpbmcgc2VydmVyIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0YXJ0U2NyZWVuU3RyZWFtaW5nID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcgKG9wdGlvbnMgPSB7fSkge1xuICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKEFEQl9TQ1JFRU5fU1RSRUFNSU5HX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYml0UmF0ZSxcbiAgICBob3N0ID0gREVGQVVMVF9IT1NULFxuICAgIHBvcnQgPSBERUZBVUxUX1BPUlQsXG4gICAgcGF0aG5hbWUsXG4gICAgdGNwUG9ydCA9IERFRkFVTFRfUE9SVCArIDEsXG4gICAgcXVhbGl0eSA9IERFRkFVTFRfUVVBTElUWSxcbiAgICBjb25zaWRlclJvdGF0aW9uID0gZmFsc2UsXG4gICAgbG9nUGlwZWxpbmVEZXRhaWxzID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzKSkge1xuICAgIGF3YWl0IHZlcmlmeVN0cmVhbWluZ1JlcXVpcmVtZW50cyh0aGlzLmFkYik7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIHNjcmVlbiBzdHJlYW1pbmcgc2Vzc2lvbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIGAgK1xuICAgICAgYFN0b3AgaXQgZmlyc3QgaW4gb3JkZXIgdG8gc3RhcnQgYSBuZXcgb25lLmApO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyhwb3J0LCBob3N0KSkgPT09ICdvcGVuJykge1xuICAgIHRoaXMubG9nLmluZm8oYFRoZSBwb3J0ICMke3BvcnR9IGF0ICR7aG9zdH0gaXMgYnVzeS4gYCArXG4gICAgICBgQXNzdW1pbmcgdGhlIHNjcmVlbiBzdHJlYW1pbmcgaXMgYWxyZWFkeSBydW5uaW5nYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICgoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKHRjcFBvcnQsIFRDUF9IT1NUKSkgPT09ICdvcGVuJykge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSBwb3J0ICMke3RjcFBvcnR9IGF0ICR7VENQX0hPU1R9IGlzIGJ1c3kuIGAgK1xuICAgICAgYE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbGVmdG92ZXJzIGZyb20gcHJldmlvdXMgc2Vzc2lvbnMuYCk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMgPSBudWxsO1xuXG4gIGNvbnN0IGRldmljZUluZm8gPSBhd2FpdCBnZXREZXZpY2VJbmZvKHRoaXMuYWRiLCB0aGlzLmxvZyk7XG4gIGNvbnN0IGRldmljZVN0cmVhbWluZ1Byb2MgPSBhd2FpdCBpbml0RGV2aWNlU3RyZWFtaW5nUHJvYyh0aGlzLmFkYiwgdGhpcy5sb2csIGRldmljZUluZm8sIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYml0UmF0ZSxcbiAgfSk7XG4gIGxldCBnc3RyZWFtZXJQaXBlbGluZTtcbiAgdHJ5IHtcbiAgICBnc3RyZWFtZXJQaXBlbGluZSA9IGF3YWl0IGluaXRHc3RyZWFtZXJQaXBlbGluZShkZXZpY2VTdHJlYW1pbmdQcm9jLCBkZXZpY2VJbmZvLCB0aGlzLmxvZywge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBxdWFsaXR5LFxuICAgICAgdGNwUG9ydCxcbiAgICAgIGNvbnNpZGVyUm90YXRpb24sXG4gICAgICBsb2dQaXBlbGluZURldGFpbHMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKDApKSB7XG4gICAgICBkZXZpY2VTdHJlYW1pbmdQcm9jLmtpbGwoKTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGxldCBtanBlZ1NvY2tldDtcbiAgbGV0IG1qcGVnU2VydmVyO1xuICB0cnkge1xuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG1qcGVnU29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24odGNwUG9ydCwgVENQX0hPU1QsICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byBNSlBFRyBzdHJlYW0gYXQgdGNwOi8vJHtUQ1BfSE9TVH06JHt0Y3BQb3J0fWApO1xuICAgICAgICBtanBlZ1NlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbW90ZUFkZHJlc3MgPSBleHRyYWN0UmVtb3RlQWRkcmVzcyhyZXEpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXRobmFtZSA9IHVybC5wYXJzZShyZXEudXJsKS5wYXRobmFtZTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBHb3QgYW4gaW5jb21pbmcgc2NyZWVuIGJyYWRjYXN0aW5nIHJlcXVlc3QgZnJvbSAke3JlbW90ZUFkZHJlc3N9IGAgK1xuICAgICAgICAgICAgYCgke3JlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10gfHwgJ1VzZXIgQWdlbnQgdW5rbm93bid9KSBhdCAke2N1cnJlbnRQYXRobmFtZX1gKTtcblxuICAgICAgICAgIGlmIChwYXRobmFtZSAmJiBjdXJyZW50UGF0aG5hbWUgIT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZWplY3RpbmcgdGhlIGJyb2FkY2FzdCByZXF1ZXN0IHNpbmNlIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBnaXZlbiBwYXRobmFtZScpO1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQsIHtcbiAgICAgICAgICAgICAgQ29ubmVjdGlvbjogJ2Nsb3NlJyxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzLndyaXRlKGAnJHtjdXJyZW50UGF0aG5hbWV9JyBkaWQgbm90IG1hdGNoIGFueSBrbm93biBlbmRwb2ludHNgKTtcbiAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKCdTdGFydGluZyBNSlBFRyBicm9hZGNhc3QnKTtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMCwge1xuICAgICAgICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHByZS1jaGVjaz0wLCBwb3N0LWNoZWNrPTAsIG1heC1hZ2U9MCcsXG4gICAgICAgICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICAgICAgICBDb25uZWN0aW9uOiAnY2xvc2UnLFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlOyBib3VuZGFyeT0ke0JPVU5EQVJZX1NUUklOR31gXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtanBlZ1NvY2tldC5waXBlKHJlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICBtanBlZ1NlcnZlci5vbignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oZSk7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgbWpwZWdTZXJ2ZXIub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBNSlBFRyBzZXJ2ZXIgYXQgaHR0cDovLyR7aG9zdH06JHtwb3J0fSBoYXMgYmVlbiBjbG9zZWRgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1qcGVnU2VydmVyLm9uKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgTUpQRUcgc2VydmVyIGF0IGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBtanBlZ1NlcnZlci5saXN0ZW4ocG9ydCwgaG9zdCk7XG4gICAgICB9KTtcbiAgICAgIG1qcGVnU29ja2V0Lm9uKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKGUpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9KTtcbiAgICB9KS50aW1lb3V0KFNUUkVBTUlOR19TVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICBgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIHN0cmVhbWluZyBzZXJ2ZXIgd2l0aGluICR7U1RSRUFNSU5HX1NUQVJUVVBfVElNRU9VVF9NU31tc2ApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGRldmljZVN0cmVhbWluZ1Byb2Mua2lsbCgwKSkge1xuICAgICAgZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKCk7XG4gICAgfVxuICAgIGlmIChnc3RyZWFtZXJQaXBlbGluZS5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IGdzdHJlYW1lclBpcGVsaW5lLnN0b3AoKTtcbiAgICB9XG4gICAgaWYgKG1qcGVnU29ja2V0KSB7XG4gICAgICBtanBlZ1NvY2tldC5kZXN0cm95KCk7XG4gICAgfVxuICAgIGlmIChtanBlZ1NlcnZlciAmJiBtanBlZ1NlcnZlci5saXN0ZW5pbmcpIHtcbiAgICAgIG1qcGVnU2VydmVyLmNsb3NlKCk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cblxuICB0aGlzLl9zY3JlZW5TdHJlYW1pbmdQcm9wcyA9IHtcbiAgICBkZXZpY2VTdHJlYW1pbmdQcm9jLFxuICAgIGdzdHJlYW1lclBpcGVsaW5lLFxuICAgIG1qcGVnU29ja2V0LFxuICAgIG1qcGVnU2VydmVyLFxuICB9O1xufTtcblxuLyoqXG4gKiBTdG9wIHNjcmVlbiBzdHJlYW1pbmcuXG4gKiBJZiBubyBzY3JlZW4gc3RyZWFtaW5nIHNlcnZlciBoYXMgYmVlbiBzdGFydGVkIHRoZW4gbm90aGluZyBpcyBkb25lLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyAoLyogb3B0aW9ucyA9IHt9ICovKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNjcmVlbiBzdHJlYW1pbmcgaXMgbm90IHJ1bm5pbmcuIFRoZXJlIGlzIG5vdGhpbmcgdG8gc3RvcGApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgZGV2aWNlU3RyZWFtaW5nUHJvYyxcbiAgICBnc3RyZWFtZXJQaXBlbGluZSxcbiAgICBtanBlZ1NvY2tldCxcbiAgICBtanBlZ1NlcnZlcixcbiAgfSA9IHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzO1xuXG4gIHRyeSB7XG4gICAgbWpwZWdTb2NrZXQuZW5kKCk7XG4gICAgaWYgKG1qcGVnU2VydmVyLmxpc3RlbmluZykge1xuICAgICAgbWpwZWdTZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gICAgaWYgKGRldmljZVN0cmVhbWluZ1Byb2Mua2lsbCgwKSkge1xuICAgICAgZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKCdTSUdJTlQnKTtcbiAgICB9XG4gICAgaWYgKGdzdHJlYW1lclBpcGVsaW5lLmlzUnVubmluZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ3N0cmVhbWVyUGlwZWxpbmUuc3RvcCgnU0lHSU5UJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZ3N0cmVhbWVyUGlwZWxpbmUuc3RvcCgnU0lHS0lMTCcpO1xuICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yKGUxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBTdWNjZXNzZnVsbHkgdGVybWluYXRlZCB0aGUgc2NyZWVuIHN0cmVhbWluZyBNSlBFRyBzZXJ2ZXJgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLl9zY3JlZW5TdHJlYW1pbmdQcm9wcyA9IG51bGw7XG4gIH1cbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBL0I7QUFDQSxNQUFNQyw0QkFBNEIsR0FBRyxJQUFyQztBQUNBLE1BQU1DLGdCQUFnQixHQUFJLGlCQUFnQkMsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUEzRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFJLGtCQUFpQkYsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUE5RTtBQUNBLE1BQU1FLG9CQUFvQixHQUFHO0VBQzNCQyxVQUFVLEVBQUUsV0FEZTtFQUUzQkMsU0FBUyxFQUFFLGlCQUZnQjtFQUczQkMsT0FBTyxFQUFFLGtCQUhrQjtFQUkzQkMsYUFBYSxFQUFFLGtCQUpZO0VBSzNCQyxZQUFZLEVBQUU7QUFMYSxDQUE3QjtBQU9BLE1BQU1DLG1CQUFtQixHQUFHLGNBQTVCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsdUVBQXpCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLFdBQXJCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLFdBQWpCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEVBQXhCO0FB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
|
|
423
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3N0cmVhbXNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVDT1JESU5HX0lOVEVSVkFMX1NFQyIsIlNUUkVBTUlOR19TVEFSVFVQX1RJTUVPVVRfTVMiLCJHU1RSRUFNRVJfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiR1NUX0lOU1BFQ1RfQklOQVJZIiwiUkVRVUlSRURfR1NUX1BMVUdJTlMiLCJhdmRlY19oMjY0IiwiaDI2NHBhcnNlIiwianBlZ2VuYyIsInRjcHNlcnZlcnNpbmsiLCJtdWx0aXBhcnRtdXgiLCJTQ1JFRU5SRUNPUkRfQklOQVJZIiwiR1NUX1RVVE9SSUFMX1VSTCIsIkRFRkFVTFRfSE9TVCIsIlRDUF9IT1NUIiwiREVGQVVMVF9QT1JUIiwiREVGQVVMVF9RVUFMSVRZIiwiREVGQVVMVF9CSVRSQVRFIiwiQk9VTkRBUllfU1RSSU5HIiwiQURCX1NDUkVFTl9TVFJFQU1JTkdfRkVBVFVSRSIsImNyZWF0ZVN0cmVhbWluZ0xvZ2dlciIsInN0cmVhbU5hbWUiLCJ1ZGlkIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiXyIsInRydW5jYXRlIiwibGVuZ3RoIiwib21pc3Npb24iLCJ2ZXJpZnlTdHJlYW1pbmdSZXF1aXJlbWVudHMiLCJhZGIiLCJ0cmltIiwic2hlbGwiLCJFcnJvciIsImdzdHJlYW1lckNoZWNrUHJvbWlzZXMiLCJiaW5hcnlOYW1lIiwicHVzaCIsImZzIiwid2hpY2giLCJlIiwiQiIsImFsbCIsIm1vZHVsZUNoZWNrUHJvbWlzZXMiLCJuYW1lIiwibW9kTmFtZSIsInRvUGFpcnMiLCJzdGRvdXQiLCJleGVjIiwiaW5jbHVkZXMiLCJnZXREZXZpY2VJbmZvIiwibG9nIiwib3V0cHV0IiwicmVzdWx0Iiwia2V5IiwicGF0dGVybiIsIm1hdGNoIiwiZGVidWciLCJwYXJzZUludCIsImN1ckRldmljZUlkIiwiaW5pdERldmljZVN0cmVhbWluZ1Byb2MiLCJkZXZpY2VJbmZvIiwib3B0cyIsIndpZHRoIiwiaGVpZ2h0IiwiYml0UmF0ZSIsImFkanVzdGVkV2lkdGgiLCJhZGp1c3RlZEhlaWdodCIsImFkanVzdGVkQml0cmF0ZSIsInNjcmVlblJlY29yZENtZCIsImFkYkFyZ3MiLCJleGVjdXRhYmxlIiwiZGVmYXVsdEFyZ3MiLCJkZXZpY2VTdHJlYW1pbmciLCJzcGF3biIsInBhdGgiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJpc1N0YXJ0ZWQiLCJkZXZpY2VTdHJlYW1pbmdMb2dnZXIiLCJlcnJvcnNMaXN0ZW5lciIsImNodW5rIiwic3RkZXJyIiwidG9TdHJpbmciLCJzdGFydHVwTGlzdGVuZXIiLCJpc0VtcHR5IiwiaW5mbyIsInV0aWwiLCJxdW90ZSIsIndhaXRGb3JDb25kaXRpb24iLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiLCJyZW1vdmVMaXN0ZW5lciIsImluaXRHc3RyZWFtZXJQaXBlbGluZSIsImRldmljZVN0cmVhbWluZ1Byb2MiLCJxdWFsaXR5IiwidGNwUG9ydCIsImNvbnNpZGVyUm90YXRpb24iLCJsb2dQaXBlbGluZURldGFpbHMiLCJnc3RyZWFtZXJQaXBlbGluZSIsIlN1YlByb2Nlc3MiLCJNYXRoIiwibWF4IiwiZnBzIiwic3RkaW8iLCJnc3RyZWFtZXJMb2dnZXIiLCJnc3RPdXRwdXRMaXN0ZW5lciIsImRpZEZhaWwiLCJyZXAiLCJzdGFydCIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsImV4dHJhY3RSZW1vdGVBZGRyZXNzIiwicmVxIiwiaGVhZGVycyIsInNvY2tldCIsInJlbW90ZUFkZHJlc3MiLCJjb25uZWN0aW9uIiwibW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmciLCJvcHRpb25zIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJob3N0IiwicG9ydCIsInBhdGhuYW1lIiwiaXNVbmRlZmluZWQiLCJfc2NyZWVuU3RyZWFtaW5nUHJvcHMiLCJraWxsIiwibWpwZWdTb2NrZXQiLCJtanBlZ1NlcnZlciIsInJlc29sdmUiLCJyZWplY3QiLCJuZXQiLCJjcmVhdGVDb25uZWN0aW9uIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsInJlcyIsImN1cnJlbnRQYXRobmFtZSIsInVybCIsInBhcnNlIiwid3JpdGVIZWFkIiwiQ29ubmVjdGlvbiIsIndyaXRlIiwiZW5kIiwiUHJhZ21hIiwicGlwZSIsIndhcm4iLCJsaXN0ZW4iLCJlcnJvciIsInRpbWVvdXQiLCJpc1J1bm5pbmciLCJzdG9wIiwiZGVzdHJveSIsImxpc3RlbmluZyIsImNsb3NlIiwibW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyIsImUxIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3N0cmVhbXNjcmVlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHN5c3RlbSwgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMsIFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgUkVDT1JESU5HX0lOVEVSVkFMX1NFQyA9IDU7XG5jb25zdCBTVFJFQU1JTkdfU1RBUlRVUF9USU1FT1VUX01TID0gNTAwMDtcbmNvbnN0IEdTVFJFQU1FUl9CSU5BUlkgPSBgZ3N0LWxhdW5jaC0xLjAke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHU1RfSU5TUEVDVF9CSU5BUlkgPSBgZ3N0LWluc3BlY3QtMS4wJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgUkVRVUlSRURfR1NUX1BMVUdJTlMgPSB7XG4gIGF2ZGVjX2gyNjQ6ICdnc3QtbGliYXYnLFxuICBoMjY0cGFyc2U6ICdnc3QtcGx1Z2lucy1iYWQnLFxuICBqcGVnZW5jOiAnZ3N0LXBsdWdpbnMtZ29vZCcsXG4gIHRjcHNlcnZlcnNpbms6ICdnc3QtcGx1Z2lucy1iYXNlJyxcbiAgbXVsdGlwYXJ0bXV4OiAnZ3N0LXBsdWdpbnMtZ29vZCcsXG59O1xuY29uc3QgU0NSRUVOUkVDT1JEX0JJTkFSWSA9ICdzY3JlZW5yZWNvcmQnO1xuY29uc3QgR1NUX1RVVE9SSUFMX1VSTCA9ICdodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nL2luZGV4Lmh0bWwnO1xuY29uc3QgREVGQVVMVF9IT1NUID0gJzEyNy4wLjAuMSc7XG5jb25zdCBUQ1BfSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gODA5MztcbmNvbnN0IERFRkFVTFRfUVVBTElUWSA9IDcwO1xuY29uc3QgREVGQVVMVF9CSVRSQVRFID0gNDAwMDAwMDsgLy8gNCBNYnBzXG5jb25zdCBCT1VOREFSWV9TVFJJTkcgPSAnLS0yYWU5NzQ2ODg3ZjE3MGI4Y2Y3YzI3MTA0N2NlMzE0Yyc7XG5cbmNvbnN0IEFEQl9TQ1JFRU5fU1RSRUFNSU5HX0ZFQVRVUkUgPSAnYWRiX3NjcmVlbl9zdHJlYW1pbmcnO1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJlYW1pbmdMb2dnZXIgKHN0cmVhbU5hbWUsIHVkaWQpIHtcbiAgcmV0dXJuIGxvZ2dlci5nZXRMb2dnZXIoYCR7c3RyZWFtTmFtZX1AYCArIF8udHJ1bmNhdGUodWRpZCwge1xuICAgIGxlbmd0aDogOCxcbiAgICBvbWlzc2lvbjogJycsXG4gIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U3RyZWFtaW5nUmVxdWlyZW1lbnRzIChhZGIpIHtcbiAgaWYgKCFfLnRyaW0oYXdhaXQgYWRiLnNoZWxsKFsnd2hpY2gnLCBTQ1JFRU5SRUNPUkRfQklOQVJZXSkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSByZXF1aXJlZCAnJHtTQ1JFRU5SRUNPUkRfQklOQVJZfScgYmluYXJ5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0YCk7XG4gIH1cblxuICBjb25zdCBnc3RyZWFtZXJDaGVja1Byb21pc2VzID0gW107XG4gIGZvciAoY29uc3QgYmluYXJ5TmFtZSBvZiBbR1NUUkVBTUVSX0JJTkFSWSwgR1NUX0lOU1BFQ1RfQklOQVJZXSkge1xuICAgIGdzdHJlYW1lckNoZWNrUHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud2hpY2goYmluYXJ5TmFtZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICcke2JpbmFyeU5hbWV9JyBiaW5hcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgUEFUSCBvbiB0aGUgaG9zdCBzeXN0ZW0uIGAgK1xuICAgICAgICAgIGBTZWUgJHtHU1RfVFVUT1JJQUxfVVJMfSBmb3IgbW9yZSBkZXRhaWxzIG9uIGhvdyB0byBpbnN0YWxsIGl0LmApO1xuICAgICAgfVxuICAgIH0pKCkpO1xuICB9XG4gIGF3YWl0IEIuYWxsKGdzdHJlYW1lckNoZWNrUHJvbWlzZXMpO1xuXG4gIGNvbnN0IG1vZHVsZUNoZWNrUHJvbWlzZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgbW9kTmFtZV0gb2YgXy50b1BhaXJzKFJFUVVJUkVEX0dTVF9QTFVHSU5TKSkge1xuICAgIG1vZHVsZUNoZWNrUHJvbWlzZXMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdTVF9JTlNQRUNUX0JJTkFSWSwgW25hbWVdKTtcbiAgICAgIGlmICghXy5pbmNsdWRlcyhzdGRvdXQsIG1vZE5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIHJlcXVpcmVkIEdTdHJlYW1lciBwbHVnaW4gJyR7bmFtZX0nIGZyb20gJyR7bW9kTmFtZX0nIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgU2VlICR7R1NUX1RVVE9SSUFMX1VSTH0gZm9yIG1vcmUgZGV0YWlscyBvbiBob3cgdG8gaW5zdGFsbCBpdC5gKTtcbiAgICAgIH1cbiAgICB9KSgpKTtcbiAgfVxuICBhd2FpdCBCLmFsbChtb2R1bGVDaGVja1Byb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlSW5mbyAoYWRiLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnZGlzcGxheSddKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgcGF0dGVybl0gb2YgW1xuICAgIFsnd2lkdGgnLCAvXFxiZGV2aWNlV2lkdGg9KFxcZCspL10sXG4gICAgWydoZWlnaHQnLCAvXFxiZGV2aWNlSGVpZ2h0PShcXGQrKS9dLFxuICAgIFsnZnBzJywgL1xcYmZwcz0oXFxkKykvXSxcbiAgXSkge1xuICAgIGNvbnN0IG1hdGNoID0gcGF0dGVybi5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgbG9nPy5kZWJ1ZyhvdXRwdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGRldmljZSAke2tleX0gZnJvbSB0aGUgYWRiIGNvbW1hbmQgb3V0cHV0LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMuYCk7XG4gICAgfVxuICAgIHJlc3VsdFtrZXldID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgfVxuICByZXN1bHQudWRpZCA9IGFkYi5jdXJEZXZpY2VJZDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdERldmljZVN0cmVhbWluZ1Byb2MgKGFkYiwgbG9nLCBkZXZpY2VJbmZvLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBiaXRSYXRlLFxuICB9ID0gb3B0cztcbiAgY29uc3QgYWRqdXN0ZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCkgfHwgZGV2aWNlSW5mby53aWR0aDtcbiAgY29uc3QgYWRqdXN0ZWRIZWlnaHQgPSBwYXJzZUludChoZWlnaHQsIDEwKSB8fCBkZXZpY2VJbmZvLmhlaWdodDtcbiAgY29uc3QgYWRqdXN0ZWRCaXRyYXRlID0gcGFyc2VJbnQoYml0UmF0ZSwgMTApIHx8IERFRkFVTFRfQklUUkFURTtcbiAgbGV0IHNjcmVlblJlY29yZENtZCA9IFNDUkVFTlJFQ09SRF9CSU5BUlkgK1xuICAgIGAgLS1vdXRwdXQtZm9ybWF0PWgyNjRgICtcbiAgICAvLyA1IHNlY29uZHMgaXMgZmluZSB0byBkZXRlY3Qgcm90YXRpb24gY2hhbmdlc1xuICAgIGAgLS10aW1lLWxpbWl0PSR7UkVDT1JESU5HX0lOVEVSVkFMX1NFQ31gO1xuICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7XG4gICAgc2NyZWVuUmVjb3JkQ21kICs9IGAgLS1zaXplPSR7YWRqdXN0ZWRXaWR0aH14JHthZGp1c3RlZEhlaWdodH1gO1xuICB9XG4gIGlmIChiaXRSYXRlKSB7XG4gICAgc2NyZWVuUmVjb3JkQ21kICs9IGAgLS1iaXQtcmF0ZT0ke2FkanVzdGVkQml0cmF0ZX1gO1xuICB9XG4gIGNvbnN0IGFkYkFyZ3MgPSBbXG4gICAgLi4uYWRiLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MsXG4gICAgJ2V4ZWMtb3V0JyxcbiAgICAvLyBUaGUgbG9vcCBpcyByZXF1aXJlZCwgYmVjYXVzZSBieSBkZWZhdWx0IHRoZSBtYXhpbXVtIHJlY29yZCBkdXJhdGlvblxuICAgIC8vIGZvciBzY3JlZW5yZWNvcmQgaXMgYWx3YXlzIGxpbWl0ZWRcbiAgICBgd2hpbGUgdHJ1ZTsgZG8gJHtzY3JlZW5SZWNvcmRDbWR9IC07IGRvbmVgLFxuICBdO1xuICBjb25zdCBkZXZpY2VTdHJlYW1pbmcgPSBzcGF3bihhZGIuZXhlY3V0YWJsZS5wYXRoLCBhZGJBcmdzKTtcbiAgZGV2aWNlU3RyZWFtaW5nLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgIGxvZy5kZWJ1ZyhgRGV2aWNlIHN0cmVhbWluZyBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICB9KTtcblxuICBsZXQgaXNTdGFydGVkID0gZmFsc2U7XG4gIGNvbnN0IGRldmljZVN0cmVhbWluZ0xvZ2dlciA9IGNyZWF0ZVN0cmVhbWluZ0xvZ2dlcihTQ1JFRU5SRUNPUkRfQklOQVJZLCBkZXZpY2VJbmZvLnVkaWQpO1xuICBjb25zdCBlcnJvcnNMaXN0ZW5lciA9IChjaHVuaykgPT4ge1xuICAgIGNvbnN0IHN0ZGVyciA9IGNodW5rLnRvU3RyaW5nKCk7XG4gICAgaWYgKF8udHJpbShzdGRlcnIpKSB7XG4gICAgICBkZXZpY2VTdHJlYW1pbmdMb2dnZXIuZGVidWcoc3RkZXJyKTtcbiAgICB9XG4gIH07XG4gIGRldmljZVN0cmVhbWluZy5zdGRlcnIub24oJ2RhdGEnLCBlcnJvcnNMaXN0ZW5lcik7XG5cbiAgY29uc3Qgc3RhcnR1cExpc3RlbmVyID0gKGNodW5rKSA9PiB7XG4gICAgaWYgKCFpc1N0YXJ0ZWQpIHtcbiAgICAgIGlzU3RhcnRlZCA9ICFfLmlzRW1wdHkoY2h1bmspO1xuICAgIH1cbiAgfTtcbiAgZGV2aWNlU3RyZWFtaW5nLnN0ZG91dC5vbignZGF0YScsIHN0YXJ0dXBMaXN0ZW5lcik7XG5cbiAgdHJ5IHtcbiAgICBsb2cuaW5mbyhgU3RhcnRpbmcgZGV2aWNlIHN0cmVhbWluZzogJHt1dGlsLnF1b3RlKFthZGIuZXhlY3V0YWJsZS5wYXRoLCAuLi5hZGJBcmdzXSl9YCk7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiBpc1N0YXJ0ZWQsIHtcbiAgICAgIHdhaXRNczogU1RSRUFNSU5HX1NUQVJUVVBfVElNRU9VVF9NUyxcbiAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KFxuICAgICAgYENhbm5vdCBzdGFydCB0aGUgc2NyZWVuIHN0cmVhbWluZyBwcm9jZXNzLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgZGV2aWNlU3RyZWFtaW5nLnN0ZGVyci5yZW1vdmVMaXN0ZW5lcignZGF0YScsIGVycm9yc0xpc3RlbmVyKTtcbiAgICBkZXZpY2VTdHJlYW1pbmcuc3Rkb3V0LnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgc3RhcnR1cExpc3RlbmVyKTtcbiAgfVxuICByZXR1cm4gZGV2aWNlU3RyZWFtaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbml0R3N0cmVhbWVyUGlwZWxpbmUgKGRldmljZVN0cmVhbWluZ1Byb2MsIGRldmljZUluZm8sIGxvZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgcXVhbGl0eSxcbiAgICB0Y3BQb3J0LFxuICAgIGNvbnNpZGVyUm90YXRpb24sXG4gICAgbG9nUGlwZWxpbmVEZXRhaWxzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgYWRqdXN0ZWRXaWR0aCA9IHBhcnNlSW50KHdpZHRoLCAxMCkgfHwgZGV2aWNlSW5mby53aWR0aDtcbiAgY29uc3QgYWRqdXN0ZWRIZWlnaHQgPSBwYXJzZUludChoZWlnaHQsIDEwKSB8fCBkZXZpY2VJbmZvLmhlaWdodDtcbiAgY29uc3QgZ3N0cmVhbWVyUGlwZWxpbmUgPSBuZXcgU3ViUHJvY2VzcyhHU1RSRUFNRVJfQklOQVJZLCBbXG4gICAgJy12JyxcbiAgICAnZmRzcmMnLCAnZmQ9MCcsXG4gICAgJyEnLCAndmlkZW8veC1oMjY0LCcgK1xuICAgICAgYHdpZHRoPSR7Y29uc2lkZXJSb3RhdGlvbiA/IE1hdGgubWF4KGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSA6IGFkanVzdGVkV2lkdGh9LGAgK1xuICAgICAgYGhlaWdodD0ke2NvbnNpZGVyUm90YXRpb24gPyBNYXRoLm1heChhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkgOiBhZGp1c3RlZEhlaWdodH0sYCArXG4gICAgICBgZnJhbWVyYXRlPSR7ZGV2aWNlSW5mby5mcHN9LzEsYCArXG4gICAgICAnYnl0ZS1zdHJlYW09dHJ1ZScsXG4gICAgJyEnLCAnaDI2NHBhcnNlJyxcbiAgICAnIScsICdxdWV1ZScsICdsZWFreT1kb3duc3RyZWFtJyxcbiAgICAnIScsICdhdmRlY19oMjY0JyxcbiAgICAnIScsICdxdWV1ZScsICdsZWFreT1kb3duc3RyZWFtJyxcbiAgICAnIScsICdqcGVnZW5jJywgYHF1YWxpdHk9JHtxdWFsaXR5fWAsXG4gICAgJyEnLCAnbXVsdGlwYXJ0bXV4JywgYGJvdW5kYXJ5PSR7Qk9VTkRBUllfU1RSSU5HfWAsXG4gICAgJyEnLCAndGNwc2VydmVyc2luaycsIGBob3N0PSR7VENQX0hPU1R9YCwgYHBvcnQ9JHt0Y3BQb3J0fWAsXG4gIF0sIHtcbiAgICBzdGRpbzogW2RldmljZVN0cmVhbWluZ1Byb2Muc3Rkb3V0LCAncGlwZScsICdwaXBlJ11cbiAgfSk7XG4gIGdzdHJlYW1lclBpcGVsaW5lLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgIGxvZy5kZWJ1ZyhgUGlwZWxpbmUgc3RyZWFtaW5nIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gIH0pO1xuICBjb25zdCBnc3RyZWFtZXJMb2dnZXIgPSBjcmVhdGVTdHJlYW1pbmdMb2dnZXIoJ2dzdCcsIGRldmljZUluZm8udWRpZCk7XG4gIGNvbnN0IGdzdE91dHB1dExpc3RlbmVyID0gKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgaWYgKF8udHJpbShzdGRlcnIgfHwgc3Rkb3V0KSkge1xuICAgICAgZ3N0cmVhbWVyTG9nZ2VyLmRlYnVnKHN0ZGVyciB8fCBzdGRvdXQpO1xuICAgIH1cbiAgfTtcbiAgZ3N0cmVhbWVyUGlwZWxpbmUub24oJ291dHB1dCcsIGdzdE91dHB1dExpc3RlbmVyKTtcbiAgbGV0IGRpZEZhaWwgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICBsb2cuaW5mbyhgU3RhcnRpbmcgR1N0cmVhbWVyIHBpcGVsaW5lOiAke2dzdHJlYW1lclBpcGVsaW5lLnJlcH1gKTtcbiAgICBhd2FpdCBnc3RyZWFtZXJQaXBlbGluZS5zdGFydCgwKTtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKHRjcFBvcnQsIFRDUF9IT1NUKSkgPT09ICdvcGVuJztcbiAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAgd2FpdE1zOiBTVFJFQU1JTkdfU1RBUlRVUF9USU1FT1VUX01TLFxuICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGlkRmFpbCA9IHRydWU7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coXG4gICAgICBgQ2Fubm90IHN0YXJ0IHRoZSBzY3JlZW4gc3RyZWFtaW5nIHBpcGVsaW5lLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKCFsb2dQaXBlbGluZURldGFpbHMgfHwgZGlkRmFpbCkge1xuICAgICAgZ3N0cmVhbWVyUGlwZWxpbmUucmVtb3ZlTGlzdGVuZXIoJ291dHB1dCcsIGdzdE91dHB1dExpc3RlbmVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdzdHJlYW1lclBpcGVsaW5lO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0UmVtb3RlQWRkcmVzcyAocmVxKSB7XG4gIHJldHVybiByZXEuaGVhZGVyc1sneC1mb3J3YXJkZWQtZm9yJ11cbiAgICB8fCByZXEuc29ja2V0LnJlbW90ZUFkZHJlc3NcbiAgICB8fCByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzXG4gICAgfHwgcmVxLmNvbm5lY3Rpb24uc29ja2V0LnJlbW90ZUFkZHJlc3M7XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFNjcmVlblN0cmVhbWluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHdpZHRoIC0gVGhlIHNjYWxlZCB3aWR0aCBvZiB0aGUgZGV2aWNlJ3Mgc2NyZWVuLiBJZiB1bnNldCB0aGVuIHRoZSBzY3JpcHQgd2lsbCBhc3NpZ24gaXRcbiAqIHRvIHRoZSBhY3R1YWwgc2NyZWVuIHdpZHRoIG1lYXN1cmVkIGluIHBpeGVscy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gaGVpZ2h0IC0gVGhlIHNjYWxlZCBoZWlnaHQgb2YgdGhlIGRldmljZSdzIHNjcmVlbi4gSWYgdW5zZXQgdGhlbiB0aGUgc2NyaXB0IHdpbGwgYXNzaWduIGl0XG4gKiB0byB0aGUgYWN0dWFsIHNjcmVlbiBoZWlnaHQgbWVhc3VyZWQgaW4gcGl4ZWxzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBiaXRSYXRlIC0gVGhlIHZpZGVvIGJpdCByYXRlIGZvciB0aGUgdmlkZW8sIGluIGJpdHMgcGVyIHNlY29uZC5cbiAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwMDAwMDAgKDQgTWIvcykuIFlvdSBjYW4gaW5jcmVhc2UgdGhlIGJpdCByYXRlIHRvIGltcHJvdmUgdmlkZW8gcXVhbGl0eSxcbiAqIGJ1dCBkb2luZyBzbyByZXN1bHRzIGluIGxhcmdlciBtb3ZpZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaG9zdCBbMTI3LjAuMC4xXSAtIFRoZSBJUCBhZGRyZXNzL2hvc3QgbmFtZSB0byBzdGFydCB0aGUgTUpQRUcgc2VydmVyIG9uLlxuICogWW91IGNhbiBzZXQgaXQgdG8gYDAuMC4wLjBgIHRvIHRyaWdnZXIgdGhlIGJyb2FkY2FzdCBvbiBhbGwgYXZhaWxhYmxlIG5ldHdvcmsgaW50ZXJmYWNlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGF0aG5hbWUgLSBUaGUgSFRUUCByZXF1ZXN0IHBhdGggdGhlIE1KUEVHIHNlcnZlciBzaG91bGQgYmUgYXZhaWxhYmxlIG9uLlxuICogSWYgdW5zZXQgdGhlbiBhbnkgcGF0aG5hbWUgb24gdGhlIGdpdmVuIGBob3N0YC9gcG9ydGAgY29tYmluYXRpb24gd2lsbCB3b3JrLiBOb3RlIHRoYXQgdGhlIHZhbHVlXG4gKiBzaG91bGQgYWx3YXlzIHN0YXJ0IHdpdGggYSBzaW5nbGUgc2xhc2g6IGAvYFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB0Y3BQb3J0IFs4MDk0XSAtIFRoZSBwb3J0IG51bWJlciB0byBzdGFydCB0aGUgaW50ZXJuYWwgVENQIE1KUEVHIGJyb2FkY2FzdCBvbi5cbiAqIFRoaXMgdHlwZSBvZiBicm9hZGNhc3QgYWx3YXlzIHN0YXJ0cyBvbiB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlIChgMTI3LjAuMC4xYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHBvcnQgWzgwOTNdIC0gVGhlIHBvcnQgbnVtYmVyIHRvIHN0YXJ0IHRoZSBNSlBFRyBzZXJ2ZXIgb24uXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHF1YWxpdHkgWzcwXSAtIFRoZSBxdWFsaXR5IHZhbHVlIGZvciB0aGUgc3RyZWFtZWQgSlBFRyBpbWFnZXMuXG4gKiBUaGlzIG51bWJlciBzaG91bGQgYmUgaW4gcmFuZ2UgWzEsIDEwMF0sIHdoZXJlIDEwMCBpcyB0aGUgYmVzdCBxdWFsaXR5LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gY29uc2lkZXJSb3RhdGlvbiBbZmFsc2VdIC0gSWYgc2V0IHRvIGB0cnVlYCB0aGVuIEdTdHJlYW1lciBwaXBlbGluZSB3aWxsXG4gKiBpbmNyZWFzZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcmVzdWx0aW5nIGltYWdlcyB0byBwcm9wZXJseSBmaXQgaW1hZ2VzIGluIGJvdGggbGFuZHNjYXBlIGFuZFxuICogcG9ydHJhaXQgb3JpZW50YXRpb25zLiBTZXQgaXQgdG8gYHRydWVgIGlmIHRoZSBkZXZpY2Ugcm90YXRpb24gaXMgbm90IGdvaW5nIHRvIGJlIHRoZSBzYW1lIGR1cmluZyB0aGVcbiAqIGJyb2FkY2FzdGluZyBzZXNzaW9uLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gbG9nUGlwZWxpbmVEZXRhaWxzIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGxvZyBHU3RyZWFtZXIgcGlwZWxpbmUgZXZlbnRzIGludG9cbiAqIHRoZSBzdGFuZGFyZCBsb2cgb3V0cHV0LiBNaWdodCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiAqL1xuXG4vKipcbiAqIFN0YXJ0cyBkZXZpY2Ugc2NyZWVuIGJyb2FkY2FzdCBieSBjcmVhdGluZyBNSlBFRyBzZXJ2ZXIuXG4gKiBNdWx0aXBsZSBjYWxscyB0byB0aGlzIG1ldGhvZCBoYXZlIG5vIGVmZmVjdCB1bmxlc3MgdGhlIHByZXZpb3VzIHN0cmVhbWluZ1xuICogc2Vzc2lvbiBpcyBzdG9wcGVkLlxuICogVGhpcyBtZXRob2Qgb25seSB3b3JrcyBpZiB0aGUgYGFkYl9zY3JlZW5fc3RyZWFtaW5nYCBmZWF0dXJlIGlzXG4gKiBlbmFibGVkIG9uIHRoZSBzZXJ2ZXIgc2lkZS5cbiAqXG4gKiBAcGFyYW0gez9TdGFydFNjcmVlblN0cmVhbWluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2NyZWVuIHN0cmVhbWluZyBoYXMgZmFpbGVkIHRvIHN0YXJ0IG9yXG4gKiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBob3N0IHN5c3RlbSBvclxuICogdGhlIGNvcnJlc3BvbmRpbmcgc2VydmVyIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVN0YXJ0U2NyZWVuU3RyZWFtaW5nID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcgKG9wdGlvbnMgPSB7fSkge1xuICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKEFEQl9TQ1JFRU5fU1RSRUFNSU5HX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYml0UmF0ZSxcbiAgICBob3N0ID0gREVGQVVMVF9IT1NULFxuICAgIHBvcnQgPSBERUZBVUxUX1BPUlQsXG4gICAgcGF0aG5hbWUsXG4gICAgdGNwUG9ydCA9IERFRkFVTFRfUE9SVCArIDEsXG4gICAgcXVhbGl0eSA9IERFRkFVTFRfUVVBTElUWSxcbiAgICBjb25zaWRlclJvdGF0aW9uID0gZmFsc2UsXG4gICAgbG9nUGlwZWxpbmVEZXRhaWxzID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzKSkge1xuICAgIGF3YWl0IHZlcmlmeVN0cmVhbWluZ1JlcXVpcmVtZW50cyh0aGlzLmFkYik7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIHNjcmVlbiBzdHJlYW1pbmcgc2Vzc2lvbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIGAgK1xuICAgICAgYFN0b3AgaXQgZmlyc3QgaW4gb3JkZXIgdG8gc3RhcnQgYSBuZXcgb25lLmApO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyhwb3J0LCBob3N0KSkgPT09ICdvcGVuJykge1xuICAgIHRoaXMubG9nLmluZm8oYFRoZSBwb3J0ICMke3BvcnR9IGF0ICR7aG9zdH0gaXMgYnVzeS4gYCArXG4gICAgICBgQXNzdW1pbmcgdGhlIHNjcmVlbiBzdHJlYW1pbmcgaXMgYWxyZWFkeSBydW5uaW5nYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICgoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKHRjcFBvcnQsIFRDUF9IT1NUKSkgPT09ICdvcGVuJykge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSBwb3J0ICMke3RjcFBvcnR9IGF0ICR7VENQX0hPU1R9IGlzIGJ1c3kuIGAgK1xuICAgICAgYE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gbGVmdG92ZXJzIGZyb20gcHJldmlvdXMgc2Vzc2lvbnMuYCk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMgPSBudWxsO1xuXG4gIGNvbnN0IGRldmljZUluZm8gPSBhd2FpdCBnZXREZXZpY2VJbmZvKHRoaXMuYWRiLCB0aGlzLmxvZyk7XG4gIGNvbnN0IGRldmljZVN0cmVhbWluZ1Byb2MgPSBhd2FpdCBpbml0RGV2aWNlU3RyZWFtaW5nUHJvYyh0aGlzLmFkYiwgdGhpcy5sb2csIGRldmljZUluZm8sIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgYml0UmF0ZSxcbiAgfSk7XG4gIGxldCBnc3RyZWFtZXJQaXBlbGluZTtcbiAgdHJ5IHtcbiAgICBnc3RyZWFtZXJQaXBlbGluZSA9IGF3YWl0IGluaXRHc3RyZWFtZXJQaXBlbGluZShkZXZpY2VTdHJlYW1pbmdQcm9jLCBkZXZpY2VJbmZvLCB0aGlzLmxvZywge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBxdWFsaXR5LFxuICAgICAgdGNwUG9ydCxcbiAgICAgIGNvbnNpZGVyUm90YXRpb24sXG4gICAgICBsb2dQaXBlbGluZURldGFpbHMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKDApKSB7XG4gICAgICBkZXZpY2VTdHJlYW1pbmdQcm9jLmtpbGwoKTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGxldCBtanBlZ1NvY2tldDtcbiAgbGV0IG1qcGVnU2VydmVyO1xuICB0cnkge1xuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG1qcGVnU29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24odGNwUG9ydCwgVENQX0hPU1QsICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byBNSlBFRyBzdHJlYW0gYXQgdGNwOi8vJHtUQ1BfSE9TVH06JHt0Y3BQb3J0fWApO1xuICAgICAgICBtanBlZ1NlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbW90ZUFkZHJlc3MgPSBleHRyYWN0UmVtb3RlQWRkcmVzcyhyZXEpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXRobmFtZSA9IHVybC5wYXJzZShyZXEudXJsKS5wYXRobmFtZTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBHb3QgYW4gaW5jb21pbmcgc2NyZWVuIGJyYWRjYXN0aW5nIHJlcXVlc3QgZnJvbSAke3JlbW90ZUFkZHJlc3N9IGAgK1xuICAgICAgICAgICAgYCgke3JlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10gfHwgJ1VzZXIgQWdlbnQgdW5rbm93bid9KSBhdCAke2N1cnJlbnRQYXRobmFtZX1gKTtcblxuICAgICAgICAgIGlmIChwYXRobmFtZSAmJiBjdXJyZW50UGF0aG5hbWUgIT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZWplY3RpbmcgdGhlIGJyb2FkY2FzdCByZXF1ZXN0IHNpbmNlIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBnaXZlbiBwYXRobmFtZScpO1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQsIHtcbiAgICAgICAgICAgICAgQ29ubmVjdGlvbjogJ2Nsb3NlJyxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzLndyaXRlKGAnJHtjdXJyZW50UGF0aG5hbWV9JyBkaWQgbm90IG1hdGNoIGFueSBrbm93biBlbmRwb2ludHNgKTtcbiAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKCdTdGFydGluZyBNSlBFRyBicm9hZGNhc3QnKTtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMCwge1xuICAgICAgICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUsIHByZS1jaGVjaz0wLCBwb3N0LWNoZWNrPTAsIG1heC1hZ2U9MCcsXG4gICAgICAgICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICAgICAgICBDb25uZWN0aW9uOiAnY2xvc2UnLFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlOyBib3VuZGFyeT0ke0JPVU5EQVJZX1NUUklOR31gXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtanBlZ1NvY2tldC5waXBlKHJlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICBtanBlZ1NlcnZlci5vbignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oZSk7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgbWpwZWdTZXJ2ZXIub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBNSlBFRyBzZXJ2ZXIgYXQgaHR0cDovLyR7aG9zdH06JHtwb3J0fSBoYXMgYmVlbiBjbG9zZWRgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1qcGVnU2VydmVyLm9uKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgTUpQRUcgc2VydmVyIGF0IGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBtanBlZ1NlcnZlci5saXN0ZW4ocG9ydCwgaG9zdCk7XG4gICAgICB9KTtcbiAgICAgIG1qcGVnU29ja2V0Lm9uKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKGUpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9KTtcbiAgICB9KS50aW1lb3V0KFNUUkVBTUlOR19TVEFSVFVQX1RJTUVPVVRfTVMsXG4gICAgICBgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIHN0cmVhbWluZyBzZXJ2ZXIgd2l0aGluICR7U1RSRUFNSU5HX1NUQVJUVVBfVElNRU9VVF9NU31tc2ApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGRldmljZVN0cmVhbWluZ1Byb2Mua2lsbCgwKSkge1xuICAgICAgZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKCk7XG4gICAgfVxuICAgIGlmIChnc3RyZWFtZXJQaXBlbGluZS5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IGdzdHJlYW1lclBpcGVsaW5lLnN0b3AoKTtcbiAgICB9XG4gICAgaWYgKG1qcGVnU29ja2V0KSB7XG4gICAgICBtanBlZ1NvY2tldC5kZXN0cm95KCk7XG4gICAgfVxuICAgIGlmIChtanBlZ1NlcnZlciAmJiBtanBlZ1NlcnZlci5saXN0ZW5pbmcpIHtcbiAgICAgIG1qcGVnU2VydmVyLmNsb3NlKCk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cblxuICB0aGlzLl9zY3JlZW5TdHJlYW1pbmdQcm9wcyA9IHtcbiAgICBkZXZpY2VTdHJlYW1pbmdQcm9jLFxuICAgIGdzdHJlYW1lclBpcGVsaW5lLFxuICAgIG1qcGVnU29ja2V0LFxuICAgIG1qcGVnU2VydmVyLFxuICB9O1xufTtcblxuLyoqXG4gKiBTdG9wIHNjcmVlbiBzdHJlYW1pbmcuXG4gKiBJZiBubyBzY3JlZW4gc3RyZWFtaW5nIHNlcnZlciBoYXMgYmVlbiBzdGFydGVkIHRoZW4gbm90aGluZyBpcyBkb25lLlxuICovXG5jb21tYW5kcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyAoLyogb3B0aW9ucyA9IHt9ICovKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNjcmVlbiBzdHJlYW1pbmcgaXMgbm90IHJ1bm5pbmcuIFRoZXJlIGlzIG5vdGhpbmcgdG8gc3RvcGApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgZGV2aWNlU3RyZWFtaW5nUHJvYyxcbiAgICBnc3RyZWFtZXJQaXBlbGluZSxcbiAgICBtanBlZ1NvY2tldCxcbiAgICBtanBlZ1NlcnZlcixcbiAgfSA9IHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzO1xuXG4gIHRyeSB7XG4gICAgbWpwZWdTb2NrZXQuZW5kKCk7XG4gICAgaWYgKG1qcGVnU2VydmVyLmxpc3RlbmluZykge1xuICAgICAgbWpwZWdTZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gICAgaWYgKGRldmljZVN0cmVhbWluZ1Byb2Mua2lsbCgwKSkge1xuICAgICAgZGV2aWNlU3RyZWFtaW5nUHJvYy5raWxsKCdTSUdJTlQnKTtcbiAgICB9XG4gICAgaWYgKGdzdHJlYW1lclBpcGVsaW5lLmlzUnVubmluZykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ3N0cmVhbWVyUGlwZWxpbmUuc3RvcCgnU0lHSU5UJyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZ3N0cmVhbWVyUGlwZWxpbmUuc3RvcCgnU0lHS0lMTCcpO1xuICAgICAgICB9IGNhdGNoIChlMSkge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yKGUxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBTdWNjZXNzZnVsbHkgdGVybWluYXRlZCB0aGUgc2NyZWVuIHN0cmVhbWluZyBNSlBFRyBzZXJ2ZXJgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLl9zY3JlZW5TdHJlYW1pbmdQcm9wcyA9IG51bGw7XG4gIH1cbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBL0I7QUFDQSxNQUFNQyw0QkFBNEIsR0FBRyxJQUFyQztBQUNBLE1BQU1DLGdCQUFnQixHQUFJLGlCQUFnQkMsZUFBQSxDQUFPQyxTQUFQLEtBQXFCLE1BQXJCLEdBQThCLEVBQUcsRUFBM0U7QUFDQSxNQUFNQyxrQkFBa0IsR0FBSSxrQkFBaUJGLGVBQUEsQ0FBT0MsU0FBUCxLQUFxQixNQUFyQixHQUE4QixFQUFHLEVBQTlFO0FBQ0EsTUFBTUUsb0JBQW9CLEdBQUc7RUFDM0JDLFVBQVUsRUFBRSxXQURlO0VBRTNCQyxTQUFTLEVBQUUsaUJBRmdCO0VBRzNCQyxPQUFPLEVBQUUsa0JBSGtCO0VBSTNCQyxhQUFhLEVBQUUsa0JBSlk7RUFLM0JDLFlBQVksRUFBRTtBQUxhLENBQTdCO0FBT0EsTUFBTUMsbUJBQW1CLEdBQUcsY0FBNUI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx1RUFBekI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsV0FBckI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsV0FBakI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsSUFBckI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsRUFBeEI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsT0FBeEI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsb0NBQXhCO0FBRUEsTUFBTUMsNEJBQTRCLEdBQUcsc0JBQXJDOztBQUVBLFNBQVNDLHFCQUFULENBQWdDQyxVQUFoQyxFQUE0Q0MsSUFBNUMsRUFBa0Q7RUFDaEQsT0FBT0MsZUFBQSxDQUFPQyxTQUFQLENBQWtCLEdBQUVILFVBQVcsR0FBZCxHQUFtQkksZUFBQSxDQUFFQyxRQUFGLENBQVdKLElBQVgsRUFBaUI7SUFDMURLLE1BQU0sRUFBRSxDQURrRDtJQUUxREMsUUFBUSxFQUFFO0VBRmdELENBQWpCLENBQXBDLENBQVA7QUFJRDs7QUFFRCxlQUFlQywyQkFBZixDQUE0Q0MsR0FBNUMsRUFBaUQ7RUFDL0MsSUFBSSxDQUFDTCxlQUFBLENBQUVNLElBQUYsQ0FBTyxNQUFNRCxHQUFHLENBQUNFLEtBQUosQ0FBVSxDQUFDLE9BQUQsRUFBVXJCLG1CQUFWLENBQVYsQ0FBYixDQUFMLEVBQThEO0lBQzVELE1BQU0sSUFBSXNCLEtBQUosQ0FDSCxpQkFBZ0J0QixtQkFBb0Isb0RBRGpDLENBQU47RUFFRDs7RUFFRCxNQUFNdUIsc0JBQXNCLEdBQUcsRUFBL0I7O0VBQ0EsS0FBSyxNQUFNQyxVQUFYLElBQXlCLENBQUNsQyxnQkFBRCxFQUFtQkcsa0JBQW5CLENBQXpCLEVBQWlFO0lBQy9EOEIsc0JBQXNCLENBQUNFLElBQXZCLENBQTRCLENBQUMsWUFBWTtNQUN2QyxJQUFJO1FBQ0YsTUFBTUMsV0FBQSxDQUFHQyxLQUFILENBQVNILFVBQVQsQ0FBTjtNQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7UUFDVixNQUFNLElBQUlOLEtBQUosQ0FBVyxRQUFPRSxVQUFXLDREQUFuQixHQUNiLE9BQU12QixnQkFBaUIseUNBRHBCLENBQU47TUFFRDtJQUNGLENBUDJCLEdBQTVCO0VBUUQ7O0VBQ0QsTUFBTTRCLGlCQUFBLENBQUVDLEdBQUYsQ0FBTVAsc0JBQU4sQ0FBTjtFQUVBLE1BQU1RLG1CQUFtQixHQUFHLEVBQTVCOztFQUNBLEtBQUssTUFBTSxDQUFDQyxJQUFELEVBQU9DLE9BQVAsQ0FBWCxJQUE4Qm5CLGVBQUEsQ0FBRW9CLE9BQUYsQ0FBVXhDLG9CQUFWLENBQTlCLEVBQStEO0lBQzdEcUMsbUJBQW1CLENBQUNOLElBQXBCLENBQXlCLENBQUMsWUFBWTtNQUNwQyxNQUFNO1FBQUNVO01BQUQsSUFBVyxNQUFNLElBQUFDLGtCQUFBLEVBQUszQyxrQkFBTCxFQUF5QixDQUFDdUMsSUFBRCxDQUF6QixDQUF2Qjs7TUFDQSxJQUFJLENBQUNsQixlQUFBLENBQUV1QixRQUFGLENBQVdGLE1BQVgsRUFBbUJGLE9BQW5CLENBQUwsRUFBa0M7UUFDaEMsTUFBTSxJQUFJWCxLQUFKLENBQ0gsa0NBQWlDVSxJQUFLLFdBQVVDLE9BQVEsNkJBQXpELEdBQ0MsT0FBTWhDLGdCQUFpQix5Q0FGcEIsQ0FBTjtNQUdEO0lBQ0YsQ0FQd0IsR0FBekI7RUFRRDs7RUFDRCxNQUFNNEIsaUJBQUEsQ0FBRUMsR0FBRixDQUFNQyxtQkFBTixDQUFOO0FBQ0Q7O0FBRUQsZUFBZU8sYUFBZixDQUE4Qm5CLEdBQTlCLEVBQW1Db0IsR0FBRyxHQUFHLElBQXpDLEVBQStDO0VBQzdDLE1BQU1DLE1BQU0sR0FBRyxNQUFNckIsR0FBRyxDQUFDRSxLQUFKLENBQVUsQ0FBQyxTQUFELEVBQVksU0FBWixDQUFWLENBQXJCO0VBQ0EsTUFBTW9CLE1BQU0sR0FBRyxFQUFmOztFQUNBLEtBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1DLE9BQU4sQ0FBWCxJQUE2QixDQUMzQixDQUFDLE9BQUQsRUFBVSxxQkFBVixDQUQyQixFQUUzQixDQUFDLFFBQUQsRUFBVyxzQkFBWCxDQUYyQixFQUczQixDQUFDLEtBQUQsRUFBUSxhQUFSLENBSDJCLENBQTdCLEVBSUc7SUFDRCxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQ1AsSUFBUixDQUFhSSxNQUFiLENBQWQ7O0lBQ0EsSUFBSSxDQUFDSSxLQUFMLEVBQVk7TUFDVkwsR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCxZQUFBQSxHQUFHLENBQUVNLEtBQUwsQ0FBV0wsTUFBWDtNQUNBLE1BQU0sSUFBSWxCLEtBQUosQ0FBVywyQkFBMEJvQixHQUFJLGdDQUEvQixHQUNiLHdDQURHLENBQU47SUFFRDs7SUFDREQsTUFBTSxDQUFDQyxHQUFELENBQU4sR0FBY0ksUUFBUSxDQUFDRixLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVcsRUFBWCxDQUF0QjtFQUNEOztFQUNESCxNQUFNLENBQUM5QixJQUFQLEdBQWNRLEdBQUcsQ0FBQzRCLFdBQWxCO0VBQ0EsT0FBT04sTUFBUDtBQUNEOztBQUVELGVBQWVPLHVCQUFmLENBQXdDN0IsR0FBeEMsRUFBNkNvQixHQUE3QyxFQUFrRFUsVUFBbEQsRUFBOERDLElBQUksR0FBRyxFQUFyRSxFQUF5RTtFQUN2RSxNQUFNO0lBQ0pDLEtBREk7SUFFSkMsTUFGSTtJQUdKQztFQUhJLElBSUZILElBSko7RUFLQSxNQUFNSSxhQUFhLEdBQUdSLFFBQVEsQ0FBQ0ssS0FBRCxFQUFRLEVBQVIsQ0FBUixJQUF1QkYsVUFBVSxDQUFDRSxLQUF4RDtFQUNBLE1BQU1JLGNBQWMsR0FBR1QsUUFBUSxDQUFDTSxNQUFELEVBQVMsRUFBVCxDQUFSLElBQXdCSCxVQUFVLENBQUNHLE1BQTFEO0VBQ0EsTUFBTUksZUFBZSxHQUFHVixRQUFRLENBQUNPLE9BQUQsRUFBVSxFQUFWLENBQVIsSUFBeUIvQyxlQUFqRDtFQUNBLElBQUltRCxlQUFlLEdBQUd6RCxtQkFBbUIsR0FDdEMsdUJBRG1CLEdBR25CLGlCQUFnQlosc0JBQXVCLEVBSDFDOztFQUlBLElBQUkrRCxLQUFLLElBQUlDLE1BQWIsRUFBcUI7SUFDbkJLLGVBQWUsSUFBSyxXQUFVSCxhQUFjLElBQUdDLGNBQWUsRUFBOUQ7RUFDRDs7RUFDRCxJQUFJRixPQUFKLEVBQWE7SUFDWEksZUFBZSxJQUFLLGVBQWNELGVBQWdCLEVBQWxEO0VBQ0Q7O0VBQ0QsTUFBTUUsT0FBTyxHQUFHLENBQ2QsR0FBR3ZDLEdBQUcsQ0FBQ3dDLFVBQUosQ0FBZUMsV0FESixFQUVkLFVBRmMsRUFLYixrQkFBaUJILGVBQWdCLFVBTHBCLENBQWhCO0VBT0EsTUFBTUksZUFBZSxHQUFHLElBQUFDLG9CQUFBLEVBQU0zQyxHQUFHLENBQUN3QyxVQUFKLENBQWVJLElBQXJCLEVBQTJCTCxPQUEzQixDQUF4QjtFQUNBRyxlQUFlLENBQUNHLEVBQWhCLENBQW1CLE1BQW5CLEVBQTJCLENBQUNDLElBQUQsRUFBT0MsTUFBUCxLQUFrQjtJQUMzQzNCLEdBQUcsQ0FBQ00sS0FBSixDQUFXLDZDQUE0Q29CLElBQUssWUFBV0MsTUFBTyxFQUE5RTtFQUNELENBRkQ7RUFJQSxJQUFJQyxTQUFTLEdBQUcsS0FBaEI7RUFDQSxNQUFNQyxxQkFBcUIsR0FBRzNELHFCQUFxQixDQUFDVCxtQkFBRCxFQUFzQmlELFVBQVUsQ0FBQ3RDLElBQWpDLENBQW5EOztFQUNBLE1BQU0wRCxjQUFjLEdBQUlDLEtBQUQsSUFBVztJQUNoQyxNQUFNQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsUUFBTixFQUFmOztJQUNBLElBQUkxRCxlQUFBLENBQUVNLElBQUYsQ0FBT21ELE1BQVAsQ0FBSixFQUFvQjtNQUNsQkgscUJBQXFCLENBQUN2QixLQUF0QixDQUE0QjBCLE1BQTVCO0lBQ0Q7RUFDRixDQUxEOztFQU1BVixlQUFlLENBQUNVLE1BQWhCLENBQXVCUCxFQUF2QixDQUEwQixNQUExQixFQUFrQ0ssY0FBbEM7O0VBRUEsTUFBTUksZUFBZSxHQUFJSCxLQUFELElBQVc7SUFDakMsSUFBSSxDQUFDSCxTQUFMLEVBQWdCO01BQ2RBLFNBQVMsR0FBRyxDQUFDckQsZUFBQSxDQUFFNEQsT0FBRixDQUFVSixLQUFWLENBQWI7SUFDRDtFQUNGLENBSkQ7O0VBS0FULGVBQWUsQ0FBQzFCLE1BQWhCLENBQXVCNkIsRUFBdkIsQ0FBMEIsTUFBMUIsRUFBa0NTLGVBQWxDOztFQUVBLElBQUk7SUFDRmxDLEdBQUcsQ0FBQ29DLElBQUosQ0FBVSw4QkFBNkJDLGFBQUEsQ0FBS0MsS0FBTCxDQUFXLENBQUMxRCxHQUFHLENBQUN3QyxVQUFKLENBQWVJLElBQWhCLEVBQXNCLEdBQUdMLE9BQXpCLENBQVgsQ0FBOEMsRUFBckY7SUFDQSxNQUFNLElBQUFvQiwwQkFBQSxFQUFpQixNQUFNWCxTQUF2QixFQUFrQztNQUN0Q1ksTUFBTSxFQUFFMUYsNEJBRDhCO01BRXRDMkYsVUFBVSxFQUFFO0lBRjBCLENBQWxDLENBQU47RUFJRCxDQU5ELENBTUUsT0FBT3BELENBQVAsRUFBVTtJQUNWVyxHQUFHLENBQUMwQyxhQUFKLENBQ0csOERBQTZEckQsQ0FBQyxDQUFDc0QsT0FBUSxFQUQxRTtFQUVELENBVEQsU0FTVTtJQUNSckIsZUFBZSxDQUFDVSxNQUFoQixDQUF1QlksY0FBdkIsQ0FBc0MsTUFBdEMsRUFBOENkLGNBQTlDO0lBQ0FSLGVBQWUsQ0FBQzFCLE1BQWhCLENBQXVCZ0QsY0FBdkIsQ0FBc0MsTUFBdEMsRUFBOENWLGVBQTlDO0VBQ0Q7O0VBQ0QsT0FBT1osZUFBUDtBQUNEOztBQUVELGVBQWV1QixxQkFBZixDQUFzQ0MsbUJBQXRDLEVBQTJEcEMsVUFBM0QsRUFBdUVWLEdBQXZFLEVBQTRFVyxJQUFJLEdBQUcsRUFBbkYsRUFBdUY7RUFDckYsTUFBTTtJQUNKQyxLQURJO0lBRUpDLE1BRkk7SUFHSmtDLE9BSEk7SUFJSkMsT0FKSTtJQUtKQyxnQkFMSTtJQU1KQztFQU5JLElBT0Z2QyxJQVBKO0VBUUEsTUFBTUksYUFBYSxHQUFHUixRQUFRLENBQUNLLEtBQUQsRUFBUSxFQUFSLENBQVIsSUFBdUJGLFVBQVUsQ0FBQ0UsS0FBeEQ7RUFDQSxNQUFNSSxjQUFjLEdBQUdULFFBQVEsQ0FBQ00sTUFBRCxFQUFTLEVBQVQsQ0FBUixJQUF3QkgsVUFBVSxDQUFDRyxNQUExRDtFQUNBLE1BQU1zQyxpQkFBaUIsR0FBRyxJQUFJQyx3QkFBSixDQUFlckcsZ0JBQWYsRUFBaUMsQ0FDekQsSUFEeUQsRUFFekQsT0FGeUQsRUFFaEQsTUFGZ0QsRUFHekQsR0FIeUQsRUFHcEQsa0JBQ0YsU0FBUWtHLGdCQUFnQixHQUFHSSxJQUFJLENBQUNDLEdBQUwsQ0FBU3ZDLGFBQVQsRUFBd0JDLGNBQXhCLENBQUgsR0FBNkNELGFBQWMsR0FEakYsR0FFRixVQUFTa0MsZ0JBQWdCLEdBQUdJLElBQUksQ0FBQ0MsR0FBTCxDQUFTdkMsYUFBVCxFQUF3QkMsY0FBeEIsQ0FBSCxHQUE2Q0EsY0FBZSxHQUZuRixHQUdGLGFBQVlOLFVBQVUsQ0FBQzZDLEdBQUksS0FIekIsR0FJSCxrQkFQdUQsRUFRekQsR0FSeUQsRUFRcEQsV0FSb0QsRUFTekQsR0FUeUQsRUFTcEQsT0FUb0QsRUFTM0Msa0JBVDJDLEVBVXpELEdBVnlELEVBVXBELFlBVm9ELEVBV3pELEdBWHlELEVBV3BELE9BWG9ELEVBVzNDLGtCQVgyQyxFQVl6RCxHQVp5RCxFQVlwRCxTQVpvRCxFQVl4QyxXQUFVUixPQUFRLEVBWnNCLEVBYXpELEdBYnlELEVBYXBELGNBYm9ELEVBYW5DLFlBQVcvRSxlQUFnQixFQWJRLEVBY3pELEdBZHlELEVBY3BELGVBZG9ELEVBY2xDLFFBQU9KLFFBQVMsRUFka0IsRUFjZCxRQUFPb0YsT0FBUSxFQWRELENBQWpDLEVBZXZCO0lBQ0RRLEtBQUssRUFBRSxDQUFDVixtQkFBbUIsQ0FBQ2xELE1BQXJCLEVBQTZCLE1BQTdCLEVBQXFDLE1BQXJDO0VBRE4sQ0FmdUIsQ0FBMUI7RUFrQkF1RCxpQkFBaUIsQ0FBQzFCLEVBQWxCLENBQXFCLE1BQXJCLEVBQTZCLENBQUNDLElBQUQsRUFBT0MsTUFBUCxLQUFrQjtJQUM3QzNCLEdBQUcsQ0FBQ00sS0FBSixDQUFXLCtDQUE4Q29CLElBQUssWUFBV0MsTUFBTyxFQUFoRjtFQUNELENBRkQ7RUFHQSxNQUFNOEIsZUFBZSxHQUFHdkYscUJBQXFCLENBQUMsS0FBRCxFQUFRd0MsVUFBVSxDQUFDdEMsSUFBbkIsQ0FBN0M7O0VBQ0EsTUFBTXNGLGlCQUFpQixHQUFHLENBQUM5RCxNQUFELEVBQVNvQyxNQUFULEtBQW9CO0lBQzVDLElBQUl6RCxlQUFBLENBQUVNLElBQUYsQ0FBT21ELE1BQU0sSUFBSXBDLE1BQWpCLENBQUosRUFBOEI7TUFDNUI2RCxlQUFlLENBQUNuRCxLQUFoQixDQUFzQjBCLE1BQU0sSUFBSXBDLE1BQWhDO0lBQ0Q7RUFDRixDQUpEOztFQUtBdUQsaUJBQWlCLENBQUMxQixFQUFsQixDQUFxQixRQUFyQixFQUErQmlDLGlCQUEvQjtFQUNBLElBQUlDLE9BQU8sR0FBRyxLQUFkOztFQUNBLElBQUk7SUFDRjNELEdBQUcsQ0FBQ29DLElBQUosQ0FBVSxnQ0FBK0JlLGlCQUFpQixDQUFDUyxHQUFJLEVBQS9EO0lBQ0EsTUFBTVQsaUJBQWlCLENBQUNVLEtBQWxCLENBQXdCLENBQXhCLENBQU47SUFDQSxNQUFNLElBQUF0QiwwQkFBQSxFQUFpQixZQUFZO01BQ2pDLElBQUk7UUFDRixPQUFPLENBQUMsTUFBTSxJQUFBdUIsNEJBQUEsRUFBZ0JkLE9BQWhCLEVBQXlCcEYsUUFBekIsQ0FBUCxNQUErQyxNQUF0RDtNQUNELENBRkQsQ0FFRSxPQUFPbUcsR0FBUCxFQUFZO1FBQ1osT0FBTyxLQUFQO01BQ0Q7SUFDRixDQU5LLEVBTUg7TUFDRHZCLE1BQU0sRUFBRTFGLDRCQURQO01BRUQyRixVQUFVLEVBQUU7SUFGWCxDQU5HLENBQU47RUFVRCxDQWJELENBYUUsT0FBT3BELENBQVAsRUFBVTtJQUNWc0UsT0FBTyxHQUFHLElBQVY7SUFDQTNELEdBQUcsQ0FBQzBDLGFBQUosQ0FDRywrREFBOERyRCxDQUFDLENBQUNzRCxPQUFRLEVBRDNFO0VBRUQsQ0FqQkQsU0FpQlU7SUFDUixJQUFJLENBQUNPLGtCQUFELElBQXVCUyxPQUEzQixFQUFvQztNQUNsQ1IsaUJBQWlCLENBQUNQLGNBQWxCLENBQWlDLFFBQWpDLEVBQTJDYyxpQkFBM0M7SUFDRDtFQUNGOztFQUNELE9BQU9QLGlCQUFQO0FBQ0Q7O0FBRUQsU0FBU2Esb0JBQVQsQ0FBK0JDLEdBQS9CLEVBQW9DO0VBQ2xDLE9BQU9BLEdBQUcsQ0FBQ0MsT0FBSixDQUFZLGlCQUFaLEtBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxhQURULElBRUZILEdBQUcsQ0FBQ0ksVUFBSixDQUFlRCxhQUZiLElBR0ZILEdBQUcsQ0FBQ0ksVUFBSixDQUFlRixNQUFmLENBQXNCQyxhQUgzQjtBQUlEOztBQTJDRHhILFFBQVEsQ0FBQzBILDBCQUFULEdBQXNDLGVBQWVBLDBCQUFmLENBQTJDQyxPQUFPLEdBQUcsRUFBckQsRUFBeUQ7RUFDN0YsS0FBS0Msb0JBQUwsQ0FBMEJ2Ryw0QkFBMUI7RUFFQSxNQUFNO0lBQ0oyQyxLQURJO0lBRUpDLE1BRkk7SUFHSkMsT0FISTtJQUlKMkQsSUFBSSxHQUFHOUcsWUFKSDtJQUtKK0csSUFBSSxHQUFHN0csWUFMSDtJQU1KOEcsUUFOSTtJQU9KM0IsT0FBTyxHQUFHbkYsWUFBWSxHQUFHLENBUHJCO0lBUUprRixPQUFPLEdBQUdqRixlQVJOO0lBU0ptRixnQkFBZ0IsR0FBRyxLQVRmO0lBVUpDLGtCQUFrQixHQUFHO0VBVmpCLElBV0ZxQixPQVhKOztFQWFBLElBQUloRyxlQUFBLENBQUVxRyxXQUFGLENBQWMsS0FBS0MscUJBQW5CLENBQUosRUFBK0M7SUFDN0MsTUFBTWxHLDJCQUEyQixDQUFDLEtBQUtDLEdBQU4sQ0FBakM7RUFDRDs7RUFDRCxJQUFJLENBQUNMLGVBQUEsQ0FBRTRELE9BQUYsQ0FBVSxLQUFLMEMscUJBQWYsQ0FBTCxFQUE0QztJQUMxQyxLQUFLN0UsR0FBTCxDQUFTb0MsSUFBVCxDQUFlLG1EQUFELEdBQ1gsNENBREg7SUFFQTtFQUNEOztFQUNELElBQUksQ0FBQyxNQUFNLElBQUEwQiw0QkFBQSxFQUFnQlksSUFBaEIsRUFBc0JELElBQXRCLENBQVAsTUFBd0MsTUFBNUMsRUFBb0Q7SUFDbEQsS0FBS3pFLEdBQUwsQ0FBU29DLElBQVQsQ0FBZSxhQUFZc0MsSUFBSyxPQUFNRCxJQUFLLFlBQTdCLEdBQ1gsa0RBREg7SUFFQTtFQUNEOztFQUNELElBQUksQ0FBQyxNQUFNLElBQUFYLDRCQUFBLEVBQWdCZCxPQUFoQixFQUF5QnBGLFFBQXpCLENBQVAsTUFBK0MsTUFBbkQsRUFBMkQ7SUFDekQsS0FBS29DLEdBQUwsQ0FBUzBDLGFBQVQsQ0FBd0IsYUFBWU0sT0FBUSxPQUFNcEYsUUFBUyxZQUFwQyxHQUNwQiwwREFESDtFQUVEOztFQUNELEtBQUtpSCxxQkFBTCxHQUE2QixJQUE3QjtFQUVBLE1BQU1uRSxVQUFVLEdBQUcsTUFBTVgsYUFBYSxDQUFDLEtBQUtuQixHQUFOLEVBQVcsS0FBS29CLEdBQWhCLENBQXRDO0VBQ0EsTUFBTThDLG1CQUFtQixHQUFHLE1BQU1yQyx1QkFBdUIsQ0FBQyxLQUFLN0IsR0FBTixFQUFXLEtBQUtvQixHQUFoQixFQUFxQlUsVUFBckIsRUFBaUM7SUFDeEZFLEtBRHdGO0lBRXhGQyxNQUZ3RjtJQUd4RkM7RUFId0YsQ0FBakMsQ0FBekQ7RUFLQSxJQUFJcUMsaUJBQUo7O0VBQ0EsSUFBSTtJQUNGQSxpQkFBaUIsR0FBRyxNQUFNTixxQkFBcUIsQ0FBQ0MsbUJBQUQsRUFBc0JwQyxVQUF0QixFQUFrQyxLQUFLVixHQUF2QyxFQUE0QztNQUN6RlksS0FEeUY7TUFFekZDLE1BRnlGO01BR3pGa0MsT0FIeUY7TUFJekZDLE9BSnlGO01BS3pGQyxnQkFMeUY7TUFNekZDO0lBTnlGLENBQTVDLENBQS9DO0VBUUQsQ0FURCxDQVNFLE9BQU83RCxDQUFQLEVBQVU7SUFDVixJQUFJeUQsbUJBQW1CLENBQUNnQyxJQUFwQixDQUF5QixDQUF6QixDQUFKLEVBQWlDO01BQy9CaEMsbUJBQW1CLENBQUNnQyxJQUFwQjtJQUNEOztJQUNELE1BQU16RixDQUFOO0VBQ0Q7O0VBRUQsSUFBSTBGLFdBQUo7RUFDQSxJQUFJQyxXQUFKOztFQUNBLElBQUk7SUFDRixNQUFNLElBQUkxRixpQkFBSixDQUFNLENBQUMyRixPQUFELEVBQVVDLE1BQVYsS0FBcUI7TUFDL0JILFdBQVcsR0FBR0ksWUFBQSxDQUFJQyxnQkFBSixDQUFxQnBDLE9BQXJCLEVBQThCcEYsUUFBOUIsRUFBd0MsTUFBTTtRQUMxRCxLQUFLb0MsR0FBTCxDQUFTb0MsSUFBVCxDQUFlLG1EQUFrRHhFLFFBQVMsSUFBR29GLE9BQVEsRUFBckY7UUFDQWdDLFdBQVcsR0FBR0ssYUFBQSxDQUFLQyxZQUFMLENBQWtCLENBQUNyQixHQUFELEVBQU1zQixHQUFOLEtBQWM7VUFDNUMsTUFBTW5CLGFBQWEsR0FBR0osb0JBQW9CLENBQUNDLEdBQUQsQ0FBMUM7O1VBQ0EsTUFBTXVCLGVBQWUsR0FBR0MsWUFBQSxDQUFJQyxLQUFKLENBQVV6QixHQUFHLENBQUN3QixHQUFkLEVBQW1CZCxRQUEzQzs7VUFDQSxLQUFLM0UsR0FBTCxDQUFTb0MsSUFBVCxDQUFlLG1EQUFrRGdDLGFBQWMsR0FBakUsR0FDWCxJQUFHSCxHQUFHLENBQUNDLE9BQUosQ0FBWSxZQUFaLEtBQTZCLG9CQUFxQixRQUFPc0IsZUFBZ0IsRUFEL0U7O1VBR0EsSUFBSWIsUUFBUSxJQUFJYSxlQUFlLEtBQUtiLFFBQXBDLEVBQThDO1lBQzVDLEtBQUszRSxHQUFMLENBQVNvQyxJQUFULENBQWMsNEVBQWQ7WUFDQW1ELEdBQUcsQ0FBQ0ksU0FBSixDQUFjLEdBQWQsRUFBbUI7Y0FDakJDLFVBQVUsRUFBRSxPQURLO2NBRWpCLGdCQUFnQjtZQUZDLENBQW5CO1lBSUFMLEdBQUcsQ0FBQ00sS0FBSixDQUFXLElBQUdMLGVBQWdCLHFDQUE5QjtZQUNBRCxHQUFHLENBQUNPLEdBQUo7WUFDQTtVQUNEOztVQUVELEtBQUs5RixHQUFMLENBQVNvQyxJQUFULENBQWMsMEJBQWQ7VUFDQW1ELEdBQUcsQ0FBQ0ksU0FBSixDQUFjLEdBQWQsRUFBbUI7WUFDakIsaUJBQWlCLDJFQURBO1lBRWpCSSxNQUFNLEVBQUUsVUFGUztZQUdqQkgsVUFBVSxFQUFFLE9BSEs7WUFJakIsZ0JBQWlCLHVDQUFzQzVILGVBQWdCO1VBSnRELENBQW5CO1VBT0ErRyxXQUFXLENBQUNpQixJQUFaLENBQWlCVCxHQUFqQjtRQUNELENBMUJhLENBQWQ7UUEyQkFQLFdBQVcsQ0FBQ3ZELEVBQVosQ0FBZSxPQUFmLEVBQXlCcEMsQ0FBRCxJQUFPO1VBQzdCLEtBQUtXLEdBQUwsQ0FBU2lHLElBQVQsQ0FBYzVHLENBQWQ7VUFDQTZGLE1BQU0sQ0FBQzdGLENBQUQsQ0FBTjtRQUNELENBSEQ7UUFJQTJGLFdBQVcsQ0FBQ3ZELEVBQVosQ0FBZSxPQUFmLEVBQXdCLE1BQU07VUFDNUIsS0FBS3pCLEdBQUwsQ0FBU00sS0FBVCxDQUFnQiwwQkFBeUJtRSxJQUFLLElBQUdDLElBQUssa0JBQXREO1FBQ0QsQ0FGRDtRQUdBTSxXQUFXLENBQUN2RCxFQUFaLENBQWUsV0FBZixFQUE0QixNQUFNO1VBQ2hDLEtBQUt6QixHQUFMLENBQVNvQyxJQUFULENBQWUsK0NBQThDcUMsSUFBSyxJQUFHQyxJQUFLLEVBQTFFO1VBQ0FPLE9BQU87UUFDUixDQUhEO1FBSUFELFdBQVcsQ0FBQ2tCLE1BQVosQ0FBbUJ4QixJQUFuQixFQUF5QkQsSUFBekI7TUFDRCxDQXpDYSxDQUFkO01BMENBTSxXQUFXLENBQUN0RCxFQUFaLENBQWUsT0FBZixFQUF5QnBDLENBQUQsSUFBTztRQUM3QixLQUFLVyxHQUFMLENBQVNtRyxLQUFULENBQWU5RyxDQUFmO1FBQ0E2RixNQUFNLENBQUM3RixDQUFELENBQU47TUFDRCxDQUhEO0lBSUQsQ0EvQ0ssRUErQ0grRyxPQS9DRyxDQStDS3RKLDRCQS9DTCxFQWdESCxpREFBZ0RBLDRCQUE2QixJQWhEMUUsQ0FBTjtFQWlERCxDQWxERCxDQWtERSxPQUFPdUMsQ0FBUCxFQUFVO0lBQ1YsSUFBSXlELG1CQUFtQixDQUFDZ0MsSUFBcEIsQ0FBeUIsQ0FBekIsQ0FBSixFQUFpQztNQUMvQmhDLG1CQUFtQixDQUFDZ0MsSUFBcEI7SUFDRDs7SUFDRCxJQUFJM0IsaUJBQWlCLENBQUNrRCxTQUF0QixFQUFpQztNQUMvQixNQUFNbEQsaUJBQWlCLENBQUNtRCxJQUFsQixFQUFOO0lBQ0Q7O0lBQ0QsSUFBSXZCLFdBQUosRUFBaUI7TUFDZkEsV0FBVyxDQUFDd0IsT0FBWjtJQUNEOztJQUNELElBQUl2QixXQUFXLElBQUlBLFdBQVcsQ0FBQ3dCLFNBQS9CLEVBQTBDO01BQ3hDeEIsV0FBVyxDQUFDeUIsS0FBWjtJQUNEOztJQUNELE1BQU1wSCxDQUFOO0VBQ0Q7O0VBRUQsS0FBS3dGLHFCQUFMLEdBQTZCO0lBQzNCL0IsbUJBRDJCO0lBRTNCSyxpQkFGMkI7SUFHM0I0QixXQUgyQjtJQUkzQkM7RUFKMkIsQ0FBN0I7QUFNRCxDQXBJRDs7QUEwSUFwSSxRQUFRLENBQUM4Six5QkFBVCxHQUFxQyxlQUFlQSx5QkFBZixHQUE4RDtFQUNqRyxJQUFJbkksZUFBQSxDQUFFNEQsT0FBRixDQUFVLEtBQUswQyxxQkFBZixDQUFKLEVBQTJDO0lBQ3pDLElBQUksQ0FBQ3RHLGVBQUEsQ0FBRXFHLFdBQUYsQ0FBYyxLQUFLQyxxQkFBbkIsQ0FBTCxFQUFnRDtNQUM5QyxLQUFLN0UsR0FBTCxDQUFTTSxLQUFULENBQWdCLDJEQUFoQjtJQUNEOztJQUNEO0VBQ0Q7O0VBRUQsTUFBTTtJQUNKd0MsbUJBREk7SUFFSkssaUJBRkk7SUFHSjRCLFdBSEk7SUFJSkM7RUFKSSxJQUtGLEtBQUtILHFCQUxUOztFQU9BLElBQUk7SUFDRkUsV0FBVyxDQUFDZSxHQUFaOztJQUNBLElBQUlkLFdBQVcsQ0FBQ3dCLFNBQWhCLEVBQTJCO01BQ3pCeEIsV0FBVyxDQUFDeUIsS0FBWjtJQUNEOztJQUNELElBQUkzRCxtQkFBbUIsQ0FBQ2dDLElBQXBCLENBQXlCLENBQXpCLENBQUosRUFBaUM7TUFDL0JoQyxtQkFBbUIsQ0FBQ2dDLElBQXBCLENBQXlCLFFBQXpCO0lBQ0Q7O0lBQ0QsSUFBSTNCLGlCQUFpQixDQUFDa0QsU0FBdEIsRUFBaUM7TUFDL0IsSUFBSTtRQUNGLE1BQU1sRCxpQkFBaUIsQ0FBQ21ELElBQWxCLENBQXVCLFFBQXZCLENBQU47TUFDRCxDQUZELENBRUUsT0FBT2pILENBQVAsRUFBVTtRQUNWLEtBQUtXLEdBQUwsQ0FBU2lHLElBQVQsQ0FBYzVHLENBQWQ7O1FBQ0EsSUFBSTtVQUNGLE1BQU04RCxpQkFBaUIsQ0FBQ21ELElBQWxCLENBQXVCLFNBQXZCLENBQU47UUFDRCxDQUZELENBRUUsT0FBT0ssRUFBUCxFQUFXO1VBQ1gsS0FBSzNHLEdBQUwsQ0FBU21HLEtBQVQsQ0FBZVEsRUFBZjtRQUNEO01BQ0Y7SUFDRjs7SUFDRCxLQUFLM0csR0FBTCxDQUFTb0MsSUFBVCxDQUFlLDJEQUFmO0VBQ0QsQ0FyQkQsU0FxQlU7SUFDUixLQUFLeUMscUJBQUwsR0FBNkIsSUFBN0I7RUFDRDtBQUNGLENBdkNEOztlQTBDZWpJLFEifQ==
|
|
@@ -133,4 +133,4 @@ var _default = commands;
|
|
|
133
133
|
exports.default = _default;require('source-map-support').install();
|
|
134
134
|
|
|
135
135
|
|
|
136
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3N5c3RlbS1iYXJzLmpzIiwibmFtZXMiOlsiV0lORE9XX1RJVExFX1BBVFRFUk4iLCJGUkFNRV9QQVRURVJOIiwiU1VSRkFDRV9QQVRURVJOIiwiU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgiLCJOQVZJR0FUSU9OX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgiLCJERUZBVUxUX1dJTkRPV19QUk9QRVJUSUVTIiwidmlzaWJsZSIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21tYW5kcyIsInBhcnNlV2luZG93UHJvcGVydGllcyIsIm5hbWUiLCJwcm9wcyIsImxvZyIsInJlc3VsdCIsIl8iLCJjbG9uZURlZXAiLCJwcm9wTGluZXMiLCJqb2luIiwiZnJhbWVNYXRjaCIsImV4ZWMiLCJkZWJ1ZyIsIkVycm9yIiwicGFyc2VGbG9hdCIsInZpc2liaWxpdHlNYXRjaCIsInBhcnNlV2luZG93cyIsImxpbmVzIiwid2luZG93cyIsImN1cnJlbnRXaW5kb3dOYW1lIiwid2luZG93TmFtZVJvd0luZGVudCIsImxpbmUiLCJzcGxpdCIsIm1hcCIsInRyaW1FbmQiLCJjdXJyZW50SW5kZW50IiwibGVuZ3RoIiwidHJpbVN0YXJ0IiwiaXNOaWwiLCJtYXRjaCIsImlzQXJyYXkiLCJwdXNoIiwiaXNFbXB0eSIsInN0YXR1c0JhciIsIm5hdmlnYXRpb25CYXIiLCJ0b1BhaXJzIiwic3RhcnRzV2l0aCIsInVubWF0Y2hlZFdpbmRvd3MiLCJmaWx0ZXIiLCJ3aW5kb3ciLCJuYW1lUHJlZml4IiwiaW5mbyIsImtleXMiLCJnZXRTeXN0ZW1CYXJzIiwic3Rkb3V0IiwiYWRiIiwic2hlbGwiLCJlIiwibWVzc2FnZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zeXN0ZW0tYmFycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBXSU5ET1dfVElUTEVfUEFUVEVSTiA9IC9eXFxzK1dpbmRvd1xccyNcXGQrXFxzV2luZG93XFx7WzAtOWEtZl0rXFxzXFx3K1xccyhbXFx3LV0rKVxcfTokLztcbmNvbnN0IEZSQU1FX1BBVFRFUk4gPSAvXlxccyttRnJhbWU9XFxbKFswLTkuLV0rKSwoWzAtOS4tXSspXFxdXFxbKFswLTkuLV0rKSwoWzAtOS4tXSspXFxdL207XG5jb25zdCBTVVJGQUNFX1BBVFRFUk4gPSAvXlxccytTdXJmYWNlOlxcc3Nob3duPSh0cnVlfGZhbHNlKS9tO1xuY29uc3QgU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVggPSAnU3RhdHVzQmFyJztcbmNvbnN0IE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCA9ICdOYXZpZ2F0aW9uQmFyJztcbmNvbnN0IERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMgPSB7XG4gIHZpc2libGU6IGZhbHNlLFxuICB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxufTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXaW5kb3dQcm9wZXJ0aWVzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZpc2libGUgV2hldGhlciB0aGUgd2luZG93IGlzIHZpc2libGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB4IFdpbmRvdyB4IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB5IFdpbmRvdyB5IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCBXaW5kb3cgd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgV2luZG93IGhlaWdodFxuICovXG5cbi8qKlxuICogUGFyc2VzIHdpbmRvdyBwcm9wZXJ0aWVzIGZyb20gYWRiIGR1bXBzeXMgb3V0cHV0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB3aG9zZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBwYXJzZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gcHJvcHMgVGhlIGxpc3Qgb2YgcGFydGljdWxhciB3aW5kb3cgcHJvcGVydHkgbGluZXMuXG4gKiBDaGVjayB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3RzIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGlucHV0IGZvcm1hdC5cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICogQHJldHVybnMge1dpbmRvd1Byb3BlcnRpZXN9IFBhcnNlZCBwcm9wZXJ0aWVzIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBpc3N1ZSB3aGlsZSBwYXJzaW5nIHRoZSBwcm9wZXJ0aWVzIHN0cmluZ1xuICovXG5mdW5jdGlvbiBwYXJzZVdpbmRvd1Byb3BlcnRpZXMgKG5hbWUsIHByb3BzLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IHJlc3VsdCA9IF8uY2xvbmVEZWVwKERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMpO1xuICBjb25zdCBwcm9wTGluZXMgPSBwcm9wcy5qb2luKCdcXG4nKTtcbiAgY29uc3QgZnJhbWVNYXRjaCA9IEZSQU1FX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIWZyYW1lTWF0Y2gpIHtcbiAgICBsb2c/LmRlYnVnKHByb3BMaW5lcyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGZyYW1lIHNpemUgZnJvbSAnJHtuYW1lfScgd2luZG93IHByb3BlcnRpZXNgKTtcbiAgfVxuICByZXN1bHQueCA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFsxXSk7XG4gIHJlc3VsdC55ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzJdKTtcbiAgcmVzdWx0LndpZHRoID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzNdKSAtIHJlc3VsdC54O1xuICByZXN1bHQuaGVpZ2h0ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzRdKSAtIHJlc3VsdC55O1xuICBjb25zdCB2aXNpYmlsaXR5TWF0Y2ggPSBTVVJGQUNFX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIXZpc2liaWxpdHlNYXRjaCkge1xuICAgIGxvZz8uZGVidWcocHJvcExpbmVzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgdmlzaWJpbGl0eSB2YWx1ZSBmcm9tICcke25hbWV9JyB3aW5kb3cgcHJvcGVydGllc2ApO1xuICB9XG4gIHJlc3VsdC52aXNpYmxlID0gdmlzaWJpbGl0eU1hdGNoWzFdID09PSAndHJ1ZSc7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgc3RhdHVzIGFuZCBuYXZpZ2F0aW9uIGJhciBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3aW5kb3cgbWFuYWdlciBvdXRwdXQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBsaW5lcyBPdXRwdXQgZnJvbSBkdW1wc3lzIGNvbW1hbmQuXG4gKiBDaGVjayB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3RzIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGlucHV0IGZvcm1hdC5cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICogQHJldHVybiB7T2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyB0d28gaXRlbXMgd2hlcmUga2V5cyBhcmUgc3RhdHVzQmFyIGFuZCBuYXZpZ2F0aW9uQmFyLFxuICogYW5kIHZhbHVlcyBhcmUgY29ycmVzcG9uZGluZyBXaW5kb3dQcm9wZXJ0aWVzIG9iamVjdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBubyB3aW5kb3cgcHJvcGVydGllcyBjb3VsZCBiZSBwYXJzZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VXaW5kb3dzIChsaW5lcywgbG9nID0gbnVsbCkge1xuICBjb25zdCB3aW5kb3dzID0ge307XG4gIGxldCBjdXJyZW50V2luZG93TmFtZSA9IG51bGw7XG4gIGxldCB3aW5kb3dOYW1lUm93SW5kZW50ID0gbnVsbDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNwbGl0KCdcXG4nKS5tYXAoXy50cmltRW5kKSkge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRlbnQgPSBsaW5lLmxlbmd0aCAtIF8udHJpbVN0YXJ0KGxpbmUpLmxlbmd0aDtcbiAgICBpZiAoXy5pc05pbCh3aW5kb3dOYW1lUm93SW5kZW50KSB8fCBjdXJyZW50SW5kZW50IDw9IHdpbmRvd05hbWVSb3dJbmRlbnQpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gV0lORE9XX1RJVExFX1BBVFRFUk4uZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY3VycmVudFdpbmRvd05hbWUgPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRXaW5kb3dOYW1lID0gbWF0Y2hbMV07XG4gICAgICBpZiAoXy5pc05pbCh3aW5kb3dOYW1lUm93SW5kZW50KSkge1xuICAgICAgICB3aW5kb3dOYW1lUm93SW5kZW50ID0gY3VycmVudEluZGVudDtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIWN1cnJlbnRXaW5kb3dOYW1lIHx8IGN1cnJlbnRJbmRlbnQgPD0gd2luZG93TmFtZVJvd0luZGVudCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzQXJyYXkod2luZG93c1tjdXJyZW50V2luZG93TmFtZV0pKSB7XG4gICAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXSA9IFtdO1xuICAgIH1cbiAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXS5wdXNoKGxpbmUpO1xuICB9XG4gIGlmIChfLmlzRW1wdHkod2luZG93cykpIHtcbiAgICBsb2c/LmRlYnVnKGxpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSBhbnkgd2luZG93IGluZm9ybWF0aW9uIGZyb20gdGhlIGR1bXBzeXMgb3V0cHV0Jyk7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7c3RhdHVzQmFyOiBudWxsLCBuYXZpZ2F0aW9uQmFyOiBudWxsfTtcbiAgZm9yIChjb25zdCBbbmFtZSwgcHJvcHNdIG9mIF8udG9QYWlycyh3aW5kb3dzKSkge1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgpKSB7XG4gICAgICByZXN1bHQuc3RhdHVzQmFyID0gcGFyc2VXaW5kb3dQcm9wZXJ0aWVzKG5hbWUsIHByb3BzLCBsb2cpO1xuICAgIH0gZWxzZSBpZiAobmFtZS5zdGFydHNXaXRoKE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCkpIHtcbiAgICAgIHJlc3VsdC5uYXZpZ2F0aW9uQmFyID0gcGFyc2VXaW5kb3dQcm9wZXJ0aWVzKG5hbWUsIHByb3BzLCBsb2cpO1xuICAgIH1cbiAgfVxuICBjb25zdCB1bm1hdGNoZWRXaW5kb3dzID0gW1xuICAgIFsnc3RhdHVzQmFyJywgU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVhdLFxuICAgIFsnbmF2aWdhdGlvbkJhcicsIE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWF1cbiAgXS5maWx0ZXIoKFtuYW1lXSkgPT4gXy5pc05pbChyZXN1bHRbbmFtZV0pKTtcbiAgZm9yIChjb25zdCBbd2luZG93LCBuYW1lUHJlZml4XSBvZiB1bm1hdGNoZWRXaW5kb3dzKSB7XG4gICAgbG9nPy5pbmZvKGBObyB3aW5kb3dzIGhhdmUgYmVlbiBmb3VuZCB3aG9zZSB0aXRsZSBtYXRjaGVzIHRvIGAgK1xuICAgICAgYCcke25hbWVQcmVmaXh9Jy4gQXNzdW1pbmcgaXQgaXMgaW52aXNpYmxlLiBgICtcbiAgICAgIGBPbmx5IHRoZSBmb2xsb3dpbmcgd2luZG93cyBhcmUgYXZhaWxhYmxlOiAke18ua2V5cyh3aW5kb3dzKX1gKTtcbiAgICByZXN1bHRbd2luZG93XSA9IF8uY2xvbmVEZWVwKERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbW1hbmRzLmdldFN5c3RlbUJhcnMgPSBhc3luYyBmdW5jdGlvbiBnZXRTeXN0ZW1CYXJzICgpIHtcbiAgbGV0IHN0ZG91dDtcbiAgdHJ5IHtcbiAgICBzdGRvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93JywgJ3dpbmRvd3MnXSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXRyaWV2ZSBzeXN0ZW0gYmFycyBkZXRhaWxzLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlV2luZG93cyhzdGRvdXQsIHRoaXMubG9nKTtcbn07XG5cbi8vIGZvciB1bml0IHRlc3RzXG5leHBvcnQgeyBwYXJzZVdpbmRvd3MsIHBhcnNlV2luZG93UHJvcGVydGllcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyx3REFBN0I7QUFDQSxNQUFNQyxhQUFhLEdBQUcsZ0VBQXRCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLG1DQUF4QjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLFdBQXRDO0FBQ0EsTUFBTUMsaUNBQWlDLEdBQUcsZUFBMUM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRztFQUNoQ0MsT0FBTyxFQUFFLEtBRHVCO0VBRWhDQyxDQUFDLEVBQUUsQ0FGNkI7RUFFMUJDLENBQUMsRUFBRSxDQUZ1QjtFQUVwQkMsS0FBSyxFQUFFLENBRmE7RUFFVkMsTUFBTSxFQUFFO0FBRkUsQ0FBbEM7QUFLQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7O0FBcUJBLFNBQVNDLHFCQUFULENBQWdDQyxJQUFoQyxFQUFzQ0MsS0FBdEMsRUFBNkNDLEdBQUcsR0FBRyxJQUFuRCxFQUF5RDtFQUN2RCxNQUFNQyxNQUFNLEdBQUdDLGdCQUFFQyxTQUFGLENBQVliLHlCQUFaLENBQWY7O0VBQ0EsTUFBTWMsU0FBUyxHQUFHTCxLQUFLLENBQUNNLElBQU4sQ0FBVyxJQUFYLENBQWxCO0VBQ0EsTUFBTUMsVUFBVSxHQUFHcEIsYUFBYSxDQUFDcUIsSUFBZCxDQUFtQkgsU0FBbkIsQ0FBbkI7O0VBQ0EsSUFBSSxDQUFDRSxVQUFMLEVBQWlCO0lBQ2ZOLEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFUSxLQUFMLENBQVdKLFNBQVg7SUFDQSxNQUFNLElBQUlLLEtBQUosQ0FBVyxxQ0FBb0NYLElBQUsscUJBQXBELENBQU47RUFDRDs7RUFDREcsTUFBTSxDQUFDVCxDQUFQLEdBQVdrQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFELENBQVgsQ0FBckI7RUFDQUwsTUFBTSxDQUFDUixDQUFQLEdBQVdpQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFELENBQVgsQ0FBckI7RUFDQUwsTUFBTSxDQUFDUCxLQUFQLEdBQWVnQixVQUFVLENBQUNKLFVBQVUsQ0FBQyxDQUFELENBQVgsQ0FBVixHQUE0QkwsTUFBTSxDQUFDVCxDQUFsRDtFQUNBUyxNQUFNLENBQUNOLE1BQVAsR0FBZ0JlLFVBQVUsQ0FBQ0osVUFBVSxDQUFDLENBQUQsQ0FBWCxDQUFWLEdBQTRCTCxNQUFNLENBQUNSLENBQW5EO0VBQ0EsTUFBTWtCLGVBQWUsR0FBR3hCLGVBQWUsQ0FBQ29CLElBQWhCLENBQXFCSCxTQUFyQixDQUF4Qjs7RUFDQSxJQUFJLENBQUNPLGVBQUwsRUFBc0I7SUFDcEJYLEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFUSxLQUFMLENBQVdKLFNBQVg7SUFDQSxNQUFNLElBQUlLLEtBQUosQ0FBVywyQ0FBMENYLElBQUsscUJBQTFELENBQU47RUFDRDs7RUFDREcsTUFBTSxDQUFDVixPQUFQLEdBQWlCb0IsZUFBZSxDQUFDLENBQUQsQ0FBZixLQUF1QixNQUF4QztFQUNBLE9BQU9WLE1BQVA7QUFDRDs7QUFZRCxTQUFTVyxZQUFULENBQXVCQyxLQUF2QixFQUE4QmIsR0FBRyxHQUFHLElBQXBDLEVBQTBDO0VBQ3hDLE1BQU1jLE9BQU8sR0FBRyxFQUFoQjtFQUNBLElBQUlDLGlCQUFpQixHQUFHLElBQXhCO0VBQ0EsSUFBSUMsbUJBQW1CLEdBQUcsSUFBMUI7O0VBQ0EsS0FBSyxNQUFNQyxJQUFYLElBQW1CSixLQUFLLENBQUNLLEtBQU4sQ0FBWSxJQUFaLEVBQWtCQyxHQUFsQixDQUFzQmpCLGdCQUFFa0IsT0FBeEIsQ0FBbkIsRUFBcUQ7SUFDbkQsTUFBTUMsYUFBYSxHQUFHSixJQUFJLENBQUNLLE1BQUwsR0FBY3BCLGdCQUFFcUIsU0FBRixDQUFZTixJQUFaLEVBQWtCSyxNQUF0RDs7SUFDQSxJQUFJcEIsZ0JBQUVzQixLQUFGLENBQVFSLG1CQUFSLEtBQWdDSyxhQUFhLElBQUlMLG1CQUFyRCxFQUEwRTtNQUN4RSxNQUFNUyxLQUFLLEdBQUd4QyxvQkFBb0IsQ0FBQ3NCLElBQXJCLENBQTBCVSxJQUExQixDQUFkOztNQUNBLElBQUksQ0FBQ1EsS0FBTCxFQUFZO1FBQ1ZWLGlCQUFpQixHQUFHLElBQXBCO1FBQ0E7TUFDRDs7TUFDREEsaUJBQWlCLEdBQUdVLEtBQUssQ0FBQyxDQUFELENBQXpCOztNQUNBLElBQUl2QixnQkFBRXNCLEtBQUYsQ0FBUVIsbUJBQVIsQ0FBSixFQUFrQztRQUNoQ0EsbUJBQW1CLEdBQUdLLGFBQXRCO01BQ0Q7O01BQ0Q7SUFDRDs7SUFDRCxJQUFJLENBQUNOLGlCQUFELElBQXNCTSxhQUFhLElBQUlMLG1CQUEzQyxFQUFnRTtNQUM5RDtJQUNEOztJQUVELElBQUksQ0FBQ2QsZ0JBQUV3QixPQUFGLENBQVVaLE9BQU8sQ0FBQ0MsaUJBQUQsQ0FBakIsQ0FBTCxFQUE0QztNQUMxQ0QsT0FBTyxDQUFDQyxpQkFBRCxDQUFQLEdBQTZCLEVBQTdCO0lBQ0Q7O0lBQ0RELE9BQU8sQ0FBQ0MsaUJBQUQsQ0FBUCxDQUEyQlksSUFBM0IsQ0FBZ0NWLElBQWhDO0VBQ0Q7O0VBQ0QsSUFBSWYsZ0JBQUUwQixPQUFGLENBQVVkLE9BQVYsQ0FBSixFQUF3QjtJQUN0QmQsR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCxZQUFBQSxHQUFHLENBQUVRLEtBQUwsQ0FBV0ssS0FBSyxDQUFDUixJQUFOLENBQVcsSUFBWCxDQUFYO0lBQ0EsTUFBTSxJQUFJSSxLQUFKLENBQVUsNkRBQVYsQ0FBTjtFQUNEOztFQUVELE1BQU1SLE1BQU0sR0FBRztJQUFDNEIsU0FBUyxFQUFFLElBQVo7SUFBa0JDLGFBQWEsRUFBRTtFQUFqQyxDQUFmOztFQUNBLEtBQUssTUFBTSxDQUFDaEMsSUFBRCxFQUFPQyxLQUFQLENBQVgsSUFBNEJHLGdCQUFFNkIsT0FBRixDQUFVakIsT0FBVixDQUE1QixFQUFnRDtJQUM5QyxJQUFJaEIsSUFBSSxDQUFDa0MsVUFBTCxDQUFnQjVDLDZCQUFoQixDQUFKLEVBQW9EO01BQ2xEYSxNQUFNLENBQUM0QixTQUFQLEdBQW1CaEMscUJBQXFCLENBQUNDLElBQUQsRUFBT0MsS0FBUCxFQUFjQyxHQUFkLENBQXhDO0lBQ0QsQ0FGRCxNQUVPLElBQUlGLElBQUksQ0FBQ2tDLFVBQUwsQ0FBZ0IzQyxpQ0FBaEIsQ0FBSixFQUF3RDtNQUM3RFksTUFBTSxDQUFDNkIsYUFBUCxHQUF1QmpDLHFCQUFxQixDQUFDQyxJQUFELEVBQU9DLEtBQVAsRUFBY0MsR0FBZCxDQUE1QztJQUNEO0VBQ0Y7O0VBQ0QsTUFBTWlDLGdCQUFnQixHQUFHLENBQ3ZCLENBQUMsV0FBRCxFQUFjN0MsNkJBQWQsQ0FEdUIsRUFFdkIsQ0FBQyxlQUFELEVBQWtCQyxpQ0FBbEIsQ0FGdUIsRUFHdkI2QyxNQUh1QixDQUdoQixDQUFDLENBQUNwQyxJQUFELENBQUQsS0FBWUksZ0JBQUVzQixLQUFGLENBQVF2QixNQUFNLENBQUNILElBQUQsQ0FBZCxDQUhJLENBQXpCOztFQUlBLEtBQUssTUFBTSxDQUFDcUMsTUFBRCxFQUFTQyxVQUFULENBQVgsSUFBbUNILGdCQUFuQyxFQUFxRDtJQUNuRGpDLEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFcUMsSUFBTCxDQUFXLG9EQUFELEdBQ1AsSUFBR0QsVUFBVywrQkFEUCxHQUVQLDZDQUE0Q2xDLGdCQUFFb0MsSUFBRixDQUFPeEIsT0FBUCxDQUFnQixFQUYvRDtJQUdBYixNQUFNLENBQUNrQyxNQUFELENBQU4sR0FBaUJqQyxnQkFBRUMsU0FBRixDQUFZYix5QkFBWixDQUFqQjtFQUNEOztFQUNELE9BQU9XLE1BQVA7QUFDRDs7QUFFREwsUUFBUSxDQUFDMkMsYUFBVCxHQUF5QixlQUFlQSxhQUFmLEdBQWdDO0VBQ3ZELElBQUlDLE1BQUo7O0VBQ0EsSUFBSTtJQUNGQSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZSxDQUFDLFNBQUQsRUFBWSxRQUFaLEVBQXNCLFNBQXRCLENBQWYsQ0FBZjtFQUNELENBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7SUFDVixNQUFNLElBQUlsQyxLQUFKLENBQVcsd0RBQXVEa0MsQ0FBQyxDQUFDQyxPQUFRLEVBQTVFLENBQU47RUFDRDs7RUFDRCxPQUFPaEMsWUFBWSxDQUFDNEIsTUFBRCxFQUFTLEtBQUt4QyxHQUFkLENBQW5CO0FBQ0QsQ0FSRDs7ZUFZZUosUSJ9
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3N5c3RlbS1iYXJzLmpzIiwibmFtZXMiOlsiV0lORE9XX1RJVExFX1BBVFRFUk4iLCJGUkFNRV9QQVRURVJOIiwiU1VSRkFDRV9QQVRURVJOIiwiU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgiLCJOQVZJR0FUSU9OX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgiLCJERUZBVUxUX1dJTkRPV19QUk9QRVJUSUVTIiwidmlzaWJsZSIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21tYW5kcyIsInBhcnNlV2luZG93UHJvcGVydGllcyIsIm5hbWUiLCJwcm9wcyIsImxvZyIsInJlc3VsdCIsIl8iLCJjbG9uZURlZXAiLCJwcm9wTGluZXMiLCJqb2luIiwiZnJhbWVNYXRjaCIsImV4ZWMiLCJkZWJ1ZyIsIkVycm9yIiwicGFyc2VGbG9hdCIsInZpc2liaWxpdHlNYXRjaCIsInBhcnNlV2luZG93cyIsImxpbmVzIiwid2luZG93cyIsImN1cnJlbnRXaW5kb3dOYW1lIiwid2luZG93TmFtZVJvd0luZGVudCIsImxpbmUiLCJzcGxpdCIsIm1hcCIsInRyaW1FbmQiLCJjdXJyZW50SW5kZW50IiwibGVuZ3RoIiwidHJpbVN0YXJ0IiwiaXNOaWwiLCJtYXRjaCIsImlzQXJyYXkiLCJwdXNoIiwiaXNFbXB0eSIsInN0YXR1c0JhciIsIm5hdmlnYXRpb25CYXIiLCJ0b1BhaXJzIiwic3RhcnRzV2l0aCIsInVubWF0Y2hlZFdpbmRvd3MiLCJmaWx0ZXIiLCJ3aW5kb3ciLCJuYW1lUHJlZml4IiwiaW5mbyIsImtleXMiLCJnZXRTeXN0ZW1CYXJzIiwic3Rkb3V0IiwiYWRiIiwic2hlbGwiLCJlIiwibWVzc2FnZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zeXN0ZW0tYmFycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBXSU5ET1dfVElUTEVfUEFUVEVSTiA9IC9eXFxzK1dpbmRvd1xccyNcXGQrXFxzV2luZG93XFx7WzAtOWEtZl0rXFxzXFx3K1xccyhbXFx3LV0rKVxcfTokLztcbmNvbnN0IEZSQU1FX1BBVFRFUk4gPSAvXlxccyttRnJhbWU9XFxbKFswLTkuLV0rKSwoWzAtOS4tXSspXFxdXFxbKFswLTkuLV0rKSwoWzAtOS4tXSspXFxdL207XG5jb25zdCBTVVJGQUNFX1BBVFRFUk4gPSAvXlxccytTdXJmYWNlOlxcc3Nob3duPSh0cnVlfGZhbHNlKS9tO1xuY29uc3QgU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVggPSAnU3RhdHVzQmFyJztcbmNvbnN0IE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCA9ICdOYXZpZ2F0aW9uQmFyJztcbmNvbnN0IERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMgPSB7XG4gIHZpc2libGU6IGZhbHNlLFxuICB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxufTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXaW5kb3dQcm9wZXJ0aWVzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZpc2libGUgV2hldGhlciB0aGUgd2luZG93IGlzIHZpc2libGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB4IFdpbmRvdyB4IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB5IFdpbmRvdyB5IGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCBXaW5kb3cgd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgV2luZG93IGhlaWdodFxuICovXG5cbi8qKlxuICogUGFyc2VzIHdpbmRvdyBwcm9wZXJ0aWVzIGZyb20gYWRiIGR1bXBzeXMgb3V0cHV0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB3aG9zZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBwYXJzZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gcHJvcHMgVGhlIGxpc3Qgb2YgcGFydGljdWxhciB3aW5kb3cgcHJvcGVydHkgbGluZXMuXG4gKiBDaGVjayB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3RzIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGlucHV0IGZvcm1hdC5cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICogQHJldHVybnMge1dpbmRvd1Byb3BlcnRpZXN9IFBhcnNlZCBwcm9wZXJ0aWVzIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBpc3N1ZSB3aGlsZSBwYXJzaW5nIHRoZSBwcm9wZXJ0aWVzIHN0cmluZ1xuICovXG5mdW5jdGlvbiBwYXJzZVdpbmRvd1Byb3BlcnRpZXMgKG5hbWUsIHByb3BzLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IHJlc3VsdCA9IF8uY2xvbmVEZWVwKERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMpO1xuICBjb25zdCBwcm9wTGluZXMgPSBwcm9wcy5qb2luKCdcXG4nKTtcbiAgY29uc3QgZnJhbWVNYXRjaCA9IEZSQU1FX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIWZyYW1lTWF0Y2gpIHtcbiAgICBsb2c/LmRlYnVnKHByb3BMaW5lcyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGZyYW1lIHNpemUgZnJvbSAnJHtuYW1lfScgd2luZG93IHByb3BlcnRpZXNgKTtcbiAgfVxuICByZXN1bHQueCA9IHBhcnNlRmxvYXQoZnJhbWVNYXRjaFsxXSk7XG4gIHJlc3VsdC55ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzJdKTtcbiAgcmVzdWx0LndpZHRoID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzNdKSAtIHJlc3VsdC54O1xuICByZXN1bHQuaGVpZ2h0ID0gcGFyc2VGbG9hdChmcmFtZU1hdGNoWzRdKSAtIHJlc3VsdC55O1xuICBjb25zdCB2aXNpYmlsaXR5TWF0Y2ggPSBTVVJGQUNFX1BBVFRFUk4uZXhlYyhwcm9wTGluZXMpO1xuICBpZiAoIXZpc2liaWxpdHlNYXRjaCkge1xuICAgIGxvZz8uZGVidWcocHJvcExpbmVzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgdmlzaWJpbGl0eSB2YWx1ZSBmcm9tICcke25hbWV9JyB3aW5kb3cgcHJvcGVydGllc2ApO1xuICB9XG4gIHJlc3VsdC52aXNpYmxlID0gdmlzaWJpbGl0eU1hdGNoWzFdID09PSAndHJ1ZSc7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgc3RhdHVzIGFuZCBuYXZpZ2F0aW9uIGJhciBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3aW5kb3cgbWFuYWdlciBvdXRwdXQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBsaW5lcyBPdXRwdXQgZnJvbSBkdW1wc3lzIGNvbW1hbmQuXG4gKiBDaGVjayB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3RzIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGlucHV0IGZvcm1hdC5cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICogQHJldHVybiB7T2JqZWN0fSBBbiBvYmplY3QgY29udGFpbmluZyB0d28gaXRlbXMgd2hlcmUga2V5cyBhcmUgc3RhdHVzQmFyIGFuZCBuYXZpZ2F0aW9uQmFyLFxuICogYW5kIHZhbHVlcyBhcmUgY29ycmVzcG9uZGluZyBXaW5kb3dQcm9wZXJ0aWVzIG9iamVjdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBubyB3aW5kb3cgcHJvcGVydGllcyBjb3VsZCBiZSBwYXJzZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VXaW5kb3dzIChsaW5lcywgbG9nID0gbnVsbCkge1xuICBjb25zdCB3aW5kb3dzID0ge307XG4gIGxldCBjdXJyZW50V2luZG93TmFtZSA9IG51bGw7XG4gIGxldCB3aW5kb3dOYW1lUm93SW5kZW50ID0gbnVsbDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNwbGl0KCdcXG4nKS5tYXAoXy50cmltRW5kKSkge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRlbnQgPSBsaW5lLmxlbmd0aCAtIF8udHJpbVN0YXJ0KGxpbmUpLmxlbmd0aDtcbiAgICBpZiAoXy5pc05pbCh3aW5kb3dOYW1lUm93SW5kZW50KSB8fCBjdXJyZW50SW5kZW50IDw9IHdpbmRvd05hbWVSb3dJbmRlbnQpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gV0lORE9XX1RJVExFX1BBVFRFUk4uZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY3VycmVudFdpbmRvd05hbWUgPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnRXaW5kb3dOYW1lID0gbWF0Y2hbMV07XG4gICAgICBpZiAoXy5pc05pbCh3aW5kb3dOYW1lUm93SW5kZW50KSkge1xuICAgICAgICB3aW5kb3dOYW1lUm93SW5kZW50ID0gY3VycmVudEluZGVudDtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIWN1cnJlbnRXaW5kb3dOYW1lIHx8IGN1cnJlbnRJbmRlbnQgPD0gd2luZG93TmFtZVJvd0luZGVudCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzQXJyYXkod2luZG93c1tjdXJyZW50V2luZG93TmFtZV0pKSB7XG4gICAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXSA9IFtdO1xuICAgIH1cbiAgICB3aW5kb3dzW2N1cnJlbnRXaW5kb3dOYW1lXS5wdXNoKGxpbmUpO1xuICB9XG4gIGlmIChfLmlzRW1wdHkod2luZG93cykpIHtcbiAgICBsb2c/LmRlYnVnKGxpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSBhbnkgd2luZG93IGluZm9ybWF0aW9uIGZyb20gdGhlIGR1bXBzeXMgb3V0cHV0Jyk7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7c3RhdHVzQmFyOiBudWxsLCBuYXZpZ2F0aW9uQmFyOiBudWxsfTtcbiAgZm9yIChjb25zdCBbbmFtZSwgcHJvcHNdIG9mIF8udG9QYWlycyh3aW5kb3dzKSkge1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVgpKSB7XG4gICAgICByZXN1bHQuc3RhdHVzQmFyID0gcGFyc2VXaW5kb3dQcm9wZXJ0aWVzKG5hbWUsIHByb3BzLCBsb2cpO1xuICAgIH0gZWxzZSBpZiAobmFtZS5zdGFydHNXaXRoKE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWCkpIHtcbiAgICAgIHJlc3VsdC5uYXZpZ2F0aW9uQmFyID0gcGFyc2VXaW5kb3dQcm9wZXJ0aWVzKG5hbWUsIHByb3BzLCBsb2cpO1xuICAgIH1cbiAgfVxuICBjb25zdCB1bm1hdGNoZWRXaW5kb3dzID0gW1xuICAgIFsnc3RhdHVzQmFyJywgU1RBVFVTX0JBUl9XSU5ET1dfTkFNRV9QUkVGSVhdLFxuICAgIFsnbmF2aWdhdGlvbkJhcicsIE5BVklHQVRJT05fQkFSX1dJTkRPV19OQU1FX1BSRUZJWF1cbiAgXS5maWx0ZXIoKFtuYW1lXSkgPT4gXy5pc05pbChyZXN1bHRbbmFtZV0pKTtcbiAgZm9yIChjb25zdCBbd2luZG93LCBuYW1lUHJlZml4XSBvZiB1bm1hdGNoZWRXaW5kb3dzKSB7XG4gICAgbG9nPy5pbmZvKGBObyB3aW5kb3dzIGhhdmUgYmVlbiBmb3VuZCB3aG9zZSB0aXRsZSBtYXRjaGVzIHRvIGAgK1xuICAgICAgYCcke25hbWVQcmVmaXh9Jy4gQXNzdW1pbmcgaXQgaXMgaW52aXNpYmxlLiBgICtcbiAgICAgIGBPbmx5IHRoZSBmb2xsb3dpbmcgd2luZG93cyBhcmUgYXZhaWxhYmxlOiAke18ua2V5cyh3aW5kb3dzKX1gKTtcbiAgICByZXN1bHRbd2luZG93XSA9IF8uY2xvbmVEZWVwKERFRkFVTFRfV0lORE9XX1BST1BFUlRJRVMpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbW1hbmRzLmdldFN5c3RlbUJhcnMgPSBhc3luYyBmdW5jdGlvbiBnZXRTeXN0ZW1CYXJzICgpIHtcbiAgbGV0IHN0ZG91dDtcbiAgdHJ5IHtcbiAgICBzdGRvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnd2luZG93JywgJ3dpbmRvd3MnXSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXRyaWV2ZSBzeXN0ZW0gYmFycyBkZXRhaWxzLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlV2luZG93cyhzdGRvdXQsIHRoaXMubG9nKTtcbn07XG5cbi8vIGZvciB1bml0IHRlc3RzXG5leHBvcnQgeyBwYXJzZVdpbmRvd3MsIHBhcnNlV2luZG93UHJvcGVydGllcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyx3REFBN0I7QUFDQSxNQUFNQyxhQUFhLEdBQUcsZ0VBQXRCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLG1DQUF4QjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLFdBQXRDO0FBQ0EsTUFBTUMsaUNBQWlDLEdBQUcsZUFBMUM7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRztFQUNoQ0MsT0FBTyxFQUFFLEtBRHVCO0VBRWhDQyxDQUFDLEVBQUUsQ0FGNkI7RUFFMUJDLENBQUMsRUFBRSxDQUZ1QjtFQUVwQkMsS0FBSyxFQUFFLENBRmE7RUFFVkMsTUFBTSxFQUFFO0FBRkUsQ0FBbEM7QUFLQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7O0FBcUJBLFNBQVNDLHFCQUFULENBQWdDQyxJQUFoQyxFQUFzQ0MsS0FBdEMsRUFBNkNDLEdBQUcsR0FBRyxJQUFuRCxFQUF5RDtFQUN2RCxNQUFNQyxNQUFNLEdBQUdDLGVBQUEsQ0FBRUMsU0FBRixDQUFZ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
|
|
@@ -395,4 +395,4 @@ var _default = extensions;
|
|
|
395
395
|
exports.default = _default;require('source-map-support').install();
|
|
396
396
|
|
|
397
397
|
|
|
398
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3RvdWNoLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImdldENvb3JkRGVmYXVsdCIsInZhbCIsInV0aWwiLCJoYXNWYWx1ZSIsImdldFN3aXBlVG91Y2hEdXJhdGlvbiIsIndhaXRHZXN0dXJlIiwiZHVyYXRpb24iLCJvcHRpb25zIiwibXMiLCJkb1RvdWNoQWN0aW9uIiwiYWN0aW9uIiwib3B0cyIsImVsZW1lbnQiLCJ4IiwieSIsImNvdW50IiwidGFwIiwidG91Y2hEb3duIiwidG91Y2hVcCIsInRvdWNoTW92ZSIsIkIiLCJkZWxheSIsInRvdWNoTG9uZ0NsaWNrIiwibG9nIiwid2FybiIsImVycm9yQW5kVGhyb3ciLCJkb1RvdWNoRHJhZyIsImdlc3R1cmVzIiwibG9uZ1ByZXNzIiwibW92ZVRvIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJnZXRMb2NhdGlvbkluVmlldyIsImFwaUxldmVsIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJNYXRoIiwibWF4IiwiZHJhZyIsImZpeFJlbGVhc2UiLCJyZWxlYXNlIiwiXyIsImxhc3QiLCJjbG9uZSIsInJlZiIsImdlc3R1cmUiLCJyZXZlcnNlIiwibG9jIiwic2l6ZSIsImdldFNpemUiLCJ3aWR0aCIsImhlaWdodCIsInBpY2siLCJwZXJmb3JtR2VzdHVyZSIsImUiLCJlcnJvcnMiLCJOb1N1Y2hFbGVtZW50RXJyb3IiLCJkZWJ1ZyIsImdldFN3aXBlT3B0aW9ucyIsInRvdWNoQ291bnQiLCJkZXN0RWxlbWVudCIsImxvY1Jlc3VsdCIsInNpemVSZXN1bHQiLCJvZmZzZXRYIiwiYWJzIiwib2Zmc2V0WSIsImZpcnN0RWxMb2NhdGlvbiIsInBlcmZvcm1Ub3VjaCIsImxlbmd0aCIsInN3aXBlT3B0cyIsInN3aXBlIiwiYWN0aW9ucyIsIm1hcCIsImhlYWQiLCJwb3AiLCJzbGljZSIsInByZXNzIiwic2hpZnQiLCJ3YWl0IiwiZml4ZWRHZXN0dXJlcyIsInBhcnNlVG91Y2giLCJnIiwibXVsdGkiLCJ0b3VjaFN0YXRlT2JqZWN0cyIsImluY2x1ZGVzIiwib2Zmc2V0IiwiZWxlbWVudElkIiwicG9zIiwidG91Y2hTdGF0ZU9iamVjdCIsInRpbWVPZmZzZXQiLCJwYXJzZUludCIsInByZXZQb3MiLCJ0aW1lIiwic3RhdGUiLCJpc1VuZGVmaW5lZCIsImFuZHJvaWRIZWxwZXJzIiwidHJ1bmNhdGVEZWNpbWFscyIsInRvdWNoIiwicGVyZm9ybU11bHRpQWN0aW9uIiwiRXJyb3IiLCJzdGF0ZXMiLCJkb1BlcmZvcm1NdWx0aUFjdGlvbiIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvdG91Y2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgYXN5bmNtYXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDb29yZERlZmF1bHQgKHZhbCkge1xuICAvLyBnb2luZyB0aGUgbG9uZyB3YXkgYW5kIGNoZWNraW5nIGZvciB1bmRlZmluZWQgYW5kIG51bGwgc2luY2VcbiAgLy8gd2UgY2FuJ3QgYmUgYXNzdXJlZCBgZWxJZGAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBpbnQuIFNhbWVcbiAgLy8gdGhpbmcgd2l0aCBkZXN0RWxlbWVudCBiZWxvdy5cbiAgcmV0dXJuIHV0aWwuaGFzVmFsdWUodmFsKSA/IHZhbCA6IDAuNTtcbn1cblxuZnVuY3Rpb24gZ2V0U3dpcGVUb3VjaER1cmF0aW9uICh3YWl0R2VzdHVyZSkge1xuICAvLyB0aGUgdG91Y2ggYWN0aW9uIGFwaSB1c2VzIG1zLCB3ZSB3YW50IHNlY29uZHNcbiAgLy8gMC44IGlzIHRoZSBkZWZhdWx0IHRpbWUgZm9yIHRoZSBvcGVyYXRpb25cbiAgbGV0IGR1cmF0aW9uID0gMC44O1xuICBpZiAodHlwZW9mIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgIT09ICd1bmRlZmluZWQnICYmIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMpIHtcbiAgICBkdXJhdGlvbiA9IHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgLyAxMDAwO1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gc2V0IHRvIGEgdmVyeSBsb3cgbnVtYmVyLCBzaW5jZSB0aGV5IHdhbnRlZCBpdCBmYXN0XG4gICAgICAvLyBidXQgYmVsb3cgMC4xIGJlY29tZXMgMCBzdGVwcywgd2hpY2ggY2F1c2VzIGVycm9yc1xuICAgICAgZHVyYXRpb24gPSAwLjE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkdXJhdGlvbjtcbn1cblxuY29tbWFuZHMuZG9Ub3VjaEFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvVG91Y2hBY3Rpb24gKGFjdGlvbiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgZWxlbWVudCwgeCwgeSwgY291bnQsIG1zLCBkdXJhdGlvbiB9ID0gb3B0cztcbiAgLy8gcGFyc2VUb3VjaCBwcmVjYWxjdWxhdGVzIGFic29sdXRlIGVsZW1lbnQgcG9zaXRpb25zXG4gIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcGFzcyBgZWxlbWVudGAgdG8gdGhlIGFmZmVjdGVkIGdlc3R1cmVzXG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSAndGFwJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRhcChudWxsLCB4LCB5LCBjb3VudCk7XG4gICAgY2FzZSAncHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hEb3duKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3JlbGVhc2UnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hVcChlbGVtZW50LCB4LCB5KTtcbiAgICBjYXNlICdtb3ZlVG8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hNb3ZlKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3dhaXQnOlxuICAgICAgcmV0dXJuIGF3YWl0IEIuZGVsYXkobXMpO1xuICAgIGNhc2UgJ2xvbmdQcmVzcyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50b3VjaExvbmdDbGljayhudWxsLCB4LCB5LCBkdXJhdGlvbiB8fCAxMDAwKTtcbiAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgLy8gVE9ETzogY2xhcmlmeSBiZWhhdmlvciBvZiAnY2FuY2VsJyBhY3Rpb24gYW5kIGZpeCB0aGlzXG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5jZWwgYWN0aW9uIGN1cnJlbnRseSBoYXMgbm8gZWZmZWN0Jyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgdW5rbm93biBhY3Rpb24gJHthY3Rpb259YCk7XG4gIH1cbn07XG5cbi8vIGRyYWcgaXMgKm5vdCogcHJlc3MtbW92ZS1yZWxlYXNlLCBzbyB3ZSBuZWVkIHRvIHRyYW5zbGF0ZVxuLy8gZHJhZyB3b3JrcyBmaW5lIGZvciBzY3JvbGwsIGFzIHdlbGxcbmhlbHBlcnMuZG9Ub3VjaERyYWcgPSBhc3luYyBmdW5jdGlvbiBkb1RvdWNoRHJhZyAoZ2VzdHVyZXMpIHtcbiAgbGV0IGxvbmdQcmVzcyA9IGdlc3R1cmVzWzBdO1xuICBsZXQgbW92ZVRvID0gZ2VzdHVyZXNbMV07XG4gIGxldCBzdGFydFggPSBsb25nUHJlc3Mub3B0aW9ucy54IHx8IDAsXG4gICAgICBzdGFydFkgPSBsb25nUHJlc3Mub3B0aW9ucy55IHx8IDAsXG4gICAgICBlbmRYID0gbW92ZVRvLm9wdGlvbnMueCB8fCAwLFxuICAgICAgZW5kWSA9IG1vdmVUby5vcHRpb25zLnkgfHwgMDtcbiAgaWYgKGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50KTtcbiAgICBzdGFydFggKz0geCB8fCAwO1xuICAgIHN0YXJ0WSArPSB5IHx8IDA7XG4gIH1cbiAgaWYgKG1vdmVUby5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KTtcbiAgICBlbmRYICs9IHggfHwgMDtcbiAgICBlbmRZICs9IHkgfHwgMDtcbiAgfVxuXG4gIGxldCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIC8vIGxvbGxpcG9wIHRha2VzIGEgbGl0dGxlIGxvbmdlciB0byBnZXQgdGhpbmdzIHJvbGxpbmdcbiAgbGV0IGR1cmF0aW9uID0gYXBpTGV2ZWwgPj0gNSA/IDIgOiAxO1xuICAvLyBtYWtlIHN1cmUgdGhhdCBpZiB0aGUgbG9uZyBwcmVzcyBoYXMgYSBkdXJhdGlvbiwgd2UgdXNlIGl0LlxuICBpZiAobG9uZ1ByZXNzLm9wdGlvbnMgJiYgbG9uZ1ByZXNzLm9wdGlvbnMuZHVyYXRpb24pIHtcbiAgICBkdXJhdGlvbiA9IE1hdGgubWF4KGxvbmdQcmVzcy5vcHRpb25zLmR1cmF0aW9uIC8gMTAwMCwgZHVyYXRpb24pO1xuICB9XG5cbiAgLy8gYGRyYWdgIHdpbGwgdGFrZSBjYXJlIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gZWxlbWVudCBvciBub3QgYXQgdGhhdCBsZXZlbFxuICByZXR1cm4gYXdhaXQgdGhpcy5kcmFnKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgMSwgbG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCwgbW92ZVRvLm9wdGlvbnMuZWxlbWVudCk7XG59O1xuXG4vLyBSZWxlYXNlIGdlc3R1cmUgbmVlZHMgZWxlbWVudCBvciBjby1vcmRpbmF0ZXMgdG8gcmVsZWFzZSBpdCBmcm9tIHRoYXQgcG9zaXRpb25cbi8vIG9yIGVsc2UgcmVsZWFzZSBnZXN0dXJlIGlzIHBlcmZvcm1lZCBmcm9tIGNlbnRlciBvZiB0aGUgc2NyZWVuLCBzbyB0byBmaXggaXRcbi8vIFRoaXMgbWV0aG9kIHNldHMgY28tb3JkaW5hdGVzL2VsZW1lbnQgdG8gcmVsZWFzZSBnZXN0dXJlIGlmIGl0IGhhcyBubyBvcHRpb25zIHNldCBhbHJlYWR5LlxuaGVscGVycy5maXhSZWxlYXNlID0gYXN5bmMgZnVuY3Rpb24gZml4UmVsZWFzZSAoZ2VzdHVyZXMpIHtcbiAgbGV0IHJlbGVhc2UgPSBfLmxhc3QoZ2VzdHVyZXMpO1xuICAvLyBzb21ldGltZXMgdGhlcmUgYXJlIG5vIG9wdGlvbnNcbiAgcmVsZWFzZS5vcHRpb25zID0gcmVsZWFzZS5vcHRpb25zIHx8IHt9O1xuICAvLyBub3RoaW5nIHRvIGRvIGlmIHJlbGVhc2Ugb3B0aW9ucyBhcmUgYWxyZWFkeSBzZXRcbiAgaWYgKHJlbGVhc2Uub3B0aW9ucy5lbGVtZW50IHx8IChyZWxlYXNlLm9wdGlvbnMueCAmJiByZWxlYXNlLm9wdGlvbnMueSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gd2l0aG91dCBjb29yZGluYXRlcywgYHJlbGVhc2VgIHVzZXMgdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuLCB3aGljaCxcbiAgLy8gZ2VuZXJhbGx5IHNwZWFraW5nLCBpcyBub3Qgd2hhdCB3ZSB3YW50XG4gIC8vIHRoZXJlZm9yZTogbG9vcCBiYWNrd2FyZHMgYW5kIHVzZSB0aGUgbGFzdCBjb21tYW5kIHdpdGggYW4gZWxlbWVudCBhbmQvb3JcbiAgLy8gb2Zmc2V0IGNvb3JkaW5hdGVzXG4gIGdlc3R1cmVzID0gXy5jbG9uZShnZXN0dXJlcyk7XG4gIGxldCByZWYgPSBudWxsO1xuICBmb3IgKGxldCBnZXN0dXJlIG9mIGdlc3R1cmVzLnJldmVyc2UoKSkge1xuICAgIGxldCBvcHRzID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQgfHwgKG9wdHMueCAmJiBvcHRzLnkpKSB7XG4gICAgICByZWYgPSBnZXN0dXJlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChyZWYpIHtcbiAgICBsZXQgb3B0cyA9IHJlZi5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQpIHtcbiAgICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KG9wdHMuZWxlbWVudCk7XG4gICAgICBpZiAob3B0cy54ICYmIG9wdHMueSkge1xuICAgICAgICAvLyB0aGlzIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBlbGVtZW50XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIG9wdHMueCxcbiAgICAgICAgICB5OiBsb2MueSArIG9wdHMueVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50XG4gICAgICAgIGxldCBzaXplID0gYXdhaXQgdGhpcy5nZXRTaXplKG9wdHMuZWxlbWVudCk7XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIHNpemUud2lkdGggLyAyLFxuICAgICAgICAgIHk6IGxvYy55ICsgc2l6ZS5oZWlnaHQgLyAyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IF8ucGljayhvcHRzLCAneCcsICd5Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWxlYXNlO1xufTtcblxuLy8gUGVyZm9ybSBvbmUgZ2VzdHVyZVxuaGVscGVycy5wZXJmb3JtR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1HZXN0dXJlIChnZXN0dXJlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZG9Ub3VjaEFjdGlvbihnZXN0dXJlLmFjdGlvbiwgZ2VzdHVyZS5vcHRpb25zIHx8IHt9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHNvbWV0aW1lIHRoZSBlbGVtZW50IGlzIG5vdCBhdmFpbGFibGUgd2hlbiByZWxlYXNpbmcsIHJldHJ5IHdpdGhvdXQgaXRcbiAgICBpZiAoaXNFcnJvclR5cGUoZSwgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcikgJiYgZ2VzdHVyZS5hY3Rpb24gPT09ICdyZWxlYXNlJyAmJlxuICAgICAgICBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudCkge1xuICAgICAgZGVsZXRlIGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgdGhpcy5sb2cuZGVidWcoYHJldHJ5aW5nIHJlbGVhc2Ugd2l0aG91dCBlbGVtZW50IG9wdHM6ICR7Z2VzdHVyZS5vcHRpb25zfS5gKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFN3aXBlT3B0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN3aXBlT3B0aW9ucyAoZ2VzdHVyZXMsIHRvdWNoQ291bnQgPSAxKSB7XG4gIGxldCBzdGFydFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy54KSxcbiAgICAgIHN0YXJ0WSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1swXS5vcHRpb25zLnkpLFxuICAgICAgZW5kWCA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLngpLFxuICAgICAgZW5kWSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLnkpLFxuICAgICAgZHVyYXRpb24gPSBnZXRTd2lwZVRvdWNoRHVyYXRpb24oZ2VzdHVyZXNbMV0pLFxuICAgICAgZWxlbWVudCA9IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGRlc3RFbGVtZW50ID0gZ2VzdHVyZXNbMl0ub3B0aW9ucy5lbGVtZW50IHx8IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudDtcblxuICAvLyB0aGVyZSdzIG5vIGRlc3RpbmF0aW9uIGVsZW1lbnQgaGFuZGxpbmcgaW4gYm9vdHN0cmFwIGFuZCBzaW5jZSBpdCBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMsIHdlIGhhbmRsZSBpdCBoZXJlXG4gIGlmICh1dGlsLmhhc1ZhbHVlKGRlc3RFbGVtZW50KSkge1xuICAgIGxldCBsb2NSZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGRlc3RFbGVtZW50KTtcbiAgICBsZXQgc2l6ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShkZXN0RWxlbWVudCk7XG4gICAgbGV0IG9mZnNldFggPSAoTWF0aC5hYnMoZW5kWCkgPCAxICYmIE1hdGguYWJzKGVuZFgpID4gMCkgPyBzaXplUmVzdWx0LndpZHRoICogZW5kWCA6IGVuZFg7XG4gICAgbGV0IG9mZnNldFkgPSAoTWF0aC5hYnMoZW5kWSkgPCAxICYmIE1hdGguYWJzKGVuZFkpID4gMCkgPyBzaXplUmVzdWx0LmhlaWdodCAqIGVuZFkgOiBlbmRZO1xuICAgIGVuZFggPSBsb2NSZXN1bHQueCArIG9mZnNldFg7XG4gICAgZW5kWSA9IGxvY1Jlc3VsdC55ICsgb2Zmc2V0WTtcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgd2FzIHByb3ZpZGVkLCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBuZWVkIHRvIGJlIHJlbGF0aXZlIHRvIGl0LlxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGVsZW1lbnQpKSB7XG4gICAgICBsZXQgZmlyc3RFbExvY2F0aW9uID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50KTtcbiAgICAgIGVuZFggLT0gZmlyc3RFbExvY2F0aW9uLng7XG4gICAgICBlbmRZIC09IGZpcnN0RWxMb2NhdGlvbi55O1xuICAgIH1cbiAgfVxuICAvLyBjbGllbnRzIGFyZSByZXNwb25zaWJsZSB0byB1c2UgdGhlc2Ugb3B0aW9ucyBjb3JyZWN0bHlcbiAgcmV0dXJuIHtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHRvdWNoQ291bnQsIGVsZW1lbnR9O1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICAvLyBwcmVzcy13YWl0LW1vdmVUby1yZWxlYXNlIGlzIGBzd2lwZWAsIHNvIHVzZSBuYXRpdmUgbWV0aG9kXG4gIGlmIChnZXN0dXJlcy5sZW5ndGggPT09IDQgJiZcbiAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9PT0gJ3ByZXNzJyAmJlxuICAgICAgZ2VzdHVyZXNbMV0uYWN0aW9uID09PSAnd2FpdCcgJiZcbiAgICAgIGdlc3R1cmVzWzJdLmFjdGlvbiA9PT0gJ21vdmVUbycgJiZcbiAgICAgIGdlc3R1cmVzWzNdLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG5cbiAgICBsZXQgc3dpcGVPcHRzID0gYXdhaXQgdGhpcy5nZXRTd2lwZU9wdGlvbnMoZ2VzdHVyZXMpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnN3aXBlKHN3aXBlT3B0cy5zdGFydFgsIHN3aXBlT3B0cy5zdGFydFksIHN3aXBlT3B0cy5lbmRYLFxuICAgICAgICBzd2lwZU9wdHMuZW5kWSwgc3dpcGVPcHRzLmR1cmF0aW9uLCBzd2lwZU9wdHMudG91Y2hDb3VudCxcbiAgICAgICAgc3dpcGVPcHRzLmVsZW1lbnQpO1xuICB9XG4gIGxldCBhY3Rpb25zID0gXy5tYXAoZ2VzdHVyZXMsICdhY3Rpb24nKTtcblxuICBpZiAoYWN0aW9uc1swXSA9PT0gJ2xvbmdQcmVzcycgJiYgYWN0aW9uc1sxXSA9PT0gJ21vdmVUbycgJiYgYWN0aW9uc1syXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgLy8gc29tZSB0aGluZ3MgYXJlIHNwZWNpYWxcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoRHJhZyhnZXN0dXJlcyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBgcHJlc3NgIHdpdGhvdXQgYSB3YWl0IGlzIHRvbyBzbG93IGFuZCBnZXRzIGludGVycHJldHRlZCBhcyBhIGBsb25nUHJlc3NgXG4gICAgICBpZiAoXy5oZWFkKGFjdGlvbnMpID09PSAncHJlc3MnICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGFjdGlvbnNbMF0gPSAndGFwJztcbiAgICAgICAgZ2VzdHVyZXNbMF0uYWN0aW9uID0gJ3RhcCc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBgbG9uZ1ByZXNzYCBhbmQgYHRhcGAgbWV0aG9kcyByZWxlYXNlIG9uIHRoZWlyIG93blxuICAgICAgaWYgKChfLmhlYWQoYWN0aW9ucykgPT09ICd0YXAnIHx8IF8uaGVhZChhY3Rpb25zKSA9PT0gJ2xvbmdQcmVzcycpICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGdlc3R1cmVzLnBvcCgpO1xuICAgICAgICBhY3Rpb25zLnBvcCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb25ncHJlc3MgZm9sbG93ZWQgYnkgYW55dGhpbmcgb3RoZXIgdGhhbiByZWxlYXNlIHNob3VsZCBiZWNvbWUgYSBwcmVzcyBhbmQgd2FpdFxuICAgICAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnKSB7XG4gICAgICAgIGFjdGlvbnMgPSBbJ3ByZXNzJywgJ3dhaXQnLCAuLi5hY3Rpb25zLnNsaWNlKDEpXTtcblxuICAgICAgICBsZXQgcHJlc3MgPSBnZXN0dXJlcy5zaGlmdCgpO1xuICAgICAgICBwcmVzcy5hY3Rpb24gPSAncHJlc3MnO1xuICAgICAgICBsZXQgd2FpdCA9IHtcbiAgICAgICAgICBhY3Rpb246ICd3YWl0JyxcbiAgICAgICAgICBvcHRpb25zOiB7bXM6IHByZXNzLm9wdGlvbnMuZHVyYXRpb24gfHwgMTAwMH1cbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIHByZXNzLm9wdGlvbnMuZHVyYXRpb247XG4gICAgICAgIGdlc3R1cmVzID0gW3ByZXNzLCB3YWl0LCAuLi5nZXN0dXJlc107XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpeGVkR2VzdHVyZXMgPSBhd2FpdCB0aGlzLnBhcnNlVG91Y2goZ2VzdHVyZXMsIGZhbHNlKTtcbiAgICAvLyBmaXggcmVsZWFzZSBhY3Rpb24gdGhlbiBwZXJmb3JtIGFsbCBhY3Rpb25zXG4gICAgaWYgKGFjdGlvbnNbYWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPSBhd2FpdCB0aGlzLmZpeFJlbGVhc2UoZ2VzdHVyZXMpO1xuICAgIH1cbiAgICBmb3IgKGxldCBnIG9mIGZpeGVkR2VzdHVyZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybUdlc3R1cmUoZyk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLnBhcnNlVG91Y2ggPSBhc3luYyBmdW5jdGlvbiBwYXJzZVRvdWNoIChnZXN0dXJlcywgbXVsdGkpIHtcbiAgLy8gYmVjYXVzZSBtdWx0aS10b3VjaCByZWxlYXNlcyBhdCB0aGUgZW5kIGJ5IGRlZmF1bHRcbiAgaWYgKG11bHRpICYmIF8ubGFzdChnZXN0dXJlcykuYWN0aW9uID09PSAncmVsZWFzZScpIHtcbiAgICBnZXN0dXJlcy5wb3AoKTtcbiAgfVxuXG4gIGxldCB0b3VjaFN0YXRlT2JqZWN0cyA9IGF3YWl0IGFzeW5jbWFwKGdlc3R1cmVzLCBhc3luYyAoZ2VzdHVyZSkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zIHx8IHt9O1xuICAgIGlmIChfLmluY2x1ZGVzKFsncHJlc3MnLCAnbW92ZVRvJywgJ3RhcCcsICdsb25nUHJlc3MnXSwgZ2VzdHVyZS5hY3Rpb24pKSB7XG4gICAgICBvcHRpb25zLm9mZnNldCA9IGZhbHNlO1xuICAgICAgbGV0IGVsZW1lbnRJZCA9IGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgICBsZXQgcG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZ2VzdHVyZS5vcHRpb25zLnggfHwgZ2VzdHVyZS5vcHRpb25zLnkpIHtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArIChnZXN0dXJlLm9wdGlvbnMueCB8fCAwKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFNpemUoZWxlbWVudElkKTtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArICh3aWR0aCAvIDIpO1xuICAgICAgICAgIG9wdGlvbnMueSA9IHBvcy55ICsgKGhlaWdodCAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICAgIGFjdGlvbjogZ2VzdHVyZS5hY3Rpb24sXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0aW1lT2Zmc2V0OiAwLjAwNSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnggPSAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgIG9wdGlvbnMueSA9IChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcblxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gMC4wMDU7XG4gICAgICBpZiAoZ2VzdHVyZS5hY3Rpb24gPT09ICd3YWl0Jykge1xuICAgICAgICBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgICAgICBvZmZzZXQgPSAocGFyc2VJbnQoZ2VzdHVyZS5vcHRpb25zLm1zLCAxMCkgLyAxMDAwKTtcbiAgICAgIH1cbiAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0aW1lT2Zmc2V0OiBvZmZzZXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIC8vIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB0aW1lICh3aGljaCBpcyBub3cgYW4gb2Zmc2V0KVxuICAvLyBhbmQgdGhlIHBvc2l0aW9uICh3aGljaCBtYXkgYmUgYW4gb2Zmc2V0KVxuICBsZXQgcHJldlBvcyA9IG51bGwsXG4gICAgICB0aW1lID0gMDtcbiAgZm9yIChsZXQgc3RhdGUgb2YgdG91Y2hTdGF0ZU9iamVjdHMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmIF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSAmJiBwcmV2UG9zICE9PSBudWxsKSB7XG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2l0aCB3YWl0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgPSBwcmV2UG9zLnk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5vcHRpb25zLm9mZnNldCAmJiBwcmV2UG9zKSB7XG4gICAgICAvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhbiBvZmZzZXRcbiAgICAgIHN0YXRlLm9wdGlvbnMueCArPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgKz0gcHJldlBvcy55O1xuICAgIH1cbiAgICBkZWxldGUgc3RhdGUub3B0aW9ucy5vZmZzZXQ7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgcHJldlBvcyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKG11bHRpKSB7XG4gICAgICBsZXQgdGltZU9mZnNldCA9IHN0YXRlLnRpbWVPZmZzZXQ7XG4gICAgICB0aW1lICs9IHRpbWVPZmZzZXQ7XG4gICAgICBzdGF0ZS50aW1lID0gYW5kcm9pZEhlbHBlcnMudHJ1bmNhdGVEZWNpbWFscyh0aW1lLCAzKTtcblxuICAgICAgLy8gbXVsdGkgZ2VzdHVyZXMgcmVxdWlyZSAndG91Y2gnIHJhdGhlciB0aGFuICdvcHRpb25zJ1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgICBzdGF0ZS50b3VjaCA9IHtcbiAgICAgICAgICB4OiBzdGF0ZS5vcHRpb25zLngsXG4gICAgICAgICAgeTogc3RhdGUub3B0aW9ucy55XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWxldGUgc3RhdGUub3B0aW9ucztcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLnRpbWVPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3RzO1xufTtcblxuXG5jb21tYW5kcy5wZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtTXVsdGlBY3Rpb24gKGFjdGlvbnMsIGVsZW1lbnRJZCkge1xuICAvLyBBbmRyb2lkIG5lZWRzIGF0IGxlYXN0IHR3byBhY3Rpb25zIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBhIG11bHRpIHBvaW50ZXIgZ2VzdHVyZVxuICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpIFBvaW50ZXIgR2VzdHVyZXMgbmVlZCBhdCBsZWFzdCB0d28gYWN0aW9ucy4gJyArXG4gICAgICAgICdVc2UgVG91Y2ggQWN0aW9ucyBmb3IgYSBzaW5nbGUgYWN0aW9uLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVzID0gYXdhaXQgYXN5bmNtYXAoYWN0aW9ucywgYXN5bmMgKGFjdGlvbikgPT4gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGFjdGlvbiwgdHJ1ZSksIGZhbHNlKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5kb1BlcmZvcm1NdWx0aUFjdGlvbihlbGVtZW50SWQsIHN0YXRlcyk7XG59O1xuXG4vKipcbiAqIFJlYXNvbiBmb3IgaXNvbGF0aW5nIGRvUGVyZm9ybU11bHRpQWN0aW9uIGZyb20gcGVyZm9ybU11bHRpQWN0aW9uIGlzIGZvciByZXVzaW5nIHBlcmZvcm1NdWx0aUFjdGlvblxuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgYW5kIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9QZXJmb3JtTXVsdGlBY3Rpb25cbiAqIHRvIGZhY2lsaXRhdGUgcGVyZm9ybU11bHRpQWN0aW9uLlxuICovXG5jb21tYW5kcy5kb1BlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvUGVyZm9ybU11bHRpQWN0aW9uIChlbGVtZW50SWQsIHN0YXRlcykge1xuICBsZXQgb3B0cztcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIG9wdHMgPSB7XG4gICAgICBlbGVtZW50SWQsXG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3BlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBLFNBQVNDLGVBQVQsQ0FBMEJDLEdBQTFCLEVBQStCO0VBSTdCLE9BQU9DLGNBQUtDLFFBQUwsQ0FBY0YsR0FBZCxJQUFxQkEsR0FBckIsR0FBMkIsR0FBbEM7QUFDRDs7QUFFRCxTQUFTRyxxQkFBVCxDQUFnQ0MsV0FBaEMsRUFBNkM7RUFHM0MsSUFBSUMsUUFBUSxHQUFHLEdBQWY7O0VBQ0EsSUFBSSxPQUFPRCxXQUFXLENBQUNFLE9BQVosQ0FBb0JDLEVBQTNCLEtBQWtDLFdBQWxDLElBQWlESCxXQUFXLENBQUNFLE9BQVosQ0FBb0JDLEVBQXpFLEVBQTZFO0lBQzNFRixRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkMsRUFBcEIsR0FBeUIsSUFBcEM7O0lBQ0EsSUFB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
|
|
398
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3RvdWNoLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImdldENvb3JkRGVmYXVsdCIsInZhbCIsInV0aWwiLCJoYXNWYWx1ZSIsImdldFN3aXBlVG91Y2hEdXJhdGlvbiIsIndhaXRHZXN0dXJlIiwiZHVyYXRpb24iLCJvcHRpb25zIiwibXMiLCJkb1RvdWNoQWN0aW9uIiwiYWN0aW9uIiwib3B0cyIsImVsZW1lbnQiLCJ4IiwieSIsImNvdW50IiwidGFwIiwidG91Y2hEb3duIiwidG91Y2hVcCIsInRvdWNoTW92ZSIsIkIiLCJkZWxheSIsInRvdWNoTG9uZ0NsaWNrIiwibG9nIiwid2FybiIsImVycm9yQW5kVGhyb3ciLCJkb1RvdWNoRHJhZyIsImdlc3R1cmVzIiwibG9uZ1ByZXNzIiwibW92ZVRvIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJnZXRMb2NhdGlvbkluVmlldyIsImFwaUxldmVsIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJNYXRoIiwibWF4IiwiZHJhZyIsImZpeFJlbGVhc2UiLCJyZWxlYXNlIiwiXyIsImxhc3QiLCJjbG9uZSIsInJlZiIsImdlc3R1cmUiLCJyZXZlcnNlIiwibG9jIiwic2l6ZSIsImdldFNpemUiLCJ3aWR0aCIsImhlaWdodCIsInBpY2siLCJwZXJmb3JtR2VzdHVyZSIsImUiLCJpc0Vycm9yVHlwZSIsImVycm9ycyIsIk5vU3VjaEVsZW1lbnRFcnJvciIsImRlYnVnIiwiZ2V0U3dpcGVPcHRpb25zIiwidG91Y2hDb3VudCIsImRlc3RFbGVtZW50IiwibG9jUmVzdWx0Iiwic2l6ZVJlc3VsdCIsIm9mZnNldFgiLCJhYnMiLCJvZmZzZXRZIiwiZmlyc3RFbExvY2F0aW9uIiwicGVyZm9ybVRvdWNoIiwibGVuZ3RoIiwic3dpcGVPcHRzIiwic3dpcGUiLCJhY3Rpb25zIiwibWFwIiwiaGVhZCIsInBvcCIsInNsaWNlIiwicHJlc3MiLCJzaGlmdCIsIndhaXQiLCJmaXhlZEdlc3R1cmVzIiwicGFyc2VUb3VjaCIsImciLCJtdWx0aSIsInRvdWNoU3RhdGVPYmplY3RzIiwiYXN5bmNtYXAiLCJpbmNsdWRlcyIsIm9mZnNldCIsImVsZW1lbnRJZCIsInBvcyIsInRvdWNoU3RhdGVPYmplY3QiLCJ0aW1lT2Zmc2V0IiwicGFyc2VJbnQiLCJwcmV2UG9zIiwidGltZSIsInN0YXRlIiwiaXNVbmRlZmluZWQiLCJhbmRyb2lkSGVscGVycyIsInRydW5jYXRlRGVjaW1hbHMiLCJ0b3VjaCIsInBlcmZvcm1NdWx0aUFjdGlvbiIsIkVycm9yIiwic3RhdGVzIiwiZG9QZXJmb3JtTXVsdGlBY3Rpb24iLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3RvdWNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYW5kcm9pZEhlbHBlcnMgZnJvbSAnLi4vYW5kcm9pZC1oZWxwZXJzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7IGFzeW5jbWFwIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q29vcmREZWZhdWx0ICh2YWwpIHtcbiAgLy8gZ29pbmcgdGhlIGxvbmcgd2F5IGFuZCBjaGVja2luZyBmb3IgdW5kZWZpbmVkIGFuZCBudWxsIHNpbmNlXG4gIC8vIHdlIGNhbid0IGJlIGFzc3VyZWQgYGVsSWRgIGlzIGEgc3RyaW5nIGFuZCBub3QgYW4gaW50LiBTYW1lXG4gIC8vIHRoaW5nIHdpdGggZGVzdEVsZW1lbnQgYmVsb3cuXG4gIHJldHVybiB1dGlsLmhhc1ZhbHVlKHZhbCkgPyB2YWwgOiAwLjU7XG59XG5cbmZ1bmN0aW9uIGdldFN3aXBlVG91Y2hEdXJhdGlvbiAod2FpdEdlc3R1cmUpIHtcbiAgLy8gdGhlIHRvdWNoIGFjdGlvbiBhcGkgdXNlcyBtcywgd2Ugd2FudCBzZWNvbmRzXG4gIC8vIDAuOCBpcyB0aGUgZGVmYXVsdCB0aW1lIGZvciB0aGUgb3BlcmF0aW9uXG4gIGxldCBkdXJhdGlvbiA9IDAuODtcbiAgaWYgKHR5cGVvZiB3YWl0R2VzdHVyZS5vcHRpb25zLm1zICE9PSAndW5kZWZpbmVkJyAmJiB3YWl0R2VzdHVyZS5vcHRpb25zLm1zKSB7XG4gICAgZHVyYXRpb24gPSB3YWl0R2VzdHVyZS5vcHRpb25zLm1zIC8gMTAwMDtcbiAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIC8vIHNldCB0byBhIHZlcnkgbG93IG51bWJlciwgc2luY2UgdGhleSB3YW50ZWQgaXQgZmFzdFxuICAgICAgLy8gYnV0IGJlbG93IDAuMSBiZWNvbWVzIDAgc3RlcHMsIHdoaWNoIGNhdXNlcyBlcnJvcnNcbiAgICAgIGR1cmF0aW9uID0gMC4xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZHVyYXRpb247XG59XG5cbmNvbW1hbmRzLmRvVG91Y2hBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBkb1RvdWNoQWN0aW9uIChhY3Rpb24sIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGVsZW1lbnQsIHgsIHksIGNvdW50LCBtcywgZHVyYXRpb24gfSA9IG9wdHM7XG4gIC8vIHBhcnNlVG91Y2ggcHJlY2FsY3VsYXRlcyBhYnNvbHV0ZSBlbGVtZW50IHBvc2l0aW9uc1xuICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHBhc3MgYGVsZW1lbnRgIHRvIHRoZSBhZmZlY3RlZCBnZXN0dXJlc1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIGNhc2UgJ3RhcCc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50YXAobnVsbCwgeCwgeSwgY291bnQpO1xuICAgIGNhc2UgJ3ByZXNzJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoRG93bihudWxsLCB4LCB5KTtcbiAgICBjYXNlICdyZWxlYXNlJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoVXAoZWxlbWVudCwgeCwgeSk7XG4gICAgY2FzZSAnbW92ZVRvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoTW92ZShudWxsLCB4LCB5KTtcbiAgICBjYXNlICd3YWl0JzpcbiAgICAgIHJldHVybiBhd2FpdCBCLmRlbGF5KG1zKTtcbiAgICBjYXNlICdsb25nUHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hMb25nQ2xpY2sobnVsbCwgeCwgeSwgZHVyYXRpb24gfHwgMTAwMCk7XG4gICAgY2FzZSAnY2FuY2VsJzpcbiAgICAgIC8vIFRPRE86IGNsYXJpZnkgYmVoYXZpb3Igb2YgJ2NhbmNlbCcgYWN0aW9uIGFuZCBmaXggdGhpc1xuICAgICAgdGhpcy5sb2cud2FybignQ2FuY2VsIGFjdGlvbiBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCcpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYHVua25vd24gYWN0aW9uICR7YWN0aW9ufWApO1xuICB9XG59O1xuXG4vLyBkcmFnIGlzICpub3QqIHByZXNzLW1vdmUtcmVsZWFzZSwgc28gd2UgbmVlZCB0byB0cmFuc2xhdGVcbi8vIGRyYWcgd29ya3MgZmluZSBmb3Igc2Nyb2xsLCBhcyB3ZWxsXG5oZWxwZXJzLmRvVG91Y2hEcmFnID0gYXN5bmMgZnVuY3Rpb24gZG9Ub3VjaERyYWcgKGdlc3R1cmVzKSB7XG4gIGxldCBsb25nUHJlc3MgPSBnZXN0dXJlc1swXTtcbiAgbGV0IG1vdmVUbyA9IGdlc3R1cmVzWzFdO1xuICBsZXQgc3RhcnRYID0gbG9uZ1ByZXNzLm9wdGlvbnMueCB8fCAwLFxuICAgICAgc3RhcnRZID0gbG9uZ1ByZXNzLm9wdGlvbnMueSB8fCAwLFxuICAgICAgZW5kWCA9IG1vdmVUby5vcHRpb25zLnggfHwgMCxcbiAgICAgIGVuZFkgPSBtb3ZlVG8ub3B0aW9ucy55IHx8IDA7XG4gIGlmIChsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50KSB7XG4gICAgbGV0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcobG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCk7XG4gICAgc3RhcnRYICs9IHggfHwgMDtcbiAgICBzdGFydFkgKz0geSB8fCAwO1xuICB9XG4gIGlmIChtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KSB7XG4gICAgbGV0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcobW92ZVRvLm9wdGlvbnMuZWxlbWVudCk7XG4gICAgZW5kWCArPSB4IHx8IDA7XG4gICAgZW5kWSArPSB5IHx8IDA7XG4gIH1cblxuICBsZXQgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAvLyBsb2xsaXBvcCB0YWtlcyBhIGxpdHRsZSBsb25nZXIgdG8gZ2V0IHRoaW5ncyByb2xsaW5nXG4gIGxldCBkdXJhdGlvbiA9IGFwaUxldmVsID49IDUgPyAyIDogMTtcbiAgLy8gbWFrZSBzdXJlIHRoYXQgaWYgdGhlIGxvbmcgcHJlc3MgaGFzIGEgZHVyYXRpb24sIHdlIHVzZSBpdC5cbiAgaWYgKGxvbmdQcmVzcy5vcHRpb25zICYmIGxvbmdQcmVzcy5vcHRpb25zLmR1cmF0aW9uKSB7XG4gICAgZHVyYXRpb24gPSBNYXRoLm1heChsb25nUHJlc3Mub3B0aW9ucy5kdXJhdGlvbiAvIDEwMDAsIGR1cmF0aW9uKTtcbiAgfVxuXG4gIC8vIGBkcmFnYCB3aWxsIHRha2UgY2FyZSBvZiB3aGV0aGVyIHRoZXJlIGlzIGFuIGVsZW1lbnQgb3Igbm90IGF0IHRoYXQgbGV2ZWxcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZHJhZyhzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIDEsIGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQsIG1vdmVUby5vcHRpb25zLmVsZW1lbnQpO1xufTtcblxuLy8gUmVsZWFzZSBnZXN0dXJlIG5lZWRzIGVsZW1lbnQgb3IgY28tb3JkaW5hdGVzIHRvIHJlbGVhc2UgaXQgZnJvbSB0aGF0IHBvc2l0aW9uXG4vLyBvciBlbHNlIHJlbGVhc2UgZ2VzdHVyZSBpcyBwZXJmb3JtZWQgZnJvbSBjZW50ZXIgb2YgdGhlIHNjcmVlbiwgc28gdG8gZml4IGl0XG4vLyBUaGlzIG1ldGhvZCBzZXRzIGNvLW9yZGluYXRlcy9lbGVtZW50IHRvIHJlbGVhc2UgZ2VzdHVyZSBpZiBpdCBoYXMgbm8gb3B0aW9ucyBzZXQgYWxyZWFkeS5cbmhlbHBlcnMuZml4UmVsZWFzZSA9IGFzeW5jIGZ1bmN0aW9uIGZpeFJlbGVhc2UgKGdlc3R1cmVzKSB7XG4gIGxldCByZWxlYXNlID0gXy5sYXN0KGdlc3R1cmVzKTtcbiAgLy8gc29tZXRpbWVzIHRoZXJlIGFyZSBubyBvcHRpb25zXG4gIHJlbGVhc2Uub3B0aW9ucyA9IHJlbGVhc2Uub3B0aW9ucyB8fCB7fTtcbiAgLy8gbm90aGluZyB0byBkbyBpZiByZWxlYXNlIG9wdGlvbnMgYXJlIGFscmVhZHkgc2V0XG4gIGlmIChyZWxlYXNlLm9wdGlvbnMuZWxlbWVudCB8fCAocmVsZWFzZS5vcHRpb25zLnggJiYgcmVsZWFzZS5vcHRpb25zLnkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHdpdGhvdXQgY29vcmRpbmF0ZXMsIGByZWxlYXNlYCB1c2VzIHRoZSBjZW50ZXIgb2YgdGhlIHNjcmVlbiwgd2hpY2gsXG4gIC8vIGdlbmVyYWxseSBzcGVha2luZywgaXMgbm90IHdoYXQgd2Ugd2FudFxuICAvLyB0aGVyZWZvcmU6IGxvb3AgYmFja3dhcmRzIGFuZCB1c2UgdGhlIGxhc3QgY29tbWFuZCB3aXRoIGFuIGVsZW1lbnQgYW5kL29yXG4gIC8vIG9mZnNldCBjb29yZGluYXRlc1xuICBnZXN0dXJlcyA9IF8uY2xvbmUoZ2VzdHVyZXMpO1xuICBsZXQgcmVmID0gbnVsbDtcbiAgZm9yIChsZXQgZ2VzdHVyZSBvZiBnZXN0dXJlcy5yZXZlcnNlKCkpIHtcbiAgICBsZXQgb3B0cyA9IGdlc3R1cmUub3B0aW9ucztcbiAgICBpZiAob3B0cy5lbGVtZW50IHx8IChvcHRzLnggJiYgb3B0cy55KSkge1xuICAgICAgcmVmID0gZ2VzdHVyZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocmVmKSB7XG4gICAgbGV0IG9wdHMgPSByZWYub3B0aW9ucztcbiAgICBpZiAob3B0cy5lbGVtZW50KSB7XG4gICAgICBsZXQgbG9jID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhvcHRzLmVsZW1lbnQpO1xuICAgICAgaWYgKG9wdHMueCAmJiBvcHRzLnkpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgZWxlbWVudFxuICAgICAgICByZWxlYXNlLm9wdGlvbnMgPSB7XG4gICAgICAgICAgeDogbG9jLnggKyBvcHRzLngsXG4gICAgICAgICAgeTogbG9jLnkgKyBvcHRzLnlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGNlbnRlciBvZiB0aGUgZWxlbWVudFxuICAgICAgICBsZXQgc2l6ZSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShvcHRzLmVsZW1lbnQpO1xuICAgICAgICByZWxlYXNlLm9wdGlvbnMgPSB7XG4gICAgICAgICAgeDogbG9jLnggKyBzaXplLndpZHRoIC8gMixcbiAgICAgICAgICB5OiBsb2MueSArIHNpemUuaGVpZ2h0IC8gMlxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWxlYXNlLm9wdGlvbnMgPSBfLnBpY2sob3B0cywgJ3gnLCAneScpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVsZWFzZTtcbn07XG5cbi8vIFBlcmZvcm0gb25lIGdlc3R1cmVcbmhlbHBlcnMucGVyZm9ybUdlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtR2VzdHVyZSAoZ2VzdHVyZSkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBzb21ldGltZSB0aGUgZWxlbWVudCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gcmVsZWFzaW5nLCByZXRyeSB3aXRob3V0IGl0XG4gICAgaWYgKGlzRXJyb3JUeXBlKGUsIGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IpICYmIGdlc3R1cmUuYWN0aW9uID09PSAncmVsZWFzZScgJiZcbiAgICAgICAgZ2VzdHVyZS5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICAgIGRlbGV0ZSBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudDtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGByZXRyeWluZyByZWxlYXNlIHdpdGhvdXQgZWxlbWVudCBvcHRzOiAke2dlc3R1cmUub3B0aW9uc30uYCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoQWN0aW9uKGdlc3R1cmUuYWN0aW9uLCBnZXN0dXJlLm9wdGlvbnMgfHwge30pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5jb21tYW5kcy5nZXRTd2lwZU9wdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBnZXRTd2lwZU9wdGlvbnMgKGdlc3R1cmVzLCB0b3VjaENvdW50ID0gMSkge1xuICBsZXQgc3RhcnRYID0gZ2V0Q29vcmREZWZhdWx0KGdlc3R1cmVzWzBdLm9wdGlvbnMueCksXG4gICAgICBzdGFydFkgPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy55KSxcbiAgICAgIGVuZFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMl0ub3B0aW9ucy54KSxcbiAgICAgIGVuZFkgPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMl0ub3B0aW9ucy55KSxcbiAgICAgIGR1cmF0aW9uID0gZ2V0U3dpcGVUb3VjaER1cmF0aW9uKGdlc3R1cmVzWzFdKSxcbiAgICAgIGVsZW1lbnQgPSBnZXN0dXJlc1swXS5vcHRpb25zLmVsZW1lbnQsXG4gICAgICBkZXN0RWxlbWVudCA9IGdlc3R1cmVzWzJdLm9wdGlvbnMuZWxlbWVudCB8fCBnZXN0dXJlc1swXS5vcHRpb25zLmVsZW1lbnQ7XG5cbiAgLy8gdGhlcmUncyBubyBkZXN0aW5hdGlvbiBlbGVtZW50IGhhbmRsaW5nIGluIGJvb3RzdHJhcCBhbmQgc2luY2UgaXQgYXBwbGllcyB0byBhbGwgcGxhdGZvcm1zLCB3ZSBoYW5kbGUgaXQgaGVyZVxuICBpZiAodXRpbC5oYXNWYWx1ZShkZXN0RWxlbWVudCkpIHtcbiAgICBsZXQgbG9jUmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhkZXN0RWxlbWVudCk7XG4gICAgbGV0IHNpemVSZXN1bHQgPSBhd2FpdCB0aGlzLmdldFNpemUoZGVzdEVsZW1lbnQpO1xuICAgIGxldCBvZmZzZXRYID0gKE1hdGguYWJzKGVuZFgpIDwgMSAmJiBNYXRoLmFicyhlbmRYKSA+IDApID8gc2l6ZVJlc3VsdC53aWR0aCAqIGVuZFggOiBlbmRYO1xuICAgIGxldCBvZmZzZXRZID0gKE1hdGguYWJzKGVuZFkpIDwgMSAmJiBNYXRoLmFicyhlbmRZKSA+IDApID8gc2l6ZVJlc3VsdC5oZWlnaHQgKiBlbmRZIDogZW5kWTtcbiAgICBlbmRYID0gbG9jUmVzdWx0LnggKyBvZmZzZXRYO1xuICAgIGVuZFkgPSBsb2NSZXN1bHQueSArIG9mZnNldFk7XG4gICAgLy8gaWYgdGhlIHRhcmdldCBlbGVtZW50IHdhcyBwcm92aWRlZCwgdGhlIGNvb3JkaW5hdGVzIGZvciB0aGUgZGVzdGluYXRpb24gbmVlZCB0byBiZSByZWxhdGl2ZSB0byBpdC5cbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50KSkge1xuICAgICAgbGV0IGZpcnN0RWxMb2NhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcoZWxlbWVudCk7XG4gICAgICBlbmRYIC09IGZpcnN0RWxMb2NhdGlvbi54O1xuICAgICAgZW5kWSAtPSBmaXJzdEVsTG9jYXRpb24ueTtcbiAgICB9XG4gIH1cbiAgLy8gY2xpZW50cyBhcmUgcmVzcG9uc2libGUgdG8gdXNlIHRoZXNlIG9wdGlvbnMgY29ycmVjdGx5XG4gIHJldHVybiB7c3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCB0b3VjaENvdW50LCBlbGVtZW50fTtcbn07XG5cbmNvbW1hbmRzLnBlcmZvcm1Ub3VjaCA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Ub3VjaCAoZ2VzdHVyZXMpIHtcbiAgLy8gcHJlc3Mtd2FpdC1tb3ZlVG8tcmVsZWFzZSBpcyBgc3dpcGVgLCBzbyB1c2UgbmF0aXZlIG1ldGhvZFxuICBpZiAoZ2VzdHVyZXMubGVuZ3RoID09PSA0ICYmXG4gICAgICBnZXN0dXJlc1swXS5hY3Rpb24gPT09ICdwcmVzcycgJiZcbiAgICAgIGdlc3R1cmVzWzFdLmFjdGlvbiA9PT0gJ3dhaXQnICYmXG4gICAgICBnZXN0dXJlc1syXS5hY3Rpb24gPT09ICdtb3ZlVG8nICYmXG4gICAgICBnZXN0dXJlc1szXS5hY3Rpb24gPT09ICdyZWxlYXNlJykge1xuXG4gICAgbGV0IHN3aXBlT3B0cyA9IGF3YWl0IHRoaXMuZ2V0U3dpcGVPcHRpb25zKGdlc3R1cmVzKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zd2lwZShzd2lwZU9wdHMuc3RhcnRYLCBzd2lwZU9wdHMuc3RhcnRZLCBzd2lwZU9wdHMuZW5kWCxcbiAgICAgICAgc3dpcGVPcHRzLmVuZFksIHN3aXBlT3B0cy5kdXJhdGlvbiwgc3dpcGVPcHRzLnRvdWNoQ291bnQsXG4gICAgICAgIHN3aXBlT3B0cy5lbGVtZW50KTtcbiAgfVxuICBsZXQgYWN0aW9ucyA9IF8ubWFwKGdlc3R1cmVzLCAnYWN0aW9uJyk7XG5cbiAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnICYmIGFjdGlvbnNbMV0gPT09ICdtb3ZlVG8nICYmIGFjdGlvbnNbMl0gPT09ICdyZWxlYXNlJykge1xuICAgIC8vIHNvbWUgdGhpbmdzIGFyZSBzcGVjaWFsXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZG9Ub3VjaERyYWcoZ2VzdHVyZXMpO1xuICB9IGVsc2Uge1xuICAgIGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMikge1xuICAgICAgLy8gYHByZXNzYCB3aXRob3V0IGEgd2FpdCBpcyB0b28gc2xvdyBhbmQgZ2V0cyBpbnRlcnByZXR0ZWQgYXMgYSBgbG9uZ1ByZXNzYFxuICAgICAgaWYgKF8uaGVhZChhY3Rpb25zKSA9PT0gJ3ByZXNzJyAmJiBfLmxhc3QoYWN0aW9ucykgPT09ICdyZWxlYXNlJykge1xuICAgICAgICBhY3Rpb25zWzBdID0gJ3RhcCc7XG4gICAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9ICd0YXAnO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgYGxvbmdQcmVzc2AgYW5kIGB0YXBgIG1ldGhvZHMgcmVsZWFzZSBvbiB0aGVpciBvd25cbiAgICAgIGlmICgoXy5oZWFkKGFjdGlvbnMpID09PSAndGFwJyB8fCBfLmhlYWQoYWN0aW9ucykgPT09ICdsb25nUHJlc3MnKSAmJiBfLmxhc3QoYWN0aW9ucykgPT09ICdyZWxlYXNlJykge1xuICAgICAgICBnZXN0dXJlcy5wb3AoKTtcbiAgICAgICAgYWN0aW9ucy5wb3AoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9uZ3ByZXNzIGZvbGxvd2VkIGJ5IGFueXRoaW5nIG90aGVyIHRoYW4gcmVsZWFzZSBzaG91bGQgYmVjb21lIGEgcHJlc3MgYW5kIHdhaXRcbiAgICAgIGlmIChhY3Rpb25zWzBdID09PSAnbG9uZ1ByZXNzJykge1xuICAgICAgICBhY3Rpb25zID0gWydwcmVzcycsICd3YWl0JywgLi4uYWN0aW9ucy5zbGljZSgxKV07XG5cbiAgICAgICAgbGV0IHByZXNzID0gZ2VzdHVyZXMuc2hpZnQoKTtcbiAgICAgICAgcHJlc3MuYWN0aW9uID0gJ3ByZXNzJztcbiAgICAgICAgbGV0IHdhaXQgPSB7XG4gICAgICAgICAgYWN0aW9uOiAnd2FpdCcsXG4gICAgICAgICAgb3B0aW9uczoge21zOiBwcmVzcy5vcHRpb25zLmR1cmF0aW9uIHx8IDEwMDB9XG4gICAgICAgIH07XG4gICAgICAgIGRlbGV0ZSBwcmVzcy5vcHRpb25zLmR1cmF0aW9uO1xuICAgICAgICBnZXN0dXJlcyA9IFtwcmVzcywgd2FpdCwgLi4uZ2VzdHVyZXNdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmaXhlZEdlc3R1cmVzID0gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGdlc3R1cmVzLCBmYWxzZSk7XG4gICAgLy8gZml4IHJlbGVhc2UgYWN0aW9uIHRoZW4gcGVyZm9ybSBhbGwgYWN0aW9uc1xuICAgIGlmIChhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPT09ICdyZWxlYXNlJykge1xuICAgICAgYWN0aW9uc1thY3Rpb25zLmxlbmd0aCAtIDFdID0gYXdhaXQgdGhpcy5maXhSZWxlYXNlKGdlc3R1cmVzKTtcbiAgICB9XG4gICAgZm9yIChsZXQgZyBvZiBmaXhlZEdlc3R1cmVzKSB7XG4gICAgICBhd2FpdCB0aGlzLnBlcmZvcm1HZXN0dXJlKGcpO1xuICAgIH1cbiAgfVxufTtcblxuaGVscGVycy5wYXJzZVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGFyc2VUb3VjaCAoZ2VzdHVyZXMsIG11bHRpKSB7XG4gIC8vIGJlY2F1c2UgbXVsdGktdG91Y2ggcmVsZWFzZXMgYXQgdGhlIGVuZCBieSBkZWZhdWx0XG4gIGlmIChtdWx0aSAmJiBfLmxhc3QoZ2VzdHVyZXMpLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgZ2VzdHVyZXMucG9wKCk7XG4gIH1cblxuICBsZXQgdG91Y2hTdGF0ZU9iamVjdHMgPSBhd2FpdCBhc3luY21hcChnZXN0dXJlcywgYXN5bmMgKGdlc3R1cmUpID0+IHtcbiAgICBsZXQgb3B0aW9ucyA9IGdlc3R1cmUub3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoXy5pbmNsdWRlcyhbJ3ByZXNzJywgJ21vdmVUbycsICd0YXAnLCAnbG9uZ1ByZXNzJ10sIGdlc3R1cmUuYWN0aW9uKSkge1xuICAgICAgb3B0aW9ucy5vZmZzZXQgPSBmYWxzZTtcbiAgICAgIGxldCBlbGVtZW50SWQgPSBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudDtcbiAgICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgICAgbGV0IHBvcyA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcoZWxlbWVudElkKTtcbiAgICAgICAgaWYgKGdlc3R1cmUub3B0aW9ucy54IHx8IGdlc3R1cmUub3B0aW9ucy55KSB7XG4gICAgICAgICAgb3B0aW9ucy54ID0gcG9zLnggKyAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgICAgb3B0aW9ucy55ID0gcG9zLnkgKyAoZ2VzdHVyZS5vcHRpb25zLnkgfHwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRTaXplKGVsZW1lbnRJZCk7XG4gICAgICAgICAgb3B0aW9ucy54ID0gcG9zLnggKyAod2lkdGggLyAyKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChoZWlnaHQgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy54ID0gKGdlc3R1cmUub3B0aW9ucy54IHx8IDApO1xuICAgICAgICBvcHRpb25zLnkgPSAoZ2VzdHVyZS5vcHRpb25zLnkgfHwgMCk7XG5cbiAgICAgICAgbGV0IHRvdWNoU3RhdGVPYmplY3QgPSB7XG4gICAgICAgICAgYWN0aW9uOiBnZXN0dXJlLmFjdGlvbixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHRpbWVPZmZzZXQ6IDAuMDA1LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdG91Y2hTdGF0ZU9iamVjdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG9mZnNldCA9IDAuMDA1O1xuICAgICAgaWYgKGdlc3R1cmUuYWN0aW9uID09PSAnd2FpdCcpIHtcbiAgICAgICAgb3B0aW9ucyA9IGdlc3R1cmUub3B0aW9ucztcbiAgICAgICAgb2Zmc2V0ID0gKHBhcnNlSW50KGdlc3R1cmUub3B0aW9ucy5tcywgMTApIC8gMTAwMCk7XG4gICAgICB9XG4gICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgYWN0aW9uOiBnZXN0dXJlLmFjdGlvbixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgdGltZU9mZnNldDogb2Zmc2V0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgIH1cbiAgfSwgZmFsc2UpO1xuICAvLyB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgdGltZSAod2hpY2ggaXMgbm93IGFuIG9mZnNldClcbiAgLy8gYW5kIHRoZSBwb3NpdGlvbiAod2hpY2ggbWF5IGJlIGFuIG9mZnNldClcbiAgbGV0IHByZXZQb3MgPSBudWxsLFxuICAgICAgdGltZSA9IDA7XG4gIGZvciAobGV0IHN0YXRlIG9mIHRvdWNoU3RhdGVPYmplY3RzKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy54KSAmJiBfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkgJiYgcHJldlBvcyAhPT0gbnVsbCkge1xuICAgICAgLy8gdGhpcyBoYXBwZW5zIHdpdGggd2FpdFxuICAgICAgc3RhdGUub3B0aW9ucy54ID0gcHJldlBvcy54O1xuICAgICAgc3RhdGUub3B0aW9ucy55ID0gcHJldlBvcy55O1xuICAgIH1cbiAgICBpZiAoc3RhdGUub3B0aW9ucy5vZmZzZXQgJiYgcHJldlBvcykge1xuICAgICAgLy8gdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYW4gb2Zmc2V0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggKz0gcHJldlBvcy54O1xuICAgICAgc3RhdGUub3B0aW9ucy55ICs9IHByZXZQb3MueTtcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLm9wdGlvbnMub2Zmc2V0O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmICFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkpIHtcbiAgICAgIHByZXZQb3MgPSBzdGF0ZS5vcHRpb25zO1xuICAgIH1cblxuICAgIGlmIChtdWx0aSkge1xuICAgICAgbGV0IHRpbWVPZmZzZXQgPSBzdGF0ZS50aW1lT2Zmc2V0O1xuICAgICAgdGltZSArPSB0aW1lT2Zmc2V0O1xuICAgICAgc3RhdGUudGltZSA9IGFuZHJvaWRIZWxwZXJzLnRydW5jYXRlRGVjaW1hbHModGltZSwgMyk7XG5cbiAgICAgIC8vIG11bHRpIGdlc3R1cmVzIHJlcXVpcmUgJ3RvdWNoJyByYXRoZXIgdGhhbiAnb3B0aW9ucydcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmICFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkpIHtcbiAgICAgICAgc3RhdGUudG91Y2ggPSB7XG4gICAgICAgICAgeDogc3RhdGUub3B0aW9ucy54LFxuICAgICAgICAgIHk6IHN0YXRlLm9wdGlvbnMueVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVsZXRlIHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuICAgIGRlbGV0ZSBzdGF0ZS50aW1lT2Zmc2V0O1xuICB9XG4gIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0cztcbn07XG5cblxuY29tbWFuZHMucGVyZm9ybU11bHRpQWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybU11bHRpQWN0aW9uIChhY3Rpb25zLCBlbGVtZW50SWQpIHtcbiAgLy8gQW5kcm9pZCBuZWVkcyBhdCBsZWFzdCB0d28gYWN0aW9ucyB0byBiZSBhYmxlIHRvIHBlcmZvcm0gYSBtdWx0aSBwb2ludGVyIGdlc3R1cmVcbiAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aSBQb2ludGVyIEdlc3R1cmVzIG5lZWQgYXQgbGVhc3QgdHdvIGFjdGlvbnMuICcgK1xuICAgICAgICAnVXNlIFRvdWNoIEFjdGlvbnMgZm9yIGEgc2luZ2xlIGFjdGlvbi4nKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlcyA9IGF3YWl0IGFzeW5jbWFwKGFjdGlvbnMsIGFzeW5jIChhY3Rpb24pID0+IGF3YWl0IHRoaXMucGFyc2VUb3VjaChhY3Rpb24sIHRydWUpLCBmYWxzZSk7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9QZXJmb3JtTXVsdGlBY3Rpb24oZWxlbWVudElkLCBzdGF0ZXMpO1xufTtcblxuLyoqXG4gKiBSZWFzb24gZm9yIGlzb2xhdGluZyBkb1BlcmZvcm1NdWx0aUFjdGlvbiBmcm9tIHBlcmZvcm1NdWx0aUFjdGlvbiBpcyBmb3IgcmV1c2luZyBwZXJmb3JtTXVsdGlBY3Rpb25cbiAqIGFjcm9zcyBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIGFuZCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLlxuICogT3RoZXIgYW5kcm9pZC1kcml2ZXJzIChsaWtlIGFwcGl1bS11aWF1dG9tYXRvcjItZHJpdmVyKSBuZWVkIHRvIG92ZXJyaWRlIGRvUGVyZm9ybU11bHRpQWN0aW9uXG4gKiB0byBmYWNpbGl0YXRlIHBlcmZvcm1NdWx0aUFjdGlvbi5cbiAqL1xuY29tbWFuZHMuZG9QZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBkb1BlcmZvcm1NdWx0aUFjdGlvbiAoZWxlbWVudElkLCBzdGF0ZXMpIHtcbiAgbGV0IG9wdHM7XG4gIGlmIChlbGVtZW50SWQpIHtcbiAgICBvcHRzID0ge1xuICAgICAgZWxlbWVudElkLFxuICAgICAgYWN0aW9uczogc3RhdGVzXG4gICAgfTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpwZXJmb3JtTXVsdGlQb2ludGVyR2VzdHVyZScsIG9wdHMpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMgPSB7XG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdwZXJmb3JtTXVsdGlQb2ludGVyR2VzdHVyZScsIG9wdHMpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQSxTQUFTQyxlQUFULENBQTBCQyxHQUExQixFQUErQjtFQUk3QixPQUFPQyxhQUFBLENBQUtDLFFBQUwsQ0FBY0YsR0FBZCxJQUFxQkEsR0FBckIsR0FBMkIsR0FBbEM7QUFDRDs7QUFFRCxTQUFTRyxxQkFBVCxDQUFnQ0MsV0FBaEMsRUFBNkM7RUFHM0MsSUFBSUMsUUFBUSxHQUFHLEdBQWY7O0VBQ0EsSUFBSSxPQUFPRCxXQUFXLENBQUNFLE9BQVosQ0FBb0JDLEVBQTNCLEtBQWtDLFdBQWxDLElBQWlESCxXQUFXLENBQUNFLE9BQVosQ0FBb0JDLEVBQXpFLEVBQTZFO0lBQzNFRixRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixDQUFv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
|