ng-gpt
Version:
A Angular implementation of the google GPT API.
2 lines • 25.5 kB
JavaScript
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZ3B0LWdvb2dsZXRhZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1ncHQvc3JjL2xpYi9uZy1ncHQtZ29vZ2xldGFnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJhbFNpemUsIFNpbmdsZVNpemVBcnJheSwgU2l6ZU1hcHBpbmdBcnJheSB9IGZyb20gJy4vZ3B0LnR5cGUnO1xuXG5pbnRlcmZhY2UgUmVzcG9uc2VJbmZvcm1hdGlvbiB7XG4gIGFkdmVydGlzZXJJZDogc3RyaW5nO1xuICBjYW1wYWlnbklkOiBzdHJpbmc7XG4gIGNyZWF0aXZlSWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNyZWF0aXZlVGVtcGxhdGVJZD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbGluZUl0ZW1JZD86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYWZlRnJhbWVDb25maWcge1xuICBhbGxvd092ZXJsYXlFeHBhbnNpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhbGxvd1B1c2hFeHBhbnNpb24/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBzYW5kYm94PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgdXNlVW5pcXVlRG9tYWluPzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUxvYWRPcHRpb25zQ29uZmlnIHtcbiAgZmV0Y2hNYXJnaW5QZXJjZW50PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByZW5kZXJNYXJnaW5QZXJjZW50PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBtb2JpbGVTY2FsaW5nPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgUHJpdmFjeVNldHRpbmdzQ29uZmlnIHtcbiAgY2hpbGREaXJlY3RlZFRyZWF0bWVudD86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICBsaW1pdGVkQWRzPzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHJlc3RyaWN0RGF0YVByb2Nlc3Npbmc/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdW5kZXJBZ2VPZkNvbnNlbnQ/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRBcnJheSB7XG4gIHB1c2goZjogKCkgPT4gdm9pZCk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlIHtcbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBldmVudFR5cGU6ICdzbG90UmVuZGVyRW5kZWQnLFxuICAgIGxpc3RlbmVyOiAoZXZlbnQ6IFNsb3RSZW5kZXJFbmRlZEV2ZW50KSA9PiB2b2lkXG4gICk6IFNlcnZpY2U7XG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnRUeXBlOiAnc2xvdFJlcXVlc3RlZCcsXG4gICAgbGlzdGVuZXI6IChldmVudDogU2xvdFJlcXVlc3RlZEV2ZW50KSA9PiB2b2lkXG4gICk6IFNlcnZpY2U7XG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnRUeXBlOiAnc2xvdFJlc3BvbnNlUmVjZWl2ZWQnLFxuICAgIGxpc3RlbmVyOiAoZXZlbnQ6IFNsb3RSZXNwb25zZVJlY2VpdmVkKSA9PiB2b2lkXG4gICk6IFNlcnZpY2U7XG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnRUeXBlOiAnc2xvdFZpc2liaWxpdHlDaGFuZ2VkJyxcbiAgICBsaXN0ZW5lcjogKGV2ZW50OiBTbG90VmlzaWJpbGl0eUNoYW5nZWRFdmVudCkgPT4gdm9pZFxuICApOiBTZXJ2aWNlO1xuICBhZGRFdmVudExpc3RlbmVyKFxuICAgIGV2ZW50VHlwZTogc3RyaW5nLFxuICAgIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkXG4gICk6IFNlcnZpY2U7XG4gIGdldFNsb3RzKCk6IFNsb3RbXTtcbn1cblxuaW50ZXJmYWNlIENvbXBhbmlvbkFkc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlIHtcbiAgZW5hYmxlU3luY0xvYWRpbmcoKTogdm9pZDtcbiAgc2V0UmVmcmVzaFVuZmlsbGVkU2xvdHModmFsdWU6IGJvb2xlYW4pOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQ29udGVudFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlIHtcbiAgc2V0Q29udGVudChzbG90OiBTbG90LCBjb250ZW50OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YkFkc1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGFkcyBmcm9tIHRoZSBnaXZlbiBzbG90cyBhbmQgcmVwbGFjZXMgdGhlbSB3aXRoIGJsYW5rIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRfc2xvdHMgVGhlIGFycmF5IG9mIHNsb3RzIHRvIGNsZWFyLiBBcnJheSBpcyBvcHRpb25hbDsgYWxsIHNsb3RzIHdpbGwgYmUgY2xlYXJlZCBpZiBpdCBpcyB1bnNwZWNpZmllZC5cbiAgICovXG4gIGNsZWFyKG9wdF9zbG90cz86IFNsb3RbXSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgcGFnZS1sZXZlbCBhZCBjYXRlZ29yeSBleGNsdXNpb24gbGFiZWxzLlxuICAgKi9cbiAgY2xlYXJDYXRlZ29yeUV4Y2x1c2lvbnMoKTogUHViQWRzU2VydmljZTtcblxuICAvKipcbiAgICogQ2xlYXJzIGN1c3RvbSB0YXJnZXRpbmcgcGFyYW1ldGVycyBmb3IgYSBzcGVjaWZpYyBrZXkgb3IgZm9yIGFsbCBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0X2tleSBUYXJnZXRpbmcgcGFyYW1ldGVyIGtleS4gVGhlIGtleSBpcyBvcHRpb25hbDsgYWxsIHRhcmdldGluZyBwYXJhbWV0ZXJzIHdpbGwgYmUgY2xlYXJlZCBpZiBpdCBpcyB1bnNwZWNpZmllZC5cbiAgICovXG4gIGNsZWFyVGFyZ2V0aW5nKG9wdF9rZXk/OiBzdHJpbmcpOiBQdWJBZHNTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGNvbGxhcHNpbmcgb2Ygc2xvdCBkaXZzIHNvIHRoYXQgdGhleSBkb24ndCB0YWtlIHVwIGFueSBzcGFjZSBvbiB0aGUgcGFnZSB3aGVuIHRoZXJlIGlzIG5vIGFkIGNvbnRlbnQgdG8gZGlzcGxheS5cbiAgICpcbiAgICogQHBhcmFtIG9wdF9jb2xsYXBzZUJlZm9yZUFkRmV0Y2ggV2hldGhlciB0byBjb2xsYXBzZSB0aGUgc2xvdHMgZXZlbiBiZWZvcmUgdGhlIGFkcyBhcmUgZmV0Y2hlZC4gVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWw7IGlmIG5vdCBwcm92aWRlZCwgZmFsc2Ugd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgKi9cbiAgY29sbGFwc2VFbXB0eURpdnMob3B0X2NvbGxhcHNlQmVmb3JlQWRGZXRjaD86IGJvb2xlYW4pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyByZXF1ZXN0cyBmb3IgYWRzIG9uIHBhZ2UgbG9hZCwgYnV0IGFsbG93cyBhZHMgdG8gYmUgcmVxdWVzdGVkIHdpdGggYSBgZ29vZ2xldGFnLnB1YmFkcygpLnJlZnJlc2goKWAgY2FsbC5cbiAgICovXG4gIGRpc2FibGVJbml0aWFsTG9hZCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuZCBkaXNwbGF5cyBhbiBhZCBzbG90IHdpdGggdGhlIGdpdmVuIGFkIHVuaXQgcGF0aCBhbmQgc2l6ZS5cbiAgICpcbiAgICogQHBhcmFtIGFkVW5pdFBhdGggVGhlIGFkIHVuaXQgcGF0aCBvZiBzbG90IHRvIGJlIHJlbmRlcmVkLlxuICAgKiBAcGFyYW0gc2l6ZSBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzbG90LlxuICAgKiBAcGFyYW0gb3B0X2RpdiBFaXRoZXIgdGhlIElEIG9mIHRoZSBkaXYgY29udGFpbmluZyB0aGUgc2xvdCBvciB0aGUgZGl2IGVsZW1lbnQgaXRzZWxmLlxuICAgKiBAcGFyYW0gb3B0X2NsaWNrVXJsIFRoZSBjbGljayBVUkwgdG8gdXNlIG9uIHRoaXMgc2xvdC5cbiAgICovXG4gIGRpc3BsYXkoXG4gICAgYWRVbml0UGF0aDogc3RyaW5nLFxuICAgIHNpemU6IEdlbmVyYWxTaXplLFxuICAgIG9wdF9kaXY/OiBzdHJpbmcgfCBFbGVtZW50LFxuICAgIG9wdF9jbGlja1VybD86IHN0cmluZ1xuICApOiBTbG90O1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGxhenkgbG9hZGluZyBpbiBHUFQgYXMgZGVmaW5lZCBieSB0aGUgY29uZmlnIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIG9wdF9jb25maWcgQ29uZmlndXJhdGlvbiBvYmplY3QgYWxsb3dzIGN1c3RvbWl6YXRpb24gb2YgbGF6eSBsb2FkaW5nIGJlaGF2aW9yLiBBbnkgb21pdHRlZCBjb25maWd1cmF0aW9ucyB3aWxsIHVzZSBhIGRlZmF1bHQgc2V0IGJ5IEdvb2dsZSB0aGF0IHdpbGwgYmUgdHVuZWQgb3ZlciB0aW1lLiBUbyBkaXNhYmxlIGEgcGFydGljdWxhciBzZXR0aW5nLCBzdWNoIGFzIGEgZmV0Y2hpbmcgbWFyZ2luLCBzZXQgdGhlIHZhbHVlIHRvIC0xLlxuICAgKlxuICAgKiBmZXRjaE1hcmdpblBlcmNlbnQgaXMgdGhlIG1pbmltdW0gZGlzdGFuY2UgZnJvbSB0aGUgY3VycmVudCB2aWV3cG9ydCBhIHNsb3QgbXVzdCBiZSBiZWZvcmUgd2UgZmV0Y2ggdGhlIGFkIGFzIGEgcGVyY2VudGFnZSBvZiB2aWV3cG9ydCBzaXplLiAwIG1lYW5zIFwid2hlbiB0aGUgc2xvdCBlbnRlcnMgdGhlIHZpZXdwb3J0XCIsIDEwMCBtZWFucyBcIndoZW4gdGhlIGFkIGlzIDEgdmlld3BvcnQgYXdheVwiLCBhbmQgc28gb24uXG4gICAqXG4gICAqIHJlbmRlck1hcmdpblBlcmNlbnQgaXMgdGhlIG1pbmltdW0gZGlzdGFuY2UgZnJvbSB0aGUgY3VycmVudCB2aWV3cG9ydCBhIHNsb3QgbXVzdCBiZSBiZWZvcmUgd2UgcmVuZGVyIGFuIGFkLiBUaGlzIGFsbG93cyBmb3IgcHJlZmV0Y2hpbmcgdGhlIGFkLCBidXQgd2FpdGluZyB0byByZW5kZXIgYW5kIGRvd25sb2FkIG90aGVyIHN1YnJlc291cmNlcy4gVGhlIHZhbHVlIHdvcmtzIGp1c3QgbGlrZSBmZXRjaE1hcmdpblBlcmNlbnQgYXMgYSBwZXJjZW50YWdlIG9mIHZpZXdwb3J0LlxuICAgKlxuICAgKiBtb2JpbGVTY2FsaW5nIGlzIGEgbXVsdGlwbGllciBhcHBsaWVkIHRvIG1hcmdpbnMgb24gbW9iaWxlIGRldmljZXMuIFRoaXMgYWxsb3dzIHZhcnlpbmcgbWFyZ2lucyBvbiBtb2JpbGUgdnMuIGRlc2t0b3AuIEZvciBleGFtcGxlLCBhIG1vYmlsZVNjYWxpbmcgb2YgMi4wIHdpbGwgbXVsdGlwbHkgYWxsIG1hcmdpbnMgYnkgMiBvbiBtb2JpbGUgZGV2aWNlcywgaW5jcmVhc2luZyB0aGUgbWluaW11bSBkaXN0YW5jZSBhIHNsb3QgY2FuIGJlIGJlZm9yZSBmZXRjaGluZyBhbmQgcmVuZGVyaW5nLlxuICAgKi9cbiAgZW5hYmxlTGF6eUxvYWQob3B0X2NvbmZpZz86IExhenlMb2FkT3B0aW9uc0NvbmZpZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc2luZ2xlIHJlcXVlc3QgbW9kZSBmb3IgZmV0Y2hpbmcgbXVsdGlwbGUgYWRzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqL1xuICBlbmFibGVTaW5nbGVSZXF1ZXN0KCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNpZ25hbHMgdG8gR1BUIHRoYXQgdmlkZW8gYWRzIHdpbGwgYmUgcHJlc2VudCBvbiB0aGUgcGFnZS5cbiAgICovXG4gIGVuYWJsZVZpZGVvQWRzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgQWRTZW5zZSBhdHRyaWJ1dGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgTmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGxvb2sgZm9yLlxuICAgKi9cbiAgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXR0cmlidXRlIGtleXMgdGhhdCBoYXZlIGJlZW4gc2V0IG9uIHRoaXMgc2VydmljZS5cbiAgICovXG4gIGdldEF0dHJpYnV0ZUtleXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBjdXN0b20gc2VydmljZS1sZXZlbCB0YXJnZXRpbmcgcGFyYW1ldGVyIHRoYXQgaGFzIGJlZW4gc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IFRoZSB0YXJnZXRpbmcga2V5IHRvIGxvb2sgZm9yLlxuICAgKi9cbiAgZ2V0VGFyZ2V0aW5nKGtleTogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGN1c3RvbSBzZXJ2aWNlLWxldmVsIHRhcmdldGluZyBrZXlzIHRoYXQgaGF2ZSBiZWVuIHNldC5cbiAgICovXG4gIGdldFRhcmdldGluZ0tleXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgaW5pdGlhbCByZXF1ZXN0cyBmb3IgYWRzIHdhcyBzdWNjZXNzZnVsbHkgZGlzYWJsZWQgYnkgYSBwcmV2aW91cyBkaXNhYmxlSW5pdGlhbExvYWQgY2FsbC5cbiAgICovXG4gIGlzSW5pdGlhbExvYWREaXNhYmxlZCgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGFuZCBkaXNwbGF5cyBuZXcgYWRzIGZvciBzcGVjaWZpYyBvciBhbGwgc2xvdHMgb24gdGhlIHBhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRfc2xvdHMgVGhlIHNsb3RzIHRvIHJlZnJlc2guIEFycmF5IGlzIG9wdGlvbmFsOyBhbGwgc2xvdHMgd2lsbCBiZSByZWZyZXNoZWQgaWYgaXQgaXMgdW5zcGVjaWZpZWQuXG4gICAqIEBwYXJhbSBvcHRfb3B0aW9ucyBDb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVmcmVzaCBjYWxsLiBjaGFuZ2VDb3JyZWxhdG9yIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCBhIG5ldyBjb3JyZWxhdG9yIGlzIHRvIGJlIGdlbmVyYXRlZCBmb3IgZmV0Y2hpbmcgYWRzLiBPdXIgYWQgc2VydmVycyBtYWludGFpbiB0aGlzIGNvcnJlbGF0b3IgdmFsdWUgYnJpZWZseSAoY3VycmVudGx5IGZvciAzMCBzZWNvbmRzLCBidXQgc3ViamVjdCB0byBjaGFuZ2UpLCBzdWNoIHRoYXQgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBjb3JyZWxhdG9yIHJlY2VpdmVkIGNsb3NlIHRvZ2V0aGVyIHdpbGwgYmUgY29uc2lkZXJlZCBhIHNpbmdsZSBwYWdlIHZpZXcuIEJ5IGRlZmF1bHQgYSBuZXcgY29ycmVsYXRvciBpcyBnZW5lcmF0ZWQgZm9yIGV2ZXJ5IHJlZnJlc2guIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIEdQVCdzIGxvbmctbGl2ZWQgcGFnZXZpZXcsIHdoaWNoIGF1dG9tYXRpY2FsbHkgcmVmbGVjdHMgdGhlIGFkcyBjdXJyZW50bHkgb24gdGhlIHBhZ2UgYW5kIGhhcyBubyBleHBpcmF0aW9uIHRpbWUuXG4gICAqL1xuICByZWZyZXNoKFxuICAgIG9wdF9zbG90cz86IFNsb3RbXSxcbiAgICBvcHRfb3B0aW9ucz86IHsgY2hhbmdlQ29ycmVsYXRvcjogYm9vbGVhbiB9XG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdmFsdWVzIGZvciBBZFNlbnNlIGF0dHJpYnV0ZXMgdGhhdCBhcHBseSB0byBhbGwgYWQgc2xvdHMgdW5kZXIgdGhlIHB1Ymxpc2hlciBhZHMgc2VydmljZS5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKiBAcGFyYW0gdmFsdWUgQXR0cmlidXRlIHZhbHVlLlxuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHViQWRzU2VydmljZTtcblxuICAvKipcbiAgICogU2V0cyBhIHBhZ2UtbGV2ZWwgYWQgY2F0ZWdvcnkgZXhjbHVzaW9uIGZvciB0aGUgZ2l2ZW4gbGFiZWwgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIGNhdGVnb3J5RXhjbHVzaW9uIFRoZSBhZCBjYXRlZ29yeSBleGNsdXNpb24gbGFiZWwgdG8gYWRkLlxuICAgKi9cbiAgc2V0Q2F0ZWdvcnlFeGNsdXNpb24oY2F0ZWdvcnlFeGNsdXNpb246IHN0cmluZyk6IFB1YkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYW5kIGRpc2FibGVzIGhvcml6b250YWwgY2VudGVyaW5nIG9mIGFkcy5cbiAgICpcbiAgICogQHBhcmFtIGNlbnRlckFkcyB0cnVlIHRvIGNlbnRlciBhZHMsIGZhbHNlIHRvIGxlZnQtYWxpZ24gdGhlbS5cbiAgICovXG4gIHNldENlbnRlcmluZyhjZW50ZXJBZHM6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXRzIG9wdGlvbnMgZm9yIGlnbm9yaW5nIEdvb2dsZSBBZCBNYW5hZ2VyIGNvb2tpZXMgb24gdGhlIGN1cnJlbnQgcGFnZS5cbiAgICpcbiAgICogQHBhcmFtIGNvb2tpZU9wdGlvbnMgVGhlIGNvb2tpZSBvcHRpb25zIHRvIHNldC4gUG9zc2libGUgdmFsdWVzIGFyZTpcbiAgICpcbiAgICogMDogRW5hYmxlcyBHb29nbGUgQWQgTWFuYWdlciBjb29raWVzIG9uIGFkIHJlcXVlc3RzIG9uIHRoZSBwYWdlLiBUaGlzIG9wdGlvbiBpcyBzZXQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogMTogSWdub3JlcyBHb29nbGUgQWQgTWFuYWdlciBjb29raWVzIG9uIHN1YnNlcXVlbnQgYWQgcmVxdWVzdHMgYW5kIHByZXZlbnRzIGNvb2tpZXMgZnJvbSBiZWluZyBjcmVhdGVkIG9uIHRoZSBwYWdlLiBOb3RlIHRoYXQgY29va2llcyB3aWxsIG5vdCBiZSBpZ25vcmVkIG9uIGNlcnRhaW4gcGluZ2JhY2tzIGFuZCB0aGF0IHRoaXMgb3B0aW9uIHdpbGwgZGlzYWJsZSBmZWF0dXJlcyB0aGF0IHJlbHkgb24gY29va2llcywgc3VjaCBhcyBkeW5hbWljIGFsbG9jYXRpb24uXG4gICAqL1xuICBzZXRDb29raWVPcHRpb25zKGNvb2tpZU9wdGlvbnM6IG51bWJlcik6IFB1YkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgd2hldGhlciBhbGwgYWRzIG9uIHRoZSBwYWdlIHNob3VsZCBiZSBmb3JjZWQgdG8gYmUgcmVuZGVyZWQgdXNpbmcgYSBTYWZlRnJhbWUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gZm9yY2VTYWZlRnJhbWUgdHJ1ZSB0byBmb3JjZSBhbGwgYWRzIG9uIHRoZSBwYWdlIHRvIGJlIHJlbmRlcmVkIGluIFNhZmVGcmFtZXMgYW5kIGZhbHNlIHRvIGNoYW5nZSB0aGUgcHJldmlvdXMgc2V0dGluZyB0byBmYWxzZS4gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdoZW4gdW5zcGVjaWZpZWQgZWFybGllciwgd29uJ3QgY2hhbmdlIGFueXRoaW5nLlxuICAgKi9cbiAgc2V0Rm9yY2VTYWZlRnJhbWUoZm9yY2VTYWZlRnJhbWU6IGJvb2xlYW4pOiBQdWJBZHNTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBQYXNzZXMgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSB3ZWJzaXRlcyBzbyB5b3UgY2FuIGdlby10YXJnZXQgbGluZSBpdGVtcyB0byBzcGVjaWZpYyBsb2NhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhZGRyZXNzIEZyZWVmb3JtIGFkZHJlc3MuXG4gICAqL1xuICBzZXRMb2NhdGlvbihhZGRyZXNzOiBzdHJpbmcpOiBQdWJBZHNTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgY29uZmlndXJhdGlvbiBvZiBhbGwgcHJpdmFjeSBzZXR0aW5ncyBmcm9tIGEgc2luZ2xlIEFQSSB1c2luZyBhIGNvbmZpZyBvYmplY3QuXG4gICAqIEBwYXJhbSBwcml2YWN5U2V0dGluZ3NcbiAgICovXG4gIHNldFByaXZhY3lTZXR0aW5ncyhwcml2YWN5U2V0dGluZ3M6IFByaXZhY3lTZXR0aW5nc0NvbmZpZyk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciB0aGUgcHVibGlzaGVyLXByb3ZpZGVkIElELlxuICAgKlxuICAgKiBAcGFyYW0gcHBpZCBBbiBhbHBoYW51bWVyaWMgSUQgcHJvdmlkZWQgYnkgdGhlIHB1Ymxpc2hlciB3aXRoIGEgcmVjb21tZW5kZWQgbWF4aW11bSBvZiAxNTAgY2hhcmFjdGVycy5cbiAgICovXG4gIHNldFB1Ymxpc2hlclByb3ZpZGVkSWQocHBpZDogc3RyaW5nKTogUHViQWRzU2VydmljZTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBwYWdlIHNob3VsZCByZXF1ZXN0IHBlcnNvbmFsaXplZCBvciBub24tcGVyc29uYWxpemVkIGFkcy5cbiAgICpcbiAgICogQHBhcmFtIG5vblBlcnNvbmFsaXplZEFkcyAwIGZvciBwZXJzb25hbGl6ZWQgYWRzLCAxIGZvciBub24tcGVyc29uYWxpemVkIGFkcy5cbiAgICovXG4gIHNldFJlcXVlc3ROb25QZXJzb25hbGl6ZWRBZHMobm9uUGVyc29uYWxpemVkQWRzOiAwIHwgMSk6IFB1YkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhZ2UtbGV2ZWwgcHJlZmVyZW5jZXMgZm9yIFNhZmVGcmFtZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICovXG4gIHNldFNhZmVGcmFtZUNvbmZpZyhjb25maWc6IFNhZmVGcmFtZUNvbmZpZyk6IFB1YkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjdXN0b20gdGFyZ2V0aW5nIHBhcmFtZXRlciBmb3IgdGhpcyBzbG90LlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IFRhcmdldGluZyBwYXJhbWV0ZXIga2V5LlxuICAgKiBAcGFyYW0gdmFsdWUgVGFyZ2V0aW5nIHBhcmFtZXRlciB2YWx1ZSBvciBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBzZXRUYXJnZXRpbmcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFB1YkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZpZGVvIGNvbnRlbnQgaW5mb3JtYXRpb24gdG8gYmUgc2VudCBhbG9uZyB3aXRoIHRoZSBhZCByZXF1ZXN0cyBmb3IgdGFyZ2V0aW5nIGFuZCBjb250ZW50IGV4Y2x1c2lvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHBhcmFtIHZpZGVvQ29udGVudElkIFRoZSB2aWRlbyBjb250ZW50IElELlxuICAgKiBAcGFyYW0gdmlkZW9DbXNJZCBUaGUgdmlkZW8gQ01TIElELlxuICAgKi9cbiAgc2V0VmlkZW9Db250ZW50KHZpZGVvQ29udGVudElkOiBzdHJpbmcsIHZpZGVvQ21zSWQ6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGNvcnJlbGF0b3IgdGhhdCBpcyBzZW50IHdpdGggYWQgcmVxdWVzdHMsIGVmZmVjdGl2ZWx5IHN0YXJ0aW5nIGEgbmV3IHBhZ2Ugdmlldy5cbiAgICovXG4gIHVwZGF0ZUNvcnJlbGF0b3IoKTogUHViQWRzU2VydmljZTtcbn1cblxuaW50ZXJmYWNlIFNpemVNYXBwaW5nQnVpbGRlciB7XG4gIC8qKlxuICAgKiBBZGRzIGEgbWFwcGluZyBmcm9tIGEgc2luZ2xlLXNpemUgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSB2aWV3cG9ydCB0byBlaXRoZXIgYSBzaW5nbGUtc2l6ZSBhcnJheSBvciBhIG11bHRpLXNpemUgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSBzbG90LlxuICAgKlxuICAgKiBAcGFyYW0gdmlld3BvcnRTaXplIFRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydCBmb3IgdGhpcyBtYXBwaW5nIGVudHJ5LlxuICAgKiBAcGFyYW0gc2xvdFNpemUgVGhlIHNpemVzIG9mIHRoZSBzbG90IGZvciB0aGlzIG1hcHBpbmcgZW50cnkuXG4gICAqL1xuICBhZGRTaXplKFxuICAgIHZpZXdwb3J0U2l6ZTogU2luZ2xlU2l6ZUFycmF5LFxuICAgIHNsb3RTaXplOiBHZW5lcmFsU2l6ZVxuICApOiBTaXplTWFwcGluZ0J1aWxkZXI7XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHNpemUgbWFwIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgbWFwcGluZ3MgYWRkZWQgdG8gdGhpcyBidWlsZGVyLlxuICAgKi9cbiAgYnVpbGQoKTogU2l6ZU1hcHBpbmdBcnJheTtcbn1cblxuaW50ZXJmYWNlIEV2ZW50IHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgc2xvdDogU2xvdDtcbn1cblxuaW50ZXJmYWNlIFNsb3RSZW5kZXJFbmRlZEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBhZHZlcnRpc2VySWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNhbXBhaWduSWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNyZWF0aXZlSWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGlzRW1wdHk6IGJvb2xlYW47XG4gIGxpbmVJdGVtSWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHNpemU6IG51bWJlcltdIHwgc3RyaW5nO1xuICBzb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxuaW50ZXJmYWNlIFNsb3RSZXF1ZXN0ZWRFdmVudCBleHRlbmRzIEV2ZW50IHt9XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1lbXB0eS1pbnRlcmZhY2VcbmludGVyZmFjZSBTbG90UmVzcG9uc2VSZWNlaXZlZCBleHRlbmRzIEV2ZW50IHt9XG5cbmludGVyZmFjZSBTbG90VmlzaWJpbGl0eUNoYW5nZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgaW5WaWV3UGVyY2VudGFnZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsb3Qge1xuICAvKipcbiAgICogQWRkcyBhIHNlcnZpY2UgdG8gdGhpcyBzbG90LlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZSBUaGUgc2VydmljZSB0byBiZSBhZGRlZC5cbiAgICovXG4gIGFkZFNlcnZpY2Uoc2VydmljZTogU2VydmljZSk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgc2xvdC1sZXZlbCBhZCBjYXRlZ29yeSBleGNsdXNpb24gbGFiZWxzIGZvciB0aGlzIHNsb3QuXG4gICAqL1xuICBjbGVhckNhdGVnb3J5RXhjbHVzaW9ucygpOiBTbG90O1xuXG4gIC8qKlxuICAgKiBDbGVhcnMgc3BlY2lmaWMgb3IgYWxsIGN1c3RvbSBzbG90LWxldmVsIHRhcmdldGluZyBwYXJhbWV0ZXJzIGZvciB0aGlzIHNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRfa2V5IFRhcmdldGluZyBwYXJhbWV0ZXIga2V5LiBUaGUga2V5IGlzIG9wdGlvbmFsOyBhbGwgdGFyZ2V0aW5nIHBhcmFtZXRlcnMgd2lsbCBiZSBjbGVhcmVkIGlmIGl0IGlzIHVuc3BlY2lmaWVkLlxuICAgKi9cbiAgY2xlYXJUYXJnZXRpbmcob3B0X2tleT86IHN0cmluZyk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgYW4gYXJyYXkgb2YgbWFwcGluZ3MgZnJvbSBhIG1pbmltdW0gdmlld3BvcnQgc2l6ZSB0byBzbG90IHNpemUgZm9yIHRoaXMgc2xvdC5cbiAgICpcbiAgICogQHBhcmFtIHNpemVNYXBwaW5nIEFycmF5IG9mIHNpemUgbWFwcGluZ3MuIFlvdSBjYW4gdXNlIGBnb29nbGV0YWcuU2l6ZU1hcHBpbmdCdWlsZGVyYCB0byBjcmVhdGUgaXQuIEVhY2ggc2l6ZSBtYXBwaW5nIGlzIGFuIGFycmF5IG9mIHR3byBlbGVtZW50czogYGdvb2dsZXRhZy5TaW5nbGVTaXplQXJyYXlgIGFuZCBgZ29vZ2xldGFnLkdlbmVyYWxTaXplYC5cbiAgICovXG4gIGRlZmluZVNpemVNYXBwaW5nKHNpemVNYXBwaW5nOiBTaXplTWFwcGluZ0FycmF5KTogU2xvdDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBBZFNlbnNlIGF0dHJpYnV0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGtleSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gbG9vayBmb3IuXG4gICAqL1xuICBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHBhdGggb2YgdGhlIGFkIHVuaXQsIHdpdGggdGhlIG5ldHdvcmsgY29kZSBhbmQgYWQgdW5pdCBwYXRoLlxuICAgKi9cbiAgZ2V0QWRVbml0UGF0aCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYXR0cmlidXRlIGtleXMgc2V0IG9uIHRoaXMgc2xvdC5cbiAgICovXG4gIGdldEF0dHJpYnV0ZUtleXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFkIGNhdGVnb3J5IGV4Y2x1c2lvbiBsYWJlbHMgZm9yIHRoaXMgc2xvdC5cbiAgICovXG4gIGdldENhdGVnb3J5RXhjbHVzaW9ucygpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYWQgcmVzcG9uc2UgaW5mb3JtYXRpb24uXG4gICAqL1xuICBnZXRSZXNwb25zZUluZm9ybWF0aW9uKCk6IFJlc3BvbnNlSW5mb3JtYXRpb247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBzbG90IGVsZW1lbnQgcHJvdmlkZWQgd2hlbiB0aGUgc2xvdCB3YXMgZGVmaW5lZC5cbiAgICovXG4gIGdldFNsb3RFbGVtZW50SWQoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgY3VzdG9tIHRhcmdldGluZyBwYXJhbWV0ZXIgc2V0IG9uIHRoaXMgc2xvdC5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUaGUgdGFyZ2V0aW5nIGtleSB0byBsb29rIGZvci5cbiAgICovXG4gIGdldFRhcmdldGluZyhrZXk6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBjdXN0b20gdGFyZ2V0aW5nIGtleXMgc2V0IG9uIHRoaXMgc2xvdC5cbiAgICovXG4gIGdldFRhcmdldGluZ0tleXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNldHMgYSB2YWx1ZSBmb3IgYW4gQWRTZW5zZSBhdHRyaWJ1dGUgb24gYSBwYXJ0aWN1bGFyIGFkIHNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICogQHBhcmFtIHZhbHVlIEF0dHJpYnV0ZSB2YWx1ZS5cbiAgICovXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBzbG90LWxldmVsIGFkIGNhdGVnb3J5IGV4Y2x1c2lvbiBsYWJlbCBvbiB0aGlzIHNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBjYXRlZ29yeUV4Y2x1c2lvbiBUaGUgYWQgY2F0ZWdvcnkgZXhjbHVzaW9uIGxhYmVsIHRvIGFkZC5cbiAgICovXG4gIHNldENhdGVnb3J5RXhjbHVzaW9uKGNhdGVnb3J5RXhjbHVzaW9uOiBzdHJpbmcpOiBTbG90O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjbGljayBVUkwgdG8gd2hpY2ggdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIGFmdGVyIGNsaWNraW5nIG9uIHRoZSBhZC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBjbGljayBVUkwgdG8gc2V0LlxuICAgKi9cbiAgc2V0Q2xpY2tVcmwodmFsdWU6IHN0cmluZyk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIFNldHMgd2hldGhlciB0aGUgc2xvdCBkaXYgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZXJlIGlzIG5vIGFkIGluIHRoZSBzbG90LlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGFwc2UgV2hldGhlciB0byBjb2xsYXBzZSB0aGUgc2xvdCBpZiBubyBhZCBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIG9wdF9jb2xsYXBzZUJlZm9yZUFkRmV0Y2ggV2hldGhlciB0byBjb2xsYXBzZSB0aGUgc2xvdCBldmVuIGJlZm9yZSBhbiBhZCBpcyBmZXRjaGVkLiBJZ25vcmVkIGlmIGNvbGxhcHNlIGlzIG5vdCB0cnVlLlxuICAgKi9cbiAgc2V0Q29sbGFwc2VFbXB0eURpdihcbiAgICBjb2xsYXBzZTogYm9vbGVhbixcbiAgICBvcHRfY29sbGFwc2VCZWZvcmVBZEZldGNoPzogYm9vbGVhblxuICApOiBTbG90O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHdoZXRoZXIgYWRzIGluIHRoaXMgc2xvdCBzaG91bGQgYmUgZm9yY2VkIHRvIGJlIHJlbmRlcmVkIHVzaW5nIGEgU2FmZUZyYW1lIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIGZvcmNlU2FmZUZyYW1lIHRydWUgdG8gZm9yY2UgYWxsIGFkcyBpbiB0aGlzIHNsb3QgdG8gYmUgcmVuZGVyZWQgaW4gU2FmZUZyYW1lcyBhbmQgZmFsc2UgdG8gb3B0LW91dCBvZiBhIHBhZ2UtbGV2ZWwgc2V0dGluZyAoaWYgcHJlc2VudCkuIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aGVuIG5vdCBzcGVjaWZpZWQgYXQgcGFnZS1sZXZlbCwgd29uJ3QgY2hhbmdlIGFueXRoaW5nLlxuICAgKi9cbiAgc2V0Rm9yY2VTYWZlRnJhbWUoZm9yY2VTYWZlRnJhbWU6IGJvb2xlYW4pOiBTbG90O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzbG90LWxldmVsIHByZWZlcmVuY2VzIGZvciBTYWZlRnJhbWUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqL1xuICBzZXRTYWZlRnJhbWVDb25maWcoY29uZmlnOiBTYWZlRnJhbWVDb25maWcpOiBTbG90O1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY3VzdG9tIHRhcmdldGluZyBwYXJhbWV0ZXIgZm9yIHRoaXMgc2xvdC5cbiAgICpcbiAgICogQHBhcmFtIGtleSBUYXJnZXRpbmcgcGFyYW1ldGVyIGtleS5cbiAgICogQHBhcmFtIHZhbHVlIFRhcmdldGluZyBwYXJhbWV0ZXIgdmFsdWUgb3IgYXJyYXkgb2YgdmFsdWVzLlxuICAgKi9cbiAgc2V0VGFyZ2V0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBTbG90O1xuXG4gIC8qKlxuICAgKiBTZXRzIGN1c3RvbSB0YXJnZXRpbmcgcGFyYW1ldGVycyBmb3IgdGhpcyBzbG90LCBmcm9tIGEga2V5OnZhbHVlIG1hcCBpbiBhIEpTT04gb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gbWFwIFRhcmdldGluZyBwYXJhbWV0ZXIga2V5OnZhbHVlIG1hcC5cbiAgICovXG4gIHVwZGF0ZVRhcmdldGluZ0Zyb21NYXAobWFwOiBvYmplY3QpOiBTbG90O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdvb2dsZXRhZyB7XG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgdGhhdCBHUFQgQVBJIGlzIGxvYWRlZCBhbmQgcmVhZHkgdG8gYmUgY2FsbGVkLlxuICAgKi9cbiAgYXBpUmVhZHk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIGNvbW1hbmQgcXVldWUgZm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgR1BULXJlbGF0ZWQgY2FsbHMuXG4gICAqL1xuICBjbWQ6IENvbW1hbmRBcnJheTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgY29tcGFuaW9uIGFkcyBzZXJ2aWNlLlxuICAgKi9cbiAgY29tcGFuaW9uQWRzKCk6IENvbXBhbmlvbkFkc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRlbnQgc2VydmljZS5cbiAgICovXG4gIGNvbnRlbnQoKTogQ29udGVudFNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gb3V0LW9mLXBhZ2UgKGludGVyc3RpdGlhbCkgYWQgc2xvdCB3aXRoIHRoZSBnaXZlbiBhZCB1bml0IHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSBhZFVuaXRQYXRoIEZ1bGwgYWQgdW5pdCBwYXRoIHdpdGggdGhlIG5ldHdvcmsgY29kZSBhbmQgYWQgdW5pdCBjb2RlLlxuICAgKiBAcGFyYW0gb3B0X2RpdiBJRCBvZiB0aGUgZGl2IHRoYXQgd2lsbCBjb250YWluIHRoaXMgYWQgdW5pdCBvciBPdXRPZlBhZ2VGb3JtYXQuXG4gICAqL1xuICBkZWZpbmVPdXRPZlBhZ2VTbG90KGFkVW5pdFBhdGg6IHN0cmluZywgb3B0X2Rpdj86IHN0cmluZyk6IFNsb3Q7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYWQgc2xvdCB3aXRoIGEgZ2l2ZW4gYWQgdW5pdCBwYXRoIGFuZCBzaXplIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggdGhlIElEIG9mIGEgZGl2IGVsZW1lbnQgb24gdGhlIHBhZ2UgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGFkLlxuICAgKlxuICAgKiBAcGFyYW0gYWRVbml0UGF0aCBGdWxsIGFkIHVuaXQgcGF0aCB3aXRoIHRoZSBuZXR3b3JrIGNvZGUgYW5kIHVuaXQgY29kZS5cbiAgICogQHBhcmFtIHNpemUgV2lkdGggYW5kIGhlaWdodCBvZiB0aGUgYWRkZWQgc2xvdC4gVGhpcyBpcyB0aGUgc2l6ZSB0aGF0IGlzIHVzZWQgaW4gdGhlIGFkIHJlcXVlc3QgaWYgbm8gcmVzcG9uc2l2ZSBzaXplIG1hcHBpbmcgaXMgcHJvdmlkZWQgb3IgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0IGlzIHNtYWxsZXIgdGhhbiB0aGUgc21hbGxlc3Qgc2l6ZSBwcm92aWRlZCBpbiB0aGUgbWFwcGluZy5cbiAgICogQHBhcmFtIG9wdF9kaXYgSUQgb2YgdGhlIGRpdiB0aGF0IHdpbGwgY29udGFpbiB0aGlzIGFkIHVuaXQuXG4gICAqL1xuICBkZWZpbmVTbG90KGFkVW5pdFBhdGg6IHN0cmluZywgc2l6ZTogR2VuZXJhbFNpemUsIG9wdF9kaXY/OiBzdHJpbmcpOiBTbG90O1xuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgZ2l2ZW4gc2xvdHMsIHJlbW92aW5nIGFsbCByZWxhdGVkIG9iamVjdHMgYW5kIHJlZmVyZW5jZXMgb2YgdGhvc2Ugc2xvdHMgZnJvbSBHUFQuXG4gICAqIEBwYXJhbSBvcHRfc2xvdHMgVGhlIGFycmF5IG9mIHNsb3RzIHRvIGRlc3Ryb3kuIEFycmF5IGlzIG9wdGlvbmFsOyBhbGwgc2xvdHMgd2lsbCBiZSBkZXN0cm95ZWQgaWYgaXQgaXMgdW5zcGVjaWZpZWQuXG4gICAqL1xuICBkZXN0cm95U2xvdHMob3B0X3Nsb3RzPzogU2xvdFtdKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzYWJsZXMgdGhlIEdvb2dsZSBQdWJsaXNoZXIgQ29uc29sZS5cbiAgICovXG4gIGRpc2FibGVQdWJsaXNoZXJDb25zb2xlKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEluc3RydWN0cyBzbG90IHNlcnZpY2VzIHRvIHJlbmRlciB0aGUgc2xvdC5cbiAgICpcbiAgICogQHBhcmFtIGRpdk9yU2xvdCBFaXRoZXIgdGhlIElEIG9mIHRoZSBkaXYgZWxlbWVudCBjb250YWluaW5nIHRoZSBhZCBzbG90IG9yIHRoZSBkaXYgZWxlbWVudCwgb3IgdGhlIHNsb3Qgb2JqZWN0LiBJZiBhIGRpdiBlbGVtZW50IGlzIHByb3ZpZGVkLCBpdCBtdXN0IGhhdmUgYW4gJ2lkJyBhdHRyaWJ1dGUgd2hpY2ggbWF0Y2hlcyB0aGUgSUQgcGFzc2VkIGludG8gYGdvb2dsZXRhZy5kZWZpbmVTbG90KClgLlxuICAgKi9cbiAgZGlzcGxheShkaXZPclNsb3Q/OiBzdHJpbmcgfCBFbGVtZW50IHwgU2xvdCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYWxsIEdQVCBzZXJ2aWNlcyB0aGF0IGhhdmUgYmVlbiBkZWZpbmVkIGZvciBhZCBzbG90cyBvbiB0aGUgcGFnZS5cbiAgICovXG4gIGVuYWJsZVNlcnZpY2VzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBHUFQuXG4gICAqL1xuICBnZXRWZXJzaW9uKCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3BlbnMgdGhlIEdvb2dsZSBQdWJsaXNoZXIgQ29uc29sZS5cbiAgICpcbiAgICogQHBhcmFtIG9wdF9kaXYgSUQgb2YgdGhlIGRpdiBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGFkIHNsb3QuXG4gICAqL1xuICBvcGVuQ29uc29sZShvcHRfZGl2Pzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHViYWRzIHNlcnZpY2UuXG4gICAqL1xuICBwdWJhZHMoKTogUHViQWRzU2VydmljZTtcblxuICAvKipcbiAgICogRmxhZyBpbmRpY2F0aW5nIHRoYXQgUHViYWRzIHNlcnZpY2UgaXMgZW5hYmxlZCwgbG9hZGVkIGFuZCBmdWxseSBvcGVyYXRpb25hbC5cbiAgICovXG4gIHB1YmFkc1JlYWR5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoYXQgdGl0bGUgZm9yIGFsbCBhZCBjb250YWluZXIgaWZyYW1lcyBjcmVhdGVkIGJ5IHB1YmFkcyBzZXJ2aWNlLCBmcm9tIHRoaXMgcG9pbnQgb253YXJkcy5cbiAgICpcbiAgICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSB0byBzZXQuXG4gICAqL1xuICBzZXRBZElmcmFtZVRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFNpemVNYXBwaW5nQnVpbGRlci5cbiAgICovXG4gIHNpemVNYXBwaW5nKCk6IFNpemVNYXBwaW5nQnVpbGRlcjtcbn1cbiJdfQ==