시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 13 12 11 91.667%

문제

여기 암호화해서 전송하고싶은 데이터가 32bit unsigned int 8개 형태로 주어져있다.

N1 N2 N3 ... N8

우선 이 데이터가 올바른 데이터인지 확인해주는 checksum을 구해서 9번째 데이터로 추가해줬다. (checksum은 데이터의 무결성을 확인하는데 자주 사용되는 방식이다.)

N9 = sigma(Ni) mod 2^32

그다음 특정 32bit 키값 K를 이용해서 이 9개의 숫자를 암호화하려고 한다. 암호화는 XOR 연산을 통해 이루어진다고 보자. (XOR은 데이터의 암호화를 위해 자주 사용되는 연산자다.)

M1 = N1 ^K, M2 = N2 ^ K ... M9 = N9 ^ K

이렇게 해서 만들어진 M1 ~ M9 9개의 데이터를 전송하면 K값을 알고있는 사람은 원래 데이터 N1 ~ N8을 알아낼 수 있다. 그리고 K값을 모르는 사람은 원래 데이터 N1 ~ N8을 알아낼 수.....있다!

놀랍게도 위의 방식에는 취약점이 존재한다. 취약점을 발견해서 9개의 정수 M1 ~ M9 가 16진수 형태로 주어졌을 때, 키값 K를 구하는 프로그램을 작성해보자.

입력

입력의 첫째 줄에는 테스트데이터의 개수 T가 주어진다. T는 1000을 넘지 않는다.

그 다음 각 테스트데이터마다 9개의 정수 M1 ~ M9 가 16진수 형태로 주어진다. 16진수는 '0' ~ '9' 그리고 소문자로만 이루어져 있고, 불필요한 0은 들어오지 않는다. 9개의 숫자가 한 줄에 모두 입력되지 않을 수도 있다.

출력

각 테스트데이터마다 한줄에 하나씩 키값 K를 소문자 16진수 형태로 출력한다. 불필요한 0은 출력하지 않는다.

예제 입력 1

8
1 1 1 1 1 1 1 1 8
3 2 3 2 3 2 3 2 6
3 4 4 7 7 b a 2 2e
e1 13 ce 28 ca 6 ab 46 a6d
b08 49e2 6128 f27 8cf2 bc50 7380 7fe1 723b
4eba eb4 a352 fd14 6ac1 eed1 dd06 bb83 392bc
ef593c08 847e522f 74c02b9c 26f3a4e1 e2720a01 6fe66007
7a4e96ad 6ee5cef6 3853cd88
60202fb8 757d6d66 9c3a9525 fbcd7983 82b9571c ddc54bab 853e52da
22047c88 e5524401

예제 출력 1

0
2
6
1c6
4924afc7
ffff95c5
546991d
901c4a16

힌트

원문으로 볼 시 스포일러 주의

W3sicHJvYmxlbV9pZCI6IjM5MjUiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM1NTRcdWQ2MzhcdWQ2NTRcdWM3NTggXHVjZGU4XHVjNTdkXHVjODEwIFx1Y2MzZVx1YWUzMCIsImRlc2NyaXB0aW9uIjoiPHA+XHVjNWVjXHVhZTMwIFx1YzU1NFx1ZDYzOFx1ZDY1NFx1ZDU3NFx1YzExYyBcdWM4MDRcdWMxYTFcdWQ1NThcdWFjZTBcdWMyZjZcdWM3NDAgXHViMzcwXHVjNzc0XHVkMTMwXHVhYzAwIDMyYml0IHVuc2lnbmVkIGludCA4XHVhYzFjIFx1ZDYxNVx1ZDBkY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM4MzhcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPk4xIE4yIE4zIC4uLiBOODxcL3A+XHJcblxyXG48cD5cdWM2YjBcdWMxMjAgXHVjNzc0IFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YWMwMCBcdWM2MmNcdWJjMTRcdWI5NzggXHViMzcwXHVjNzc0XHVkMTMwXHVjNzc4XHVjOWMwIFx1ZDY1NVx1Yzc3OFx1ZDU3NFx1YzhmY1x1YjI5NCBjaGVja3N1bVx1Yzc0NCBcdWFkNmNcdWQ1NzRcdWMxMWMgOVx1YmM4OFx1YzlmOCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI4NWMgXHVjZDk0XHVhYzAwXHVkNTc0XHVjOTJjXHViMmU0LiAoY2hlY2tzdW1cdWM3NDAgXHViMzcwXHVjNzc0XHVkMTMwXHVjNzU4IFx1YmIzNFx1YWNiMFx1YzEzMVx1Yzc0NCBcdWQ2NTVcdWM3NzhcdWQ1NThcdWIyOTRcdWIzNzAgXHVjNzkwXHVjOGZjIFx1YzBhY1x1YzZhOVx1YjQxOFx1YjI5NCBcdWJjMjlcdWMyZGRcdWM3NzRcdWIyZTQuKTxcL3A+XHJcblxyXG48cD5OOSA9IHNpZ21hKE5pKSBtb2QgMl4zMjxcL3A+XHJcblxyXG48cD5cdWFkZjhcdWIyZTRcdWM3NGMgXHVkMmI5XHVjODE1IDMyYml0IFx1ZDBhNFx1YWMxMiBLXHViOTdjIFx1Yzc3NFx1YzZhOVx1ZDU3NFx1YzExYyBcdWM3NzQgOVx1YWMxY1x1Yzc1OCBcdWMyMmJcdWM3OTBcdWI5N2MgXHVjNTU0XHVkNjM4XHVkNjU0XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVjNTU0XHVkNjM4XHVkNjU0XHViMjk0IFhPUiBcdWM1ZjBcdWMwYjBcdWM3NDQgXHVkMWI1XHVkNTc0IFx1Yzc3NFx1YjhlOFx1YzViNFx1YzljNFx1YjJlNFx1YWNlMCBcdWJjZjRcdWM3OTAuIChYT1JcdWM3NDAgXHViMzcwXHVjNzc0XHVkMTMwXHVjNzU4IFx1YzU1NFx1ZDYzOFx1ZDY1NFx1Yjk3YyBcdWM3MDRcdWQ1NzQgXHVjNzkwXHVjOGZjIFx1YzBhY1x1YzZhOVx1YjQxOFx1YjI5NCBcdWM1ZjBcdWMwYjBcdWM3OTBcdWIyZTQuKTxcL3A+XHJcblxyXG48cD5NMSA9IE4xIF5LLCBNMiA9IE4yIF4gSyAuLi4gTTkgPSBOOSBeIEs8XC9wPlxyXG5cclxuPHA+XHVjNzc0XHViODA3XHVhYzhjIFx1ZDU3NFx1YzExYyBcdWI5Y2NcdWI0ZTRcdWM1YjRcdWM5YzQgTTEgfiBNOSA5XHVhYzFjXHVjNzU4IFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yjk3YyBcdWM4MDRcdWMxYTFcdWQ1NThcdWJhNzQgS1x1YWMxMlx1Yzc0NCBcdWM1NGNcdWFjZTBcdWM3ODhcdWIyOTQgXHVjMGFjXHViNzhjXHVjNzQwIFx1YzZkMFx1Yjc5OCBcdWIzNzBcdWM3NzRcdWQxMzAgTjEgfiBOOFx1Yzc0NCBcdWM1NGNcdWM1NDRcdWIwYmMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVhZGY4XHViOWFjXHVhY2UwIEtcdWFjMTJcdWM3NDQgXHViYWE4XHViOTc0XHViMjk0IFx1YzBhY1x1Yjc4Y1x1Yzc0MCBcdWM2ZDBcdWI3OTggXHViMzcwXHVjNzc0XHVkMTMwIE4xIH4gTjhcdWM3NDQgXHVjNTRjXHVjNTQ0XHViMGJjIFx1YzIxOC4uLi4uXHVjNzg4XHViMmU0ITxcL3A+XHJcblxyXG48cD5cdWIxODBcdWI3OGRcdWFjOGNcdWIzYzQgXHVjNzA0XHVjNzU4IFx1YmMyOVx1YzJkZFx1YzVkMFx1YjI5NCBcdWNkZThcdWM1N2RcdWM4MTBcdWM3NzQgXHVjODc0XHVjN2FjXHVkNTVjXHViMmU0LiBcdWNkZThcdWM1N2RcdWM4MTBcdWM3NDQgXHViYzFjXHVhY2FjXHVkNTc0XHVjMTFjIDlcdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4IE0xIH4gTTkgXHVhYzAwIDE2XHVjOWM0XHVjMjE4IFx1ZDYxNVx1ZDBkY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWQwYTRcdWFjMTIgS1x1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU3NFx1YmNmNFx1Yzc5MC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IFx1ZDE0Y1x1YzJhNFx1ZDJiOFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yzc1OCBcdWFjMWNcdWMyMTggVFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFRcdWIyOTQgMTAwMFx1Yzc0NCBcdWIxMThcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFkZjggXHViMmU0XHVjNzRjIFx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjhcdWIzNzBcdWM3NzRcdWQxMzBcdWI5YzhcdWIyZTQgOVx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMTggTTEgfiBNOSBcdWFjMDAgMTZcdWM5YzRcdWMyMTggXHVkNjE1XHVkMGRjXHViODVjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gMTZcdWM5YzRcdWMyMThcdWIyOTQgJiMzOTswJiMzOTsgfiAmIzM5OzkmIzM5OyBcdWFkZjhcdWI5YWNcdWFjZTAgXHVjMThjXHViYjM4XHVjNzkwXHViODVjXHViOWNjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWFjZTAsIFx1YmQ4OFx1ZDU0NFx1YzY5NFx1ZDU1YyAwXHVjNzQwIFx1YjRlNFx1YzViNFx1YzYyNFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuIDlcdWFjMWNcdWM3NTggXHVjMjJiXHVjNzkwXHVhYzAwIFx1ZDU1YyBcdWM5MDRcdWM1ZDAgXHViYWE4XHViNDUwIFx1Yzc4NVx1YjgyNVx1YjQxOFx1YzljMCBcdWM1NGFcdWM3NDQgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4XHViMzcwXHVjNzc0XHVkMTMwXHViOWM4XHViMmU0IFx1ZDU1Y1x1YzkwNFx1YzVkMCBcdWQ1NThcdWIwOThcdWM1MjkgXHVkMGE0XHVhYzEyIEtcdWI5N2MgXHVjMThjXHViYjM4XHVjNzkwIDE2XHVjOWM0XHVjMjE4IFx1ZDYxNVx1ZDBkY1x1Yjg1YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YmQ4OFx1ZDU0NFx1YzY5NFx1ZDU1YyAwXHVjNzQwIFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IjxwPlx1YzZkMFx1YmIzOFx1YzczY1x1Yjg1YyBcdWJjZmMgXHVjMmRjIFx1YzJhNFx1ZDNlY1x1Yzc3Y1x1YjdlYyBcdWM4ZmNcdWM3NTg8XC9wPlxyXG4iLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMzkyNSIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkxlYWt5IENyeXB0b2dyYXBoeSIsImRlc2NyaXB0aW9uIjoiPHA+VGhlIEFDTSBJQ1BDIGp1ZGdlcyBhcmUgdmVyeSBjYXJlZnVsIGFib3V0IG5vdCBsZWFraW5nIHRoZWlyIHByb2JsZW1zLCBhbmQgYWxsIGNvbW11bmljYXRpb25zIGFyZSBlbmNyeXB0ZWQuIEhvd2V2ZXIsIG9uZSBkb2VzIHNvbWV0aW1lcyBtYWtlIG1pc3Rha2VzLCBsaWtlIHVzaW5nIHRvbyB3ZWFrIGFuIGVuY3J5cHRpb24gc2NoZW1lLiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhhdC48XC9wPlxyXG5cclxuPHA+VGhlIGVuY3J5cHRpb24gY2hvc2VuIHdhcyB2ZXJ5IHNpbXBsZTogZW5jcnlwdCBlYWNoIGNodW5rIG9mIHRoZSBpbnB1dCBieSBmbGlwcGluZyBzb21lIGJpdHMgYWNjb3JkaW5nIHRvIGEgc2hhcmVkIGtleS4gVG8gcHJvdmlkZSByZWFzb25hYmxlIHNlY3VyaXR5LCB0aGUgc2l6ZSBvZiBib3RoIGNodW5rIGFuZCBrZXkgaXMgMzIgYml0cy48XC9wPlxyXG5cclxuPHA+VGhhdCBpcywgc3VwcG9zZSB0aGUgaW5wdXQgd2FzIGEgc2VxdWVuY2Ugb2YgXFwobVxcKSAzMi1iaXQgaW50ZWdlcnMuPFwvcD5cclxuXHJcbjxwPlxcW05fMSBOXzIgTl8zIFxcZG90cyBOX21cXF08XC9wPlxyXG5cclxuPHA+QWZ0ZXIgZW5jb2Rpbmcgd2l0aCB0aGUga2V5IFxcKEtcXCkgaXQgYmVjb21lcyB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIFxcKG1cXCkgMzItYml0IGludGVnZXJzLjxcL3A+XHJcblxyXG48cD5cXFsoTl8xIFxcd2VkZ2UgJm5ic3A7SykgKE5fMiBcXHdlZGdlICZuYnNwO0spIChOXzMgXFx3ZWRnZSAmbmJzcDtLKSBcXGRvdHMgKE5fbSBcXHdlZGdlICZuYnNwO0spXFxdPFwvcD5cclxuXHJcbjxwPndoZXJlIFxcKChhIFxcd2VkZ2UgYilcXCkgaXMgdGhlIGJpdHdpc2UgZXhjbHVzaXZlIG9yIG9mIGEgYW5kIGIuPFwvcD5cclxuXHJcbjxwPkV4Y2x1c2l2ZSBvciBpcyB0aGUgbG9naWNhbCBvcGVyYXRvciB3aGljaCBpcyAxIHdoZW4gb25seSBvbmUgb2YgaXRzIG9wZXJhbmRzIGlzIDEsIGFuZCAwIG90aGVyd2lzZS4gSGVyZSBpcyBpdHMgZGVmaW5pdGlvbiBmb3IgMS1iaXQgaW50ZWdlcnMuPFwvcD5cclxuXHJcbjxwPlxcWzAgXFxvcGx1cyAmbmJzcDswID0gMCB+fn4gMCBcXG9wbHVzICZuYnNwOyAxID0gMSAmbmJzcDsgXFxcXCAxIFxcb3BsdXMgJm5ic3A7IDAgPSAxIH5+fiAxIFxcb3BsdXMgJm5ic3A7IDEgPSAwXFxdPFwvcD5cclxuXHJcbjxwPkFzIHlvdSBjYW4gc2VlLCBpdCBpcyBpZGVudGljYWwgdG8gYWRkaXRpb24gbW9kdWxvIDIuIEZvciB0d28gMzItYml0IGludGVnZXJzIFxcKGFcXCkgYW5kIFxcKGJcXCksIHRoZWlyIGJpdHdpc2UgZXhjbHVzaXZlIG9yIFxcKGEgXFx3ZWRnZSBiXFwpIGlzIGRlZmluZWQgYXMgZm9sbG93cywgdXNpbmcgdGhlaXIgYmluYXJ5IHJlcHJlc2VudGF0aW9ucywgY29tcG9zZWQgb2YgMCZyc3F1bztzIGFuZCAxJnJzcXVvO3MuPFwvcD5cclxuXHJcbjxwPlxcW2EgXFx3ZWRnZSBiID0gYV97MzF9IFxcZG90cyBhXzFhXzAgXFx3ZWRnZSBiX3szMX0gXFxkb3RzIGJfMWJfMCA9IGNfezMxfSBcXGRvdHMgY18xY18wXFxdPFwvcD5cclxuXHJcbjxwPndoZXJlPFwvcD5cclxuXHJcbjxwPlxcW2NfaSA9IGFfaSBcXG9wbHVzIGJfaSAoaT0wLDEsXFxkb3RzMzEpXFxdPFwvcD5cclxuXHJcbjxwPkZvciBpbnN0YW5jZSwgdXNpbmcgYmluYXJ5IG5vdGF0aW9uLCAxMTAxMDExMCAmYW5kOyAwMTAxMDEwMSA9IDEwMTAwMDExLCBvciB1c2luZyBoZXhhZGVjaW1hbCwgZDYgJmFuZDsgNTUgPSBhMy48XC9wPlxyXG5cclxuPHA+U2luY2UgdGhpcyBraW5kIG9mIGVuY3J5cHRpb24gaXMgbm90b3Jpb3VzbHkgd2VhayB0byBzdGF0aXN0aWNhbCBhdHRhY2tzLCB0aGUgbWVzc2FnZSBoYXMgdG8gYmUgY29tcHJlc3NlZCBpbiBhZHZhbmNlLCBzbyB0aGF0IGl0IGhhcyBubyBzdGF0aXN0aWNhbCByZWd1bGFyaXR5LiBXZSBzdXBwb3NlIHRoYXQgXFwoTl8xIE5fMiBcXGRvdHMgTl9tXFwpIGlzIGFscmVhZHkgaW4gY29tcHJlc3NlZCBmb3JtLjxcL3A+XHJcblxyXG48cD5Ib3dldmVyLCB0aGUgdHJvdWJsZSBpcyB0aGF0IHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gaXRzZWxmIGludHJvZHVjZXMgc29tZSBmb3JtIG9mIHJlZ3VsYXJpdHk6IGFmdGVyIGV2ZXJ5IDggaW50ZWdlcnMgb2YgY29tcHJlc3NlZCBkYXRhLCBpdCBpbnNlcnRzIGEgY2hlY2tzdW0sIHRoZSBzdW0gb2YgdGhlc2UgaW50ZWdlcnMuIFRoYXQgaXMsIGluIHRoZSBhYm92ZSBpbnB1dCwgXFwoTl85ID0gXFxzdW1fe2k9MX1eezh9e05faX0gPSBOXzEgKyBcXGNkb3RzICsgTl84XFwpICwgd2hlcmUgYWRkaXRpb25zIGFyZSBtb2R1bG8gMjxzdXA+MzI8XC9zdXA+LjxcL3A+XHJcblxyXG48cD5MdWNraWx5LCB5b3UgY291bGQgaW50ZXJjZXB0IGEgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBqdWRnZXMuIE1heWJlIGl0IGNvbnRhaW5zIGEgcHJvYmxlbSBmb3IgdGhlIGZpbmFscyE8XC9wPlxyXG5cclxuPHA+QXMgeW91IGFyZSB2ZXJ5IGNsZXZlciwgeW91IGhhdmUgY2VydGFpbmx5IHNlZW4gdGhhdCB5b3UgY2FuIGVhc2lseSBmaW5kIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBrZXksIGRlbm90ZWQgYnkgXFwoS18wXFwpLiBPbiB0aGUgb25lIGhhbmQsIGlmIFxcKEtfMFxcKSA9IDEsIHRoZW4gYWZ0ZXIgZW5jb2RpbmcsIHRoZSBsb3dlc3QgYml0IG9mIFxcKFxcc3VtX3tpPTF9Xns4fXsgTl9pIFxcd2VkZ2UgS31cXCkgaXMgdW5jaGFuZ2VkLCBhcyBcXChLXzBcXCkgaXMgYWRkZWQgYW4gZXZlbiBudW1iZXIgb2YgdGltZXMsIGJ1dCB0aGUgbG93ZXN0IGJpdCBvZiBcXChOXzkgXFx3ZWRnZSBLXFwpIGlzIGNoYW5nZWQsIHNvIHRoZXkgc2hhbGwgZGlmZmVyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgXFwoS18wXFwpID0gMCwgdGhlbiBhZnRlciBlbmNvZGluZywgdGhlIGxvd2VzdCBiaXQgb2YgXFwoXFxzdW1fe2k9MX1eezh9e05faSBcXHdlZGdlIEt9IFxcKSBzaGFsbCBzdGlsbCBiZSBpZGVudGljYWwgdG8gdGhlIGxvd2VzdCBiaXQgb2YgXFwoTl85IFxcd2VkZ2UgS1xcKSwgYXMgdGhleSBkbyBub3QgY2hhbmdlLiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBsb3dlc3QgYml0cyBhZnRlciBlbmNvZGluZyBhcmUgMSAxIDEgMSAxIDEgMSAxIDEgdGhlbiBcXChLXzBcXCkgbXVzdCBiZSAxLCBidXQgaWYgdGhleSBhcmUgMSAxIDEgMSAxIDEgMSAwIDEgdGhlbiBcXChLXzBcXCkgbXVzdCBiZSAwLjxcL3A+XHJcblxyXG48cD5TbyBmYXIsIHNvIGdvb2QuIENhbiB5b3UgZG8gYmV0dGVyPzxcL3A+XHJcblxyXG48cD5Zb3Ugc2hvdWxkIGZpbmQgdGhlIGtleSB1c2VkIGZvciBlbmNvZGluZy48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBpbnB1dCBzdGFydHMgd2l0aCBhIGxpbmUgY29udGFpbmluZyBvbmx5IGEgcG9zaXRpdmUgaW50ZWdlciBTLCBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZGF0YXNldHMgaW4gdGhlIGlucHV0LiBTIGlzIG5vIG1vcmUgdGhhbiAxMDAwLjxcL3A+XHJcblxyXG48cD5JdCBpcyBmb2xsb3dlZCBieSBTIGRhdGFzZXRzLiBFYWNoIGRhdGFzZXQgaXMgY29tcG9zZWQgb2YgbmluZSAzMi1iaXQgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgbmluZSBjaHVua3Mgb2YgYSBjb21tdW5pY2F0aW9uLiBUaGV5IGFyZSB3cml0dGVuIGluIGhleGFkZWNpbWFsIG5vdGF0aW9uLCB1c2luZyBkaWdpdHMgJmxzcXVvOzAmcnNxdW87IHRvICZsc3F1bzs5JnJzcXVvOyBhbmQgbG93ZXJjYXNlIGxldHRlcnMgJmxzcXVvO2EmcnNxdW87IHRvICZsc3F1bztmJnJzcXVvOywgYW5kIHdpdGggbm8gbGVhZGluZyB6ZXJvcy4gVGhleSBhcmUgc2VwYXJhdGVkIGJ5IGEgc3BhY2Ugb3IgYSBuZXdsaW5lLiBFYWNoIGRhdGFzZXQgaXMgZW5kZWQgYnkgYSBuZXdsaW5lLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGRhdGFzZXQgeW91IHNob3VsZCBvdXRwdXQgdGhlIGtleSB1c2VkIGZvciBlbmNvZGluZy4gRWFjaCBrZXkgc2hhbGwgYXBwZWFyIGFsb25lIG9uIGl0cyBsaW5lLCBhbmQgYmUgd3JpdHRlbiBpbiBoZXhhZGVjaW1hbCBub3RhdGlvbiwgdXNpbmcgZGlnaXRzICZsc3F1bzswJnJzcXVvOyB0byAmbHNxdW87OSZyc3F1bzsgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzICZsc3F1bzthJnJzcXVvOyB0byAmbHNxdW87ZiZyc3F1bzssIGFuZCB3aXRoIG5vIGxlYWRpbmcgemVyb3MuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=