시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB79181732.075%

문제

팩스 머신은 run-length encoding(RLE)을 이용해 데이터를 압축한다. 데이터는 같은 값이 연속적으로 많이 나타나는 수열이라 할 수 있다. 이러한 연속적인 같은 값을 run이라 한다. 그래서 RLE는 그 수열을 그대로 저장하는 대신 하나의 데이터 값과 그 값의 개수로 데이터를 표현한다. 이 인코딩 방식은 아이콘이나 텍스트, 선 등의 비교적 간단한 그래픽 이미지 같은 런이 많은 데이터에서 유용하다. 만약 사진과 같이 런이 적은 파일에 적용한다면 오히려 원래 파일 사이즈보다 커질 가능성도 있다. 

한 블록의 데이터를 RLE 알고리즘을 사용해 인코딩하려고 한다. 하나의 런은 2바이트 수열을 사용해 표현한다. 첫 번째 바이트는 하나의 값이 반복된 횟수이고, 두 번째 바이트는 그 값을 나타낸다. 반복 횟수는 최상위 비트가 1이고 나머지 7비트는 반복 횟수 - 3인 8비트 수로 표현된다. 따라서 데이터에서 같은 값은 수열의 2바이트 당 최대130번 나타날 수 있다. 또한 런의 최소 수는 3이다. 런이 아닌 바이트들은 prefix 바이트로 인코딩되는데, 이 바이트는 런이 아닌 바이트의 개수 - 1을 나타내며, 최상위 비트는 항상 0이다. 따라서 prefix 바이트의 범위는 0 ~ 127로, 1부터 128까지의 수를 표현한다.

만약 런이 130바이트보다 크다면 여러 개의 2바이트 수열로 표현한다. 이 경우 수열의 첫 번째는 항상 크기가 130인 런이다. 3회 이상 반복된 값은 반드시 런으로 인코딩되어야 한다. 만약 런이 아닌 값이 128바이트보다 길다면 prefix 바이트를 여러 개 사용해 표현한다. 예를 들어, 길이가 262인 런은 크기가 130인 런 두 개와 크기가 2인 prefix 바이트로 인코딩한다.

입력

입력의 첫 줄에 데이터 셋의 수인 정수 P(1 ≤ P ≤ 1000)가 주어진다.

각 데이터 셋의 첫 줄에는 바이트의 수 B(1 ≤ B ≤ 5000)가 십진수 정수로 주어진다.

다음 줄 부터 인코딩 할 데이터가 주어진다. 데이터의 마지막 줄을 제외한 나머지 줄에는 16진수가 80자리 주어지며, 마지막 줄은 80자리보다 적을 수 있다. 두 16진수 자리가 한 바이트를 표현한다. 16진수 자리는 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F로 이뤄져 있다.

출력

각각의 데이터 셋에 대해 첫 줄에는 인코딩 된 바이트의 수를 출력한다. 나머지 줄에는 인코딩 된 데이터를 16진수로 출력한다. 각 줄은 마지막 줄을 제외하고 16진수 80자리를 출력한다. 마지막 줄은 80자리 이하이다.

예제 입력 1

4
1
07
5
F4A5A5A5A5
44
0000000000000000FFFFFF66665A5A5A5A5A71727374758008011011135555555555555501020399
777777CC
40
68686868686868686868686868686868686868686868686868686868686868686868686868686868

예제 출력 1

2
0007
4
00F481A5
32
850080FF016666825A0A717273747580080110111384550301020399807700CC
2
A568
W3sicHJvYmxlbV9pZCI6IjI2ODYiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQzMjlcdWMyYTQiLCJkZXNjcmlwdGlvbiI6IjxwPlx1ZDMyOVx1YzJhNCBcdWJhMzhcdWMyZTBcdWM3NDAgcnVuLWxlbmd0aCBlbmNvZGluZyhSTEUpXHVjNzQ0IFx1Yzc3NFx1YzZhOVx1ZDU3NCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MmbmJzcDtcdWM1NTVcdWNkOTVcdWQ1NWNcdWIyZTQuIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YjI5NCBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzc0IFx1YzVmMFx1YzE4ZFx1YzgwMVx1YzczY1x1Yjg1YyBcdWI5Y2VcdWM3NzQgXHViMDk4XHVkMGMwXHViMDk4XHViMjk0IFx1YzIxOFx1YzVmNFx1Yzc3NFx1Yjc3YyBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNzc0XHViN2VjXHVkNTVjIFx1YzVmMFx1YzE4ZFx1YzgwMVx1Yzc3OCBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzQ0IHJ1blx1Yzc3NFx1Yjc3YyBcdWQ1NWNcdWIyZTQuJm5ic3A7XHVhZGY4XHViNzk4XHVjMTFjJm5ic3A7UkxFXHViMjk0IFx1YWRmOCBcdWMyMThcdWM1ZjRcdWM3NDQgXHVhZGY4XHViMzAwXHViODVjIFx1YzgwMFx1YzdhNVx1ZDU1OFx1YjI5NCBcdWIzMDBcdWMyZTAmbmJzcDtcdWQ1NThcdWIwOThcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YWMxMlx1YWNmYyBcdWFkZjggXHVhYzEyXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjg1YyBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LiBcdWM3NzQgXHVjNzc4XHVjZjU0XHViNTI5IFx1YmMyOVx1YzJkZFx1Yzc0MCBcdWM1NDRcdWM3NzRcdWNmNThcdWM3NzRcdWIwOTggXHVkMTRkXHVjMmE0XHVkMmI4LCBcdWMxMjAgXHViNGYxXHVjNzU4IFx1YmU0NFx1YWQ1MFx1YzgwMSBcdWFjMDRcdWIyZThcdWQ1NWMgXHVhZGY4XHViNzk4XHVkNTNkIFx1Yzc3NFx1YmJmOFx1YzljMCBcdWFjMTlcdWM3NDAmbmJzcDtcdWI3ZjBcdWM3NzQgXHViOWNlXHVjNzQwIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YzVkMFx1YzExYyBcdWM3MjBcdWM2YTlcdWQ1NThcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWMwYWNcdWM5YzRcdWFjZmMgXHVhYzE5XHVjNzc0Jm5ic3A7XHViN2YwXHVjNzc0IFx1YzgwMVx1Yzc0MCBcdWQzMGNcdWM3N2NcdWM1ZDAgXHVjODAxXHVjNmE5XHVkNTVjXHViMmU0XHViYTc0IFx1YzYyNFx1ZDc4OFx1YjgyNCBcdWM2ZDBcdWI3OTggXHVkMzBjXHVjNzdjIFx1YzBhY1x1Yzc3NFx1Yzk4OFx1YmNmNFx1YjJlNCBcdWNlZTRcdWM5YzggXHVhYzAwXHViMmE1XHVjMTMxXHViM2M0IFx1Yzc4OFx1YjJlNC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+XHVkNTVjIFx1YmUxNFx1Yjg1ZFx1Yzc1OCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgUkxFIFx1YzU0Y1x1YWNlMFx1YjlhY1x1Yzk5OFx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NzQgXHVjNzc4XHVjZjU0XHViNTI5XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVkNTU4XHViMDk4XHVjNzU4IFx1YjdmMFx1Yzc0MCAyXHViYzE0XHVjNzc0XHVkMmI4IFx1YzIxOFx1YzVmNFx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NzQgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LiBcdWNjYWIgXHViYzg4XHVjOWY4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YjI5NCBcdWQ1NThcdWIwOThcdWM3NTggXHVhYzEyXHVjNzc0IFx1YmMxOFx1YmNmNVx1YjQxYyBcdWQ2OWZcdWMyMThcdWM3NzRcdWFjZTAsIFx1YjQ1MCBcdWJjODhcdWM5ZjggXHViYzE0XHVjNzc0XHVkMmI4XHViMjk0IFx1YWRmOCBcdWFjMTJcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWJjMThcdWJjZjUgXHVkNjlmXHVjMjE4XHViMjk0IFx1Y2Q1Y1x1YzBjMVx1YzcwNCBcdWJlNDRcdWQyYjhcdWFjMDAgMVx1Yzc3NFx1YWNlMCBcdWIwOThcdWJhMzhcdWM5YzAgN1x1YmU0NFx1ZDJiOFx1YjI5NCBcdWJjMThcdWJjZjUgXHVkNjlmXHVjMjE4IC0gM1x1Yzc3OCZuYnNwOzhcdWJlNDRcdWQyYjggXHVjMjE4XHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxY1x1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YzVkMFx1YzExYyBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzQwJm5ic3A7XHVjMjE4XHVjNWY0XHVjNzU4IDJcdWJjMTRcdWM3NzRcdWQyYjggXHViMmY5IFx1Y2Q1Y1x1YjMwMDEzMFx1YmM4OCBcdWIwOThcdWQwYzBcdWIwYTAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHViNjEwXHVkNTVjIFx1YjdmMFx1Yzc1OCBcdWNkNWNcdWMxOGMgXHVjMjE4XHViMjk0IDNcdWM3NzRcdWIyZTQuIFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHViYzE0XHVjNzc0XHVkMmI4XHViNGU0XHVjNzQwIHByZWZpeCBcdWJjMTRcdWM3NzRcdWQyYjhcdWI4NWMgXHVjNzc4XHVjZjU0XHViNTI5XHViNDE4XHViMjk0XHViMzcwLCBcdWM3NzQgXHViYzE0XHVjNzc0XHVkMmI4XHViMjk0IFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHViYzE0XHVjNzc0XHVkMmI4XHVjNzU4IFx1YWMxY1x1YzIxOCAtIDFcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI0XHViYTcwLCBcdWNkNWNcdWMwYzFcdWM3MDQgXHViZTQ0XHVkMmI4XHViMjk0IFx1ZDU2ZFx1YzBjMSAwXHVjNzc0XHViMmU0LiBcdWI1MzBcdWI3N2NcdWMxMWMgcHJlZml4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWJjOTRcdWM3MDRcdWIyOTQgMCB+IDEyN1x1Yjg1YywmbmJzcDsxXHViZDgwXHVkMTMwIDEyOFx1YWU0Y1x1YzljMFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWI5Y2NcdWM1N2QgXHViN2YwXHVjNzc0IDEzMFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YmNmNFx1YjJlNCBcdWQwNmNcdWIyZTRcdWJhNzQgXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCAyXHViYzE0XHVjNzc0XHVkMmI4IFx1YzIxOFx1YzVmNFx1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWQ1NWNcdWIyZTQuIFx1Yzc3NCBcdWFjYmRcdWM2YjAgXHVjMjE4XHVjNWY0XHVjNzU4IFx1Y2NhYiBcdWJjODhcdWM5ZjhcdWIyOTQgXHVkNTZkXHVjMGMxIFx1ZDA2Y1x1YWUzMFx1YWMwMCAxMzBcdWM3NzggXHViN2YwXHVjNzc0XHViMmU0LiAzXHVkNjhjIFx1Yzc3NFx1YzBjMSBcdWJjMThcdWJjZjVcdWI0MWMgXHVhYzEyXHVjNzQwIFx1YmMxOFx1YjRkY1x1YzJkYyBcdWI3ZjBcdWM3M2NcdWI4NWMgXHVjNzc4XHVjZjU0XHViNTI5XHViNDE4XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkIFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHVhYzEyXHVjNzc0IDEyOFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YmNmNFx1YjJlNCBcdWFlMzhcdWIyZTRcdWJhNzQgcHJlZml4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yjk3YyBcdWM1ZWNcdWI3ZWMgXHVhYzFjIFx1YzBhY1x1YzZhOVx1ZDU3NCBcdWQ0NWNcdWQ2MDRcdWQ1NWNcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIFx1YWUzOFx1Yzc3NFx1YWMwMCAyNjJcdWM3NzggXHViN2YwXHVjNzQwIFx1ZDA2Y1x1YWUzMFx1YWMwMCZuYnNwOzEzMFx1Yzc3OCBcdWI3ZjAgXHViNDUwIFx1YWMxY1x1YzY0MCBcdWQwNmNcdWFlMzBcdWFjMDAgMlx1Yzc3OCBwcmVmaXggXHViYzE0XHVjNzc0XHVkMmI4XHViODVjIFx1Yzc3OFx1Y2Y1NFx1YjUyOVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwIFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWMxNGJcdWM3NTggXHVjMjE4XHVjNzc4IFx1YzgxNVx1YzIxOCBQKDEgJmxlOyBQICZsZTsgMTAwMClcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzE0Ylx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwXHViMjk0IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWMyMTgmbmJzcDtCKDEgJmxlOyBCICZsZTsgNTAwMClcdWFjMDAgXHVjMmVkXHVjOWM0XHVjMjE4IFx1YzgxNVx1YzIxOFx1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0YyBcdWM5MDQgXHViZDgwXHVkMTMwJm5ic3A7XHVjNzc4XHVjZjU0XHViNTI5IFx1ZDU2MCZuYnNwO1x1YjM3MFx1Yzc3NFx1ZDEzMFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yzc1OCBcdWI5YzhcdWM5YzBcdWI5YzkgXHVjOTA0XHVjNzQ0IFx1YzgxY1x1YzY3OFx1ZDU1YyBcdWIwOThcdWJhMzhcdWM5YzAgXHVjOTA0XHVjNWQwXHViMjk0IDE2XHVjOWM0XHVjMjE4XHVhYzAwIDgwXHVjNzkwXHViOWFjIFx1YzhmY1x1YzViNFx1YzljMFx1YmE3MCwgXHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1Yzc0MCA4MFx1Yzc5MFx1YjlhY1x1YmNmNFx1YjJlNCBcdWM4MDFcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHViNDUwIDE2XHVjOWM0XHVjMjE4IFx1Yzc5MFx1YjlhY1x1YWMwMCBcdWQ1NWMgXHViYzE0XHVjNzc0XHVkMmI4XHViOTdjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1Y1x1YjJlNC4gMTZcdWM5YzRcdWMyMTggXHVjNzkwXHViOWFjXHViMjk0IDAsMSwyLDMsNCw1LDYsNyw4LDksQSxCLEMsRCxFLEZcdWI4NWMgXHVjNzc0XHViOTA0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDFcdWFjMDFcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YzE0Ylx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVjY2FiIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM3NzhcdWNmNTRcdWI1MjkgXHViNDFjIFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWIwOThcdWJhMzhcdWM5YzAgXHVjOTA0XHVjNWQwXHViMjk0IFx1Yzc3OFx1Y2Y1NFx1YjUyOSBcdWI0MWMgXHViMzcwXHVjNzc0XHVkMTMwXHViOTdjIDE2XHVjOWM0XHVjMjE4XHViODVjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVhYzAxIFx1YzkwNFx1Yzc0MCBcdWI5YzhcdWM5YzBcdWI5YzkgXHVjOTA0XHVjNzQ0IFx1YzgxY1x1YzY3OFx1ZDU1OFx1YWNlMCZuYnNwOzE2XHVjOWM0XHVjMjE4IDgwXHVjNzkwXHViOWFjXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1Yzc0MCA4MFx1Yzc5MFx1YjlhYyBcdWM3NzRcdWQ1NThcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiMjY4NiIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6Ikp1c3QgVGhlIFNpbXBsZSBGYXgiLCJkZXNjcmlwdGlvbiI6IjxwPkZheCBtYWNoaW5lcyB1c2UgYSBmb3JtIG9mIGNvbXByZXNzaW9uIGJhc2VkIG9uIHJ1bi1sZW5ndGggZW5jb2RpbmcuIFJ1bi1sZW5ndGggZW5jb2RpbmcgKFJMRSkgaXMgYSB2ZXJ5IHNpbXBsZSBmb3JtIG9mIGRhdGEgY29tcHJlc3Npb24gaW4gd2hpY2ggcnVucyBvZiBkYXRhICh0aGF0IGlzLCBzZXF1ZW5jZXMgaW4gd2hpY2ggdGhlIHNhbWUgZGF0YSB2YWx1ZSBvY2N1cnMgaW4gbWFueSBjb25zZWN1dGl2ZSBkYXRhIGVsZW1lbnRzKSBhcmUgc3RvcmVkIGFzIGEgc2luZ2xlIGRhdGEgdmFsdWUgYW5kIGNvdW50LCByYXRoZXIgdGhhbiBhcyB0aGUgb3JpZ2luYWwgcnVuLiBUaGlzIGlzIG1vc3QgdXNlZnVsIG9uIGRhdGEgdGhhdCBjb250YWlucyBtYW55IHN1Y2ggcnVuczogZm9yIGV4YW1wbGUsIHJlbGF0aXZlbHkgc2ltcGxlIGdyYXBoaWMgaW1hZ2VzIHN1Y2ggYXMgaWNvbnMsIHRleHQsIGFuZCBsaW5lIGRyYXdpbmdzLiBJdCBpcyBub3QgdXNlZnVsIHdpdGggZmlsZXMgdGhhdCBkb24mIzM5O3QgaGF2ZSBtYW55IHJ1bnMgYXMgaXQgY291bGQgcG90ZW50aWFsbHkgZG91YmxlIHRoZSBmaWxlIHNpemUgKHBob3RvZ3JhcGgsIGZvciBleGFtcGxlKS48XC9wPlxyXG5cclxuPHA+Rm9yIHRoaXMgcHJvYmxlbSwgeW91IHdpbGwgd3JpdGUgYSBwcm9ncmFtIHRoYXQgZW5jb2RlcyBhIGJsb2NrIG9mIGRhdGEgdXNpbmcgYSB2ZXJ5IHNpbXBsZSBSTEUgYWxnb3JpdGhtLiBBIHJ1biBpcyBlbmNvZGVkIHVzaW5nIGEgdHdvIGJ5dGUgc2VxdWVuY2UuIFRoZSBmaXJzdCBieXRlIG9mIHRoZSBzZXF1ZW5jZSBjb250YWlucyB0aGUgY291bnQsIGFuZCB0aGUgc2Vjb25kIGNvbnRhaW5zIHRoZSB2YWx1ZSB0byByZXBlYXQuIFRoZSBjb3VudCBpcyBlbmNvZGVkIHVzaW5nIGFuIDggYml0IHZhbHVlIHdpdGggdGhlIGhpZ2ggb3JkZXIgYml0IHNldCB0byAxLiBUaGUgcmVtYWluaW5nIDcgYml0cyByZXByZXNlbnQgdGhlIGNvdW50LTMuIFRoaXMgZ2l2ZXMgYSBtYXhpbXVtIHJ1biBjb3VudCBvZiAxMzAgcGVyIDIgYnl0ZSBzZXF1ZW5jZS4gKFRoaXMgaW1wbGllcyB0aGF0IHRoZSBtaW5pbXVtIHJ1biBjb3VudCBpcyAzKS4gQnl0ZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBydW4gYXJlIGVuY29kZWQgYXMtaXMgd2l0aCBhIHByZWZpeCBieXRlIGluZGljYXRpbmcgdGhlIGNvdW50IG9mIGJ5dGVzIGluIHRoZSBub24tcnVuIG1pbnVzIDEsIDAgdGhyb3VnaCAxMjcsIHJlcHJlc2VudGluZyBhIHJhbmdlIG9mIDEgLSAxMjggKHRoZSBoaWdoIG9yZGVyIGJpdCB3aWxsIGFsd2F5cyBiZSAwIGluIHRoZSBjYXNlIG9mIG5vbi1ydW4gZGF0YS48XC9wPlxyXG5cclxuPHA+SWYgYSBydW4gY29udGFpbnMgbW9yZSB0aGFuIDEzMCBieXRlcywgdGhlbiBpdCBtdXN0IGJlIGVuY29kZWQgdXNpbmcgbXVsdGlwbGUgc2VxdWVuY2VzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggd2lsbCBhbHdheXMgYmUgYSBydW4gb2YgMTMwLiBBbGwgcnVucyBvZiAzIG9yIG1vcmUgbXVzdCBiZSBlbmNvZGVkIGFzIGEgcnVuLiBJZiBhIG5vbi1ydW4gY29udGFpbnMgbW9yZSB0aGFuIDEyOCBieXRlcywgdGhlbiBtdWx0aXBsZSBub24tcnVuIHNlcXVlbmNlcyBtdXN0IGJlIHVzZWQuIEZvciBleGFtcGxlLCBhIHJ1biBvZiAyNjIgd291bGQgYmUgZW5jb2RlZCBhcyB0d28gcnVucyBvZiAxMzAgZm9sbG93ZWQgYnkgYSBub24tcnVuIG9mIDIuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIFAsICgxICZsZTsgUCAmbGU7IDEwMDApLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGRhdGEgc2V0cyB0aGF0IGZvbGxvdy4gRWFjaCBkYXRhIHNldCBjb25zaXN0cyBvZiBtdWx0aXBsZSBsaW5lcy4gVGhlIGZpcnN0IGxpbmUgY29udGFpbnMgdHdvICgyKSBkZWNpbWFsIGludGVnZXIgdmFsdWVzOiB0aGUgcHJvYmxlbSBudW1iZXIsIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIGZvbGxvd2VkIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgQiwgKDEgJmxlOyBCICZsZTsgNTAwMCksIHRvIGVuY29kZS4gVGhlIHJlbWFpbmluZyBsaW5lKHMpIGNvbnRhaW4ocykgdGhlIGRhdGEgdG8gYmUgZW5jb2RlZC4gRWFjaCBsaW5lIG9mIGRhdGEgdG8gZW5jb2RlIHdpbGwgY29udGFpbiA4MCBoZXhhZGVjaW1hbCBkaWdpdHMgKGV4Y2VwdCB0aGUgbGFzdCBsaW5lLCB3aGljaCBtYXkgY29udGFpbiBsZXNzKS4gMiBoZXhhZGVjaW1hbCBkaWdpdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IGVhY2ggYnl0ZS4gSGV4YWRlY2ltYWwgZGlnaXRzIGFyZTogMCwxLDIsMyw0LDUsNiw3LDgsOSxBLEIsQyxELEUsRi48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCBkYXRhIHNldCwgdGhlcmUgYXJlIG11bHRpcGxlIGxpbmVzIG9mIG91dHB1dC4gVGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYSBkZWNpbWFsIGludGVnZXIgZ2l2aW5nIHRoZSBkYXRhIHNldCBudW1iZXIgZm9sbG93ZWQgYnkgYSBzaW5nbGUgc3BhY2UsIGZvbGxvd2VkIGJ5IGEgZGVjaW1hbCBpbnRlZ2VyIGdpdmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGVuY29kZWQgYnl0ZXMuIFRoZSByZW1haW5pbmcgbGluZXMgY29udGFpbiB0aGUgZW5jb2RlZCBkYXRhIGVhY2ggd2l0aCA4MCBoZXhhZGVjaW1hbCBkaWdpdHMsIGV4Y2VwdCB0aGUgbGFzdCwgd2hpY2ggbWF5IGNvbnRhaW4gbGVzcy48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d