CgoKCQoJCgkKCQoKCkRvIHlvdSBoYXZlIHRoZSBmZXJ2b3IgZm9yIHdyaXRpbmc / IERvIHlvdSB3YW50IHRvIGdldCBwYWlkIGZvciBkb2luZyBzb21ldGhpbmcgdGhhdCB5b3UgbG92ZSB0byBkbz8gWW91ciBwYXNzaW9uIGZvciB3cml0aW5nIGNhbiBhY3R1YWxseSBiZSB1c2VkIHRvIHlvdXIgYWR2YW50YWdlIGluIHRoZSBzby1jYWxsZWQgYXJ0aWNsZSBtYXJrZXRpbmcgc3RyYXRlZ3kgaW4gYWR2ZXJ0aXNpbmcgeW91ciBidXNpbmVzcy4KCkNob29zZSBhbiBpbnRlcmVzdGluZyB0b3BpYyB0aGF0IGlzIHJlbGF0ZWQgdG8geW91ciByZXNwZWN0aXZlIGJ1c2luZXNzLCByZXNlYXJjaCBhYm91dCBpdCBhbmQgd3JpdGUgYSByZXNvdXJjZWZ1bCBhcnRpY2xlIGFib3V0IHlvdXIgcmVzZWFyY2hlZCB0b3BpYy4gRm9jdXMgb24gcG9wdWxhciBzdWJqZWN0cyB0aGF0IHlvdSB2ZXJ5IHdlbGwga25vdyBwZW9wbGUgd2lsbCBiZSBsb29raW5nIGZvciBpbiB0aGUgSW50ZXJuZXQuIEFuZCwgaW5jbHVkZSBoaWdobHkgcmFua2VkIGtleXdvcmRzIGFuZCBNZXRhIHRhZ3MgdGhhdCB3aWxsIGluY3JlYXNlIHRoZSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgeW91ciBhcnRpY2xlIChhcyB3ZWxsIGFzIHlvdXIgd2Vic2l0ZSkgaW5jbHVkZWQgaW4gdGhlIHRvcCBsaXN0IG9mIHNlYXJjaCBlbmdpbmUgcmVzdWx0cy4KCgoKRnVydGhlcm1vcmUsIGhlcmUgYXJlIHNvbWUgbW9yZSBzcGVjaWZpYyBzZWNyZXRzIHRoYXQgd2lsbCBoZWxw IHlvdSBtYXhpbWl6ZSB5b3VyIHdyaXRpbmcgc2tpbGwgaW4gYnJpbmdpbmcgZ29vZCBmb3J0dW5lIGFuZCBwcm9maXQgdG8geW91IGFuZCB5b3VyIGJ1c2luZXNzLgoKMS4gV3JpdGUgdG8gb25seSBvbmUgcGVyc29uLgoKWW91ciBhcnRpY2xlIHNob3VsZCBkZWZpbml0ZWx5IHRhcmdldCBhIHByZXR0eSBsYXJnZSBudW1iZXIgb2YgcmVhZGVycy4gSG93ZXZlciwgd2hlbiB5b3UgYXJlIHdyaXRpbmcgeW91ciBhcnRpY2xlLCB0cnkgdG8gcGljdHVyZSBvbmx5IG9uZSBwZXJzb24gd2hvbSB5b3Ugd2lsbCBhZGRyZXNzIHlvdXIgYXJ0aWNsZSB0by4gVGhpcyBtYWtlcyB5b3VyIGFydGljbGUgbW9yZSBhbWlhYmxlLCB0aGVyZWJ5IGtlZXBpbmcgdGhlIGF0dGVudGlvbiBhbmQgaW50ZXJlc3Qgb2YgeW91ciByZWFkZXJzLgoKMi4gTWFrZSB1c2Ugb2Ygd2hpdGUgc3BhY2VzLgoKV2hpdGUgc3BhY2VzIGluIGFuIGFydGljbGUgY2FuIGFjdHVhbGx5IGJlIGJlbmVmaWNpYWwgYnkgbWFraW5nIHlvdXIgd29yayBhcHBlYXIgbW9yZSBwcm9mZXNzaW9uYWwgYW5kIGEgbG90IGVhc2llciB0byByZWFkLgoKVG9vIGxlbmd0aHkgcGFyYWdyYXBocyBtYXkgc2VlbSBib3JpbmcgYW5kIHVuaW50ZXJlc3RpbmcsIGVzcGVjaWFsbHkgZm9yIHNraW0gcmVhZGVycy4KCjMuIFByb29mcmVhZCB5b3VyIGFydGljbGVzLgoKQ2hlY2sgeW91ciBhcnRpY2xlcyBmb3IgYW55IG1pc3NwZWxsZWQgd29yZHMgYW5kIG90aGVyIGdyYW1tYXRpY2Fs IGVycm9ycy4KCkdvIG92ZXIgYW5kIHJlYWQgb3V0IGxvdWQgeW91ciBhcnRpY2xlIGF0IGxlYXN0IHR3aWNlIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGZyZWUgb2YgYW55IGluYXBwcm9wcmlhdGVseSB1c2VkIHdvcmRzIG9yIHN5bnRheC4KCjQuIE1ha2UgdGhlIG1vc3Qgb2YgY29uc3RydWN0aXZlIGNyaXRpY2lzbXMuCgpBc2sgd2hhdCBvdGhlcnMgaGF2ZSB0byBob25lc3RseSBzYXkgb3IgY29tbWVudCBhYm91dCB5b3VyIGFydGljbGVzLCBhY2NlcHRpbmcgdGhlaXIgZmVlZGJhY2tzLCBhbmQgdXNpbmcgdGhlbSBjb25zdHJ1Y3RpdmVseSBjYW4gaGVscCB5b3UgYmVjb21lIGEgYmV0dGVyIHdyaXRlci4KCkNvbnRpbnVlIHRvIGRvIHdlbGwgb24gYXJlYXMgd2hlcmUgeW91IGhhdmUgcmVjZWl2ZWQgY29tcGxpbWVudHMgYW5kIGltcHJvdmUgb24geW91ciB3ZWFrIHBvaW50cy4gQW5kIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3IgeW91IHRvIGNoYW5nZSB5b3VyIHdyaXRpbmcgc3R5bGUsIGRvIG5vdCBiZSBhZnJhaWQgdG8gc28uCgpFdmVuIHRoZSBtb3N0IG5lZ2F0aXZlIGNyaXRpY2lzbXMgb3IgZmVlZGJhY2tzIGNhbiBiZSBiZW5lZmljaWFsIHRvIHlvdSBpZiB5b3Ugc2VlIHRoZW0gaW4gYSBjb25zdHJ1Y3RpdmUgd2F5LgoKNS4gVHJ5IHdyaXRpbmcgYWJvdXQgZGlmZmVyZW50IHRoaW5ncy4KClRoZXJlIG1heSBiZSB0aW1lcyB0aGF0IHlvdSBmZWVsIGxpa2UgeW91IGNhbiBvbmx5IHdyaXRlIGFydGljbGVzIGFi b3V0IGEgY2VydGFpbiB0b3BpYy4gVGhpcyBpcyBqdXN0IG5vcm1hbC4KCkhvd2V2ZXIsIHRoaXMgbXVzdCBub3QgaGluZGVyIHlvdSBmcm9tIHRyeWluZyBvdGhlciB3cml0aW5nIHN0eWxlcyBhbmQgdGFja2xpbmcgYWJvdXQgZGlmZmVyZW50IHN1YmplY3RzIHRoYXQgbWF5IGJlIGVudGlyZWx5IG5ldyB0byB5b3UuIERvaW5nIHNvIHdpbGwgaGVscCBkZXZlbG9wIHlvdXIgd3JpdGluZyBza2lsbHMuCgo2LiBOZXZlciBmb3JnZXQgeW91ciByZXNvdXJjZSBib3guCgpZb3UgbWF5IHN1Ym1pdCB5b3VyIGFydGljbGVzIGluIHlvdXIgYWZmaWxpYXRlIGFydGljbGUgZGlyZWN0b3JpZXMsIGV6aW5lcywgYW5kIG90aGVyIG9ubGluZSBwdWJsaXNoZXJzLiBJbiB0aGVzZSBjYXNlcywgeW91IG11c3QgYWx3YXlzIGluY2x1ZGUgYSByZXNvdXJjZSBib3ggaW4geW91ciBhcnRpY2xlcywgd2hpY2ggbXVzdCBjb250YWluIHlvdXIgc2l0ZRlzIFVSTCBhZGRyZXNzLgoKVGhpcyBsaW5rIHdpbGwgaGVscCByZWRpcmVjdCB5b3VyIGFmZmlsaWF0ZXM / IHN1YnNjcmliZXJzIGFuZCBndWVzdHMgdG8geW91ciBidXNpbmVzcyBzaXRlLCBhbmQgaG9wZWZ1bGx5IG1ha2UgdGhlbSBpbnRlcmVzdGVkIGVub3VnaCB0byBidXkgdGhlIHByb2R1Y3RzIG9yIHNlcnZpY2VzIHRoYXQgeW91IGFyZSBvZmZlcmluZy4KCkFydGljbGVzIGFyZSBlZmZlY3RpdmUgYW5kIGNvbnZlbmllbnQgbWFya2V0aW5nIHRvb2xzIGluIHRoZSBDeWJlciB3b3Js ZCB0b2RheS4gQW5kIHlvdSBzaG91bGQgbm90IGJlIGFmcmFpZCB0byB1c2UgeW91ciB3cml0aW5nIHNraWxscyBpYXJuaW5nIGFuZpdmjmdmjmdmjmjmjjmjjmjdjjmd