CiAgICAgICBJbmRleCBvZiBEb2N1bWVudGF0aW9uIGZvciBQZW9wbGUgSW50ZXJlc3RlZCBpbiBXcml0aW5nIGFuZC9vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyB0aGUgTGludXggS2VybmVsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICBKdWFuLU1hcmlhbm8gZGUgR295ZW5lY2hlIDxqbXNleWFzQGRpdC51cG0uZXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8qCiAqIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IG1heSBiZSBmb3VuZCBhdDoKICogICBodHRwOi8vd3d3LmRpdC51cG0uZXMvfmptc2V5YXMvbGludXgva2VybmVsL2hhY2tlcnMtZG9jcy5odG1sCiAqLwoKICAgVGhlIG5lZWQgZm9yIGEgZG9jdW1lbnQgbGlrZSB0aGlzIG9uZSBiZWNhbWUgYXBwYXJlbnQgaW4gdGhlCiAgIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXMgdGhlIHNhbWUgcXVlc3Rpb25zLCBhc2tpbmcgZm9yIHBvaW50ZXJzCiAgIHRvIGluZm9ybWF0aW9uLCBhcHBlYXJlZCBhZ2FpbiBhbmQgYWdhaW4uCiAgIAogICBGb3J0dW5hdGVseSwgYXMgbW9yZSBhbmQgbW9yZSBwZW9wbGUgZ2V0IHRvIEdOVS9MaW51eCwgbW9yZSBhbmQgbW9yZQogICBnZXQgaW50ZXJlc3RlZCBpbiB0aGUgS2VybmVsLiBCdXQgcmVhZGluZyB0aGUgc291cmNlcyBpcyBub3QgYWx3YXlzCiAgIGVub3VnaC4gSXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlLCBidXQgbWlzcyB0aGUgY29uY2VwdHMsIHRoZQogICBwaGlsb3NvcGh5IGFuZCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCB0aGlzIGNvZGUuCiAgIAogICBVbmZvcnR1bmF0ZWx5LCBub3QgbWFueSBkb2N1bWVudHMgYXJlIGF2YWlsYWJsZSBmb3IgYmVnaW5uZXJzIHRvCiAgIHN0YXJ0LiBBbmQsIGV2ZW4gaWYgdGhleSBleGlzdCwgdGhlcmUgd2FzIG5vICJ3ZWxsLWtub3duIiBwbGFjZSB3aGljaAogICBrZXB0IHRyYWNrIG9mIHRoZW0uIFRoZXNlIGxpbmVzIHRyeSB0byBjb3ZlciB0aGlzIGxhY2suIEFsbCBkb2N1bWVudHMKICAgYXZhaWxhYmxlIG9uIGxpbmUga25vd24gYnkgdGhlIGF1dGhvciBhcmUgbGlzdGVkLCB3aGlsZSBzb21lIHJlZmVyZW5jZQogICBib29rcyBhcmUgYWxzbyBtZW50aW9uZWQuCiAgIAogICBQTEVBU0UsIGlmIHlvdSBrbm93IGFueSBwYXBlciBub3QgbGlzdGVkIGhlcmUgb3Igd3JpdGUgYSBuZXcgZG9jdW1lbnQsCiAgIHNlbmQgbWUgYW4gZS1tYWlsLCBhbmQgSSdsbCBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuIEFueQogICBjb3JyZWN0aW9ucywgaWRlYXMgb3IgY29tbWVudHMgYXJlIGFsc28gd2VsY29tZWQuCiAgIAogICBUaGUgcGFwZXJzIHRoYXQgZm9sbG93IGFyZSBsaXN0ZWQgaW4gbm8gcGFydGljdWxhciBvcmRlci4gQWxsIGFyZQogICBjYXRhbG9nZWQgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczogdGhlIGRvY3VtZW50J3MgIlRpdGxlIiwgdGhlCiAgICJBdXRob3IiL3MsIHRoZSAiVVJMIiB3aGVyZSB0aGV5IGNhbiBiZSBmb3VuZCwgc29tZSAiS2V5d29yZHMiIGhlbHBmdWwKICAgd2hlbiBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIHRvcGljcywgYW5kIGEgYnJpZWYgIkRlc2NyaXB0aW9uIiBvZiB0aGUKICAgRG9jdW1lbnQuCiAgIAogICBFbmpveSEKICAgCiAgICAgT04tTElORSBET0NTOgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzLCBUaGlyZCBFZGl0aW9uIgogICAgICAgQXV0aG9yOiBKb25hdGhhbiBDb3JiZXQsIEFsZXNzYW5kcm8gUnViaW5pLCBHcmVnIEtyb2FoLUhhcnRtYW4KICAgICAgIFVSTDogaHR0cDovL2x3bi5uZXQvS2VybmVsL0xERDMvCiAgICAgICBEZXNjcmlwdGlvbjogQSA2MDAtcGFnZSBib29rIGNvdmVyaW5nIHRoZSAoMi42LjEwKSBkcml2ZXIKICAgICAgIHByb2dyYW1taW5nIEFQSSBhbmQga2VybmVsIGhhY2tpbmcgaW4gZ2VuZXJhbC4gIEF2YWlsYWJsZSB1bmRlciB0aGUKICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSAyLjAgbGljZW5zZS4KCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IERhdmlkIEEuIFJ1c2xpbmcuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL3Rsay90bGsuaHRtbAogICAgICAgS2V5d29yZHM6IGV2ZXJ5dGhpbmchLCBib29rLgogICAgICAgRGVzY3JpcHRpb246IE9uIGxpbmUsIDIwMCBwYWdlcyBib29rIGRlc2NyaWJpbmcgbW9zdCBhc3BlY3RzIG9mCiAgICAgICB0aGUgTGludXggS2VybmVsLiBQcm9iYWJseSwgdGhlIGZpcnN0IHJlZmVyZW5jZSBmb3IgYmVnaW5uZXJzLgogICAgICAgTG90cyBvZiBpbGx1c3RyYXRpb25zIGV4cGxhaW5pbmcgZGF0YSBzdHJ1Y3R1cmVzIHVzZSBhbmQKICAgICAgIHJlbGF0aW9uc2hpcHMgaW4gdGhlIHB1cmVzdCBSaWNoYXJkIFcuIFN0ZXZlbnMnIHN0eWxlLiBDb250ZW50czoKICAgICAgICIxLi1IYXJkd2FyZSBCYXNpY3MsIDIuLVNvZnR3YXJlIEJhc2ljcywgMy4tTWVtb3J5IE1hbmFnZW1lbnQsCiAgICAgICA0Li1Qcm9jZXNzZXMsIDUuLUludGVycHJvY2VzcyBDb21tdW5pY2F0aW9uIE1lY2hhbmlzbXMsIDYuLVBDSSwKICAgICAgIDcuLUludGVycnVwdHMgYW5kIEludGVycnVwdCBIYW5kbGluZywgOC4tRGV2aWNlIERyaXZlcnMsIDkuLVRoZQogICAgICAgRmlsZSBzeXN0ZW0sIDEwLi1OZXR3b3JrcywgMTEuLUtlcm5lbCBNZWNoYW5pc21zLCAxMi4tTW9kdWxlcywKICAgICAgIDEzLi1UaGUgTGludXggS2VybmVsIFNvdXJjZXMsIEEuLUxpbnV4IERhdGEgU3RydWN0dXJlcywgQi4tVGhlCiAgICAgICBBbHBoYSBBWFAgUHJvY2Vzc29yLCBDLi1Vc2VmdWwgV2ViIGFuZCBGVFAgU2l0ZXMsIEQuLVRoZSBHTlUKICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIEdsb3NzYXJ5Ii4gSW4gc2hvcnQ6IGEgbXVzdCBoYXZlLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBMaW51eCBLZXJuZWwgSGFja2VycycgR3VpZGUiCiAgICAgICBBdXRob3I6IE1pY2hhZWwgSy5Kb2huc29uIGFuZCBvdGhlcnMuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cudGxkcC5vcmcvTERQL2toZy9IeXBlck5ld3MvZ2V0L2toZy5odG1sCiAgICAgICBLZXl3b3JkczogZXZlcnl0aGluZyEKICAgICAgIERlc2NyaXB0aW9uOiBObyBtb3JlIFBvc3RzY3JpcHQgYm9vay1saWtlIHZlcnNpb24uIE9ubHkgSFRNTCBub3cuCiAgICAgICBNYW55IHBlb3BsZSBoYXZlIGNvbnRyaWJ1dGVkLiBUaGUgaW50ZXJmYWNlIGlzIHNpbWlsYXIgdG8gd2ViCiAgICAgICBhdmFpbGFibGUgbWFpbGluZyBsaXN0cyBhcmNoaXZlcy4gWW91IGNhbiBmaW5kIHNvbWUgYXJ0aWNsZXMgYW5kCiAgICAgICB0aGVuIHNvbWUgbWFpbHMgYXNraW5nIHF1ZXN0aW9ucyBhYm91dCB0aGVtIGFuZC9vciBjb21wbGVtZW50aW5nCiAgICAgICBwcmV2aW91cyBjb250cmlidXRpb25zLiBBIGxpdHRsZSBiaXQgYW5hcmNoaWMgaW4gdGhpcyBhc3BlY3QsIGJ1dAogICAgICAgd2l0aCBzb21lIHZhbHVhYmxlIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY2VwdHVhbCBBcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IEtlcm5lbCIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4uCiAgICAgICBVUkw6IGh0dHA6Ly9wbGcudXdhdGVybG9vLmNhL35pdGJvd21hbi9wYXBlcnMvQ1M3NDZHLWExLmh0bWwKICAgICAgIEtleXdvcmRzOiBjb25jZXB0dWFsIHNvZnR3YXJlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwKICAgICAgIHJldmVyc2UgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUuCiAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQ29uY3JldGUgQXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IEl2YW4gVC4gQm93bWFuLCBTYWhlZW0gU2lkZGlxaSwgYW5kIE1leWVyIEMuIFRhbnVhbi4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9DUzc0NkctYTIuaHRtbAogICAgICAgS2V5d29yZHM6IGNvbmNyZXRlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwgcmV2ZXJzZQogICAgICAgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUsIGRlcGVuZGVuY2llcy4KICAgICAgIERlc2NyaXB0aW9uOiBDb25jcmV0ZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgIGF1dG9tYXRpY2FsbHkgZXh0cmFjdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlLiBWZXJ5IGRldGFpbGVkLiBHb29kCiAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuIFRoaXMgcGFwZXJzCiAgICAgICBmb2N1cyBvbiBsb3dlciBkZXRhaWxzIHRoYW4gaXRzIHByZWRlY2Vzc29yIChmaWxlcywgdmFyaWFibGVzLi4uKS4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBhcyBhIENhc2UgU3R1ZHk6IEl0cyBFeHRyYWN0ZWQgU29mdHdhcmUKICAgICAgIEFyY2hpdGVjdHVyZSIKICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4sIFJpY2hhcmQgQy4gSG9sdCBhbmQgTmVpbCBWLiBCcmV3c3Rlci4KICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9saW51eGNhc2UuaHRtbAogICAgICAgS2V5d29yZHM6IHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgYXJjaGl0ZWN0dXJlIHJlY292ZXJ5LAogICAgICAgcmVkb2N1bWVudGF0aW9uLgogICAgICAgRGVzY3JpcHRpb246IFBhcGVyIGFwcGVhcmVkIGF0IElDU0UnOTksIExvcyBBbmdlbGVzLCBNYXkgMTYtMjIsCiAgICAgICAxOTk5LiBBIG1peHR1cmUgb2YgdGhlIHByZXZpb3VzIHR3byBkb2N1bWVudHMgZnJvbSB0aGUgc2FtZQogICAgICAgYXV0aG9yLgogICAgICAgCiAgICAgKiBUaXRsZTogIk92ZXJ2aWV3IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtIgogICAgICAgQXV0aG9yOiBSaWNoYXJkIEdvb2NoLgogICAgICAgVVJMOiBodHRwOi8vd3d3LmF0bmYuY3Npcm8uYXUvfnJnb29jaC9saW51eC92ZnMudHh0CiAgICAgICBLZXl3b3JkczogVkZTLCBGaWxlIFN5c3RlbSwgbW91bnRpbmcgZmlsZXN5c3RlbXMsIG9wZW5pbmcgZmlsZXMsCiAgICAgICBkZW50cmllcywgZGNhY2hlLgogICAgICAgRGVzY3JpcHRpb246IEJyaWVmIGludHJvZHVjdGlvbiB0byB0aGUgTGludXggVmlydHVhbCBGaWxlIFN5c3RlbS4KICAgICAgIFdoYXQgaXMgaXQsIGhvdyBpdCB3b3Jrcywgb3BlcmF0aW9ucyB0YWtlbiB3aGVuIG9wZW5pbmcgYSBmaWxlIG9yCiAgICAgICBtb3VudGluZyBhIGZpbGUgc3lzdGVtIGFuZCBkZXNjcmlwdGlvbiBvZiBpbXBvcnRhbnQgZGF0YQogICAgICAgc3RydWN0dXJlcyBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIGVhY2ggb2YgdGhlaXIgZW50cmllcy4KICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgTGludXggUkFJRC0xLCA0LCA1IENvZGUiCiAgICAgICBBdXRob3I6IEluZ28gTW9sbmFyLCBHYWRpIE94bWFuIGFuZCBNaWd1ZWwgZGUgSWNhemEuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlNDQvMjM5MS5odG1sCiAgICAgICBLZXl3b3JkczogUkFJRCwgTUQgZHJpdmVyLgogICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0J3MKICAgICAgIGFic3RyYWN0OiAiQSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJBSUQtMSwKICAgICAgIFJBSUQtNCBhbmQgUkFJRC01IHBlcnNvbmFsaXRpZXMgb2YgdGhlIE1EIGRldmljZSBkcml2ZXIgaW4gdGhlCiAgICAgICBMaW51eCBrZXJuZWwsIHByb3ZpZGluZyB1c2VycyB3aXRoIGhpZ2ggcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmxlLAogICAgICAgc2Vjb25kYXJ5LXN0b3JhZ2UgY2FwYWJpbGl0eSB1c2luZyBzb2Z0d2FyZSIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiRHluYW1pYyBLZXJuZWxzOiBNb2R1bGFyaXplZCBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjMvMTIxOS5odG1sCiAgICAgICBLZXl3b3JkczogZGV2aWNlIGRyaXZlciwgbW9kdWxlLCBsb2FkaW5nL3VubG9hZGluZyBtb2R1bGVzLAogICAgICAgYWxsb2NhdGluZyByZXNvdXJjZXMuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGlzIHRoZSBmaXJzdCBvZiBhIHNlcmllcyBvZiBmb3VyIGFydGljbGVzCiAgICAgICBjby1hdXRob3JlZCBieSBBbGVzc2FuZHJvIFJ1YmluaSBhbmQgR2VvcmcgWmV6Y2h3aXR6IHdoaWNoIHByZXNlbnQKICAgICAgIGEgcHJhY3RpY2FsIGFwcHJvYWNoIHRvIHdyaXRpbmcgTGludXggZGV2aWNlIGRyaXZlcnMgYXMga2VybmVsCiAgICAgICBsb2FkYWJsZSBtb2R1bGVzLiBUaGlzIGluc3RhbGxtZW50IHByZXNlbnRzIGFuIGludHJvZHVjdGlvbiB0byB0aGUKICAgICAgIHRvcGljLCBwcmVwYXJpbmcgdGhlIHJlYWRlciB0byB1bmRlcnN0YW5kIG5leHQgbW9udGgncwogICAgICAgaW5zdGFsbG1lbnQiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkR5bmFtaWMgS2VybmVsczogRGlzY292ZXJ5IgogICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaS4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyNC8xMjIwLmh0bWwKICAgICAgIEtleXdvcmRzOiBjaGFyYWN0ZXIgZHJpdmVyLCBpbml0X21vZHVsZSwgY2xlYW5fdXAgbW9kdWxlLAogICAgICAgYXV0b2RldGVjdGlvbiwgbWF5b3IgbnVtYmVyLCBtaW5vciBudW1iZXIsIGZpbGUgb3BlcmF0aW9ucywKICAgICAgIG9wZW4oKSwgY2xvc2UoKS4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgYXJ0aWNsZSwgdGhlIHNlY29uZCBvZiBmb3VyLCBpbnRyb2R1Y2VzIHBhcnQgb2YKICAgICAgIHRoZSBhY3R1YWwgY29kZSB0byBjcmVhdGUgY3VzdG9tIG1vZHVsZSBpbXBsZW1lbnRpbmcgYSBjaGFyYWN0ZXIKICAgICAgIGRldmljZSBkcml2ZXIuIEl0IGRlc2NyaWJlcyB0aGUgY29kZSBmb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZAogICAgICAgY2xlYW51cCwgYXMgd2VsbCBhcyB0aGUgb3BlbigpIGFuZCBjbG9zZSgpIHN5c3RlbSBjYWxscyIuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIERldmlsJ3MgaW4gdGhlIERldGFpbHMiCiAgICAgICBBdXRob3I6IEdlb3JnIHYuIFplenNjaHdpdHogYW5kIEFsZXNzYW5kcm8gUnViaW5pLgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTI1LzEyMjEuaHRtbAogICAgICAgS2V5d29yZHM6IHJlYWQoKSwgd3JpdGUoKSwgc2VsZWN0KCksIGlvY3RsKCksIGJsb2NraW5nL25vbgogICAgICAgYmxvY2tpbmcgbW9kZSwgaW50ZXJydXB0IGhhbmRsZXIuCiAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXQncwogICAgICAgYWJzdHJhY3Q6ICJUaGlzIGFydGljbGUsIHRoZSB0aGlyZCBvZiBmb3VyIG9uIHdyaXRpbmcgY2hhcmFjdGVyCiAgICAgICBkZXZpY2UgZHJpdmVycywgaW50cm9kdWNlcyBjb25jZXB0cyBvZiByZWFkaW5nLCB3cml0aW5nLCBhbmQgdXNpbmcKICAgICAgIGlvY3RsLWNhbGxzIi4KICAgICAgIAogICAgICogVGl0bGU6ICJEaXNzZWN0aW5nIEludGVycnVwdHMgYW5kIEJyb3dzaW5nIERNQSIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgYW5kIEdlb3JnIHYuIFplenNjaHdpdHouCiAgICAgICBVUkw6IGh0dHA6Ly93d3cyLmxpbnV4am91cm5hbC5jb20vbGotaXNzdWVzL2lzc3VlMjYvMTIyMi5odG1sCiAgICAgICBLZXl3b3JkczogaW50ZXJydXB0cywgaXJxcywgRE1BLCBib3R0b20gaGFsdmVzLCB0YXNrIHF1ZXVlcy4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIgYXJ0aWNsZS4gSGVyZSBpcyBpdCdzCiAgICAgICBhYnN0cmFjdDogIlRoaXMgaXMgdGhlIGZvdXJ0aCBpbiBhIHNlcmllcyBvZiBhcnRpY2xlcyBhYm91dAogICAgICAgd3JpdGluZyBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlcnMgYXMgbG9hZGFibGUga2VybmVsIG1vZHVsZXMuIFRoaXMKICAgICAgIG1vbnRoLCB3ZSBmdXJ0aGVyIGludmVzdGlnYXRlIHRoZSBmaWVsZCBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuCiAgICAgICBUaG91Z2ggaXQgaXMgY29uY2VwdHVhbGx5IHNpbXBsZSwgcHJhY3RpY2FsIGxpbWl0YXRpb25zIGFuZAogICAgICAgY29uc3RyYWludHMgbWFrZSB0aGlzIGFuIGBgaW50ZXJlc3RpbmcnJyBwYXJ0IG9mIGRldmljZSBkcml2ZXIKICAgICAgIHdyaXRpbmcsIGFuZCBzZXZlcmFsIGRpZmZlcmVudCBmYWNpbGl0aWVzIGhhdmUgYmVlbiBwcm92aWRlZCBmb3IKICAgICAgIGRpZmZlcmVudCBzaXR1YXRpb25zLiBXZSBhbHNvIGludmVzdGlnYXRlIHRoZSBjb21wbGV4IHRvcGljIG9mCiAgICAgICBETUEiLgogICAgICAgCiAgICAgKiBUaXRsZTogIkRldmljZSBEcml2ZXJzIENvbmNsdWRlZCIKICAgICAgIEF1dGhvcjogR2Vvcmcgdi4gWmV6c2Nod2l0ei4KICAgICAgIFVSTDogaHR0cDovL3d3dzIubGludXhqb3VybmFsLmNvbS9sai1pc3N1ZXMvaXNzdWUyOC8xMjg3Lmh0bWwKICAgICAgIEtleXdvcmRzOiBhZGRyZXNzIHNwYWNlcywgcGFnZXMsIHBhZ2luYXRpb24sIHBhZ2UgbWFuYWdlbWVudCwKICAgICAgIGRlbWFuZCBsb2FkaW5nLCBzd2FwcGluZywgbWVtb3J5IHByb3RlY3Rpb24sIG1lbW9yeSBtYXBwaW5nLCBtbWFwLAogICAgICAgdmlydHVhbCBtZW1vcnkgYXJlYXMgKFZNQXMpLCB2cmVtYXAsIFBDSS4KICAgICAgIERlc2NyaXB0aW9uOiBGaW5hbGx5LCB0aGUgYWJvdmUgdHVybmVkIG91dCBpbnRvIGEgZml2ZSBhcnRpY2xlcwogICAgICAgc2VyaWVzLiBUaGlzIGxhdGVzdCBvbmUncyBpbnRyb2R1Y3Rpb24gcmVhZHM6ICJUaGlzIGlzIHRoZSBsYXN0IG9mCiAgICAgICBmaXZlIGFydGljbGVzIGFib3V0IGNoYXJhY3RlciBkZXZpY2UgZHJpdmVycy4gSW4gdGhpcyBmaW5hbAogICAgICAgc2VjdGlvbiwgR2VvcmcgZGVhbHMgd2l0aCBtZW1vcnkgbWFwcGluZyBkZXZpY2VzLCBiZWdpbm5pbmcgd2l0aAogICAgICAgYW4gb3ZlcmFsbCBkZXNjcmlwdGlvbiBvZiB0aGUgTGludXggbWVtb3J5IG1hbmFnZW1lbnQgY29uY2VwdHMiLgogICAgICAgCiAgICAgKiBUaXRsZTogIk5ldHdvcmsgQnVmZmVycyBBbmQgTWVtb3J5IE1hbmFnZW1lbnQiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3Mi5saW51eGpvdXJuYWwuY29tL2xqLWlzc3Vlcy9pc3N1ZTMwLzEzMTIuaHRtbAogICAgICAgS2V5d29yZHM6IHNrX2J1ZmZzLCBuZXR3b3JrIGRldmljZXMsIHByb3RvY29sL2xpbmsgbGF5ZXIKICAgICAgIHZhcmlhYmxlcywgbmV0d29yayBkZXZpY2VzIGZsYWdzLCB0cmFuc21pdCwgcmVjZWl2ZSwKICAgICAgIGNvbmZpZ3VyYXRpb24sIG11bHRpY2FzdC4KICAgICAgIERlc2NyaXB0aW9uOiBMaW51eCBKb3VybmFsIEtlcm5lbCBLb3JuZXIuIEhlcmUgaXMgdGhlIGFic3RyYWN0OgogICAgICAgIldyaXRpbmcgYSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IGlzIGZ1bmRhbWVudGFsbHkKICAgICAgIHNpbXBsZS0tLW1vc3Qgb2YgdGhlIGNvbXBsZXhpdHkgKG90aGVyIHRoYW4gdGFsa2luZyB0byB0aGUKICAgICAgIGhhcmR3YXJlKSBpbnZvbHZlcyBtYW5hZ2luZyBuZXR3b3JrIHBhY2tldHMgaW4gbWVtb3J5Ii4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIExpbnV4IERldmljZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBNaWNoYWVsIEsuIEpvaG5zb24uCiAgICAgICBVUkw6IGh0dHA6Ly91c2Vycy5ldml0ZWNoLmZpL350ay9ydG9zL3dyaXRpbmdfbGludXhfZGV2aWNlX2QuaHRtbAogICAgICAgS2V5d29yZHM6IGZpbGVzLCBWRlMsIGZpbGUgb3BlcmF0aW9ucywga2VybmVsIGludGVyZmFjZSwgY2hhcmFjdGVyCiAgICAgICB2cyBibG9jayBkZXZpY2VzLCBJL08gYWNjZXNzLCBoYXJkd2FyZSBpbnRlcnJ1cHRzLCBETUEsIGFjY2VzcyB0bwogICAgICAgdXNlciBtZW1vcnksIG1lbW9yeSBhbGxvY2F0aW9uLCB0aW1lcnMuCiAgICAgICBEZXNjcmlwdGlvbjogSW50cm9kdWN0b3J5IDUwLW1pbnV0ZXMgKHNpYykgdHV0b3JpYWwgb24gd3JpdGluZwogICAgICAgZGV2aWNlIGRyaXZlcnMuIDEyIHBhZ2VzIHdyaXR0ZW4gYnkgdGhlIHNhbWUgYXV0aG9yIG9mIHRoZSAiS2VybmVsCiAgICAgICBIYWNrZXJzJyBHdWlkZSIgd2hpY2ggZ2l2ZSBhIHZlcnkgZ29vZCBvdmVydmlldyBvZiB0aGUgdG9waWMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIFZlbnVzIGtlcm5lbCBpbnRlcmZhY2UiCiAgICAgICBBdXRob3I6IFBldGVyIEouIEJyYWFtLgogICAgICAgVVJMOgogICAgICAgaHR0cDovL3d3dy5jb2RhLmNzLmNtdS5lZHUvZG9jL2h0bWwva2VybmVsLXZlbnVzLXByb3RvY29sLmh0bWwKICAgICAgIEtleXdvcmRzOiBjb2RhLCBmaWxlc3lzdGVtLCB2ZW51cywgY2FjaGUgbWFuYWdlci4KICAgICAgIERlc2NyaXB0aW9uOiAiVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbgogICAgICAgVmVudXMgYW5kIGtlcm5lbCBsZXZlbCBmaWxlIHN5c3RlbSBjb2RlIG5lZWRlZCBmb3IgdGhlIG9wZXJhdGlvbgogICAgICAgb2YgdGhlIENvZGEgZmlsZXN5c3RlbS4gVGhpcyB2ZXJzaW9uIGRvY3VtZW50IGlzIG1lYW50IHRvIGRlc2NyaWJlCiAgICAgICB0aGUgY3VycmVudCBpbnRlcmZhY2UgKHZlcnNpb24gMS4wKSBhcyB3ZWxsIGFzIGltcHJvdmVtZW50cyB3ZQogICAgICAgZW52aXNhZ2UiLgogICAgICAgCiAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIFBDSS1EZXZpY2VzIHVuZGVyIExpbnV4IgogICAgICAgQXV0aG9yOiBDbGF1cyBTY2hyb2V0ZXIuCiAgICAgICBVUkw6CiAgICAgICBmdHA6Ly9mdHAubGxwLmZ1LWJlcmxpbi5kZS9wdWIvbGludXgvTElOVVgtTEFCL3doaXRlcGFwZXJzL3BjaXAucHMKICAgICAgIC5negogICAgICAgS2V5d29yZHM6IFBDSSwgZGV2aWNlLCBidXNtYXN0ZXJpbmcuCiAgICAgICBEZXNjcmlwdGlvbjogNiBwYWdlcyB0dXRvcmlhbCBvbiBQQ0kgcHJvZ3JhbW1pbmcgdW5kZXIgTGludXguCiAgICAgICBHaXZlcyB0aGUgYmFzaWMgY29uY2VwdHMgb24gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUENJIHN1YnN5c3RlbSwKICAgICAgIGFzIGxvbmcgYXMgYmFzaWMgZnVuY3Rpb25zIGFuZCBtYWNyb3MgdG8gcmVhZC93cml0ZSB0aGUgZGV2aWNlcwogICAgICAgYW5kIHBlcmZvcm0gYnVzbWFzdGVyaW5nLgogICAgICAgCiAgICAgKiBUaXRsZTogIldyaXRpbmcgQ2hhcmFjdGVyIERldmljZSBEcml2ZXIgZm9yIExpbnV4IgogICAgICAgQXV0aG9yOiBSLiBCYXJ1Y2ggYW5kIEMuIFNjaHJvZXRlci4KICAgICAgIFVSTDoKICAgICAgIGZ0cDovL2Z0cC5sbHAuZnUtYmVybGluLmRlL3B1Yi9saW51eC9MSU5VWC1MQUIvd2hpdGVwYXBlcnMvZHJpdmVycwogICAgICAgLnBzLmd6CiAgICAgICBLZXl3b3JkczogY2hhcmFjdGVyIGRldmljZSBkcml2ZXJzLCBJL08sIHNpZ25hbHMsIERNQSwgYWNjZXNzaW5nCiAgICAgICBwb3J0cyBpbiB1c2VyIHNwYWNlLCBrZXJuZWwgZW52aXJvbm1lbnQuCiAgICAgICBEZXNjcmlwdGlvbjogNjggcGFnZXMgcGFwZXIgb24gd3JpdGluZyBjaGFyYWN0ZXIgZHJpdmVycy4gQSBsaXR0bGUKICAgICAgIGJpdCBvbGQgKDEuOTkzLCAxLjk5NCkgYWx0aG91Z2ggc3RpbGwgdXNlZnVsLgogICAgICAgCiAgICAgKiBUaXRsZTogIkRlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY29uZCBFeHRlbmRlZAogICAgICAgRmlsZXN5c3RlbSIKICAgICAgIEF1dGhvcjogUulteSBDYXJkLCBUaGVvZG9yZSBUcydvLCBTdGVwaGVuIFR3ZWVkaWUuCiAgICAgICBVUkw6IGh0dHA6Ly93ZWIubWl0LmVkdS90eXRzby93d3cvbGludXgvZXh0MmludHJvLmh0bWwKICAgICAgIEtleXdvcmRzOiBleHQyLCBsaW51eCBmcyBoaXN0b3J5LCBpbm9kZSwgZGlyZWN0b3J5LCBsaW5rLCBkZXZpY2VzLAogICAgICAgVkZTLCBwaHlzaWNhbCBzdHJ1Y3R1cmUsIHBlcmZvcm1hbmNlLCBiZW5jaG1hcmtzLCBleHQyZnMgbGlicmFyeSwKICAgICAgIGV4dDJmcyB0b29scywgZTJmc2NrLgogICAgICAgRGVzY3JpcHRpb246IFBhcGVyIHdyaXR0ZW4gYnkgdGhyZWUgb2YgdGhlIHRvcCBleHQyIGhhY2tlcnMuCiAgICAgICBDb3ZlcnMgTGludXggZmlsZXN5c3RlbXMgaGlzdG9yeSwgZXh0MiBtb3RpdmF0aW9uLCBleHQyIGZlYXR1cmVzLAogICAgICAgZGVzaWduLCBwaHlzaWNhbCBzdHJ1Y3R1cmUgb24gZGlzaywgcGVyZm9ybWFuY2UsIGJlbmNobWFya3MsCiAgICAgICBlMmZzY2sncyBwYXNzZXMgZGVzY3JpcHRpb24uLi4gQSBtdXN0IHJlYWQhCiAgICAgICBOb3RlczogVGhpcyBwYXBlciB3YXMgZmlyc3QgcHVibGlzaGVkIGluIHRoZSBQcm9jZWVkaW5ncyBvZiB0aGUKICAgICAgIEZpcnN0IER1dGNoIEludGVybmF0aW9uYWwgU3ltcG9zaXVtIG9uIExpbnV4LCBJU0JOIDkwLTM2Ny0wMzg1LTkuCiAgICAgICAKICAgICAqIFRpdGxlOiAiQW5hbHlzaXMgb2YgdGhlIEV4dDJmcyBzdHJ1Y3R1cmUiCiAgICAgICBBdXRob3I6IExvdWlzLURvbWluaXF1ZSBEdWJlYXUuCiAgICAgICBVUkw6IGh0dHA6Ly9zdGVwLnBvbHltdGwuY2EvfmxkZC9leHQyZnMvZXh0MmZzX3RvYy5odG1sCiAgICAgICBLZXl3b3JkczogZXh0MiwgZmlsZXN5c3RlbSwgZXh0MmZzLgogICAgICAgRGVzY3JpcHRpb246IERlc2NyaXB0aW9uIG9mIGV4dDIncyBibG9ja3MsIGRpcmVjdG9yaWVzLCBpbm9kZXMsCiAgICAgICBiaXRtYXBzLCBpbnZhcmlhbnRzLi4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiSm91cm5hbGluZyB0aGUgTGludXggZXh0MmZzIEZpbGVzeXN0ZW0iCiAgICAgICBBdXRob3I6IFN0ZXBoZW4gQy4gVHdlZWRpZS4KICAgICAgIFVSTDoKICAgICAgIGZ0cDovL2Z0cC51ay5saW51eC5vcmcvcHViL2xpbnV4L3NjdC9mcy9qZnMvam91cm5hbC1kZXNpZ24ucHMuZ3oKICAgICAgIEtleXdvcmRzOiBleHQzLCBqb3VybmFsaW5nLgogICAgICAgRGVzY3JpcHRpb246IEV4Y2VsbGVudCA4LXBhZ2VzIHBhcGVyIGV4cGxhaW5pbmcgdGhlIGpvdXJuYWxpbmcKICAgICAgIGNhcGFiaWxpdGllcyBhZGRlZCB0byBleHQyIGJ5IHRoZSBhdXRob3IsIHNob3dpbmcgZGlmZmVyZW50CiAgICAgICBwcm9ibGVtcyBmYWNlZCBhbmQgdGhlIGFsdGVybmF0aXZlcyBjaG9zZW4uCiAgICAgICAKICAgICAqIFRpdGxlOiAiS2VybmVsIEFQSSBjaGFuZ2VzIGZyb20gMi4wIHRvIDIuMiIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvcG9ydGluZy10by0yLjIuaHRtbAogICAgICAgS2V5d29yZHM6IDIuMiwgY2hhbmdlcy4KICAgICAgIERlc2NyaXB0aW9uOiBLZXJuZWwgZnVuY3Rpb25zL3N0cnVjdHVyZXMvdmFyaWFibGVzIHdoaWNoIGNoYW5nZWQKICAgICAgIGZyb20gMi4wLnggdG8gMi4yLnguCiAgICAgICAKICAgICAqIFRpdGxlOiAiS2VybmVsIEFQSSBjaGFuZ2VzIGZyb20gMi4yIHRvIDIuNCIKICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KICAgICAgIFVSTDoKICAgICAgIGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvcG9ydGluZy10by0yLjQuaHRtbAogICAgICAgS2V5d29yZHM6IDIuNCwgY2hhbmdlcy4KICAgICAgIERlc2NyaXB0aW9uOiBLZXJuZWwgZnVuY3Rpb25zL3N0cnVjdHVyZXMvdmFyaWFibGVzIHdoaWNoIGNoYW5nZWQKICAgICAgIGZyb20gMi4yLnggdG8gMi40LnguCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIE1vZHVsZSBQcm9ncmFtbWluZyBHdWlkZSIKICAgICAgIEF1dGhvcjogT3JpIFBvbWVyYW50ei4KICAgICAgIFVSTDogaHR0cDovL3RsZHAub3JnL0xEUC9sa21wZy8yLjYvaHRtbC9pbmRleC5odG1sCiAgICAgICBLZXl3b3JkczogbW9kdWxlcywgR1BMIGJvb2ssIC9wcm9jLCBpb2N0bHMsIHN5c3RlbSBjYWxscywKICAgICAgIGludGVycnVwdCBoYW5kbGVycyAuCiAgICAgICBEZXNjcmlwdGlvbjogVmVyeSBuaWNlIDkyIHBhZ2VzIEdQTCBib29rIG9uIHRoZSB0b3BpYyBvZiBtb2R1bGVzCiAgICAgICBwcm9ncmFtbWluZy4gTG90cyBvZiBleGFtcGxlcy4KICAgICAgIAogICAgICogVGl0bGU6ICJJL08gRXZlbnQgSGFuZGxpbmcgVW5kZXIgTGludXgiCiAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuYXRuZi5jc2lyby5hdS9+cmdvb2NoL2xpbnV4L2RvY3MvaW8tZXZlbnRzLmh0bWwKICAgICAgIEtleXdvcmRzOiBJTywgSS9PLCBzZWxlY3QoMiksIHBvbGwoMiksIEZEcywgYWlvX3JlYWQoMiksIHJlYWRpbmVzcwogICAgICAgZXZlbnQgcXVldWVzLgogICAgICAgRGVzY3JpcHRpb246IEZyb20gdGhlIEludHJvZHVjdGlvbjogIkkvTyBFdmVudCBoYW5kbGluZyBpcyBhYm91dAogICAgICAgaG93IHlvdXIgT3BlcmF0aW5nIFN5c3RlbSBhbGxvd3MgeW91IHRvIG1hbmFnZSBhIGxhcmdlIG51bWJlciBvZgogICAgICAgb3BlbiBmaWxlcyAoZmlsZSBkZXNjcmlwdG9ycyBpbiBVTklYL1BPU0lYLCBvciBGRHMpIGluIHlvdXIKICAgICAgIGFwcGxpY2F0aW9uLiBZb3Ugd2FudCB0aGUgT1MgdG8gbm90aWZ5IHlvdSB3aGVuIEZEcyBiZWNvbWUgYWN0aXZlCiAgICAgICAoaGF2ZSBkYXRhIHJlYWR5IHRvIGJlIHJlYWQgb3IgYXJlIHJlYWR5IGZvciB3cml0aW5nKS4gSWRlYWxseSB5b3UKICAgICAgIHdhbnQgYSBtZWNoYW5pc20gdGhhdCBpcyBzY2FsYWJsZS4gVGhpcyBtZWFucyBhIGxhcmdlIG51bWJlciBvZgogICAgICAgaW5hY3RpdmUgRkRzIGNvc3QgdmVyeSBsaXR0bGUgaW4gbWVtb3J5IGFuZCBDUFUgdGltZSB0byBtYW5hZ2UiLgogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBLZXJuZWwgSGFja2luZyBIT1dUTyIKICAgICAgIEF1dGhvcjogVmFyaW91cyBUYWxlbnRlZCBQZW9wbGUsIGFuZCBSdXN0eS4KICAgICAgIExvY2F0aW9uOiBpbiBrZXJuZWwgdHJlZSwgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1oYWNraW5nLwogICAgICAgKG11c3QgYmUgYnVpbHQgYXMgIm1ha2Uge2h0bWxkb2NzIHwgcHNkb2NzIHwgcGRmZG9jc30pCiAgICAgICBLZXl3b3JkczogSE9XVE8sIGtlcm5lbCBjb250ZXh0cywgZGVhZGxvY2ssIGxvY2tpbmcsIG1vZHVsZXMsCiAgICAgICBzeW1ib2xzLCByZXR1cm4gY29udmVudGlvbnMuCiAgICAgICBEZXNjcmlwdGlvbjogRnJvbSB0aGUgSW50cm9kdWN0aW9uOiAiUGxlYXNlIHVuZGVyc3RhbmQgdGhhdCBJCiAgICAgICBuZXZlciB3YW50ZWQgdG8gd3JpdGUgdGhpcyBkb2N1bWVudCwgYmVpbmcgZ3Jvc3NseSB1bmRlcnF1YWxpZmllZCwKICAgICAgIGJ1dCBJIGFsd2F5cyB3YW50ZWQgdG8gcmVhZCBpdCwgYW5kIHRoaXMgd2FzIHRoZSBvbmx5IHdheS4gSQogICAgICAgc2ltcGx5IGV4cGxhaW4gc29tZSBiZXN0IHByYWN0aWNlcywgYW5kIGdpdmUgcmVhZGluZyBlbnRyeS1wb2ludHMKICAgICAgIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLiBJIGF2b2lkIGltcGxlbWVudGF0aW9uIGRldGFpbHM6IHRoYXQncwogICAgICAgd2hhdCB0aGUgY29kZSBpcyBmb3IsIGFuZCBJIGlnbm9yZSB3aG9sZSB0cmFjdHMgb2YgdXNlZnVsCiAgICAgICByb3V0aW5lcy4gVGhpcyBkb2N1bWVudCBhc3N1bWVzIGZhbWlsaWFyaXR5IHdpdGggQywgYW5kIGFuCiAgICAgICB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIGtlcm5lbCBpcywgYW5kIGhvdyBpdCBpcyB1c2VkLiBJdCB3YXMKICAgICAgIG9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgdGhlIDIuMyBrZXJuZWxzLCBidXQgbmVhcmx5IGFsbCBvZiBpdAogICAgICAgYXBwbGllcyB0byAyLjIgdG9vOyAyLjAgaXMgc2xpZ2h0bHkgZGlmZmVyZW50Ii4KICAgICAgIAogICAgICogVGl0bGU6ICJXcml0aW5nIGFuIEFMU0EgRHJpdmVyIgogICAgICAgQXV0aG9yOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CiAgICAgICBVUkw6IGh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9+aXdhaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyL2luZGV4Lmh0bWwKICAgICAgIEtleXdvcmRzOiBBTFNBLCBzb3VuZCwgc291bmRjYXJkLCBkcml2ZXIsIGxvd2xldmVsLCBoYXJkd2FyZS4KICAgICAgIERlc2NyaXB0aW9uOiBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgZm9yIGRldmVsb3BlcnMsCiAgICAgICBib3RoIGF0IGtlcm5lbCBhbmQgdXNlci1sZXZlbCBzaWRlcy4gQUxTQSBpcyB0aGUgTGludXgga2VybmVsCiAgICAgICBzb3VuZCBhcmNoaXRlY3R1cmUgaW4gdGhlIDIuNiBrZXJuZWwgdmVyc2lvbi4KICAgICAgIAogICAgICogVGl0bGU6ICJQcm9ncmFtbWluZyBHdWlkZSBmb3IgTGludXggVVNCIERldmljZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBEZXRsZWYgRmxpZWdsLgogICAgICAgVVJMOiBodHRwOi8vdXNiLmluLnR1bS5kZS91c2Jkb2MvCiAgICAgICBLZXl3b3JkczogVVNCLCB1bml2ZXJzYWwgc2VyaWFsIGJ1cy4KICAgICAgIERlc2NyaXB0aW9uOiBBIG11c3QtcmVhZC4gRnJvbSB0aGUgUHJlZmFjZTogIlRoaXMgZG9jdW1lbnQgc2hvdWxkCiAgICAgICBnaXZlIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBVU0IKICAgICAgIHN1YnN5c3RlbSBhbmQgaXRzIEFQSSBmb3IgVVNCIGRldmljZSBkcml2ZXJzLiBUaGUgZmlyc3Qgc2VjdGlvbgogICAgICAgd2lsbCBkZWFsIHdpdGggdGhlIGJhc2ljcyBvZiBVU0IgZGV2aWNlcy4gWW91IHdpbGwgbGVhcm4gYWJvdXQKICAgICAgIGRpZmZlcmVudCB0eXBlcyBvZiBkZXZpY2VzIGFuZCB0aGVpciBwcm9wZXJ0aWVzLiBHb2luZyBpbnRvIGRldGFpbAogICAgICAgeW91IHdpbGwgc2VlIGhvdyBVU0IgZGV2aWNlcyBjb21tdW5pY2F0ZSBvbiB0aGUgYnVzLiBUaGUgc2Vjb25kCiAgICAgICBzZWN0aW9uIGdpdmVzIGFuIG92ZXJ2aWV3IG9mIHRoZSBMaW51eCBVU0Igc3Vic3lzdGVtIFsyXSBhbmQgdGhlCiAgICAgICBkZXZpY2UgZHJpdmVyIGZyYW1ld29yay4gVGhlbiB0aGUgQVBJIGFuZCBpdHMgZGF0YSBzdHJ1Y3R1cmVzIHdpbGwKICAgICAgIGJlIGV4cGxhaW5lZCBzdGVwIGJ5IHN0ZXAuIFRoZSBsYXN0IHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudAogICAgICAgY29udGFpbnMgYSByZWZlcmVuY2Ugb2YgYWxsIEFQSSBjYWxscyBhbmQgdGhlaXIgcmV0dXJuIGNvZGVzIi4KICAgICAgIE5vdGVzOiBCZXdhcmU6IHRoZSBtYWluIHBhZ2Ugc3RhdGVzOiAiVGhpcyBkb2N1bWVudCBtYXkgbm90IGJlCiAgICAgICBwdWJsaXNoZWQsIHByaW50ZWQgb3IgdXNlZCBpbiBleGNlcnB0cyB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KICAgICAgIG9mIHRoZSBhdXRob3IiLiBGb3J0dW5hdGVseSwgaXQgbWF5IHN0aWxsIGJlIHJlYWQuLi4KICAgICAgIAogICAgICogVGl0bGU6ICJUb3VyIE9mIHRoZSBMaW51eCBLZXJuZWwgU291cmNlIgogICAgICAgQXV0aG9yOiBWaWpvIENoZXJpYW4uCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuZ2VvY2l0aWVzLmNvbS92aWpvYy90b2xrcy90b2xrcy5odG1sCiAgICAgICBLZXl3b3JkczogLgogICAgICAgRGVzY3JpcHRpb246IEEgY2xhc3NpYyBvZiB0aGlzIHBhZ2UhIFdhcyBsb3N0IGZvciBhIHdoaWxlIGFuZCBpcwogICAgICAgYmFjayBhZ2Fpbi4gVGhhbmtzIFZpam8hIFRPTEtTOiB0aGUgbmFtZSBzYXlzIGl0IGFsbC4gQSB0b3VyIG9mCiAgICAgICB0aGUgc291cmNlcywgZGVzY3JpYmluZyBkaXJlY3RvcmllcywgZmlsZXMsIHZhcmlhYmxlcywgZGF0YQogICAgICAgc3RydWN0dXJlcy4uLiBJdCBjb3ZlcnMgZ2VuZXJhbCBzdHVmZiwgZGV2aWNlIGRyaXZlcnMsCiAgICAgICBmaWxlc3lzdGVtcywgSVBDIGFuZCBOZXR3b3JraW5nIENvZGUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIE1haWxpbmcgTGlzdCBHbG9zc2FyeSIKICAgICAgIEF1dGhvcjogdmFyaW91cwogICAgICAgVVJMOiBodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvZ2xvc3NhcnkvCiAgICAgICBLZXl3b3JkczogZ2xvc3NhcnksIHRlcm1zLCBsaW51eC1rZXJuZWwuCiAgICAgICBEZXNjcmlwdGlvbjogRnJvbSB0aGUgaW50cm9kdWN0aW9uOiAiVGhpcyBnbG9zc2FyeSBpcyBpbnRlbmRlZCBhcwogICAgICAgYSBicmllZiBkZXNjcmlwdGlvbiBvZiBzb21lIG9mIHRoZSBhY3JvbnltcyBhbmQgdGVybXMgeW91IG1heSBoZWFyCiAgICAgICBkdXJpbmcgZGlzY3Vzc2lvbiBvZiB0aGUgTGludXgga2VybmVsIi4KICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBLZXJuZWwgTG9ja2luZyBIT1dUTyIKICAgICAgIEF1dGhvcjogVmFyaW91cyBUYWxlbnRlZCBQZW9wbGUsIGFuZCBSdXN0eS4KICAgICAgIExvY2F0aW9uOiBpbiBrZXJuZWwgdHJlZSwgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1sb2NraW5nLwogICAgICAgKG11c3QgYmUgYnVpbHQgYXMgIm1ha2Uge2h0bWxkb2NzIHwgcHNkb2NzIHwgcGRmZG9jc30pCiAgICAgICBLZXl3b3JkczogbG9ja3MsIGxvY2tpbmcsIHNwaW5sb2NrLCBzZW1hcGhvcmUsIGF0b21pYywgcmFjZQogICAgICAgY29uZGl0aW9uLCBib3R0b20gaGFsdmVzLCB0YXNrbGV0cywgc29mdGlycXMuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsOiBkb2N1bWVudCBkZXNjcmliaW5nIHRoZQogICAgICAgbG9ja2luZyBzeXN0ZW0gaW4gdGhlIExpbnV4IEtlcm5lbCBlaXRoZXIgaW4gdW5pcHJvY2Vzc29yIG9yIFNNUAogICAgICAgc3lzdGVtcy4KICAgICAgIE5vdGVzOiAiSXQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgdGhlIGxhdGVyICg+Mi4zLjQ3KSAyLjMKICAgICAgIGtlcm5lbHMsIGJ1dCBtb3N0IG9mIGl0IGFwcGxpZXMgdG8gMi4yIHRvbzsgMi4wIGlzIHNsaWdodGx5CiAgICAgICBkaWZmZXJlbnQiLiBGcmVlbHkgcmVkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIHRoZSBHTlUKICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCiAgICAgICAKICAgICAqIFRpdGxlOiAiUG9ydGluZyBMaW51eCAyLjAgRHJpdmVycyBUbyBMaW51eCAyLjI6IENoYW5nZXMgYW5kIE5ldwogICAgICAgRmVhdHVyZXMgIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDUvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogcG9ydHMsIHBvcnRpbmcuCiAgICAgICBEZXNjcmlwdGlvbjogQXJ0aWNsZSBmcm9tIExpbnV4IE1hZ2F6aW5lIG9uIHBvcnRpbmcgZnJvbSAyLjAgdG8KICAgICAgIDIuMiBrZXJuZWxzLgogICAgICAgCiAgICAgKiBUaXRsZTogIlBvcnRpbmcgRGV2aWNlIERyaXZlcnMgVG8gTGludXggMi4yOiBwYXJ0IElJIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDYvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogcG9ydHMsIHBvcnRpbmcuCiAgICAgICBEZXNjcmlwdGlvbjogU2Vjb25kIHBhcnQgb24gcG9ydGluZyBmcm9tIDIuMCB0byAyLjIga2VybmVscy4KICAgICAgIAogICAgICogVGl0bGU6ICJIb3cgVG8gTWFrZSBTdXJlIFlvdXIgRHJpdmVyIFdpbGwgV29yayBPbiBUaGUgUG93ZXIKICAgICAgIE1hY2ludG9zaCIKICAgICAgIEF1dGhvcjogUGF1bCBNYWNrZXJyYXMuCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTA3L2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IE1hYywgUG93ZXIgTWFjaW50b3NoLCBwb3J0aW5nLCBkcml2ZXJzLCBjb21wYXRpYmlsaXR5LgogICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KICAgICAgIAogICAgICogVGl0bGU6ICJBbiBJbnRyb2R1Y3Rpb24gdG8gU0NTSSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDgvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogU0NTSSwgZGV2aWNlLCBkcml2ZXIuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIkFkdmFuY2VkIFNDU0kgRHJpdmVycyBBbmQgT3RoZXIgVGFsZXMiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0wOS9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiBTQ1NJLCBkZXZpY2UsIGRyaXZlciwgYWR2YW5jZWQuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIldyaXRpbmcgTGludXggTW91c2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8xOTk5LTEwL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IG1vdXNlLCBkcml2ZXIsIGdwbS4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTW9yZSBvbiBNb3VzZSBEcml2ZXJzIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMTEvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogbW91c2UsIGRyaXZlciwgZ3BtLCByYWNlcywgYXN5bmNocm9ub3VzIEkvTy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc3RpbGwgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiV3JpdGluZyBWaWRlbzRsaW51eCBSYWRpbyBEcml2ZXIiCiAgICAgICBBdXRob3I6IEFsYW4gQ294LgogICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vMTk5OS0xMi9nZWFyXzAxLmh0bWwKICAgICAgIEtleXdvcmRzOiB2aWRlbzRsaW51eCwgZHJpdmVyLCByYWRpbywgcmFkaW8gZGV2aWNlcy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVmlkZW80bGludXggRHJpdmVycywgUGFydCAxOiBWaWRlby1DYXB0dXJlIERldmljZSIKICAgICAgIEF1dGhvcjogQWxhbiBDb3guCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS8yMDAwLTAxL2dlYXJfMDEuaHRtbAogICAgICAgS2V5d29yZHM6IHZpZGVvNGxpbnV4LCBkcml2ZXIsIHZpZGVvIGNhcHR1cmUsIGNhcHR1cmUgZGV2aWNlcywKICAgICAgIGNhbWVyYSBkcml2ZXIuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIlZpZGVvNGxpbnV4IERyaXZlcnMsIFBhcnQgMjogVmlkZW8tY2FwdHVyZSBEZXZpY2VzIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzIwMDAtMDIvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogdmlkZW80bGludXgsIGRyaXZlciwgdmlkZW8gY2FwdHVyZSwgY2FwdHVyZSBkZXZpY2VzLAogICAgICAgY2FtZXJhIGRyaXZlciwgY29udHJvbCwgcXVlcnkgY2FwYWJpbGl0aWVzLCBjYXBhYmlsaXR5LCBmYWNpbGl0eS4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCiAgICAgICAKICAgICAqIFRpdGxlOiAiUENJIE1hbmFnZW1lbnQgaW4gTGludXggMi4yIgogICAgICAgQXV0aG9yOiBBbGFuIENveC4KICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzIwMDAtMDMvZ2Vhcl8wMS5odG1sCiAgICAgICBLZXl3b3JkczogUENJLCBidXMsIGJ1cy1tYXN0ZXJpbmcuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IDIuNCBLZXJuZWwgSW50ZXJuYWxzIgogICAgICAgQXV0aG9yOiBUaWdyYW4gQWl2YXppYW4gYW5kIENocmlzdG9waCBIZWxsd2lnLgogICAgICAgVVJMOiBodHRwOi8vd3d3Lm1vc2VzLnVrbGludXgubmV0L3BhdGNoZXMvbGtpLmh0bWwKICAgICAgIEtleXdvcmRzOiBMaW51eCwga2VybmVsLCBib290aW5nLCBTTUIgYm9vdCwgVkZTLCBwYWdlIGNhY2hlLgogICAgICAgRGVzY3JpcHRpb246IEEgbGl0dGxlIGJvb2sgdXNlZCBmb3IgYSBzaG9ydCB0cmFpbmluZyBjb3Vyc2UuCiAgICAgICBDb3ZlcnMgYnVpbGRpbmcgdGhlIGtlcm5lbCBpbWFnZSwgYm9vdGluZyAoaW5jbHVkaW5nIFNNUCBib290dXApLAogICAgICAgcHJvY2VzcyBtYW5hZ2VtZW50LCBWRlMgYW5kIG1vcmUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggSVAgTmV0d29ya2luZy4gQSBHdWlkZSB0byB0aGUgSW1wbGVtZW50YXRpb24gYW5kCiAgICAgICBNb2RpZmljYXRpb24gb2YgdGhlIExpbnV4IFByb3RvY29sIFN0YWNrLiIKICAgICAgIEF1dGhvcjogR2xlbm4gSGVycmluLgogICAgICAgVVJMOgogICAgICAgaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnL2RvY3VtZW50cy9pcG5ldHdvcmtpbmcvbGludXhpcG5ldHdvcmtpbmcuCiAgICAgICBodG1sCiAgICAgICBLZXl3b3JkczogbmV0d29yaywgbmV0d29ya2luZywgcHJvdG9jb2wsIElQLCBVRFAsIFRDUCwgY29ubmVjdGlvbiwKICAgICAgIHNvY2tldCwgcmVjZWl2aW5nLCB0cmFuc21pdHRpbmcsIGZvcndhcmRpbmcsIHJvdXRpbmcsIHBhY2tldHMsCiAgICAgICBtb2R1bGVzLCAvcHJvYywgc2tfYnVmZiwgRklCLCB0YWdzLgogICAgICAgRGVzY3JpcHRpb246IEV4Y2VsbGVudCBwYXBlciBkZXZvdGVkIHRvIHRoZSBMaW51eCBJUCBOZXR3b3JraW5nLAogICAgICAgZXhwbGFpbmluZyBhbnl0aGluZyBmcm9tIHRoZSBrZXJuZWwncyB0byB0aGUgdXNlciBzcGFjZQogICAgICAgY29uZmlndXJhdGlvbiB0b29scycgY29kZS4gVmVyeSBnb29kIHRvIGdldCBhIGdlbmVyYWwgb3ZlcnZpZXcgb2YKICAgICAgIHRoZSBrZXJuZWwgbmV0d29ya2luZyBpbXBsZW1lbnRhdGlvbiBhbmQgdW5kZXJzdGFuZCBhbGwgc3RlcHMKICAgICAgIHBhY2tldHMgZm9sbG93IGZyb20gdGhlIHRpbWUgdGhleSBhcmUgcmVjZWl2ZWQgYXQgdGhlIG5ldHdvcmsKICAgICAgIGRldmljZSB0aWxsIHRoZXkgYXJlIGRlbGl2ZXJlZCB0byBhcHBsaWNhdGlvbnMuIFRoZSBzdHVkaWVkIGtlcm5lbAogICAgICAgY29kZSBpcyBmcm9tIDIuMi4xNCB2ZXJzaW9uLiBQcm92aWRlcyBjb2RlIGZvciBhIHdvcmtpbmcgcGFja2V0CiAgICAgICBkcm9wcGVyIGV4YW1wbGUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiR2V0IHRob3NlIGJvYXJkcyB0YWxraW5nIHVuZGVyIExpbnV4LiIKICAgICAgIEF1dGhvcjogQWxleCBJdmNoZW5rby4KICAgICAgIFVSTDogaHR0cDovL3d3dy5lZG4uY29tL2FydGljbGUvQ0E0Njk2OC5odG1sCiAgICAgICBLZXl3b3JkczogZGF0YS1hY3F1aXNpdGlvbiBib2FyZHMsIGRyaXZlcnMsIG1vZHVsZXMsIGludGVycnVwdHMsCiAgICAgICBtZW1vcnkgYWxsb2NhdGlvbi4KICAgICAgIERlc2NyaXB0aW9uOiBBcnRpY2xlIHdyaXR0ZW4gZm9yIHBlb3BsZSB3aXNoaW5nIHRvIG1ha2UgdGhlaXIgZGF0YQogICAgICAgYWNxdWlzaXRpb24gYm9hcmRzIHdvcmsgb24gdGhlaXIgR05VL0xpbnV4IG1hY2hpbmVzLiBHaXZlcyBhIGJhc2ljCiAgICAgICBvdmVydmlldyBvbiB3cml0aW5nIGRyaXZlcnMsIGZyb20gdGhlIG5hbWluZyBvZiBmdW5jdGlvbnMgdG8KICAgICAgIGludGVycnVwdCBoYW5kbGluZy4KICAgICAgIE5vdGVzOiBUd28tcGFydHMgYXJ0aWNsZS4gUGFydCBJSSBpcyBhdAogICAgICAgVVJMOiBodHRwOi8vd3d3LmVkbi5jb20vYXJ0aWNsZS9DQTQ2OTk4Lmh0bWwKICAgICAgIAogICAgICogVGl0bGU6ICJMaW51eCBQQ01DSUEgUHJvZ3JhbW1lcidzIEd1aWRlIgogICAgICAgQXV0aG9yOiBEYXZpZCBIaW5kcy4KICAgICAgIFVSTDogaHR0cDovL3BjbWNpYS1jcy5zb3VyY2Vmb3JnZS5uZXQvZnRwL2RvYy9QQ01DSUEtUFJPRy5odG1sCiAgICAgICBLZXl3b3JkczogUENNQ0lBLgogICAgICAgRGVzY3JpcHRpb246ICJUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gd3JpdGUga2VybmVsIGRldmljZQogICAgICAgZHJpdmVycyBmb3IgdGhlIExpbnV4IFBDTUNJQSBDYXJkIFNlcnZpY2VzIGludGVyZmFjZS4gSXQgYWxzbwogICAgICAgZGVzY3JpYmVzIGhvdyB0byB3cml0ZSB1c2VyLW1vZGUgdXRpbGl0aWVzIGZvciBjb21tdW5pY2F0aW5nIHdpdGgKICAgICAgIENhcmQgU2VydmljZXMuCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IEtlcm5lbCBORlNEIEltcGxlbWVudGF0aW9uIgogICAgICAgQXV0aG9yOiBOZWlsIEJyb3duLgogICAgICAgVVJMOgogICAgICAgaHR0cDovL3d3dy5jc2UudW5zdy5lZHUuYXUvfm5laWxiL29zcy9saW51eC1jb21tZW50YXJ5L25mc2QuaHRtbAogICAgICAgS2V5d29yZHM6IGtuZnNkLCBuZnNkLCBORlMsIFJQQywgbG9ja2QsIG1vdW50ZCwgc3RhdGQuCiAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgogICAgICAgTm90ZXM6IENvdmVycyBrbmZzZCdzIHZlcnNpb24gMS40LjcgKHBhdGNoIGFnYWluc3QgMi4yLjcga2VybmVsKS4KICAgICAgIAogICAgICogVGl0bGU6ICJBIExpbnV4IHZtIFJFQURNRSIKICAgICAgIEF1dGhvcjogS2Fub2ogU2FyY2FyLgogICAgICAgVVJMOiBodHRwOi8vcmVhbGl0eS5zZ2kuY29tL2thbm9qX2VuZ3Ivdm0yMjkuaHRtbAogICAgICAgS2V5d29yZHM6IHZpcnR1YWwgbWVtb3J5LCBtbSwgcGdkLCB2bWEsIHBhZ2UsIHBhZ2UgZmxhZ3MsIHBhZ2UKICAgICAgIGNhY2hlLCBzd2FwIGNhY2hlLCBrc3dhcGQuCiAgICAgICBEZXNjcmlwdGlvbjogVGVsZWdyYXBoaWMsIHNob3J0IGRlc2NyaXB0aW9ucyBhbmQgZGVmaW5pdGlvbnMKICAgICAgIHJlbGF0aW5nIHRoZSBMaW51eCB2aXJ0dWFsIG1lbW9yeSBpbXBsZW1lbnRhdGlvbi4KICAgICAgIAogICAgICogVGl0bGU6ICIobmVhcmx5KSBDb21wbGV0ZSBMaW51eCBMb2FkYWJsZSBLZXJuZWwgTW9kdWxlcy4gVGhlCiAgICAgICBkZWZpbml0aXZlIGd1aWRlIGZvciBoYWNrZXJzLCB2aXJ1cyBjb2RlcnMgYW5kIHN5c3RlbQogICAgICAgYWRtaW5pc3RyYXRvcnMuIgogICAgICAgQXV0aG9yOiBwcmFnbWF0aWMvVEhDLgogICAgICAgVVJMOiBodHRwOi8vcGFja2V0c3Rvcm1zZWN1cml0eS5vcmcvZG9jcy9oYWNrL0xLTV9IQUNLSU5HLmh0bWwKICAgICAgIEtleXdvcmRzOiBzeXNjYWxscywgaW50ZXJjZXB0LCBoaWRlLCBhYnVzZSwgc3ltYm9sIHRhYmxlLgogICAgICAgRGVzY3JpcHRpb246IEludGVyZXN0aW5nIHBhcGVyIG9uIGhvdyB0byBhYnVzZSB0aGUgTGludXgga2VybmVsIGluCiAgICAgICBvcmRlciB0byBpbnRlcmNlcHQgYW5kIG1vZGlmeSBzeXNjYWxscywgbWFrZQogICAgICAgZmlsZXMvZGlyZWN0b3JpZXMvcHJvY2Vzc2VzIGludmlzaWJsZSwgYmVjb21lIHJvb3QsIGhpamFjayB0dHlzLAogICAgICAgd3JpdGUga2VybmVsIG1vZHVsZXMgYmFzZWQgdmlydXMuLi4gYW5kIHNvbHV0aW9ucyBmb3IgYWRtaW5zIHRvCiAgICAgICBhdm9pZCBhbGwgdGhvc2UgYWJ1c2VzLgogICAgICAgTm90ZXM6IEZvciAyLjAueCBrZXJuZWxzLiBHaXZlcyBndWlkYW5jZXMgdG8gcG9ydCBpdCB0byAyLjIueAogICAgICAga2VybmVscy4KICAgICAgIAogICAgIEJPT0tTOiAoTm90IG9uLWxpbmUpCiAgIAogICAgICogVGl0bGU6ICJMaW51eCBEZXZpY2UgRHJpdmVycyIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkuCiAgICAgICBQdWJsaXNoZXI6IE8nUmVpbGx5ICYgQXNzb2NpYXRlcy4KICAgICAgIERhdGU6IDE5OTguCiAgICAgICBQYWdlczogNDM5LgogICAgICAgSVNCTjogMS01NjU5Mi0yOTItMQogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzLCAybmQgRWRpdGlvbiIKICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgYW5kIEpvbmF0aGFuIENvcmJldC4KICAgICAgIFB1Ymxpc2hlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzLgogICAgICAgRGF0ZTogMjAwMS4KICAgICAgIFBhZ2VzOiA1ODYuCiAgICAgICBJU0JOOiAwLTU5NjAwLTAwOC0xCiAgICAgICBOb3RlczogRnVydGhlciBpbmZvcm1hdGlvbiBpbgogICAgICAgaHR0cDovL3d3dy5vcmVpbGx5LmNvbS9jYXRhbG9nL2xpbnV4ZHJpdmUyLwoKICAgICAqIFRpdGxlOiAiTGludXggRGV2aWNlIERyaXZlcnMsIDNuZCBFZGl0aW9uIgogICAgICAgQXV0aG9yczogSm9uYXRoYW4gQ29yYmV0LCBBbGVzc2FuZHJvIFJ1YmluaSwgYW5kIEdyZWcgS3JvYWgtSGFydG1hbgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMuCiAgICAgICBEYXRlOiAyMDA1LgogICAgICAgUGFnZXM6IDYzNi4KICAgICAgIElTQk46IDAtNTk2LTAwNTkwLTMKICAgICAgIE5vdGVzOiBGdXJ0aGVyIGluZm9ybWF0aW9uIGluCiAgICAgICBodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvbGludXhkcml2ZTMvCiAgICAgICBQREYgZm9ybWF0LCBVUkw6IGh0dHA6Ly9sd24ubmV0L0tlcm5lbC9MREQzLwoKICAgICAqIFRpdGxlOiAiTGludXggS2VybmVsIEludGVybmFscyIKICAgICAgIEF1dGhvcjogTWljaGFlbCBCZWNrLgogICAgICAgUHVibGlzaGVyOiBBZGRpc29uLVdlc2xleS4KICAgICAgIERhdGU6IDE5OTcuCiAgICAgICBJU0JOOiAwLTIwMS0zMzE0My04IChzZWNvbmQgZWRpdGlvbikKICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgRGVzaWduIG9mIHRoZSBVTklYIE9wZXJhdGluZyBTeXN0ZW0iCiAgICAgICBBdXRob3I6IE1hdXJpY2UgSi4gQmFjaC4KICAgICAgIFB1Ymxpc2hlcjogUHJlbnRpY2UgSGFsbC4KICAgICAgIERhdGU6IDE5ODYuCiAgICAgICBQYWdlczogNDcxLgogICAgICAgSVNCTjogMC0xMy0yMDE3NTctMQogICAgICAgCiAgICAgKiBUaXRsZTogIlRoZSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIG9mIHRoZSA0LjMgQlNEIFVOSVgKICAgICAgIE9wZXJhdGluZyBTeXN0ZW0iCiAgICAgICBBdXRob3I6IFNhbXVlbCBKLiBMZWZmbGVyLCBNYXJzaGFsbCBLaXJrIE1jS3VzaWNrLCBNaWNoYWVsIEouCiAgICAgICBLYXJlbHMsIEpvaG4gUy4gUXVhcnRlcm1hbi4KICAgICAgIFB1Ymxpc2hlcjogQWRkaXNvbi1XZXNsZXkuCiAgICAgICBEYXRlOiAxOTg5IChyZXByaW50ZWQgd2l0aCBjb3JyZWN0aW9ucyBvbiBPY3RvYmVyLCAxOTkwKS4KICAgICAgIElTQk46IDAtMjAxLTA2MTk2LTEKICAgICAgIAogICAgICogVGl0bGU6ICJUaGUgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgNC40IEJTRCBVTklYCiAgICAgICBPcGVyYXRpbmcgU3lzdGVtIgogICAgICAgQXV0aG9yOiBNYXJzaGFsbCBLaXJrIE1jS3VzaWNrLCBLZWl0aCBCb3N0aWMsIE1pY2hhZWwgSi4gS2FyZWxzLAogICAgICAgSm9obiBTLiBRdWFydGVybWFuLgogICAgICAgUHVibGlzaGVyOiBBZGRpc29uLVdlc2xleS4KICAgICAgIERhdGU6IDE5OTYuCiAgICAgICBJU0JOOiAwLTIwMS01NDk3OS00CiAgICAgICAKICAgICAqIFRpdGxlOiAiUHJvZ3JhbW1hdGlvbiBMaW51eCAyLjAgQVBJIHN5c3RlbWUgZXQgZm9uY3Rpb25uZW1lbnQgZHUKICAgICAgIG5veWF1IgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogRXlyb2xsZXMuCiAgICAgICBEYXRlOiAxOTk3LgogICAgICAgUGFnZXM6IDUyMC4KICAgICAgIElTQk46IDItMjEyLTA4OTMyLTUKICAgICAgIE5vdGVzOiBGcmVuY2guCiAgICAgICAKICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IEtlcm5lbCBCb29rIgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogSm9obiBXaWxleSAmIFNvbnMuCiAgICAgICBEYXRlOiAxOTk4LgogICAgICAgSVNCTjogMC00NzEtOTgxNDEtOQogICAgICAgTm90ZXM6IEVuZ2xpc2ggdHJhbnNsYXRpb24uCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggMi4wIgogICAgICAgQXV0aG9yOiBSZW15IENhcmQsIEVyaWMgRHVtYXMsIEZyYW5jayBNZXZlbC4KICAgICAgIFB1Ymxpc2hlcjogR2VzdGnzbiAyMDAwLgogICAgICAgRGF0ZTogMTk5Ny4KICAgICAgIFBhZ2VzOiA1MDEuCiAgICAgICBJU0JOOiA4LTQ4MC04ODIwOC01CiAgICAgICBOb3RlczogU3BhbmlzaCB0cmFuc2xhdGlvbi4KICAgICAgIAogICAgICogVGl0bGU6ICJVbml4IGludGVybmFscyAtLSB0aGUgbmV3IGZyb250aWVycyIKICAgICAgIEF1dGhvcjogVXJlc2ggVmFoYWxpYS4KICAgICAgIFB1Ymxpc2hlcjogUHJlbnRpY2UgSGFsbC4KICAgICAgIERhdGU6IDE5OTYuCiAgICAgICBQYWdlczogNjAwLgogICAgICAgSVNCTjogMC0xMy0xMDE5MDgtMgogICAgICAgCiAgICAgKiBUaXRsZTogIkxpbnV4IENvcmUgS2VybmVsIENvbW1lbnRhcnkuIEd1aWRlIHRvIEluc2lkZXIncyBLbm93bGVkZ2UKICAgICAgIG9uIHRoZSBDb3JlIEtlcm5lbCBvZiB0aGUgTGludXggQ29kZSIKICAgICAgIEF1dGhvcjogU2NvdHQgTWF4d2VsbC4KICAgICAgIFB1Ymxpc2hlcjogQ29yaW9saXMuCiAgICAgICBEYXRlOiAxOTk5LgogICAgICAgUGFnZXM6IDU5Mi4KICAgICAgIElTQk46IDEtNTc2MTAtNDY5LTkKICAgICAgIE5vdGVzOiBDRC1ST00gaW5jbHVkZWQuIExpbmUgYnkgbGluZSBjb21tZW50YXJ5IG9mIHRoZSBrZXJuZWwKICAgICAgIGNvZGUuCiAgICAgICAKICAgICAqIFRpdGxlOiAiTGludXggSVAgU3RhY2tzIENvbW1lbnRhcnkiCiAgICAgICBBdXRob3I6IFN0ZXBoZW4gU2F0Y2hlbGwgYW5kIEhCSiBDbGlmZm9yZC4KICAgICAgIFB1Ymxpc2hlcjogQ29yaW9saXMuCiAgICAgICBEYXRlOiAyMDAwLgogICAgICAgUGFnZXM6ID8/Py4KICAgICAgIElTQk46IDEtNTc2MTAtNDcwLTIKICAgICAgIE5vdGVzOiBMaW5lIGJ5IGxpbmUgc291cmNlIGNvZGUgY29tbWVudGFyeSBib29rLgogICAgICAgCiAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIGZvciB0aGUgcmVhbCB3b3JsZCAtIFBPU0lYLjQiCiAgICAgICBBdXRob3I6IEJpbGwgTy4gR2FsbG1laXN0ZXIuCiAgICAgICBQdWJsaXNoZXI6IE8nUmVpbGx5ICYgQXNzb2NpYXRlcywgSW5jLi4KICAgICAgIERhdGU6IDE5OTUuCiAgICAgICBQYWdlczogPz8/LgogICAgICAgSVNCTjogSS01NjU5Mi0wNzQtMAogICAgICAgTm90ZXM6IFRob3VnaCBub3QgYmVpbmcgZGlyZWN0bHkgYWJvdXQgTGludXgsIExpbnV4IGFpbXMgdG8gYmUKICAgICAgIFBPU0lYLiBHb29kIHJlZmVyZW5jZS4KICAgICAgIAogICAgICogVGl0bGU6ICJVbmRlcnN0YW5kaW5nIHRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IERhbmllbCBQLiBCb3ZldCBhbmQgTWFyY28gQ2VzYXRpLgogICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMsIEluYy4uCiAgICAgICBEYXRlOiAyMDAwLgogICAgICAgUGFnZXM6IDcwMi4KICAgICAgIElTQk46IDAtNTk2LTAwMDAyLTIKICAgICAgIE5vdGVzOiBGdXJ0aGVyIGluZm9ybWF0aW9uIGluCiAgICAgICBodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvbGludXhrZXJuZWwvCiAgICAgICAKICAgICBNSVNDRUxMQU5FT1VTOgogICAKICAgICAqIE5hbWU6IGxpbnV4L0RvY3VtZW50YXRpb24KICAgICAgIEF1dGhvcjogTWFueS4KICAgICAgIFVSTDogSnVzdCBsb29rIGluc2lkZSB5b3VyIGtlcm5lbCBzb3VyY2VzLgogICAgICAgS2V5d29yZHM6IGFueXRoaW5nLCBEb2NCb29rLgogICAgICAgRGVzY3JpcHRpb246IERvY3VtZW50YXRpb24gdGhhdCBjb21lcyB3aXRoIHRoZSBrZXJuZWwgc291cmNlcywKICAgICAgIGluc2lkZSB0aGUgRG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIFNvbWUgcGFnZXMgZnJvbSB0aGlzIGRvY3VtZW50CiAgICAgICAoaW5jbHVkaW5nIHRoaXMgZG9jdW1lbnQgaXRzZWxmKSBoYXZlIGJlZW4gbW92ZWQgdGhlcmUsIGFuZCBtaWdodAogICAgICAgYmUgbW9yZSB1cCB0byBkYXRlIHRoYW4gdGhlIHdlYiB2ZXJzaW9uLgogICAgICAgCiAgICAgKiBOYW1lOiAiTGludXggU291cmNlIERyaXZlciIKICAgICAgIFVSTDogaHR0cDovL2xzZC5saW51eC5jegogICAgICAgS2V5d29yZHM6IEJyb3dzaW5nIHNvdXJjZSBjb2RlLgogICAgICAgRGVzY3JpcHRpb246ICJMaW51eCBTb3VyY2UgRHJpdmVyIChMU0QpIGlzIGFuIGFwcGxpY2F0aW9uLCB3aGljaAogICAgICAgY2FuIG1ha2UgYnJvd3Npbmcgc291cmNlIGNvZGVzIG9mIExpbnV4IGtlcm5lbCBlYXNpZXIgdGhhbiB5b3UgY2FuCiAgICAgICBpbWFnaW5lLiBZb3UgY2FuIHNlbGVjdCBiZXR3ZWVuIG11bHRpcGxlIHZlcnNpb25zIG9mIGtlcm5lbCAoZS5nLgogICAgICAgMC4wMSwgMS4wLjAsIDIuMC4zMywgMi4wLjM0cHJlMTMsIDIuMC4wLCAyLjEuMTAxIGV0Yy4pLiBXaXRoIExTRAogICAgICAgeW91IGNhbiBzZWFyY2ggTGludXgga2VybmVsIChmdWxsdGV4dCwgbWFjcm9zLCB0eXBlcywgZnVuY3Rpb25zCiAgICAgICBhbmQgdmFyaWFibGVzKSBhbmQgTFNEIGNhbiBnZW5lcmF0ZSBwYXRjaGVzIGZvciB5b3Ugb24gdGhlIGZseQogICAgICAgKGZpbGVzLCBkaXJlY3RvcmllcyBvciBrZXJuZWwpIi4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IEtlcm5lbCBTb3VyY2UgUmVmZXJlbmNlIgogICAgICAgQXV0aG9yOiBUaG9tYXMgR3JhaWNoZW4uCiAgICAgICBVUkw6IGh0dHA6Ly9pbm5vbWluYXRlLm9yZy9+Z3JhaWNoZW4vcHJvamVjdHMvbGtzci8KICAgICAgIEtleXdvcmRzOiBDVlMsIHdlYiwgY3Zzd2ViLCBicm93c2luZyBzb3VyY2UgY29kZS4KICAgICAgIERlc2NyaXB0aW9uOiBXZWIgaW50ZXJmYWNlIHRvIGEgQ1ZTIHNlcnZlciB3aXRoIHRoZSBrZXJuZWwKICAgICAgIHNvdXJjZXMuICJIZXJlIHlvdSBjYW4gaGF2ZSBhIGxvb2sgYXQgYW55IGZpbGUgb2YgdGhlIExpbnV4IGtlcm5lbAogICAgICAgc291cmNlcyBvZiBhbnkgdmVyc2lvbiBzdGFydGluZyBmcm9tIDEuMCB1cCB0byB0aGUgKGRhaWx5IHVwZGF0ZWQpCiAgICAgICBjdXJyZW50IHZlcnNpb24gYXZhaWxhYmxlLiBBbHNvIHlvdSBjYW4gY2hlY2sgdGhlIGRpZmZlcmVuY2VzCiAgICAgICBiZXR3ZWVuIHR3byB2ZXJzaW9ucyBvZiBhIGZpbGUiLgogICAgICAgCiAgICAgKiBOYW1lOiAiQ3Jvc3MtUmVmZXJlbmNpbmcgTGludXgiCiAgICAgICBVUkw6IGh0dHA6Ly9seHIubGludXgubm8vc291cmNlLwogICAgICAgS2V5d29yZHM6IEJyb3dzaW5nIHNvdXJjZSBjb2RlLgogICAgICAgRGVzY3JpcHRpb246IEFub3RoZXIgd2ViLWJhc2VkIExpbnV4IGtlcm5lbCBzb3VyY2UgY29kZSBicm93c2VyLgogICAgICAgTG90cyBvZiBjcm9zcyByZWZlcmVuY2VzIHRvIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiBZb3UgY2FuIHNlZQogICAgICAgd2hlcmUgdGhleSBhcmUgZGVmaW5lZCBhbmQgd2hlcmUgdGhleSBhcmUgdXNlZC4KICAgICAgIAogICAgICogTmFtZTogIkxpbnV4IFdlZWtseSBOZXdzIgogICAgICAgVVJMOiBodHRwOi8vbHduLm5ldAogICAgICAgS2V5d29yZHM6IGxhdGVzdCBrZXJuZWwgbmV3cy4KICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuIFRoZXJlJ3MgYSBmaXhlZCBrZXJuZWwgc2VjdGlvbgogICAgICAgc3VtbWFyaXppbmcgZGV2ZWxvcGVycycgd29yaywgYnVnIGZpeGVzLCBuZXcgZmVhdHVyZXMgYW5kIHZlcnNpb25zCiAgICAgICBwcm9kdWNlZCBkdXJpbmcgdGhlIHdlZWsuIFB1Ymxpc2hlZCBldmVyeSBUaHVyc2RheS4KICAgICAgIAogICAgICogTmFtZTogIktlcm5lbCBUcmFmZmljIgogICAgICAgVVJMOiBodHRwOi8vd3d3Lmtlcm5lbHRyYWZmaWMub3JnL2tlcm5lbC10cmFmZmljLwogICAgICAgS2V5d29yZHM6IGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QsIHdlZWtseSBrZXJuZWwgbmV3cy4KICAgICAgIERlc2NyaXB0aW9uOiBXZWVrbHkgbmV3c2xldHRlciBjb3ZlcmluZyB0aGUgbW9zdCByZWxldmFudAogICAgICAgZGlzY3Vzc2lvbnMgb2YgdGhlIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QuCiAgICAgICAKICAgICAqIE5hbWU6ICJDdVRUaU5HLmVER2UuTGlOdVgiCiAgICAgICBVUkw6IGh0dHA6Ly9lZGdlLmtlcm5lbG5vdGVzLm9yZwogICAgICAgS2V5d29yZHM6IGNoYW5nZWxpc3QuCiAgICAgICBEZXNjcmlwdGlvbjogU2l0ZSB3aGljaCBwcm92aWRlcyB0aGUgY2hhbmdlbGlzdCBmb3IgZXZlcnkga2VybmVsCiAgICAgICByZWxlYXNlLiBXaGF0J3MgbmV3LCB3aGF0J3MgYmV0dGVyLCB3aGF0J3MgY2hhbmdlZC4gTXlyZHJhYWwgcmVhZHMKICAgICAgIHRoZSBwYXRjaGVzIGFuZCBkZXNjcmliZXMgdGhlbS4gUG9pbnRlcnMgdG8gdGhlIHBhdGNoZXMgYXJlIHRoZXJlLAogICAgICAgdG9vLgogICAgICAgCiAgICAgKiBOYW1lOiAiTmV3IGxpbnV4LWtlcm5lbCBNYWlsaW5nIExpc3QgRkFRIgogICAgICAgVVJMOiBodHRwOi8vd3d3LnR1eC5vcmcvbGttbC8KICAgICAgIEtleXdvcmRzOiBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0IEZBUS4KICAgICAgIERlc2NyaXB0aW9uOiBsaW51eC1rZXJuZWwgaXMgYSBtYWlsaW5nIGxpc3QgZm9yIGRldmVsb3BlcnMgdG8KICAgICAgIGNvbW11bmljYXRlLiBUaGlzIEZBUSBidWlsZHMgb24gdGhlIHByZXZpb3VzIGxpbnV4LWtlcm5lbCBtYWlsaW5nCiAgICAgICBsaXN0IEZBUSBtYWludGFpbmVkIGJ5IEZyb2h3YWx0IEVnZXJlciwgd2hvIG5vIGxvbmdlciBtYWludGFpbnMKICAgICAgIGl0LiBSZWFkIGl0IHRvIHNlZSBob3cgdG8gam9pbiB0aGUgbWFpbGluZyBsaXN0LiBEb3plbnMgb2YKICAgICAgIGludGVyZXN0aW5nIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhlIGxpc3QsIExpbnV4LCBkZXZlbG9wZXJzICh3aG8KICAgICAgIGlzIC4uLj8pLCB0ZXJtcyAod2hhdCBpcy4uLj8pIGFyZSBhbnN3ZXJlZCBoZXJlIHRvby4gSnVzdCByZWFkIGl0LgogICAgICAgCiAgICAgKiBOYW1lOiAiTGludXggVmlydHVhbCBGaWxlIFN5c3RlbSIKICAgICAgIEF1dGhvcjogUGV0ZXIgSi4gQnJhYW0uCiAgICAgICBVUkw6IGh0dHA6Ly93d3cuY29kYS5jcy5jbXUuZWR1L2RvYy90YWxrcy9saW51eHZmcy8KICAgICAgIEtleXdvcmRzOiBzbGlkZXMsIFZGUywgaW5vZGUsIHN1cGVyYmxvY2ssIGRlbnRyeSwgZGNhY2hlLgogICAgICAgRGVzY3JpcHRpb246IFNldCBvZiBzbGlkZXMsIHByZXN1bWFibHkgZnJvbSBhIHByZXNlbnRhdGlvbiBvbiB0aGUKICAgICAgIExpbnV4IFZGUyBsYXllci4gQ292ZXJzIHZlcnNpb24gMi4xLngsIHdpdGggZGVudHJpZXMgYW5kIHRoZQogICAgICAgZGNhY2hlLgogICAgICAgCiAgICAgKiBOYW1lOiAiR2FyeSdzIEVuY3ljbG9wZWRpYSAtIFRoZSBMaW51eCBLZXJuZWwiCiAgICAgICBBdXRob3I6IEdhcnkgKEkgc3VwcG9zZS4uLikuCiAgICAgICBVUkw6IGh0dHA6Ly9tZW1iZXJzLmFhLm5ldC9+c3dlYXIvcGVkaWEva2VybmVsLmh0bWwKICAgICAgIEtleXdvcmRzOiBsaW5rcywgbm90IGZvdW5kIGhlcmU/LgogICAgICAgRGVzY3JpcHRpb246IEdhcnkncyBFbmN5Y2xvcGVkaWEgZXhpc3RzIHRvIGFsbG93IHRoZSByYXBpZCBmaW5kaW5nCiAgICAgICBvZiBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBvZiBpbnRlcmVzdCB0byBHTlUvTGludXgKICAgICAgIHVzZXJzLiBJdCBoYXMgYWJvdXQgNDAwMCBsaW5rcyB0byBleHRlcm5hbCBwYWdlcyBpbiAxNTAgbWFqb3IKICAgICAgIGNhdGVnb3JpZXMuIFRoaXMgbGluayBpcyBmb3Iga2VybmVsLXNwZWNpZmljIGxpbmtzLCBkb2N1bWVudHMsCiAgICAgICBzaXRlcy4uLiBMb29rIHRoZXJlIGlmIHlvdSBjb3VsZCBub3QgZmluZCBoZXJlIHdoYXQgeW91IHdlcmUKICAgICAgIGxvb2tpbmcgZm9yLgogICAgICAgCiAgICAgKiBOYW1lOiAiVGhlIGhvbWUgcGFnZSBvZiBMaW51eC1NTSIKICAgICAgIEF1dGhvcjogVGhlIExpbnV4LU1NIHRlYW0uCiAgICAgICBVUkw6IGh0dHA6Ly9saW51eC1tbS5vcmcvCiAgICAgICBLZXl3b3JkczogbWVtb3J5IG1hbmFnZW1lbnQsIExpbnV4LU1NLCBtbSBwYXRjaGVzLCBUT0RPLCBkb2NzLAogICAgICAgbWFpbGluZyBsaXN0LgogICAgICAgRGVzY3JpcHRpb246IFNpdGUgZGV2b3RlZCB0byBMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBkZXZlbG9wbWVudC4KICAgICAgIE1lbW9yeSByZWxhdGVkIHBhdGNoZXMsIEhPV1RPcywgbGlua3MsIG1tIGRldmVsb3BlcnMuLi4gRG9uJ3QgbWlzcwogICAgICAgaXQgaWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIG1lbW9yeSBtYW5hZ2VtZW50IGRldmVsb3BtZW50IQogICAgICAgCiAgICAgKiBOYW1lOiAiS2VybmVsIE5ld2JpZXMgSVJDIENoYW5uZWwiCiAgICAgICBVUkw6IGh0dHA6Ly93d3cua2VybmVsbmV3Ymllcy5vcmcKICAgICAgIEtleXdvcmRzOiBJUkMsIG5ld2JpZXMsIGNoYW5uZWwsIGFza2luZyBkb3VidHMuCiAgICAgICBEZXNjcmlwdGlvbjogI2tlcm5lbG5ld2JpZXMgb24gaXJjLm9wZW5wcm9qZWN0cy5uZXQuIEZyb20gdGhlIHdlYgogICAgICAgcGFnZTogIiNrZXJuZWxuZXdiaWVzIGlzIGFuIElSQyBuZXR3b3JrIGRlZGljYXRlZCB0byB0aGUgJ25ld2JpZScKICAgICAgIGtlcm5lbCBoYWNrZXIuIFRoZSBhdWRpZW5jZSBtb3N0bHkgY29uc2lzdHMgb2YgcGVvcGxlIHdobyBhcmUKICAgICAgIGxlYXJuaW5nIGFib3V0IHRoZSBrZXJuZWwsIHdvcmtpbmcgb24ga2VybmVsIHByb2plY3RzIG9yCiAgICAgICBwcm9mZXNzaW9uYWwga2VybmVsIGhhY2tlcnMgdGhhdCB3YW50IHRvIGhlbHAgbGVzcyBzZWFzb25lZCBrZXJuZWwKICAgICAgIHBlb3BsZS4gWy4uLl0gI2tlcm5lbG5ld2JpZXMgaXMgb24gdGhlIE9wZW4gUHJvamVjdHMgSVJDIE5ldHdvcmssCiAgICAgICB0cnkgaXJjLm9wZW5wcm9qZWN0cy5uZXQgb3IgaXJjLjxjb3VudHJ5Pi5vcGVucHJvamVjdHMubmV0IGFzIHlvdXIKICAgICAgIHNlcnZlciBhbmQgdGhlbiAvam9pbiAja2VybmVsbmV3YmllcyIuIEl0IGFsc28gaG9zdHMgYXJ0aWNsZXMsCiAgICAgICBkb2N1bWVudHMsIEZBUXMuLi4KICAgICAgIAogICAgICogTmFtZTogImxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXJjaGl2ZXMgYW5kIHNlYXJjaCBlbmdpbmVzIgogICAgICAgVVJMOiBodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAogICAgICAgVVJMOiBodHRwOi8vd3d3LnV3c2cuaW5kaWFuYS5lZHUvaHlwZXJtYWlsL2xpbnV4L2tlcm5lbC9pbmRleC5odG1sCiAgICAgICBVUkw6IGh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgta2VybmVsCiAgICAgICBVUkw6IGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9tbGlzdC5saW51eC5rZXJuZWwKICAgICAgIFVSTDogaHR0cDovL3d3dy5jcy5oZWxzaW5raS5maS9saW51eC9saW51eC1rZXJuZWwvCiAgICAgICBVUkw6IGh0dHA6Ly93d3cubGliLnVhYS5hbGFza2EuZWR1L2xpbnV4LWtlcm5lbC8KICAgICAgIEtleXdvcmRzOiBsaW51eC1rZXJuZWwsIGFyY2hpdmVzLCBzZWFyY2guCiAgICAgICBEZXNjcmlwdGlvbjogU29tZSBvZiB0aGUgbGludXgta2VybmVsIG1haWxpbmcgbGlzdCBhcmNoaXZlcnMuIElmCiAgICAgICB5b3UgaGF2ZSBhIGJldHRlci9hbm90aGVyIG9uZSwgcGxlYXNlIGxldCBtZSBrbm93LgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgIAogICBEb2N1bWVudCBsYXN0IHVwZGF0ZWQgb24gU2F0IDIwMDUtTk9WLTE5Cg==