ZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvUkVBRE1FLmVsLmNwNzM3LnR4dCBiL3J1bnRpbWUvdHV0b3IvUkVBRE1FLmVsLmNwNzM3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjZmOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS90dXRvci9SRUFETUUuZWwuY3A3MzcudHh0CkBAIC0wLDAgKzEsMjQgQEAKK5KmIFR1dG9yIJzlpJigIKPlmCAirpygqKakmKGroKHjIiCnnKig45qeqZ4gmqCYIKTipqyqIK6o46mrnKogq6asCiuprKSr4aGrniBWaW0uCisKK46gIKecqKCpqearnKimoCCk4qagIK6o46mrnKogo6emqKbnpCCkmCCrpiCrnKKcoOmppqykIKmcIKKgmuarnKimIJin5goro+WYIOmomC4gkqYgmKemq+KinKmjmCCc5aSYoCDmq6Ago6emqJzlq5wgpJggoeGknKucIKPlmCCYp6LjIJyompip5ZgKK5ynnKWcqJqYqeWYqiChnKCj4qSmrCCuqJ6poKOmp6ag6aSrmKogq6akIKmspKvhoaueIFZpbS4KKworkqYgVHV0b3IgnOWkmKAg4qSYIJiorpzlpiCnpqwgp5yooOKunKAgq5ggo5if46OYq5ggq56qIKeopqeYqJipoZys46ouCiuLp6aonOWrnCCkmCCcoaucouKpnKucIJinouEgInZpbSB0dXRvciIgoZigIKOcq+EgpJggmKGmoqasn+OpnKucIKugqgorppuemuWcqiCpq5ggo5if46OYq5guIJKYIKOYn+OjmKuYIJ+YIKmYqiCnpueknCCkmCCrqKanpqemoOOpnKucCiurpiCYqK6c5aYsIJynpqPipOCqIIuGjCCSjiCJgIyEkoQgkZKOII+Ql5KOkpOPjiCAjJKIgpCAlI4gkYCRLgorCiuRnCCp56mrnqOYIFVuaXggo6emqJzlq5wgnKflqZ6qIKSYIK6onqmgo6anpqDjqZyrnCCrpiCnqOaaqJijo5ggInZpbXR1dG9yIi4KK4eYIJueo6CmrKia46mcoCCnqOmrmCDipJggp6jmrpygqKYgmKSr5ZqomK2mIKumrCB0dXRvci4KKwor667gIKmhnK2rnOUgpJggp6imqZ/iqeAgp5yooKmp5qucqJggp6imruConqPipJggo5if46OYq5ggmKKi4SCbnKQg4q7gIJmonKAKK6umpCCYp5iomOWrnqumIK6o5qSmLiCEpJ6jnKjpqaucIKOcIKeYqJihmKLpIKfpqiCfmCCrpiCf4qKYq5wgoZigIKmrnOWinKucCiujpqwgpqemoJypm+OnpqucIJmcoqug6amcoKogoeGknKucLgorCitCb2IgV2FyZSwgQ29sb3JhZG8gU2Nob29sIG9mIE1pbmVzLCBHb2xkZW4sIENvIDgwNDAxLCBVU0EKKygzMDMpIDI3My0zOTg3Citid2FyZUBtaW5lcy5jb2xvcmFkby5lZHUgYndhcmVAc2xhdGUubWluZXMuY29sb3JhZG8uZWR1IGJ3YXJlQG1pbmVzLmJpdG5ldAorCitbkqYgmKiunOWmIJisq+Ygq6imp6anpqDjn56hnCCaoJggq6akIFZpbSCYp+Ygq6akIEJyYW0gTW9vbGVuYWFyXQpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9SRUFETUUuZWwudHh0IGIvcnVudGltZS90dXRvci9SRUFETUUuZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZjVlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL1JFQURNRS5lbC50eHQKQEAgLTAsMCArMSwyNCBAQAor1O8gVHV0b3Ig5d/t4ekg7N/hICL35enx7+3h6vTp6t4iIPDl8ene4+fz5yDj6eEg7d3v9fIg9/He8/Tl8iD07/UKK/P17fTc6vTnIFZpbS4KKworz+kg8OXx6fPz/PTl8e/pIO3d7+kg9/He8/Tl8iDs8O/x7/3tIO3hIPTvIPTl6+Xp/vPv9e0g8+Ug6+nj/PTl8e8g4fD8Civs3+Eg/vHhLiDU7yDh8O/03evl8+zhIOXf7eHpIPz06SDs8O/x5d/05SDt4SDq3O3l9OUg7N/hIOHw694g5fHj4fPf4Qor5fDl7uXx4+Hz3+HyIOrl6ezd7e/1IPfx5/Pp7O/w7+n+7fTh8iD07+0g8/Xt9Nzq9OcgVmltLgorCivU7yBUdXRvciDl3+3h6SDd7eEg4fH35d/vIPDv9SDw5fHp3ffl6SD04SDs4eje7OH04SD05/Ig8PHv8OHx4fPq5fXe8i4KK8zw7/Hl3/TlIO3hIOXq9OXr3fPl9OUg4fDr3CAidmltIHR1dG9yIiDq4ekg7OX03CDt4SDh6u/r7/Xo3vPl9OUg9OnyCivv5Ofj3+XyIPP04SDs4eje7OH04S4g1OEg7OHo3uzh9OEg6OEg8+HyIPDv/e3lIO3hIPTx7/Dv8O/p3vPl9OUKK/TvIOHx9+Xf7ywg5fDv7N3t+fIgzMfNINTPIMrBzcXUxSDT1M8g0NHZ1M/U1dDPIMHN1MnD0cHWzyDTwdMuCisKK9PlIPP98/Tn7OEgVW5peCDs8O/x5d/05SDl8N/z5/Ig7eEg9/Hn8+ns7/Dv6d7z5fTlIPTvIPDx/OPx4ezs4SAidmltdHV0b3IiLgoryOEg5Ofs6e/18ePe8+XpIPDx/vThIN3t4SDw8fz35enx7yDh7fTf4/Hh9u8g9O/1IHR1dG9yLgorCiu49/kg8+rl9vTl3yDt4SDw8e/z6N3z+SDw5fHp8/P89OXx4SDw8e/3+fHn7N3t4SDs4eje7OH04SDh6+vcIOTl7SDd9/kg4vHl6Qor9O/tIOHw4fHh3/Tn9O8g9/H87e8uIMXt5+zl8f7z9OUg7OUg8OHx4erh6/4g8P7yIOjhIPTvIOjd6+H05SDq4ekg8/Tl3+vl9OUKK+zv9SDv8O/p5fPk3vDv9OUg4uXr9On+8+Xp8iDq3O3l9OUuCisKK0JvYiBXYXJlLCBDb2xvcmFkbyBTY2hvb2wgb2YgTWluZXMsIEdvbGRlbiwgQ28gODA0MDEsIFVTQQorKDMwMykgMjczLTM5ODcKK2J3YXJlQG1pbmVzLmNvbG9yYWRvLmVkdSBid2FyZUBzbGF0ZS5taW5lcy5jb2xvcmFkby5lZHUgYndhcmVAbWluZXMuYml0bmV0CisKK1vU7yDh8ffl3+8g4fX0/CD08e/w7/Dv6d7o5+rlIOPp4SD07+0gVmltIOHw/CD07+0gQnJhbSBNb29sZW5hYXJdCmRpZmYgLS1naXQgYS9ydW50aW1lL3R1dG9yL1JFQURNRS50eHQuaW5mbyBiL3J1bnRpbWUvdHV0b3IvUkVBRE1FLnR4dC5pbmZvCmluZGV4IDIzOGIxMWYuLmU3ZmExMTQgMTAwNzU1Ci0tLSBhL3J1bnRpbWUvdHV0b3IvUkVBRE1FLnR4dC5pbmZvCisrKyBiL3J1bnRpbWUvdHV0b3IvUkVBRE1FLnR4dC5pbmZvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvUkVBRE1FX2FtaWJpbi50eHQgYi9ydW50aW1lL3R1dG9yL1JFQURNRV9hbWliaW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YjllZjIKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL1JFQURNRV9hbWliaW4udHh0CkBAIC0wLDAgKzEsMTIgQEAKK1JFQURNRV9hbWliaW4udHh0IGZvciB2ZXJzaW9uIDcuMmEgb2YgVmltOiBWaSBJTXByb3ZlZC4KKworU2VlICJSRUFETUUudHh0IiBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBWaW0uCitTZWUgIlJFQURNRV9hbWkudHh0IiBmb3IgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgdGhlIEFtaWdhLgorVGhlc2UgZmlsZXMgYXJlIGluIHRoZSBydW50aW1lIGFyY2hpdmUgKHZpbTYwcnQudGd6KS4KKworCitUaGUgQW1pZ2EgImJpbiIgYXJjaGl2ZSBjb250YWlucyB0aGUgVmltIGV4ZWN1dGFibGUgZm9yIHRoZSBBbWlnYS4gIEl0IHdhcworY29tcGlsZWQgd2l0aCAiYmlnIiBmZWF0dXJlcy4KKworUG9zdHNjcmlwdCBwcmludGluZyBpcyBub3QgaW5jbHVkZWQgdG8gYXZvaWQgcmVxdWlyaW5nIGZsb2F0aW5nIHBvaW50Citjb21wdXRhdGlvbnMuCmRpZmYgLS1naXQgYS9ydW50aW1lL3R1dG9yL1JFQURNRV9leHRyYS50eHQgYi9ydW50aW1lL3R1dG9yL1JFQURNRV9leHRyYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwYjUwMgotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvdHV0b3IvUkVBRE1FX2V4dHJhLnR4dApAQCAtMCwwICsxLDYxIEBACitSRUFETUVfZXh0cmEudHh0IGZvciB2ZXJzaW9uIDcuMmEgb2YgVmltOiBWaSBJTXByb3ZlZC4KKworVGhlIGV4dHJhIGFyY2hpdmUgb2YgVmltIGlzIHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgc291cmNlIGFyY2hpdmUKKyh2aW0tNy4wLXNyYy50YXIuZ3opLiAgVGhlIGV4dHJhIGFyY2hpdmUgaXMgdXNlbGVzcyB3aXRob3V0IGl0LgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSAiUkVBRE1FLnR4dCIgZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIHJ1bnRpbWUKK2FyY2hpdmUgKHZpbS03LjAtcnQudGFyLmd6KS4gIFRvIGJlIGFibGUgdG8gcnVuIFZpbSB5b3UgTVVTVCBnZXQgdGhlIHJ1bnRpbWUKK2FyY2hpdmUgdG9vIQorCitUaGUgZXh0cmEgYXJjaGl2ZSBwbHVzIHRoZSBzb3VyY2UgYW5kIHJ1bnRpbWUgYWNoaXZlcyBtYWtlIHVwIHRoZSBjb21wbGV0ZQorc291cmNlcyBvZiBWaW0gZm9yIGFsbCBzeXN0ZW1zLgorCisKK1NvbWUgb2YgdGhlIHRoaW5ncyB0aGF0IHRoZSBleHRyYSBhcmNoaXZlIGNvbnRhaW5zOgorCitGYXJzaQkJRmlsZXMgZm9yIHRoZSBGYXJzaSAocGVyc2lhbikgbGFuZ3VhZ2UuICBJZiB5b3UgZG9uJ3Qga25vdworCQl3aGF0IEZhcnNpIGlzLCB0aGlzIGlzIG5vdCBmb3IgeW91LgorCitpZl9zbmlmZglJbnRlcmZhY2UgdG8gU05pRkYuICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IFNOaUZGIGlzLCB0aGlzIGlzCisJCW5vdCBmb3IgeW91LgorCitvc19hbWlnYQlGaWxlcyBmb3IgdGhlIEFtaWdhIHBvcnQuCisKK2d1aV9yaXNjb3MKK29zX3Jpc2NvcwlGaWxlcyBmb3IgdGhlIFJJU0MgT1MgcG9ydC4KKworZ3VpX2Jlb3MKK29zX2Jlb3MJCUZpbGVzIGZvciB0aGUgQmVPUyBwb3J0LgorCitvc19tc2Rvcworb3NfZG9zCQlGaWxlcyBmb3IgdGhlIE1TLURPUyBwb3J0LgorCitndWlfbWFjCitvc19tYWMJCUZpbGVzIGZvciB0aGUgTWFjIHBvcnQuCisKK29zX21pbnQJCUZpbGVzIGZvciB0aGUgQXRhcmkgTWludCBwb3J0LgorCitvc19vczIJCUZpbGVzIGZvciB0aGUgT1MvMiBwb3J0LgordGVlCQlFeHRyYSBwcm9ncmFtIGZvciBPUy8yLgorCitvc192bXMJCUZpbGVzIGZvciB0aGUgVk1TIHBvcnQuCisKK29zX3czMgorb3Nfd2luMzIJRmlsZXMgZm9yIHRoZSBXaW4zMiBwb3J0LgorCitndWlfdzMyCQlGaWxlcyBmb3IgdGhlIFdpbjMyIEdVSS4KK2d1aV93NDgJCUZpbGVzIGZvciB0aGUgV2luMzIgYW5kIFdpbjE2IEdVSS4KK01ha2VfbXZjLm1hawlNUyBWaXN1YWwgQysrIG1ha2VmaWxlIGZvciB0aGUgV2luMzIgR1VJLgorcmdiLnR4dAkJRmlsZSB3aXRoIGNvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgV2luMzIgR1VJLgorCitpZl9vbGUJCU9MRSBhdXRvbWF0aW9uIGludGVyZmFjZSwgZm9yIE1TIFdpbmRvd3MgOTUgYW5kIE5ULgorCitWaXNWaW0JCUludGVncmF0aW9uIG9mIFdpbjMyIEdVSSB3aXRoIE1TIFZpc3VhbCBEZXZlbG9wZXIgU3R1ZGlvLgorCitHdmltRXh0CQlETEwgZm9yIHRoZSAiRWRpdCB3aXRoIFZpbSIgY29udGV4dCBtZW51IGVudHJ5CisKK25zaXMJCU5TSVMgc2NyaXB0IHRvIGJ1aWxkIHRoZSBzZWxmLWluc3RhbGxpbmcgTVMtV2luZG93cyBleGUKKworKi5tYW4JCVByZXByb2Nlc3NlZCBtYW51YWwgcGFnZXMuCisKK2ZpbGVfc2VsZWN0LnZpbQlWaW0gc2NyaXB0IHRvIGJyb3dzZSBkaXJlY3RvcmllcyAoVW5peCBvbmx5KS4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvUkVBRE1FX29sZS50eHQgYi9ydW50aW1lL3R1dG9yL1JFQURNRV9vbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMTIxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL1JFQURNRV9vbGUudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1JFQURNRV9vbGUudHh0IGZvciB2ZXJzaW9uIDcuMmEgb2YgVmltOiBWaSBJTXByb3ZlZC4KKworVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGd2aW0uZXhlIHdpdGggT0xFIGludGVyZmFjZSBhbmQgVmlzVmltLgorVGhpcyB2ZXJzaW9uIG9mIGd2aW0uZXhlIGNhbiBhbHNvIGxvYWQgYSBudW1iZXIgb2YgaW50ZXJmYWNlIGR5bmFtaWNhbGx5ICh5b3UKK2NhbiBvcHRpb25hbGx5IGluc3RhbGwgdGhlIC5kbGwgZmlsZXMgZm9yIGVhY2ggaW50ZXJmYWNlKS4KK0l0IGlzIG9ubHkgZm9yIE1TLVdpbmRvd3MgOTUvOTgvTUUvTlQvMjAwMC9YUC4KKworQWxzbyBzZWUgdGhlIFJFQURNRV9iaW5kb3MudHh0LCBSRUFETUVfZG9zLnR4dCBhbmQgUkVBRE1FLnR4dCBmaWxlcy4KKworQmUgY2FyZWZ1bCBub3QgdG8gb3ZlcndyaXRlIHRoZSBPTEUgZ3ZpbS5leGUgd2l0aCB0aGUgbm9uLU9MRSBndmltLmV4ZSB3aGVuCit1bnBhY2tpbmcgYW5vdGhlciBiaW5hcnkgYXJjaGl2ZSEgIENoZWNrIHRoZSBvdXRwdXQgb2YgIjp2ZXJzaW9uIjoKKwlXaW4zMnMgLSAiTVMtV2luZG93cyAxNi8zMiBiaXQgR1VJIHZlcnNpb24iCisJIFdpbjMyIC0gIk1TLVdpbmRvd3MgMzIgYml0IEdVSSB2ZXJzaW9uIgorV2luMzIgd2l0aCBPTEUgLSAiTVMtV2luZG93cyAzMiBiaXQgR1VJIHZlcnNpb24gd2l0aCBPTEUgc3VwcG9ydCIKKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHR5cGUgdGhpcyBpbnNpZGUgVmltOgorCTpoZWxwIGlmX29sZQorCitGdXRoZXJtb3JlLCB0aGlzIGFyY2hpdmUgY29udGFpbnMgVklTVklNLkRMTC4gIEl0IGNhbiBiZSB1c2VkIHRvIGludGVncmF0ZQordGhlIE9MRSBndmltIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBEZXZlbG9wZXIgU3R1ZGlvLiAgU2VlIFZpc1ZpbS9SRUFETUUudHh0LgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL2RvYy5pbmZvIGIvcnVudGltZS90dXRvci9ydW50aW1lL2RvYy5pbmZvCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE4MzYwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvZG9jLmluZm8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL2Z0cGx1Z2luLnZpbSBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS9mdHBsdWdpbi52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQzNGI5MwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS9mdHBsdWdpbi52aW0KQEAgLTAsMCArMSwzNSBAQAorIiBWaW0gc3VwcG9ydCBmaWxlIHRvIHN3aXRjaCBvbiBsb2FkaW5nIHBsdWdpbnMgZm9yIGZpbGUgdHlwZXMKKyIKKyIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KKyIgTGFzdCBjaGFuZ2U6CTIwMDYgQXByIDMwCisKK2lmIGV4aXN0cygiZGlkX2xvYWRfZnRwbHVnaW4iKQorICBmaW5pc2gKK2VuZGlmCitsZXQgZGlkX2xvYWRfZnRwbHVnaW4gPSAxCisKK2F1Z3JvdXAgZmlsZXR5cGVwbHVnaW4KKyAgYXUgRmlsZVR5cGUgKiBjYWxsIHM6TG9hZEZUUGx1Z2luKCkKKworICBmdW5jISBzOkxvYWRGVFBsdWdpbigpCisgICAgaWYgZXhpc3RzKCJiOnVuZG9fZnRwbHVnaW4iKQorICAgICAgZXhlIGI6dW5kb19mdHBsdWdpbgorICAgICAgdW5sZXQhIGI6dW5kb19mdHBsdWdpbiBiOmRpZF9mdHBsdWdpbgorICAgIGVuZGlmCisKKyAgICBsZXQgcyA9IGV4cGFuZCgiPGFtYXRjaD4iKQorICAgIGlmIHMgIT0gIiIKKyAgICAgIGlmICZjcG8gPX4jICJTIiAmJiBleGlzdHMoImI6ZGlkX2Z0cGx1Z2luIikKKwkiIEluIGNvbXBhdGlibGUgbW9kZSBvcHRpb25zIGFyZSByZXNldCB0byB0aGUgZ2xvYmFsIHZhbHVlcywgbmVlZCB0bworCSIgc2V0IHRoZSBsb2NhbCB2YWx1ZXMgYWxzbyB3aGVuIGEgcGx1Z2luIHdhcyBhbHJlYWR5IHVzZWQuCisJdW5sZXQgYjpkaWRfZnRwbHVnaW4KKyAgICAgIGVuZGlmCisKKyAgICAgICIgV2hlbiB0aGVyZSBpcyBhIGRvdCBpdCBpcyB1c2VkIHRvIHNlcGFyYXRlIGZpbGV0eXBlIG5hbWVzLiAgVGh1cyBmb3IKKyAgICAgICIgImFhYS5iYmIiIGxvYWQgImFhYSIgYW5kIHRoZW4gImJiYiIuCisgICAgICBmb3IgbmFtZSBpbiBzcGxpdChzLCAnXC4nKQorCWV4ZSAncnVudGltZSEgZnRwbHVnaW4vJyAuIG5hbWUgLiAnLnZpbSBmdHBsdWdpbi8nIC4gbmFtZSAuICdfKi52aW0gZnRwbHVnaW4vJyAuIG5hbWUgLiAnLyoudmltJworICAgICAgZW5kZm9yCisgICAgZW5kaWYKKyAgZW5kZnVuYworYXVncm91cCBFTkQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvcnVudGltZS9mdHBsdWdvZi52aW0gYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvZnRwbHVnb2YudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOTljZTAKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvZnRwbHVnb2YudmltCkBAIC0wLDAgKzEsMTEgQEAKKyIgVmltIHN1cHBvcnQgZmlsZSB0byBzd2l0Y2ggb2ZmIGxvYWRpbmcgcGx1Z2lucyBmb3IgZmlsZSB0eXBlcworIgorIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgorIiBMYXN0IENoYW5nZToJMjAwMiBBcHIgMDQKKworaWYgZXhpc3RzKCJkaWRfbG9hZF9mdHBsdWdpbiIpCisgIHVubGV0IGRpZF9sb2FkX2Z0cGx1Z2luCitlbmRpZgorCisiIFJlbW92ZSBhbGwgYXV0b2NvbW1hbmRzIGluIHRoZSBmaWxldHlwZXBsdWdpbiBncm91cAorc2lsZW50ISBhdSEgZmlsZXR5cGVwbHVnaW4gKgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL2hpMTYtYWN0aW9uLW1ha2UucG5nIGIvcnVudGltZS90dXRvci9ydW50aW1lL2hpMTYtYWN0aW9uLW1ha2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNGM3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvaGkxNi1hY3Rpb24tbWFrZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL21lbnUudmltIGIvcnVudGltZS90dXRvci9ydW50aW1lL21lbnUudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjBjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvbWVudS52aW0KQEAgLTAsMCArMSwxMTA1IEBACisiIFZpbSBzdXBwb3J0IGZpbGUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IG1lbnVzCisiIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhIHN0YXJ0IGZvciB5b3VyIG93biBzZXQgb2YgbWVudXMuCisiCisiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+CisiIExhc3QgQ2hhbmdlOgkyMDA4IEp1biAxNgorCisiIE5vdGUgdGhhdCAiOmFuIiAoc2hvcnQgZm9yICI6YW5vcmVtZW51IikgaXMgb2Z0ZW4gdXNlZCB0byBtYWtlIGEgbWVudSB3b3JrCisiIGluIGFsbCBtb2RlcyBhbmQgYXZvaWQgc2lkZSBlZmZlY3RzIGZyb20gbWFwcGluZ3MgZGVmaW5lZCBieSB0aGUgdXNlci4KKworIiBNYWtlIHN1cmUgdGhlICc8JyBhbmQgJ0MnIGZsYWdzIGFyZSBub3QgaW5jbHVkZWQgaW4gJ2Nwb3B0aW9ucycsIG90aGVyd2lzZQorIiA8Q1I+IHdvdWxkIG5vdCBiZSByZWNvZ25pemVkLiAgU2VlICI6aGVscCAnY3BvcHRpb25zJyIuCitsZXQgczpjcG9fc2F2ZSA9ICZjcG8KK3NldCBjcG8mdmltCisKKyIgQXZvaWQgaW5zdGFsbGluZyB0aGUgbWVudXMgdHdpY2UKK2lmICFleGlzdHMoImRpZF9pbnN0YWxsX2RlZmF1bHRfbWVudXMiKQorbGV0IGRpZF9pbnN0YWxsX2RlZmF1bHRfbWVudXMgPSAxCisKKworaWYgZXhpc3RzKCJ2OmxhbmciKSB8fCAmbGFuZ21lbnUgIT0gIiIKKyAgIiBUcnkgdG8gZmluZCBhIG1lbnUgdHJhbnNsYXRpb24gZmlsZSBmb3IgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuCisgIGlmICZsYW5nbWVudSAhPSAiIgorICAgIGlmICZsYW5nbWVudSA9fiAibm9uZSIKKyAgICAgIGxldCBzOmxhbmcgPSAiIgorICAgIGVsc2UKKyAgICAgIGxldCBzOmxhbmcgPSAmbGFuZ21lbnUKKyAgICBlbmRpZgorICBlbHNlCisgICAgbGV0IHM6bGFuZyA9IHY6bGFuZworICBlbmRpZgorICAiIEEgbGFuZ3VhZ2UgbmFtZSBtdXN0IGJlIGF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzLCBkb24ndCBhY2NlcHQgIkMiCisgIGlmIHN0cmxlbihzOmxhbmcpID4gMQorICAgICIgV2hlbiB0aGUgbGFuZ3VhZ2UgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhcnNldCBhZGQgJ2VuY29kaW5nJworICAgIGlmIHM6bGFuZyA9fiAnXlxhXGEkXHxeXGFcYV9cYVxhJCcKKyAgICAgIGxldCBzOmxhbmcgPSBzOmxhbmcgLiAnLicgLiAmZW5jCisgICAgZW5kaWYKKworICAgICIgV2UgYWx3YXlzIHVzZSBhIGxvd2VyY2FzZSBuYW1lLgorICAgICIgQ2hhbmdlICJpc28tODg1OSIgdG8gImlzb184ODU5IiBhbmQgImlzbzg4NTkiIHRvICJpc29fODg1OSIsIHNvbWUKKyAgICAiIHN5c3RlbXMgYXBwZWFyIHRvIHVzZSB0aGlzLgorICAgICIgQ2hhbmdlIHNwYWNlcyB0byB1bmRlcnNjb3Jlcy4KKyAgICBsZXQgczpsYW5nID0gc3Vic3RpdHV0ZSh0b2xvd2VyKHM6bGFuZyksICdcLmlzby0nLCAiLmlzb18iLCAiIikKKyAgICBsZXQgczpsYW5nID0gc3Vic3RpdHV0ZShzOmxhbmcsICdcLmlzbzg4NTknLCAiLmlzb184ODU5IiwgIiIpCisgICAgbGV0IHM6bGFuZyA9IHN1YnN0aXR1dGUoczpsYW5nLCAiICIsICJfIiwgImciKQorICAgICIgUmVtb3ZlICJAZXVybyIsIG90aGVyd2lzZSAiTENfQUxMPWRlX0RFQGV1cm8gZ3ZpbSIgd2lsbCBzaG93IEVuZ2xpc2ggbWVudXMKKyAgICBsZXQgczpsYW5nID0gc3Vic3RpdHV0ZShzOmxhbmcsICJAZXVybyIsICIiLCAiIikKKyAgICAiIENoYW5nZSAiaXNvXzg4NTktMSIgYW5kICJpc29fODg1OS0xNSIgdG8gImxhdGluMSIsIHdlIGFsd2F5cyB1c2UgdGhlCisgICAgIiBzYW1lIG1lbnUgZmlsZSBmb3IgdGhlbS4KKyAgICBsZXQgczpsYW5nID0gc3Vic3RpdHV0ZShzOmxhbmcsICdpc29fODg1OS0xNVw9JCcsICJsYXRpbjEiLCAiIikKKyAgICBtZW51dHJhbnMgY2xlYXIKKyAgICBleGUgInJ1bnRpbWUhIGxhbmcvbWVudV8iIC4gczpsYW5nIC4gIi52aW0iCisKKyAgICBpZiAhZXhpc3RzKCJkaWRfbWVudV90cmFucyIpCisgICAgICAiIFRoZXJlIGlzIG5vIGV4YWN0IG1hdGNoLCB0cnkgbWF0Y2hpbmcgd2l0aCBhIHdpbGRjYXJkIGFkZGVkCisgICAgICAiIChlLmcuIGZpbmQgbWVudV9kZV9kZS5pc29fODg1OS0xLnZpbSBpZiBzOmxhbmcgPT0gZGVfREUpLgorICAgICAgbGV0IHM6bGFuZyA9IHN1YnN0aXR1dGUoczpsYW5nLCAnXC5bXi5dKicsICIiLCAiIikKKyAgICAgIGV4ZSAicnVudGltZSEgbGFuZy9tZW51XyIgLiBzOmxhbmcgLiAiW15hLXpdKnZpbSIKKworICAgICAgaWYgIWV4aXN0cygiZGlkX21lbnVfdHJhbnMiKSAmJiBzdHJsZW4oJExBTkcpID4gMSAmJiBzOmxhbmcgIX4gJ15lbl91cycKKwkiIE9uIHdpbmRvd3MgbG9jYWxlIG5hbWVzIGFyZSBjb21wbGljYXRlZCwgdHJ5IHVzaW5nICRMQU5HLCBpdCBtaWdodAorCSIgaGF2ZSBiZWVuIHNldCBieSBzZXRfaW5pdF8xKCkuICBCdXQgZG9uJ3QgZG8gdGhpcyBmb3IgImVuIiBvciAiZW5fdXMiLgorCSIgQnV0IGRvbid0IG1hdGNoICJzbG92YWsiIHdoZW4gJExBTkcgaXMgInNsIi4KKwlleGUgInJ1bnRpbWUhIGxhbmcvbWVudV8iIC4gdG9sb3dlcigkTEFORykgLiAiW15hLXpdKnZpbSIKKyAgICAgIGVuZGlmCisgICAgZW5kaWYKKyAgZW5kaWYKK2VuZGlmCisKKworIiBIZWxwIG1lbnUKK2FuIDk5OTkuMTAgJkhlbHAuJk92ZXJ2aWV3PFRhYj48RjE+CTpoZWxwPENSPgorYW4gOTk5OS4yMCAmSGVscC4mVXNlclwgTWFudWFsCQk6aGVscCB1c3JfdG9jPENSPgorYW4gOTk5OS4zMCAmSGVscC4mSG93LXRvXCBsaW5rcwkJOmhlbHAgaG93LXRvPENSPgorYW4gPHNpbGVudD4gOTk5OS40MCAmSGVscC4mRmluZFwuXC5cLgk6Y2FsbCA8U0lEPkhlbHBmaW5kKCk8Q1I+CithbiA5OTk5LjQ1ICZIZWxwLi1zZXAxLQkJCTxOb3A+CithbiA5OTk5LjUwICZIZWxwLiZDcmVkaXRzCQk6aGVscCBjcmVkaXRzPENSPgorYW4gOTk5OS42MCAmSGVscC5DbyZweWluZwkJOmhlbHAgY29weWluZzxDUj4KK2FuIDk5OTkuNzAgJkhlbHAuJlNwb25zb3IvUmVnaXN0ZXIJOmhlbHAgc3BvbnNvcjxDUj4KK2FuIDk5OTkuNzAgJkhlbHAuTyZycGhhbnMJCTpoZWxwIGtjYzxDUj4KK2FuIDk5OTkuNzUgJkhlbHAuLXNlcDItCQkJPE5vcD4KK2FuIDk5OTkuODAgJkhlbHAuJlZlcnNpb24JCTp2ZXJzaW9uPENSPgorYW4gOTk5OS45MCAmSGVscC4mQWJvdXQJCQk6aW50cm88Q1I+CisKK2Z1biEgczpIZWxwZmluZCgpCisgIGlmICFleGlzdHMoImc6bWVudXRyYW5zX2hlbHBfZGlhbG9nIikKKyAgICBsZXQgZzptZW51dHJhbnNfaGVscF9kaWFsb2cgPSAiRW50ZXIgYSBjb21tYW5kIG9yIHdvcmQgdG8gZmluZCBoZWxwIG9uOlxuXG5QcmVwZW5kIGlfIGZvciBJbnB1dCBtb2RlIGNvbW1hbmRzIChlLmcuOiBpX0NUUkwtWClcblByZXBlbmQgY18gZm9yIGNvbW1hbmQtbGluZSBlZGl0aW5nIGNvbW1hbmRzIChlLmcuOiBjXzxEZWw+KVxuUHJlcGVuZCAnIGZvciBhbiBvcHRpb24gbmFtZSAoZS5nLjogJ3NoaWZ0d2lkdGgnKSIKKyAgZW5kaWYKKyAgbGV0IGggPSBpbnB1dGRpYWxvZyhnOm1lbnV0cmFuc19oZWxwX2RpYWxvZykKKyAgaWYgaCAhPSAiIgorICAgIGxldCB2OmVycm1zZyA9ICIiCisgICAgc2lsZW50ISBleGUgImhlbHAgIiAuIGgKKyAgICBpZiB2OmVycm1zZyAhPSAiIgorICAgICAgZWNobyB2OmVycm1zZworICAgIGVuZGlmCisgIGVuZGlmCitlbmRmdW4KKworIiBGaWxlIG1lbnUKK2FuIDEwLjMxMCAmRmlsZS4mT3BlblwuXC5cLjxUYWI+OmUJCTpicm93c2UgY29uZmlybSBlPENSPgorYW4gMTAuMzIwICZGaWxlLlNwJmxpdC1PcGVuXC5cLlwuPFRhYj46c3AJOmJyb3dzZSBzcDxDUj4KK2FuIDEwLjMyMCAmRmlsZS5PcGVuXCBUYWJcLlwuXC48VGFiPjp0YWJuZXcJOmJyb3dzZSB0YWJuZXc8Q1I+CithbiAxMC4zMjUgJkZpbGUuJk5ldzxUYWI+OmVuZXcJCQk6Y29uZmlybSBlbmV3PENSPgorYW4gPHNpbGVudD4gMTAuMzMwICZGaWxlLiZDbG9zZTxUYWI+OmNsb3NlCisJXCA6aWYgd2luaGVpZ2h0KDIpIDwgMCA8QmFyPgorCVwgICBjb25maXJtIGVuZXcgPEJhcj4KKwlcIGVsc2UgPEJhcj4KKwlcICAgY29uZmlybSBjbG9zZSA8QmFyPgorCVwgZW5kaWY8Q1I+CithbiAxMC4zMzUgJkZpbGUuLVNFUDEtCQkJCTxOb3A+CithbiA8c2lsZW50PiAxMC4zNDAgJkZpbGUuJlNhdmU8VGFiPjp3CQk6aWYgZXhwYW5kKCIlIikgPT0gIiI8QmFyPmJyb3dzZSBjb25maXJtIHc8QmFyPmVsc2U8QmFyPmNvbmZpcm0gdzxCYXI+ZW5kaWY8Q1I+CithbiAxMC4zNTAgJkZpbGUuU2F2ZVwgJkFzXC5cLlwuPFRhYj46c2F2CTpicm93c2UgY29uZmlybSBzYXZlYXM8Q1I+CisKK2lmIGhhcygiZGlmZiIpCisgIGFuIDEwLjQwMCAmRmlsZS4tU0VQMi0JCQk8Tm9wPgorICBhbiAxMC40MTAgJkZpbGUuU3BsaXRcICZEaWZmXCB3aXRoXC5cLlwuCTpicm93c2UgdmVydCBkaWZmc3BsaXQ8Q1I+CisgIGFuIDEwLjQyMCAmRmlsZS5TcGxpdFwgUGF0Y2hlZFwgJkJ5XC5cLlwuCTpicm93c2UgdmVydCBkaWZmcGF0Y2g8Q1I+CitlbmRpZgorCitpZiBoYXMoInByaW50ZXIiKQorICBhbiAxMC41MDAgJkZpbGUuLVNFUDMtCQkJPE5vcD4KKyAgYW4gMTAuNTEwICZGaWxlLiZQcmludAkJCTpoYXJkY29weTxDUj4KKyAgdnVubWVudSAgICZGaWxlLiZQcmludAorICB2bm9yZW1lbnUgJkZpbGUuJlByaW50CQkJOmhhcmRjb3B5PENSPgorZWxzZWlmIGhhcygidW5peCIpCisgIGFuIDEwLjUwMCAmRmlsZS4tU0VQMy0JCQk8Tm9wPgorICBhbiAxMC41MTAgJkZpbGUuJlByaW50CQkJOncgIWxwcjxDUj4KKyAgdnVubWVudSAgICZGaWxlLiZQcmludAorICB2bm9yZW1lbnUgJkZpbGUuJlByaW50CQkJOncgIWxwcjxDUj4KK2VuZGlmCithbiAxMC42MDAgJkZpbGUuLVNFUDQtCQkJCTxOb3A+CithbiAxMC42MTAgJkZpbGUuU2EmdmUtRXhpdDxUYWI+OndxYQkJOmNvbmZpcm0gd3FhPENSPgorYW4gMTAuNjIwICZGaWxlLkUmeGl0PFRhYj46cWEJCQk6Y29uZmlybSBxYTxDUj4KKworZnVuYyEgPFNJRD5TZWxlY3RBbGwoKQorICBleGUgIm5vcm0gZ2ciIC4gKCZzbG0gPT0gIiIgPyAiVkciIDogImdIXDxDLU8+RyIpCitlbmRmdW5jCisKK2Z1bmMhIHM6Rm5hbWVFc2NhcGUoZm5hbWUpCisgIGlmIGV4aXN0cygnKmZuYW1lZXNjYXBlJykKKyAgICByZXR1cm4gZm5hbWVlc2NhcGUoYTpmbmFtZSkKKyAgcmV0dXJuIGVzY2FwZShhOmZuYW1lLCAiIFx0XG4qP1t7YCRcXCUjJ1wifCE8IikKK2VuZGZ1bmMKKworIiBFZGl0IG1lbnUKK2FuIDIwLjMxMCAmRWRpdC4mVW5kbzxUYWI+dQkJCXUKK2FuIDIwLjMyMCAmRWRpdC4mUmVkbzxUYWI+XlIJCQk8Qy1SPgorYW4gMjAuMzMwICZFZGl0LlJlcCZlYXQ8VGFiPlwuCQkJLgorCithbiAyMC4zMzUgJkVkaXQuLVNFUDEtCQkJCTxOb3A+Cit2bm9yZW1lbnUgMjAuMzQwICZFZGl0LkN1JnQ8VGFiPiIreAkJIit4Cit2bm9yZW1lbnUgMjAuMzUwICZFZGl0LiZDb3B5PFRhYj4iK3kJCSIreQorY25vcmVtZW51IDIwLjM1MCAmRWRpdC4mQ29weTxUYWI+Iit5CQk8Qy1ZPgorbm5vcmVtZW51IDIwLjM2MCAmRWRpdC4mUGFzdGU8VGFiPiIrZ1AJCSIrZ1AKK2Nub3JlbWVudQkgJkVkaXQuJlBhc3RlPFRhYj4iK2dQCQk8Qy1SPisKK2V4ZSAndm5vcmVtZW51IDxzY3JpcHQ+ICZFZGl0LiZQYXN0ZTxUYWI+IitnUAknIC4gcGFzdGUjcGFzdGVfY21kWyd2J10KK2V4ZSAnaW5vcmVtZW51IDxzY3JpcHQ+ICZFZGl0LiZQYXN0ZTxUYWI+IitnUAknIC4gcGFzdGUjcGFzdGVfY21kWydpJ10KK25ub3JlbWVudSAyMC4zNzAgJkVkaXQuUHV0XCAmQmVmb3JlPFRhYj5bcAlbcAoraW5vcmVtZW51CSAmRWRpdC5QdXRcICZCZWZvcmU8VGFiPltwCTxDLU8+W3AKK25ub3JlbWVudSAyMC4zODAgJkVkaXQuUHV0XCAmQWZ0ZXI8VGFiPl1wCV1wCitpbm9yZW1lbnUJICZFZGl0LlB1dFwgJkFmdGVyPFRhYj5dcAk8Qy1PPl1wCitpZiBoYXMoIndpbjMyIikgfHwgaGFzKCJ3aW4xNiIpCisgIHZub3JlbWVudSAyMC4zOTAgJkVkaXQuJkRlbGV0ZTxUYWI+eAkJeAorZW5kaWYKK25vcmVtZW51ICA8c2NyaXB0PiA8c2lsZW50PiAyMC40MDAgJkVkaXQuJlNlbGVjdFwgQWxsPFRhYj5nZ1ZHCTo8Qy1VPmNhbGwgPFNJRD5TZWxlY3RBbGwoKTxDUj4KK2lub3JlbWVudSA8c2NyaXB0PiA8c2lsZW50PiAyMC40MDAgJkVkaXQuJlNlbGVjdFwgQWxsPFRhYj5nZ1ZHCTxDLU8+OmNhbGwgPFNJRD5TZWxlY3RBbGwoKTxDUj4KK2Nub3JlbWVudSA8c2NyaXB0PiA8c2lsZW50PiAyMC40MDAgJkVkaXQuJlNlbGVjdFwgQWxsPFRhYj5nZ1ZHCTxDLVU+Y2FsbCA8U0lEPlNlbGVjdEFsbCgpPENSPgorCithbiAyMC40MDUJICZFZGl0Li1TRVAyLQkJCQk8Tm9wPgoraWYgaGFzKCJ3aW4zMiIpICB8fCBoYXMoIndpbjE2IikgfHwgaGFzKCJndWlfZ3RrIikgfHwgaGFzKCJndWlfa2RlIikgfHwgaGFzKCJndWlfbW90aWYiKQorICBhbiAyMC40MTAJICZFZGl0LiZGaW5kXC5cLlwuCQkJOnByb21wdGZpbmQ8Q1I+CisgIHZ1bm1lbnUJICZFZGl0LiZGaW5kXC5cLlwuCisgIHZub3JlbWVudSA8c2lsZW50PgkgJkVkaXQuJkZpbmRcLlwuXC4JCXk6cHJvbXB0ZmluZCA8Qy1SPj08U0lEPkZpeEZUZXh0KCk8Q1I+PENSPgorICBhbiAyMC40MjAJICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2VcLlwuXC4JOnByb21wdHJlcGw8Q1I+CisgIHZ1bm1lbnUJICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2VcLlwuXC4KKyAgdm5vcmVtZW51IDxzaWxlbnQ+CSAmRWRpdC5GaW5kXCBhbmRcIFJlcCZsYWNlXC5cLlwuIHk6cHJvbXB0cmVwbCA8Qy1SPj08U0lEPkZpeEZUZXh0KCk8Q1I+PENSPgorZWxzZQorICBhbiAyMC40MTAJICZFZGl0LiZGaW5kPFRhYj4vCQkJLworICBhbiAyMC40MjAJICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2U8VGFiPjolcwk6JXMvCisgIHZ1bm1lbnUJICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2U8VGFiPjolcworICB2bm9yZW1lbnUJICZFZGl0LkZpbmRcIGFuZFwgUmVwJmxhY2U8VGFiPjpzCTpzLworZW5kaWYKKworYW4gMjAuNDI1CSAmRWRpdC4tU0VQMy0JCQkJPE5vcD4KK2FuIDIwLjQzMAkgJkVkaXQuU2V0dGluZ3NcICZXaW5kb3cJCTpvcHRpb25zPENSPgorYW4gMjAuNDM1CSAmRWRpdC5TdGFydHVwXCAmU2V0dGluZ3MJCTpjYWxsIDxTSUQ+RWRpdFZpbXJjKCk8Q1I+CisKK2Z1biEgczpFZGl0VmltcmMoKQorICBpZiAkTVlWSU1SQyAhPSAnJworICAgIGxldCBmbmFtZSA9ICIkTVlWSU1SQyIKKyAgZWxzZWlmIGhhcygid2luMzIiKSB8fCBoYXMoImRvczMyIikgfHwgaGFzKCJkb3MxNiIpIHx8IGhhcygib3MyIikKKyAgICBpZiAkSE9NRSAhPSAnJworICAgICAgbGV0IGZuYW1lID0gIiRIT01FL192aW1yYyIKKyAgICBlbHNlCisgICAgICBsZXQgZm5hbWUgPSAiJFZJTS9fdmltcmMiCisgICAgZW5kaWYKKyAgZWxzZWlmIGhhcygiYW1pZ2EiKQorICAgIGxldCBmbmFtZSA9ICJzOi52aW1yYyIKKyAgZWxzZQorICAgIGxldCBmbmFtZSA9ICIkSE9NRS8udmltcmMiCisgIGVuZGlmCisgIGxldCBmbmFtZSA9IHM6Rm5hbWVFc2NhcGUoZm5hbWUpCisgIGlmICZtb2QKKyAgICBleGUgInNwbGl0ICIgLiBmbmFtZQorICBlbHNlCisgICAgZXhlICJlZGl0ICIgLiBmbmFtZQorICBlbmRpZgorZW5kZnVuCisKK2Z1biEgczpGaXhGVGV4dCgpCisgICIgRml4IHRleHQgaW4gbmFtZWxlc3MgcmVnaXN0ZXIgdG8gYmUgdXNlZCB3aXRoIDpwcm9tcHRmaW5kLgorICByZXR1cm4gc3Vic3RpdHV0ZShAIiwgIltcclxuXSIsICdcXG4nLCAnZycpCitlbmRmdW4KKworIiBFZGl0L0dsb2JhbCBTZXR0aW5ncworYW4gMjAuNDQwLjEwMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcIFBhdHRlcm5cICZIaWdobGlnaHQ8VGFiPjpzZXRcIGhscyEJOnNldCBobHMhIGhscz88Q1I+CithbiAyMC40NDAuMTEwICZFZGl0LiZHbG9iYWxcIFNldHRpbmdzLlRvZ2dsZVwgJklnbm9yZS1jYXNlPFRhYj46c2V0XCBpYyEJOnNldCBpYyEgaWM/PENSPgorYW4gMjAuNDQwLjExMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcICZTaG93bWF0Y2g8VGFiPjpzZXRcIHNtIQk6c2V0IHNtISBzbT88Q1I+CisKK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgMVwgIDpzZXQgc289MTxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgMlwgIDpzZXQgc289MjxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgM1wgIDpzZXQgc289MzxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgNFwgIDpzZXQgc289NDxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgNVwgIDpzZXQgc289NTxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgN1wgIDpzZXQgc289NzxDUj4KK2FuIDIwLjQ0MC4xMjAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJkNvbnRleHRcIGxpbmVzLlwgMTBcICA6c2V0IHNvPTEwPENSPgorYW4gMjAuNDQwLjEyMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy4mQ29udGV4dFwgbGluZXMuXCAxMDBcICA6c2V0IHNvPTEwMDxDUj4KKworYW4gMjAuNDQwLjEzMC40MCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy4mVmlydHVhbFwgRWRpdC5OZXZlciA6c2V0IHZlPTxDUj4KK2FuIDIwLjQ0MC4xMzAuNTAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJlZpcnR1YWxcIEVkaXQuQmxvY2tcIFNlbGVjdGlvbiA6c2V0IHZlPWJsb2NrPENSPgorYW4gMjAuNDQwLjEzMC42MCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy4mVmlydHVhbFwgRWRpdC5JbnNlcnRcIG1vZGUgOnNldCB2ZT1pbnNlcnQ8Q1I+CithbiAyMC40NDAuMTMwLjcwICZFZGl0LiZHbG9iYWxcIFNldHRpbmdzLiZWaXJ0dWFsXCBFZGl0LkJsb2NrXCBhbmRcIEluc2VydCA6c2V0IHZlPWJsb2NrLGluc2VydDxDUj4KK2FuIDIwLjQ0MC4xMzAuODAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuJlZpcnR1YWxcIEVkaXQuQWx3YXlzIDpzZXQgdmU9YWxsPENSPgorYW4gMjAuNDQwLjE0MCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcIEluc2VydFwgJk1vZGU8VGFiPjpzZXRcIGltIQk6c2V0IGltITxDUj4KK2FuIDIwLjQ0MC4xNDUgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuVG9nZ2xlXCBWaVwgQyZvbXBhdGlibGU8VGFiPjpzZXRcIGNwIQk6c2V0IGNwITxDUj4KK2FuIDxzaWxlbnQ+IDIwLjQ0MC4xNTAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuU2VhcmNoXCAmUGF0aFwuXC5cLiAgOmNhbGwgPFNJRD5TZWFyY2hQKCk8Q1I+CithbiA8c2lsZW50PiAyMC40NDAuMTYwICZFZGl0LiZHbG9iYWxcIFNldHRpbmdzLlRhJmdcIEZpbGVzXC5cLlwuICA6Y2FsbCA8U0lEPlRhZ0ZpbGVzKCk8Q1I+CisiCisiIEdVSSBvcHRpb25zCithbiAyMC40NDAuMzAwICZFZGl0LiZHbG9iYWxcIFNldHRpbmdzLi1TRVAxLQkJCQk8Tm9wPgorYW4gPHNpbGVudD4gMjAuNDQwLjMxMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcICZUb29sYmFyCQk6Y2FsbCA8U0lEPlRvZ2dsZUd1aU9wdGlvbigiVCIpPENSPgorYW4gPHNpbGVudD4gMjAuNDQwLjMyMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcICZCb3R0b21cIFNjcm9sbGJhciA6Y2FsbCA8U0lEPlRvZ2dsZUd1aU9wdGlvbigiYiIpPENSPgorYW4gPHNpbGVudD4gMjAuNDQwLjMzMCAmRWRpdC4mR2xvYmFsXCBTZXR0aW5ncy5Ub2dnbGVcICZMZWZ0XCBTY3JvbGxiYXIJOmNhbGwgPFNJRD5Ub2dnbGVHdWlPcHRpb24oImwiKTxDUj4KK2FuIDxzaWxlbnQ+IDIwLjQ0MC4zNDAgJkVkaXQuJkdsb2JhbFwgU2V0dGluZ3MuVG9nZ2xlXCAmUmlnaHRcIFNjcm9sbGJhciA6Y2FsbCA8U0lEPlRvZ2dsZUd1aU9wdGlvbigiciIpPENSPgorCitmdW4hIHM6U2VhcmNoUCgpCisgIGlmICFleGlzdHMoImc6bWVudXRyYW5zX3BhdGhfZGlhbG9nIikKKyAgICBsZXQgZzptZW51dHJhbnNfcGF0aF9kaWFsb2cgPSAiRW50ZXIgc2VhcmNoIHBhdGggZm9yIGZpbGVzLlxuU2VwYXJhdGUgZGlyZWN0b3J5IG5hbWVzIHdpdGggYSBjb21tYS4iCisgIGVuZGlmCisgIGxldCBuID0gaW5wdXRkaWFsb2coZzptZW51dHJhbnNfcGF0aF9kaWFsb2csIHN1YnN0aXR1dGUoJnBhdGgsICdcXCAnLCAnICcsICdnJykpCisgIGlmIG4gIT0gIiIKKyAgICBsZXQgJnBhdGggPSBzdWJzdGl0dXRlKG4sICcgJywgJ1xcICcsICdnJykKKyAgZW5kaWYKK2VuZGZ1bgorCitmdW4hIHM6VGFnRmlsZXMoKQorICBpZiAhZXhpc3RzKCJnOm1lbnV0cmFuc190YWdzX2RpYWxvZyIpCisgICAgbGV0IGc6bWVudXRyYW5zX3RhZ3NfZGlhbG9nID0gIkVudGVyIG5hbWVzIG9mIHRhZyBmaWxlcy5cblNlcGFyYXRlIHRoZSBuYW1lcyB3aXRoIGEgY29tbWEuIgorICBlbmRpZgorICBsZXQgbiA9IGlucHV0ZGlhbG9nKGc6bWVudXRyYW5zX3RhZ3NfZGlhbG9nLCBzdWJzdGl0dXRlKCZ0YWdzLCAnXFwgJywgJyAnLCAnZycpKQorICBpZiBuICE9ICIiCisgICAgbGV0ICZ0YWdzID0gc3Vic3RpdHV0ZShuLCAnICcsICdcXCAnLCAnZycpCisgIGVuZGlmCitlbmRmdW4KKworZnVuISBzOlRvZ2dsZUd1aU9wdGlvbihvcHRpb24pCisgICAgIiBJZiBhOm9wdGlvbiBpcyBhbHJlYWR5IHNldCBpbiBndWlvcHRpb25zLCB0aGVuIHdlIHdhbnQgdG8gcmVtb3ZlIGl0CisgICAgaWYgbWF0Y2goJmd1aW9wdGlvbnMsICJcXEMiIC4gYTpvcHRpb24pID4gLTEKKwlleGVjICJzZXQgZ28tPSIgLiBhOm9wdGlvbgorICAgIGVsc2UKKwlleGVjICJzZXQgZ28rPSIgLiBhOm9wdGlvbgorICAgIGVuZGlmCitlbmRmdW4KKworIiBFZGl0L0ZpbGUgU2V0dGluZ3MKKworIiBCb29sZWFuIG9wdGlvbnMKK2FuIDIwLjQ0MC4xMDAgJkVkaXQuRiZpbGVcIFNldHRpbmdzLlRvZ2dsZVwgTGluZVwgJk51bWJlcmluZzxUYWI+OnNldFwgbnUhCTpzZXQgbnUhIG51PzxDUj4KK2FuIDIwLjQ0MC4xMTAgJkVkaXQuRiZpbGVcIFNldHRpbmdzLlRvZ2dsZVwgJkxpc3RcIE1vZGU8VGFiPjpzZXRcIGxpc3QhCTpzZXQgbGlzdCEgbGlzdD88Q1I+CithbiAyMC40NDAuMTIwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy5Ub2dnbGVcIExpbmVcICZXcmFwPFRhYj46c2V0XCB3cmFwIQk6c2V0IHdyYXAhIHdyYXA/PENSPgorYW4gMjAuNDQwLjEzMCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuVG9nZ2xlXCBXJnJhcFwgYXRcIHdvcmQ8VGFiPjpzZXRcIGxiciEJOnNldCBsYnIhIGxicj88Q1I+CithbiAyMC40NDAuMTYwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy5Ub2dnbGVcICZleHBhbmQtdGFiPFRhYj46c2V0XCBldCEJOnNldCBldCEgZXQ/PENSPgorYW4gMjAuNDQwLjE3MCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuVG9nZ2xlXCAmYXV0by1pbmRlbnQ8VGFiPjpzZXRcIGFpIQk6c2V0IGFpISBhaT88Q1I+CithbiAyMC40NDAuMTgwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy5Ub2dnbGVcICZDLWluZGVudGluZzxUYWI+OnNldFwgY2luIQk6c2V0IGNpbiEgY2luPzxDUj4KKworIiBvdGhlciBvcHRpb25zCithbiAyMC40NDAuNjAwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4tU0VQMi0JCTxOb3A+CithbiAyMC40NDAuNjEwLjIwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC4yCTpzZXQgc3c9MiBzdz88Q1I+CithbiAyMC40NDAuNjEwLjMwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC4zCTpzZXQgc3c9MyBzdz88Q1I+CithbiAyMC40NDAuNjEwLjQwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC40CTpzZXQgc3c9NCBzdz88Q1I+CithbiAyMC40NDAuNjEwLjUwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC41CTpzZXQgc3c9NSBzdz88Q1I+CithbiAyMC40NDAuNjEwLjYwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC42CTpzZXQgc3c9NiBzdz88Q1I+CithbiAyMC40NDAuNjEwLjgwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy4mU2hpZnR3aWR0aC44CTpzZXQgc3c9OCBzdz88Q1I+CisKK2FuIDIwLjQ0MC42MjAuMjAgJkVkaXQuRiZpbGVcIFNldHRpbmdzLlNvZnRcICZUYWJzdG9wLjIJOnNldCBzdHM9MiBzdHM/PENSPgorYW4gMjAuNDQwLjYyMC4zMCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuU29mdFwgJlRhYnN0b3AuMwk6c2V0IHN0cz0zIHN0cz88Q1I+CithbiAyMC40NDAuNjIwLjQwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy5Tb2Z0XCAmVGFic3RvcC40CTpzZXQgc3RzPTQgc3RzPzxDUj4KK2FuIDIwLjQ0MC42MjAuNTAgJkVkaXQuRiZpbGVcIFNldHRpbmdzLlNvZnRcICZUYWJzdG9wLjUJOnNldCBzdHM9NSBzdHM/PENSPgorYW4gMjAuNDQwLjYyMC42MCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuU29mdFwgJlRhYnN0b3AuNgk6c2V0IHN0cz02IHN0cz88Q1I+CithbiAyMC40NDAuNjIwLjgwICZFZGl0LkYmaWxlXCBTZXR0aW5ncy5Tb2Z0XCAmVGFic3RvcC44CTpzZXQgc3RzPTggc3RzPzxDUj4KKworYW4gPHNpbGVudD4gMjAuNDQwLjYzMCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuVGUmeHRcIFdpZHRoXC5cLlwuICA6Y2FsbCA8U0lEPlRleHRXaWR0aCgpPENSPgorYW4gPHNpbGVudD4gMjAuNDQwLjY0MCAmRWRpdC5GJmlsZVwgU2V0dGluZ3MuJkZpbGVcIEZvcm1hdFwuXC5cLiAgOmNhbGwgPFNJRD5GaWxlRm9ybWF0KCk8Q1I+CitmdW4hIHM6VGV4dFdpZHRoKCkKKyAgaWYgIWV4aXN0cygiZzptZW51dHJhbnNfdGV4dHdpZHRoX2RpYWxvZyIpCisgICAgbGV0IGc6bWVudXRyYW5zX3RleHR3aWR0aF9kaWFsb2cgPSAiRW50ZXIgbmV3IHRleHQgd2lkdGggKDAgdG8gZGlzYWJsZSBmb3JtYXR0aW5nKTogIgorICBlbmRpZgorICBsZXQgbiA9IGlucHV0ZGlhbG9nKGc6bWVudXRyYW5zX3RleHR3aWR0aF9kaWFsb2csICZ0dykKKyAgaWYgbiAhPSAiIgorICAgICIgcmVtb3ZlIGxlYWRpbmcgemVyb3MgdG8gYXZvaWQgaXQgYmVpbmcgdXNlZCBhcyBhbiBvY3RhbCBudW1iZXIKKyAgICBsZXQgJnR3ID0gc3Vic3RpdHV0ZShuLCAiXjAqIiwgIiIsICIiKQorICBlbmRpZgorZW5kZnVuCisKK2Z1biEgczpGaWxlRm9ybWF0KCkKKyAgaWYgIWV4aXN0cygiZzptZW51dHJhbnNfZmlsZWZvcm1hdF9kaWFsb2ciKQorICAgIGxldCBnOm1lbnV0cmFuc19maWxlZm9ybWF0X2RpYWxvZyA9ICJTZWxlY3QgZm9ybWF0IGZvciB3cml0aW5nIHRoZSBmaWxlIgorICBlbmRpZgorICBpZiAhZXhpc3RzKCJnOm1lbnV0cmFuc19maWxlZm9ybWF0X2Nob2ljZXMiKQorICAgIGxldCBnOm1lbnV0cmFuc19maWxlZm9ybWF0X2Nob2ljZXMgPSAiJlVuaXhcbiZEb3NcbiZNYWNcbiZDYW5jZWwiCisgIGVuZGlmCisgIGlmICZmZiA9PSAiZG9zIgorICAgIGxldCBkZWYgPSAyCisgIGVsc2VpZiAmZmYgPT0gIm1hYyIKKyAgICBsZXQgZGVmID0gMworICBlbHNlCisgICAgbGV0IGRlZiA9IDEKKyAgZW5kaWYKKyAgbGV0IG4gPSBjb25maXJtKGc6bWVudXRyYW5zX2ZpbGVmb3JtYXRfZGlhbG9nLCBnOm1lbnV0cmFuc19maWxlZm9ybWF0X2Nob2ljZXMsIGRlZiwgIlF1ZXN0aW9uIikKKyAgaWYgbiA9PSAxCisgICAgc2V0IGZmPXVuaXgKKyAgZWxzZWlmIG4gPT0gMgorICAgIHNldCBmZj1kb3MKKyAgZWxzZWlmIG4gPT0gMworICAgIHNldCBmZj1tYWMKKyAgZW5kaWYKK2VuZGZ1bgorCisiIFNldHVwIHRoZSBFZGl0LkNvbG9yIFNjaGVtZSBzdWJtZW51CitsZXQgczpuID0gZ2xvYnBhdGgoJnJ1bnRpbWVwYXRoLCAiY29sb3JzLyoudmltIikKK2xldCBzOmlkeCA9IDEwMAord2hpbGUgc3RybGVuKHM6bikgPiAwCisgIGxldCBzOmkgPSBzdHJpZHgoczpuLCAiXG4iKQorICBpZiBzOmkgPCAwCisgICAgbGV0IHM6bmFtZSA9IHM6bgorICAgIGxldCBzOm4gPSAiIgorICBlbHNlCisgICAgbGV0IHM6bmFtZSA9IHN0cnBhcnQoczpuLCAwLCBzOmkpCisgICAgbGV0IHM6biA9IHN0cnBhcnQoczpuLCBzOmkgKyAxLCAxOTk5OSkKKyAgZW5kaWYKKyAgIiBJZ25vcmUgY2FzZSBmb3IgVk1TIGFuZCB3aW5kb3dzCisgIGxldCBzOm5hbWUgPSBzdWJzdGl0dXRlKHM6bmFtZSwgJ1xjLipbL1xcOlxdXVwoW14vXFw6XSpcKVwudmltJywgJ1wxJywgJycpCisgIGV4ZSAiYW4gMjAuNDUwLiIgLiBzOmlkeCAuICcgJkVkaXQuQyZvbG9yXCBTY2hlbWUuJyAuIHM6bmFtZSAuICIgOmNvbG9ycyAiIC4gczpuYW1lIC4gIjxDUj4iCisgIHVubGV0IHM6bmFtZQorICB1bmxldCBzOmkKKyAgbGV0IHM6aWR4ID0gczppZHggKyAxMAorZW5kd2hpbGUKK3VubGV0IHM6bgordW5sZXQgczppZHgKKworIiBTZXR1cCB0aGUgRWRpdC5LZXltYXAgc3VibWVudQoraWYgaGFzKCJrZXltYXAiKQorICBsZXQgczpuID0gZ2xvYnBhdGgoJnJ1bnRpbWVwYXRoLCAia2V5bWFwLyoudmltIikKKyAgaWYgczpuICE9ICIiCisgICAgbGV0IHM6aWR4ID0gMTAwCisgICAgYW4gMjAuNDYwLjkwICZFZGl0LiZLZXltYXAuTm9uZSA6c2V0IGtleW1hcD08Q1I+CisgICAgd2hpbGUgc3RybGVuKHM6bikgPiAwCisgICAgICBsZXQgczppID0gc3RyaWR4KHM6biwgIlxuIikKKyAgICAgIGlmIHM6aSA8IDAKKwlsZXQgczpuYW1lID0gczpuCisJbGV0IHM6biA9ICIiCisgICAgICBlbHNlCisJbGV0IHM6bmFtZSA9IHN0cnBhcnQoczpuLCAwLCBzOmkpCisJbGV0IHM6biA9IHN0cnBhcnQoczpuLCBzOmkgKyAxLCAxOTk5OSkKKyAgICAgIGVuZGlmCisgICAgICAiIElnbm9yZSBjYXNlIGZvciBWTVMgYW5kIHdpbmRvd3MKKyAgICAgIGxldCBzOm5hbWUgPSBzdWJzdGl0dXRlKHM6bmFtZSwgJ1xjLipbL1xcOlxdXVwoW14vXFw6X10qXClcKF9bMC05YS16QS1aLV0qXClcPVwudmltJywgJ1wxJywgJycpCisgICAgICBleGUgImFuIDIwLjQ2MC4iIC4gczppZHggLiAnICZFZGl0LiZLZXltYXAuJyAuIHM6bmFtZSAuICIgOnNldCBrZXltYXA9IiAuIHM6bmFtZSAuICI8Q1I+IgorICAgICAgdW5sZXQgczpuYW1lCisgICAgICB1bmxldCBzOmkKKyAgICAgIGxldCBzOmlkeCA9IHM6aWR4ICsgMTAKKyAgICBlbmR3aGlsZQorICAgIHVubGV0IHM6aWR4CisgIGVuZGlmCisgIHVubGV0IHM6bgorZW5kaWYKK2lmIGhhcygid2luMzIiKSB8fCBoYXMoIndpbjE2IikgfHwgaGFzKCJndWlfbW90aWYiKSB8fCBoYXMoImd1aV9ndGsiKSB8fCBoYXMoImd1aV9rZGUiKSB8fCBoYXMoImd1aV9waG90b24iKSB8fCBoYXMoImd1aV9tYWMiKQorICBhbiAyMC40NzAgJkVkaXQuU2VsZWN0XCBGbyZudFwuXC5cLgk6c2V0IGd1aWZvbnQ9KjxDUj4KK2VuZGlmCisKKyIgUHJvZ3JhbW1pbmcgbWVudQoraWYgIWV4aXN0cygiZzpjdGFnc19jb21tYW5kIikKKyAgaWYgaGFzKCJ2bXMiKQorICAgIGxldCBnOmN0YWdzX2NvbW1hbmQgPSAibWMgdmltOmN0YWdzICouKiIKKyAgZWxzZQorICAgIGxldCBnOmN0YWdzX2NvbW1hbmQgPSAiY3RhZ3MgLVIgLiIKKyAgZW5kaWYKK2VuZGlmCisKK2FuIDQwLjMwMCAmVG9vbHMuJkp1bXBcIHRvXCB0aGlzXCB0YWc8VGFiPmdeXQlnPEMtXT4KK3Z1bm1lbnUgJlRvb2xzLiZKdW1wXCB0b1wgdGhpc1wgdGFnPFRhYj5nXl0KK3Zub3JlbWVudSAmVG9vbHMuJkp1bXBcIHRvXCB0aGlzXCB0YWc8VGFiPmdeXQlnPEMtXT4KK2FuIDQwLjMxMCAmVG9vbHMuSnVtcFwgJmJhY2s8VGFiPl5UCQk8Qy1UPgorYW4gNDAuMzIwICZUb29scy5CdWlsZFwgJlRhZ3NcIEZpbGUJCTpleGUgIiEiIC4gZzpjdGFnc19jb21tYW5kPENSPgorCitpZiBoYXMoImZvbGRpbmciKSB8fCBoYXMoInNwZWxsIikKKyAgYW4gNDAuMzMwICZUb29scy4tU0VQMS0JCQkJCQk8Tm9wPgorZW5kaWYKKworIiBUb29scy5TcGVsbGluZyBNZW51CitpZiBoYXMoInNwZWxsIikKKyAgYW4gNDAuMzM1LjExMCAmVG9vbHMuJlNwZWxsaW5nLiZTcGVsbFwgQ2hlY2tcIE9uCQk6c2V0IHNwZWxsPENSPgorICBhbiA0MC4zMzUuMTIwICZUb29scy4mU3BlbGxpbmcuU3BlbGxcIENoZWNrXCAmT2ZmCQk6c2V0IG5vc3BlbGw8Q1I+CisgIGFuIDQwLjMzNS4xMzAgJlRvb2xzLiZTcGVsbGluZy5Ub1wgJk5leHRcIGVycm9yPFRhYj5dcwldcworICBhbiA0MC4zMzUuMTMwICZUb29scy4mU3BlbGxpbmcuVG9cICZQcmV2aW91c1wgZXJyb3I8VGFiPltzCVtzCisgIGFuIDQwLjMzNS4xNDAgJlRvb2xzLiZTcGVsbGluZy5TdWdnZXN0XCAmQ29ycmVjdGlvbnM8VGFiPno9CXo9CisgIGFuIDQwLjMzNS4xNTAgJlRvb2xzLiZTcGVsbGluZy4mUmVwZWF0XCBjb3JyZWN0aW9uPFRhYj46c3BlbGxyZXBhbGwJOnNwZWxscmVwYWxsPENSPgorICBhbiA0MC4zMzUuMjAwICZUb29scy4mU3BlbGxpbmcuLVNFUDEtCQkJCTxOb3A+CisgIGFuIDQwLjMzNS4yMTAgJlRvb2xzLiZTcGVsbGluZy5TZXRcIGxhbmd1YWdlXCB0b1wgImVuIgk6c2V0IHNwbD1lbiBzcGVsbDxDUj4KKyAgYW4gNDAuMzM1LjIyMCAmVG9vbHMuJlNwZWxsaW5nLlNldFwgbGFuZ3VhZ2VcIHRvXCAiZW5fYXUiCTpzZXQgc3BsPWVuX2F1IHNwZWxsPENSPgorICBhbiA0MC4zMzUuMjMwICZUb29scy4mU3BlbGxpbmcuU2V0XCBsYW5ndWFnZVwgdG9cICJlbl9jYSIJOnNldCBzcGw9ZW5fY2Egc3BlbGw8Q1I+CisgIGFuIDQwLjMzNS4yNDAgJlRvb2xzLiZTcGVsbGluZy5TZXRcIGxhbmd1YWdlXCB0b1wgImVuX2diIgk6c2V0IHNwbD1lbl9nYiBzcGVsbDxDUj4KKyAgYW4gNDAuMzM1LjI1MCAmVG9vbHMuJlNwZWxsaW5nLlNldFwgbGFuZ3VhZ2VcIHRvXCAiZW5fbnoiCTpzZXQgc3BsPWVuX256IHNwZWxsPENSPgorICBhbiA0MC4zMzUuMjYwICZUb29scy4mU3BlbGxpbmcuU2V0XCBsYW5ndWFnZVwgdG9cICJlbl91cyIJOnNldCBzcGw9ZW5fdXMgc3BlbGw8Q1I+CisgIGFuIDxzaWxlbnQ+IDQwLjMzNS4yNzAgJlRvb2xzLiZTcGVsbGluZy4mRmluZFwgTW9yZVwgTGFuZ3VhZ2VzCTpjYWxsIDxTSUQ+U3BlbGxMYW5nKCk8Q1I+CisKKyAgbGV0IHM6dW5kb19zcGVsbGFuZyA9IFsnYXVuICZUb29scy4mU3BlbGxpbmcuJkZpbmRcIE1vcmVcIExhbmd1YWdlcyddCisgIGZ1bmMhIHM6U3BlbGxMYW5nKCkKKyAgICBmb3IgY21kIGluIHM6dW5kb19zcGVsbGFuZworICAgICAgZXhlICJzaWxlbnQhICIgLiBjbWQKKyAgICBlbmRmb3IKKyAgICBsZXQgczp1bmRvX3NwZWxsYW5nID0gW10KKworICAgIGlmICZlbmMgPT0gImlzby04ODU5LTE1IgorICAgICAgbGV0IGVuYyA9ICJsYXRpbjEiCisgICAgZWxzZQorICAgICAgbGV0IGVuYyA9ICZlbmMKKyAgICBlbmRpZgorCisgICAgbGV0IGZvdW5kID0gMAorICAgIGxldCBzID0gZ2xvYnBhdGgoJnJ0cCwgInNwZWxsLyouIiAuIGVuYyAuICIuc3BsIikKKyAgICBpZiBzICE9ICIiCisgICAgICBsZXQgbiA9IDMwMAorICAgICAgZm9yIGYgaW4gc3BsaXQocywgIlxuIikKKwlsZXQgbm0gPSBzdWJzdGl0dXRlKGYsICcuKnNwZWxsWy9cXF1cKC4uXClcLlteL1xcXSpcLnNwbCcsICdcMScsICIiKQorCWlmIG5tICE9ICJlbiIgJiYgbm0gIX4gJy8nCisJICBsZXQgZm91bmQgKz0gMQorCSAgbGV0IG1lbnVuYW1lID0gJyZUb29scy4mU3BlbGxpbmcuU2V0XCBsYW5ndWFnZVwgdG9cICInIC4gbm0gLiAnIicKKwkgIGV4ZSAnYW4gNDAuMzM1LicgLiBuIC4gJyAnIC4gbWVudW5hbWUgLiAnIDpzZXQgc3BsPScgLiBubSAuICcgc3BlbGw8Q1I+JworCSAgbGV0IHM6dW5kb19zcGVsbGFuZyArPSBbJ2F1biAnIC4gbWVudW5hbWVdCisJZW5kaWYKKwlsZXQgbiArPSAxMAorICAgICAgZW5kZm9yCisgICAgZW5kaWYKKyAgICBpZiBmb3VuZCA9PSAwCisgICAgICBlY2hvbXNnICJDb3VsZCBub3QgZmluZCBvdGhlciBzcGVsbCBmaWxlcyIKKyAgICBlbHNlaWYgZm91bmQgPT0gMQorICAgICAgZWNob21zZyAiRm91bmQgc3BlbGwgZmlsZSAiIC4gbm0KKyAgICBlbHNlCisgICAgICBlY2hvbXNnICJGb3VuZCAiIC4gZm91bmQgLiAiIG1vcmUgc3BlbGwgZmlsZXMiCisgICAgZW5kaWYKKyAgICAiIE5lZWQgdG8gcmVkbyB0aGlzIHdoZW4gJ2VuY29kaW5nJyBpcyBjaGFuZ2VkLgorICAgIGF1Z3JvdXAgc3BlbGxtZW51CisgICAgYXUhIEVuY29kaW5nQ2hhbmdlZCAqIGNhbGwgPFNJRD5TcGVsbExhbmcoKQorICAgIGF1Z3JvdXAgRU5ECisgIGVuZGZ1bgorCitlbmRpZgorCisiIFRvb2xzLkZvbGQgTWVudQoraWYgaGFzKCJmb2xkaW5nIikKKyAgIiBvcGVuIGNsb3NlIGZvbGRzCisgIGFuIDQwLjM0MC4xMTAgJlRvb2xzLiZGb2xkaW5nLiZFbmFibGUvRGlzYWJsZVwgZm9sZHM8VGFiPnppCQl6aQorICBhbiA0MC4zNDAuMTIwICZUb29scy4mRm9sZGluZy4mVmlld1wgQ3Vyc29yXCBMaW5lPFRhYj56dgkJenYKKyAgYW4gNDAuMzQwLjEyMCAmVG9vbHMuJkZvbGRpbmcuVmllJndcIEN1cnNvclwgTGluZVwgb25seTxUYWI+ek16eAl6TXp4CisgIGFuIDQwLjM0MC4xMzAgJlRvb2xzLiZGb2xkaW5nLkMmbG9zZVwgbW9yZVwgZm9sZHM8VGFiPnptCQl6bQorICBhbiA0MC4zNDAuMTQwICZUb29scy4mRm9sZGluZy4mQ2xvc2VcIGFsbFwgZm9sZHM8VGFiPnpNCQl6TQorICBhbiA0MC4zNDAuMTUwICZUb29scy4mRm9sZGluZy5PJnBlblwgbW9yZVwgZm9sZHM8VGFiPnpyCQl6cgorICBhbiA0MC4zNDAuMTYwICZUb29scy4mRm9sZGluZy4mT3BlblwgYWxsXCBmb2xkczxUYWI+elIJCXpSCisgICIgZm9sZCBtZXRob2QKKyAgYW4gNDAuMzQwLjIwMCAmVG9vbHMuJkZvbGRpbmcuLVNFUDEtCQkJPE5vcD4KKyAgYW4gNDAuMzQwLjIxMCAmVG9vbHMuJkZvbGRpbmcuRm9sZFwgTWV0JmhvZC5NJmFudWFsCTpzZXQgZmRtPW1hbnVhbDxDUj4KKyAgYW4gNDAuMzQwLjIxMCAmVG9vbHMuJkZvbGRpbmcuRm9sZFwgTWV0JmhvZC5JJm5kZW50CTpzZXQgZmRtPWluZGVudDxDUj4KKyAgYW4gNDAuMzQwLjIxMCAmVG9vbHMuJkZvbGRpbmcuRm9sZFwgTWV0JmhvZC5FJnhwcmVzc2lvbiA6c2V0IGZkbT1leHByPENSPgorICBhbiA0MC4zNDAuMjEwICZUb29scy4mRm9sZGluZy5Gb2xkXCBNZXQmaG9kLlMmeW50YXgJOnNldCBmZG09c3ludGF4PENSPgorICBhbiA0MC4zNDAuMjEwICZUb29scy4mRm9sZGluZy5Gb2xkXCBNZXQmaG9kLiZEaWZmCTpzZXQgZmRtPWRpZmY8Q1I+CisgIGFuIDQwLjM0MC4yMTAgJlRvb2xzLiZGb2xkaW5nLkZvbGRcIE1ldCZob2QuTWEmcmtlcgk6c2V0IGZkbT1tYXJrZXI8Q1I+CisgICIgY3JlYXRlIGFuZCBkZWxldGUgZm9sZHMKKyAgdm5vcmVtZW51IDQwLjM0MC4yMjAgJlRvb2xzLiZGb2xkaW5nLkNyZWF0ZVwgJkZvbGQ8VGFiPnpmCXpmCisgIGFuIDQwLjM0MC4yMzAgJlRvb2xzLiZGb2xkaW5nLiZEZWxldGVcIEZvbGQ8VGFiPnpkCQl6ZAorICBhbiA0MC4zNDAuMjQwICZUb29scy4mRm9sZGluZy5EZWxldGVcICZBbGxcIEZvbGRzPFRhYj56RAl6RAorICAiIG1vdmluZyBhcm91bmQgaW4gZm9sZHMKKyAgYW4gNDAuMzQwLjMwMCAmVG9vbHMuJkZvbGRpbmcuLVNFUDItCQkJCTxOb3A+CisgIGFuIDQwLjM0MC4zMTAuMTAgJlRvb2xzLiZGb2xkaW5nLkZvbGRcIGNvbCZ1bW5cIHdpZHRoLlwgJjBcIAk6c2V0IGZkYz0wPENSPgorICBhbiA0MC4zNDAuMzEwLjIwICZUb29scy4mRm9sZGluZy5Gb2xkXCBjb2wmdW1uXCB3aWR0aC5cICYyXCAJOnNldCBmZGM9MjxDUj4KKyAgYW4gNDAuMzQwLjMxMC4zMCAmVG9vbHMuJkZvbGRpbmcuRm9sZFwgY29sJnVtblwgd2lkdGguXCAmM1wgCTpzZXQgZmRjPTM8Q1I+CisgIGFuIDQwLjM0MC4zMTAuNDAgJlRvb2xzLiZGb2xkaW5nLkZvbGRcIGNvbCZ1bW5cIHdpZHRoLlwgJjRcIAk6c2V0IGZkYz00PENSPgorICBhbiA0MC4zNDAuMzEwLjUwICZUb29scy4mRm9sZGluZy5Gb2xkXCBjb2wmdW1uXCB3aWR0aC5cICY1XCAJOnNldCBmZGM9NTxDUj4KKyAgYW4gNDAuMzQwLjMxMC42MCAmVG9vbHMuJkZvbGRpbmcuRm9sZFwgY29sJnVtblwgd2lkdGguXCAmNlwgCTpzZXQgZmRjPTY8Q1I+CisgIGFuIDQwLjM0MC4zMTAuNzAgJlRvb2xzLiZGb2xkaW5nLkZvbGRcIGNvbCZ1bW5cIHdpZHRoLlwgJjdcIAk6c2V0IGZkYz03PENSPgorICBhbiA0MC4zNDAuMzEwLjgwICZUb29scy4mRm9sZGluZy5Gb2xkXCBjb2wmdW1uXCB3aWR0aC5cICY4XCAJOnNldCBmZGM9ODxDUj4KK2VuZGlmICAiIGhhcyBmb2xkaW5nCisKK2lmIGhhcygiZGlmZiIpCisgIGFuIDQwLjM1MC4xMDAgJlRvb2xzLiZEaWZmLiZVcGRhdGUJCTpkaWZmdXBkYXRlPENSPgorICBhbiA0MC4zNTAuMTEwICZUb29scy4mRGlmZi4mR2V0XCBCbG9jawk6ZGlmZmdldDxDUj4KKyAgdnVubWVudSAmVG9vbHMuJkRpZmYuJkdldFwgQmxvY2sKKyAgdm5vcmVtZW51ICZUb29scy4mRGlmZi4mR2V0XCBCbG9jawkJOmRpZmZnZXQ8Q1I+CisgIGFuIDQwLjM1MC4xMjAgJlRvb2xzLiZEaWZmLiZQdXRcIEJsb2NrCTpkaWZmcHV0PENSPgorICB2dW5tZW51ICZUb29scy4mRGlmZi4mUHV0XCBCbG9jaworICB2bm9yZW1lbnUgJlRvb2xzLiZEaWZmLiZQdXRcIEJsb2NrCQk6ZGlmZnB1dDxDUj4KK2VuZGlmCisKK2FuIDQwLjM1OCAmVG9vbHMuLVNFUDItCQkJCQk8Tm9wPgorYW4gNDAuMzYwICZUb29scy4mTWFrZTxUYWI+Om1ha2UJCQk6bWFrZTxDUj4KK2FuIDQwLjM3MCAmVG9vbHMuJkxpc3RcIEVycm9yczxUYWI+OmNsCQkJOmNsPENSPgorYW4gNDAuMzgwICZUb29scy5MJmlzdFwgTWVzc2FnZXM8VGFiPjpjbCEJCTpjbCE8Q1I+CithbiA0MC4zOTAgJlRvb2xzLiZOZXh0XCBFcnJvcjxUYWI+OmNuCQkJOmNuPENSPgorYW4gNDAuNDAwICZUb29scy4mUHJldmlvdXNcIEVycm9yPFRhYj46Y3AJCTpjcDxDUj4KK2FuIDQwLjQxMCAmVG9vbHMuJk9sZGVyXCBMaXN0PFRhYj46Y29sZAkJCTpjb2xkZXI8Q1I+CithbiA0MC40MjAgJlRvb2xzLk4mZXdlclwgTGlzdDxUYWI+OmNuZXcJCQk6Y25ld2VyPENSPgorYW4gNDAuNDMwLjUwICZUb29scy5FcnJvclwgJldpbmRvdy4mVXBkYXRlPFRhYj46Y3dpbgk6Y3dpbjxDUj4KK2FuIDQwLjQzMC42MCAmVG9vbHMuRXJyb3JcICZXaW5kb3cuJk9wZW48VGFiPjpjb3Blbgk6Y29wZW48Q1I+CithbiA0MC40MzAuNzAgJlRvb2xzLkVycm9yXCAmV2luZG93LiZDbG9zZTxUYWI+OmNjbG9zZQk6Y2Nsb3NlPENSPgorCithbiA0MC41MjAgJlRvb2xzLi1TRVAzLQkJCQkJPE5vcD4KK2FuIDxzaWxlbnQ+IDQwLjUzMCAmVG9vbHMuJkNvbnZlcnRcIHRvXCBIRVg8VGFiPjolIXh4ZAorCVwgOmNhbGwgPFNJRD5YeGRDb252KCk8Q1I+CithbiA8c2lsZW50PiA0MC41NDAgJlRvb2xzLkNvbnZlJnJ0XCBiYWNrPFRhYj46JSF4eGRcIC1yCisJXCA6Y2FsbCA8U0lEPlh4ZEJhY2soKTxDUj4KKworIiBVc2UgYSBmdW5jdGlvbiB0byBkbyB0aGUgY29udmVyc2lvbiwgc28gdGhhdCBpdCBhbHNvIHdvcmtzIHdpdGggJ2luc2VydG1vZGUnCisiIHNldC4KK2Z1bmMhIHM6WHhkQ29udigpCisgIGxldCBtb2QgPSAmbW9kCisgIGlmIGhhcygidm1zIikKKyAgICAlIW1jIHZpbTp4eGQKKyAgZWxzZQorICAgIGNhbGwgczpYeGRGaW5kKCkKKyAgICBleGUgJyUhIicgLiBnOnh4ZHByb2dyYW0gLiAnIicKKyAgZW5kaWYKKyAgaWYgZ2V0bGluZSgxKSA9fiAiXjAwMDAwMDA6IgkJIiBvbmx5IGlmIGl0IHdvcmtlZAorICAgIHNldCBmdD14eGQKKyAgZW5kaWYKKyAgbGV0ICZtb2QgPSBtb2QKK2VuZGZ1bgorCitmdW5jISBzOlh4ZEJhY2soKQorICBsZXQgbW9kID0gJm1vZAorICBpZiBoYXMoInZtcyIpCisgICAgJSFtYyB2aW06eHhkIC1yCisgIGVsc2UKKyAgICBjYWxsIHM6WHhkRmluZCgpCisgICAgZXhlICclISInIC4gZzp4eGRwcm9ncmFtIC4gJyIgLXInCisgIGVuZGlmCisgIHNldCBmdD0KKyAgZG9hdXRvY21kIGZpbGV0eXBlZGV0ZWN0IEJ1ZlJlYWRQb3N0CisgIGxldCAmbW9kID0gbW9kCitlbmRmdW4KKworZnVuYyEgczpYeGRGaW5kKCkKKyAgaWYgIWV4aXN0cygiZzp4eGRwcm9ncmFtIikKKyAgICAiIE9uIHRoZSBQQyB4eGQgbWF5IG5vdCBiZSBpbiB0aGUgcGF0aCBidXQgaW4gdGhlIGluc3RhbGwgZGlyZWN0b3J5CisgICAgaWYgKGhhcygid2luMzIiKSB8fCBoYXMoImRvczMyIikpICYmICFleGVjdXRhYmxlKCJ4eGQiKQorICAgICAgbGV0IGc6eHhkcHJvZ3JhbSA9ICRWSU1SVU5USU1FIC4gKCZzaGVsbHNsYXNoID8gJy8nIDogJ1wnKSAuICJ4eGQuZXhlIgorICAgIGVsc2UKKyAgICAgIGxldCBnOnh4ZHByb2dyYW0gPSAieHhkIgorICAgIGVuZGlmCisgIGVuZGlmCitlbmRmdW4KKworIiBTZXR1cCB0aGUgVG9vbHMuQ29tcGlsZXIgc3VibWVudQorbGV0IHM6biA9IGdsb2JwYXRoKCZydW50aW1lcGF0aCwgImNvbXBpbGVyLyoudmltIikKK2xldCBzOmlkeCA9IDEwMAord2hpbGUgc3RybGVuKHM6bikgPiAwCisgIGxldCBzOmkgPSBzdHJpZHgoczpuLCAiXG4iKQorICBpZiBzOmkgPCAwCisgICAgbGV0IHM6bmFtZSA9IHM6bgorICAgIGxldCBzOm4gPSAiIgorICBlbHNlCisgICAgbGV0IHM6bmFtZSA9IHN0cnBhcnQoczpuLCAwLCBzOmkpCisgICAgbGV0IHM6biA9IHN0cnBhcnQoczpuLCBzOmkgKyAxLCAxOTk5OSkKKyAgZW5kaWYKKyAgIiBJZ25vcmUgY2FzZSBmb3IgVk1TIGFuZCB3aW5kb3dzCisgIGxldCBzOm5hbWUgPSBzdWJzdGl0dXRlKHM6bmFtZSwgJ1xjLipbL1xcOlxdXVwoW14vXFw6XSpcKVwudmltJywgJ1wxJywgJycpCisgIGV4ZSAiYW4gMzAuNDQwLiIgLiBzOmlkeCAuICcgJlRvb2xzLlNlJlRcIENvbXBpbGVyLicgLiBzOm5hbWUgLiAiIDpjb21waWxlciAiIC4gczpuYW1lIC4gIjxDUj4iCisgIHVubGV0IHM6bmFtZQorICB1bmxldCBzOmkKKyAgbGV0IHM6aWR4ID0gczppZHggKyAxMAorZW5kd2hpbGUKK3VubGV0IHM6bgordW5sZXQgczppZHgKKworaWYgIWV4aXN0cygibm9fYnVmZmVyc19tZW51IikKKworIiBCdWZmZXIgbGlzdCBtZW51IC0tIFNldHVwIGZ1bmN0aW9ucyAmIGFjdGlvbnMKKworIiB3YWl0IHdpdGggYnVpbGRpbmcgdGhlIG1lbnUgdW50aWwgYWZ0ZXIgbG9hZGluZyAnc2Vzc2lvbicgZmlsZXMuIE1ha2VzCisiIHN0YXJ0dXAgZmFzdGVyLgorbGV0IHM6Ym1lbnVfd2FpdCA9IDEKKworaWYgIWV4aXN0cygiYm1lbnVfcHJpb3JpdHkiKQorICBsZXQgYm1lbnVfcHJpb3JpdHkgPSA2MAorZW5kaWYKKworZnVuYyEgczpCTUFkZCgpCisgIGlmIHM6Ym1lbnVfd2FpdCA9PSAwCisgICAgIiB3aGVuIGFkZGluZyB0b28gbWFueSBidWZmZXJzLCByZWRyYXcgaW4gc2hvcnQgZm9ybWF0CisgICAgaWYgczpibWVudV9jb3VudCA9PSAmbWVudWl0ZW1zICYmIHM6Ym1lbnVfc2hvcnQgPT0gMAorICAgICAgY2FsbCBzOkJNU2hvdygpCisgICAgZWxzZQorICAgICAgY2FsbCA8U0lEPkJNRmlsZW5hbWUoZXhwYW5kKCI8YWZpbGU+IiksIGV4cGFuZCgiPGFidWY+IikpCisgICAgICBsZXQgczpibWVudV9jb3VudCA9IHM6Ym1lbnVfY291bnQgKyAxCisgICAgZW5kaWYKKyAgZW5kaWYKK2VuZGZ1bmMKKworZnVuYyEgczpCTVJlbW92ZSgpCisgIGlmIHM6Ym1lbnVfd2FpdCA9PSAwCisgICAgbGV0IG5hbWUgPSBleHBhbmQoIjxhZmlsZT4iKQorICAgIGlmIGlzZGlyZWN0b3J5KG5hbWUpCisgICAgICByZXR1cm4KKyAgICBlbmRpZgorICAgIGxldCBtdW5nZSA9IDxTSUQ+Qk1NdW5nZShuYW1lLCBleHBhbmQoIjxhYnVmPiIpKQorCisgICAgaWYgczpibWVudV9zaG9ydCA9PSAwCisgICAgICBleGUgJ3NpbGVudCEgYXVuICZCdWZmZXJzLicgLiBtdW5nZQorICAgIGVsc2UKKyAgICAgIGV4ZSAnc2lsZW50ISBhdW4gJkJ1ZmZlcnMuJyAuIDxTSUQ+Qk1IYXNoMihtdW5nZSkgLiBtdW5nZQorICAgIGVuZGlmCisgICAgbGV0IHM6Ym1lbnVfY291bnQgPSBzOmJtZW51X2NvdW50IC0gMQorICBlbmRpZgorZW5kZnVuYworCisiIENyZWF0ZSB0aGUgYnVmZmVyIG1lbnUgKGRlbGV0ZSBhbiBleGlzdGluZyBvbmUgZmlyc3QpLgorZnVuYyEgczpCTVNob3coLi4uKQorICBsZXQgczpibWVudV93YWl0ID0gMQorICBsZXQgczpibWVudV9zaG9ydCA9IDEKKyAgbGV0IHM6Ym1lbnVfY291bnQgPSAwCisgICIKKyAgIiBnZXQgbmV3IHByaW9yaXR5LCBpZiBleGlzdHMKKyAgaWYgYTowID09IDEKKyAgICBsZXQgZzpibWVudV9wcmlvcml0eSA9IGE6MQorICBlbmRpZgorCisgICIgcmVtb3ZlIG9sZCBtZW51LCBpZiBleGlzdHM7IGtlZXAgb25lIGVudHJ5IHRvIGF2b2lkIGEgdG9ybiBvZmYgbWVudSB0bworICAiIGRpc2FwcGVhci4KKyAgc2lsZW50ISB1bm1lbnUgJkJ1ZmZlcnMKKyAgZXhlICdub3JlbWVudSAnIC4gZzpibWVudV9wcmlvcml0eSAuICIuMSAmQnVmZmVycy5EdW1teSBsIgorICBzaWxlbnQhIHVubWVudSEgJkJ1ZmZlcnMKKworICAiIGNyZWF0ZSBuZXcgbWVudTsgc2V0ICdjcG8nIHRvIGluY2x1ZGUgdGhlIDxDUj4KKyAgbGV0IGNwb19zYXZlID0gJmNwbworICBzZXQgY3BvJnZpbQorICBleGUgJ2FuIDxzaWxlbnQ+ICcgLiBnOmJtZW51X3ByaW9yaXR5IC4gIi4yICZCdWZmZXJzLiZSZWZyZXNoXFwgbWVudSA6Y2FsbCA8U0lEPkJNU2hvdygpPENSPiIKKyAgZXhlICdhbiAnIC4gZzpibWVudV9wcmlvcml0eSAuICIuNCAmQnVmZmVycy4mRGVsZXRlIDpjb25maXJtIGJkPENSPiIKKyAgZXhlICdhbiAnIC4gZzpibWVudV9wcmlvcml0eSAuICIuNiAmQnVmZmVycy4mQWx0ZXJuYXRlIDpjb25maXJtIGIgIzxDUj4iCisgIGV4ZSAnYW4gJyAuIGc6Ym1lbnVfcHJpb3JpdHkgLiAiLjcgJkJ1ZmZlcnMuJk5leHQgOmNvbmZpcm0gYm5leHQ8Q1I+IgorICBleGUgJ2FuICcgLiBnOmJtZW51X3ByaW9yaXR5IC4gIi44ICZCdWZmZXJzLiZQcmV2aW91cyA6Y29uZmlybSBicHJldjxDUj4iCisgIGV4ZSAnYW4gJyAuIGc6Ym1lbnVfcHJpb3JpdHkgLiAiLjkgJkJ1ZmZlcnMuLVNFUC0gOiIKKyAgbGV0ICZjcG8gPSBjcG9fc2F2ZQorICB1bm1lbnUgJkJ1ZmZlcnMuRHVtbXkKKworICAiIGZpZ3VyZSBvdXQgaG93IG1hbnkgYnVmZmVycyB0aGVyZSBhcmUKKyAgbGV0IGJ1ZiA9IDEKKyAgd2hpbGUgYnVmIDw9IGJ1Zm5yKCckJykKKyAgICBpZiBidWZleGlzdHMoYnVmKSAmJiAhaXNkaXJlY3RvcnkoYnVmbmFtZShidWYpKSAmJiBidWZsaXN0ZWQoYnVmKQorICAgICAgbGV0IHM6Ym1lbnVfY291bnQgPSBzOmJtZW51X2NvdW50ICsgMQorICAgIGVuZGlmCisgICAgbGV0IGJ1ZiA9IGJ1ZiArIDEKKyAgZW5kd2hpbGUKKyAgaWYgczpibWVudV9jb3VudCA8PSAmbWVudWl0ZW1zCisgICAgbGV0IHM6Ym1lbnVfc2hvcnQgPSAwCisgIGVuZGlmCisKKyAgIiBpdGVyYXRlIHRocm91Z2ggYnVmZmVyIGxpc3QsIGFkZGluZyBlYWNoIGJ1ZmZlciB0byB0aGUgbWVudToKKyAgbGV0IGJ1ZiA9IDEKKyAgd2hpbGUgYnVmIDw9IGJ1Zm5yKCckJykKKyAgICBpZiBidWZleGlzdHMoYnVmKSAmJiAhaXNkaXJlY3RvcnkoYnVmbmFtZShidWYpKSAmJiBidWZsaXN0ZWQoYnVmKQorICAgICAgY2FsbCA8U0lEPkJNRmlsZW5hbWUoYnVmbmFtZShidWYpLCBidWYpCisgICAgZW5kaWYKKyAgICBsZXQgYnVmID0gYnVmICsgMQorICBlbmR3aGlsZQorICBsZXQgczpibWVudV93YWl0ID0gMAorICBhdWcgYnVmZmVyX2xpc3QKKyAgYXUhCisgIGF1IEJ1ZkNyZWF0ZSxCdWZGaWxlUG9zdCAqIGNhbGwgPFNJRD5CTUFkZCgpCisgIGF1IEJ1ZkRlbGV0ZSxCdWZGaWxlUHJlICogY2FsbCA8U0lEPkJNUmVtb3ZlKCkKKyAgYXVnIEVORAorZW5kZnVuYworCitmdW5jISBzOkJNSGFzaChuYW1lKQorICAiIE1ha2UgbmFtZSBhbGwgdXBwZXIgY2FzZSwgc28gdGhhdCBjaGFycyBhcmUgYmV0d2VlbiAzMiBhbmQgOTYKKyAgbGV0IG5tID0gc3Vic3RpdHV0ZShhOm5hbWUsICIuKiIsICdcVVwwJywgIiIpCisgIGlmIGhhcygiZWJjZGljIikKKyAgICAiIEhBQ0s6IFJlcGxhY2UgYWxsIG5vbiBhbHBoYWJldGljcyB3aXRoICdaJworICAgICIgICAgICAgSnVzdCB0byBtYWtlIGl0IHdvcmsgZm9yIG5vdy4KKyAgICBsZXQgbm0gPSBzdWJzdGl0dXRlKG5tLCAiW15BLVpdIiwgJ1onLCAiZyIpCisgICAgbGV0IHNwID0gY2hhcjJucignQScpIC0gMQorICBlbHNlCisgICAgbGV0IHNwID0gY2hhcjJucignICcpCisgIGVuZGlmCisgICIgY29udmVydCBmaXJzdCBzaXggY2hhcnMgaW50byBhIG51bWJlciBmb3Igc29ydGluZzoKKyAgcmV0dXJuIChjaGFyMm5yKG5tWzBdKSAtIHNwKSAqIDB4ODAwMDAwICsgKGNoYXIybnIobm1bMV0pIC0gc3ApICogMHgyMDAwMCArIChjaGFyMm5yKG5tWzJdKSAtIHNwKSAqIDB4MTAwMCArIChjaGFyMm5yKG5tWzNdKSAtIHNwKSAqIDB4ODAgKyAoY2hhcjJucihubVs0XSkgLSBzcCkgKiAweDIwICsgKGNoYXIybnIobm1bNV0pIC0gc3ApCitlbmRmdW5jCisKK2Z1bmMhIHM6Qk1IYXNoMihuYW1lKQorICBsZXQgbm0gPSBzdWJzdGl0dXRlKGE6bmFtZSwgIi4iLCAnXExcMCcsICIiKQorICAiIE5vdCBleGFjdGx5IHJpZ2h0IGZvciBFQkNESUMuLi4KKyAgaWYgbm1bMF0gPCAnYScgfHwgbm1bMF0gPiAneicKKyAgICByZXR1cm4gJyZvdGhlcnMuJworICBlbHNlaWYgbm1bMF0gPD0gJ2QnCisgICAgcmV0dXJuICcmYWJjZC4nCisgIGVsc2VpZiBubVswXSA8PSAnaCcKKyAgICByZXR1cm4gJyZlZmdoLicKKyAgZWxzZWlmIG5tWzBdIDw9ICdsJworICAgIHJldHVybiAnJmlqa2wuJworICBlbHNlaWYgbm1bMF0gPD0gJ3AnCisgICAgcmV0dXJuICcmbW5vcC4nCisgIGVsc2VpZiBubVswXSA8PSAndCcKKyAgICByZXR1cm4gJyZxcnN0LicKKyAgZWxzZQorICAgIHJldHVybiAnJnUtei4nCisgIGVuZGlmCitlbmRmdW5jCisKKyIgaW5zZXJ0IGEgYnVmZmVyIG5hbWUgaW50byB0aGUgYnVmZmVyIG1lbnU6CitmdW5jISBzOkJNRmlsZW5hbWUobmFtZSwgbnVtKQorICBpZiBpc2RpcmVjdG9yeShhOm5hbWUpCisgICAgcmV0dXJuCisgIGVuZGlmCisgIGxldCBtdW5nZSA9IDxTSUQ+Qk1NdW5nZShhOm5hbWUsIGE6bnVtKQorICBsZXQgaGFzaCA9IDxTSUQ+Qk1IYXNoKG11bmdlKQorICBpZiBzOmJtZW51X3Nob3J0ID09IDAKKyAgICBsZXQgbmFtZSA9ICdhbiAnIC4gZzpibWVudV9wcmlvcml0eSAuICcuJyAuIGhhc2ggLiAnICZCdWZmZXJzLicgLiBtdW5nZQorICBlbHNlCisgICAgbGV0IG5hbWUgPSAnYW4gJyAuIGc6Ym1lbnVfcHJpb3JpdHkgLiAnLicgLiBoYXNoIC4gJy4nIC4gaGFzaCAuICcgJkJ1ZmZlcnMuJyAuIDxTSUQ+Qk1IYXNoMihtdW5nZSkgLiBtdW5nZQorICBlbmRpZgorICAiIHNldCAnY3BvJyB0byBpbmNsdWRlIHRoZSA8Q1I+CisgIGxldCBjcG9fc2F2ZSA9ICZjcG8KKyAgc2V0IGNwbyZ2aW0KKyAgZXhlIG5hbWUgLiAnIDpjb25maXJtIGInIC4gYTpudW0gLiAnPENSPicKKyAgbGV0ICZjcG8gPSBjcG9fc2F2ZQorZW5kZnVuYworCisiIFRydW5jYXRlIGEgbG9uZyBwYXRoIHRvIGZpdCBpdCBpbiBhIG1lbnUgaXRlbS4KK2lmICFleGlzdHMoImc6Ym1lbnVfbWF4X3BhdGhsZW4iKQorICBsZXQgZzpibWVudV9tYXhfcGF0aGxlbiA9IDM1CitlbmRpZgorZnVuYyEgczpCTVRydW5jTmFtZShmbmFtZSkKKyAgbGV0IG5hbWUgPSBhOmZuYW1lCisgIGlmIGc6Ym1lbnVfbWF4X3BhdGhsZW4gPCA1CisgICAgbGV0IG5hbWUgPSAiIgorICBlbHNlCisgICAgbGV0IGxlbiA9IHN0cmxlbihuYW1lKQorICAgIGlmIGxlbiA+IGc6Ym1lbnVfbWF4X3BhdGhsZW4KKyAgICAgIGxldCBhbW91bnRsID0gKGc6Ym1lbnVfbWF4X3BhdGhsZW4gLyAyKSAtIDIKKyAgICAgIGxldCBhbW91bnRyID0gZzpibWVudV9tYXhfcGF0aGxlbiAtIGFtb3VudGwgLSAzCisgICAgICBsZXQgcGF0dGVybiA9ICdeXCguXHssJyAuIGFtb3VudGwgLiAnfVwpLlx7LX1cKC5ceywnIC4gYW1vdW50ciAuICd9XCkkJworICAgICAgbGV0IGxlZnQgPSBzdWJzdGl0dXRlKG5hbWUsIHBhdHRlcm4sICdcMScsICcnKQorICAgICAgbGV0IHJpZ2h0ID0gc3Vic3RpdHV0ZShuYW1lLCBwYXR0ZXJuLCAnXDInLCAnJykKKyAgICAgIGlmIHN0cmxlbihsZWZ0KSArIHN0cmxlbihyaWdodCkgPCBsZW4KKwlsZXQgbmFtZSA9IGxlZnQgLiAnLi4uJyAuIHJpZ2h0CisgICAgICBlbmRpZgorICAgIGVuZGlmCisgIGVuZGlmCisgIHJldHVybiBuYW1lCitlbmRmdW5jCisKK2Z1bmMhIHM6Qk1NdW5nZShmbmFtZSwgYm51bSkKKyAgbGV0IG5hbWUgPSBhOmZuYW1lCisgIGlmIG5hbWUgPT0gJycKKyAgICBpZiAhZXhpc3RzKCJnOm1lbnV0cmFuc19ub19maWxlIikKKyAgICAgIGxldCBnOm1lbnV0cmFuc19ub19maWxlID0gIltObyBmaWxlXSIKKyAgICBlbmRpZgorICAgIGxldCBuYW1lID0gZzptZW51dHJhbnNfbm9fZmlsZQorICBlbHNlCisgICAgbGV0IG5hbWUgPSBmbmFtZW1vZGlmeShuYW1lLCAnOnA6ficpCisgIGVuZGlmCisgICIgZGV0YWNoIGZpbGUgbmFtZSBhbmQgc2VwYXJhdGUgaXQgb3V0OgorICBsZXQgbmFtZTIgPSBmbmFtZW1vZGlmeShuYW1lLCAnOnQnKQorICBpZiBhOmJudW0gPj0gMAorICAgIGxldCBuYW1lMiA9IG5hbWUyIC4gJyAoJyAuIGE6Ym51bSAuICcpJworICBlbmRpZgorICBsZXQgbmFtZSA9IG5hbWUyIC4gIlx0IiAuIDxTSUQ+Qk1UcnVuY05hbWUoZm5hbWVtb2RpZnkobmFtZSwnOmgnKSkKKyAgbGV0IG5hbWUgPSBlc2NhcGUobmFtZSwgIlxcLiBcdHwiKQorICBsZXQgbmFtZSA9IHN1YnN0aXR1dGUobmFtZSwgIiYiLCAiJiYiLCAiZyIpCisgIGxldCBuYW1lID0gc3Vic3RpdHV0ZShuYW1lLCAiXG4iLCAiXkAiLCAiZyIpCisgIHJldHVybiBuYW1lCitlbmRmdW5jCisKKyIgV2hlbiBqdXN0IHN0YXJ0aW5nIFZpbSwgbG9hZCB0aGUgYnVmZmVyIG1lbnUgbGF0ZXIKK2lmIGhhcygidmltX3N0YXJ0aW5nIikKKyAgYXVncm91cCBMb2FkQnVmZmVyTWVudQorICAgIGF1ISBWaW1FbnRlciAqIGlmICFleGlzdHMoIm5vX2J1ZmZlcnNfbWVudSIpIHwgY2FsbCA8U0lEPkJNU2hvdygpIHwgZW5kaWYKKyAgICBhdSAgVmltRW50ZXIgKiBhdSEgTG9hZEJ1ZmZlck1lbnUKKyAgYXVncm91cCBFTkQKK2Vsc2UKKyAgY2FsbCA8U0lEPkJNU2hvdygpCitlbmRpZgorCitlbmRpZiAiICFleGlzdHMoIm5vX2J1ZmZlcnNfbWVudSIpCisKKyIgV2luZG93IG1lbnUKK2FuIDcwLjMwMCAmV2luZG93LiZOZXc8VGFiPl5XbgkJCTxDLVc+bgorYW4gNzAuMzEwICZXaW5kb3cuUyZwbGl0PFRhYj5eV3MJCTxDLVc+cworYW4gNzAuMzIwICZXaW5kb3cuU3AmbGl0XCBUb1wgIzxUYWI+XldeXgk8Qy1XPjxDLV4+CithbiA3MC4zMzAgJldpbmRvdy5TcGxpdFwgJlZlcnRpY2FsbHk8VGFiPl5Xdgk8Qy1XPnYKK2lmIGhhcygidmVydHNwbGl0IikKKyAgYW4gPHNpbGVudD4gNzAuMzMyICZXaW5kb3cuU3BsaXRcIEZpbGVcIEUmeHBsb3Jlcgk6Y2FsbCBNZW51RXhwbE9wZW4oKTxDUj4KKyAgaWYgIWV4aXN0cygiKk1lbnVFeHBsT3BlbiIpCisgICAgZnVuIE1lbnVFeHBsT3BlbigpCisgICAgICBpZiBAJSA9PSAiIgorCTIwdnNwIC4KKyAgICAgIGVsc2UKKwlleGUgIjIwdnNwICIgLiBzOkZuYW1lRXNjYXBlKGV4cGFuZCgiJTpwOmgiKSkKKyAgICAgIGVuZGlmCisgICAgZW5kZnVuCisgIGVuZGlmCitlbmRpZgorYW4gNzAuMzM1ICZXaW5kb3cuLVNFUDEtCQkJCTxOb3A+CithbiA3MC4zNDAgJldpbmRvdy4mQ2xvc2U8VGFiPl5XYwkJCTpjb25maXJtIGNsb3NlPENSPgorYW4gNzAuMzQ1ICZXaW5kb3cuQ2xvc2VcICZPdGhlcihzKTxUYWI+XldvCQk6Y29uZmlybSBvbmx5PENSPgorYW4gNzAuMzUwICZXaW5kb3cuLVNFUDItCQkJCTxOb3A+CithbiA3MC4zNTUgJldpbmRvdy5Nb3ZlXCAmVG8uJlRvcDxUYWI+XldLCQk8Qy1XPksKK2FuIDcwLjM1NSAmV2luZG93Lk1vdmVcICZUby4mQm90dG9tPFRhYj5eV0oJCTxDLVc+SgorYW4gNzAuMzU1ICZXaW5kb3cuTW92ZVwgJlRvLiZMZWZ0XCBzaWRlPFRhYj5eV0gJCTxDLVc+SAorYW4gNzAuMzU1ICZXaW5kb3cuTW92ZVwgJlRvLiZSaWdodFwgc2lkZTxUYWI+XldMCTxDLVc+TAorYW4gNzAuMzYwICZXaW5kb3cuUm90YXRlXCAmVXA8VGFiPl5XUgkJCTxDLVc+UgorYW4gNzAuMzYyICZXaW5kb3cuUm90YXRlXCAmRG93bjxUYWI+XldyCQkJPEMtVz5yCithbiA3MC4zNjUgJldpbmRvdy4tU0VQMy0JCQkJPE5vcD4KK2FuIDcwLjM3MCAmV2luZG93LiZFcXVhbFwgU2l6ZTxUYWI+Xlc9CQkJPEMtVz49CithbiA3MC4zODAgJldpbmRvdy4mTWF4XCBIZWlnaHQ8VGFiPl5XXwkJCTxDLVc+XworYW4gNzAuMzkwICZXaW5kb3cuTSZpblwgSGVpZ2h0PFRhYj5eVzFfCQkJPEMtVz4xXworYW4gNzAuNDAwICZXaW5kb3cuTWF4XCAmV2lkdGg8VGFiPl5XXHwJCQk8Qy1XPlx8CithbiA3MC40MTAgJldpbmRvdy5NaW5cIFdpZHQmaDxUYWI+XlcxXHwJCQk8Qy1XPjFcfAorCisiIFRoZSBwb3B1cCBtZW51CithbiAxLjEwIFBvcFVwLiZVbmRvCQkJdQorYW4gMS4xNSBQb3BVcC4tU0VQMS0JCQk8Tm9wPgordm5vcmVtZW51IDEuMjAgUG9wVXAuQ3UmdAkJIit4Cit2bm9yZW1lbnUgMS4zMCBQb3BVcC4mQ29weQkJIit5Citjbm9yZW1lbnUgMS4zMCBQb3BVcC4mQ29weQkJPEMtWT4KK25ub3JlbWVudSAxLjQwIFBvcFVwLiZQYXN0ZQkJIitnUAorY25vcmVtZW51IDEuNDAgUG9wVXAuJlBhc3RlCQk8Qy1SPisKK2V4ZSAndm5vcmVtZW51IDxzY3JpcHQ+IDEuNDAgUG9wVXAuJlBhc3RlCScgLiBwYXN0ZSNwYXN0ZV9jbWRbJ3YnXQorZXhlICdpbm9yZW1lbnUgPHNjcmlwdD4gMS40MCBQb3BVcC4mUGFzdGUJJyAuIHBhc3RlI3Bhc3RlX2NtZFsnaSddCit2bm9yZW1lbnUgMS41MCBQb3BVcC4mRGVsZXRlCQl4CithbiAxLjU1IFBvcFVwLi1TRVAyLQkJCTxOb3A+Cit2bm9yZW1lbnUgMS42MCBQb3BVcC5TZWxlY3RcIEJsb2Nrd2lzZQk8Qy1WPgorCitubm9yZW1lbnUgMS43MCBQb3BVcC5TZWxlY3RcICZXb3JkCXZhdworb25vcmVtZW51IDEuNzAgUG9wVXAuU2VsZWN0XCAmV29yZAlhdwordm5vcmVtZW51IDEuNzAgUG9wVXAuU2VsZWN0XCAmV29yZAk8Qy1DPnZhdworaW5vcmVtZW51IDEuNzAgUG9wVXAuU2VsZWN0XCAmV29yZAk8Qy1PPnZhdworY25vcmVtZW51IDEuNzAgUG9wVXAuU2VsZWN0XCAmV29yZAk8Qy1DPnZhdworCitubm9yZW1lbnUgMS43MyBQb3BVcC5TZWxlY3RcICZTZW50ZW5jZQl2YXMKK29ub3JlbWVudSAxLjczIFBvcFVwLlNlbGVjdFwgJlNlbnRlbmNlCWFzCit2bm9yZW1lbnUgMS43MyBQb3BVcC5TZWxlY3RcICZTZW50ZW5jZQk8Qy1DPnZhcworaW5vcmVtZW51IDEuNzMgUG9wVXAuU2VsZWN0XCAmU2VudGVuY2UJPEMtTz52YXMKK2Nub3JlbWVudSAxLjczIFBvcFVwLlNlbGVjdFwgJlNlbnRlbmNlCTxDLUM+dmFzCisKK25ub3JlbWVudSAxLjc3IFBvcFVwLlNlbGVjdFwgUGEmcmFncmFwaAl2YXAKK29ub3JlbWVudSAxLjc3IFBvcFVwLlNlbGVjdFwgUGEmcmFncmFwaAlhcAordm5vcmVtZW51IDEuNzcgUG9wVXAuU2VsZWN0XCBQYSZyYWdyYXBoCTxDLUM+dmFwCitpbm9yZW1lbnUgMS43NyBQb3BVcC5TZWxlY3RcIFBhJnJhZ3JhcGgJPEMtTz52YXAKK2Nub3JlbWVudSAxLjc3IFBvcFVwLlNlbGVjdFwgUGEmcmFncmFwaAk8Qy1DPnZhcAorCitubm9yZW1lbnUgMS44MCBQb3BVcC5TZWxlY3RcICZMaW5lCVYKK29ub3JlbWVudSAxLjgwIFBvcFVwLlNlbGVjdFwgJkxpbmUJPEMtQz5WCit2bm9yZW1lbnUgMS44MCBQb3BVcC5TZWxlY3RcICZMaW5lCTxDLUM+VgoraW5vcmVtZW51IDEuODAgUG9wVXAuU2VsZWN0XCAmTGluZQk8Qy1PPlYKK2Nub3JlbWVudSAxLjgwIFBvcFVwLlNlbGVjdFwgJkxpbmUJPEMtQz5WCisKK25ub3JlbWVudSAxLjkwIFBvcFVwLlNlbGVjdFwgJkJsb2NrCTxDLVY+Citvbm9yZW1lbnUgMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawk8Qy1DPjxDLVY+Cit2bm9yZW1lbnUgMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawk8Qy1DPjxDLVY+Citpbm9yZW1lbnUgMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawk8Qy1PPjxDLVY+Citjbm9yZW1lbnUgMS45MCBQb3BVcC5TZWxlY3RcICZCbG9jawk8Qy1DPjxDLVY+CisKK25vcmVtZW51ICA8c2NyaXB0PiA8c2lsZW50PiAxLjEwMCBQb3BVcC5TZWxlY3RcICZBbGwJOjxDLVU+Y2FsbCA8U0lEPlNlbGVjdEFsbCgpPENSPgoraW5vcmVtZW51IDxzY3JpcHQ+IDxzaWxlbnQ+IDEuMTAwIFBvcFVwLlNlbGVjdFwgJkFsbAk8Qy1PPjpjYWxsIDxTSUQ+U2VsZWN0QWxsKCk8Q1I+Citjbm9yZW1lbnUgPHNjcmlwdD4gPHNpbGVudD4gMS4xMDAgUG9wVXAuU2VsZWN0XCAmQWxsCTxDLVU+Y2FsbCA8U0lEPlNlbGVjdEFsbCgpPENSPgorCitpZiBoYXMoInNwZWxsIikKKyAgIiBTcGVsbCBzdWdnZXN0aW9ucyBpbiB0aGUgcG9wdXAgbWVudS4gIE5vdGUgdGhhdCB0aGlzIHdpbGwgc2xvdyBkb3duIHRoZQorICAiIGFwcGVhcmFuY2Ugb2YgdGhlIG1lbnUhCisgIGZ1bmMhIDxTSUQ+U3BlbGxQb3B1cCgpCisgICAgaWYgZXhpc3RzKCJzOmNoYW5nZWl0ZW0iKSAmJiBzOmNoYW5nZWl0ZW0gIT0gJycKKyAgICAgIGNhbGwgPFNJRD5TcGVsbERlbCgpCisgICAgZW5kaWYKKworICAgICIgUmV0dXJuIHF1aWNrbHkgaWYgc3BlbGwgY2hlY2tpbmcgaXMgbm90IGVuYWJsZWQuCisgICAgaWYgISZzcGVsbCB8fCAmc3BlbGxsYW5nID09ICcnCisgICAgICByZXR1cm4KKyAgICBlbmRpZgorCisgICAgbGV0IGN1cmNvbCA9IGNvbCgnLicpCisgICAgbGV0IFt3LCBhXSA9IHNwZWxsYmFkd29yZCgpCisgICAgaWYgY29sKCcuJykgPiBjdXJjb2wJCSIgZG9uJ3QgdXNlIHdvcmQgYWZ0ZXIgdGhlIGN1cnNvcgorICAgICAgbGV0IHcgPSAnJworICAgICAgY2FsbCBjdXJzb3IoMCwgY3VyY29sKQkiIHB1dCB0aGUgY3Vyc29yIGJhY2sgd2hlcmUgaXQgd2FzCisgICAgZW5kaWYKKyAgICBpZiB3ICE9ICcnCisgICAgICBpZiBhID09ICdjYXBzJworCWxldCBzOnN1Z2xpc3QgPSBbc3Vic3RpdHV0ZSh3LCAnLionLCAnXHUmJywgJycpXQorICAgICAgZWxzZQorCWxldCBzOnN1Z2xpc3QgPSBzcGVsbHN1Z2dlc3QodywgMTApCisgICAgICBlbmRpZgorICAgICAgaWYgbGVuKHM6c3VnbGlzdCkgPD0gMAorCWNhbGwgY3Vyc29yKDAsIGN1cmNvbCkJIiBwdXQgdGhlIGN1cnNvciBiYWNrIHdoZXJlIGl0IHdhcworICAgICAgZWxzZQorCWxldCBzOmNoYW5nZWl0ZW0gPSAnY2hhbmdlXCAiJyAuIGVzY2FwZSh3LCAnIC4nKS4gJyJcIHRvJworCWxldCBzOmZyb213b3JkID0gdworCWxldCBwcmkgPSAxCisJZm9yIHN1ZyBpbiBzOnN1Z2xpc3QKKwkgIGV4ZSAnYW5vcmVtZW51IDEuNS4nIC4gcHJpIC4gJyBQb3BVcC4nIC4gczpjaGFuZ2VpdGVtIC4gJy4nIC4gZXNjYXBlKHN1ZywgJyAuJykKKwkJXCAuICcgOmNhbGwgPFNJRD5TcGVsbFJlcGxhY2UoJyAuIHByaSAuICcpPENSPicKKwkgIGxldCBwcmkgKz0gMQorCWVuZGZvcgorCisJbGV0IHM6YWRkaXRlbSA9ICdhZGRcICInIC4gZXNjYXBlKHcsICcgLicpIC4gJyJcIHRvXCB3b3JkXCBsaXN0JworCWV4ZSAnYW5vcmVtZW51IDEuNiBQb3BVcC4nIC4gczphZGRpdGVtIC4gJyA6c3BlbGxnb29kICcgLiB3IC4gJzxDUj4nCisKKwlsZXQgczppZ25vcmVpdGVtID0gJ2lnbm9yZVwgIicgLiBlc2NhcGUodywgJyAuJykgLiAnIicKKwlleGUgJ2Fub3JlbWVudSAxLjcgUG9wVXAuJyAuIHM6aWdub3JlaXRlbSAuICcgOnNwZWxsZ29vZCEgJyAuIHcgLiAnPENSPicKKworCWFub3JlbWVudSAxLjggUG9wVXAuLVNwZWxsU2VwLSA6CisgICAgICBlbmRpZgorICAgIGVuZGlmCisgIGVuZGZ1bmMKKworICBmdW5jISA8U0lEPlNwZWxsUmVwbGFjZShuKQorICAgIGxldCBsID0gZ2V0bGluZSgnLicpCisgICAgY2FsbCBzZXRsaW5lKCcuJywgc3RycGFydChsLCAwLCBjb2woJy4nKSAtIDEpIC4gczpzdWdsaXN0W2E6biAtIDFdCisJICBcIC4gc3RycGFydChsLCBjb2woJy4nKSArIGxlbihzOmZyb213b3JkKSAtIDEpKQorICBlbmRmdW5jCisKKyAgZnVuYyEgPFNJRD5TcGVsbERlbCgpCisgICAgZXhlICJhdW5tZW51IFBvcFVwLiIgLiBzOmNoYW5nZWl0ZW0KKyAgICBleGUgImF1bm1lbnUgUG9wVXAuIiAuIHM6YWRkaXRlbQorICAgIGV4ZSAiYXVubWVudSBQb3BVcC4iIC4gczppZ25vcmVpdGVtCisgICAgYXVubWVudSBQb3BVcC4tU3BlbGxTZXAtCisgICAgbGV0IHM6Y2hhbmdlaXRlbSA9ICcnCisgIGVuZGZ1bgorCisgIGF1Z3JvdXAgU3BlbGxQb3B1cE1lbnUKKyAgICBhdSEgTWVudVBvcHVwICogY2FsbCA8U0lEPlNwZWxsUG9wdXAoKQorICBhdWdyb3VwIEVORAorZW5kaWYKKworIiBUaGUgR1VJIHRvb2xiYXIgKGZvciBNUy1XaW5kb3dzIGFuZCBHVEspCitpZiBoYXMoInRvb2xiYXIiKQorICBhbiAxLjEwIFRvb2xCYXIuT3BlbgkJCTpicm93c2UgY29uZmlybSBlPENSPgorICBhbiA8c2lsZW50PiAxLjIwIFRvb2xCYXIuU2F2ZQkJOmlmIGV4cGFuZCgiJSIpID09ICIiPEJhcj5icm93c2UgY29uZmlybSB3PEJhcj5lbHNlPEJhcj5jb25maXJtIHc8QmFyPmVuZGlmPENSPgorICBhbiAxLjMwIFRvb2xCYXIuU2F2ZUFsbAkJOmJyb3dzZSBjb25maXJtIHdhPENSPgorCisgIGlmIGhhcygicHJpbnRlciIpCisgICAgYW4gMS40MCAgIFRvb2xCYXIuUHJpbnQJCTpoYXJkY29weTxDUj4KKyAgICB2dW5tZW51ICAgVG9vbEJhci5QcmludAorICAgIHZub3JlbWVudSBUb29sQmFyLlByaW50CQk6aGFyZGNvcHk8Q1I+CisgIGVsc2VpZiBoYXMoInVuaXgiKQorICAgIGFuIDEuNDAgICBUb29sQmFyLlByaW50CQk6dyAhbHByPENSPgorICAgIHZ1bm1lbnUgICBUb29sQmFyLlByaW50CisgICAgdm5vcmVtZW51IFRvb2xCYXIuUHJpbnQJCTp3ICFscHI8Q1I+CisgIGVuZGlmCisKKyAgYW4gMS40NSBUb29sQmFyLi1zZXAxLQkJPE5vcD4KKyAgYW4gMS41MCBUb29sQmFyLlVuZG8JCQl1CisgIGFuIDEuNjAgVG9vbEJhci5SZWRvCQkJPEMtUj4KKworICBhbiAxLjY1IFRvb2xCYXIuLXNlcDItCQk8Tm9wPgorICB2bm9yZW1lbnUgMS43MCBUb29sQmFyLkN1dAkJIit4CisgIHZub3JlbWVudSAxLjgwIFRvb2xCYXIuQ29weQkJIit5CisgIGNub3JlbWVudSAxLjgwIFRvb2xCYXIuQ29weQkJPEMtWT4KKyAgbm5vcmVtZW51IDEuOTAgVG9vbEJhci5QYXN0ZQkJIitnUAorICBjbm9yZW1lbnUJIFRvb2xCYXIuUGFzdGUJCTxDLVI+KworICBleGUgJ3Zub3JlbWVudSA8c2NyaXB0PgkgVG9vbEJhci5QYXN0ZQknIC4gcGFzdGUjcGFzdGVfY21kWyd2J10KKyAgZXhlICdpbm9yZW1lbnUgPHNjcmlwdD4JIFRvb2xCYXIuUGFzdGUJJyAuIHBhc3RlI3Bhc3RlX2NtZFsnaSddCisKKyAgaWYgIWhhcygiZ3VpX2F0aGVuYSIpCisgICAgYW4gMS45NSAgIFRvb2xCYXIuLXNlcDMtCQk8Tm9wPgorICAgIGFuIDEuMTAwICBUb29sQmFyLlJlcGxhY2UJCTpwcm9tcHRyZXBsPENSPgorICAgIHZ1bm1lbnUgICBUb29sQmFyLlJlcGxhY2UKKyAgICB2bm9yZW1lbnUgVG9vbEJhci5SZXBsYWNlCQl5OnByb21wdHJlcGwgPEMtUj49PFNJRD5GaXhGVGV4dCgpPENSPjxDUj4KKyAgICBhbiAxLjExMCAgVG9vbEJhci5GaW5kTmV4dAkJbgorICAgIGFuIDEuMTIwICBUb29sQmFyLkZpbmRQcmV2CQlOCisgIGVuZGlmCisKKyAgYW4gMS4yMTUgVG9vbEJhci4tc2VwNS0JCTxOb3A+CisgIGFuIDxzaWxlbnQ+IDEuMjIwIFRvb2xCYXIuTG9hZFNlc24JOmNhbGwgPFNJRD5Mb2FkVmltU2VzbigpPENSPgorICBhbiA8c2lsZW50PiAxLjIzMCBUb29sQmFyLlNhdmVTZXNuCTpjYWxsIDxTSUQ+U2F2ZVZpbVNlc24oKTxDUj4KKyAgYW4gMS4yNDAgVG9vbEJhci5SdW5TY3JpcHQJCTpicm93c2Ugc288Q1I+CisKKyAgYW4gMS4yNDUgVG9vbEJhci4tc2VwNi0JCTxOb3A+CisgIGFuIDEuMjUwIFRvb2xCYXIuTWFrZQkJCTptYWtlPENSPgorICBhbiAxLjI3MCBUb29sQmFyLlJ1bkN0YWdzCQk6ZXhlICIhIiAuIGc6Y3RhZ3NfY29tbWFuZDxDUj4KKyAgYW4gMS4yODAgVG9vbEJhci5UYWdKdW1wCQlnPEMtXT4KKworICBhbiAxLjI5NSBUb29sQmFyLi1zZXA3LQkJPE5vcD4KKyAgYW4gMS4zMDAgVG9vbEJhci5IZWxwCQkJOmhlbHA8Q1I+CisgIGFuIDxzaWxlbnQ+IDEuMzEwIFRvb2xCYXIuRmluZEhlbHAJOmNhbGwgPFNJRD5IZWxwZmluZCgpPENSPgorCisiIE9ubHkgc2V0IHRoZSB0b29sdGlwcyBoZXJlIGlmIG5vdCBkb25lIGluIGEgbGFuZ3VhZ2UgbWVudSBmaWxlCitpZiBleGlzdHMoIipEb190b29sYmFyX3RtZW51IikKKyAgY2FsbCBEb190b29sYmFyX3RtZW51KCkKK2Vsc2UKKyAgbGV0IGRpZF90b29sYmFyX3RtZW51ID0gMQorICB0bWVudSBUb29sQmFyLk9wZW4JCU9wZW4gZmlsZQorICB0bWVudSBUb29sQmFyLlNhdmUJCVNhdmUgY3VycmVudCBmaWxlCisgIHRtZW51IFRvb2xCYXIuU2F2ZUFsbAkJU2F2ZSBhbGwgZmlsZXMKKyAgdG1lbnUgVG9vbEJhci5QcmludAkJUHJpbnQKKyAgdG1lbnUgVG9vbEJhci5VbmRvCQlVbmRvCisgIHRtZW51IFRvb2xCYXIuUmVkbwkJUmVkbworICB0bWVudSBUb29sQmFyLkN1dAkJQ3V0IHRvIGNsaXBib2FyZAorICB0bWVudSBUb29sQmFyLkNvcHkJCUNvcHkgdG8gY2xpcGJvYXJkCisgIHRtZW51IFRvb2xCYXIuUGFzdGUJCVBhc3RlIGZyb20gQ2xpcGJvYXJkCisgIGlmICFoYXMoImd1aV9hdGhlbmEiKQorICAgIHRtZW51IFRvb2xCYXIuRmluZAkJRmluZC4uLgorICAgIHRtZW51IFRvb2xCYXIuRmluZE5leHQJRmluZCBOZXh0CisgICAgdG1lbnUgVG9vbEJhci5GaW5kUHJldglGaW5kIFByZXZpb3VzCisgICAgdG1lbnUgVG9vbEJhci5SZXBsYWNlCQlGaW5kIC8gUmVwbGFjZS4uLgorICBlbmRpZgorICB0bWVudSBUb29sQmFyLkxvYWRTZXNuCUNob29zZSBhIHNlc3Npb24gdG8gbG9hZAorICB0bWVudSBUb29sQmFyLlNhdmVTZXNuCVNhdmUgY3VycmVudCBzZXNzaW9uCisgIHRtZW51IFRvb2xCYXIuUnVuU2NyaXB0CUNob29zZSBhIFZpbSBTY3JpcHQgdG8gcnVuCisgIHRtZW51IFRvb2xCYXIuTWFrZQkJTWFrZSBjdXJyZW50IHByb2plY3QgKDptYWtlKQorICB0bWVudSBUb29sQmFyLlJ1bkN0YWdzCUJ1aWxkIHRhZ3MgaW4gY3VycmVudCBkaXJlY3RvcnkgdHJlZSAoIWN0YWdzIC1SIC4pCisgIHRtZW51IFRvb2xCYXIuVGFnSnVtcAkJSnVtcCB0byB0YWcgdW5kZXIgY3Vyc29yCisgIHRtZW51IFRvb2xCYXIuSGVscAkJVmltIEhlbHAKKyAgdG1lbnUgVG9vbEJhci5GaW5kSGVscAlTZWFyY2ggVmltIEhlbHAKK2VuZGlmCisKKyIgU2VsZWN0IGEgc2Vzc2lvbiB0byBsb2FkOyBkZWZhdWx0IHRvIGN1cnJlbnQgc2Vzc2lvbiBuYW1lIGlmIHByZXNlbnQKK2Z1biEgczpMb2FkVmltU2VzbigpCisgIGlmIHN0cmxlbih2OnRoaXNfc2Vzc2lvbikgPiAwCisgICAgbGV0IG5hbWUgPSBzOkZuYW1lRXNjYXBlKHY6dGhpc19zZXNzaW9uKQorICBlbHNlCisgICAgbGV0IG5hbWUgPSAiU2Vzc2lvbi52aW0iCisgIGVuZGlmCisgIGV4ZWN1dGUgImJyb3dzZSBzbyAiIC4gbmFtZQorZW5kZnVuCisKKyIgU2VsZWN0IGEgc2Vzc2lvbiB0byBzYXZlOyBkZWZhdWx0IHRvIGN1cnJlbnQgc2Vzc2lvbiBuYW1lIGlmIHByZXNlbnQKK2Z1biEgczpTYXZlVmltU2VzbigpCisgIGlmIHN0cmxlbih2OnRoaXNfc2Vzc2lvbikgPT0gMAorICAgIGxldCB2OnRoaXNfc2Vzc2lvbiA9ICJTZXNzaW9uLnZpbSIKKyAgZW5kaWYKKyAgZXhlY3V0ZSAiYnJvd3NlIG1rc2Vzc2lvbiEgIiAuIHM6Rm5hbWVFc2NhcGUodjp0aGlzX3Nlc3Npb24pCitlbmRmdW4KKworZW5kaWYKKworZW5kaWYgIiAhZXhpc3RzKCJkaWRfaW5zdGFsbF9kZWZhdWx0X21lbnVzIikKKworIiBEZWZpbmUgdGhlc2UgaXRlbXMgYWx3YXlzLCBzbyB0aGF0IHN5bnRheCBjYW4gYmUgc3dpdGNoZWQgb24gd2hlbiBpdCB3YXNuJ3QuCisiIEJ1dCBza2lwIHRoZW0gd2hlbiB0aGUgU3ludGF4IG1lbnUgd2FzIGRpc2FibGVkIGJ5IHRoZSB1c2VyLgoraWYgIWV4aXN0cygiZGlkX2luc3RhbGxfc3ludGF4X21lbnUiKQorICBhbiA1MC4yMTIgJlN5bnRheC4mTWFudWFsCQk6c3luIG1hbnVhbDxDUj4KKyAgYW4gNTAuMjE0ICZTeW50YXguQSZ1dG9tYXRpYwkJOnN5biBvbjxDUj4KKyAgYW4gPHNpbGVudD4gNTAuMjE2ICZTeW50YXgub24vb2ZmXCBmb3JcICZUaGlzXCBmaWxlIDpjYWxsIDxTSUQ+U3luT25PZmYoKTxDUj4KKyAgaWYgIWV4aXN0cygiKnM6U3luT25PZmYiKQorICAgIGZ1biBzOlN5bk9uT2ZmKCkKKyAgICAgIGlmIGhhcygic3ludGF4X2l0ZW1zIikKKwlzeW4gY2xlYXIKKyAgICAgIGVsc2UKKwlpZiAhZXhpc3RzKCJnOnN5bnRheF9vbiIpCisJICBzeW4gbWFudWFsCisJZW5kaWYKKwlzZXQgc3luPU9OCisgICAgICBlbmRpZgorICAgIGVuZGZ1bgorICBlbmRpZgorZW5kaWYKKworCisiIEluc3RhbGwgdGhlIFN5bnRheCBtZW51IG9ubHkgd2hlbiBmaWxldHlwZS52aW0gaGFzIGJlZW4gbG9hZGVkIG9yIHdoZW4KKyIgbWFudWFsIHN5bnRheCBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4KKyIgQXZvaWQgaW5zdGFsbGluZyB0aGUgU3ludGF4IG1lbnUgdHdpY2UuCitpZiAoZXhpc3RzKCJkaWRfbG9hZF9maWxldHlwZXMiKSB8fCBleGlzdHMoInN5bnRheF9vbiIpKQorCVwgJiYgIWV4aXN0cygiZGlkX2luc3RhbGxfc3ludGF4X21lbnUiKQorICBsZXQgZGlkX2luc3RhbGxfc3ludGF4X21lbnUgPSAxCisKKyIgU2tpcCBzZXR0aW5nIHVwIHRoZSBpbmRpdmlkdWFsIHN5bnRheCBzZWxlY3Rpb24gbWVudXMgdW5sZXNzCisiIGRvX3N5bnRheF9zZWxfbWVudSBpcyBkZWZpbmVkIChpdCB0YWtlcyBxdWl0ZSBhIGJpdCBvZiB0aW1lKS4KK2lmIGV4aXN0cygiZG9fc3ludGF4X3NlbF9tZW51IikKKyAgcnVudGltZSEgc3lubWVudS52aW0KK2Vsc2UKKyAgYW4gNTAuMTAgJlN5bnRheC4mU2hvd1wgZmlsZXR5cGVzXCBpblwgbWVudQk6bGV0IGRvX3N5bnRheF9zZWxfbWVudSA9IDE8QmFyPnJ1bnRpbWUhIHN5bm1lbnUudmltPEJhcj5hdW5tZW51ICZTeW50YXguJlNob3dcIGZpbGV0eXBlc1wgaW5cIG1lbnU8Q1I+CisgIGFuIDUwLjE5NSAmU3ludGF4Li1TRVAxLQkJPE5vcD4KK2VuZGlmCisKK2FuIDUwLjIxMCAmU3ludGF4LiZPZmYJCQk6c3luIG9mZjxDUj4KK2FuIDUwLjcwMCAmU3ludGF4Li1TRVAzLQkJPE5vcD4KK2FuIDUwLjcxMCAmU3ludGF4LkNvJmxvclwgdGVzdAkJOnNwICRWSU1SVU5USU1FL3N5bnRheC9jb2xvcnRlc3QudmltPEJhcj5zbyAlPENSPgorYW4gNTAuNzIwICZTeW50YXguJkhpZ2hsaWdodFwgdGVzdAk6cnVudGltZSBzeW50YXgvaGl0ZXN0LnZpbTxDUj4KK2FuIDUwLjczMCAmU3ludGF4LiZDb252ZXJ0XCB0b1wgSFRNTAk6cnVudGltZSBzeW50YXgvMmh0bWwudmltPENSPgorCitlbmRpZiAiICFleGlzdHMoImRpZF9pbnN0YWxsX3N5bnRheF9tZW51IikKKworIiBSZXN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSBvZiAnY3BvcHRpb25zJy4KK2xldCAmY3BvID0gczpjcG9fc2F2ZQordW5sZXQgczpjcG9fc2F2ZQorCisiIHZpbTogc2V0IHN3PTIgOgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL3JnYi50eHQgYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvcmdiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmMyYmFhCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS90dXRvci9ydW50aW1lL3JnYi50eHQKQEAgLTAsMCArMSw3NTMgQEAKKyEgJFhDb25zb3J0aXVtOiByZ2IudHh0LHYgMTAuNDEgOTQvMDIvMjAgMTg6Mzk6MzYgcndzIEV4cCAkCisyNTUgMjUwIDI1MAkJc25vdworMjQ4IDI0OCAyNTUJCWdob3N0IHdoaXRlCisyNDggMjQ4IDI1NQkJR2hvc3RXaGl0ZQorMjQ1IDI0NSAyNDUJCXdoaXRlIHNtb2tlCisyNDUgMjQ1IDI0NQkJV2hpdGVTbW9rZQorMjIwIDIyMCAyMjAJCWdhaW5zYm9ybworMjU1IDI1MCAyNDAJCWZsb3JhbCB3aGl0ZQorMjU1IDI1MCAyNDAJCUZsb3JhbFdoaXRlCisyNTMgMjQ1IDIzMAkJb2xkIGxhY2UKKzI1MyAyNDUgMjMwCQlPbGRMYWNlCisyNTAgMjQwIDIzMAkJbGluZW4KKzI1MCAyMzUgMjE1CQlhbnRpcXVlIHdoaXRlCisyNTAgMjM1IDIxNQkJQW50aXF1ZVdoaXRlCisyNTUgMjM5IDIxMwkJcGFwYXlhIHdoaXAKKzI1NSAyMzkgMjEzCQlQYXBheWFXaGlwCisyNTUgMjM1IDIwNQkJYmxhbmNoZWQgYWxtb25kCisyNTUgMjM1IDIwNQkJQmxhbmNoZWRBbG1vbmQKKzI1NSAyMjggMTk2CQliaXNxdWUKKzI1NSAyMTggMTg1CQlwZWFjaCBwdWZmCisyNTUgMjE4IDE4NQkJUGVhY2hQdWZmCisyNTUgMjIyIDE3MwkJbmF2YWpvIHdoaXRlCisyNTUgMjIyIDE3MwkJTmF2YWpvV2hpdGUKKzI1NSAyMjggMTgxCQltb2NjYXNpbgorMjU1IDI0OCAyMjAJCWNvcm5zaWxrCisyNTUgMjU1IDI0MAkJaXZvcnkKKzI1NSAyNTAgMjA1CQlsZW1vbiBjaGlmZm9uCisyNTUgMjUwIDIwNQkJTGVtb25DaGlmZm9uCisyNTUgMjQ1IDIzOAkJc2Vhc2hlbGwKKzI0MCAyNTUgMjQwCQlob25leWRldworMjQ1IDI1NSAyNTAJCW1pbnQgY3JlYW0KKzI0NSAyNTUgMjUwCQlNaW50Q3JlYW0KKzI0MCAyNTUgMjU1CQlhenVyZQorMjQwIDI0OCAyNTUJCWFsaWNlIGJsdWUKKzI0MCAyNDggMjU1CQlBbGljZUJsdWUKKzIzMCAyMzAgMjUwCQlsYXZlbmRlcgorMjU1IDI0MCAyNDUJCWxhdmVuZGVyIGJsdXNoCisyNTUgMjQwIDI0NQkJTGF2ZW5kZXJCbHVzaAorMjU1IDIyOCAyMjUJCW1pc3R5IHJvc2UKKzI1NSAyMjggMjI1CQlNaXN0eVJvc2UKKzI1NSAyNTUgMjU1CQl3aGl0ZQorICAwICAgMCAgIDAJCWJsYWNrCisgNDcgIDc5ICA3OQkJZGFyayBzbGF0ZSBncmF5CisgNDcgIDc5ICA3OQkJRGFya1NsYXRlR3JheQorIDQ3ICA3OSAgNzkJCWRhcmsgc2xhdGUgZ3JleQorIDQ3ICA3OSAgNzkJCURhcmtTbGF0ZUdyZXkKKzEwNSAxMDUgMTA1CQlkaW0gZ3JheQorMTA1IDEwNSAxMDUJCURpbUdyYXkKKzEwNSAxMDUgMTA1CQlkaW0gZ3JleQorMTA1IDEwNSAxMDUJCURpbUdyZXkKKzExMiAxMjggMTQ0CQlzbGF0ZSBncmF5CisxMTIgMTI4IDE0NAkJU2xhdGVHcmF5CisxMTIgMTI4IDE0NAkJc2xhdGUgZ3JleQorMTEyIDEyOCAxNDQJCVNsYXRlR3JleQorMTE5IDEzNiAxNTMJCWxpZ2h0IHNsYXRlIGdyYXkKKzExOSAxMzYgMTUzCQlMaWdodFNsYXRlR3JheQorMTE5IDEzNiAxNTMJCWxpZ2h0IHNsYXRlIGdyZXkKKzExOSAxMzYgMTUzCQlMaWdodFNsYXRlR3JleQorMTkwIDE5MCAxOTAJCWdyYXkKKzE5MCAxOTAgMTkwCQlncmV5CisyMTEgMjExIDIxMQkJbGlnaHQgZ3JleQorMjExIDIxMSAyMTEJCUxpZ2h0R3JleQorMjExIDIxMSAyMTEJCWxpZ2h0IGdyYXkKKzIxMSAyMTEgMjExCQlMaWdodEdyYXkKKyAyNSAgMjUgMTEyCQltaWRuaWdodCBibHVlCisgMjUgIDI1IDExMgkJTWlkbmlnaHRCbHVlCisgIDAgICAwIDEyOAkJbmF2eQorICAwICAgMCAxMjgJCW5hdnkgYmx1ZQorICAwICAgMCAxMjgJCU5hdnlCbHVlCisxMDAgMTQ5IDIzNwkJY29ybmZsb3dlciBibHVlCisxMDAgMTQ5IDIzNwkJQ29ybmZsb3dlckJsdWUKKyA3MiAgNjEgMTM5CQlkYXJrIHNsYXRlIGJsdWUKKyA3MiAgNjEgMTM5CQlEYXJrU2xhdGVCbHVlCisxMDYgIDkwIDIwNQkJc2xhdGUgYmx1ZQorMTA2ICA5MCAyMDUJCVNsYXRlQmx1ZQorMTIzIDEwNCAyMzgJCW1lZGl1bSBzbGF0ZSBibHVlCisxMjMgMTA0IDIzOAkJTWVkaXVtU2xhdGVCbHVlCisxMzIgMTEyIDI1NQkJbGlnaHQgc2xhdGUgYmx1ZQorMTMyIDExMiAyNTUJCUxpZ2h0U2xhdGVCbHVlCisgIDAgICAwIDIwNQkJbWVkaXVtIGJsdWUKKyAgMCAgIDAgMjA1CQlNZWRpdW1CbHVlCisgNjUgMTA1IDIyNQkJcm95YWwgYmx1ZQorIDY1IDEwNSAyMjUJCVJveWFsQmx1ZQorICAwICAgMCAyNTUJCWJsdWUKKyAzMCAxNDQgMjU1CQlkb2RnZXIgYmx1ZQorIDMwIDE0NCAyNTUJCURvZGdlckJsdWUKKyAgMCAxOTEgMjU1CQlkZWVwIHNreSBibHVlCisgIDAgMTkxIDI1NQkJRGVlcFNreUJsdWUKKzEzNSAyMDYgMjM1CQlza3kgYmx1ZQorMTM1IDIwNiAyMzUJCVNreUJsdWUKKzEzNSAyMDYgMjUwCQlsaWdodCBza3kgYmx1ZQorMTM1IDIwNiAyNTAJCUxpZ2h0U2t5Qmx1ZQorIDcwIDEzMCAxODAJCXN0ZWVsIGJsdWUKKyA3MCAxMzAgMTgwCQlTdGVlbEJsdWUKKzE3NiAxOTYgMjIyCQlsaWdodCBzdGVlbCBibHVlCisxNzYgMTk2IDIyMgkJTGlnaHRTdGVlbEJsdWUKKzE3MyAyMTYgMjMwCQlsaWdodCBibHVlCisxNzMgMjE2IDIzMAkJTGlnaHRCbHVlCisxNzYgMjI0IDIzMAkJcG93ZGVyIGJsdWUKKzE3NiAyMjQgMjMwCQlQb3dkZXJCbHVlCisxNzUgMjM4IDIzOAkJcGFsZSB0dXJxdW9pc2UKKzE3NSAyMzggMjM4CQlQYWxlVHVycXVvaXNlCisgIDAgMjA2IDIwOQkJZGFyayB0dXJxdW9pc2UKKyAgMCAyMDYgMjA5CQlEYXJrVHVycXVvaXNlCisgNzIgMjA5IDIwNAkJbWVkaXVtIHR1cnF1b2lzZQorIDcyIDIwOSAyMDQJCU1lZGl1bVR1cnF1b2lzZQorIDY0IDIyNCAyMDgJCXR1cnF1b2lzZQorICAwIDI1NSAyNTUJCWN5YW4KKzIyNCAyNTUgMjU1CQlsaWdodCBjeWFuCisyMjQgMjU1IDI1NQkJTGlnaHRDeWFuCisgOTUgMTU4IDE2MAkJY2FkZXQgYmx1ZQorIDk1IDE1OCAxNjAJCUNhZGV0Qmx1ZQorMTAyIDIwNSAxNzAJCW1lZGl1bSBhcXVhbWFyaW5lCisxMDIgMjA1IDE3MAkJTWVkaXVtQXF1YW1hcmluZQorMTI3IDI1NSAyMTIJCWFxdWFtYXJpbmUKKyAgMCAxMDAgICAwCQlkYXJrIGdyZWVuCisgIDAgMTAwICAgMAkJRGFya0dyZWVuCisgODUgMTA3ICA0NwkJZGFyayBvbGl2ZSBncmVlbgorIDg1IDEwNyAgNDcJCURhcmtPbGl2ZUdyZWVuCisxNDMgMTg4IDE0MwkJZGFyayBzZWEgZ3JlZW4KKzE0MyAxODggMTQzCQlEYXJrU2VhR3JlZW4KKyA0NiAxMzkgIDg3CQlzZWEgZ3JlZW4KKyA0NiAxMzkgIDg3CQlTZWFHcmVlbgorIDYwIDE3OSAxMTMJCW1lZGl1bSBzZWEgZ3JlZW4KKyA2MCAxNzkgMTEzCQlNZWRpdW1TZWFHcmVlbgorIDMyIDE3OCAxNzAJCWxpZ2h0IHNlYSBncmVlbgorIDMyIDE3OCAxNzAJCUxpZ2h0U2VhR3JlZW4KKzE1MiAyNTEgMTUyCQlwYWxlIGdyZWVuCisxNTIgMjUxIDE1MgkJUGFsZUdyZWVuCisgIDAgMjU1IDEyNwkJc3ByaW5nIGdyZWVuCisgIDAgMjU1IDEyNwkJU3ByaW5nR3JlZW4KKzEyNCAyNTIgICAwCQlsYXduIGdyZWVuCisxMjQgMjUyICAgMAkJTGF3bkdyZWVuCisgIDAgMjU1ICAgMAkJZ3JlZW4KKzEyNyAyNTUgICAwCQljaGFydHJldXNlCisgIDAgMjUwIDE1NAkJbWVkaXVtIHNwcmluZyBncmVlbgorICAwIDI1MCAxNTQJCU1lZGl1bVNwcmluZ0dyZWVuCisxNzMgMjU1ICA0NwkJZ3JlZW4geWVsbG93CisxNzMgMjU1ICA0NwkJR3JlZW5ZZWxsb3cKKyA1MCAyMDUgIDUwCQlsaW1lIGdyZWVuCisgNTAgMjA1ICA1MAkJTGltZUdyZWVuCisxNTQgMjA1ICA1MAkJeWVsbG93IGdyZWVuCisxNTQgMjA1ICA1MAkJWWVsbG93R3JlZW4KKyAzNCAxMzkgIDM0CQlmb3Jlc3QgZ3JlZW4KKyAzNCAxMzkgIDM0CQlGb3Jlc3RHcmVlbgorMTA3IDE0MiAgMzUJCW9saXZlIGRyYWIKKzEwNyAxNDIgIDM1CQlPbGl2ZURyYWIKKzE4OSAxODMgMTA3CQlkYXJrIGtoYWtpCisxODkgMTgzIDEwNwkJRGFya0toYWtpCisyNDAgMjMwIDE0MAkJa2hha2kKKzIzOCAyMzIgMTcwCQlwYWxlIGdvbGRlbnJvZAorMjM4IDIzMiAxNzAJCVBhbGVHb2xkZW5yb2QKKzI1MCAyNTAgMjEwCQlsaWdodCBnb2xkZW5yb2QgeWVsbG93CisyNTAgMjUwIDIxMAkJTGlnaHRHb2xkZW5yb2RZZWxsb3cKKzI1NSAyNTUgMjI0CQlsaWdodCB5ZWxsb3cKKzI1NSAyNTUgMjI0CQlMaWdodFllbGxvdworMjU1IDI1NSAgIDAJCXllbGxvdworMjU1IDIxNSAgIDAJCWdvbGQKKzIzOCAyMjEgMTMwCQlsaWdodCBnb2xkZW5yb2QKKzIzOCAyMjEgMTMwCQlMaWdodEdvbGRlbnJvZAorMjE4IDE2NSAgMzIJCWdvbGRlbnJvZAorMTg0IDEzNCAgMTEJCWRhcmsgZ29sZGVucm9kCisxODQgMTM0ICAxMQkJRGFya0dvbGRlbnJvZAorMTg4IDE0MyAxNDMJCXJvc3kgYnJvd24KKzE4OCAxNDMgMTQzCQlSb3N5QnJvd24KKzIwNSAgOTIgIDkyCQlpbmRpYW4gcmVkCisyMDUgIDkyICA5MgkJSW5kaWFuUmVkCisxMzkgIDY5ICAxOQkJc2FkZGxlIGJyb3duCisxMzkgIDY5ICAxOQkJU2FkZGxlQnJvd24KKzE2MCAgODIgIDQ1CQlzaWVubmEKKzIwNSAxMzMgIDYzCQlwZXJ1CisyMjIgMTg0IDEzNQkJYnVybHl3b29kCisyNDUgMjQ1IDIyMAkJYmVpZ2UKKzI0NSAyMjIgMTc5CQl3aGVhdAorMjQ0IDE2NCAgOTYJCXNhbmR5IGJyb3duCisyNDQgMTY0ICA5NgkJU2FuZHlCcm93bgorMjEwIDE4MCAxNDAJCXRhbgorMjEwIDEwNSAgMzAJCWNob2NvbGF0ZQorMTc4ICAzNCAgMzQJCWZpcmVicmljaworMTY1ICA0MiAgNDIJCWJyb3duCisyMzMgMTUwIDEyMgkJZGFyayBzYWxtb24KKzIzMyAxNTAgMTIyCQlEYXJrU2FsbW9uCisyNTAgMTI4IDExNAkJc2FsbW9uCisyNTUgMTYwIDEyMgkJbGlnaHQgc2FsbW9uCisyNTUgMTYwIDEyMgkJTGlnaHRTYWxtb24KKzI1NSAxNjUgICAwCQlvcmFuZ2UKKzI1NSAxNDAgICAwCQlkYXJrIG9yYW5nZQorMjU1IDE0MCAgIDAJCURhcmtPcmFuZ2UKKzI1NSAxMjcgIDgwCQljb3JhbAorMjQwIDEyOCAxMjgJCWxpZ2h0IGNvcmFsCisyNDAgMTI4IDEyOAkJTGlnaHRDb3JhbAorMjU1ICA5OSAgNzEJCXRvbWF0bworMjU1ICA2OSAgIDAJCW9yYW5nZSByZWQKKzI1NSAgNjkgICAwCQlPcmFuZ2VSZWQKKzI1NSAgIDAgICAwCQlyZWQKKzI1NSAxMDUgMTgwCQlob3QgcGluaworMjU1IDEwNSAxODAJCUhvdFBpbmsKKzI1NSAgMjAgMTQ3CQlkZWVwIHBpbmsKKzI1NSAgMjAgMTQ3CQlEZWVwUGluaworMjU1IDE5MiAyMDMJCXBpbmsKKzI1NSAxODIgMTkzCQlsaWdodCBwaW5rCisyNTUgMTgyIDE5MwkJTGlnaHRQaW5rCisyMTkgMTEyIDE0NwkJcGFsZSB2aW9sZXQgcmVkCisyMTkgMTEyIDE0NwkJUGFsZVZpb2xldFJlZAorMTc2ICA0OCAgOTYJCW1hcm9vbgorMTk5ICAyMSAxMzMJCW1lZGl1bSB2aW9sZXQgcmVkCisxOTkgIDIxIDEzMwkJTWVkaXVtVmlvbGV0UmVkCisyMDggIDMyIDE0NAkJdmlvbGV0IHJlZAorMjA4ICAzMiAxNDQJCVZpb2xldFJlZAorMjU1ICAgMCAyNTUJCW1hZ2VudGEKKzIzOCAxMzAgMjM4CQl2aW9sZXQKKzIyMSAxNjAgMjIxCQlwbHVtCisyMTggMTEyIDIxNAkJb3JjaGlkCisxODYgIDg1IDIxMQkJbWVkaXVtIG9yY2hpZAorMTg2ICA4NSAyMTEJCU1lZGl1bU9yY2hpZAorMTUzICA1MCAyMDQJCWRhcmsgb3JjaGlkCisxNTMgIDUwIDIwNAkJRGFya09yY2hpZAorMTQ4ICAgMCAyMTEJCWRhcmsgdmlvbGV0CisxNDggICAwIDIxMQkJRGFya1Zpb2xldAorMTM4ICA0MyAyMjYJCWJsdWUgdmlvbGV0CisxMzggIDQzIDIyNgkJQmx1ZVZpb2xldAorMTYwICAzMiAyNDAJCXB1cnBsZQorMTQ3IDExMiAyMTkJCW1lZGl1bSBwdXJwbGUKKzE0NyAxMTIgMjE5CQlNZWRpdW1QdXJwbGUKKzIxNiAxOTEgMjE2CQl0aGlzdGxlCisyNTUgMjUwIDI1MAkJc25vdzEKKzIzOCAyMzMgMjMzCQlzbm93MgorMjA1IDIwMSAyMDEJCXNub3czCisxMzkgMTM3IDEzNwkJc25vdzQKKzI1NSAyNDUgMjM4CQlzZWFzaGVsbDEKKzIzOCAyMjkgMjIyCQlzZWFzaGVsbDIKKzIwNSAxOTcgMTkxCQlzZWFzaGVsbDMKKzEzOSAxMzQgMTMwCQlzZWFzaGVsbDQKKzI1NSAyMzkgMjE5CQlBbnRpcXVlV2hpdGUxCisyMzggMjIzIDIwNAkJQW50aXF1ZVdoaXRlMgorMjA1IDE5MiAxNzYJCUFudGlxdWVXaGl0ZTMKKzEzOSAxMzEgMTIwCQlBbnRpcXVlV2hpdGU0CisyNTUgMjI4IDE5NgkJYmlzcXVlMQorMjM4IDIxMyAxODMJCWJpc3F1ZTIKKzIwNSAxODMgMTU4CQliaXNxdWUzCisxMzkgMTI1IDEwNwkJYmlzcXVlNAorMjU1IDIxOCAxODUJCVBlYWNoUHVmZjEKKzIzOCAyMDMgMTczCQlQZWFjaFB1ZmYyCisyMDUgMTc1IDE0OQkJUGVhY2hQdWZmMworMTM5IDExOSAxMDEJCVBlYWNoUHVmZjQKKzI1NSAyMjIgMTczCQlOYXZham9XaGl0ZTEKKzIzOCAyMDcgMTYxCQlOYXZham9XaGl0ZTIKKzIwNSAxNzkgMTM5CQlOYXZham9XaGl0ZTMKKzEzOSAxMjEJIDk0CQlOYXZham9XaGl0ZTQKKzI1NSAyNTAgMjA1CQlMZW1vbkNoaWZmb24xCisyMzggMjMzIDE5MQkJTGVtb25DaGlmZm9uMgorMjA1IDIwMSAxNjUJCUxlbW9uQ2hpZmZvbjMKKzEzOSAxMzcgMTEyCQlMZW1vbkNoaWZmb240CisyNTUgMjQ4IDIyMAkJY29ybnNpbGsxCisyMzggMjMyIDIwNQkJY29ybnNpbGsyCisyMDUgMjAwIDE3NwkJY29ybnNpbGszCisxMzkgMTM2IDEyMAkJY29ybnNpbGs0CisyNTUgMjU1IDI0MAkJaXZvcnkxCisyMzggMjM4IDIyNAkJaXZvcnkyCisyMDUgMjA1IDE5MwkJaXZvcnkzCisxMzkgMTM5IDEzMQkJaXZvcnk0CisyNDAgMjU1IDI0MAkJaG9uZXlkZXcxCisyMjQgMjM4IDIyNAkJaG9uZXlkZXcyCisxOTMgMjA1IDE5MwkJaG9uZXlkZXczCisxMzEgMTM5IDEzMQkJaG9uZXlkZXc0CisyNTUgMjQwIDI0NQkJTGF2ZW5kZXJCbHVzaDEKKzIzOCAyMjQgMjI5CQlMYXZlbmRlckJsdXNoMgorMjA1IDE5MyAxOTcJCUxhdmVuZGVyQmx1c2gzCisxMzkgMTMxIDEzNAkJTGF2ZW5kZXJCbHVzaDQKKzI1NSAyMjggMjI1CQlNaXN0eVJvc2UxCisyMzggMjEzIDIxMAkJTWlzdHlSb3NlMgorMjA1IDE4MyAxODEJCU1pc3R5Um9zZTMKKzEzOSAxMjUgMTIzCQlNaXN0eVJvc2U0CisyNDAgMjU1IDI1NQkJYXp1cmUxCisyMjQgMjM4IDIzOAkJYXp1cmUyCisxOTMgMjA1IDIwNQkJYXp1cmUzCisxMzEgMTM5IDEzOQkJYXp1cmU0CisxMzEgMTExIDI1NQkJU2xhdGVCbHVlMQorMTIyIDEwMyAyMzgJCVNsYXRlQmx1ZTIKKzEwNSAgODkgMjA1CQlTbGF0ZUJsdWUzCisgNzEgIDYwIDEzOQkJU2xhdGVCbHVlNAorIDcyIDExOCAyNTUJCVJveWFsQmx1ZTEKKyA2NyAxMTAgMjM4CQlSb3lhbEJsdWUyCisgNTggIDk1IDIwNQkJUm95YWxCbHVlMworIDM5ICA2NCAxMzkJCVJveWFsQmx1ZTQKKyAgMCAgIDAgMjU1CQlibHVlMQorICAwICAgMCAyMzgJCWJsdWUyCisgIDAgICAwIDIwNQkJYmx1ZTMKKyAgMCAgIDAgMTM5CQlibHVlNAorIDMwIDE0NCAyNTUJCURvZGdlckJsdWUxCisgMjggMTM0IDIzOAkJRG9kZ2VyQmx1ZTIKKyAyNCAxMTYgMjA1CQlEb2RnZXJCbHVlMworIDE2ICA3OCAxMzkJCURvZGdlckJsdWU0CisgOTkgMTg0IDI1NQkJU3RlZWxCbHVlMQorIDkyIDE3MiAyMzgJCVN0ZWVsQmx1ZTIKKyA3OSAxNDggMjA1CQlTdGVlbEJsdWUzCisgNTQgMTAwIDEzOQkJU3RlZWxCbHVlNAorICAwIDE5MSAyNTUJCURlZXBTa3lCbHVlMQorICAwIDE3OCAyMzgJCURlZXBTa3lCbHVlMgorICAwIDE1NCAyMDUJCURlZXBTa3lCbHVlMworICAwIDEwNCAxMzkJCURlZXBTa3lCbHVlNAorMTM1IDIwNiAyNTUJCVNreUJsdWUxCisxMjYgMTkyIDIzOAkJU2t5Qmx1ZTIKKzEwOCAxNjYgMjA1CQlTa3lCbHVlMworIDc0IDExMiAxMzkJCVNreUJsdWU0CisxNzYgMjI2IDI1NQkJTGlnaHRTa3lCbHVlMQorMTY0IDIxMSAyMzgJCUxpZ2h0U2t5Qmx1ZTIKKzE0MSAxODIgMjA1CQlMaWdodFNreUJsdWUzCisgOTYgMTIzIDEzOQkJTGlnaHRTa3lCbHVlNAorMTk4IDIyNiAyNTUJCVNsYXRlR3JheTEKKzE4NSAyMTEgMjM4CQlTbGF0ZUdyYXkyCisxNTkgMTgyIDIwNQkJU2xhdGVHcmF5MworMTA4IDEyMyAxMzkJCVNsYXRlR3JheTQKKzIwMiAyMjUgMjU1CQlMaWdodFN0ZWVsQmx1ZTEKKzE4OCAyMTAgMjM4CQlMaWdodFN0ZWVsQmx1ZTIKKzE2MiAxODEgMjA1CQlMaWdodFN0ZWVsQmx1ZTMKKzExMCAxMjMgMTM5CQlMaWdodFN0ZWVsQmx1ZTQKKzE5MSAyMzkgMjU1CQlMaWdodEJsdWUxCisxNzggMjIzIDIzOAkJTGlnaHRCbHVlMgorMTU0IDE5MiAyMDUJCUxpZ2h0Qmx1ZTMKKzEwNCAxMzEgMTM5CQlMaWdodEJsdWU0CisyMjQgMjU1IDI1NQkJTGlnaHRDeWFuMQorMjA5IDIzOCAyMzgJCUxpZ2h0Q3lhbjIKKzE4MCAyMDUgMjA1CQlMaWdodEN5YW4zCisxMjIgMTM5IDEzOQkJTGlnaHRDeWFuNAorMTg3IDI1NSAyNTUJCVBhbGVUdXJxdW9pc2UxCisxNzQgMjM4IDIzOAkJUGFsZVR1cnF1b2lzZTIKKzE1MCAyMDUgMjA1CQlQYWxlVHVycXVvaXNlMworMTAyIDEzOSAxMzkJCVBhbGVUdXJxdW9pc2U0CisxNTIgMjQ1IDI1NQkJQ2FkZXRCbHVlMQorMTQyIDIyOSAyMzgJCUNhZGV0Qmx1ZTIKKzEyMiAxOTcgMjA1CQlDYWRldEJsdWUzCisgODMgMTM0IDEzOQkJQ2FkZXRCbHVlNAorICAwIDI0NSAyNTUJCXR1cnF1b2lzZTEKKyAgMCAyMjkgMjM4CQl0dXJxdW9pc2UyCisgIDAgMTk3IDIwNQkJdHVycXVvaXNlMworICAwIDEzNCAxMzkJCXR1cnF1b2lzZTQKKyAgMCAyNTUgMjU1CQljeWFuMQorICAwIDIzOCAyMzgJCWN5YW4yCisgIDAgMjA1IDIwNQkJY3lhbjMKKyAgMCAxMzkgMTM5CQljeWFuNAorMTUxIDI1NSAyNTUJCURhcmtTbGF0ZUdyYXkxCisxNDEgMjM4IDIzOAkJRGFya1NsYXRlR3JheTIKKzEyMSAyMDUgMjA1CQlEYXJrU2xhdGVHcmF5MworIDgyIDEzOSAxMzkJCURhcmtTbGF0ZUdyYXk0CisxMjcgMjU1IDIxMgkJYXF1YW1hcmluZTEKKzExOCAyMzggMTk4CQlhcXVhbWFyaW5lMgorMTAyIDIwNSAxNzAJCWFxdWFtYXJpbmUzCisgNjkgMTM5IDExNgkJYXF1YW1hcmluZTQKKzE5MyAyNTUgMTkzCQlEYXJrU2VhR3JlZW4xCisxODAgMjM4IDE4MAkJRGFya1NlYUdyZWVuMgorMTU1IDIwNSAxNTUJCURhcmtTZWFHcmVlbjMKKzEwNSAxMzkgMTA1CQlEYXJrU2VhR3JlZW40CisgODQgMjU1IDE1OQkJU2VhR3JlZW4xCisgNzggMjM4IDE0OAkJU2VhR3JlZW4yCisgNjcgMjA1IDEyOAkJU2VhR3JlZW4zCisgNDYgMTM5CSA4NwkJU2VhR3JlZW40CisxNTQgMjU1IDE1NAkJUGFsZUdyZWVuMQorMTQ0IDIzOCAxNDQJCVBhbGVHcmVlbjIKKzEyNCAyMDUgMTI0CQlQYWxlR3JlZW4zCisgODQgMTM5CSA4NAkJUGFsZUdyZWVuNAorICAwIDI1NSAxMjcJCVNwcmluZ0dyZWVuMQorICAwIDIzOCAxMTgJCVNwcmluZ0dyZWVuMgorICAwIDIwNSAxMDIJCVNwcmluZ0dyZWVuMworICAwIDEzOQkgNjkJCVNwcmluZ0dyZWVuNAorICAwIDI1NQkgIDAJCWdyZWVuMQorICAwIDIzOAkgIDAJCWdyZWVuMgorICAwIDIwNQkgIDAJCWdyZWVuMworICAwIDEzOQkgIDAJCWdyZWVuNAorMTI3IDI1NQkgIDAJCWNoYXJ0cmV1c2UxCisxMTggMjM4CSAgMAkJY2hhcnRyZXVzZTIKKzEwMiAyMDUJICAwCQljaGFydHJldXNlMworIDY5IDEzOQkgIDAJCWNoYXJ0cmV1c2U0CisxOTIgMjU1CSA2MgkJT2xpdmVEcmFiMQorMTc5IDIzOAkgNTgJCU9saXZlRHJhYjIKKzE1NCAyMDUJIDUwCQlPbGl2ZURyYWIzCisxMDUgMTM5CSAzNAkJT2xpdmVEcmFiNAorMjAyIDI1NSAxMTIJCURhcmtPbGl2ZUdyZWVuMQorMTg4IDIzOCAxMDQJCURhcmtPbGl2ZUdyZWVuMgorMTYyIDIwNQkgOTAJCURhcmtPbGl2ZUdyZWVuMworMTEwIDEzOQkgNjEJCURhcmtPbGl2ZUdyZWVuNAorMjU1IDI0NiAxNDMJCWtoYWtpMQorMjM4IDIzMCAxMzMJCWtoYWtpMgorMjA1IDE5OCAxMTUJCWtoYWtpMworMTM5IDEzNAkgNzgJCWtoYWtpNAorMjU1IDIzNiAxMzkJCUxpZ2h0R29sZGVucm9kMQorMjM4IDIyMCAxMzAJCUxpZ2h0R29sZGVucm9kMgorMjA1IDE5MCAxMTIJCUxpZ2h0R29sZGVucm9kMworMTM5IDEyOQkgNzYJCUxpZ2h0R29sZGVucm9kNAorMjU1IDI1NSAyMjQJCUxpZ2h0WWVsbG93MQorMjM4IDIzOCAyMDkJCUxpZ2h0WWVsbG93MgorMjA1IDIwNSAxODAJCUxpZ2h0WWVsbG93MworMTM5IDEzOSAxMjIJCUxpZ2h0WWVsbG93NAorMjU1IDI1NQkgIDAJCXllbGxvdzEKKzIzOCAyMzgJICAwCQl5ZWxsb3cyCisyMDUgMjA1CSAgMAkJeWVsbG93MworMTM5IDEzOQkgIDAJCXllbGxvdzQKKzI1NSAyMTUJICAwCQlnb2xkMQorMjM4IDIwMQkgIDAJCWdvbGQyCisyMDUgMTczCSAgMAkJZ29sZDMKKzEzOSAxMTcJICAwCQlnb2xkNAorMjU1IDE5MwkgMzcJCWdvbGRlbnJvZDEKKzIzOCAxODAJIDM0CQlnb2xkZW5yb2QyCisyMDUgMTU1CSAyOQkJZ29sZGVucm9kMworMTM5IDEwNQkgMjAJCWdvbGRlbnJvZDQKKzI1NSAxODUJIDE1CQlEYXJrR29sZGVucm9kMQorMjM4IDE3MwkgMTQJCURhcmtHb2xkZW5yb2QyCisyMDUgMTQ5CSAxMgkJRGFya0dvbGRlbnJvZDMKKzEzOSAxMDEJICA4CQlEYXJrR29sZGVucm9kNAorMjU1IDE5MyAxOTMJCVJvc3lCcm93bjEKKzIzOCAxODAgMTgwCQlSb3N5QnJvd24yCisyMDUgMTU1IDE1NQkJUm9zeUJyb3duMworMTM5IDEwNSAxMDUJCVJvc3lCcm93bjQKKzI1NSAxMDYgMTA2CQlJbmRpYW5SZWQxCisyMzggIDk5CSA5OQkJSW5kaWFuUmVkMgorMjA1ICA4NQkgODUJCUluZGlhblJlZDMKKzEzOSAgNTgJIDU4CQlJbmRpYW5SZWQ0CisyNTUgMTMwCSA3MQkJc2llbm5hMQorMjM4IDEyMQkgNjYJCXNpZW5uYTIKKzIwNSAxMDQJIDU3CQlzaWVubmEzCisxMzkgIDcxCSAzOAkJc2llbm5hNAorMjU1IDIxMSAxNTUJCWJ1cmx5d29vZDEKKzIzOCAxOTcgMTQ1CQlidXJseXdvb2QyCisyMDUgMTcwIDEyNQkJYnVybHl3b29kMworMTM5IDExNQkgODUJCWJ1cmx5d29vZDQKKzI1NSAyMzEgMTg2CQl3aGVhdDEKKzIzOCAyMTYgMTc0CQl3aGVhdDIKKzIwNSAxODYgMTUwCQl3aGVhdDMKKzEzOSAxMjYgMTAyCQl3aGVhdDQKKzI1NSAxNjUJIDc5CQl0YW4xCisyMzggMTU0CSA3MwkJdGFuMgorMjA1IDEzMwkgNjMJCXRhbjMKKzEzOSAgOTAJIDQzCQl0YW40CisyNTUgMTI3CSAzNgkJY2hvY29sYXRlMQorMjM4IDExOAkgMzMJCWNob2NvbGF0ZTIKKzIwNSAxMDIJIDI5CQljaG9jb2xhdGUzCisxMzkgIDY5CSAxOQkJY2hvY29sYXRlNAorMjU1ICA0OAkgNDgJCWZpcmVicmljazEKKzIzOCAgNDQJIDQ0CQlmaXJlYnJpY2syCisyMDUgIDM4CSAzOAkJZmlyZWJyaWNrMworMTM5ICAyNgkgMjYJCWZpcmVicmljazQKKzI1NSAgNjQJIDY0CQlicm93bjEKKzIzOCAgNTkJIDU5CQlicm93bjIKKzIwNSAgNTEJIDUxCQlicm93bjMKKzEzOSAgMzUJIDM1CQlicm93bjQKKzI1NSAxNDAgMTA1CQlzYWxtb24xCisyMzggMTMwCSA5OAkJc2FsbW9uMgorMjA1IDExMgkgODQJCXNhbG1vbjMKKzEzOSAgNzYJIDU3CQlzYWxtb240CisyNTUgMTYwIDEyMgkJTGlnaHRTYWxtb24xCisyMzggMTQ5IDExNAkJTGlnaHRTYWxtb24yCisyMDUgMTI5CSA5OAkJTGlnaHRTYWxtb24zCisxMzkgIDg3CSA2NgkJTGlnaHRTYWxtb240CisyNTUgMTY1CSAgMAkJb3JhbmdlMQorMjM4IDE1NAkgIDAJCW9yYW5nZTIKKzIwNSAxMzMJICAwCQlvcmFuZ2UzCisxMzkgIDkwCSAgMAkJb3JhbmdlNAorMjU1IDEyNwkgIDAJCURhcmtPcmFuZ2UxCisyMzggMTE4CSAgMAkJRGFya09yYW5nZTIKKzIwNSAxMDIJICAwCQlEYXJrT3JhbmdlMworMTM5ICA2OQkgIDAJCURhcmtPcmFuZ2U0CisyNTUgMTE0CSA4NgkJY29yYWwxCisyMzggMTA2CSA4MAkJY29yYWwyCisyMDUgIDkxCSA2OQkJY29yYWwzCisxMzkgIDYyCSA0NwkJY29yYWw0CisyNTUgIDk5CSA3MQkJdG9tYXRvMQorMjM4ICA5MgkgNjYJCXRvbWF0bzIKKzIwNSAgNzkJIDU3CQl0b21hdG8zCisxMzkgIDU0CSAzOAkJdG9tYXRvNAorMjU1ICA2OQkgIDAJCU9yYW5nZVJlZDEKKzIzOCAgNjQJICAwCQlPcmFuZ2VSZWQyCisyMDUgIDU1CSAgMAkJT3JhbmdlUmVkMworMTM5ICAzNwkgIDAJCU9yYW5nZVJlZDQKKzI1NSAgIDAJICAwCQlyZWQxCisyMzggICAwCSAgMAkJcmVkMgorMjA1ICAgMAkgIDAJCXJlZDMKKzEzOSAgIDAJICAwCQlyZWQ0CisyNTUgIDIwIDE0NwkJRGVlcFBpbmsxCisyMzggIDE4IDEzNwkJRGVlcFBpbmsyCisyMDUgIDE2IDExOAkJRGVlcFBpbmszCisxMzkgIDEwCSA4MAkJRGVlcFBpbms0CisyNTUgMTEwIDE4MAkJSG90UGluazEKKzIzOCAxMDYgMTY3CQlIb3RQaW5rMgorMjA1ICA5NiAxNDQJCUhvdFBpbmszCisxMzkgIDU4ICA5OAkJSG90UGluazQKKzI1NSAxODEgMTk3CQlwaW5rMQorMjM4IDE2OSAxODQJCXBpbmsyCisyMDUgMTQ1IDE1OAkJcGluazMKKzEzOSAgOTkgMTA4CQlwaW5rNAorMjU1IDE3NCAxODUJCUxpZ2h0UGluazEKKzIzOCAxNjIgMTczCQlMaWdodFBpbmsyCisyMDUgMTQwIDE0OQkJTGlnaHRQaW5rMworMTM5ICA5NSAxMDEJCUxpZ2h0UGluazQKKzI1NSAxMzAgMTcxCQlQYWxlVmlvbGV0UmVkMQorMjM4IDEyMSAxNTkJCVBhbGVWaW9sZXRSZWQyCisyMDUgMTA0IDEzNwkJUGFsZVZpb2xldFJlZDMKKzEzOSAgNzEJIDkzCQlQYWxlVmlvbGV0UmVkNAorMjU1ICA1MiAxNzkJCW1hcm9vbjEKKzIzOCAgNDggMTY3CQltYXJvb24yCisyMDUgIDQxIDE0NAkJbWFyb29uMworMTM5ICAyOAkgOTgJCW1hcm9vbjQKKzI1NSAgNjIgMTUwCQlWaW9sZXRSZWQxCisyMzggIDU4IDE0MAkJVmlvbGV0UmVkMgorMjA1ICA1MCAxMjAJCVZpb2xldFJlZDMKKzEzOSAgMzQJIDgyCQlWaW9sZXRSZWQ0CisyNTUgICAwIDI1NQkJbWFnZW50YTEKKzIzOCAgIDAgMjM4CQltYWdlbnRhMgorMjA1ICAgMCAyMDUJCW1hZ2VudGEzCisxMzkgICAwIDEzOQkJbWFnZW50YTQKKzI1NSAxMzEgMjUwCQlvcmNoaWQxCisyMzggMTIyIDIzMwkJb3JjaGlkMgorMjA1IDEwNSAyMDEJCW9yY2hpZDMKKzEzOSAgNzEgMTM3CQlvcmNoaWQ0CisyNTUgMTg3IDI1NQkJcGx1bTEKKzIzOCAxNzQgMjM4CQlwbHVtMgorMjA1IDE1MCAyMDUJCXBsdW0zCisxMzkgMTAyIDEzOQkJcGx1bTQKKzIyNCAxMDIgMjU1CQlNZWRpdW1PcmNoaWQxCisyMDkgIDk1IDIzOAkJTWVkaXVtT3JjaGlkMgorMTgwICA4MiAyMDUJCU1lZGl1bU9yY2hpZDMKKzEyMiAgNTUgMTM5CQlNZWRpdW1PcmNoaWQ0CisxOTEgIDYyIDI1NQkJRGFya09yY2hpZDEKKzE3OCAgNTggMjM4CQlEYXJrT3JjaGlkMgorMTU0ICA1MCAyMDUJCURhcmtPcmNoaWQzCisxMDQgIDM0IDEzOQkJRGFya09yY2hpZDQKKzE1NSAgNDggMjU1CQlwdXJwbGUxCisxNDUgIDQ0IDIzOAkJcHVycGxlMgorMTI1ICAzOCAyMDUJCXB1cnBsZTMKKyA4NSAgMjYgMTM5CQlwdXJwbGU0CisxNzEgMTMwIDI1NQkJTWVkaXVtUHVycGxlMQorMTU5IDEyMSAyMzgJCU1lZGl1bVB1cnBsZTIKKzEzNyAxMDQgMjA1CQlNZWRpdW1QdXJwbGUzCisgOTMgIDcxIDEzOQkJTWVkaXVtUHVycGxlNAorMjU1IDIyNSAyNTUJCXRoaXN0bGUxCisyMzggMjEwIDIzOAkJdGhpc3RsZTIKKzIwNSAxODEgMjA1CQl0aGlzdGxlMworMTM5IDEyMyAxMzkJCXRoaXN0bGU0CisgIDAgICAwICAgMAkJZ3JheTAKKyAgMCAgIDAgICAwCQlncmV5MAorICAzICAgMyAgIDMJCWdyYXkxCisgIDMgICAzICAgMwkJZ3JleTEKKyAgNSAgIDUgICA1CQlncmF5MgorICA1ICAgNSAgIDUJCWdyZXkyCisgIDggICA4ICAgOAkJZ3JheTMKKyAgOCAgIDggICA4CQlncmV5MworIDEwICAxMCAgMTAJCWdyYXk0CisgMTAgIDEwICAxMAkJZ3JleTQKKyAxMyAgMTMgIDEzCQlncmF5NQorIDEzICAxMyAgMTMJCWdyZXk1CisgMTUgIDE1ICAxNQkJZ3JheTYKKyAxNSAgMTUgIDE1CQlncmV5NgorIDE4ICAxOCAgMTgJCWdyYXk3CisgMTggIDE4ICAxOAkJZ3JleTcKKyAyMCAgMjAgIDIwCQlncmF5OAorIDIwICAyMCAgMjAJCWdyZXk4CisgMjMgIDIzICAyMwkJZ3JheTkKKyAyMyAgMjMgIDIzCQlncmV5OQorIDI2ICAyNiAgMjYJCWdyYXkxMAorIDI2ICAyNiAgMjYJCWdyZXkxMAorIDI4ICAyOCAgMjgJCWdyYXkxMQorIDI4ICAyOCAgMjgJCWdyZXkxMQorIDMxICAzMSAgMzEJCWdyYXkxMgorIDMxICAzMSAgMzEJCWdyZXkxMgorIDMzICAzMyAgMzMJCWdyYXkxMworIDMzICAzMyAgMzMJCWdyZXkxMworIDM2ICAzNiAgMzYJCWdyYXkxNAorIDM2ICAzNiAgMzYJCWdyZXkxNAorIDM4ICAzOCAgMzgJCWdyYXkxNQorIDM4ICAzOCAgMzgJCWdyZXkxNQorIDQxICA0MSAgNDEJCWdyYXkxNgorIDQxICA0MSAgNDEJCWdyZXkxNgorIDQzICA0MyAgNDMJCWdyYXkxNworIDQzICA0MyAgNDMJCWdyZXkxNworIDQ2ICA0NiAgNDYJCWdyYXkxOAorIDQ2ICA0NiAgNDYJCWdyZXkxOAorIDQ4ICA0OCAgNDgJCWdyYXkxOQorIDQ4ICA0OCAgNDgJCWdyZXkxOQorIDUxICA1MSAgNTEJCWdyYXkyMAorIDUxICA1MSAgNTEJCWdyZXkyMAorIDU0ICA1NCAgNTQJCWdyYXkyMQorIDU0ICA1NCAgNTQJCWdyZXkyMQorIDU2ICA1NiAgNTYJCWdyYXkyMgorIDU2ICA1NiAgNTYJCWdyZXkyMgorIDU5ICA1OSAgNTkJCWdyYXkyMworIDU5ICA1OSAgNTkJCWdyZXkyMworIDYxICA2MSAgNjEJCWdyYXkyNAorIDYxICA2MSAgNjEJCWdyZXkyNAorIDY0ICA2NCAgNjQJCWdyYXkyNQorIDY0ICA2NCAgNjQJCWdyZXkyNQorIDY2ICA2NiAgNjYJCWdyYXkyNgorIDY2ICA2NiAgNjYJCWdyZXkyNgorIDY5ICA2OSAgNjkJCWdyYXkyNworIDY5ICA2OSAgNjkJCWdyZXkyNworIDcxICA3MSAgNzEJCWdyYXkyOAorIDcxICA3MSAgNzEJCWdyZXkyOAorIDc0ICA3NCAgNzQJCWdyYXkyOQorIDc0ICA3NCAgNzQJCWdyZXkyOQorIDc3ICA3NyAgNzcJCWdyYXkzMAorIDc3ICA3NyAgNzcJCWdyZXkzMAorIDc5ICA3OSAgNzkJCWdyYXkzMQorIDc5ICA3OSAgNzkJCWdyZXkzMQorIDgyICA4MiAgODIJCWdyYXkzMgorIDgyICA4MiAgODIJCWdyZXkzMgorIDg0ICA4NCAgODQJCWdyYXkzMworIDg0ICA4NCAgODQJCWdyZXkzMworIDg3ICA4NyAgODcJCWdyYXkzNAorIDg3ICA4NyAgODcJCWdyZXkzNAorIDg5ICA4OSAgODkJCWdyYXkzNQorIDg5ICA4OSAgODkJCWdyZXkzNQorIDkyICA5MiAgOTIJCWdyYXkzNgorIDkyICA5MiAgOTIJCWdyZXkzNgorIDk0ICA5NCAgOTQJCWdyYXkzNworIDk0ICA5NCAgOTQJCWdyZXkzNworIDk3ICA5NyAgOTcJCWdyYXkzOAorIDk3ICA5NyAgOTcJCWdyZXkzOAorIDk5ICA5OSAgOTkJCWdyYXkzOQorIDk5ICA5OSAgOTkJCWdyZXkzOQorMTAyIDEwMiAxMDIJCWdyYXk0MAorMTAyIDEwMiAxMDIJCWdyZXk0MAorMTA1IDEwNSAxMDUJCWdyYXk0MQorMTA1IDEwNSAxMDUJCWdyZXk0MQorMTA3IDEwNyAxMDcJCWdyYXk0MgorMTA3IDEwNyAxMDcJCWdyZXk0MgorMTEwIDExMCAxMTAJCWdyYXk0MworMTEwIDExMCAxMTAJCWdyZXk0MworMTEyIDExMiAxMTIJCWdyYXk0NAorMTEyIDExMiAxMTIJCWdyZXk0NAorMTE1IDExNSAxMTUJCWdyYXk0NQorMTE1IDExNSAxMTUJCWdyZXk0NQorMTE3IDExNyAxMTcJCWdyYXk0NgorMTE3IDExNyAxMTcJCWdyZXk0NgorMTIwIDEyMCAxMjAJCWdyYXk0NworMTIwIDEyMCAxMjAJCWdyZXk0NworMTIyIDEyMiAxMjIJCWdyYXk0OAorMTIyIDEyMiAxMjIJCWdyZXk0OAorMTI1IDEyNSAxMjUJCWdyYXk0OQorMTI1IDEyNSAxMjUJCWdyZXk0OQorMTI3IDEyNyAxMjcJCWdyYXk1MAorMTI3IDEyNyAxMjcJCWdyZXk1MAorMTMwIDEzMCAxMzAJCWdyYXk1MQorMTMwIDEzMCAxMzAJCWdyZXk1MQorMTMzIDEzMyAxMzMJCWdyYXk1MgorMTMzIDEzMyAxMzMJCWdyZXk1MgorMTM1IDEzNSAxMzUJCWdyYXk1MworMTM1IDEzNSAxMzUJCWdyZXk1MworMTM4IDEzOCAxMzgJCWdyYXk1NAorMTM4IDEzOCAxMzgJCWdyZXk1NAorMTQwIDE0MCAxNDAJCWdyYXk1NQorMTQwIDE0MCAxNDAJCWdyZXk1NQorMTQzIDE0MyAxNDMJCWdyYXk1NgorMTQzIDE0MyAxNDMJCWdyZXk1NgorMTQ1IDE0NSAxNDUJCWdyYXk1NworMTQ1IDE0NSAxNDUJCWdyZXk1NworMTQ4IDE0OCAxNDgJCWdyYXk1OAorMTQ4IDE0OCAxNDgJCWdyZXk1OAorMTUwIDE1MCAxNTAJCWdyYXk1OQorMTUwIDE1MCAxNTAJCWdyZXk1OQorMTUzIDE1MyAxNTMJCWdyYXk2MAorMTUzIDE1MyAxNTMJCWdyZXk2MAorMTU2IDE1NiAxNTYJCWdyYXk2MQorMTU2IDE1NiAxNTYJCWdyZXk2MQorMTU4IDE1OCAxNTgJCWdyYXk2MgorMTU4IDE1OCAxNTgJCWdyZXk2MgorMTYxIDE2MSAxNjEJCWdyYXk2MworMTYxIDE2MSAxNjEJCWdyZXk2MworMTYzIDE2MyAxNjMJCWdyYXk2NAorMTYzIDE2MyAxNjMJCWdyZXk2NAorMTY2IDE2NiAxNjYJCWdyYXk2NQorMTY2IDE2NiAxNjYJCWdyZXk2NQorMTY4IDE2OCAxNjgJCWdyYXk2NgorMTY4IDE2OCAxNjgJCWdyZXk2NgorMTcxIDE3MSAxNzEJCWdyYXk2NworMTcxIDE3MSAxNzEJCWdyZXk2NworMTczIDE3MyAxNzMJCWdyYXk2OAorMTczIDE3MyAxNzMJCWdyZXk2OAorMTc2IDE3NiAxNzYJCWdyYXk2OQorMTc2IDE3NiAxNzYJCWdyZXk2OQorMTc5IDE3OSAxNzkJCWdyYXk3MAorMTc5IDE3OSAxNzkJCWdyZXk3MAorMTgxIDE4MSAxODEJCWdyYXk3MQorMTgxIDE4MSAxODEJCWdyZXk3MQorMTg0IDE4NCAxODQJCWdyYXk3MgorMTg0IDE4NCAxODQJCWdyZXk3MgorMTg2IDE4NiAxODYJCWdyYXk3MworMTg2IDE4NiAxODYJCWdyZXk3MworMTg5IDE4OSAxODkJCWdyYXk3NAorMTg5IDE4OSAxODkJCWdyZXk3NAorMTkxIDE5MSAxOTEJCWdyYXk3NQorMTkxIDE5MSAxOTEJCWdyZXk3NQorMTk0IDE5NCAxOTQJCWdyYXk3NgorMTk0IDE5NCAxOTQJCWdyZXk3NgorMTk2IDE5NiAxOTYJCWdyYXk3NworMTk2IDE5NiAxOTYJCWdyZXk3NworMTk5IDE5OSAxOTkJCWdyYXk3OAorMTk5IDE5OSAxOTkJCWdyZXk3OAorMjAxIDIwMSAyMDEJCWdyYXk3OQorMjAxIDIwMSAyMDEJCWdyZXk3OQorMjA0IDIwNCAyMDQJCWdyYXk4MAorMjA0IDIwNCAyMDQJCWdyZXk4MAorMjA3IDIwNyAyMDcJCWdyYXk4MQorMjA3IDIwNyAyMDcJCWdyZXk4MQorMjA5IDIwOSAyMDkJCWdyYXk4MgorMjA5IDIwOSAyMDkJCWdyZXk4MgorMjEyIDIxMiAyMTIJCWdyYXk4MworMjEyIDIxMiAyMTIJCWdyZXk4MworMjE0IDIxNCAyMTQJCWdyYXk4NAorMjE0IDIxNCAyMTQJCWdyZXk4NAorMjE3IDIxNyAyMTcJCWdyYXk4NQorMjE3IDIxNyAyMTcJCWdyZXk4NQorMjE5IDIxOSAyMTkJCWdyYXk4NgorMjE5IDIxOSAyMTkJCWdyZXk4NgorMjIyIDIyMiAyMjIJCWdyYXk4NworMjIyIDIyMiAyMjIJCWdyZXk4NworMjI0IDIyNCAyMjQJCWdyYXk4OAorMjI0IDIyNCAyMjQJCWdyZXk4OAorMjI3IDIyNyAyMjcJCWdyYXk4OQorMjI3IDIyNyAyMjcJCWdyZXk4OQorMjI5IDIyOSAyMjkJCWdyYXk5MAorMjI5IDIyOSAyMjkJCWdyZXk5MAorMjMyIDIzMiAyMzIJCWdyYXk5MQorMjMyIDIzMiAyMzIJCWdyZXk5MQorMjM1IDIzNSAyMzUJCWdyYXk5MgorMjM1IDIzNSAyMzUJCWdyZXk5MgorMjM3IDIzNyAyMzcJCWdyYXk5MworMjM3IDIzNyAyMzcJCWdyZXk5MworMjQwIDI0MCAyNDAJCWdyYXk5NAorMjQwIDI0MCAyNDAJCWdyZXk5NAorMjQyIDI0MiAyNDIJCWdyYXk5NQorMjQyIDI0MiAyNDIJCWdyZXk5NQorMjQ1IDI0NSAyNDUJCWdyYXk5NgorMjQ1IDI0NSAyNDUJCWdyZXk5NgorMjQ3IDI0NyAyNDcJCWdyYXk5NworMjQ3IDI0NyAyNDcJCWdyZXk5NworMjUwIDI1MCAyNTAJCWdyYXk5OAorMjUwIDI1MCAyNTAJCWdyZXk5OAorMjUyIDI1MiAyNTIJCWdyYXk5OQorMjUyIDI1MiAyNTIJCWdyZXk5OQorMjU1IDI1NSAyNTUJCWdyYXkxMDAKKzI1NSAyNTUgMjU1CQlncmV5MTAwCisxNjkgMTY5IDE2OQkJZGFyayBncmV5CisxNjkgMTY5IDE2OQkJRGFya0dyZXkKKzE2OSAxNjkgMTY5CQlkYXJrIGdyYXkKKzE2OSAxNjkgMTY5CQlEYXJrR3JheQorMCAgICAgMCAxMzkJCWRhcmsgYmx1ZQorMCAgICAgMCAxMzkJCURhcmtCbHVlCiswICAgMTM5IDEzOQkJZGFyayBjeWFuCiswICAgMTM5IDEzOQkJRGFya0N5YW4KKzEzOSAgIDAgMTM5CQlkYXJrIG1hZ2VudGEKKzEzOSAgIDAgMTM5CQlEYXJrTWFnZW50YQorMTM5ICAgMCAgIDAJCWRhcmsgcmVkCisxMzkgICAwICAgMAkJRGFya1JlZAorMTQ0IDIzOCAxNDQJCWxpZ2h0IGdyZWVuCisxNDQgMjM4IDE0NAkJTGlnaHRHcmVlbgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL3R1dG9yLmluZm8gYi9ydW50aW1lL3R1dG9yL3J1bnRpbWUvdHV0b3IuaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mOGNlZGEzCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS90dXRvci9ydW50aW1lL3R1dG9yLmluZm8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL3ZpbTE2eDE2LmdpZiBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS92aW0xNngxNi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1YTg1NQotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS92aW0xNngxNi5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci9ydW50aW1lL3ZpbTMyeDMyLmdpZiBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS92aW0zMngzMi5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzODIxYgotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvdHV0b3IvcnVudGltZS92aW0zMngzMi5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci90dXRvci5uby51dGYtOCBiL3J1bnRpbWUvdHV0b3IvdHV0b3Iubm8udXRmLTgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc4MjZiNwotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvdHV0b3IvdHV0b3Iubm8udXRmLTgKQEAgLTAsMCArMSw5NzMgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz0gViBlIGwgayBvIG0gbSBlIG4gICB0IGkgbCAgIGkgbiBuIGYgw7ggciBpIG4gZyBlIG4gICBpICAgViBpIG0gIC0tICBWZXIuIDEuNyA9Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgVmltIGVyIGVuIG1lZ2V0IGtyYWZ0aWcgZWRpdG9yIG1lZCBtYW5nZSBrb21tYW5kb2VyLCBhbHQgZm9yIG1hbmdlIHRpbCDDpQorICAgICBrdW5uZSBnw6UgZ2plbm5vbSBhbGxlIGkgZW4gaW5uZsO4cmluZyBzb20gZGVubmUuIERlbiBlciBiZXJlZ25ldCBww6Ugw6UKKyAgICAgc2V0dGUgZGVnIGlubiBpIGJydWtlbiBhdiBub2sga29tbWFuZG9lciBzw6UgZHUgdmlsIHbDpnJlIGkgc3RhbmQgdGlsIGxldHQKKyAgICAgw6Uga3VubmUgYnJ1a2UgVmltIHNvbSBlbiBlZGl0b3IgdGlsIGFsbGUgZm9ybcOlbC4KKworICAgICBUaWRlbiBzb20ga3JldmVzIGZvciDDpSBnw6UgZ2plbm5vbSBkZW5uZSBpbm5mw7hyaW5nZW4gdGFyIGNhLiAyNS0zMAorICAgICBtaW51dHRlciwgYXZoZW5naWcgYXYgaHZvciBteWUgdGlkIGR1IGJydWtlciB0aWwgZWtzcGVyaW1lbnRlcmluZy4KKworICAgICBNRVJLOgorICAgICBLb21tYW5kb2VuZSBpIGxla3Nqb25lbmUgdmlsIG1vZGlmaXNlcmUgdGVrc3Rlbi4gTGFnIGVuIGtvcGkgYXYgZGVubmUKKyAgICAgZmlsZW4gc29tIGR1IGthbiDDuHZlIGRlZyBww6UgKGh2aXMgZHUga2rDuHJ0ZSDCq3ZpbXR1dG9ywrsta29tbWFuZG9lbiwgZXIKKyAgICAgZGV0dGUgYWxsZXJlZGUgZW4ga29waSkuCisKKyAgICAgRGV0IGVyIHZpa3RpZyDDpSBodXNrZSBhdCBkZW5uZSBpbm5mw7hyaW5nZW4gZXIgYmVyZWduZXQgcMOlIGzDpnJpbmcgZ2plbm5vbQorICAgICBicnVrLiBEZXQgYmV0eXIgYXQgZHUgbcOlIHV0ZsO4cmUga29tbWFuZG9lbmUgZm9yIMOlIGzDpnJlIGRlbSBza2lra2VsaWcuCisgICAgIEh2aXMgZHUgYmFyZSBsZXNlciB0ZWtzdGVuLCB2aWwgZHUgZ2xlbW1lIGtvbW1hbmRvZW5lIQorCisgICAgIEbDuHJzdCBhdiBhbHQsIHNqZWtrIGF0IMKrQ2FwcyBMb2NrwrsgSUtLRSBlciBha3RpdiBvZyB0cnlrayDCq2rCuy10YXN0ZW4gZm9yCisgICAgIMOlIGZseXR0ZSBtYXJrw7hyZW4gaGVsdCB0aWwgbGVrc2pvbiAxLjEgZnlsbGVyIHNramVybWVuLgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgIExla3Nqb24gMS4xOiAgRkxZVFRJTkcgQVYgTUFSS8OYUkVOCisKKworICAgICAgICoqIEZvciDDpSBmbHl0dGUgbWFya8O4cmVuLCB0cnlrayB0YXN0ZW5lIGgsIGosIGssIGwgc29tIHZpc3QuICoqCisJICAgICBeCisJICAgICBrCQlUaXBzOiBoLXRhc3RlbiBlciB0aWwgdmVuc3RyZSBvZyBmbHl0dGVyIHRpbCB2ZW5zdHJlLgorICAgICAgIDwgaAkgbCA+CSAgICAgIGwtdGFzdGVuIGVyIHRpbCBow7h5cmUgb2cgZmx5dHRlciB0aWwgaMO4eXJlLgorCSAgICAgagkJICAgICAgai10YXN0ZW4gc2VyIHV0IHNvbSBlbiBwaWwgc29tIHBla2VyIG5lZG92ZXIuCisJICAgICB2CisgIDEuIEZseXR0IG1hcmvDuHJlbiBydW5kdCBww6Ugc2tqZXJtZW4gdGlsIGR1IGhhciBmw6V0dCBkZXQgaW5uIGkgZmluZ3JlbmUuCisKKyAgMi4gSG9sZCBpbm5lIG5lZG92ZXJ0YXN0ZW4gKGopIHRpbCBkZW4gcmVwZXRlcmVyLgorICAgICBOw6UgdmV0IGR1IGh2b3JkYW4gZHUgYmV2ZWdlciBkZWcgdGlsIG5lc3RlIGxla3Nqb24uCisKKyAgMy4gR8OlIHRpbCBsZWtzam9uIDEuMiB2ZWQgaGplbHAgYXYgbmVkb3ZlcnRhc3Rlbi4KKworTWVyazogSHZpcyBkdSBibGlyIHVzaWtrZXIgcMOlIG5vZSBkdSBoYXIgc2tyZXZldCwgdHJ5a2sgPEVTQz4gZm9yIMOlIGfDpSB0aWwKKyAgICAgIG5vcm1hbG1vZHVzLiBTa3JpdiBkZXJldHRlciBrb21tYW5kb2VuIGR1IMO4bnNrZXQgcMOlIG55dHQuCisKK01lcms6IFBpbHRhc3RlbmUgc2thbCBvZ3PDpSB2aXJrZS4gTWVuIHZlZCDDpSBicnVrZSBoamtsIHZpbCBkdSB2w6ZyZSBpIHN0YW5kIHRpbAorICAgICAgw6UgYmV2ZWdlIG1hcmvDuHJlbiBteWUgcmFza2VyZSBuw6VyIGR1IGVyIGJsaXR0IHZhbnQgdGlsIGRldC4gSGVsdCBzYW50IQorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgTGVrc2pvbiAxLjI6IEFWU0xVVFRFIFZJTQorCisKKyAgISEgTUVSSzogRsO4ciBkdSB1dGbDuHJlciBub2VuIGF2IHB1bmt0ZW5lIG5lZGVuZm9yLCBsZXMgaGVsZSBsZWtzam9uZW4hIQorCisgIDEuIFRyeWtrIDxFU0M+LXRhc3RlbiAoZm9yIMOlIGZvcnNpa3JlIGRlZyBvbSBhdCBkdSBlciBpIG5vcm1hbG1vZHVzKS4KKworICAyLiBTa3JpdjoJOnEhIDxFTlRFUj4uCisgICAgIERldHRlIGF2c2x1dHRlciBlZGl0b3JlbiBvZyBGT1JLQVNURVIgYWxsZSBmb3JhbmRyaW5nZXIgc29tIGR1IGhhciBnam9ydC4KKworICAzLiBOw6VyIGR1IHNlciBrb21tYW5kb2xpbmplbiBpIHNrYWxsZXQsIHNrcml2IGtvbW1hbmRvZW4gc29tIHN0YXJ0ZXQgZGVubmUKKyAgICAgaW5uZsO4cmluZ2VuLiBEZW4gZXI6ICAgdmltdHV0b3IgPEVOVEVSPgorCisgIDQuIEh2aXMgZHUgZXIgc2lra2VyIHDDpSBhdCBkdSBodXNrZXIgZGV0dGUsIHV0ZsO4ciBwdW5rdGVuZSAxIHRpbCAzIGZvciDDpQorICAgICBhdnNsdXR0ZSBvZyBzdGFydGUgZWRpdG9yZW4gcMOlIG55dHQuCisKK01FUks6ICA6cSEgPEVOVEVSPiAgZm9ya2FzdGVyIGFsbGUgZm9yYW5kcmluZ2VyIHNvbSBkdSBnam9yZGUuIEkgbMO4cGV0IGF2IG5vZW4KKyAgICAgICBmw6UgbGVrc2pvbmVyIHZpbCBkdSBsw6ZyZSBodm9yZGFuIGR1IGxhZ3JlciBmb3JhbmRyaW5nZW5lIHRpbCBlbiBmaWwuCisKKyAgNS4gRmx5dHQgbWFya8O4cmVuIG5lZCB0aWwgbGVrc2pvbiAxLjMuCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSBMZWtzam9uIDEuMzogUkVESUdFUklORyBBViBURUtTVCAtLSBTTEVUVElORworCisKKwkgICAgICoqIFRyeWtrICB4ICBmb3Igw6Ugc2xldHRlIHRlZ25ldCB1bmRlciBtYXJrw7hyZW4uICoqCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBkZW4gZsO4cnN0ZSBsaW5qZW4gbWVya2V0IG1lZCAgLS0tPi4KKworICAyLiBGb3Igw6Ugb3JkbmUgZmVpbGVuZSBww6UgbGluamVuLCBmbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBlciBvcHDDpSB0ZWduZXQgc29tCisgICAgIHNrYWwgc2xldHRlcy4KKworICAzLiBUcnlrayB0YXN0ZW4gIHggIGZvciDDpSBzbGV0dGUgZGV0IHXDuG5za2VkZSB0ZWduZXQuCisKKyAgNC4gUmVwZXRlciBwdW5rdCAyIHRpbCA0IHRpbCBzZXRuaW5nZW4gZXIgbGlrIGRlbiBzb20gZXIgdW5kZXIuCisKKy0tLT4gSGVzc3N0ZW5ubm4gYnJycsOlc251ZGRkZGUgaWkgZ2FhYXRhLgorLS0tPiBIZXN0ZW4gYnLDpXNudWRkZSBpIGdhdGEuCisKKyAgNS4gTsOlIHNvbSBsaW5qZW4gZXIga29ycmVrdCwgZ8OlIHRpbCBsZWtzam9uIDEuNC4KKworTUVSSzogTsOlciBkdSBnw6VyIGdqZW5ub20gaW5uZsO4cmluZ2VuLCBpa2tlIGJhcmUgcHLDuHYgw6UgaHVza2Uga29tbWFuZG9lbmUsIG1lbgorICAgICAgYnJ1ayBkZW0gaGVsdCB0aWwgZGUgc2l0dGVyLgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJTGVrc2pvbiAxLjQ6IFJFRElHRVJJTkcgQVYgVEVLU1QgLS0gSU5OU0VUVElORworCisKKwkJICAgICoqIFRyeWtrICBpICBmb3Igw6Ugc2V0dGUgaW5uIHRla3N0LiAqKgorCisgIDEuIEZseXR0IG1hcmvDuHJlbiB0aWwgZGVuIGbDuHJzdGUgbGluamVuIHNvbSBlciBtZXJrZXQgbWVkIC0tLT4uCisKKyAgMi4gRm9yIMOlIGdqw7hyZSBkZW4gZsO4cnN0ZSBsaW5qZW4gbGlrIGRlbiBhbmRyZSwgZmx5dHQgbWFya8O4cmVuIHRpbCBkZW4gc3TDpXIKKyAgICAgcMOlIHRlZ25ldCBFVFRFUiBwb3Npc2pvbmVuIGRlciB0ZWtzdGVuIHNrYWwgc2V0dGVzIGlubi4KKworICAzLiBUcnlrayAgaSAgb2cgc2tyaXYgaW5uIHRla3N0ZW4gc29tIG1hbmdsZXIuCisKKyAgNC4gRXR0ZXJodmVydCBzb20gaHZlciBmZWlsIGVyIGZpa3NldCwgdHJ5a2sgPEVTQz4gZm9yIMOlIHJldHVybmVyZSB0aWwKKyAgICAgbm9ybWFsbW9kdXMuIFJlcGV0ZXIgcHVua3QgMiB0aWwgNCB0aWwgc2V0bmluZ2VuIGVyIGtvcnJla3QuCisKKy0tLT4gRGV0IGVyIHRrc3Qgc29tIG1uZ2xyIC4KKy0tLT4gRGV0IGVyIGdhbnNrZSBteWUgdGVrc3Qgc29tIG1hbmdsZXIgaGVyLgorCisgIDUuIE7DpXIgZHUgZsO4bGVyIGRlZyBrb21mb3J0YWJlbCBtZWQgw6Ugc2V0dGUgaW5uIHRla3N0LCBnw6UgdGlsIG9wcHN1bW1lcmluZ2VuCisgICAgIG5lZGVuZm9yLgorCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQlMZWtzam9uIDEuNTogUkVESUdFUklORyBBViBURUtTVCAtLSBMRUdHRSBUSUwKKworCisJCSAgICAqKiBUcnlrayAgQSAgZm9yIMOlIGxlZ2dlIHRpbCB0ZWtzdC4gKioKKworICAxLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBmw7hyc3RlIGxpbmplbiBuZWRlbmZvciBtZXJrZXQgLS0tPi4KKyAgICAgRGV0IGhhciBpa2tlIG5vZSDDpSBzaSBodm9yIG1hcmvDuHJlbiBlciBwbGFzc2VydCBww6UgZGVuIGxpbmplbi4KKworICAyLiBUcnlrayAgQSAgb2cgc2tyaXYgaW5uIGRldCBzb20gc2thbCBsZWdnZXMgdGlsLgorCisgIDMuIE7DpXIgdGVrc3RlbiBlciBsYWd0IHRpbCwgdHJ5a2sgPEVTQz4gZm9yIMOlIHJldHVybmVyZSB0aWwgbm9ybWFsbW9kdXNlbi4KKworICA0LiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBhbmRyZSBsaW5qZW4gbWFya2VydCBtZWQgLS0tPiBvZyByZXBldGVyIHN0ZWcgMiBvZworICAgICAzIGZvciDDpSByZXBhcmVyZSBkZW5uZSBzZXRuaW5nZW4uCisKKy0tLT4gRGV0IG1hbmdsZXIgbm9lIHRla3N0IHAKKyAgICAgRGV0IG1hbmdsZXIgbm9lIHRla3N0IHDDpSBkZW5uZSBsaW5qZW4uCistLS0+IERldCBtYW5nbGVyIG9nc8OlIGxpdHQgdGVrCisgICAgIERldCBtYW5nbGVyIG9nc8OlIGxpdHQgdGVrc3QgcMOlIGRlbm5lIGxpbmplbi4KKworICA1LiBOw6VyIGR1IGbDuGxlciBhdCBkdSBiZWhlcnNrZXIgw6UgbGVnZ2UgdGlsIHRla3N0LCBnw6UgdGlsIGxla3Nqb24gMS42LgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSBMZWtzam9uIDEuNjogUkVESUdFUkUgRU4gRklMCisKKworCSAgICAgICAqKiBCcnVrCTp3cSAgZm9yIMOlIGxhZ3JlIGVuIGZpbCBvZyBhdnNsdXR0ZS4gKioKKworICAhISBNRVJLOiBGw7hyIGR1IHV0ZsO4cmVyIG5vZW4gYXYgc3RlZ2VuZSBuZWRlbmZvciwgbGVzIGhlbGUgZGVubmUgbGVrc2pvbmVuISEKKworICAxLiBBdnNsdXR0IGRlbm5lIGlubmbDuHJpbmdlbiBzb20gZHUgZ2pvcmRlIGkgbGVrc2pvbiAxLjI6ICA6cSEKKworICAyLiBTa3JpdiBkZW5uZSBrb21tYW5kb2VuIHDDpSBrb21tYW5kb2xpbmphOiAgdmltIHR1dG9yIDxFTlRFUj4KKyAgICAgwqt2aW3CuyBlciBrb21tYW5kb2VuIGZvciDDpSBzdGFydGUgVmltLWVkaXRvcmVuLCDCq3R1dG9ywrsgZXIgbmF2bmV0IHDDpSBmaWxhCisgICAgIHNvbSBkdSB2aWwgcmVkaWdlcmUuIEJydWsgZW4gZmlsIHNvbSBrYW4gZm9yYW5kcmVzLgorCisgIDMuIFNldHQgaW5uIG9nIHNsZXR0IHRla3N0IHNvbSBkdSBsw6ZydGUgaSBkZSBmb3JlZ8OlZW5kZSBsZWtzam9uZW5lLgorCisgIDQuIExhZ3JlIGZpbGVuIG1lZCBmb3JhbmRyaW5nZW5lIG9nIGF2c2x1dHQgVmltIG1lZDoJOndxIDxFTlRFUj4KKworICA1LiBTdGFydCBpbm5mw7hyaW5nZW4gcMOlIG55dHQgb2cgZmx5dHQgbmVkIHRpbCBvcHBzdW1tZXJpbmdlbiBzb20gZsO4bGdlci4KKworICA2LiBFdHRlciDDpSBoYSBsZXN0IG9nIGZvcnN0w6V0dCBzdGVnZW5lIG92ZW5mb3I6IFNldHQgaSBnYW5nLgorCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICBPUFBTVU1NRVJJTkcgQVYgTEVLU0pPTiAxCisKKworICAxLiBNYXJrw7hyZW4gYmV2ZWdlcyB2ZWQgaGplbHAgYXYgcGlsdGFzdGVuZSBlbGxlciBoamtsLXRhc3RlbmUuCisJIGggKHZlbnN0cmUpCSBqIChuZWQpICAgICBrIChvcHApCSBsIChow7h5cmUpCisKKyAgMi4gRm9yIMOlIHN0YXJ0ZSBWaW0gZnJhIHNrYWxsLWtvbW1hbmRvbGluamVuLCBza3JpdjoJdmltIEZJTE5BVk4gPEVOVEVSPgorCisgIDMuIEZvciDDpSBhdnNsdXR0ZSBWaW0sIHNrcml2OiAgPEVTQz4gOnEhIDxFTlRFUj4gIGZvciDDpSBmb3JrYXN0ZSBlbmRyaW5nZXIuCisJCSAgIEVMTEVSIHNrcml2OiAgPEVTQz4gOndxIDxFTlRFUj4gIGZvciDDpSBsYWdyZSBmb3JhbmRyaW5nZW5lLgorCisgIDQuIEZvciDDpSBzbGV0dGUgdGVnbmV0IHVuZGVyIG1hcmvDuHJlbiwgdHJ5a2s6ICB4CisKKyAgNS4gRm9yIMOlIHNldHRlIGlubiBlbGxlciBsZWdnZSB0aWwgdGVrc3QsIHRyeWtrOgorCSBpICAgIHNrcml2IGlubnNhdHQgdGVrc3QgIDxFU0M+CXNldHQgaW5uIGbDuHIgbWFya8O4cmVuCisJIEEgICAgc2tyaXYgdGlsbGFndCB0ZWtzdCAgPEVTQz4JbGVnZyB0aWwgcMOlIHNsdXR0ZW4gYXYgbGluamVuCisKK01FUks6IE7DpXIgZHUgdHJ5a2tlciA8RVNDPiBnw6VyIGR1IHRpbCBub3JtYWxtb2R1cyBlbGxlciBkdSBhdmJyeXRlciBlbiB1w7huc2tldAorICAgICAgb2cgZGVsdmlzIGZ1bGxmw7hydCBrb21tYW5kby4KKworICBOw6Uga2FuIGR1IGfDpSB2aWRlcmUgdGlsIGxla3Nqb24gMi4KKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCQlMZWtzam9uIDIuMTogU0xFVFRFS09NTUFORE9FUgorCisKKwkJICAgICoqIFRyeWtrICBkdyAgZm9yIMOlIHNsZXR0ZSBldCBvcmQuICoqCisKKyAgMS4gVHJ5a2sgPEVTQz4gZm9yIMOlIHbDpnJlIHNpa2tlciBww6UgYXQgZHUgZXIgaSBub3JtYWxtb2R1cy4KKworICAyLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBmw7hyc3RlIGxpbmplbiBuZWRlbmZvciBtZXJrZXQgLS0tPi4KKworICAzLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGJlZ3lubmVsc2VuIGF2IG9yZGV0IHNvbSBza2FsIHNsZXR0ZXMuCisKKyAgNC4gVHJ5a2sgIGR3CW9nIG9yZGV0IHZpbCBmb3JzdmlubmUuCisKK01FUks6IEJva3N0YXZlbiAgZCAgdmlsIGtvbW1lIHRpbCBzeW5lIHDDpSBkZW4gbmVkZXJzdGUgbGluamVuIHDDpSBza2plcm1lbiBuw6VyCisgICAgICBkdSBza3JpdmVyIGRlbi4gVmltIHZlbnRlciBww6UgYXQgZHUgc2thbCBza3JpdmUgdyAuIEh2aXMgZHUgc2VyIGV0IGFubmV0CisgICAgICB0ZWduIGVubglkICBoYXIgZHUgc2tyZXZldCBub2UgZmVpbDsgdHJ5a2sgPEVTQz4gb2cgc3RhcnQgcMOlIG55dHQuCisKKy0tLT4gRGV0IGVyIGFndXJrIHRyZSBvcmQgZXBsZSBzb20gaWtrZSBow7hyZXIgcMOmcmUgaGplbW1lIGkgZGVubmUgc2V0bmluZ2VuLgorLS0tPiBEZXQgZXIgdHJlIG9yZCBzb20gaWtrZSBow7hyZXIgaGplbW1lIGkgZGVubmUgc2V0bmluZ2VuLgorCisgIDUuIFJlcGV0ZXIgcHVua3QgMyBvZyA0IHRpbCBkZW4gZsO4cnN0ZSBzZXRuaW5nZW4gZXIgbGlrIGRlbiBhbmRyZS4gR8OlCisgICAgIGRlcmV0dGVyIHRpbCBsZWtzam9uIDIuMi4KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgIExla3Nqb24gMi4yOiBGTEVSRSBTTEVUVEVLT01NQU5ET0VSCisKKworCSAgICAgKiogVHJ5a2sgIGQkICBmb3Igw6Ugc2xldHRlIHRpbCBzbHV0dGVuIGF2IGxpbmplbi4gKioKKworICAxLiBUcnlrayA8RVNDPiBmb3Igw6UgdsOmcmUgc2lra2VyIHDDpSBhdCBkdSBlciBpIG5vcm1hbG1vZHVzLgorCisgIDIuIEZseXR0IG1hcmvDuHJlbiB0aWwgbGluamVuIG5lZGVuZm9yIG1lcmtldCAtLS0+LgorCisgIDMuIEZseXR0IG1hcmvDuHJlbiB0aWwgcHVua3RldCBkZXIgbGluamVuIHNrYWwga3V0dGVzIChFVFRFUiBmw7hyc3RlIHB1bmt0dW0pLgorCisgIDQuIFRyeWtrICBkJAlmb3Igw6Ugc2xldHRlIGFsdCB0aWwgc2x1dHRlbiBhdiBsaW5qZW4uCisKKy0tLT4gTm9lbiBza3JldiBzbHV0dGVuIHDDpSBsaW5qZW4gZW4gZ2FuZyBmb3IgbXllLiBsaW5qZW4gZW4gZ2FuZyBmb3IgbXllLgorCisgIDUuIEfDpSB0aWwgbGVrc2pvbiAyLjMgZm9yIMOlIGZvcnN0w6UgaHZhIHNvbSBza2plci4KKworCisKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICBMZWtzam9uIDIuMzogT00gT1BFUkFUT1JFUiBPRyBCRVZFR0VMU0VSCisKKworICBNYW5nZSBrb21tYW5kb2VyIHNvbSBmb3JhbmRyZXIgdGVrc3RlbiBlciBsYWdldCB1dCBpIGZyYSBlbiBvcGVyYXRvciBvZyBlbgorICBiZXZlZ2Vsc2UuIEZvcm1hdGV0IGZvciBlbiBzbGV0dGVrb21tYW5kbyBtZWQgc2xldHRlb3BlcmF0b3JlbiAgZCAgZXI6CisKKwlkICAgYmV2ZWdlbHNlCisKKyAgRGVyOgorICAgIGQJICAgICAgLSBlciBzbGV0dGVvcGVyYXRvcmVuLgorICAgIGJldmVnZWxzZSAtIGVyIGh2YSBvcGVyYXRvcmVuIHZpbCBvcGVyZSBww6UgKGxpc3RldCBuZWRlbmZvcikuCisKKyAgRW4ga29ydCBsaXN0ZSBtZWQgYmV2ZWdlbHNlcjoKKyAgICB3IC0gdGlsIHN0YXJ0ZW4gYXYgZGV0IG5lc3RlIG9yZGV0LCBVTk5UQVRUIGRldCBmw7hyc3RlIHRlZ25ldC4KKyAgICBlIC0gdGlsIHNsdXR0ZW4gYXYgZGV0IG7DpXbDpnJlbmRlIG9yZGV0LCBJTktMVURFUlQgZGV0IHNpc3RlIHRlZ25ldC4KKyAgICAkIC0gdGlsIHNsdXR0ZW4gYXYgbGluamVuLCBJTktMVURFUlQgZGV0IHNpc3RlIHRlZ25ldC4KKworICBWZWQgw6Ugc2tyaXZlCWRlICB2aWwgYWx0c8OlIGFsdCBmcmEgbWFya8O4cmVuIHRpbCBzbHV0dGVuIGF2IG9yZGV0IGJsaQorICBzbGV0dGV0LgorCitNRVJLOiAgVmVkIMOlIHNrcml2ZSBrdW4gYmV2ZWdlbHNlbiBpIG5vcm1hbG1vZHVzZW4gdXRlbiBlbiBvcGVyYXRvciB2aWwKKyAgICAgICBtYXJrw7hyZW4gZmx5dHRlcyBzb20gc3Blc2lmaXNlcnQuCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJIExFS1NKT04gMi40OiBCUlVLIEFWIFRFTExFUiBGT1IgRU4gQkVWRUdFTFNFCisKKworICoqIFZlZCDDpSBza3JpdmUgZXQgdGFsbCBmb3JhbiBlbiBiZXZlZ2Vsc2UgcmVwZXRlcmVyIGRlbiBzw6UgbWFuZ2UgZ2FuZ2VyLiAqKgorCisgIDEuIEZseXR0IG1hcmvDuHJlbiB0aWwgc3RhcnRlbiBhdiBsaW5qZW4gbWFya2VydCAtLS0+IG5lZGVuZm9yLgorCisgIDIuIFNrcml2ICAydwlmb3Igw6UgZmx5dHRlIG1hcmvDuHJlbiB0byBvcmQgZnJhbW92ZXIuCisKKyAgMy4gU2tyaXYgIDNlCWZvciDDpSBmbHl0dGUgbWFya8O4cmVuIGZyYW1vdmVyIHRpbCBzbHV0dGVuIGF2IGRldCB0cmVkamUKKyAgICAgb3JkZXQuCisKKyAgNC4gU2tyaXYgIDAgIChudWxsKSBmb3Igw6UgZmx5dHRlIHRpbCBzdGFydGVuIGF2IGxpbmplbi4KKworICA1LiBSZXBldGVyIHN0ZWcgMiBvZyAzIG1lZCBmb3Jza2plbGxpZ2UgdGFsbC4KKworLS0tPiBEZXR0ZSBlciBlbiBsaW5qZSBtZWQgbm9lbiBvcmQgc29tIGR1IGthbiBiZXZlZ2UgZGVnIHJ1bmR0IHDDpS4KKworICA2LiBHw6UgdmlkZXJlIHRpbCBsZWtzam9uIDIuNS4KKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgTGVrc2pvbiAyLjU6IEJSVUsgQVYgQU5UQUxMIEZPUiDDhSBTTEVUVEUgTUVSCisKKworICAgICAqKiBFdCB0YWxsIHNhbW1lbiBtZWQgZW4gb3BlcmF0b3IgcmVwZXRlcmVyIGRlbiBzw6UgbWFuZ2UgZ2FuZ2VyLiAqKgorCisgIEkga29tYmluYXNqb25lbiBtZWQgc2xldHRlb3BlcmF0b3JlbiBvZyBlbiBiZXZlZ2Vsc2UgbmV2bnQgb3ZlbmZvciBzZXR0ZXIgZHUKKyAgaW5uIGFudGFsbCBmw7hyIGJldmVnZWxzZW4gZm9yIMOlIHNsZXR0ZSBtZXI6CisJIGQgIG51bW1lciAgYmV2ZWdlbHNlCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBkZXQgZsO4cnN0ZSBvcmRldCBtZWQgU1RPUkUgQk9LU1RBVkVSIHDDpSBsaW5qZW4gbWFya2VydAorICAgICBtZWQgLS0tPi4KKworICAyLiBTa3JpdiAgMmR3ICBmb3Igw6Ugc2xldHRlIGRlIHRvIG9yZGVuZSBtZWQgc3RvcmUgYm9rc3RhdmVyLgorCisgIDMuIFJlcGV0ZXIgc3RlZyAxIG9nIDIgbWVkIGZvcnNramVsbGluZyBhbnRhbGwgZm9yIMOlIHNsZXR0ZSBkZSBldHRlcmbDuGxnZW5kZQorICAgICBvcmRlbmUgc29tIGhhciBzdG9yZSBib2tzdGF2ZXIuCisKKy0tLT4gRGVubmUgQUJDIERFIGxpbmplbiBGR0hJIEpLIExNTiBPUCBlciBuw6UgUSBSUyBUVVYgbGl0dCBtZXIgbGVzYmFyLgorCitNRVJLOiBFdCBhbnRhbGwgbWVsbG9tIG9wZXJhdG9yZW4gIGQgIG9nIGJldmVnZWxzZW4gdmlya2VyIHDDpSBzYW1tZSBtw6V0ZSBzb20gw6UKKyAgICAgIGJydWtlIGJldmVnZWxzZW4gdXRlbiBlbiBvcGVyYXRvci4KKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCQlMZWtzam9uIDIuNjogT1BFUkVSRSBQw4UgTElOSkVSCisKKworCQkgKiogVHJ5a2sgIGRkICBmb3Igw6Ugc2xldHRlIGVuIGhlbCBsaW5qZS4gKioKKworICBQw6UgZ3J1bm4gYXYgYXQgc2xldHRpbmcgYXYgbGluamVyIGVyIG15ZSBicnVrdCwgZmFudCB1dHZpa2xlcm5lIGF2IFZpIHV0IGF0CisgIGRldCB2aWwgdsOmcmUgbGV0dGVyZSDDpSByZXR0IG9nIHNsZXR0IHRyeWtrZSB0byBkLWVyIGZvciDDpSBzbGV0dGUgZW4gbGluamUuCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBkZW4gYW5kcmUgbGluamVuIGkgdmVyc2V0IG5lZGVuZm9yLgorICAyLiBUcnlrayAgZGQJIMOlIHNsZXR0ZSBsaW5qZW4uCisgIDMuIEZseXR0IGRlcmV0dGVyIHRpbCBkZW4gZmplcmRlIGxpbmplbi4KKyAgNC4gVHJ5a2sgIDJkZCAgZm9yIMOlIHNsZXR0ZSB0byBsaW5qZXIuCisKKy0tLT4gIDEpIFJvc2VyIGVyIHLDuGRlLAorLS0tPiAgMikgR2rDuHJtZSBlciBnw7h5LAorLS0tPiAgMykgRmlvbGVyIGVyIGJsw6UsCistLS0+ICA0KSBKZWcgaGFyIGVuIGJpbCwKKy0tLT4gIDUpIEtsb2trZXIgdmlzZXIgdGlkZW4sCistLS0+ICA2KSBEcnVlciBlciBzw7h0ZQorLS0tPiAgNykgT2cgZHUgZXIgbGlrZXPDpS4KKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCUxla3Nqb24gMi43OiBBTkdSRS1LT01NQU5ET0VOCisKKworICAqKiBUcnlrayAgdSAgZm9yIMOlIGFuZ3JlIHNpc3RlIGtvbW1hbmRvLCAgVSAgZm9yIMOlIGZpa3NlIGVuIGhlbCBsaW5qZS4gKioKKworICAxLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGxpbmplbiBuZWRlbmZvciBtZXJrZXQgLS0tPiBvZyBwbGFzc2VyIGRlbiBww6UgZGVuCisgICAgIGbDuHJzdGUgZmVpbGVuLgorICAyLiBUcnlrayAgeCAgZm9yIMOlIHNsZXR0ZSBkZXQgZsO4cnN0ZSB1w7huc2tlZGUgdGVnbmV0LgorICAzLiBUcnlrayBzw6UgIHUgIGZvciDDpSBhbmdyZSBkZW4gc2lzdGUgdXRmw7hydGUga29tbWFuZG9lbi4KKyAgNC4gRGVyZXR0ZXIgb3JkbmVyIGR1IGFsbGUgZmVpbGVuZSBww6UgbGluamVuZSB2ZWQgw6UgYnJ1a2Uga29tbWFuZG9lbgl4ICAuCisgIDUuIFRyeWtrIG7DpSBlbiBzdG9yICBVICBmb3Igw6Ugc2V0dGUgbGluamVuIHRpbGJha2UgdGlsIGRldCBkZW4gdmFyCisgICAgIG9yaWdpbmFsdC4KKyAgNi4gVHJ5a2sgIHUgIG5vZW4gZ2FuZ2VyIGZvciDDpSBhbmdyZQlVICBvZyBmb3JlZ8OlZW5kZSBrb21tYW5kb2VyLgorICA3LiBEZXJldHRlciB0cnlra2VyIGR1ICBDVFJMLVIgIChob2xkIENUUkwgbmVkZSBtZW5zIGR1IHRyeWtrZXIgUikgbm9lbgorICAgICBnYW5nZXIgZm9yIMOlIGdqZW5vcHByZXR0ZSBrb21tYW5kb2VuZSAob21nasO4cmUgYW5ncmVrb21tYW5kb2VuZSkuCisKKy0tLT4gUlJlcGFyZXIgZmVpaWxlbmUgcMOlw6UgZGVubmUgbGlubm5qZW4gb29nIGVyc3NzdGF0dCBkZW0gbWVlZCBhbmdyZS4KKworICA4LiBEZXR0ZSBlciBtZWdldCBueXR0aWdlIGtvbW1hbmRvZXIuIE7DpSBrYW4gZHUgZ8OlIHRpbCBvcHBzdW1tZXJpbmdlbiBhdgorICAgICBsZWtzam9uIDIuCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCQkgIE9QUFNVTU1FUklORyBBViBMRUtTSk9OIDIKKworCisgIDEuIEZvciDDpSBzbGV0dGUgZnJhIG1hcmvDuHJlbiBmcmFtIHRpbCBkZXQgbmVzdGUgb3JkZXQsIHRyeWtrOiAgZHcKKyAgMi4gRm9yIMOlIHNsZXR0ZSBmcmEgbWFya8O4cmVuIHRpbCBzbHV0dGVuIGF2IGVuIGxpbmplLCB0cnlrazoJZCQKKyAgMy4gRm9yIMOlIHNsZXR0ZSBlbiBoZWwgbGluamUsIHRyeWtrOglkZAorCisgIDQuIEZvciDDpSByZXBldGVyZSBlbiBiZXZlZ2Vsc2UsIHNldHQgZXQgbnVtbWVyIGZvcmFuOiAgMncKKyAgNS4gRm9ybWF0ZXQgZm9yIGVuIGZvcmFuZHJpbmdza29tbWFuZG8gZXI6CisJICAgICAgIG9wZXJhdG9yICBbbnVtbWVyXSAgYmV2ZWdlbHNlCisgICAgIGRlcjoKKyAgICAgICBvcGVyYXRvciAgLSBodmEgc29tIHNrYWwgZ2rDuHJlcywgZi5la3MuCWQgIGZvciDDpSBzbGV0dGUKKyAgICAgICBbbnVtbWVyXSAgLSBldCB2YWxnZnJpdHQgYW50YWxsIGZvciDDpSByZXBldGVyZSBiZXZlZ2Vsc2VuCisgICAgICAgYmV2ZWdlbHNlIC0gaHZhIGtvbW1hbmRvZW4gc2thbCBvcGVyZXJlIHDDpSwgZWtzZW1wZWx2aXMJdyAgKG9yZCksCisJCSAgICQgICh0aWwgc2x1dHRlbiBhdiBsaW5qZW4pIG9nIHPDpSB2aWRlcmUuCisKKyAgNi4gRm9yIMOlIGfDpSB0aWwgc3RhcnRlbiBhdiBlbiBsaW5qZSwgYnJ1ayBlbiBudWxsOiAgMAorCisgIDcuIEZvciDDpSBhbmdyZSB0aWRsaWdlcmUgZW5kcmluZ2VyLCBza3JpdjoJCXUgIChsaXRlbiB1KQorICAgICBGb3Igw6UgYW5ncmUgYWxsZSBmb3JhbmRyaW5nZXIgcMOlIGVuIGxpbmplLCBza3JpdjoJVSAgKHN0b3IgVSkKKyAgICAgRm9yIMOlIG9tZ2rDuHJlIGFuZ3JpbmdlbiwgdHJ5a2s6CQkJQ1RSTC1SCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgICBMZWtzam9uIDMuMTogwqtMSU0gSU5OwrstS09NTUFORE9FTgorCisKKyAgICAqKiBUcnlrayAgcCAgZm9yIMOlIGxpbWUgaW5uIHRpZGxpZ2VyZSBzbGV0dGV0IHRla3N0IGV0dGVyIG1hcmvDuHJlbiAqKgorCisgIDEuIEZseXR0IG1hcmvDuHJlbiB0aWwgZGVuIGbDuHJzdGUgbGluamVuIG1lZCAtLS0+IG5lZGVuZm9yLgorCisgIDIuIFRyeWtrICBkZAlmb3Igw6Ugc2xldHRlIGxpbmplbiBvZyBsYWdyZSBkZW4gaSBldCBWaW0tcmVnaXN0ZXIuCisKKyAgMy4gRmx5dHQgbWFya8O4cmVuIHRpbCBjKS1saW5qZW4sIE9WRVIgcG9zaXNqb25lbiBsaW5qZW4gc2thbCBzZXR0ZXMgaW5uLgorCisgIDQuIFRyeWtrICBwICBmb3Igw6UgbGVnZ2UgbGluamVuIHVuZGVyIG1hcmvDuHJlbi4KKworICA1LiBSZXBldGVyIHB1bmt0IDIgdGlsIDQgaGVsdCB0aWwgbGluamVuZSBlciBpIHJpa3RpZyByZWtrZWbDuGxnZS4KKworLS0tPiBkKSBLYW4gZHUgb2dzw6UgbMOmcmU/CistLS0+IGIpIEZpb2xlciBlciBibMOlLAorLS0tPiBjKSBJbnRlbGxpZ2VucyBtw6UgbMOmcmVzLAorLS0tPiBhKSBSb3NlciBlciByw7hkZSwKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgICBMZWtzam9uIDMuMjogwqtFUlNUQVRUwrstS09NTUFORE9FTgorCisKKwkgKiogVHJ5a2sgIHJ4ICBmb3Igw6UgZXJzdGF0dGUgdGVnbmV0IHVuZGVyIG1hcmvDuHJlbiBtZWQgeC4gKioKKworICAxLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBmw7hyc3RlIGxpbmplbiBuZWRlbmZvciBtZXJrZXQgLS0tPi4KKworICAyLiBGbHl0dCBtYXJrw7hyZW4gc8OlIGRlbiBzdMOlciBvcHDDpSBkZW4gZsO4cnN0ZSBmZWlsZW4uCisKKyAgMy4gVHJ5a2sgIHIgIG9nIGRlcmV0dGVyIHRlZ25ldCBzb20gc2thbCB2w6ZyZSBkZXIuCisKKyAgNC4gUmVwZXRlciBwdW5rdCAyIG9nIDMgdGlsIGRlbiBmw7hyc3RlIGxpbmplbiBlciBsaWsgZGVuIGFuZHJlLgorCistLS0+IERhIGRmbm5lIGx5bmp4biBibGUgemtyZXZldCwgdmFyIGRldCBuw7hlbiBzb20gdGp5a2tldCBmZWl0ZSB0YXN0ZXIhCistLS0+IERhIGRlbm5lIGxpbmplbiBibGUgc2tyZXZldCwgdmFyIGRldCBub2VuIHNvbSB0cnlra2V0IGZlaWxlIHRhc3RlciEKKworICA1LiBHw6UgdmlkZXJlIHRpbCBsZWtzam9uIDMuMi4KKworTUVSSzogSHVzayBhdCBkdSBiw7hyIGzDpnJlIHZlZCDDpSBCUlVLRSwgaWtrZSBwdWdnZS4KKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgICBMZWtzam9uIDMuMzogwqtGT1JBTkRSRcK7LU9QRVJBVE9SRU4KKworCisJICAgKiogRm9yIMOlIGZvcmFuZHJlIHRpbCBzbHV0dGVuIGF2IGV0IG9yZCwgdHJ5a2sgIGNlIC4gKioKKworICAxLiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBmw7hyc3RlIGxpbmplbiBuZWRlbmZvciBzb20gZXIgbWVya2V0IC0tLT4uCisKKyAgMi4gUGxhc3NlciBtYXJrw7hyZW4gcMOlICB1ICBpIMKrbHViandywrsuCisKKyAgMy4gVHJ5a2sgIGNlCW9nIGRldCBrb3JyZWt0ZSBvcmRldCAoaSBkZXR0ZSB0aWxmZWxsZXQsIHNrcml2IMKraW5qZW7CuykuCisKKyAgNC4gVHJ5a2sgPEVTQz4gb2cgZ8OlIHRpbCBkZXQgbmVzdGUgdGVnbmV0IHNvbSBza2FsIGZvcmFuZHJlcy4KKworICA1LiBSZXBldGVyIHB1bmt0IDMgb2cgNCBoZWx0IHRpbCBkZW4gZsO4cnN0ZSBzZXRuaW5nZW4gZXIgbGlrIGRlbiBhbmRyZS4KKworLS0tPiBEZW5uZSBsdWJqd3IgaGFyIG5vZW4gd2doIHNvbSBtw6UgZm9ya3fDpXAgbWVkIMKrZm9yw6ZrenJ5YXPCuy1rb21tYW5kb2VuLgorLS0tPiBEZW5uZSBsaW5qZW4gaGFyIG5vZW4gb3JkIHNvbSBtw6UgZm9yYW5kcmVzIG1lZCDCq2ZvcmFuZHJlwrsta29tbWFuZG9lbi4KKworVsOmciBvcHBtZXJrc29tIHDDpSBhdCAgY2UgIHNsZXR0ZXIgb3JkZXQgb2cgZ8OlciBpbm4gaSBpbm5zZXR0aW5nc21vZHVzLgorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCUxla3Nqb24gMy40OiBGTEVSRSBGT1JBTkRSSU5HRVIgVkVEIEJSVUsgQVYgYworCisKKyAqKiBGb3JhbmRyaW5nc2tvbW1hbmRvZW4gYmxpciBicnVrdCBtZWQgZGUgc2FtbWUgYmV2ZWdlbHNlciBzb20gwqtzbGV0dMK7LiAqKgorCisgIDEuIEZvcmFuZHJpbmdzb3BlcmF0b3JlbiBmdW5nZXJlciBww6Ugc2FtbWUgbcOldGUgc29tIMKrc2xldHTCuy4gRm9ybWF0ZXQgZXI6CisKKwkgYyAgICBbbnVtbWVyXQkgYmV2ZWdlbHNlCisKKyAgMi4gQmV2ZWdlbHNlbmUgZXIgZGUgc2FtbWUsIHNvbSBmb3IgZWtzZW1wZWwJdyAgKG9yZCkgb2cgICQJKHNsdXR0ZW4gYXYgZW4KKyAgICAgbGluamUpLgorCisgIDMuIEfDpSB0aWwgZGVuIGbDuHJzdGUgbGluamVuIG5lZGVuZm9yIHNvbSBlciBtZXJrZXQgLS0tPi4KKworICA0LiBGbHl0dCBtYXJrw7hyZW4gdGlsIGRlbiBmw7hyc3RlIGZlaWxlbi4KKworICA1LiBTa3JpdiAgYyQJb2cgc2tyaXYgcmVzdGVuIGF2IGxpbmplbiBsaWsgZGVuIGFuZHJlIG9nIHRyeWtrIDxFU0M+LgorCistLS0+IFNsdXR0ZW4gcMOlIGRlbm5lIGxpbmplbiB0cmVuZ2VyIGxpdHQgaGplbHAgZm9yIMOlIGdqw7hyZSBkZW4gbGlrIGRlbiBuZXN0ZS4KKy0tLT4gU2x1dHRlbiBww6UgZGVubmUgbGluamVuIHRyZW5nZXIgw6UgYmxpIHJldHRldCB2ZWQgYnJ1ayBhdiBjJC1rb21tYW5kb2VuLgorCitNRVJLOiBEdSBrYW4gYnJ1a2Ugc2xldHRldGFzdGVuIGZvciDDpSByZXR0ZSBmZWlsIG1lbnMgZHUgc2tyaXZlci4KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICBPUFBTVU1NRVJJTkcgQVYgTEVLU0pPTiAzCisKKworICAxLiBGb3Igw6UgbGVnZ2UgdGlsYmFrZSB0ZWtzdCBzb20gbmV0dG9wcCBlciBibGl0dCBzbGV0dGV0LCB0cnlrayAgcCAgLiBEZXR0ZQorICAgICBsaW1lciBpbm4gZGVuIHNsZXR0ZWRlIHRla3N0ZW4gRVRURVIgbWFya8O4cmVuIChodmlzIGVuIGxpbmplIGJsZSBzbGV0dGV0CisgICAgIHZpbCBkZW4gYmxpIGxpbXQgaW5uIHDDpSBsaW5qZW4gdW5kZXIgbWFya8O4cmVuKS4KKworICAyLiBGb3Igw6UgZXJzdGF0dGUgZXQgdGVnbiB1bmRlciBtYXJrw7hyZW4sIHRyeWtrICByICBvZyBkZXJldHRlciB0ZWduZXQgc29tCisgICAgIGR1IHZpbCBoYSBkZXIuCisKKyAgMy4gRm9yYW5kcmluZ3NvcGVyYXRvcmVuIGxhciBkZWcgZm9yYW5kcmUgZnJhIG1hcmvDuHJlbiB0aWwgZGl0IGJldmVnZWxzZW4KKyAgICAgdGFyIGRlZy4gRGV0IHZpbCBzaSwgc2tyaXYgIGNlICBmb3Igw6UgZm9yYW5kcmUgZnJhIG1hcmvDuHJlbiB0aWwgc2x1dHRlbgorICAgICBhdiBvcmRldCwJYyQgIGZvciDDpSBmb3JhbmRyZSB0aWwgc2x1dHRlbiBhdiBsaW5qZW4uCisKKyAgNC4gRm9ybWF0ZXQgZm9yIMKrZm9yYW5kcmXCuyBlcjoKKworCSBjICAgW251bW1lcl0JYmV2ZWdlbHNlCisKK07DpSBrYW4gZHUgZ8OlIHRpbCBuZXN0ZSBsZWtzam9uLgorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJICAgICBMZWtzam9uIDQuMTogUE9TSVNKT05FUklORyBBViBNQVJLw5hSRU4gT0cgRklMU1RBVFVTCisKKwkqKiBUcnlrayBDVFJMLUcgZm9yIMOlIHZpc2UgcG9zaXNqb25lbiBpIGZpbGVuIG9nIGZpbHN0YXR1c2VuLgorCSAgIFRyeWtrICBHICBmb3Igw6UgZ8OlIHRpbCBlbiBzcGVzaWZpa2sgbGluamUgaSBmaWxlbi4gKioKKworICBNZXJrOiBMZXMgaGVsZSBsZWtzam9uZW4gZsO4ciBkdSB1dGbDuHJlciBub2VuIGF2IHB1bmt0ZW5lIQorCisgIDEuIEhvbGQgbmVkZSBDdHJsLXRhc3RlbiBvZyB0cnlrayAgZwkuIFZpIGthbGxlciBkZXR0ZSBDVFJMLUcuIEVuIG1lbGRpbmcKKyAgICAgdmlsIGtvbW1lIHRpbCBzeW5lIHDDpSBidW5uZW4gYXYgc2tqZXJtZW4gbWVkIGZpbG5hdm5ldCBvZyBwb3Npc2pvbmVuIGkKKyAgICAgZmlsZW4uIEh1c2sgbGluamVudW1tZXJldCBmb3IgYnJ1ayBpIHN0ZWcgMy4KKworTWVyazogRHUga2FuIHNlIG1hcmvDuHJwb3Npc2pvbmVuIGkgbmVkZXJzdGUgaMO4eXJlIGhqw7hybmUgYXYgc2tqZXJtZW4uIERldHRlCisgICAgICBza2plciBuw6VyIMKrcnVsZXLCuy12YWxnZXQgZXIgc2F0dCAoZm9ya2xhcnQgaSBsZWtzam9uIDYpLgorCisgIDIuIFRyeWtrICBHICBmb3Igw6UgZ8OlIHRpbCBidW5uZW4gYXYgZmlsZW4uCisgICAgIFNrcml2ICBnZwlmb3Igw6UgZ8OlIHRpbCBiZWd5bm5lbHNlbiBhdiBmaWxlbi4KKworICAzLiBTa3JpdiBpbm4gbGluamVudW1tZXJldCBkdSB2YXIgcMOlIG9nIGRlcmV0dGVyICBHIC4gRGV0dGUgdmlsIGbDuHJlIGRlZworICAgICB0aWxiYWtlIHRpbCBsaW5qZW4gZHUgdmFyIHDDpSBkYSBkdSBmw7hyc3QgdHJ5a2tldCBDVFJMLUcuCisKKyAgNC4gVXRmw7hyIHN0ZWcgMSB0aWwgMyBodmlzIGR1IGbDuGxlciBkZWcgc2lra2VyIHDDpSBwcm9zZWR5cmVuLgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSBMZWtzam9uIDQuMjogU8OYS0VLT01NQU5ET0VOCisKKyAgICAgICoqIFNrcml2CS8gIGV0dGVyZnVsZ3QgYXYgZW4gc8O4a2VzdHJlbmcgc29tIGR1IHZpbCBsZXRlIGV0dGVyLiAqKgorCisgIDEuIFRyeWtrICAvICBuw6VyIGR1IGVyIGkgbm9ybWFsbW9kdXNlbi4gTGVnZyBtZXJrZSB0aWwgYXQgc2tyw6VzdHJla2VuIG9nCisgICAgIG1hcmvDuHJlbiBrb21tZXIgdGlsIHN5bmUgcMOlIGJ1bm5lbiBhdiBza2plcm1lbiBpIGxpa2hldCBtZWQKKyAgICAgwqs6wrsta29tbWFuZG9lbmUuCisKKyAgMi4gU2tyaXYgwqtmZWVlaWlswrsgb2cgdHJ5a2sgPEVOVEVSPi4gRGV0dGUgZXIgdGVrc3RlbiBkdSB2aWwgbGV0ZSBldHRlci4KKworICAzLiBGb3Igw6UgZmlubmUgbmVzdGUgZm9yZWtvbXN0IGF2IHPDuGtlc3RyZW5nZW4sIHRyeWtrICBuIC4KKyAgICAgRm9yIMOlIGxldGUgZXR0ZXIgc2FtbWUgc8O4a2V0ZWtzdGVuIGkgbW90c2F0dCByZXRuaW5nLCB0cnlrayAgTiAuCisKKyAgNC4gRm9yIMOlIGxldGUgZXR0ZXIgZW4gdGVrc3QgYmFrb3ZlciBpIGZpbGVuLCBicnVrICA/ICBpc3RlZGVuZm9yICAvCS4KKworICA1LiBGb3Igw6UgZ8OlIHRpbGJha2UgdGlsIGRlciBkdSBrb20gZnJhLCB0cnlrayAgQ1RSTC1PICAoSG9sZCBDdHJsIG5lZGUgbWVucworICAgICBkdSB0cnlra2VyIGJva3N0YXZlbiAgbyApLiBSZXBldGVyIGZvciDDpSBnw6UgZW5kYSBsZW5ncmUgdGlsYmFrZS4gQ1RSTC1JCisgICAgIGfDpXIgZnJhbW92ZXIuCisKKy0tLT4gwqtmZWVlaWlswrsgZXIgaWtrZSBtw6V0ZW4gw6Ugc2tyaXZlIMKrZmVpbMK7IHDDpSwgZmVlZWlpbCBlciBoZWx0IGZlaWwuCitNZXJrOiBOw6VyIHPDuGtpbmdlbiBuw6VyIHNsdXR0ZW4gYXYgZmlsZW4sIHZpbCBkZW4gZm9ydHNldHRlIGZyYSBzdGFydGVuIHVubnRhdHQKKyAgICAgIGh2aXMgwqt3cmFwc2NhbsK7LXZhbGdldCBlciByZXNhdHQuCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgTGVrc2pvbiA0LjM6IEZJTk4gU0FNU1ZBUkVOREUgUEFSRU5URVNFUgorCisKKwkgICoqIFRyeWtrICAlICBmb3Igw6UgZmlubmUgZW4gc2Ftc3ZhcmVuZGUgKSwgXSBlbGxlciB9IC4gKioKKworICAxLiBQbGFzc2VyIG1hcmvDuHJlbiBww6UgZW4gKCwgWyBlbGxlciB7IHDDpSBsaW5qZW4gbmVkZW5mb3IgbWVya2V0IC0tLT4uCisKKyAgMi4gVHJ5a2sgICUgIC4KKworICAzLiBNYXJrw7hyZW4gdmlsIGfDpSB0aWwgZGVuIHNhbXN2YXJlbmRlIHBhcmVudGVzZW4gZWxsZXIgaGFrZXBhcmVudGVzZW4uCisKKyAgNC4gVHJ5a2sgICUgIGZvciDDpSBmbHl0dGUgbWFya8O4cmVuIHRpbCBkZW4gYW5kcmUgc2Ftc3ZhcmVuZGUgcGFyZW50ZXNlbi4KKworICA1LiBGbHl0dCBtYXJrw7hyZW4gdGlsIGVuIGFubmVuICgsICksIFssIF0sIHsgZWxsZXIgfSBvZyBzZSBodmEgICUgIGdqw7hyLgorCistLS0+IERldHRlICggZXIgZW4gdGVzdGxpbmplIG1lZCAoLCBbIF0gb2cgeyB9IGkgZGVuICkpLgorCitNZXJrOiBEZXR0ZSBlciB2ZWxkaWcgbnl0dGlnIHRpbCBmZWlsc8O4a2luZyBpIHByb2dyYW1tZXIgc29tIGhhciB1YmFsYW5zZXJ0CisgICAgICBhbnRhbGwgcGFyZW50ZXNlciEKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgICAgTGVrc2pvbiA0LjQ6IEVSU1RBVFQtS09NTUFORE9FTgorCisKKwkqKiBTa3JpdiAgOnMvZ2FtbWVsL255L2cgIGZvciDDpSBlcnN0YXR0ZSDCq2dhbW1lbMK7IG1lZCDCq255wrsuICoqCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBsaW5qZW4gbmVkZW5mb3Igc29tIGVyIG1lcmtldCBtZWQgLS0tPi4KKworICAyLiBTa3JpdiAgOnMvZGVlbi9kZW4vIDxFTlRFUj4gIC4gTGVnZyBtZXJrZSB0aWwgYXQgZGVubmUga29tbWFuZG9lbiBiYXJlCisgICAgIGZvcmFuZHJlciBkZW4gZsO4cnN0ZSBmb3Jla29tc3RlbiBhdiDCq2RlZW7CuyBww6UgbGluamVuLgorCisgIDMuIFNrcml2ICA6cy9kZWVuL2Rlbi9nIC4gTsOlciBnLWZsYWdnZXQgbGVnZ2VzIHRpbCwgYmV0eXIgZGV0dGUgZ2xvYmFsCisgICAgIGVyc3RhdG5pbmcgcMOlIGxpbmplbiBvZyBlcnN0YXR0ZXIgYWxsZSBmb3Jla29tc3RlciBhdiDCq2RlZW7CuyBww6UgbGluamVuLgorCistLS0+IGRlZW4gc29tIGthbiBrYXN0ZSBkZWVuIHR5bmdzdGUgc3RlaW5lbiBsZW5nc3QgZXIgZGVlbiBiZXN0ZQorCisgIDQuIEZvciDDpSBlcnN0YXR0ZSBhbGxlIGZvcmVrb21zdGVyIGF2IGVuIHRla3N0c3RyZW5nIG1lbGxvbSB0byBsaW5qZXIsCisgICAgIHNrcml2ICA6Iywjcy9nYW1tZWwvbnkvZyAgZGVyICMsIyBlciBsaW5qZW51bXJlbmUgcMOlIGRlIHRvIGxpbmplbmUgZm9yCisJCQkgICAgICAgbGluamVvbXLDpWRldCBlcnN0YXRuaW5nZW4gc2thbCBnasO4cmVzLgorICAgICBTa3JpdiAgOiVzL2dhbW1lbC9ueS9nICAgIGZvciDDpSBlcnN0YXR0ZSB0ZWtzdCBpIGhlbGUgZmlsZW4uCisgICAgIFNrcml2ICA6JXMvZ2FtbWVsL255L2djICAgZm9yIMOlIGZpbm5lIGFsbGUgZm9yZWtvbXN0ZXIgaSBoZWxlIGZpbGVuLCBvZworCQkJICAgICAgIGRlcmV0dGVyIHNww7hycmUgb20gdGVrc3RlbiBza2FsIGVyc3RhdHRlcyBlbGxlcgorCQkJICAgICAgIGlra2UuCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgT1BQU1VNTUVSSU5HIEFWIExFS1NKT04gNAorCisKKyAgMS4gQ3RybC1HIHZpc2VyIG7DpXbDpnJlbmRlIHBvc2lzam9uIGkgZmlsZW4gb2cgZmlsc3RhdHVzZW4uCisJICAgICBHCWfDpXIgdGlsIHNsdXR0ZW4gYXYgZmlsZW4uCisgICAgIG51bW1lciAgRwlnw6VyIHRpbCBkZXQgbGluamVudW1tZXJldC4KKwkgICAgZ2cJZ8OlciB0aWwgZGVuIGbDuHJzdGUgbGluamVuLgorCisgIDIuIFNrcml2ICAvICBldHRlcmZ1bGd0IGF2IGVuIHPDuGtldGVrc3QgZm9yIMOlIGxldGUgRlJBTU9WRVIgZXR0ZXIgdGVrc3Rlbi4KKyAgICAgU2tyaXYgID8gIGV0dGVyZnVsZ3QgYXYgZW4gc8O4a2V0ZWtzdCBmb3Igw6UgbGV0ZSBCQUtPVkVSIGV0dGVyIHRla3N0ZW4uCisgICAgIEV0dGVyIGV0IHPDuGsga2FuIGR1IHRyeWtrZSAgbiAgZm9yIMOlIGZpbm5lIG5lc3RlIGZvcmVrb21zdCBpIGRlbiBzYW1tZQorICAgICByZXRuaW5nZW4gZWxsZXIgIE4gIGZvciDDpSBsZXRlIGkgbW90c2F0dCByZXRuaW5nLgorICAgICBDVFJMLU8gdGFyIGRlZyB0aWxiYWtlIHRpbCBnYW1sZSBwb3Npc2pvbmVyLCBDVFJMLUkgdGlsIG55ZXJlIHBvc2lzam9uZXIuCisKKyAgMy4gU2tyaXYgICUgIG7DpXIgbWFya8O4cmVuIHN0w6VyIHDDpSBlbiAoLCApLCBbLCBdLCB7IGVsbGVyIH0gZm9yIMOlIGZpbm5lIGRlbgorICAgICBzb20gc2Ftc3ZhcmVyLgorCisgIDQuIEVyc3RhdHRlIMKrZ2FtbWVswrsgbWVkIGbDuHJzdGUgwqtuecK7IHDDpSBlbiBsaW5qZTogIDpzL2dhbW1lbC9ueQorICAgICBFcnN0YXR0ZSBhbGxlIMKrZ2FtbWVswrsgbWVkIMKrbnnCuyBww6UgZW4gbGluamU6ICAgIDpzL2dhbW1lbC9ueS9nCisgICAgIEVyc3RhdHRlIHRla3N0IG1lbGxvbSB0byBsaW5qZW51bXJlOgkgICAgIDojLCNzL2dhbW1lbC9ueS9nCisgICAgIEVyc3RhdHRlIGFsbGUgZm9yZWtvbXN0ZXIgaSBlbiBmaWw6CSAgICAgOiVzL2dhbW1lbC9ueS9nCisgICAgIEZvciDDpSBnb2RramVubmUgaHZlciBlcnN0YXRuaW5nLCBsZWdnIHRpbCDCq2PCuzogIDolcy9nYW1tZWwvbnkvZ2MKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCSAgICAgICBMZWtzam9uIDUuMTogSFZPUkRBTiBVVEbDmFJFIEVOIEVLU1RFUk4gS09NTUFORE8KKworCisgICAgKiogU2tyaXYgIDohICBldHRlcmZ1bGd0IGF2IGVuIGVrc3Rlcm4ga29tbWFuZG8gZm9yIMOlIHV0ZsO4cmUgZGVubmUuICoqCisKKyAgMS4gU2tyaXYgZGVuIHZlbGtqZW50ZSBrb21tYW5kb2VuICA6CSBmb3Igw6UgcGxhc3NlcmUgbWFya8O4cmVuIHDDpSBidW5uZW4gYXYKKyAgICAgc2tqZXJtZW4uIERldHRlIGxhciBkZWcgc2tyaXZlIGVuIGtvbW1hbmRvbGluamVrb21tYW5kby4KKworICAyLiBOw6Uga2FuIGR1IHNrcml2ZSB0ZWduZXQgICEgIC4gRGV0dGUgbGFyIGRlZyB1dGbDuHJlIGVuIGh2aWxrZW4gc29tIGhlbHN0CisgICAgIGVrc3Rlcm4ga29tbWFuZG8uCisKKyAgMy4gU29tIGV0IGVrc2VtcGVsLCBza3JpdiAgbHMgIGV0dGVyIHV0cm9wc3RlZ25ldCBvZyB0cnlrayA8RU5URVI+LiBEdSB2aWwKKyAgICAgbsOlIGbDpSBlbiBsaXN0ZSBvdmVyIGZpbGVuZSBpIGthdGFsb2dlbiwgYWtrdXJhdCBzb20gb20gZHUgaGFkZGUga2rDuHJ0CisgICAgIGtvbW1hbmRvZW4gZGlyZWt0ZSBmcmEga29tbWFuZG9saW5qZW4gaSBza2FsbGV0LiBFbGxlciBicnVrICA6IWRpciAgaHZpcworICAgICDCq2xzwrsgaWtrZSB2aXJrZXIuCisKK01FUks6IERldCBlciBtdWxpZyDDpSBrasO4cmUgYWxsZSBla3N0ZXJuZSBrb21tYW5kb2VyIHDDpSBkZW5uZSBtw6V0ZW4sIG9nc8OlIG1lZAorICAgICAgcGFyYW1ldGVyZS4KKworTUVSSzogQWxsZSDCqzrCuy1rb21tYW5kb2VyIG3DpSBhdnNsdXR0ZXMgbWVkIDxFTlRFUj4uIEZyYSBkZXR0ZSBwdW5rdGV0IGVyIGRldAorICAgICAgaWtrZSBhbGx0aWQgdmkgbmV2bmVyIGRldC4KKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgTGVrc2pvbiA1LjI6IE1FUiBPTSBMQUdSSU5HIEFWIEZJTEVSCisKKworICAgICAgKiogRm9yIMOlIGxhZ3JlIGVuZHJpbmdlbmUgZ2pvcnQgaSBlbiB0ZWtzdCwgc2tyaXYgIDp3IEZJTE5BVk4uICoqCisKKyAgMS4gU2tyaXYgIDohZGlyICBlbGxlciAgOiFscwlmb3Igw6UgZsOlIGVuIGxpc3RlIG92ZXIgZmlsZW5lIGkga2F0YWxvZ2VuLiBEdQorICAgICB2ZXQgYWxsZXJlZGUgYXQgZHUgbcOlIHRyeWtrZSA8RU5URVI+IGV0dGVyIGRldHRlLgorCisgIDIuIFZlbGcgZXQgZmlsbmF2biBww6UgZW4gZmlsIHNvbSBpa2tlIGZpbm5lcywgc29tIGZvciBla3NlbXBlbCAgVEVTVCAuCisKKyAgMy4gU2tyaXYgIDp3IFRFU1QgIChkZXIgVEVTVCBlciBmaWxuYXZuZXQgZHUgdmVsZ2VyKS4KKworICA0LiBEZXR0ZSBsYWdyZXIgaGVsZSBmaWxlbiAoZGVubmUgaW5uZsO4cmluZ2VuKSB1bmRlciBuYXZuZXQgVEVTVCAuIEZvciDDpQorICAgICBzamVra2UgZGV0dGUsIHNrcml2ICA6IWRpciAgZWxsZXIJOiFscyAgaWdqZW4gZm9yIMOlIHNlIGlubmhvbGRldCBhdgorICAgICBrYXRhbG9nZW4uCisKK01lcms6IEh2aXMgZHUgbsOlIGhhZGRlIGF2c2x1dHRldCBWaW0gb2cgc3RhcnRldCBww6Ugbnl0dCBpZ2plbiBtZWQgwqt2aW0gVEVTVMK7LAorICAgICAgdmlsbGUgZmlsZW4gdsOmcnQgZW4gZWtzYWt0IGtvcGkgYXYgaW5uZsO4cmluZ2VuIGRhIGR1IGxhZ3JldCBkZW4uCisKKyAgNS4gRmplcm4gZmlsZW4gdmVkIMOlIHNrcml2ZSAgOiFybSBURVNUICBodmlzIGR1IGVyIHDDpSBldCBVbml4LWxpZ25lbmRlCisgICAgIG9wZXJhdGl2c3lzdGVtLCBlbGxlciAgOiFkZWwgVEVTVAlodmlzIGR1IGJydWtlciBNUy1ET1MuCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICBMZWtzam9uIDUuMzogVkVMR0UgVEVLU1QgU09NIFNLQUwgTEFHUkVTCisKKworICAgICAqKiBGb3Igw6UgbGFncmUgZW4gZGVsIGF2IGVuIGZpbCwgc2tyaXYgIHYJYmV2ZWdlbHNlICA6dyBGSUxOQVZOICoqCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBkZW5uZSBsaW5qZW4uCisKKyAgMi4gVHJ5a2sgIHYgIG9nIGZseXR0IG1hcmvDuHJlbiB0aWwgZGV0IGZlbXRlIGVsZW1lbnRldCBuZWRlbmZvci4gTGVnZyBtZXJrZQorICAgICB0aWwgYXQgdGVrc3RlbiBibGlyIG1hcmtlcnQuCisKKyAgMy4gVHJ5a2sgIDogIChrb2xvbikuIFDDpSBidW5uZW4gYXYgc2tqZXJtZW4gdmlsICA6JzwsJz4gIGtvbW1lIHRpbCBzeW5lLgorCisgIDQuIFRyeWtrICB3IFRFU1QgICwgZGVyIFRFU1QgZXIgZXQgZmlsbmF2biBzb20gaWtrZSBmaW5uZXMgZW5kYS4gS29udHJvbGxlcgorICAgICBhdCBkdSBzZXIJOic8LCc+dyBURVNUICBmw7hyIGR1IHRyeWtrZXIgRW50ZXIuCisKKyAgNS4gVmltIHZpbCBza3JpdmUgZGUgdmFsZ3RlIGxpbmplbmUgdGlsIGZpbGVuIFRFU1QuIEJydWsgIDohZGlyICBlbGxlciAgIWxzCisgICAgIGZvciDDpSBzZSBkZW4uIElra2Ugc2xldHQgZGVuIGVuZGEhIFZpIHZpbCBicnVrZSBkZW4gaSBuZXN0ZSBsZWtzam9uLgorCitNRVJLOiBWZWQgw6UgdHJ5a2tlICB2ICBzdGFydGVzIHZpc3VlbHQgdmFsZy4gRHUga2FuIGZseXR0ZSBtYXJrw7hyZW4gcnVuZHQgZm9yCisgICAgICDDpSBnasO4cmUgZGV0IHZhbGd0ZSBvbXLDpWRldCBzdMO4cnJlIGVsbGVyIG1pbmRyZS4gRGVyZXR0ZXIga2FuIGR1IGJydWtlIGVuCisgICAgICBvcGVyYXRvciBmb3Igw6UgZ2rDuHJlIG5vZSBtZWQgdGVrc3Rlbi4gRm9yIGVrc2VtcGVsIHNsZXR0ZXIgIGQgIHRla3N0ZW4uCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQlMZWtzam9uIDUuNDogSEVOVElORyBPRyBTQU1NRU5TTMOFSU5HIEFWIEZJTEVSCisKKworICoqIEZvciDDpSBsZXNlIGlubiBlbiBhbm5lbiBmaWwgaW5uIGkgbsOldsOmcmVuZGUgYnVmZmVyLCBza3JpdiAgOnIgRklMTkFWTiAgKioKKworICAxLiBQbGFzc2VyIG1hcmvDuHJlbiBsaWtlIG92ZXIgZGVubmUgbGluamVuLgorCitNRVJLOiBFdHRlciDDpSBoYSB1dGbDuHJ0IHN0ZWcgMiB2aWwgZHUgc2UgdGVrc3RlbiBmcmEgbGVrc2pvbiA1LjMuIEfDpSBkZXJldHRlcgorICAgICAgTkVEIGZvciDDpSBzZSBkZW5uZSBsZWtzam9uZW4gaWdqZW4uCisKKyAgMi4gSGVudCBURVNULWZpbGVuIHZlZCDDpSBicnVrZSBrb21tYW5kb2VuICA6ciBURVNUICBkZXIgVEVTVCBlciBuYXZuZXQgcMOlCisgICAgIGZpbGVuIGR1IGJydWt0ZS4gRmlsZW4gZHUgaGVudGVyIGJsaXIgcGxhc3NlcnQgbmVkZW5mb3IgbWFya8O4cmxpbmplbi4KKworICAzLiBGb3Igw6Ugc2pla2tlIGF0IGZpbGVuIGJsZSBoZW50ZXQsIGfDpSB0aWxiYWtlIG9nIHNlIGF0IGRldCBlciB0byBrb3BpZXIgYXYKKyAgICAgbGVrc2pvbiA1LjMsIG9yaWdpbmFsZW4gb2cgZGVubmUgdmVyc2pvbmVuLgorCitNRVJLOiBEdSBrYW4gb2dzw6UgbGVzZSB1dGRhdGFlbmUgYXYgZW4gZWtzdGVybiBrb21tYW5kby4gRm9yIGVrc2VtcGVsLAk6ciAhbHMKKyAgICAgIGxlc2VyIHV0ZGF0YWVuZSBhdiBscy1rb21tYW5kb2VuIG9nIGxlZ2dlciBkZW0gbmVkZW5mb3IgbWFya8O4cmVuLgorCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgT1BQU1VNTUVSSU5HIEFWIExFS1NKT04gNQorCisKKyAgMS4gIDoha29tbWFuZG8gIHV0ZsO4cmVyIGVuIGVrc3Rlcm4ga29tbWFuZGlvLgorCisgICAgICBOb2VuIG55dHRpZ2UgZWtzZW1wbGVyIGVyOgorCSAoTVMtRE9TKQkgIChVbml4KQorCSAgOiFkaXIJCSAgIDohbHMJCSAgLSBMaXN0IGZpbGVuZSBpIGthdGFsb2dlbi4KKwkgIDohZGVsIEZJTE5BVk4gICAgOiFybSBGSUxOQVZOICAgLSBTbGV0dCBmaWxlbiBGSUxOQVZOLgorCisgIDIuICA6dyBGSUxOQVZOICBza3JpdmVyIGRlbiBuw6V2w6ZyZW5kZSBWaW0tZmlsZW4gZGlza2VuIG1lZCBuYXZuZXQgRklMTkFWTiAuCisKKyAgMy4gIHYgIGJldmVnZWxzZSAgOncgRklMTkFWTglsYWdyZXIgZGUgdmlzdWVsdCB2YWxndGUgbGluamVuZSB0aWwgZmlsZW4KKyAgICAgRklMTkFWTi4KKworICA0LiAgOnIgRklMTkFWTiAgaGVudGVyIGZpbGVuIEZJTE5BVk4gb2cgbGVnZ2VyIGRlbiBpbm4gbmVkZW5mb3IgbWFya8O4cmVuLgorCisgIDUuICA6ciAhZGlyICBsZXNlciB1dGRhdGFlbmUgZnJhIMKrZGlywrsta29tbWFuZG9lbiBvZyBsZWdnZXIgZGVtIG5lZGVuZm9yCisgICAgIG1hcmvDuHJwb3Npc2pvbmVuLgorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgTGVrc2pvbiA2LjE6IMKrw4VQTkUgTElOSkXCuy1LT01NQU5ET0VOCisKKworICAgICoqIFNrcml2ICBvICBmb3Igw6UgwqvDpXBuZSBvcHDCuyBmb3IgZW4gbnkgbGluamUgZXR0ZXIgbWFya8O4cmVuIG9nIGfDpSB0aWwKKyAgICAgICBpbm5zZXR0aW5nc21vZHVzICoqCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBsaW5qZW4gbmVkZW5mb3IgbWVya2V0IC0tLT4uCisKKyAgMi4gU2tyaXYgIG8gIChsaXRlbiBvKSBmb3Igw6Ugw6VwbmUgb3BwIGVuIGxpbmplIE5FREVORk9SIG1hcmvDuHJlbiBvZyBnw6UgaW5uIGkKKyAgICAgaW5uc2V0dGluZ3Ntb2R1cy4KKworICAzLiBTa3JpdiBsaXR0IHRla3N0IG9nIHRyeWtrIDxFU0M+IGZvciDDpSBnw6UgdXQgYXYgaW5uc2V0dGluZ3Ntb2R1c2VuLgorCistLS0+IEV0dGVyIGF0ICBvICBlciBza3JldmV0IGJsaXIgbWFya8O4cmVuIHBsYXNzZXJ0IHDDpSBkZW4gdG9tbWUgbGluamVuLgorCisgIDQuIEZvciDDpSDDpXBuZSBlbiBueSBsaW5qZSBPVkVSIG1hcmvDuHJlbiwgdHJ5a2sgcmV0dCBvZyBzbGV0dCBlbiBzdG9yCU8KKyAgICAgaXN0ZWRlbmZvciBlbiBsaXRlbiAgbyAuIFByw7h2IGRldHRlIHDDpSBsaW5qZW4gbmVkZW5mb3IuCisKKy0tLT4gTGFnIG55IGxpbmplIG92ZXIgZGVubmUgdmVkIMOlIHRyeWtrZSBPIG1lbnMgbWFya8O4cmVuIGVyIHDDpSBkZW5uZSBsaW5qZW4uCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgICAgTGVrc2pvbiA2LjI6IMKrTEVHRyBUSUzCuy1LT01NQU5ET0VOCisKKworCSAgICAqKiBTa3JpdiAgYSAgZm9yIMOlIGxlZ2dlIHRpbCB0ZWtzdCBFVFRFUiBtYXJrw7hyZW4uICoqCisKKyAgMS4gRmx5dHQgbWFya8O4cmVuIHRpbCBzdGFydGVuIGF2IGxpbmplbiBtZXJrZXQgLS0tPiBuZWRlbmZvci4KKworICAyLiBUcnlrayAgZSAgdGlsIG1hcmvDuHJlbiBlciBww6Ugc2x1dHRlbiBhdiDCq2xpwrsuCisKKyAgMy4gVHJ5a2sgIGEgIChsaXRlbiBhKSBmb3Igw6UgbGVnZ2UgdGlsIHRla3N0IEVUVEVSIG1hcmvDuHJlbi4KKworICA0LiBGdWxsZsO4ciBvcmRldCBzw6VubiBzb20gcMOlIGxpbmplbiBuZWRlbmZvci4gVHJ5a2sgPEVTQz4gZm9yIMOlIGfDpSB1dCBhdgorICAgICBpbm5zZXR0aW5nc21vZHVzZW4uCisKKyAgNS4gQnJ1ayAgZSAgZm9yIMOlIGfDpSB0aWwgZGV0IG5lc3RlIHVmdWxsc3RlbmRpZ2Ugb3JkZXQgb2cgcmVwZXRlciBzdGVnIDMgb2cKKyAgICAgNC4KKworLS0tPiBEZW5uZSBsaSBsYXIgZGVnIMO4dmUgcMOlIMOlIGxlZyB0aWwgdGVrIHDDpSBlbiBsaW5qZS4KKy0tLT4gRGVubmUgbGluamVuIGxhciBkZWcgw7h2ZSBww6Ugw6UgbGVnZ2UgdGlsIHRla3N0IHDDpSBlbiBsaW5qZS4KKworTWVyazogYSwgaSBvZyBBIGfDpXIgYWxsZSB0aWwgZGVuIHNhbW1lIGlubnNldHRpbmdzbW9kdXNlbiwgZGVuIGVuZXN0ZQorICAgICAgZm9yc2tqZWxsZW4gZXIgaHZvciB0ZWduZW5lIGJsaXIgc2F0dCBpbm4uCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgTGVrc2pvbiA2LjM6IEVOIEFOTkVOIE3DhVRFIMOFIEVSU1RBVFRFIFDDhQorCisKKwkgICAqKiBTa3JpdiBlbiBzdG9yICBSCWZvciDDpSBlcnN0YXR0ZSBtZXIgZW5uIGV0dCB0ZWduLiAqKgorCisgIDEuIEZseXR0IG1hcmvDuHJlbiB0aWwgZGVuIGbDuHJzdGUgbGluamVuIG5lZGVuZm9yIG1lcmtldCAtLS0+LiBGbHl0dCBtYXJrw7hyZW4KKyAgICAgdGlsIGJlZ3lubmVsc2VuIGF2IGRlbiBmw7hyc3RlIMKreHh4wrstZW4uCisKKyAgMi4gVHJ5a2sgIFIgIG9nIHNrcml2IGlubiB0YWxsZXQgc29tIHN0w6VyIG5lZGVuZm9yIHDDpSBkZW4gYW5kcmUgbGluamVuIHPDpQorICAgICBkZXQgZXJzdGF0dGVyIHh4eC4KKworICAzLiBUcnlrayA8RVNDPiBmb3Igw6UgZ8OlIHV0IGF2IGVyc3RhdG5pbmdzbW9kdXNlbi4gTGVnZyBtZXJrZSB0aWwgYXQgcmVzdGVuCisgICAgIGF2IGxpbmplbiBmb3JibGlyIHVmb3JhbmRyZXQuCisKKyAgNC4gUmVwZXRlciBzdGVnZW5lIGZvciDDpSBlcnN0YXR0ZSBkZW4gZ2plbnbDpnJlbmRlIHh4eC4KKworLS0tPiBWZWQgw6UgbGVnZ2UgMTIzIHRpbCB4eHggZsOlciB2aSB4eHguCistLS0+IFZlZCDDpSBsZWdnZSAxMjMgdGlsIDQ1NiBmw6VyIHZpIDU3OS4KKworTUVSSzogRXJzdGF0bmluZ3Ntb2R1cyBlciBsaWsgaW5zZXR0aW5nc21vZHVzLCBtZW4gaHZlcnQgdGVnbiBzb20gc2tyaXZlcworICAgICAgZXJzdGF0dGVyIGV0IGVrc2lzdGVyZW5kZSB0ZWduLgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgIExla3Nqb24gNi40OiBLT1BJRVJFIE9HIExJTUUgSU5OIFRFS1NUCisKKworICAgICoqIEJydWsgeS1vcGVyYXRvcmVuIGZvciDDpSBrb3BpZXJlIHRla3N0IG9nICBwICBmb3Igw6UgbGltZSBkZW4gaW5uICoqCisKKyAgMS4gR8OlIHRpbCBsaW5qZW4gbWVya2V0IC0tLT4gbmVkZW5mb3Igb2cgcGxhc3NlciBtYXJrw7hyZW4gZXR0ZXIgwqthKcK7LgorCisgIDIuIEfDpSBpbm4gaSB2aXN1ZWxsIG1vZHVzIG1lZCAgdiAgb2cgZmx5dHQgbWFya8O4cmVuIHRpbCBsaWtlIGbDuHIgwqtmw7hyc3RlwrsuCisKKyAgMy4gVHJ5a2sgIHkgIGZvciDDpSBrb3BpZXJlIChlbmdlbHNrOiDCq3lhbmvCuykgZGVuIHV0aGV2ZWRlIHRla3N0ZW4uCisKKyAgNC4gRmx5dHQgbWFya8O4cmVuIHRpbCBzbHV0dGVuIGF2IGRlbiBuZXN0ZSBsaW5qZW46ICBqJAorCisgIDUuIFRyeWtrICBwICBmb3Igw6UgbGltZSBpbm4gdGVrc3Rlbi4gVHJ5a2sgZGVyZXR0ZXI6CWEgYW5kcmUgPEVTQz4gLgorCisgIDYuIEJydWsgdmlzdWVsbCBtb2R1cyBmb3Igw6UgdmVsZ2UgwqsgdmFsZ2V0LsK7LCBrb3BpZXIgZGV0IG1lZAl5ICwgZ8OlIHRpbAorICAgICBzbHV0dGVuIGF2IGRlbiBuZXN0ZSBsaW5qZW4gbWVkICBqJCAgb2cgbGVnZyBpbm4gdGVrc3RlbiBkZXIgbWVkICBwIC4KKworLS0tPiBhKSBEZXR0ZSBlciBkZXQgZsO4cnN0ZSB2YWxnZXQuCisgICAgIGIpCisKK01lcms6IER1IGthbiBvZ3PDpSBicnVrZSAgeSAgc29tIGVuIG9wZXJhdG9yOyAgeXcgIGtvcGllcmVyIGV0dCBvcmQuCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgICBMZWtzam9uIDYuNTogU0VUVCBWQUxHCisKKworICAqKiBTZXR0IGV0IHZhbGcgc8OlIHPDuGsgZWxsZXIgZXJzdGF0bmluZyBpZ25vcmVyZXIgc3RvcmUvc23DpSBib2tzdGF2ZXIuICoqCisKKyAgMS4gTGV0IGV0dGVyIMKraWdub3JlwrsgdmVkIMOlIHNrcml2ZTogIC9pZ25vcmUgPEVOVEVSPgorICAgICBSZXBldGVyIGZsZXJlIGdhbmdlciB2ZWQgw6UgdHJ5a2tlCW4gLgorCisgIDIuIFNldHQgwqtpY8K7LXZhbGdldCAoSWdub3JlIENhc2UpIHZlZCDDpSBza3JpdmU6ICA6c2V0IGljCisKKyAgMy4gU8O4ayBldHRlciDCq2lnbm9yZcK7IGlnamVuIHZlZCDDpSB0cnlra2UgIG4gLgorICAgICBMZWdnIG1lcmtlIHRpbCBhdCBiw6VkZSDCq0lnbm9yZcK7IG9nIMKrSUdOT1JFwrsgYmxpciBmdW5uZXQuCisKKyAgNC4gU2V0dCDCq2hsc2VhcmNowrstIG9nIMKraW5jc2VhcmNowrstdmFsZ2VuZTogIDpzZXQgaGxzIGlzCisKKyAgNS4gU2tyaXYgc8O4a2Vrb21tYW5kb2VuIGlnamVuIG9nIHNlIGh2YSBzb20gc2tqZXI6ICAvaWdub3JlIDxFTlRFUj4KKworICA2LiBGb3Igw6Ugc2zDpSBhdiBpZ25vcmVyaW5nIGF2IHN0b3JlL3Ntw6UgYm9rc3RhdmVyLCBza3JpdjogIDpzZXQgbm9pYworCitNZXJrOiBGb3Igw6UgZmplcm5lIHV0aGV2aW5nZW4gYXYgdHJlZmYsIHNrcml2Ogk6bm9obHNlYXJjaAorTWVyazogSHZpcyBkdSB2aWwgaWdub3JlcmUgc3RvcmUvc23DpSBib2tzdGF2ZXIgZm9yIGt1biBlbiBzw7hrZWtvbW1hbmRvLCBicnVrCisgICAgICBcYyAgaSB1dHRyeWtrZXQ6CS9pZ25vcmVcYyA8RU5URVI+Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgT1BQU1VNTUVSSU5HIEFWIExFS1NKT04gNgorCisgIDEuIFRyeWtrICBvICBmb3Igw6UgbGVnZ2UgdGlsIGVuIGxpbmplIE5FREVORk9SIG1hcmvDuHJlbiBvZyBnw6UgaW5uIGkKKyAgICAgaW5uc2V0dGluZ3Ntb2R1cy4KKyAgICAgVHJ5a2sgIE8gIGZvciDDpSDDpXBuZSBlbiBsaW5qZSBPVkVSIG1hcmvDuHJlbi4KKworICAyLiBTa3JpdiAgYSAgZm9yIMOlIHNldHRlIGlubiB0ZWtzdCBFVFRFUiBtYXJrw7hyZW4uCisgICAgIFNrcml2ICBBICBmb3Igw6Ugc2V0dGUgaW5uIHRla3N0IGV0dGVyIHNsdXR0ZW4gYXYgbGluamVuLgorCisgIDMuIEtvbW1hbmRvZW4gIGUgIGfDpXIgdGlsIHNsdXR0ZW4gYXYgZXQgb3JkLgorCisgIDQuIE9wZXJhdG9yZW4gIHkgICjCq3lhbmvCuykga29waWVyZXIgdGVrc3QsICBwICAowqtwYXN0ZcK7KSBsaW1lciBkZW4gaW5uLgorCisgIDUuIFZlZCDDpSB0cnlra2UgIFIgIGfDpXIgZHUgaW5uIGkgZXJzdGF0bmluZ3Ntb2R1cyBoZWx0IHRpbCAgPEVTQz4gIHRyeWtrZXMuCisKKyAgNi4gU2tyaXYgwqs6c2V0IHh4eMK7IGZvciDDpSBzZXR0ZSB2YWxnZXQgwqt4eHjCuy4gTm9lbiB2YWxnIGVyOgorCcKraWPCuyDCq2lnbm9yZWNhc2XCuwlpZ25vcmVyIHN0b3JlL3Ntw6UgYm9rc3RhdmVyIHVuZGVyIHPDuGsKKwnCq2lzwrsgwqtpbmNzZWFyY2jCuwl2aXMgZGVsdmlzZSB0cmVmZiBmb3IgZW4gc8O4a2V0ZWtzdAorCcKraGxzwrsgwqtobHNlYXJjaMK7CXV0aGV2IGFsbGUgc8O4a2V0cmVmZgorCisgIDcuIExlZ2cgdGlsIMKrbm/CuyBmb3JhbiB2YWxnZXQgZm9yIMOlIHNsw6UgZGV0IGF2OiAgOnNldCBub2ljCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICAgIExla3Nqb24gNy4xOiBGw4UgSEpFTFAKKworCisJCSAgICoqIEJydWsgZGV0IGlubmVieWdkZSBoamVscGVzeXN0ZW1ldC4gKioKKworICBWaW0gaGFyIGV0IG9tZmF0dGVuZGUgaW5uZWJ5Z2dldCBoamVscGVzeXN0ZW0uIEZvciDDpSBzdGFydGUgZGV0LCBwcsO4diBlbiBhdgorICBkaXNzZSBtw6V0ZW5lOgorICAgIC0gVHJ5a2sgSGplbHAtdGFzdGVuIChodmlzIGR1IGhhciBlbikKKyAgICAtIFRyeWtrIEYxLXRhc3RlbiAoaHZpcyBkdSBoYXIgZW4pCisgICAgLSBTa3JpdiAgOmhlbHAgPEVOVEVSPgorCisgIExlcyB0ZWtzdGVuIGkgaGplbHBldmluZHVldCBmb3Igw6UgZmlubmUgdXQgaHZvcmRhbiBoamVscGVuIHZpcmtlci4KKyAgU2tyaXYgIENUUkwtVyBDVFJMLVcJZm9yIMOlIGhvcHBlIGZyYSBldCB2aW5kdSB0aWwgZXQgYW5uZXQKKyAgU2tyaXYgIDpxIDxFTlRFUj4JZm9yIMOlIGx1a2tlIGhqZWxwZXZpbmR1ZXQuCisKKyAgRHUga2FuIGbDpSBoamVscCBmb3Igb210cmVudCBhbGxlIHRlbWFlciBvbSBWaW0gdmVkIMOlIHNrcml2ZSBldCBwYXJhbWV0ZXIgdGlsCisgIMKrOmhlbHDCuy1rb21tYW5kb2VuLiBQcsO4diBkaXNzZSAoaWtrZSBnbGVtIMOlIHRyeWtrZSA8RU5URVI+KToKKworICAgIDpoZWxwIHcKKyAgICA6aGVscCBjX0NUUkwtRAorICAgIDpoZWxwIGluc2VydC1pbmRleAorICAgIDpoZWxwIHVzZXItbWFudWFsCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgICBMZWtzam9uIDcuMjogTEFHIEVUIE9QUFNUQVJUU1NLUklQVAorCisKKwkJCSoqIFNsw6UgcMOlIGZ1bmtzam9uZXIgaSBWaW0gKioKKworICBWaW0gaGFyIG1hbmdlIGZsZXJlIGZ1bmtzam9uZXIgZW5uIFZpLCBtZW4gZmxlc3RlcGFydGVuIGF2IGRlbSBlciBzbMOldHQgYXYKKyAgc29tIHN0YW5kYXJkLiBGb3Igw6UgYmVneW5uZSDDpSBicnVrZSBmbGVyZSBmdW5rc2pvbmVyIG3DpSBkdSBsYWdlIGVuCisgIMKrdmltcmPCuy1maWwuCisKKyAgMS4gU3RhcnQgcmVkaWdlcmluZ2VuIGF2IMKrdmltcmPCuy1maWxlbi4gRGV0dGUgYXZoZW5nZXIgYXYgc3lzdGVtZXQgZGl0dDoKKwk6ZSB+Ly52aW1yYwkgIGZvciBVbml4CisJOmUgJFZJTS9fdmltcmMJICBmb3IgTVMgV2luZG93cworCisgIDIuIExlcyBpbm4gZWtzZW1wZWxmaWxlbiBmb3Igwqt2aW1yY8K7OgorCTpyICRWSU1SVU5USU1FL3ZpbXJjX2V4YW1wbGUudmltCisKKyAgMy4gTGFncmUgZmlsZW4gbWVkOgorCTp3CisKKyAgTmVzdGUgZ2FuZyBkdSBzdGFydGVyIFZpbSB2aWwgZGVuIGJydWtlIHN5bnRha3MtdXRoZXZpbmcuIER1IGthbiBsZWdnZSB0aWwKKyAgYWxsZSBkaW5lIGZvcmV0cnVrbmUgb3Bwc2V0dCBpIGRlbm5lIMKrdmltcmPCuy1maWxlbi4KKyAgRm9yIG1lciBpbmZvcm1hc2pvbiwgc2tyaXYgIDpoZWxwIHZpbXJjLWludHJvCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgIExla3Nqb24gNy4zOiBGVUxMRsOYUklORworCisKKwkgICAgICAqKiBLb21tYW5kb2xpbmplZnVsbGbDuHJpbmcgbWVkIENUUkwtRCBvZyA8VEFCPiAqKgorCisgIDEuIFbDpnIgc2lra2VyIHDDpSBhdCBWaW0gaWtrZSBlciBpIFZpLWtvbXBhdGliZWwgbW9kdXM6ICA6c2V0IG5vY3AKKworICAyLiBTZSBodmlsa2UgZmlsZXIgc29tIGVyIGkga2F0YWxvZ2VuOiAgOiFscwllbGxlciAgOiFkaXIKKworICAzLiBTa3JpdiBzdGFydGVuIHDDpSBlbiBrb21tYW5kbzogIDplCisKKyAgNC4gVHJ5a2sgIENUUkwtRCAgb2cgVmltIHZpbCB2aXNlIGVuIGxpc3RlIG92ZXIga29tbWFuZG9lciBzb20gc3RhcnRlciBtZWQKKyAgICAgwqtlwrsuCisKKyAgNS4gVHJ5a2sgIDxUQUI+ICBvZyBWaW0gdmlsIGZ1bGxmw7hyZSBrb21tYW5kb25hdm5ldCB0aWwgwqs6ZWRpdMK7LgorCisgIDYuIExlZ2cgdGlsIGV0IG1lbGxvbXJvbSBvZyBzdGFydGVuIHDDpSBldCBla3Npc3RlcmVuZGUgZmlsbmF2bjogIDplZGl0IEZJTAorCisgIDcuIFRyeWtrIDxUQUI+LiBWaW0gdmlsIGZ1bGxmw7hyZSBuYXZuZXQgKGh2aXMgZGV0IGVyIHVuaWt0KS4KKworTUVSSzogRnVsbGbDuHJpbmcgZnVuZ2VyZXIgZm9yIG1hbmdlIGtvbW1hbmRvZXIuIFByw7h2IHZlZCDDpSB0cnlra2UgQ1RSTC1EIG9nCisgICAgICA8VEFCPi4gRGV0IGVyIHNwZXNpZWx0IG55dHRpZyBmb3IgYnJ1ayBzYW1tZW4gbWVkICA6aGVscCAuCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgT1BQU1VNTUVSSU5HIEFWIExFS1NKT04gNworCisKKyAgMS4gU2tyaXYgIDpoZWxwICBlbGxlciB0cnlrayA8RjE+IGVsbGVyIDxIZWxwPiBmb3Igw6Ugw6VwbmUgZXQgaGplbHBldmluZHUuCisKKyAgMi4gU2tyaXYgIDpoZWxwIGtvbW1hbmRvICBmb3Igw6UgZsOlIGhqZWxwIG9tICBrb21tYW5kbyAuCisKKyAgMy4gVHJ5a2sgIENUUkwtVyBDVFJMLVcgIGZvciDDpSBob3BwZSB0aWwgZXQgYW5uZXQgdmluZHUuCisKKyAgNC4gVHJ5a2sgIDpxCWZvciDDpSBsdWtrZSBoamVscGV2aW5kdWV0LgorCisgIDUuIE9wcHJldHQgZXQgdmltcmMtb3Bwc3RhcnRzc2tyaXB0IGZvciDDpSBsYWdyZSBmYXZvcml0dHZhbGdlbmUgZGluZS4KKworICA2LiBOw6VyIGR1IHNrcml2ZXIgZW4gwqs6wrsta29tbWFuZG8sIHRyeWtrIENUUkwtRCBmb3Igw6Ugc2UgbXVsaWdlCisgICAgIGZ1bGxmw7hyaW5nZXIuIFRyeWtrIDxUQUI+IGZvciDDpSBicnVrZSBlbiBmdWxsZsO4cmluZy4KKworCisKKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgSGVyIHNsdXR0ZXIgaW5uZsO4cmluZ2VuIGkgVmltLiBEZW4gdmFyIG1lbnQgc29tIGVuIHJhc2sgb3ZlcnNpa3Qgb3ZlcgorICBlZGl0b3JlbiwgYWtrdXJhdCBub2sgdGlsIMOlIGxhIGRlZyBzZXR0ZSBpIGdhbmcgbWVkIGVua2VsIGJydWsuIERlbiBlciBww6UKKyAgbGFuZ3QgbsOmciBrb21wbGV0dCwgZGEgVmltIGhhciBtYW5nZSBmbGVyZSBrb21tYW5kb2VyLiBMZXMgYnJ1a3NhbnZpc25pbmdlbgorICB2ZWQgw6Ugc2tyaXZlCTpoZWxwIHVzZXItbWFudWFsICAuCisKKyAgRm9yIHZpZGVyZSBsZXNpbmcgb2cgc3R1ZGllciwga2FuIGRlbm5lIGJva2VuIGFuYmVmYWxlczoKKyAgICAgIMKrVmltIC0gVmkgSW1wcm92ZWTCuyBhdiBTdGV2ZSBPdWFsbGluZQorICAgICAgVXRnaXZlcjogTmV3IFJpZGVycworICBEZW4gZsO4cnN0ZSBib2tlbiBzb20gZXIgZnVsbHQgb2cgaGVsdCBkZWRpc2VydCB0aWwgVmltLiBTcGVzaWVsdCBueXR0aWcgZm9yCisgIG55YmVneW5uZXJlLiBJbm5laG9sZGVyIG1hbmdlIGVrc2VtcGxlciBvZyBpbGx1c3RyYXNqb25lci4KKyAgU2UgaHR0cDovL2ljY2YtaG9sbGFuZC5vcmcvY2xpY2s1Lmh0bWwKKworICBEZW5uZSBib2tlbiBlciBlbGRyZSBvZyBoYW5kbGVyIG1lciBvbSBWaSBlbm4gVmltLCBtZW4gYW5iZWZhbGVzIG9nc8OlOgorICAgICAgwqtMZWFybmluZyB0aGUgVmkgRWRpdG9ywrsgYXYgTGluZGEgTGFtYgorICAgICAgVXRnaXZlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzIEluYy4KKyAgRGV0IGVyIGVuIGdvZCBib2sgZm9yIMOlIGbDpSB2aXRlIG9tdHJlbnQgaHZhIHNvbSBoZWxzdCBvbSBWaS4KKyAgRGVuIHNqZXR0ZSB1dGdhdmVuIGlubmVob2xkZXIgb2dzw6UgaW5mb3JtYXNqb24gb20gVmltLgorCisgIERlbm5lIGlubmbDuHJpbmdlbiBlciBza3JldmV0IGF2IE1pY2hhZWwgQy4gUGllcmNlIG9nIFJvYmVydCBLLiBXYXJlLAorICBDb2xvcmFkbyBTY2hvb2wgb2YgTWluZXMgbWVkIGlkw6llciBhdiBDaGFybGVzIFNtaXRoLCBDb2xvcmFkbyBTdGF0ZQorICBVbml2ZXJzaXR5LiBFLW1haWw6IGJ3YXJlQG1pbmVzLmNvbG9yYWRvLmVkdSAuCisKKyAgTW9kaWZpc2VydCBmb3IgVmltIGF2IEJyYW0gTW9vbGVuYWFyLgorICBPdmVyc2F0dCBhdiDDmHl2aW5kIEEuIEhvbG0uIEUtbWFpbDogdmltdHV0b3IgX0FUXyBzdW5iYXNlLm9yZworICBJZDogdHV0b3Iubm8gNDA2IDIwMDctMDMtMTggMjI6NDg6MzZaIHN1bm55CisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgordmltOiBzZXQgdHM9OCA6CmRpZmYgLS1naXQgYS9ydW50aW1lL3R1dG9yL3R1dG9yLnZpbSBiL3J1bnRpbWUvdHV0b3IvdHV0b3IudmltCmluZGV4IDNkZGExZWEuLjgxZTVhMTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvdHV0b3IvdHV0b3IudmltCisrKyBiL3J1bnRpbWUvdHV0b3IvdHV0b3IudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gdHV0b3Igc3VwcG9ydCBmaWxlCiAiIEF1dGhvcjogRWR1YXJkbyBGLiBBbWF0cmlhIDxlZmVybmExQHBsYXRlYS5wbnRpYy5tZWMuZXM+Ci0iIExhc3QgQ2hhbmdlOgkyMDA3IE1hciAwMQorIiBMYXN0IENoYW5nZToJMjAwOCBKdW4gMjEKIAogIiBUaGlzIHNtYWxsIHNvdXJjZSBmaWxlIGlzIHVzZWQgZm9yIGRldGVjdGluZyBpZiBhIHRyYW5zbGF0aW9uIG9mIHRoZQogIiB0dXRvciBmaWxlIGV4aXN0LCBpLmUuLCBhIHR1dG9yLnh4IGZpbGUsIHdoZXJlIHh4IGlzIHRoZSBsYW5ndWFnZS4KQEAgLTQ1LDIzICs0NSwyOCBAQAogICBlbmRpZgogZW5kaWYKIAorIiBTb21laG93ICIuZ2UiIChHZXJtYW55KSBpcyBzb21ldGltZXMgdXNlZCBmb3IgIi5kZSIgKERldXRzY2gpLgoraWYgczpleHQgPX4/ICdcLmdlJworICBsZXQgczpleHQgPSAiLmRlIgorZW5kaWYKKworaWYgczpleHQgPX4/ICdcLmVuJworICBsZXQgczpleHQgPSAiIgorZW5kaWYKKwogIiBUaGUgamFwYW5lc2UgdHV0b3IgaXMgYXZhaWxhYmxlIGluIHR3byBlbmNvZGluZ3MsIGd1ZXNzIHdoaWNoIG9uZSB0byB1c2UKICIgVGhlICJzamlzIiBvbmUgaXMgYWN0dWFsbHkgImNwOTMyIiwgaXQgZG9lc24ndCBtYXR0ZXIgZm9yIHRoaXMgdGV4dC4KIGlmIHM6ZXh0ID1+PyAnXC5qYScKICAgaWYgJmVuYyA9fiAiZXVjIgogICAgIGxldCBzOmV4dCA9ICIuamEuZXVjIgotICBlbHNlaWYgJmVuYyA9fiAidXRmLTgkIgotICAgIGxldCBzOmV4dCA9ICIuamEudXRmLTgiCi0gIGVsc2UKKyAgZWxzZWlmICZlbmMgIT0gInV0Zi04IgogICAgIGxldCBzOmV4dCA9ICIuamEuc2ppcyIKICAgZW5kaWYKIGVuZGlmCiAKICIgVGhlIGtvcmVhbiB0dXRvciBpcyBhdmFpbGFibGUgaW4gdHdvIGVuY29kaW5ncywgZ3Vlc3Mgd2hpY2ggb25lIHRvIHVzZQogaWYgczpleHQgPX4/ICdcLmtvJwotICBpZiAmZW5jID1+ICJ1dGYtOCQiCi0gICAgbGV0IHM6ZXh0ID0gIi5rby51dGYtOCIKLSAgZWxzZQorICBpZiAmZW5jICE9ICJ1dGYtOCIKICAgICBsZXQgczpleHQgPSAiLmtvLmV1YyIKICAgZW5kaWYKIGVuZGlmCkBAIC03Miw3ICs3Nyw3IEBACiBpZiBzOmV4dCA9fj8gJ1wuemgnCiAgIGlmICZlbmMgPX4gJ2JpZzVcfGNwOTUwJwogICAgIGxldCBzOmV4dCA9ICIuemguYmlnNSIKLSAgZWxzZQorICBlbHNlaWYgJmVuYyAhPSAndXRmLTgnCiAgICAgbGV0IHM6ZXh0ID0gIi56aC5ldWMiCiAgIGVuZGlmCiBlbmRpZgpAQCAtODEsMTYgKzg2LDEyIEBACiBpZiBzOmV4dCA9fj8gJ1wucGwnCiAgIGlmICZlbmMgPX4gMTI1MAogICAgIGxldCBzOmV4dCA9ICIucGwuY3AxMjUwIgotICBlbHNlaWYgJmVuYyA9fiAidXRmLTgkIgotICAgIGxldCBzOmV4dCA9ICIucGwudXRmLTgiCiAgIGVuZGlmCiBlbmRpZgogCiAiIFRoZSBUdXJraXNoIHR1dG9yIGlzIGF2YWlsYWJsZSBpbiB0d28gZW5jb2RpbmdzLCBndWVzcyB3aGljaCBvbmUgdG8gdXNlCiBpZiBzOmV4dCA9fj8gJ1wudHInCi0gIGlmICZlbmMgPT0gInV0Zi04IgotICAgIGxldCBzOmV4dCA9ICIudHIudXRmLTgiCi0gIGVsc2VpZiAmZW5jID09ICJpc28tODg1OS05IgorICBpZiAmZW5jID09ICJpc28tODg1OS05IgogICAgIGxldCBzOmV4dCA9ICIudHIuaXNvOSIKICAgZW5kaWYKIGVuZGlmCkBAIC05OSw1OSArMTAwLDY3IEBACiAiIFdlIHVzZWQgIi5nciIgKEdyZWVjZSkgaW5zdGVhZCBvZiAiLmVsIiAoR3JlZWspOyBhY2NlcHQgYm90aC4KIGlmIHM6ZXh0ID1+PyAnXC5nclx8XC5lbCcKICAgaWYgJmVuYyA9PSAiaXNvLTg4NTktNyIKLSAgICBsZXQgczpleHQgPSAiLmdyIgorICAgIGxldCBzOmV4dCA9ICIuZWwiCiAgIGVsc2VpZiAmZW5jID09ICJ1dGYtOCIKLSAgICBsZXQgczpleHQgPSAiLmdyLnV0Zi04IgorICAgIGxldCBzOmV4dCA9ICIuZWwudXRmLTgiCiAgIGVsc2VpZiAmZW5jID1+IDczNwotICAgIGxldCBzOmV4dCA9ICIuZ3IuY3A3MzciCisgICAgbGV0IHM6ZXh0ID0gIi5lbC5jcDczNyIKICAgZW5kaWYKIGVuZGlmCiAKICIgVGhlIFNsb3ZhayB0dXRvciBpcyBhdmFpbGFibGUgaW4gdGhyZWUgZW5jb2RpbmdzLCBndWVzcyB3aGljaCBvbmUgdG8gdXNlCiBpZiBzOmV4dCA9fj8gJ1wuc2snCi0gIGlmICZlbmMgPT0gJ3V0Zi04JwotICAgIGxldCBzOmV4dCA9ICIuc2sudXRmLTgiCi0gIGVsc2VpZiAmZW5jID1+IDEyNTAKKyAgaWYgJmVuYyA9fiAxMjUwCiAgICAgbGV0IHM6ZXh0ID0gIi5zay5jcDEyNTAiCiAgIGVuZGlmCiBlbmRpZgogCiAiIFRoZSBDemVjaCB0dXRvciBpcyBhdmFpbGFibGUgaW4gdGhyZWUgZW5jb2RpbmdzLCBndWVzcyB3aGljaCBvbmUgdG8gdXNlCiBpZiBzOmV4dCA9fj8gJ1wuY3MnCi0gIGlmICZlbmMgPT0gJ3V0Zi04JwotICAgIGxldCBzOmV4dCA9ICIuY3MudXRmLTgiCi0gIGVsc2VpZiAmZW5jID1+IDEyNTAKKyAgaWYgJmVuYyA9fiAxMjUwCiAgICAgbGV0IHM6ZXh0ID0gIi5jcy5jcDEyNTAiCiAgIGVuZGlmCiBlbmRpZgogCiAiIFRoZSBSdXNzaWFuIHR1dG9yIGlzIGF2YWlsYWJsZSBpbiB0aHJlZSBlbmNvZGluZ3MsIGd1ZXNzIHdoaWNoIG9uZSB0byB1c2UuCiBpZiBzOmV4dCA9fj8gJ1wucnUnCi0gIGlmICZlbmMgPT0gJ3V0Zi04JwotICAgIGxldCBzOmV4dCA9ICcucnUudXRmLTgnCi0gIGVsc2VpZiAmZW5jID1+ICcxMjUxJworICBpZiAmZW5jID1+ICcxMjUxJwogICAgIGxldCBzOmV4dCA9ICcucnUuY3AxMjUxJwogICBlbHNlaWYgJmVuYyA9fiAna29pOCcKICAgICBsZXQgczpleHQgPSAnLnJ1JwogICBlbmRpZgogZW5kaWYKIAotIiBUaGUgSHVuZ2FyaWFuIHR1dG9yIGlzIGF2YWlsYWJsZSBpbiB0d28gZW5jb2RpbmdzLCBndWVzcyB3aGljaCBvbmUgdG8gdXNlLgorIiBUaGUgSHVuZ2FyaWFuIHR1dG9yIGlzIGF2YWlsYWJsZSBpbiB0aHJlZSBlbmNvZGluZ3MsIGd1ZXNzIHdoaWNoIG9uZSB0byB1c2UuCiBpZiBzOmV4dCA9fj8gJ1wuaHUnCi0gIGlmICZlbmMgPT0gJ3V0Zi04JwotICAgIGxldCBzOmV4dCA9ICcuaHUudXRmLTgnCisgIGlmICZlbmMgPX4gMTI1MAorICAgIGxldCBzOmV4dCA9ICIuaHUuY3AxMjUwIgogICBlbHNlaWYgJmVuYyA9fiAnaXNvLTg4NTktMicKICAgICBsZXQgczpleHQgPSAnLmh1JwogICBlbmRpZgogZW5kaWYKIAotIiBTb21laG93ICIuZ2UiIChHZXJtYW55KSBpcyBzb21ldGltZXMgdXNlZCBmb3IgIi5kZSIgKERldXRzY2gpLgotaWYgczpleHQgPX4/ICdcLmdlJwotICBsZXQgczpleHQgPSAiLmRlIgorIiBUaGUgQ3JvYXRpYW4gdHV0b3IgaXMgYXZhaWxhYmxlIGluIHRocmVlIGVuY29kaW5ncywgZ3Vlc3Mgd2hpY2ggb25lIHRvIHVzZS4KK2lmIHM6ZXh0ID1+PyAnXC5ocicKKyAgaWYgJmVuYyA9fiAxMjUwCisgICAgbGV0IHM6ZXh0ID0gIi5oci5jcDEyNTAiCisgIGVsc2VpZiAmZW5jID1+ICdpc28tODg1OS0yJworICAgIGxldCBzOmV4dCA9ICcuaHInCisgIGVuZGlmCiBlbmRpZgogCi1pZiBzOmV4dCA9fj8gJ1wuZW4nCi0gIGxldCBzOmV4dCA9ICIiCisiIEVzcGVyYW50byBpcyBvbmx5IGF2YWlsYWJsZSBpbiB1dGYtOAoraWYgczpleHQgPX4/ICdcLmVvJworICBsZXQgczpleHQgPSAiLmVvLnV0Zi04IgorZW5kaWYKKyIgVmlldG5hbWVzZSBpcyBvbmx5IGF2YWlsYWJsZSBpbiB1dGYtOAoraWYgczpleHQgPX4/ICdcLnZpJworICBsZXQgczpleHQgPSAiLnZpLnV0Zi04IgorZW5kaWYKKworIiBJZiAnZW5jb2RpbmcnIGlzIHV0Zi04IHM6ZXh0IG11c3QgZW5kIGluIHV0Zi04LgoraWYgJmVuYyA9PSAndXRmLTgnICYmIHM6ZXh0ICF+ICdcLnV0Zi04JworICBzOmV4dCAuPSAnLnV0Zi04JwogZW5kaWYKIAogIiAyLiBCdWlsZCB0aGUgbmFtZSBvZiB0aGUgZmlsZToK