{"js":"PGRpdiBpZD0id3lyLWJvb2siPgogIDxkaXYgY2xhc3M9Ind5ci1wcm9ncmVzcy13cmFwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICA8ZGl2IGNsYXNzPSJ3eXItcHJvZ3Jlc3MtYmFyIiBpZD0id3lyUHJvZ3Jlc3NCYXIiPjwvZGl2PgogIDwvZGl2PgoKICA8bWFpbiBjbGFzcz0id3lyLXNoZWxsIj4KICAgIDxzZWN0aW9uIGNsYXNzPSJ3eXItY292ZXItY2FyZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBvdmVyZmxvdzpoaWRkZW47Ij4KCiAgPGltZwogICAgc3JjPSJodHRwczovL2kuaWJiLmNvL1RCeWZ3S1Y0L1doeS1Zb3UtUmVhY3QtZ3VpZGUtYm9vay1jb3Zlci01ODB4ODQwLTR4LTE0NTB4MjEwMC5wbmciCiAgICBhbHQ9IldoeSBZb3UgUmVhY3QsIEV2ZW4gV2hlbiBZb3UgS25vdyBCZXR0ZXIgYnkgSmF5IFBoaWxpcCIKICAgIHN0eWxlPSIKICAgICAgZGlzcGxheTpibG9jayAhaW1wb3J0YW50OwogICAgICB3aWR0aDphdXRvICFpbXBvcnRhbnQ7CiAgICAgIGhlaWdodDo0MjBweCAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OwogICAgICBvYmplY3QtZml0OmNvbnRhaW4gIWltcG9ydGFudDsKICAgICAgbWFyZ2luOjAgYXV0byAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOjE0cHg7CiAgICAgIGltYWdlLXJlbmRlcmluZzphdXRvOwogICAgIgogIC8+Cgo8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gY2xhc3M9Ind5ci1ib29rLWNhcmQiPgogICAgICA8aGVhZGVyIGNsYXNzPSJ3eXItaGVhZGVyIj4KICAgICAgICA8cCBjbGFzcz0id3lyLWV5ZWJyb3ciPkd1aWRlPC9wPgogICAgICAgIDxoMT5XaHkgWW91IFJlYWN0LCBFdmVuIFdoZW4gWW91IEtub3cgQmV0dGVyPC9oMT4KICAgICAgICA8cCBjbGFzcz0id3lyLXN1YnRpdGxlIj5UaGUgTWVjaGFuaWNzIG9mIEVtb3Rpb25hbCBPdmVycmlkZTwvcD4KICAgICAgICA8cCBjbGFzcz0id3lyLWF1dGhvciI+SmF5IFBoaWxpcDwvcD4KICAgICAgPC9oZWFkZXI+CgogICAgICA8c2VjdGlvbiBjbGFzcz0id3lyLWNvcHlyaWdodCI+CiAgICAgICAgPGgyPkNvcHlyaWdodDwvaDI+CiAgICAgICAgPHA+Q29weXJpZ2h0IMKpIDIwMjYgYnkgSmF5IFBoaWxpcDwvcD4KICAgICAgICA8cD5BbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICA8cD4KICAgICAgICAgIE5vIHBvcnRpb24gb2YgdGhpcyBib29rIG1heSBiZSByZXByb2R1Y2VkIGluIGFueSBmb3JtIHdpdGhvdXQgd3JpdHRlbgogICAgICAgICAgcGVybWlzc2lvbiBmcm9tIHRoZSBwdWJsaXNoZXIgb3IgYXV0aG9yLCBleGNlcHQgYXMgcGVybWl0dGVkIGJ5IFUuUy4KICAgICAgICAgIGNvcHlyaWdodCBsYXcuCiAgICAgICAgPC9wPgogICAgICA8L3NlY3Rpb24+CgogICAgICA8YXJ0aWNsZSBjbGFzcz0id3lyLWNvbnRlbnQiIGlkPSJ3eXJDb250ZW50Ij4KICAgICAgICA8cD4KICAgICAgICAgIElmIHVuZGVyc3RhbmRpbmcgeW91ciByZWFjdGlvbiBwYXR0ZXJuIGhhc27igJl0IHN0b3BwZWQgaXQsIHlvdeKAmXJlIG5vdAogICAgICAgICAgbWlzc2luZyB3aWxscG93ZXLigJR5b3XigJlyZSBkZWFsaW5nIHdpdGggYSBzdG9yZWQgcmVjb3JkaW5nIHRoYXQgY2FuIHN0aWxsCiAgICAgICAgICBhY3RpdmF0ZS4gRm9yIG1hbnksIHJlYWN0aW5n4oCUYmVmb3JlIHRoaW5raW5n4oCUaXMgbm90IGEgcXVlc3Rpb24gb2YKICAgICAgICAgIGludGVsbGlnZW5jZSBvciBkZXRlcm1pbmF0aW9uLiBJdOKAmXMgYSBtZWNoYW5pY2FsIG92ZXJyaWRlIHByb2Nlc3M6IHdoZW4KICAgICAgICAgIGEgdHJpZ2dlciBoaXRzLCB0aGUgcmVhY3Rpb24gY2FuIGxhdW5jaCBiZWZvcmUgeW91ciBjb25zY2lvdXMgbWluZCBoYXMKICAgICAgICAgIHRpbWUgdG8gd2VpZ2ggb3B0aW9ucy4gSWYgeW914oCZdmUgZXZlciBhc2tlZCwg4oCcV2h5IGRvIEkgcmVhY3QgZXZlbiB0aG91Z2gKICAgICAgICAgIEkga25vdyBiZXR0ZXI/4oCd4oCUdGhpcyBndWlkZSBvZmZlcnMgYSBzaW1wbGUsIG5vbi1ibGFtaW5nIGV4cGxhbmF0aW9u4oCUYW5kCiAgICAgICAgICBhIGNsZWFyIHRhcmdldCBmb3IgcmVhbCBjaGFuZ2UuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDI+UmVjb2duaXppbmcgdGhlIFBhdHRlcm46IFdoeSBZb3UgUmVhY3QgQmVmb3JlIFlvdSBDYW4gVGhpbms8L2gyPgoKICAgICAgICA8YmxvY2txdW90ZT7igJxJIGtub3cgYmV0dGVyLCBidXQgaXQgc3RpbGwgaGFwcGVucy7igJ08L2Jsb2NrcXVvdGU+CgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5Zb3UgcmVhY3QgYmVmb3JlIHlvdSBjYW4gdGhpbms6IGFuZ2VyLCBmZWFyLCBmcmVlemluZywgc2h1dGRvd24sIHBlb3BsZS1wbGVhc2luZywgYXZvaWRhbmNlLjwvbGk+CiAgICAgICAgICA8bGk+WW91IHJlZ2FpbiBjbGFyaXR5IGxhdGVy4oCUYW5kIHdvbmRlciB3aHkgaXQgaGFwcGVuZWQgYWdhaW4uPC9saT4KICAgICAgICA8L3VsPgoKICAgICAgICA8cD4KICAgICAgICAgIE1vc3QgcGVvcGxlIGhhdmUgbW9tZW50cyB3aGVyZSB0aGUgcmVhY3Rpb24gYXJyaXZlcyBmaXJzdCBhbmQgdGhlIHJlYXNvbmluZwogICAgICAgICAgYXJyaXZlcyBsYXRlci4gTWF5YmUgeW914oCZdmUgbGFzaGVkIG91dCwgc2h1dCBkb3duLCBwZW9wbGUtcGxlYXNlZCwgb3IKICAgICAgICAgIGF2b2lkZWQgc29tZXRoaW5nIGltcG9ydGFudOKAlGRlc3BpdGUga25vd2luZyBhZnRlcndhcmQgZXhhY3RseSBob3cgeW91IHdpc2gKICAgICAgICAgIHlvdeKAmWQgaGFuZGxlZCBpdC4gVGhlIHBhdHRlcm4gaXMgZmFtaWxpYXI6IGEgc2l0dWF0aW9uIHRyaWdnZXJzIGEgZmVlbGluZywKICAgICAgICAgIHlvdXIgYm9keSBvciBlbW90aW9ucyB0YWtlIG92ZXIsIGFuZCBvbmx5IGxhdGVyIGRvIHlvdSBzdGVwIGJhY2sgYW5kCiAgICAgICAgICB3b25kZXIsIOKAnFdoeSBkaWQgSSBkbyB0aGF0IGFnYWluP+KAnSBUaGlzIGlzbuKAmXQgYWJvdXQgYmVpbmcgYnJva2Vu4oCUb3IgbGFja2luZwogICAgICAgICAgaW5zaWdodC4gSW5zdGVhZCwgaXTigJlzIGEgbWVjaGFuaWNhbCBwcm9jZXNzIHNvIGF1dG9tYXRpYyBhbmQgZWZmaWNpZW50IHRoYXQKICAgICAgICAgIHRoZSBjb25zY2lvdXMgbWluZCBnZXRzIGJ5cGFzc2VkLCBvZnRlbiBiZWZvcmUgeW91IGNhbiByZWFzb24gb3IgZGVjaWRlLgogICAgICAgIDwvcD4KCiAgICAgICAgPHA+CiAgICAgICAgICBDb25zaWRlciBldmVyeWRheSBzY2VuYXJpb3MuIEEgZnJ1c3RyYXRlZCB0ZXh0IHNlbmRzIHlvdXIgaGVhcnQgcmFjaW5nCiAgICAgICAgICBiZWZvcmUgeW91IGV2ZW4gZmluaXNoIHJlYWRpbmcuIEEgZnJpZW5k4oCZcyBzaGFycCBjb21tZW50IGxlYXZlcyB5b3UKICAgICAgICAgIHNwZWVjaGxlc3PigJR0aGVuIHJlcGxheWluZyBpdCBob3VycyBsYXRlci4gWW91IHdhbnQgdG8gcmVzcG9uZCByYXRoZXIgdGhhbgogICAgICAgICAgcmVhY3QsIGJ1dCB1bmRlciBwcmVzc3VyZeKAlG9yIHN1cnByaXNl4oCUdGhhdCBpbnRlbnRpb24gY2FuIHZhbmlzaC4gVGhlc2UgYXJlCiAgICAgICAgICBub3QgZmFpbHVyZXPigJR0aGlzIGlzIGEgc3lzdGVtIHdvcmtpbmcgYnkgZGVzaWduLiBJdOKAmXMgbm90IGFib3V0IGNoYXJhY3RlcgogICAgICAgICAgZmxhd3Mgb3IgbGFjayBvZiB3aWxscG93ZXIuIEV2ZW4gaGlnaGx5IHNlbGYtYXdhcmUgcGVvcGxlIHN0aWxsIGV4cGVyaWVuY2UKICAgICAgICAgIG92ZXJyaWRlIG1vbWVudHMuIFRoaXMgZ3VpZGUgd2lsbCBleHBsYWluIHdoeeKAlGFuZCB3aGF0IGFjdHVhbGx5IGNoYW5nZXMgaXQuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDI+UmVtb3ZpbmcgU2hhbWU6IFdoeSBZb3UgUmVhY3QgSXMgTm90IGEgRmFpbHVyZSBvZiBXaWxscG93ZXI8L2gyPgoKICAgICAgICA8YmxvY2txdW90ZT7igJxJdCBoYXBwZW5zIGJlZm9yZSBJIGNhbiB0aGluay7igJ08L2Jsb2NrcXVvdGU+CgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5TaGFtZSBpcyBjb21tb27igJRhbmQgdW5uZWNlc3NhcnkuPC9saT4KICAgICAgICAgIDxsaT5SZWFjdGluZyBpcyBtZWNoYW5pY2FsLCBub3QgYSBjaGFyYWN0ZXIgZmxhdy48L2xpPgogICAgICAgIDwvdWw+CgogICAgICAgIDxwPgogICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHRvIHVuZGVyc3RhbmTigJRhbmQgcGVyaGFwcyB0aGUgbW9zdCBmcmVlaW5n4oCUaXMgdGhhdCByZWFjdGluZwogICAgICAgICAgaXMgbm90IGEgZmFpbHVyZSBvZiBjaGFyYWN0ZXIsIHdpbGxwb3dlciwgb3IgaW50ZWxsaWdlbmNlLiBUaGUgb3ZlcnJpZGUKICAgICAgICAgIG1lY2hhbmlzbSB3b3JrcyBmYXN0ZXIgdGhhbiB5b3VyIGNvbnNjaW91cyBtaW5kIGNhbiBwcm9jZXNzLiBUaGUgcmVhY3Rpb24KICAgICAgICAgIGhhcHBlbnMgYmVmb3JlIHlvdSBjYW4gc2xvdyBkb3duIGFuZCBjaG9vc2UuIE1hbnkgcGVvcGxl4oCUZXZlbiBhZnRlciB5ZWFycwogICAgICAgICAgb2YgcmVmbGVjdGlvbuKAlHN0aWxsIGZlZWwgY29uZnVzZWQgYnkgd2h5IHRoZXkgcmVhY3QgdGhlIHdheSB0aGV5IGRvLgogICAgICAgIDwvcD4KCiAgICAgICAgPHA+CiAgICAgICAgICBTaGFtZSBxdWlja2x5IGZvbGxvd3M6IOKAnEkgc2hvdWxkIGJlIG92ZXIgdGhpcy4gSSBzaG91bGQga25vdyBiZXR0ZXIu4oCdCiAgICAgICAgICBCdXQgc2hhbWUgZG9lc27igJl0IHNvbHZlIGl04oCUYmVjYXVzZSB0aGlzIHN5c3RlbSBpc27igJl0IHRyeWluZyB0byBtYWtlIHlvdQogICAgICAgICAg4oCccmlnaHQu4oCdIEl04oCZcyB0cnlpbmcgdG8ga2VlcCB5b3Ugc2FmZSwgZmFzdC4gVGhpcyBhdXRvbWF0aWMgb3ZlcnJpZGUgY2FuCiAgICAgICAgICBoYXBwZW4gdG8gYW55b25lLiBXaGVuIGEgY2hhcmdlZCByZWNvcmRpbmcgaXMgdHJpZ2dlcmVkLCB0aGUgcmVhY3Rpb24gY2FuCiAgICAgICAgICBydW7igJRldmVuIGlmIHlvdeKAmXJlIG5vcm1hbGx5IGNhbG0gYW5kIHRob3VnaHRmdWwuIFJlY29nbml6aW5nIHRoaXMgcmVtb3ZlcwogICAgICAgICAgZ3VpbHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYSBtZWNoYW5pY2FsIGV4cGxhbmF0aW9uLgogICAgICAgIDwvcD4KCiAgICAgICAgPGgyPkZ1dHVyZSBGb2N1czogV2hhdCBDaGFuZ2VzIFdoZW4gdGhlIE92ZXJyaWRlIERvZXNu4oCZdCBGaXJlPC9oMj4KCiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPk1vcmUgY2hvaWNlIHVuZGVyIHByZXNzdXJlLjwvbGk+CiAgICAgICAgICA8bGk+TW9yZSBjYWxtIGFuZCBwcmVzZW5jZSB3aGVuIHRyaWdnZXJlZC48L2xpPgogICAgICAgICAgPGxpPk5vIHN1cnByaXNlIOKAnGp1bXDigJ0gcmVzcG9uc2VzIGluIHNpdHVhdGlvbnMgdGhhdCB1c2VkIHRvIHNldCB5b3Ugb2ZmLjwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPHA+CiAgICAgICAgICBJbWFnaW5lIHdoYXQgbGlmZSBsb29rcyBsaWtlIHdoZW4gdGhlIGF1dG9tYXRpYyBvdmVycmlkZSBkb2VzbuKAmXQgdHJpZ2dlci4KICAgICAgICAgIFRoZSB3b3JsZCBmZWVscyBsZXNzIHRocmVhdGVuaW5nOyB5b3UgZXhwZXJpZW5jZSBncmVhdGVyIGZyZWVkb23igJRub3QgYmVjYXVzZQogICAgICAgICAgbGlmZSBpcyBwZXJmZWN0LCBidXQgYmVjYXVzZSB0aGUgZ3JpcCBvZiBwYXN0IHJlY29yZGluZ3MgaXMgbGlmdGVkLiBZb3Ugc3RheQogICAgICAgICAgcHJlc2VudCwgZXZlbiB3aGVuIOKAnGJhcmtpbmcgZG9n4oCdIG1vbWVudHMgYXJpc2UuIEluc3RlYWQgb2YgZ2V0dGluZyB5YW5rZWQKICAgICAgICAgIGludG8gcmVhY3Rpb24sIHlvdSBtZWV0IHByZXNzdXJlIHdpdGggY2hvaWNlLgogICAgICAgIDwvcD4KCiAgICAgICAgPHA+CiAgICAgICAgICBDb25zaWRlciBhbiBpbmRpdmlkdWFsIHdobyBvbmNlIGZlbHQgcGFuaWMgaW4gY2VydGFpbiBzaXR1YXRpb25z4oCUYSBzbGFtbWVkCiAgICAgICAgICBkb29yLCBjcml0aWNpc20sIG9yIGEgZG9nIGJhcmtpbmcgZmllcmNlbHkuIEFmdGVyIG5ldXRyYWxpemluZyB0aGUgY2hhcmdlZAogICAgICAgICAgbWVtb3J5LCB0aGVzZSB0cmlnZ2VycyBzaW1wbHkgYmVjb21lIG1vbWVudHMgaW4gdGltZTogbm8gc3Bpa2UgaW4gaGVhcnQKICAgICAgICAgIHJhdGUsIG5vIGNvbXB1bHNpb24gdG8gcmVhY3QsIG1vcmUgcHJlc2VuY2UuIFlvdSBtYXkgc3RpbGwgbm90aWNlLCBidXQKICAgICAgICAgIHlvdSdyZSBhYmxlIHRvIHJlc3BvbmQgcmF0aGVyIHRoYW4gcmVhY3QuIFRoaXMgaXNu4oCZdCBwZXJmZWN0aW9uLiBJdOKAmXMKICAgICAgICAgIHByYWN0aWNhbCBjaGFuZ2UuIFRoZSBhYmlsaXR5IHRvIHN0ZXAgYmFjaywgdGFrZSBhIGRlZXAgYnJlYXRoLCBhbmQgbWFrZQogICAgICAgICAgc2Vuc2Ugb2YgeW91ciBvcHRpb25z4oCUdGhpcyBpcyB3aGF0IGNoYW5nZXMgd2hlbiBvdmVycmlkZSBpcyBubyBsb25nZXIgaW4gdGhlCiAgICAgICAgICBkcml2ZXLigJlzIHNlYXQuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDI+V2h5IERvIEkgUmVhY3QgSW5zdGVhZCBvZiBSZXNwb25kaW5nPzwvaDI+CgogICAgICAgIDxwPgogICAgICAgICAgUmVhY3RpbmcgaW5zdGVhZCBvZiByZXNwb25kaW5nIG9jY3VycyBiZWNhdXNlIHRoZSBicmFpbuKAmXMgc3Vydml2YWwgY2lyY3VpdHMKICAgICAgICAgIHByaW9yaXRpemUgc3BlZWQgYW5kIHNhZmV0eSBvdmVyIGRlbGliZXJhdGlvbi4gV2hlbiBhIGNoYXJnZWQgcmVjb3JkaW5nIGlzCiAgICAgICAgICBhY3RpdmF0ZWQgYnkgYSBjdXJyZW50IHRyaWdnZXIsIHRoZSBvdmVycmlkZSBtZWNoYW5pc20ga2lja3MgaW4sIGxlYXZpbmcKICAgICAgICAgIGNvbnNjaW91cyB0aG91Z2h0IGJlaGluZC4gVW50aWwgdGhlIHJlY29yZGluZyBpcyBuZXV0cmFsaXplZCwgdGhlIHBhdHRlcm4KICAgICAgICAgIGNhbiByZXBlYXTigJRldmVuIGlmIHlvdeKAmXZlIGxlYXJuZWQgdG8gdW5kZXJzdGFuZCBvciBhbmFseXplIGl0IGxvZ2ljYWxseS4KICAgICAgICA8L3A+CgogICAgICAgIDxoMj5HdWlkZSBDcmVkaWJpbGl0eTogV2h5IFlvdSBSZWFjdCBFeHBsYWluZWQgaW4gRXZlcnlkYXkgVGVybXM8L2gyPgoKICAgICAgICA8YmxvY2txdW90ZT7igJxUaGUgZXhwbGFuYXRpb24gaXMgbWVjaGFuaWNhbCwgbm90IG1vdGl2YXRpb25hbC7igJ08L2Jsb2NrcXVvdGU+CgogICAgICAgIDxwPgogICAgICAgICAgVGhpcyBndWlkZSBpcyBmb3IgYW55b25lIHdobyBoYXMgZG9uZSByZWFsIHdvcmvigJRyZWZsZWN0aW9uLCBjb21tdW5pY2F0aW9uCiAgICAgICAgICB0b29scywgc3RyZXNzIHJlZHVjdGlvbuKAlGFuZCBzdGlsbCBmaW5kcyB0aGVtc2VsdmVzIHJlYWN0aW5nIG9uIGF1dG9waWxvdCBpbgogICAgICAgICAgdGhlIG1vbWVudHMgdGhhdCBtYXR0ZXIuIFRoZSByZWFsIGNhdXNlIGlzIG1lY2hhbmljYWw6IGEgcmVjb3JkaW5nIGNhcHR1cmVkCiAgICAgICAgICBpbiBhbiBpbnRlbnNlIG1vbWVudCBiZWNvbWVzIGxpbmtlZCB0byBhIHNwZWNpZmljIHNldCBvZiB0cmlnZ2Vycy4gV2hlbiB0aGUKICAgICAgICAgIHRyaWdnZXIgYXBwZWFycywgeW91ciBzeXN0ZW0gYWN0aXZhdGVzIGFuIG92ZXJyaWRl4oCUZW1vdGlvbiwgYm9keSwgb3IKICAgICAgICAgIGJlaGF2aW9y4oCUYWxtb3N0IGJlZm9yZSB5b3VyIGNvbnNjaW91cyBtaW5kIGNhbiBpbnRlcnZlbmUuCiAgICAgICAgPC9wPgoKICAgICAgICA8cD48c3Ryb25nPldhdGNoIHRoZSBwcm9jZXNzIHVuZm9sZCwgc3RlcCBieSBzdGVwOjwvc3Ryb25nPjwvcD4KCiAgICAgICAgPG9sPgogICAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkaW5nOjwvc3Ryb25nPiBBbiBpbmNpZGVudCBvY2N1cnMgKGUuZy4sIGEgc3VkZGVuIGRvZyBiaXRlIGFzIGEgY2hpbGQ7IHRoZSBwYWluLCBmZWFyLCBhbmQgc2hvY2sgbGVhdmUgYSB2aXZpZCwgY2hhcmdlZCBtZW1vcnkpLjwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5UcmlnZ2VyOjwvc3Ryb25nPiBMYXRlciBpbiBsaWZlLCBhbnkgY3VlIHNpbWlsYXIgdG8gdGhlIG9yaWdpbmFsIChhIGJhcmtpbmcgZG9nLCBzdWRkZW4gbm9pc2UpIGJlY29tZXMgYSB0cmlnZ2VyLjwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5BY3RpdmF0aW9uOjwvc3Ryb25nPiBUaGUgdHJpZ2dlciBhY3RpdmF0ZXMgdGhlIHN0b3JlZCByZWNvcmRpbmcgYXQgbGlnaHRuaW5nIHNwZWVkLjwvbGk+CiAgICAgICAgICA8bGk+PHN0cm9uZz5PdmVycmlkZTo8L3N0cm9uZz4gVGhlIHN5c3RlbSBydW5zIHRoZSByZWFjdGlvbiBiZWZvcmUgeW91ciB0aGlua2luZyBtaW5kIGhhcyB0aW1lIHRvIGNvbWUgb25saW5lLjwvbGk+CiAgICAgICAgPC9vbD4KCiAgICAgICAgPHA+CiAgICAgICAgICBSZWR1Y3Rpb24gb2Ygc3RyZXNzIGFuZCBjb3Bpbmcgc2tpbGxzIGNhbiBoZWxwIHlvdSBtYW5hZ2UgYWZ0ZXIgdGhlIHJlYWN0aW9uLAogICAgICAgICAgYnV0IHRoZSBtZWNoYW5pY2FsIHByb2Nlc3MgaXRzZWxmIHJ1bnMgaW52aXNpYmx5IGFuZCBpbW1lZGlhdGVseS4KICAgICAgICA8L3A+CgogICAgICAgIDxkaXYgY2xhc3M9Ind5ci1sb29wIj4KICAgICAgICAgIDxwPjxzdHJvbmc+UGljdHVyZSBpdCBsaWtlIGEgbG9vcDo8L3N0cm9uZz48L3A+CiAgICAgICAgICA8cD5yZWNvcmRpbmcg4oaSIHRyaWdnZXIg4oaSIGFjdGl2YXRpb24g4oaSIG92ZXJyaWRlPC9wPgo8aW1nCiAgc3JjPSJodHRwczovL2kuaWJiLmNvL3pUaHFiUDBLL1RyaWdnZXItYWN0aXZhdGlvbi1maWxtLXN0cmlwMjAyNi0wMy0xNy0wMC01Ny0zNy5wbmciCiAgYWx0PSJUcmlnZ2VyIGFjdGl2YXRpb24gc2VxdWVuY2UgaWxsdXN0cmF0aW9uIgogIHN0eWxlPSIKICAgIGRpc3BsYXk6YmxvY2s7CiAgICB3aWR0aDoxMDAlOwogICAgbWF4LXdpZHRoOjcwMHB4OwogICAgaGVpZ2h0OmF1dG87CiAgICBtYXJnaW46MjRweCBhdXRvOwogICAgYm9yZGVyLXJhZGl1czoxMnB4OwogICAgYm94LXNoYWRvdzowIDEycHggMzJweCByZ2JhKDAsMCwwLDAuMTgpOwogICIKLz4KICAgICAgICAgIDxwPlJlY29yZGluZyAmZ3Q7IHRyaWdnZXIgJmd0OyBhY3RpdmF0aW9uICZndDsgb3ZlcnJpZGUgJmd0OyBjb25zY2lvdXNuZXNzIGFnYWluPC9wPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIFRoZSBnb2FsIGlzIHRvIGJyZWFrIHRoZSBsb29wIGJ5IG5ldXRyYWxpemluZyB0aGUgcmVjb3JkaW5nLCByZW1vdmluZyB0aGUKICAgICAgICAgICAgcGFpbiBhbmQgdGhlIGZlYXIgZnJvbSB0aGUgbWVtb3J5LgogICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8aDI+TGV2ZWwgMTogV2h5IEluc2lnaHQsIE1pbmRzZXQsIGFuZCBDb3BpbmcgQ2FuIFN0aWxsIExlYXZlIE92ZXJyaWRlIEludGFjdDwvaDI+CgogICAgICAgIDxoMz5JbnNpZ2h0IElzbuKAmXQgRW5vdWdoOiBUaGUgQ29yZSBvZiBXaHkgWW91IFJlYWN0PC9oMz4KCiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPktub3dpbmcgd2hhdCBoYXBwZW5lZCBkb2VzbuKAmXQgZXJhc2UgdGhlIGF1dG9tYXRpYyByZWFjdGlvbi48L2xpPgogICAgICAgICAgPGxpPldpbGxwb3dlciBhbmQgaW50ZWxsaWdlbmNlIGRvIG5vdCBwcmV2ZW50IHJlYWN0aW9ucyBjYXVzZWQgYnkgb3ZlcnJpZGUuPC9saT4KICAgICAgICA8L3VsPgoKICAgICAgICA8cD4KICAgICAgICAgIE1hbnkgcGVvcGxlIGludmVzdCBpbiBpbnNpZ2h0IGFuZCB0b29scy4gVGhleSBsZWFybiB0aGVpciBwYXR0ZXJucywgcHJhY3RpY2UKICAgICAgICAgIGNhbG1pbmcgc2tpbGxzLCBhbmQgZ2V0IGJldHRlciBhdCByZXBhaXJpbmcgYWZ0ZXJ3YXJk4oCUcmlnaHQgdXAgdW50aWwgdGhlCiAgICAgICAgICBtb21lbnQgYSB0cmlnZ2VyIGFwcGVhcnMuIEhlcmXigJlzIHRoZSBjYXRjaDoga25vd2luZyB3aHkgeW91IHJlYWN0IGRvZXNu4oCZdAogICAgICAgICAgc3RvcCB0aGUgb3ZlcnJpZGUgZnJvbSBydW5uaW5nLgogICAgICAgIDwvcD4KCiAgICAgICAgPHA+CiAgICAgICAgICBDb25zaWRlciB0aGUgc3RvcnkgZnJvbSBlYXJsaWVyOiBhbiBhZHVsdCB3aG8gd2FzIGJpdHRlbiBieSBhIGRvZyBhcyBhIGNoaWxkLgogICAgICAgICAgQXMgdGhleSBncm93IHVwLCB0aGV5IGxvZ2ljYWxseSBsZWFybiB0aGF0IG1vc3QgZG9ncyBhcmVu4oCZdCBkYW5nZXJvdXMsIGFuZAogICAgICAgICAgdGhleSBtZWV0IHNvbWVvbmUgd2l0aCBhIGZyaWVuZGx5IGRvZy4gVGhlaXIgY29uc2Npb3VzIG1pbmQgYmVsaWV2ZXMgdGhleSBjYW4KICAgICAgICAgIGVuZ2FnZSBhbmQgcmVzcG9uZOKAlGJ1dCB0aGUgb3ZlcnJpZGUgc3RpbGwgYWN0aXZhdGVzIHdoZW4gdGhlIGRvZyBiYXJrcyBvcgogICAgICAgICAgbWFrZXMgc3VkZGVuIG1vdmVtZW50cy4gRXZlbiB3aXRoIGRlZXAgYnJlYXRoIHRlY2huaXF1ZXMsIGNvbnN0cnVjdGl2ZQogICAgICAgICAgZmVlZGJhY2ssIGFuZCBwb3NpdGl2ZSByZWluZm9yY2VtZW50LCB0aGUgcmVhY3Rpb24gaGFwcGVucyBiZWZvcmUgY29uc2Npb3VzCiAgICAgICAgICBpbnRlcnZlbnRpb24uCiAgICAgICAgPC9wPgoKICAgICAgICA8cD4KICAgICAgICAgIFRoaXMgbWVjaGFuaWNhbCBvdmVycmlkZSBpcyBzaW1wbHkgZmFzdGVyIGFuZCBvcGVyYXRlcyBiZWxvdyB0aGUgbGV2ZWwgb2YKICAgICAgICAgIGluc2lnaHQgb3Igd2lsbHBvd2VyLiBFdmVuIHdoZW4geW91IGxvZ2ljYWxseSBsZWFybiB5b3XigJlyZSBzYWZlLCB0aGUgb3ZlcnJpZGUKICAgICAgICAgIGNhbiBzdGlsbCBmaXJlIHdoZW4geW914oCZcmUgc3VycHJpc2VkLiBUaGF04oCZcyBiZWNhdXNlIG92ZXJyaWRlIGlzIGZhc3RlciB0aGFuCiAgICAgICAgICByZWFzb25pbmcuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDM+UHJvb2YgVmlnbmV0dGU6IFRoZSBEb2cgSW5jaWRlbnQg4oCTIFdoeSBZb3UgUmVhY3QgRGVzcGl0ZSBLbm93aW5nIEJldHRlcjwvaDM+CgogICAgICAgIDxwPgogICAgICAgICAgQSBjaGlsZCBhcHByb2FjaGVzIGEgZG9nLiBUaGUgZG9nIHNlZW1zIHRocmVhdGVuaW5nIGFuZCBiYXJrcy4gVGhlIGNoaWxkCiAgICAgICAgICBiZWNvbWVzIGFmcmFpZOKAlGFuZCB0aGUgZG9nIGJpdGVzIHRoZSBjaGlsZOKAmXMgYXJtLiBUaGUgY2hpbGQgaXMgaW4gcGFpbiBhbmQKICAgICAgICAgIHBhcnRpYWxseSB1bmNvbnNjaW91cy4KICAgICAgICA8L3A+CgogICAgICAgIDxwPgogICAgICAgICAgWWVhcnMgbGF0ZXIsIHRoYXQgY2hpbGQgaXMgYW4gYWR1bHQuIEFuZCB0aGUgcmVhY3Rpb25zIHN0aWxsIHNob3cgdXAgd2hlbiBhCiAgICAgICAgICBkb2cgYmFya3M6IGNyb3NzaW5nIHRoZSBzdHJlZXQgdG8gY3JlYXRlIGRpc3RhbmNlLCBmZWVsaW5nIHBhaW4gaW4gdGhlIGFybQogICAgICAgICAgd2hlbiBhIGRvZyBpcyB0b28gY2xvc2UsIGFuZCAocmFyZWx5KSBldmVuIGZhaW50aW5nIG9uY2Ugd2hlbiBhIGRvZyBjYW1lCiAgICAgICAgICBpbmNoZXMgZnJvbSBoaXMgYm9keS4KICAgICAgICA8L3A+CgogICAgICAgIDxwPgogICAgICAgICAgTGF0ZXIsIGhlIGRhdGVzIGEgZ2lybCBoZSByZWFsbHkgbGlrZXMgd2hvIG93bnMgYSBkb2cuIFNoZSBlbmNvdXJhZ2VzIGdyYWR1YWwKICAgICAgICAgIGFwcHJvYWNoIGFuZCB3aXRoZHJhd2FsLCBzaG93cyBoaW0gdGhlIGRvZyBpcyBmcmllbmRseSwgYW5kIGdldHMgaGltIHRvIHRvdWNoCiAgICAgICAgICB0aGUgZG9nLiBIZSBsb2dpY2FsbHkgcmVhbGl6ZXMgdGhpcyBkb2cgaXNu4oCZdCBkYW5nZXJvdXMuCiAgICAgICAgPC9wPgoKICAgICAgICA8cD4KICAgICAgICAgIFlldCB0aGUgb3ZlcnJpZGUgc3RpbGwgYXBwZWFycyBpbiBzcGVjaWZpYyBtb21lbnRzOiBoZSBqdW1wcyB3aGVuIHRoZSBkb2cKICAgICAgICAgIGJhcmtzIGJlaGluZCBoaW0gdW5leHBlY3RlZGx5LiBIZSBmYWxscyBiYWNrIHdoZW4gdGhlIGRvZyBhZmZlY3Rpb25hdGVseSBwdXRzCiAgICAgICAgICBpdHMgcGF3cyBvbiBoaXMgY2hlc3QuIEFuZCBoZSBzdGF5cyBjYXV0aW91cyBmZWVkaW5nIHRoZSBkb2figJRrZWVwaW5nIGhpcyBoYW5kCiAgICAgICAgICBhd2F5IGZyb20gdGhlIGRvZ+KAmXMgZmFjZS4KICAgICAgICA8L3A+CgogICAgICAgIDxwPgogICAgICAgICAgVGhhdOKAmXMgdGhlIHBvaW50LiBSYXRpb25hbCBsZWFybmluZyBjYW4gaW5jcmVhc2UgY29tZm9ydCBhbmQgY29uZmlkZW5jZS4gQnV0CiAgICAgICAgICBpZiB0aGUgb2xkIHJlY29yZGluZyBpcyBzdGlsbCBjaGFyZ2VkLCBzdXJwcmlzZSBjYW4gc3RpbGwgYWN0aXZhdGUgaXTigJRhbmQgdGhlCiAgICAgICAgICBib2R5IGNhbiBzdGlsbCByZWFjdCBiZWZvcmUgdGhvdWdodC4gQSBtZWNoYW5pY2FsIGNoYW5nZSBhdCB0aGUgcm9vdOKAlGRpc2NoYXJnaW5nCiAgICAgICAgICBvciBuZXV0cmFsaXppbmcgdGhlIHJlY29yZGluZ+KAlGNoYW5nZXMgdGhlIHBhdHRlcm4gaW4gYSBkdXJhYmxlIHdheS4KICAgICAgICA8L3A+CgogICAgICAgIDxoMz5SZWR1Y2luZyBTdHJlc3MgVmVyc3VzIE5ldXRyYWxpemluZyB0aGUgUmVjb3JkaW5nPC9oMz4KCiAgICAgICAgPHA+CiAgICAgICAgICBCcmVhdGhpbmcsIG1pbmRmdWxuZXNzLCBhbmQgc3RyZXNzLXJlZHVjdGlvbiB0b29scyBjYW4gYmUgZXh0cmVtZWx5IHVzZWZ1bC4KICAgICAgICAgIFRoZXkgb2Z0ZW4gaGVscCB5b3UgcmVjb3ZlciBmYXN0ZXLigJRvciByZWR1Y2UgdGhlIGludGVuc2l0eSBvbmNlIGEgcmVhY3Rpb24KICAgICAgICAgIGhhcyBzdGFydGVkLiBUaGVzZSBtZXRob2RzIGFyZSB1c2VmdWwgdG9vbHMgZm9yIGxpdmluZyBhIGxpZmUgd2l0aCBsZXNzCiAgICAgICAgICBvdmVyd2hlbG0sIGJ1dCB0aGUgY29yZSDigJx3aHkgeW91IHJlYWN04oCdIGlzc3VlIGlzbuKAmXQgc29sdmVkLiBUaGUgcmVjb3JkaW5nCiAgICAgICAgICB0aGF0IHBvd2VycyB0aGUgb3ZlcnJpZGUgY2FuIHN0aWxsIGJlIHRoZXJlLCBvbmx5IGRvcm1hbnQgdW50aWwgdGhlIHJpZ2h0CiAgICAgICAgICB0cmlnZ2VyIGFwcGVhcnMuIFRoaXMgZXhwbGFpbnMgd2h5IHNvbWUgZGF5cyB5b3UgYnJlZXplIHRocm91Z2ggY2hhbGxlbmdlcywKICAgICAgICAgIGJ1dCBvbiBvdGhlcnMsIGEgbWlub3IgZXZlbnQgdGhyb3dzIHlvdSBvZmYgYmFsYW5jZS4KICAgICAgICA8L3A+CgogICAgICAgIDxwPgogICAgICAgICAgVG8gcHV0IGl0IHBsYWlubHk6IHJlZHVjdGlvbiBvZiBzdHJlc3MgaXMgYSBwb3dlcmZ1bCB0b29sLCBidXQgaXQncyBub3QgdGhlCiAgICAgICAgICBzYW1lIGFzIG5ldXRyYWxpemluZyB0aGUgY2hhcmdlZCByZWNvcmRpbmcgdGhhdCBydW5zIHRoZSBvdmVycmlkZS4gQW5kIHdoaWxlCiAgICAgICAgICBldmVyeW9uZSBiZW5lZml0cyBmcm9tIGxlYXJuaW5nIHRvIGNvcGUsIGxhc3RpbmcgY2hhbmdlIGNvbWVzIGZyb20gbmV1dHJhbGl6aW5nCiAgICAgICAgICB0aGUgcmVjb3JkaW5nIHRoYXQgcG93ZXJzIHRoZSBvdmVycmlkZeKAlG5vdCBqdXN0IG1hbmFnaW5nIHRoZSByZWFjdGlvbiBhZnRlcndhcmQuCiAgICAgICAgPC9wPgoKICAgICAgICA8cD4KICAgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgcmVhY3RpbmcgaXMgbWVjaGFuaWNhbDogdG8gZW5zdXJlIHF1aWNrIHN1cnZpdmFsIGJ5CiAgICAgICAgICBvdmVycmlkaW5nIHNsb3csIGRlbGliZXJhdGUgdGhpbmtpbmcgaW4gbW9tZW50cyBvZiBwZXJjZWl2ZWQgdGhyZWF0LiBUaGUgc3lzdGVtCiAgICAgICAgICBkb2VzbuKAmXQgY2hlY2sgZm9yIGFjY3VyYWN5OyBpdCBvbmx5IGNoZWNrcyBmb3IgbWF0Y2hpbmcgdHJpZ2dlcnMuIFRoaXMgY2FuCiAgICAgICAgICBjcmVhdGUgdW5uZWNlc3NhcnkgcmVhY3Rpb25zIGxvbmcgYWZ0ZXIgdGhlIGluaXRpYWwgZXZlbnQgaGFzIHBhc3NlZCwgYWxsIGR1ZQogICAgICAgICAgdG8gdGhlIHBlcnNpc3RlbnQgcmVjb3JkaW5nLgogICAgICAgIDwvcD4KCiAgICAgICAgPGgyPkxldmVsIDI6IFdoeSBOZXV0cmFsaXphdGlvbiBvZiB0aGUgUmVjb3JkaW5nIFByZXZlbnRzIFJlYWN0aXZhdGlvbjwvaDI+CgogICAgICAgIDxoMz5NZWNoYW5pY3Mgb2YgT3ZlcnJpZGU6IEhvdyBXaHkgWW91IFJlYWN0IEJlY29tZXMgUHJlZGljdGFibGXigJRhbmQgQ2hhbmdlYWJsZTwvaDM+CgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT5BIHJlY29yZGluZyBvbmx5IGFjdGl2YXRlcyB3aGVuIGl0IGlzIHN0aWxsIGNoYXJnZWQuPC9saT4KICAgICAgICAgIDxsaT5OZXV0cmFsaXppbmcgb3IgZGlzY2hhcmdpbmcgdGhlIHJlY29yZGluZyB0dXJucyBpdCBpbnRvIGEgbm9ybWFsIG1lbW9yeS48L2xpPgogICAgICAgICAgPGxpPkEgbm9ybWFsIG1lbW9yeSBubyBsb25nZXIgaGlqYWNrcyB5b3VyIHJlc3BvbnNlIHdoZW4gYSB0cmlnZ2VyIGhhcHBlbnMuPC9saT4KICAgICAgICA8L3VsPgoKICAgICAgICA8cD4KICAgICAgICAgIFRoZSBsZXZlciBmb3IgZHVyYWJsZSBjaGFuZ2UgaXMgc2ltcGxlOiB3aGVuIGEgY2hhcmdlZCByZWNvcmRpbmcgaXMgYWNjZXNzZWQKICAgICAgICAgIGFuZCBkaXNjaGFyZ2VkLCBpdCBiZWNvbWVzIGEgbm9ybWFsIG1lbW9yeS4gVGhlIG1lbW9yeSByZW1haW5z4oCUYnV0IHRoZSBjaGFyZ2UKICAgICAgICAgIGlzIGdvbmUuIEFuZCB3aGVuIHRoZSBjaGFyZ2UgaXMgZ29uZSwgdGhlIHNhbWUgdHJpZ2dlciBubyBsb25nZXIgcHJvZHVjZXMgdGhlCiAgICAgICAgICBzYW1lIGF1dG9tYXRpYyBvdmVycmlkZS4KICAgICAgICA8L3A+CgogICAgICAgIDxwPgogICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIG5vdCBhbiBpbnN0YW50IGZpeCwgbm9yIGlzIGl0IGFib3V0IGRlbnlpbmcgdGhlIHJlYWxpdHkgb2YKICAgICAgICAgIHN0cmVzcyBhbmQgdHJhdW1hLgogICAgICAgIDwvcD4KCjxpbWcKICBzcmM9Imh0dHBzOi8vaS5pYmIuY28vd1o5a0RQOXIvcmVjb3JkaW5nLXRyaWdnZXItYWN0aXZhdGlvbi1vdmVycmlkZS1jaGFydC10YWJsZS5wbmciCiAgYWx0PSJSZWNvcmRpbmcgdHJpZ2dlciBhY3RpdmF0aW9uIG92ZXJyaWRlIGNoYXJ0IgogIHN0eWxlPSIKICAgIGRpc3BsYXk6YmxvY2s7CiAgICB3aWR0aDoxMDAlOwogICAgbWF4LXdpZHRoOjY1MHB4OwogICAgaGVpZ2h0OmF1dG87CiAgICBtYXJnaW46MjhweCBhdXRvOwogICAgYm9yZGVyLXJhZGl1czoxMnB4OwogICAgYm94LXNoYWRvdzowIDEycHggMzJweCByZ2JhKDAsMCwwLDAuMTgpOwogICIKLz4KCiAgICAgICAgPGgzPkZyb20gQ29waW5nIHRvIENoYW5nZTogQnJlYWtpbmcgdGhlIExvb3A8L2gzPgoKICAgICAgICA8cD4KICAgICAgICAgIENvcGluZyBoZWxwcyB5b3UgZnVuY3Rpb24gd2hpbGUgdGhlIGxvb3AgaXMgc3RpbGwgYWN0aXZlLiBSZWFsIGNoYW5nZSBoYXBwZW5zCiAgICAgICAgICB3aGVuIHRoZSBsb29wIHN0b3BzIGZpcmluZ+KAlGJlY2F1c2UgdGhlIHJlY29yZGluZyB0aGF0IHBvd2VyZWQgaXQgaGFzIGJlZW4KICAgICAgICAgIGRpc2NoYXJnZWQuCiAgICAgICAgPC9wPgoKICAgICAgICA8cD4KICAgICAgICAgIFdoZW4gdGhhdCBoYXBwZW5zLCB5b3UgZG9u4oCZdCBiZWNvbWUgZW1vdGlvbmxlc3MuIFlvdSBzaW1wbHkgcmVnYWluIHRpbWluZy4KICAgICAgICAgIFlvdSBjYW4gZmVlbCB3aGF0IHlvdSBmZWVsIHdpdGhvdXQgYmVpbmcgb3ZlcnJpZGRlbiBieSBhbiBvbGQgcmVjb3JkaW5nLiBZb3UKICAgICAgICAgIGNhbiByZXNwb25kIGZyb20gdGhlIHByZXNlbnQgaW5zdGVhZCBvZiByZXBsYXlpbmcgYSBzdG9yZWQgcmVhY3Rpb24uCiAgICAgICAgPC9wPgoKICAgICAgICA8cD4KICAgICAgICAgIFdoZW4geW91IHJlYWN0LCBpdCBtZWFucyB0aGUgc3lzdGVtIGhhcyBleGVjdXRlZCBhbiBvbGQsIGF1dG9tYXRpYyBvdmVycmlkZQogICAgICAgICAgcmVzcG9uc2UgdG8gYSBmYW1pbGlhciBvciBzdXJwcmlzaW5nIHRyaWdnZXIuIFJhdGhlciB0aGFuIGNob29zaW5nIGFjdGlvbnMKICAgICAgICAgIGJhc2VkIG9uIHRoZSBwcmVzZW50LCB0aGUgc3ViY29uc2Npb3VzIG1pbmQgcnVucyB0aGUgcHJvZ3JhbSBzZXQgYnkgdW5yZXNvbHZlZAogICAgICAgICAgZXhwZXJpZW5jZXPigJRvZnRlbiBsaWdodG5pbmcgZmFzdCBhbmQgYmV5b25kIGNvbnNjaW91cyBjb250cm9sLiBUcmFuc2Zvcm1hdGlvbgogICAgICAgICAgY29tZXMgZnJvbSB0dXJuaW5nIHRoZXNlIHJlYWN0aW9ucyBpbnRvIHJlZ3VsYXIsIG5ldXRyYWwgbWVtb3JpZXMuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDM+U2lnbnMgdGhhdCBhIFJlY29yZGluZyBTdGlsbCBSdW5zPC9oMz4KCiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPlN1cnByaXNlLCBzdGFydGxlLCBvciBzaHV0ZG93biBpbiBzaXR1YXRpb25zIHRoYXQgc2hvdWxkbuKAmXQgZmVlbCBpbnRlbnNlLjwvbGk+CiAgICAgICAgICA8bGk+UGh5c2ljYWwgc2lnbmFscyBzdWNoIGFzIHRpZ2h0IGNoZXN0LCBoZWF0LCBhcm0gcGFpbiwgb3IgdGVuc2lvbi48L2xpPgogICAgICAgICAgPGxpPkFmdGVyd2FyZDog4oCcSSBrbm93IGJldHRlciwgYnV04oCm4oCdPC9saT4KICAgICAgICA8L3VsPgoKICAgICAgICA8aDM+UXVvdGU6IE9uIENoYW5naW5nIHRoZSBPdmVycmlkZTwvaDM+CgogICAgICAgIDxibG9ja3F1b3RlPuKAnE9uY2UgdGhlIGNoYXJnZSBpcyBnb25lLCB0aGUgc2FtZSB0cmlnZ2VyIG5vIGxvbmdlciBydW5zIHRoZSBzYW1lIHJlYWN0aW9uLuKAnTwvYmxvY2txdW90ZT4KCiAgICAgICAgPGgzPldoYXQgWW914oCZbGwgTGVhcm48L2gzPgoKICAgICAgICA8b2w+CiAgICAgICAgICA8bGk+V2h5IGluc2lnaHQgb2Z0ZW4gaGVscHPigJRidXQgZG9lc27igJl0IHN0b3Agc3VycHJpc2Ugb3ZlcnJpZGUuPC9saT4KICAgICAgICAgIDxsaT5UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvcGluZyBhZnRlciBhY3RpdmF0aW9uIGFuZCBuZXV0cmFsaXppbmcgdGhlIHJlY29yZGluZy48L2xpPgogICAgICAgICAgPGxpPkhvdyB0byByZWNvZ25pemUgd2hlbiBhIHJlY29yZGluZyBpcyBzdGlsbCBjaGFyZ2VkLjwvbGk+CiAgICAgICAgICA8bGk+VGhlIG1lY2hhbmlzbSB0aGF0IHR1cm5zIGEgY2hhcmdlZCByZWNvcmRpbmcgaW50byBhIG5vcm1hbCBtZW1vcnkuPC9saT4KICAgICAgICA8L29sPgoKICAgICAgICA8cD4KICAgICAgICAgIEJ5IG5vdywgeW914oCZdmUgc2VlbiB0aGF0IHVuZGVyc3RhbmRpbmcgYW5kIHdpbGxwb3dlciBhcmVu4oCZdCBxdWl0ZSBlbm91Z2ggdG8KICAgICAgICAgIGVsaW1pbmF0ZSBpbnZvbHVudGFyeSByZXNwb25zZXMuIFlvdeKAmXZlIGFsc28gcmVjb2duaXplZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCiAgICAgICAgICBtYW5hZ2luZyBzdHJlc3MgKHVzZWZ1bCkgYW5kIHRydWx5IGRpc2NoYXJnaW5nIHRoZSBzb3VyY2Ugb2YgdGhlIG92ZXJyaWRlCiAgICAgICAgICAoZXNzZW50aWFsKS4gQW5kIHlvdSByZWFsaXplIHlvdeKAmXJlIG5vdCBicm9rZW4uIFRyYW5zZm9ybWF0aW9uIGlzIG1lY2hhbmljYWwsCiAgICAgICAgICBub3QgbW90aXZhdGlvbmFsLgogICAgICAgIDwvcD4KCiAgICAgICAgPGgyPktleSBUYWtlYXdheXMgZm9yIEFueW9uZSBBc2tpbmcgV2h5IFlvdSBSZWFjdDwvaDI+CgogICAgICAgIDxvbD4KICAgICAgICAgIDxsaT5SZWFjdGlvbnMgYXJlIGF1dG9tYXRpYywgbm90IGNoYXJhY3RlciBmbGF3cy48L2xpPgogICAgICAgICAgPGxpPkNoYXJnZWQgcmVjb3JkaW5ncyBjYW4gb3ZlcnJpZGUgeW91ciBjb25zY2lvdXMgY2hvaWNlLjwvbGk+CiAgICAgICAgICA8bGk+TmV1dHJhbGl6YXRpb24sIG5vdCBqdXN0IGNvcGluZywgaXMga2V5IGZvciBsYXN0aW5nIGNoYW5nZS48L2xpPgogICAgICAgICAgPGxpPllvdeKAmXJlIG5vdCBhbG9uZeKAlG1lY2hhbmljYWwgZXhwbGFuYXRpb25zIHJlbW92ZSBibGFtZSBhbmQgc2hhbWUuPC9saT4KICAgICAgICA8L29sPgoKICAgICAgICA8aDI+RkFRcyBBYm91dCBXaHkgWW91IFJlYWN0PC9oMj4KCiAgICAgICAgPGgzPklzIGl0IHBvc3NpYmxlIGZvciByZWFjdGlvbnMgdG8gc3RvcCBmaXJpbmcgaW4gc2l0dWF0aW9ucyB0aGF0IHVzZWQgdG8gdHJpZ2dlciB0aGVtPzwvaDM+CiAgICAgICAgPHA+CiAgICAgICAgICBZZXPigJR3aGVuIHRoZSB1bmRlcmx5aW5nIHJlY29yZGluZyBpcyBuZXV0cmFsaXplZCwgdGhlIHNhbWUgdHJpZ2dlciBjYW4gc3RvcAogICAgICAgICAgcHJvZHVjaW5nIHRoZSBzYW1lIGF1dG9tYXRpYyBvdmVycmlkZSByZXNwb25zZS4KICAgICAgICA8L3A+CgogICAgICAgIDxoMz5XaHkgZG9lcyBpdCBoYXBwZW4gbW9yZSB1bmRlciBzdHJlc3Mgb3Igc3VycHJpc2U/PC9oMz4KICAgICAgICA8cD4KICAgICAgICAgIEJlY2F1c2Ugc3RyZXNzIGFuZCBzdXJwcmlzZSByZWR1Y2UgeW91ciB0aW1lIHRvIHRoaW5rLCBhbmQgYWN0aXZhdGlvbiBjYW4KICAgICAgICAgIG91dHJ1biBjb25zY2lvdXMgY2hvaWNlLgogICAgICAgIDwvcD4KCiAgICAgICAgPGgzPkFyZSBzb21lIHBlb3BsZSBqdXN0IG1vcmUgcmVhY3RpdmU/PC9oMz4KICAgICAgICA8cD4KICAgICAgICAgIFJlYWN0aXZpdHkgb2Z0ZW4gaXNu4oCZdCBhIGZpeGVkIHRyYWl0LiBJdCBjYW4gYmUgYSBmdW5jdGlvbiBvZiB3aGF0IHJlY29yZGluZ3MKICAgICAgICAgIGFyZSBzdGlsbCBjaGFyZ2VkIGFuZCBob3cgZWFzaWx5IHRoZXkgYWN0aXZhdGUuCiAgICAgICAgPC9wPgoKICAgICAgICA8aDM+RG8gSSBoYXZlIHRvIHJlbWVtYmVyIHRoZSBvcmlnaW5hbCBpbmNpZGVudCBjbGVhcmx5PzwvaDM+CiAgICAgICAgPHA+CiAgICAgICAgICBOb3QgYWx3YXlzLiBUaGUga2V5IGlzIGFjY2Vzc2luZyBhbmQgZGlzY2hhcmdpbmcgdGhlIGNoYXJnZSB0aGF0IGRyaXZlcwogICAgICAgICAgYWN0aXZhdGlvbiwgc28gdGhlIG1lbW9yeSBiZWNvbWVzIG5ldXRyYWwuCiAgICAgICAgPC9wPgogICAgICA8L2FydGljbGU+CgogICAgICA8c2VjdGlvbiBjbGFzcz0id3lyLWN0YSI+CiAgICAgICAgPGgyPklmIFRoaXMgUmVzb25hdGVzIHdpdGggWW91PC9oMj4KICAgICAgICA8cD4KICAgICAgICAgIElmIHRoaXMgZ3VpZGUgZGVzY3JpYmVkIHlvdXIgZXhwZXJpZW5jZeKAlGFuZCB5b3Ugd2FudCB0aGUgZnVsbCwgc3RlcC1ieS1zdGVwCiAgICAgICAgICBtb2RlbCBmb3IgaG93IHJlY29yZGluZ3MgZm9ybSwgaG93IGFjdGl2YXRpb24gd29ya3MsIGFuZCB3aGF0IGl0IG1lYW5zIHRvCiAgICAgICAgICBuZXV0cmFsaXplIGEgcmVjb3JkaW5n4oCUcmVhZCBhIGZyZWUgY2hhcHRlciBmcm9tIHRoZSBib29rIHRoYXQgZXhwbGFpbnMgdGhlCiAgICAgICAgICBtZWNoYW5pc20gaW4gZGV0YWlsLgogICAgICAgIDwvcD4KCiAgICAgICAgPGEKICAgICAgICAgIGNsYXNzPSJ3eXItYnV0dG9uIgogICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cuZGlhbmV0aWNzLm9yZy9yZXF1ZXN0LWluZm8vZGlhbmV0aWNzLWJvb2tsZXQuaHRtbCIKICAgICAgICAgIHRhcmdldD0iX2JsYW5rIgogICAgICAgICAgcmVsPSJub29wZW5lciBub3JlZmVycmVyIgogICAgICAgID4KICAgICAgICAgIFJlYWQgYSBGcmVlIENoYXB0ZXIKICAgICAgICA8L2E+CiAgICAgIDwvc2VjdGlvbj4KICAgIDwvc2VjdGlvbj4KICA8L21haW4+CjwvZGl2PgoKPHN0eWxlPgogICN3eXItYm9vayB7CiAgICAtLXd5ci1iZzogI2Y2ZjVmNDsKICAgIC0td3lyLXBhcGVyOiAjZmZmZmZmOwogICAgLS13eXItaW5rOiAjMWYyZjVkOwogICAgLS13eXItYm9keTogIzM3NDE1MTsKICAgIC0td3lyLXNvZnQ6ICM2YjcyODA7CiAgICAtLXd5ci1saW5lOiByZ2JhKDMxLCA0NywgOTMsIDAuMTIpOwogICAgLS13eXItYWNjZW50OiAjZDU4NTJlOwogICAgLS13eXItc2hhZG93OiAwIDE4cHggNDVweCByZ2JhKDI0LCAzOSwgNzUsIDAuMTApOwogICAgLS13eXItcmFkaXVzOiAyMHB4OwogICAgYmFja2dyb3VuZDoKICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCB0b3AgbGVmdCwgcmdiYSgzMSw0Nyw5MywwLjA1KSwgdHJhbnNwYXJlbnQgMjglKSwKICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCB0b3AgcmlnaHQsIHJnYmEoMjEzLDEzMyw0NiwwLjA1KSwgdHJhbnNwYXJlbnQgMjQlKSwKICAgICAgdmFyKC0td3lyLWJnKTsKICAgIGNvbG9yOiB2YXIoLS13eXItYm9keSk7CiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgIlRpbWVzIE5ldyBSb21hbiIsIHNlcmlmOwogICAgbGluZS1oZWlnaHQ6IDEuNzU7CiAgICBwYWRkaW5nOiAwIDAgNTZweDsKICB9CgogICN3eXItYm9vayAqIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1wcm9ncmVzcy13cmFwIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiA5OTk5OwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDRweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMzEsIDQ3LCA5MywgMC4wOCk7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1wcm9ncmVzcy1iYXIgewogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDAlOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMWYyZjVkIDAlLCAjZDU4NTJlIDEwMCUpOwogICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcyBsaW5lYXI7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1zaGVsbCB7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogODYwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHBhZGRpbmc6IDI0cHggMTZweCAwOwogIH0KCiAgI3d5ci1ib29rIC53eXItY292ZXItY2FyZCwKICAjd3lyLWJvb2sgLnd5ci1ib29rLWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjgyKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjY1KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXd5ci1yYWRpdXMpOwogICAgYm94LXNoYWRvdzogdmFyKC0td3lyLXNoYWRvdyk7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1jb3Zlci1jYXJkIHsKICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICBwYWRkaW5nOiAxOHB4OwogIH0KCiAgI3d5ci1ib29rIC53eXItY292ZXItaW1hZ2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogNDIwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1ib29rLWNhcmQgewogICAgcGFkZGluZzogMzRweCAyOHB4IDQwcHg7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1oZWFkZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZy1ib3R0b206IDI0cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0td3lyLWxpbmUpOwogICAgbWFyZ2luLWJvdHRvbTogMjhweDsKICB9CgogICN3eXItYm9vayAud3lyLWV5ZWJyb3cgewogICAgbWFyZ2luOiAwIDAgOHB4OwogICAgY29sb3I6IHZhcigtLXd5ci1hY2NlbnQpOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgfQoKICAjd3lyLWJvb2sgaDEsCiAgI3d5ci1ib29rIGgyLAogICN3eXItYm9vayBoMyB7CiAgICBjb2xvcjogdmFyKC0td3lyLWluayk7CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgbWFyZ2luLXRvcDogMS4zZW07CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICAgIHNjcm9sbC1tYXJnaW4tdG9wOiAyNHB4OwogIH0KCiAgI3d5ci1ib29rIGgxIHsKICAgIGZvbnQtc2l6ZTogY2xhbXAoMzRweCwgNXZ3LCA1NHB4KTsKICAgIG1hcmdpbjogMDsKICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtOwogIH0KCiAgI3d5ci1ib29rIC53eXItc3VidGl0bGUgewogICAgbWFyZ2luOiAxNHB4IDAgMTBweDsKICAgIGNvbG9yOiB2YXIoLS13eXItc29mdCk7CiAgICBmb250LXNpemU6IGNsYW1wKDE4cHgsIDIuN3Z3LCAyNHB4KTsKICB9CgogICN3eXItYm9vayAud3lyLWF1dGhvciB7CiAgICBtYXJnaW46IDA7CiAgICBjb2xvcjogdmFyKC0td3lyLWluayk7CiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIH0KCiAgI3d5ci1ib29rIC53eXItY29weXJpZ2h0IHsKICAgIHBhZGRpbmc6IDE4cHggMjBweDsKICAgIG1hcmdpbjogMCAwIDI2cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMxLCA0NywgOTMsIDAuMDM1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXd5ci1saW5lKTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgfQoKICAjd3lyLWJvb2sgcCwKICAjd3lyLWJvb2sgbGkgewogICAgZm9udC1zaXplOiAxOHB4OwogIH0KCiAgI3d5ci1ib29rIHVsLAogICN3eXItYm9vayBvbCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuM2VtOwogICAgbWFyZ2luOiAwLjZlbSAwIDEuMWVtOwogIH0KCiAgI3d5ci1ib29rIGxpICsgbGkgewogICAgbWFyZ2luLXRvcDogMC4zNWVtOwogIH0KCiAgI3d5ci1ib29rIGJsb2NrcXVvdGUgewogICAgbWFyZ2luOiAxLjJlbSAwOwogICAgcGFkZGluZzogMTJweCAxOHB4OwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS13eXItYWNjZW50KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjEzLDEzMyw0NiwwLjA2KTsKICAgIGNvbG9yOiB2YXIoLS13eXItaW5rKTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1sb29wIHsKICAgIG1hcmdpbjogMjRweCAwOwogICAgcGFkZGluZzogMThweCAyMHB4OwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMzEsNDcsOTMsMC4wNCksIHJnYmEoMjEzLDEzMyw0NiwwLjA1KSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13eXItbGluZSk7CiAgfQoKICAjd3lyLWJvb2sgLnd5ci1jdGEgewogICAgbWFyZ2luLXRvcDogMzRweDsKICAgIHBhZGRpbmc6IDI4cHggMjRweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDMxLDQ3LDkzLDAuMDYpLCByZ2JhKDIxMywxMzMsNDYsMC4wNikpOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3lyLWxpbmUpOwogIH0KCiAgI3d5ci1ib29rIC53eXItYnV0dG9uIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICBwYWRkaW5nOiAxNHB4IDI0cHg7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzFmMmY1ZCAwJSwgIzJjNDU3ZiA3MCUsICNkNTg1MmUgMTAwJSk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKDMxLDQ3LDkzLDAuMTgpOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMThzIGVhc2UsIGJveC1zaGFkb3cgMC4xOHMgZWFzZSwgb3BhY2l0eSAwLjE4cyBlYXNlOwogIH0KCiAgI3d5ci1ib29rIC53eXItYnV0dG9uOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMzEsNDcsOTMsMC4yNCk7CiAgICBvcGFjaXR5OiAwLjk4OwogIH0KCiAgI3d5ci1ib29rIC53eXItYnV0dG9uOmZvY3VzIHsKICAgIG91dGxpbmU6IDNweCBzb2xpZCByZ2JhKDIxMywxMzMsNDYsMC4yNSk7CiAgICBvdXRsaW5lLW9mZnNldDogM3B4OwogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICAjd3lyLWJvb2sgLnd5ci1zaGVsbCB7CiAgICAgIHBhZGRpbmc6IDE2cHggMTJweCAwOwogICAgfQoKICAgICN3eXItYm9vayAud3lyLWNvdmVyLWNhcmQgewogICAgICBwYWRkaW5nOiAxMnB4OwogICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OwogICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgfQoKICAgICN3eXItYm9vayAud3lyLWJvb2stY2FyZCB7CiAgICAgIHBhZGRpbmc6IDIycHggMTZweCAyOHB4OwogICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgfQoKICAgICN3eXItYm9vayBwLAogICAgI3d5ci1ib29rIGxpIHsKICAgICAgZm9udC1zaXplOiAxN3B4OwogICAgfQoKICAgICN3eXItYm9vayAud3lyLWN0YSB7CiAgICAgIHBhZGRpbmc6IDIycHggMTZweDsKICAgIH0KCiAgICAjd3lyLWJvb2sgLnd5ci1idXR0b24gewogICAgICB3aWR0aDogMTAwJTsKICAgICAgbWF4LXdpZHRoOiAzMjBweDsKICAgICAgcGFkZGluZzogMTVweCAxOHB4OwogICAgfQogIH0KPC9zdHlsZT4KCjxzY3JpcHQ+CiAgKGZ1bmN0aW9uICgpIHsKICAgIHZhciBwcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3eXJQcm9ncmVzc0JhciIpOwoKICAgIGZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKCkgewogICAgICB2YXIgc2Nyb2xsVG9wID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgMDsKICAgICAgdmFyIGRvY0hlaWdodCA9IE1hdGgubWF4KAogICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LAogICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQKICAgICAgKSAtIHdpbmRvdy5pbm5lckhlaWdodDsKCiAgICAgIHZhciBwcm9ncmVzcyA9IGRvY0hlaWdodCA+IDAgPyAoc2Nyb2xsVG9wIC8gZG9jSGVpZ2h0KSAqIDEwMCA6IDA7CiAgICAgIHByb2dyZXNzQmFyLnN0eWxlLndpZHRoID0gTWF0aC5taW4oTWF0aC5tYXgocHJvZ3Jlc3MsIDApLCAxMDApICsgIiUiOwogICAgfQoKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB1cGRhdGVQcm9ncmVzcywgeyBwYXNzaXZlOiB0cnVlIH0pOwogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHVwZGF0ZVByb2dyZXNzKTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB1cGRhdGVQcm9ncmVzcyk7CiAgICB1cGRhdGVQcm9ncmVzcygpOwogIH0pKCk7Cjwvc2NyaXB0Pg==","embed":""}
Why You React, Even When You Know Better by Jay Philip

Guide

Why You React, Even When You Know Better

The Mechanics of Emotional Override

Jay Philip

Copyright

Copyright © 2026 by Jay Philip

All rights reserved.

No portion of this book may be reproduced in any form without written permission from the publisher or author, except as permitted by U.S. copyright law.

If understanding your reaction pattern hasn’t stopped it, you’re not missing willpower—you’re dealing with a stored recording that can still activate. For many, reacting—before thinking—is not a question of intelligence or determination. It’s a mechanical override process: when a trigger hits, the reaction can launch before your conscious mind has time to weigh options. If you’ve ever asked, “Why do I react even though I know better?”—this guide offers a simple, non-blaming explanation—and a clear target for real change.

Recognizing the Pattern: Why You React Before You Can Think

“I know better, but it still happens.”
  • You react before you can think: anger, fear, freezing, shutdown, people-pleasing, avoidance.
  • You regain clarity later—and wonder why it happened again.

Most people have moments where the reaction arrives first and the reasoning arrives later. Maybe you’ve lashed out, shut down, people-pleased, or avoided something important—despite knowing afterward exactly how you wish you’d handled it. The pattern is familiar: a situation triggers a feeling, your body or emotions take over, and only later do you step back and wonder, “Why did I do that again?” This isn’t about being broken—or lacking insight. Instead, it’s a mechanical process so automatic and efficient that the conscious mind gets bypassed, often before you can reason or decide.

Consider everyday scenarios. A frustrated text sends your heart racing before you even finish reading. A friend’s sharp comment leaves you speechless—then replaying it hours later. You want to respond rather than react, but under pressure—or surprise—that intention can vanish. These are not failures—this is a system working by design. It’s not about character flaws or lack of willpower. Even highly self-aware people still experience override moments. This guide will explain why—and what actually changes it.

Removing Shame: Why You React Is Not a Failure of Willpower

“It happens before I can think.”
  • Shame is common—and unnecessary.
  • Reacting is mechanical, not a character flaw.

The first thing to understand—and perhaps the most freeing—is that reacting is not a failure of character, willpower, or intelligence. The override mechanism works faster than your conscious mind can process. The reaction happens before you can slow down and choose. Many people—even after years of reflection—still feel confused by why they react the way they do.

Shame quickly follows: “I should be over this. I should know better.” But shame doesn’t solve it—because this system isn’t trying to make you “right.” It’s trying to keep you safe, fast. This automatic override can happen to anyone. When a charged recording is triggered, the reaction can run—even if you’re normally calm and thoughtful. Recognizing this removes guilt and replaces it with a mechanical explanation.

Future Focus: What Changes When the Override Doesn’t Fire

  • More choice under pressure.
  • More calm and presence when triggered.
  • No surprise “jump” responses in situations that used to set you off.

Imagine what life looks like when the automatic override doesn’t trigger. The world feels less threatening; you experience greater freedom—not because life is perfect, but because the grip of past recordings is lifted. You stay present, even when “barking dog” moments arise. Instead of getting yanked into reaction, you meet pressure with choice.

Consider an individual who once felt panic in certain situations—a slammed door, criticism, or a dog barking fiercely. After neutralizing the charged memory, these triggers simply become moments in time: no spike in heart rate, no compulsion to react, more presence. You may still notice, but you're able to respond rather than react. This isn’t perfection. It’s practical change. The ability to step back, take a deep breath, and make sense of your options—this is what changes when override is no longer in the driver’s seat.

Why Do I React Instead of Responding?

Reacting instead of responding occurs because the brain’s survival circuits prioritize speed and safety over deliberation. When a charged recording is activated by a current trigger, the override mechanism kicks in, leaving conscious thought behind. Until the recording is neutralized, the pattern can repeat—even if you’ve learned to understand or analyze it logically.

Guide Credibility: Why You React Explained in Everyday Terms

“The explanation is mechanical, not motivational.”

This guide is for anyone who has done real work—reflection, communication tools, stress reduction—and still finds themselves reacting on autopilot in the moments that matter. The real cause is mechanical: a recording captured in an intense moment becomes linked to a specific set of triggers. When the trigger appears, your system activates an override—emotion, body, or behavior—almost before your conscious mind can intervene.

Watch the process unfold, step by step:

  1. Recording: An incident occurs (e.g., a sudden dog bite as a child; the pain, fear, and shock leave a vivid, charged memory).
  2. Trigger: Later in life, any cue similar to the original (a barking dog, sudden noise) becomes a trigger.
  3. Activation: The trigger activates the stored recording at lightning speed.
  4. Override: The system runs the reaction before your thinking mind has time to come online.

Reduction of stress and coping skills can help you manage after the reaction, but the mechanical process itself runs invisibly and immediately.

Picture it like a loop:

recording → trigger → activation → override

Trigger activation sequence illustration

Recording > trigger > activation > override > consciousness again

The goal is to break the loop by neutralizing the recording, removing the pain and the fear from the memory.

Level 1: Why Insight, Mindset, and Coping Can Still Leave Override Intact

Insight Isn’t Enough: The Core of Why You React

  • Knowing what happened doesn’t erase the automatic reaction.
  • Willpower and intelligence do not prevent reactions caused by override.

Many people invest in insight and tools. They learn their patterns, practice calming skills, and get better at repairing afterward—right up until the moment a trigger appears. Here’s the catch: knowing why you react doesn’t stop the override from running.

Consider the story from earlier: an adult who was bitten by a dog as a child. As they grow up, they logically learn that most dogs aren’t dangerous, and they meet someone with a friendly dog. Their conscious mind believes they can engage and respond—but the override still activates when the dog barks or makes sudden movements. Even with deep breath techniques, constructive feedback, and positive reinforcement, the reaction happens before conscious intervention.

This mechanical override is simply faster and operates below the level of insight or willpower. Even when you logically learn you’re safe, the override can still fire when you’re surprised. That’s because override is faster than reasoning.

Proof Vignette: The Dog Incident – Why You React Despite Knowing Better

A child approaches a dog. The dog seems threatening and barks. The child becomes afraid—and the dog bites the child’s arm. The child is in pain and partially unconscious.

Years later, that child is an adult. And the reactions still show up when a dog barks: crossing the street to create distance, feeling pain in the arm when a dog is too close, and (rarely) even fainting once when a dog came inches from his body.

Later, he dates a girl he really likes who owns a dog. She encourages gradual approach and withdrawal, shows him the dog is friendly, and gets him to touch the dog. He logically realizes this dog isn’t dangerous.

Yet the override still appears in specific moments: he jumps when the dog barks behind him unexpectedly. He falls back when the dog affectionately puts its paws on his chest. And he stays cautious feeding the dog—keeping his hand away from the dog’s face.

That’s the point. Rational learning can increase comfort and confidence. But if the old recording is still charged, surprise can still activate it—and the body can still react before thought. A mechanical change at the root—discharging or neutralizing the recording—changes the pattern in a durable way.

Reducing Stress Versus Neutralizing the Recording

Breathing, mindfulness, and stress-reduction tools can be extremely useful. They often help you recover faster—or reduce the intensity once a reaction has started. These methods are useful tools for living a life with less overwhelm, but the core “why you react” issue isn’t solved. The recording that powers the override can still be there, only dormant until the right trigger appears. This explains why some days you breeze through challenges, but on others, a minor event throws you off balance.

To put it plainly: reduction of stress is a powerful tool, but it's not the same as neutralizing the charged recording that runs the override. And while everyone benefits from learning to cope, lasting change comes from neutralizing the recording that powers the override—not just managing the reaction afterward.

The main purpose of reacting is mechanical: to ensure quick survival by overriding slow, deliberate thinking in moments of perceived threat. The system doesn’t check for accuracy; it only checks for matching triggers. This can create unnecessary reactions long after the initial event has passed, all due to the persistent recording.

Level 2: Why Neutralization of the Recording Prevents Reactivation

Mechanics of Override: How Why You React Becomes Predictable—and Changeable

  • A recording only activates when it is still charged.
  • Neutralizing or discharging the recording turns it into a normal memory.
  • A normal memory no longer hijacks your response when a trigger happens.

The lever for durable change is simple: when a charged recording is accessed and discharged, it becomes a normal memory. The memory remains—but the charge is gone. And when the charge is gone, the same trigger no longer produces the same automatic override.

This process is not an instant fix, nor is it about denying the reality of stress and trauma.

Recording trigger activation override chart

From Coping to Change: Breaking the Loop

Coping helps you function while the loop is still active. Real change happens when the loop stops firing—because the recording that powered it has been discharged.

When that happens, you don’t become emotionless. You simply regain timing. You can feel what you feel without being overridden by an old recording. You can respond from the present instead of replaying a stored reaction.

When you react, it means the system has executed an old, automatic override response to a familiar or surprising trigger. Rather than choosing actions based on the present, the subconscious mind runs the program set by unresolved experiences—often lightning fast and beyond conscious control. Transformation comes from turning these reactions into regular, neutral memories.

Signs that a Recording Still Runs

  • Surprise, startle, or shutdown in situations that shouldn’t feel intense.
  • Physical signals such as tight chest, heat, arm pain, or tension.
  • Afterward: “I know better, but…”

Quote: On Changing the Override

“Once the charge is gone, the same trigger no longer runs the same reaction.”

What You’ll Learn

  1. Why insight often helps—but doesn’t stop surprise override.
  2. The difference between coping after activation and neutralizing the recording.
  3. How to recognize when a recording is still charged.
  4. The mechanism that turns a charged recording into a normal memory.

By now, you’ve seen that understanding and willpower aren’t quite enough to eliminate involuntary responses. You’ve also recognized the difference between managing stress (useful) and truly discharging the source of the override (essential). And you realize you’re not broken. Transformation is mechanical, not motivational.

Key Takeaways for Anyone Asking Why You React

  1. Reactions are automatic, not character flaws.
  2. Charged recordings can override your conscious choice.
  3. Neutralization, not just coping, is key for lasting change.
  4. You’re not alone—mechanical explanations remove blame and shame.

FAQs About Why You React

Is it possible for reactions to stop firing in situations that used to trigger them?

Yes—when the underlying recording is neutralized, the same trigger can stop producing the same automatic override response.

Why does it happen more under stress or surprise?

Because stress and surprise reduce your time to think, and activation can outrun conscious choice.

Are some people just more reactive?

Reactivity often isn’t a fixed trait. It can be a function of what recordings are still charged and how easily they activate.

Do I have to remember the original incident clearly?

Not always. The key is accessing and discharging the charge that drives activation, so the memory becomes neutral.

If This Resonates with You

If this guide described your experience—and you want the full, step-by-step model for how recordings form, how activation works, and what it means to neutralize a recording—read a free chapter from the book that explains the mechanism in detail.

Read a Free Chapter
Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning