VGhvdWdoIEkgd291bGQgaGF2ZSBiZWVuIHRoZSBiZXR0ZXIgbWFyZSwgSSB3b3VsZCBoYXZlIGJlZW4gYW4gdXR0ZXIgaW1iZWNpbGUgdG8gd2FsayBhd2F5LiBTaGUgd2FzIHRoZSBlbnRpcmUgbWFzdGVybWluZCBiZWhpbmQgYWxsIG9mIHRoaXMuIFRocm91Z2ggbXkgY2FyZWxlc3NuZXNzLCBJJ2QganVzdCBnaXZlbiBTaWx2ZXIgU3RyZWFrIGEgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiwgbm8gbWF0dGVyIGhvdyBpbmNvbnNlcXVlbnRpYWwgaXQgd2FzLiBXZSB3ZXJlIHNob3J0IG9uZSBWaW55bCBTY3JhdGNoLiBXaGF0IGRpZCB0aGF0IHNheSBhYm91dCB0aGUgSW5uZXIgQ2lyY2xlIGFzIGEgd2hvbGU/IFdlIHdlcmUgd2Vhay4gRGlzam9pbnRlZC4KCkFjcm9zcyB0aGUgc3RyZWV0IHdhcyBhIHF1YWludCBkaW5lciwgb3BlbiAyNC83LiBJIHdvdWxkbid0IGxvb2sgdG9vIG91dCBvZiBwbGFjZSwgZXZlbiB0aG91Z2ggaXQgd2FzIG5lYXJseSBlbXB0eSwgc2F2ZSBmb3IgdGhlIHR3byBwb25pZXMgd29ya2luZyB0aGUgcmVnaXN0ZXIgYW5kIGNvb2tpbmcuCgoiRXZlbmluZywiIHNoZSBzYWlkIGNoZWVyZnVsbHkuICJXaGF0IGNhbiBJIGRvIHlvdSBmb3I/IgoKIlBsZW50eSBvZiBjb2ZmZWUuIgoKTm93LCBhbGwgSSBoYWQgdG8gZG8gd2FzIHdhaXQuCgpXYWl0Li4uZm9yIHRoYXQgZGVtb24gdG8gd2FsayB0aHJvdWdoIHRoZSBkb29yLgoKV2FpdGluZy4uLndhaXRpbmcuLi5hbnkgZGF5IG5vdy4uLgoKQXQgc29tZSBwb2ludCwgSSBjYW4ndCByZWNhbGwsIEkgbXVzdCBoYXZlIGZhbGxlbiBhc2xlZXAuIFBlcmhhcHMgSSBoYWQgYmVlbiBzdGFyaW5nIHNvIGludGVuc2VseSBhY3Jvc3MgdGhlIHN0cmVldCB0aGF0IEknZCBleGhhdXN0ZWQgbXlzZWxmLiBNYXliZSBjb2ZmZWUgaGFkIHRoZSBvcHBvc2l0ZSBlZmZlY3Qgb24gbWUuIFRoYXQgYnJpZWYgam9sdCBvZiBlbmVyZ3kgZnJvbSB0aGUgZHJpbmsgbWFkZSBtZSBsZXRoYXJnaWMuCgpXaGVuIEkgbGlmdGVkIG15IGhlYWQgZ3JvZ2dpbHkgYSBmZXcgaG91cnMgbGF0ZXIsIGl0IHdhcyBkYXkuIE9uZSBvZiB0aGUgZW1wbG95ZWVzIHdhcyBwb2tpbmcgbWUuCgpJbXBvc3NpYmxlIQoKSSdkIHdhdGNoZWQgdGhhdCBkb29yIQoKSSBzdG9ybWVkIG92ZXIgYW5kIHNob3ZlZCB0aGUgZG9vcnMgb3Blbi4gVGhlIGJhcnRlbmRlciBqdW1wZWQuCgoiTWFyZSwgc2lsdmVyIGNvYXQsIHNpbHZlciBtYW5lLCBzaWx2ZXIgZXllcywgc2lsdmVyIGNyb3NzIEN1dGllIE1hcmsuIFdoZW4gZGlkIHNoZSBsZWF2ZT8iIEkgZGVtYW5kZWQuCgoiT2gsIHlvdSB3ZXJlIHRoYXQgcG9ueSBhIGZldyBob3VycyBhZ28uIFNoZSB0b29rIHRoZSBleGl0LiBOb3cgbGlzdGVuLCBhcmUgeW91IGdvbm5hIGJ1eSBzb21ldGhpbmcgb3Igbm90PyBIZXkhIgoKVGhlIG5leHQgZmV3IGRheXMgd2VyZSBhIGJsdXIgaW4gbXkgbWluZC4gSSB3YXMganVzdCBzaHVmZmxpbmcgYWxvbmcgZnJvbSBwbGFjZSB0byBwbGFjZS4gTXkgcGFyZW50cyBoYWRuJ3QgYm90aGVyZWQgdG8gY2FsbCBvciB3cml0ZSBpbiBhdCBsZWFzdCBhIHdlZWssIG5vdCB0aGF0IGl0IGJvdGhlcmVkIG1lIGluIHRoZSBzbGlnaHRlc3QuCgpBcyBmYXIgYXMgYW55cG9ueSB3YXMgY29uY2VybmVkLCB0aGUgY3VscHJpdHMgb2YgdGhlIGJvbWJpbmdzIGF0IEVxdWVzdHJpYSBEYWlseSBhbmQgQ2x1YiBDYW50ZXJsb3Qgd2VyZSBvbmUgYW5kIHRoZSBzYW1lLiBUaGVyZSB3YXMgYSBwYWxwYWJsZSB0ZW5zaW9uIGluIHRoZSBhaXIuIE5vcm1hbGx5IHRoZSB3ZWVrcyBsZWFkaW5nIHVwIHRvIHRoZSB0d28gYmlnZ2VzdCBldmVudHMgaW4gRXF1ZXN0cmlhLCBIZWFydGgncyBXYXJtaW5nIEV2ZSBhbmQgdGhlIEdyYW5kIEdhbGxvcGluZyBHYWxhLCB3b3VsZCBiZSBmaWxsZWQgd2l0aCBhbnRpY2lwYXRpb24gYW5kIGV4Y2l0ZW1lbnQuIE5vdywgZXZlcnlwb255IHdhcyBvbiBlZGdlLiBUaGUgc3RyZWV0cywgY292ZXJlZCBpbiBzbm93LCB1c3VhbGx5IHBhY2tlZCB3aXRoIHdlYWx0aHkgcG9uaWVzIHN0cnV0dGluZyB0aGUgbGF0ZXN0IHdpbnRlciBmYXNoaW9uIGxpbmUgYW5kIGJyYXR0eSBmb2FscyB0aHJvd2luZyBzbm93YmFsbHMsIHdlcmUgbGFyZ2VseSBlbXB0eS4gRGVzb2xhdGUuIFNvbWV0aW1lcyBJIHRoaW5rIEknZCBmb3Jnb3R0ZW4gaG93IHRvIGJlIGEgbm9ybWFsIHBvbnkuIEkgY291bGRuJ3QgcG9zc2libHkgYmVnaW4gdG8gaW1hZ2luZSB3aGF0IGV2ZXJ5cG9ueSBlbHNlIGluIEVxdWVzdHJpYSB3YXMgZmVlbGluZy4gT3VyIGFjdGlvbnMsIHdoZXRoZXIgd2UgbGlrZWQgaXQgb3Igbm90LCBoYWQgYW4gaW1wYWN0IG9uIHNvY2lldHkuCgpUaGV5IGhhZCBiZWVuIHNweWluZyBvbiBtZSBmb3IgZGF5cywgd2Vla3MsIG1vbnRocyBldmVuLiBNeSBldmVyeSBhY3Rpb24sIG9ic2VydmVkLCByZWNvcmRlZCwgYW5hbHl6ZWQuIEkgd2FzIGJlY29taW5nIGFnaXRhdGVkLCB0byBzYXkgdGhlIGxlYXN0LiBTaWx2ZXIgU3RyZWFrIGhhZCBiZWVuIGFibGUgdG8gZmluZCBtZSB3aGVuZXZlciBzaGUgd2FudGVkLiBJIHdhcyBiZWluZyB3YXRjaGVkLCBhbmQgSSBjb3VsZG4ndCBkbyBhIHRoaW5nIGFib3V0IGl0LiBQYXJhbm9pYSB3YXMgYmVnaW5uaW5nIHRvIHNldCBpbi4gSSBjb3VsZG4ndCBldmVuIHRha2UgYSBzaW1wbGUgc3Ryb2xsIGRvd24gdGhlIHN0cmVldCBhbnltb3JlIHdpdGhvdXQgbG9va2luZyBvdmVyIG15IHNob3VsZGVyLiBJIGtlcHQgc2VlaW5nIHRoaW5ncyBhbmQgbmVhcmx5IGJpdCBIYXJwbydzIGhlYWQgb2ZmIHRoZSBvdGhlciBkYXkgd2hlbiBoZSBnYXZlIG1lIGEgcGxlYXNhbnQsICJIZWxsby4iCgpJZiBteSBlbnRvdXJhZ2Ugbm90aWNlZCBteSBiZWhhdmlvciwgdGhleSBkaWRuJ3Qgc2F5IGFueXRoaW5nLiBGb3IgdGhlIG1vc3QgcGFydCwgSSdkIGJlZW4gYWJsZSB0byB3b3JrIHdpdGggdGhlbSB0aHJvdWdoIG91ciByZWhlYXJzYWxzLiBZb3UgbWF5IGFzayB5b3Vyc2VsdmVzIHdoeSBJIGZpbmQgdGhlbSBpbmNyZWRpYmx5IGRyZWFyeSBhbmQgYm9yaW5nLCBhbmQgSSBjYW4gb25seSB0ZWxsIHlvdSB0byBpbWFnaW5lIGEgcGFzc2lvbiBpbiB5b3VyIGxpZmUuIFNvbWV0aGluZyB5b3UgZ2VudWluZWx5IGVuam95IGRvaW5nLCBsaWtlIHBhaW50aW5nIG9yIHdyaXRpbmcuIE5vdyBpbWFnaW5lIGlmIHNvbWVwb255IHRvbGQgeW91IHRoYXQgeW91IGNvdWxkIGtlZXAgZG9pbmcgd2hhdCB5b3UgbG92ZWQsIGJ1dCB5b3UgaGFkIHRvIGRvIGl0IHRoZWlyIHdheSwgcGFpbnQgb3Igd3JpdGUgd2hhdCB0aGV5IHdhbnRlZC4gV2Ugd2VyZW4ndCBtYWtpbmcgbXVzaWMuIFRoZSBtdXNpYyBhdCB0aGUgR3JhbmQgR2FsbG9waW5nIEdhbGEgd2Fzbid0IG1lYW50IHRvIGJlIGxpdmVseSwgb3IgcGFzc2lvbmF0ZS4gSXQgd2FzIG1lYW50IHRvIGJlIGJhY2tncm91bmQgbm9pc2UuIEluIGEgd2F5LCBvdXIgbXVzaWMgd2FzIGFsbW9zdCBhcyByZXBldGl0aXZlLCBpZiBub3QgbW9yZSBzbywgdGhhbiBWaW55bCBTY3JhdGNoJ3MgZWxlY3Ryb25pYyBtdXNpYy4KCk15IHNwYXJlIHRpbWUgd2FzIHNwZW50IGFuYWx5emluZyBTaWx2ZXIgU3RyZWFrJ3MgYmFuayBzdGF0ZW1lbnRzLCBhbmQgZm9yIHRoZSBtb3N0IHBhcnQsIEkgZGlkbid0IGxlYXJuIGEgc2luZ2xlIHRoaW5nIGFib3V0IGhlci4gQW55dGhpbmcgYmVmb3JlIHRoZSBwYXN0IHNpeCBtb250aHMgd2VyZSBpbnNpZ25pZmljYW50LiBTaGUsIGxpa2UgYWxsIHBvbmllcywgaGFkIHRvIGVhdCwgZHJpbmssIGFuZCBzbGVlcC4gU2hlIHdhcyBtb3J0YWwsIGp1c3QgbGlrZSB1cywgYW5kIHNoZSB0b28gcHVyY2hhc2VkIHRoZSBzYW1lIHRoaW5ncyBhcyB3ZSBkaWQuIEJ1dCBJIG1hbmFnZWQgdG8gbmFycm93IGRvd24gdGVuIHBheW1lbnRzIG9mIGEgc3Vic3RhbnRpYWwgc3VtLCBmaXZlIGh1bmRyZWQgYml0cywgbWFkZSB0byBhIGpld2Vscnkgc3RvcmUgb24gTWFpbiBTdHJlZXQuIFNpbHZlciBTdHJlYWsgZGlkbid0IHdlYXIgamV3ZWxyeSwgYXMgZmFyIGFzIEkgY291bGQgdGVsbCwgbm9yIGRpZCBzaGUgc2VlbSBsaWtlIHRoZSB2YWluIHR5cGUgdG8gZG8gc28uCgpCZWZvcmUgSSBjb3VsZCBldmVuIGludmVzdGlnYXRlLCBJIHJlY2VpdmVkIGEgY2FsbCBvbiBGcmlkYXkgbmlnaHQgZnJvbSBQcmluY2VzcyBMdW5hLgoKIkkgdGhvdWdodCB5b3UnZCBhcHByZWNpYXRlIG1lIHRlbGxpbmcgeW91IHRoYXQgdG9tb3Jyb3cgbmlnaHQgaXMgYSBmdWxsIG1vb24uIgoKSSBmcm93bmVkLiAiRGlkIHlvdSBjYWxsIG1lIGhlcmUganVzdCB0byB0ZWxsIG1lIHRoaXM/IgoKIk5vLiBCdXQgSSBoYXZlIGEgcHJlc2VudCBmb3IgeW91LiIKCkkgZmxpcHBlZCB0aHJvdWdoIHRoZSBib29rbGV0LiAiQSBjYWxlbmRhcj8gWW91IHNob3VsZG4ndCBoYXZlLCIgSSBzYWlkIGZsYXRseS4KCiJPaCwgYnV0IHRoZSBiZXN0IHBhcnQgaXMgaXMgdGhhdCBpdCdzIHBlcnNvbmFsaXplZCEiCgpJbmRlZWQsIGl0IHdhcyBwZXJzb25hbGl6ZWQsIHdpdGggcGljdHVyZXMgb2YgdGhlIHByaW5jZXNzIGluIHNleHkgcG9zZXMuCgoiQW5kIGl0IGV2ZW4gaGFzIGEgc3lzdGVtIHRvIHRlbGwgeW91IHdoZW4gZnVsbCBtb29ucyBhcmUsIHNlZT8iIFNoZSBwb2ludGVkIG91dCBhIHNtYWxsIHBpY3R1cmUgb2YgYSBncnVtcHkgd29sZiBPY3RhdmlhLgoKIldoeSBpcyBhbiBlbnRpcmUgd2VlayBtZSBiZWluZyBncnVtcHk/IgoKIlRoYXQgd291bGQgYmUgJ09jdGF2aWEgb24gaGVyIHBlcmlvZCcgd2Vlay4iCgouLi4KCiJOb25ldGhlbGVzcywgSSBiZWxpZXZlIHdlIG1heSBoYXZlIGZvdW5kIHNvbWV0aGluZy4iCgpJIGNvY2tlZCBteSBoZWFkLiAiUHJpbmNlc3MsIEkgZG8gbm90IGRvdWJ0IHlvdXIgYWJpbGl0aWVzLCBidXQgSSBkb24ndCB0aGluayB5b3UgaGF2ZSB2ZXJ5IG11Y2ggdGltZSB0byBnbyBydW5uaW5nIGFyb3VuZCBDYW50ZXJsb3QuIgoKIk1heSBJIHJlbWluZCB5b3UgdGhhdCB5b3UgYXJlIG5vdCB0aGUgb25seSBtZW1iZXIgb2YgdGhlIElubmVyIENpcmNsZSwgT2N0YXZpYT8iCgpJIGZsdXNoZWQuCgpMdW5hIHBhY2VkLiAiVGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IE9jdGF2aWEsIGFsbCB0aGUgb3RoZXIgbWVtYmVycyBvZiB0aGUgSW5uZXIgQ2lyY2xlIGFyZSBkb2luZyB0aGVpciBwYXJ0IHRvIGZpeCB0aGlzIG1lc3MsIiBzaGUgc2FpZC4gIkFsbCBvdmVyIEVxdWVzdHJpYSwgdGhvdWdoIG1vc3RseSBpbiBDYW50ZXJsb3QsIG91ciBtZW1iZXJzIGFyZSBjdXJyZW50bHkgc2NvdXRpbmcgZm9yIGFueSBzaWdodGluZ3Mgb2YgU2lsdmVyIEhvcnNlc2hvZSBtZW1iZXJzIGFuZCB3aGVyZSB0aGV5IGFyZSBjb25ncmVnYXRpbmcuIiBTaGUgZ2F2ZSBtZSBhIHNtYWxsIHNtaWxlLiAiV2UgYWxsIGxvb2sgb3V0IGZvciBlYWNoIG90aGVyLiBEbyBub3QgdGhpbmsgeW91IGFyZSBhbG9uZS4gUGhvdG8gRmluaXNoIGFuZCBIb2l0eSBUb2l0eSBhcmUganVzdCBhcyBmcmFudGljIGFib3V0IFZpbnlsJ3MgZGlzYXBwZWFyYW5jZSBhcyB5b3UgYXJlLiIKCiJXZSBoYXZlbid0IGhhZCBhIG1lZXRpbmcuIEhvdyBkaWQgdGhleSBmaW5kIG91dD8iCgoiVGhlIFNpbHZlciBIb3JzZXNob2VzIG1heSB0aGluayBvZiBpdHNlbGYgYXMgc2VjcmV0aXZlLCBidXQgd2UgY2FuIHRvbywiIEx1bmEgc21pcmtlZC4gIkhhdmUgeW91IHN1YnNjcmliZWQgdG8gb3VyIG5ld3NsZXR0ZXI/IgoKSXQgd2FzLi4ucmVhc3N1cmluZywga25vd2luZyB0aGF0IHNvbWVwb255IGhhZCBteSBiYWNrLgoKIlNvIGRvZXMgdGhpcyBtZWFuIHdlIGhhdmUgYSBsZWFkPyIgSSBhc2tlZCBlYWdlcmx5LgoKIlllcy4gYSBwb3RlbnRpYWwgbGVhZCBvbiBWaW55bCBTY3JhdGNoJ3Mgd2hlcmVhYm91dHMuIiBNeSBoZWFydCBsZWFwdC4gIk9uZSBvZiBvdXIgc2NvdXRzIGhhcyBqdXN0IG5vdGVkIGFuIGluY2lkZW50IHRha2luZyBwbGFjZSB0d28gaG91cnMgYWdvIHdoZXJlIHRocmVlIHBvbmllcyB3ZXJlIGluanVyZWQgYW5kIHRoZSBwYXJhbWVkaWNzIGhhZCB0byBjb21lLiIKCiJXZWxsLCB0aGF0IGV4cGxhaW5zIHdoeSB5b3UgY2FsbGVkIG1lIGhlcmUgb24gc3VjaCBzaG9ydCBub3RpY2UuIgoKIlllcywgd2VsbCwgd2hhdCBpcyBtb3JlIGludGVyZXN0aW5nIGlzIHRoYXQgdGhlc2UgcG9uaWVzIGFsbCBoYXZlIHNpbHZlciBtYW5lcyBhbmQgY29hdHMuIgoKIlBvdGVudGlhbCBtZW1iZXJzPyIKCiJPaCwgdGhlcmUgaXMgbm8gZG91YnQgaW4gbXkgbWluZCB0aGV5IGFyZS4gQnV0IHdoYXQgaXMgbW9yZSBpbnRlcmVzdGluZyBpcyB3aGVyZSB0aGV5IHdlcmU6IGEgbG9jYWwgbW90ZWwuIFRoZXkgcmVjZWl2ZWQgbXVsdGlwbGUgYmx1bnQgdHJhdW1hIGluanVyaWVzIGFuZCBvbmUgb2YgdGhlbSByZXBvcnRlZGx5IGhhcyBhIGJpdGUgbWFyayBvbiBoaXMgdXBwZXIgbGVnLiIKCiJTb3VuZHMgbGlrZSBhIHNjdWZmbGUgd2l0aCBhIHNxdWlycmVsLCIgSSByZW1hcmtlZCBkcnlseS4KCiJUd28gb2YgdGhlbSB3aWxsIGhhdmUgdG8gYnJlYXRoZSB0aHJvdWdoIGEgdHViZSBmb3Igc2l4IG1vbnRocy4gT25lLCBhIGZyYWN0dXJlZCBob3JuLCBhbm90aGVyIHNldmVyYWwgYnJva2VuIHJpYnMsIGFuZCB0aGUgbGFzdCBoYXMgaGFkIHRoZWlyIGphdyBkaXNsb2NhdGVkLiIKCiJJIHRob3VnaHQgeW91IHNhaWQgbXVsdGlwbGUgYmx1bnQgdHJhdW1hIGluanVyaWVzLiIKCiJZb3UgZGlkbid0IGxldCBtZSBmaW5pc2guIE9oLCBhbmQgZGlkIEkgbWVudGlvbiBvbmUgaGFzIGEgaGVtb3JyaGFnZWQgZGlhcGhyYWdtPyIKCiJOb3cgaXQgc291bmRzIGxpa2UgdGhleSd2ZSBiZWVuIG1hdWxlZCBieSBhIG1hbnRpY29yZS4iCgoiV29yc2UsIFZpbnlsIFNjcmF0Y2guIiBMdW5hIHNldCBzZXZlcmFsIHBob3RvcyBvZiB0aGUgdmljdGltcyBvbiBoZXIgdGFibGUuCgpJIHBhbGVkLCBzdXJwcmlzZWQgYXQgdGhlIHNldmVyaXR5IG9mIHRoZWlyIHdvdW5kcy4gIklzIHNoZSBhbHdheXMgdGhpcyBicnV0YWw/IiBJIHNocmlla2VkLgoKIlNoZSBpcyBkYW5nZXJvdXMsIGFuZCBub3cgc2hlIGlzIG9mZiBvbiBzb21lIHBlcnNvbmFsIHZlbmRldHRhLiIKCkkgZGlkbid0IGtub3cgd2hhdCBWaW55bCB3YW50ZWQsIGlmIGl0IHdhcyB0aGUgc2FtZSB0aGluZyB0aGF0IEkgd2FzIGFmdGVyLiBJIGNoYXNlZCB0aGUgbGVzc2VyIG9mIG15c3Rlcmllcy4gT3RoZXIgcG9uaWVzJyBjcmltZXMuCgoiSSB0aGluayBJIGtub3cgd2h5IG5vdyBhcyB3ZWxsLiBBZnRlciBtZWV0aW5nIFNpbHZlciBTdHJlYWssIHNoZSBzYWlkIHNvbWV0aGluZyB0aGF0IGltcGxpZWQgdGhhdC4uLnRoZXkgbWF5IGhhdmUgYmVlbiBpbiBhIHJlbGF0aW9uc2hpcCB0b2dldGhlci4gU29tZXRoaW5nIGFib3V0IFZpbnlsIGxlYXZpbmcgaGVyLiIKCiJUaGF0IGlzIGNvcnJlY3QuIgoKSSByYWlzZWQgbXkgaGVhZC4KCiJUaGV5IHdlcmUgaW4gYSByZWxhdGlvbnNoaXAgdG9nZXRoZXIsIHR3byB5ZWFycyBiYWNrLiIKCiJBcmUgeW91IHRyeWluZyB0byB0ZWxsIG1lIHRoYXQgU2lsdmVyIFN0cmVhayBoYXMgaXQgb3V0IGZvciB1cyBiZWNhdXNlIFZpbnlsIGR1bXBlZCBoZXI/IgoKIlRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBzdG9yeSwiIEx1bmEgZXhwbGFpbmVkLiAiVmlueWwgZGlkIGN1dCBvZmYgaGVyIHJlbGF0aW9uc2hpcCB3aXRoIFNpbHZlciBTdHJlYWsgb25seSBhZnRlciBzaGUgZm91bmQgb3V0IHNoZSB3YXMgYmVpbmcgdXNlZC4iCgoiQXMgaW4gc2hlIHdhcyB1c2luZyBWaW55bCB0byBnZXQgaGVyIG1vbmV5PyIKCiJOby4gU2hlIHdhcyB1c2luZyBWaW55bCB0byBnZXQgdG8gdXMuIiBMdW5hIGxldCBoZXIgd29yZHMgc2luayBpbi4gIkFuZCBzaGUgd2FzIGV4dHJlbWVseSBjbG9zZSB0byBjYXVzaW5nIGlycmV2ZXJzaWJsZSBkYW1hZ2Ugb24gdGhlIElubmVyIENpcmNsZS4gT25seSBWaW55bCBmb3VuZCBvdXQgYW5kLi4uIgoKIkl0IGRpZG4ndCBlbmQgd2VsbD8iCgoiU3VycHJpc2luZ2x5LCBpdCBkaWQuIFZpbnlsIG1hbmFnZWQgbm90IHRvIGtpbGwgaGVyLiIKCiJJIHN1cHBvc2UgdGhhdCBjb3VudHMuIgoKIlNpbHZlciBTdHJlYWsgZmxlZCBmb3Igb2J2aW91cyByZWFzb25zIGFmdGVyIFZpbnlsIGNvbmZyb250ZWQgaGVyLiBOb3cgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdGhlIGVuZCBvZiB0aGF0IGZvciBWaW55bCwiIEx1bmEgc2lnaGVkLiAiQnV0IHNoZSBtYW5hZ2VkIHRvIGdldCBhd2F5IHdpdGggc29tZSBpbmZvcm1hdGlvbiBhYm91dCBzb21lIG9mIG91ciBtZW1iZXJzLiIgSSByZW1haW5lZCBzaWxlbnQuICJFbm91Z2ggc3RvcnkgdGltZSwgSSBzdXBwb3NlLCBhbmQgb250byBidXNpbmVzcy4gU2VlaW5nIGFzIHlvdSdyZSBlbW90aW9uYWxseSBpbnZlc3RlZCBpbiBoZXIsIEkgYWxtb3N0IGNvbnNpZGVyZWQgbm90IHNlbmRpbmcgeW91IHRvIGludmVzdGlnYXRlLiIgV2hlbiBMdW5hIHNhdyB0aGUgaW5kaWduYW50IGxvb2sgb24gbXkgZmFjZSBzaGUgYWRkZWQgdGVzdGlseSwgIkFsbW9zdC4gQnV0IEkgaGF2ZSBkZWNpZGVkIHRvIGxldCB5b3UgZ28uIFlvdSB3aWxsIGdvIHRoZXJlIGFuZCBzZWUgd2hhdCB5b3UgY2FuIGZpbmQuIFlvdSB3aWxsIG5vdCBjb25mcm9udCBub3IgcHVyc3VlIGFueSBTaWx2ZXIgSG9yc2VzaG9lIG1lbWJlcnMgYW5kIHlvdSB3aWxsIHJlcG9ydCB0byBtZSB5b3VyIGZpbmRpbmdzLiBDbGVhcj8iCgoiQ3J5c3RhbCwiIEkgbXV0dGVyZWQuCgpUaGUgbW90ZWwgd2FzIGEgcnVuIGRvd24gc29ydCBvZiBwbGFjZS4gU2VlaW5nIGFzIHRoZSBzdHJ1Z2dsZSB0b29rIHBsYWNlIG5vdCB0d28gaG91cnMgYWdvLCB0aGVyZSB3ZXJlIHN0aWxsIGEgZmV3IHBvbmllcyBjbGFtb3Jpbmcgb24gdGhlIG9wcG9zaXRlIHNpZGV3YWxrLiBSdW1vcnMgd2VyZSBhbHJlYWR5IGJlZ2lubmluZyB0byBzcHJlYWQuCgpJIGR1Y2tlZCB1bmRlcm5lYXRoIHRoZSB5ZWxsb3cgdGFwZS4gVGhlIE5pZ2h0IEd1YXJkcyBnYXZlIG1lIGEgbm9kLCBwZXJtaXR0aW5nIG1lIHRvIGVudGVyLgoKIlJvb20gMy4iCgpBIHN0cnVnZ2xlIGhhZCBkZWZpbml0ZWx5IHRha2VuIHBsYWNlIGhlcmUuIFRoZSBicm9rZW4gc2hhcmRzIG9mIGEgdmFzZSB3ZXJlIGxpdHRlcmVkIGFjcm9zcyB0aGUgZmxvb3IuIEFuIGVsZWN0cmljIGNvcmQgaGFkIGJlZW4gcmlwcGVkIGZyb20gdGhlIHdhbGwsIGFuZCBJIHN1c3BlY3QgaXQgd2FzIHVzZWQgdG8gYXR0ZW1wdCB0byBzdHJhbmdsZSBzb21lcG9ueS4gVGhlcmUgd2VyZSBzZXZlcmFsIGRyb3BzIG9mIGJsb29kIG9uIHRoZSBkaXJ0eSBjYXJwZXQsIGFuZCBwaWxsb3cgZmVhdGhlcnMgd2VyZSBldmVyeXdoZXJlLiBQZXJoYXBzIGEgcGlsbG93IGZpZ2h0IGhhZCB0YWtlbiBwbGFjZSBoZXJlLCBhbmQgaXQgaGFkIGdvdHRlbiBvdXQgb2YgaG9vZi4KCk9oIHllcy4gVmlueWwgaGFkIGRlZmluaXRlbHkgYmVlbiBoZXJlLCB0aGUgcG9uaWVzIGluIHRoZSBob3NwaXRhbCB0aGUgc2lnbiBvZiBoZXIgcGFzc2FnZS4gV2hhdCBkaWQgdGhhdCB0ZWxsIG1lPyBOb3RoaW5nLiBDb3VsZCBJIHRyYWNrIGhlciBkb3duPyBOb3QgYXJvdW5kIGFsbCB0aGVzZSBwb25pZXMuIEFuZCBJIGRvdWJ0IHRoYXQgSSdkIGJlIGFibGUgdG8gcGljayBoZXIgc2NlbnQgb3V0LiBJIHNuaWZmZWQgYXJvdW5kLiBUaGVyZSB3ZXJlIG1vcmUgdGhhbiBmb3VyIHNjZW50cyBoZXJlLiBWaW55bCdzIHdhcyB0aGUgc3Ryb25nZXN0LiBUaGUgb3RoZXJzIHdlcmUgZmFpcmx5IG5ldy4gVGhyZWUgaW4gdGhlIGhvc3BpdGFsLCBubyBWaW55bCB0byBiZSBmb3VuZC4gVGhhdCBjb3VsZCBvbmx5IG1lYW4gdGhlcmUgaGFkIGJlZW4gb3RoZXIgU2lsdmVyIEhvcnNlc2hvZXMuIEhvd2V2ZXIsIHRoZSBzdHJvbmdlc3Qgc21lbGwgdGhhdCBvdmVyd2hlbG1lZCBteSBub3N0cmlscyB3YXMgdmluZWdhci4gVGhleSdkIHVzZWQgaXQgdG8gbWFzayB0aGVpciBzY2VudC4gRm9sbG93aW5nIHRoZSB0cmFpbCBvZiB2aW5lZ2FyIHdvdWxkIHRha2UgbWUgdG8gdGhlIGR1bXBzdGVyIG91dHNpZGUuCgpJIHB1bGxlZCBvcGVuIHRoZSBuaWdodHN0YW5kIGRyYXdlci4gSW5zaWRlLCBhIHBhaXIgb2YgaGVhZHBob25lcy4gRGVmaW5pdGVseSBoZXJzLiBBbW9uZ3N0IHRoZSBicm9rZW4gc2hhcmRzIG9mIHRoZSB2YXNlIEkgbWFuYWdlZCB0byBwaWNrIG91dCBhIGxvbmUgcHVycGxlIG9uZS4gTm8gZG91YnQgaXQgYmVsb25nZWQgdG8gaGVyIGdsYXNzZXMuCgpUaGUgdHJhaWwgaGFkIGdvbmUgY29sZC4gQnV0IEkgc3RpbGwgaGFkIG9uZSBtb3JlIGxlYWQuCgoiSGVsbG8hIEhvdyBjYW4gSSBoZWxwIHlvdSB0b2RheT8gQXJlIHlvdSBoZXJlIHRvIGJ1eSBzb21lIGpld2Vscnk/IgoKIkknbSBoZXJlIG9uIHRoZSBhdXRob3JpdHkgb2YgUHJpbmNlc3MgTHVuYSwgYW5kIEkgZGVtYW5kIHRvIHNlZSB5b3VyIGxlZGdlci4iCgpUaGUgamV3ZWxlciBibGFuY2hlZC4gIk8tT2YgY291cnNlISIgSGUgdGhydXN0IGEgY2xpcGJvYXJkIGF0IG1lLgoKSSBjYW4ndCBiZWxpZXZlIHRoYXQgYWN0dWFsbHkgd29ya2VkLgoKSSBzY2FubmVkIG15IGV5ZXMgZG93biB0aGUgcGFnZXMsIG5vdGluZyB0aGUgc2lnbmF0dXJlcyBhbmQgcHVyY2hhc2VzIG1hZGUgd2l0aGluIGxhc3QgbW9udGguIEkgc3F1aW50ZWQsIG15IGhvb2YgaG92ZXJpbmcgb3ZlciBhIGJveCBkYXRlZCBmb3IgbGFzdCB3ZWVrLgoKUHJpbmNlc3MgTHVuYT8gQW4gYWxpYXMuCgoiRG8geW91IGNoZWNrIHdobyB3cml0ZXMgdGhlaXIgbmFtZSBkb3duIG9uIHRoZXNlIG9yZGVycz8iIEkgbmFycm93ZWQgbXkgZXllcy4KCiJPLU9mIGNvdXJzZSBJIGRvISIKCiJJdCBzYXlzIGhlcmUgdGhhdCBQcmluY2VzcyBMdW5hIG9yZGVyZWQgYSBwZWFybCBuZWNrbGFjZSBmb3IuLi5maXZlIHRob3VzYW5kIGJpdHM/IiBJIGZyb3duZWQuICJMYXN0IHRpbWUgSSBjaGVja2VkLCBhIHBlYXJsIG5lY2tsYWNlIGRvZXNuJ3QgY29zdCBuZWFybHkgYXMgbXVjaCwgbm90IHRvIG1lbnRpb24gdGhhdCB0aGUgYWRkcmVzcyB0aGlzIHdhcyBzZW50IHRvIGlzbid0IENhbnRlcmxvdCBDYXN0bGUuIgoKIk0tTXkgbWlzdGFrZT8iCgpJIGx1bmdlZCwgY2F0Y2hpbmcgdGhlIHBvb3IgcG9ueSBieSBoaXMgdGllIGJlZm9yZSBoZSBjb3VsZCBydW4gYXdheS4gIk5vdyB5b3UgbGlzdGVuIGNhcmVmdWxseS4gSSBhbSBpbiBubyBtb29kIGZvciBnYW1lcy4gSSB3YW50IHRvIGtub3cgd2hvIG9yZGVyZWQgd2hhdCwgd2hlbiwgYW5kIHdoZXJlIGl0IHdhcyBzZW50IHRvLiIKCiJJLUkgZG9uJ3QgcmVtZW1iZXIuIgoKIlJlbWVtYmVyIGhhcmRlciwiIEkgc25hcHBlZCwgeWFua2luZyBvbiBoaXMgdGllLgoKIlVobSwgdWgsIGl0IHdhcyBhIHNpbHZlciBwb255ISBUaGF0J3MgaXQhIENhbWUgaW4gYXNraW5nIGFib3V0IHNpbHZlciBqZXdlbHJ5LCBuZWFybHkgY2xlYW5lZCBtZSBvdXQhIEkgZGlkbid0IGFzayBxdWVzdGlvbnMgYmVjYXVzZSBpdCB3YXMgdGhlIGJlc3QgZGVhbCBzbyBJIGRpZG4ndCBhc2sgd2h5IGhlIG5lZWRlZCBzbyBtdWNoLiBUb2xkIG1lIHRvIGhhdmUgaXQgc2VudCB0byB0aGUgd2F0ZXIgdHJlYXRtZW50IGZhY2lsaXR5LiIKCldhdGVyIHRyZWF0bWVudCBmYWNpbGl0eT8gVGhhdCBtdXN0IGJlIHdoZXJlIHRoZXkgYXJlIQoKSSBsZXQgZ28gb2YgaGlzIHRpZSwgc21vb3RoaW5nIGl0IG91dCBmb3IgaGltIGFuZCBnaXZpbmcgaGltIGEgY29uZGVzY2VuZGluZyBwYXQgb24gdGhlIGhlYWQuICJUaGFuayB5b3UuIEkgd2lsbCBiZSBzdXJlIHRvIHJlY29tbWVuZCB5b3UgdG8gbXkgY29sbGVhZ3Vlcy4iCgpIZSBsYXVnaGVkIG5lcnZvdXNseS4KCkFzIGZhc3QgYXMgSSBjb3VsZCBJIGRpYWxlZCAoaG93IGFyZSB3ZSBzdXBwb3NlZCB0byBldmVuIHVzZWQgdGhlc2UgdGhpbmdzPykgUHJpbmNlc3MgTHVuYS4gSSBkaWRuJ3QgZXZlbiBoYXZlIHRvIHdhaXQgZm9yIHRoZSBwaG9uZSB0byByaW5nIHdoZW4gc2hlIHBpY2tlZCB1cC4KCiJQcmluY2Vzcz8gSSBrbm93IHdoZXJlIHRoZXkgbWlnaHQgYmUuIgoKIldoYXQ/IEhvdyBkaWQgeW91IGZpbmQgb3V0PyIKCiJJdCBkb2Vzbid0IG1hdHRlciBob3cgSSBmb3VuZCBvdXQuIEkgbmVlZCB5b3UgdG8gc2VuZCBldmVyeXBvbnkgYXZhaWxhYmxlIHRvIHRoZSBDYW50ZXJsb3Qgd2F0ZXIgdHJlYXRtZW50IGZhY2lsaXR5LiIKCiJPY3RhdmlhLCBJIG9yZGVyIHlvdSwgZG8gbm90IGFwcHJvYWNoISIKCiJJIGNhbid0IHdhaXQsIFByaW5jZXNzLiBWaW55bCBtaWdodCBiZSB0aGVyZSwgYW5kIEkgdGhpbmsgc2hlJ3MgaW4gdHJvdWJsZS4iCgoiT0NUQVZJQSEiCgpJIGVuZGVkIHRoZSBjYWxsLgoKIlRheGkhIgoKQW55cG9ueSBjb3VsZCB0ZWxsIHlvdSB3aGF0IENhbnRlcmxvdCBsb29rZWQgbGlrZS4gQSBzaGluaW5nIHdoaXRlIGNhc3RsZSBvbiB0aGUgZWRnZSBvZiBhIG1vdW50YWluIHdpdGggYSB3YXRlcmZhbGwgcG91cmluZyBvdXQgdGhlIGJvdHRvbS4gU2VlIHRoZSB3YXRlcmZhbGw/IFRoYXQgd2FzIHdoZXJlIHRoZSB3YXRlciB0cmVhdG1lbnQgZmFjaWxpdHkgd2FzLiBPciBhdCBsZWFzdCwgdGhlIG1haW4gcGFydCBvZiBpdC4gVG8gZ2V0IHRoZXJlLCB5b3Ugd291bGQgbmVlZCB0byB0cmF2ZWwgdG8gdGhlIGluZHVzdHJpYWwgc2lkZSBvZiBDYW50ZXJsb3QsIHdoZXJlIHRoZXJlIHdlcmUgbm8gaXZvcnkgdG93ZXJzIHRvIGJlIGZvdW5kLiBPbmx5IG9sZCwgcnVuIGRvd24gYnVpbGRpbmdzIGFuZCBzdWNoLiBUaGUgd2F0ZXIgdHJlYXRtZW50IGZhY2lsaXR5IHdhcyBhIGxhcmdlIHdhcmVob3VzZSBidWlsZGluZyBzcGFubmluZyBhdCBsZWFzdCBhbiBlbnRpcmUgYmxvY2suIEV2ZW4gZnJvbSBoZXJlIEkgY291bGQgaGVhciB0aGUgd2F0ZXJmYWxsLgoKTm9wb255IGFyb3VuZC4gTm8gbW92ZW1lbnQgZnJvbSB0aGUgd2luZG93cywgdGhvdWdoIEkgZG91YnQgeW91IGNvdWxkIHNlZSBpbiBvciBvdXQgb2YgdGhlbSwgY29uc2lkZXJpbmcgaG93IGdyaW15IHRoZXkgd2VyZS4KClRoZSB0d28gZG91YmxlIGRvb3JzIHRoYXQgc2VydmVkIGFzIHRoZSBlbnRyYW5jZSB3ZXJlIG9wZW4gd2hlbiBJIHRyaWVkIHRvIG9wZW4gdGhlbS4gVGhleSB3ZXJlIG1vc3QgZGVmaW5pdGVseSBtZWFudCB0byBiZSBsb2NrZWQuIEluc2lkZSB3YXMgYSBtYXplIG9mIGNhdHdhbGtzLCBsYWRkZXJzLCBwbGF0Zm9ybXMsIGFsbCB0aGUgc2FtZSBjb2xvciwgYSBkdWxsLCBndW5tZXRhbCBncmF5LiBUaGUgc291bmQgb2YgdGhlIHJ1c2hpbmcgd2F0ZXJzIGdyZXcgbG91ZGVyLiBPbmUgc2xpcCBhbmQgSSdkIGJlIHRha2luZyBhIG9uZSB3YXkgdHJpcCBkb3duIHRoZSB3YXRlcmZhbGwuIFRoZSBmYWxsIHdvdWxkIHN1cmVseSBraWxsIG1lLiBJdCB3YXMgcG9vcmx5IGxpdCBhbmQgYSB0YWQgb24gdGhlIGNyZWVweSBzaWRlLgoKVGhleSBrbmV3IEkgd2FzIGhlcmUuIEkga25ldyB0aGV5IHdlcmUgd2F0Y2hpbmcgbWUuIFdoeSBhbGwgdGhlIHN1c3BlbnNlPyBUaGlzIHdhcyBhIHRyYXAuIEkga25ldyB0aGF0LgoKVGhlcmUgd2FzIGEgcGxhbiBzb21ld2hlcmUgaW4gdGhpcy4gRGVjb3ksIHllcy4gSSB3b3VsZCBtYWtlIGEgZ3JlYXQgZGVjb3kuIFRoZXknZCBkaXN0cmFjdCB0aGVtc2VsdmVzIHdpdGggdGhlIHBvb3IsIHBhdGhldGljIGdyYXkgRWFydGggcG9ueS4gSSdkIGZpbmQgVmlueWwuIEEgcmVzY3VlIHdvdWxkIGJlIGxhdW5jaGVkLiBHcmVhdCBwbGFuLCBPY3RhdmlhLgoKTHVuYSB3b3VsZCBvYnZpb3VzbHkgc2VuZCBiYWNrdXAuIEhlbHAgd2FzIGNvbWluZy4gVGhlIG9ubHkgcmVhc29uIGhlbHAgd2FzIGNvbWluZyB3YXMgYmVjYXVzZSBJJ2QgbWFkZSB0aGluZ3MgdXJnZW50LiBCZWNhdXNlIEkgZGlkbid0IGxpc3RlbiB0byBoZXIuIE5vdywgSSB3YXMgZm9yY2luZyBoZXIgaG9vZiB0byBtYWtlIGEgZGVjaXNpb24uIElmIEkgd2FzIHNtYXJ0IGFuZCBhY3R1YWxseSBsaXN0ZW5lZCB0byBMdW5hLCBzaGUnZCBzcGVuZCBhdCBsZWFzdCBhbm90aGVyIGRheSBiZWZvcmUgbGF1bmNoaW5nIGFuIGF0dGFjay4gU28gd2h5IHdhaXQ/IFdhaXRpbmcgY291bGQgY29zdCBWaW55bCBoZXIgbGlmZS4gQW5kIEkgd2Fzbid0IGdvaW5nIHRvIHJpc2sgdGhhdCwgZXZlbiBhdCB0aGUgcmlzayBvZiBteSBvd24gbGlmZS4KClRoZSB0aGluZ3MgSSBkbyBmb3IgbG92ZS4KCkJlZm9yZSBJIGNvdWxkIGdpdmUgbXlzZWxmIGEgcGF0IG9uIHRoZSBiYWNrLCBzb21ldGhpbmcgc2xhbW1lZCBpbnRvIHRoZSBiYWNrIG9mIG15IGhlYWQsIGtub2NraW5nIG1lIG91dCBjb2xkLgoKWWVzLiBBIGdyZWF0IHBsYW4uIEdlbml1cyBPY3RhdmlhIGFjdGl2YXRlZC4=
5f5f5f5f5f5f2f2f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f2f5f5f5f5f5f2f5f5f5f5f5f2f5b5f5f5d2f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f2f5f5f5f5f5f5f5f5f5f5f