VGhpcyBlbWFpbCBpcyBiZWluZyBzZW50IHRvIHlvdSBmcm9tIHRoZSB3ZWJzaXRlIG5vdGlmaWNh dGlvbiBzZXJ2aWNlIGF0IFRyaXBvZC4NCg0KWW91IGNhbiBzZWUgbXkgbmV3IHNpdGUgaGVyZTog aHR0cDovL2RlYm5lc3MwLnRyaXBvZC5jb20vDQoNCkxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5r IQ0KCgpCdWlsZCB5b3VyIG93biB3ZWIgc2l0ZSBhdCB3d3cudHJpcG9kLmNvbS4K