시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 2 2 2 100.000%

문제

EDSAC (ElectronicDelay Storage Automatic Calculator)은 프로그램을 주기억장치에 두고 실행할 수 있는 최초의 디지털 컴퓨터이다. EDSAC에는 가산기를 사용하는 명령어가 내장되어 있으며, 17비트 word 타입과 35비트 double word 타입을 기반으로 계산한다. 또한 입출력을 위해 5비트 텔레타이프 코드를 사용한다.

EDSAC 프로그램은 매우 간단한 어셈블리어로 만들 수 있다. 이 어셈블리어의 각 명령어는 문자 하나와 음이 아닌 십진수 주소값, 그리고 F나 D로 이뤄져 있다. F는 full word타입, D는 double word타입을 의미한다. 예를 들어 명령어 "A 128 F"는 가산기에 메모리 상에서 128 주소에 있는 full word 타입 변수값을 더하라는 의미이다. 이 연산은 이진수로 11100000100000000으로 표현된다. 앞의 11100은 "add"를 의미하는 5비트의 opcode이고, 다음 11비트 00010000000(=128)은 피연산자를 나타내며, 마지막의 0은 full word타입을 연산한다는 것을 의미한다. (double word 타입이라면 마지막 자리는 1이 된다.)

EDSAC 연산은 부동소수점 2의 보수 연산이지만, 단순한 정수 사칙연산이 아닌 현대 컴퓨터와 비슷한 방법으로 수를 연산한다. EDSAC의 연산 장치는 소수점이 가장 높은 자릿수(가장 왼쪽에 있는 자릿수)와 그 다음 자릿수(바로 오른쪽에 있는 자릿수) 사이에 있다고 가정한다. 따라서 17비트 word 타입 x의 표현 범위는 -1.0 ≤ x < 1.0이다.

 값 이진수 표현 
-1.0   10000000000000000
 1/2  01000000000000000
 3/4  01100000000000000
 -1/2 11000000000000000

따라서 가능한 가장 큰 양의 실수는 01111111111111111 = 0.9999847412109375이고, 가장 작은 양의 실수는 00000000000000001 = 2^(-16) = 0.0000152587890625이다.

우연의 일치인지 의도적인 설계인지, opcode add 연산과 텔레타이프 코드 'A'는 11100으로 일치하며, subtract 연산과 'S' 역시 01100으로 일치한다. 또한 텔레타이프 코드로 표현할 수 있는 알파벳은 "PQWERTYUIOJ#SZK*[email protected]!HNM&LXGABCV"로 모두 32자인데, 5비트 opcode로 표현할 수 있는 수의 개수도 32개이다. (텔레타이프 코드로 P는 00000, Q는 00001로 위 순서대로 증가하여 V는 11111으로 표현된다.) 이 특성 덕분에 EDSAC 어셈블러를 만들기가 쉬워졌다.

그러나 EDSAC 어셈블러에는 특별히 데이터 값을 표현하는 특별한 코드가 없다. 그래서 한 EDSAC 프로그래머는 일반 명령어를 데이터 값 표현에 쓰기로 했다. 예를 들어 상수 3/4(01100000000000000)는 “S 0 F로 표현되며, 1/3(약 00101010101010101)은 “T 682 D”로 표현된다. (T=00101, 682=010101010101)

십진수가 입력으로 주어졌을 때 이를 적절한 EDSAC 명령어로 표현하는 프로그램을 작성하시오.

입력

입력의 첫째 줄에는 테스트 케이스의 수를 나타내는 정수 P(1 ≤ P ≤ 1000)가 하나 주어진다. 각 테스트 케이스는 정수 D가 한 줄 주어진다. D는 sd.ddd....의 형태로 주어지는데, s는 마이너스 부호이고 생략될 수 있다. d는 십진수 한 자리(0-9)이다. 소수점 이하는 최소 한 자리 이상 최대 16자리 이하로 주어진다.

출력

각 테스트 케이스에 대해 입력으로 주어진 수를 표현하기 위한 EDSAC 명령어 한 줄을 출력한다. 출력은 opcode 문자 하나와 공백 하나, 음이 아닌 십진수 정수인 피연산자 하나와 공백 하나, 'F' 또는 'D'로 이뤄져 있다. 만약 입력으로 주어진 수가 정확히 17비트로 표현할 수 없는 수라면, 0에 더 가까운 수로 표현한다. (양수라면 내림, 음수라면 올림한다.)

D가 -1.0 <= D < 1.0 범위의 수가 아니라면 EDSAC 명령어 대신 "INVALID VALUE"를 출력한다.

예제 입력 1

16
0.5
-0.5
-1.0000000
0.1
0.0000152587890625
0.0000152587890624
0.0000152587890626
-0.0000152587890625
-0.0000152587890624
-0.0000152587890626
0.9999999999999999
-0.9999999999999999
-5.3
9.1
-1.0000000000000001
0.31415926

예제 출력 1

I 0 F
& 0 F
? 0 F
Q 1228 D
P 0 D
P 0 F
P 0 D
V 2047 D
P 0 F
V 2047 D
* 2047 D
? 0 D
INVALID VALUE
INVALID VALUE
INVALID VALUE
T 54 F
W3sicHJvYmxlbV9pZCI6IjI2NzciLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM1ZDBcdWI0ZGNcdWMwYWQgXHViOWNjXHViNGU0XHVhZTMwIiwiZGVzY3JpcHRpb24iOiI8cD5FRFNBQyAoRWxlY3Ryb25pY0RlbGF5IFN0b3JhZ2UgQXV0b21hdGljIENhbGN1bGF0b3IpXHVjNzQwIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM4ZmNcdWFlMzBcdWM1YjVcdWM3YTVcdWNlNThcdWM1ZDAgXHViNDUwXHVhY2UwIFx1YzJlNFx1ZDU4OVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1Y2Q1Y1x1Y2QwOFx1Yzc1OCBcdWI1MTRcdWM5YzBcdWQxMzggXHVjZWY0XHVkNGU4XHVkMTMwXHVjNzc0XHViMmU0LiZuYnNwO0VEU0FDXHVjNWQwXHViMjk0IFx1YWMwMFx1YzBiMFx1YWUzMFx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NThcdWIyOTQgXHViYTg1XHViODM5XHVjNWI0XHVhYzAwIFx1YjBiNFx1YzdhNVx1YjQxOFx1YzViNCBcdWM3ODhcdWM3M2NcdWJhNzAsJm5ic3A7MTdcdWJlNDRcdWQyYjggd29yZCZuYnNwO1x1ZDBjMFx1Yzc4NVx1YWNmYyAzNVx1YmU0NFx1ZDJiOCBkb3VibGUgd29yZCBcdWQwYzBcdWM3ODVcdWM3NDQgXHVhZTMwXHViYzE4XHVjNzNjXHViODVjIFx1YWNjNFx1YzBiMFx1ZDU1Y1x1YjJlNC4gXHViNjEwXHVkNTVjIFx1Yzc4NVx1Y2Q5Y1x1YjgyNVx1Yzc0NCBcdWM3MDRcdWQ1NzQmbmJzcDs1XHViZTQ0XHVkMmI4IFx1ZDE1NFx1YjgwOFx1ZDBjMFx1Yzc3NFx1ZDUwNCBcdWNmNTRcdWI0ZGNcdWI5N2MgXHVjMGFjXHVjNmE5XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5FRFNBQyBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDAgXHViOWU0XHVjNmIwIFx1YWMwNFx1YjJlOFx1ZDU1YyBcdWM1YjRcdWMxNDhcdWJlMTRcdWI5YWNcdWM1YjRcdWI4NWMgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1Yzc3NCBcdWM1YjRcdWMxNDhcdWJlMTRcdWI5YWNcdWM1YjRcdWM3NTggXHVhYzAxIFx1YmE4NVx1YjgzOVx1YzViNFx1YjI5NCBcdWJiMzhcdWM3OTAgXHVkNTU4XHViMDk4XHVjNjQwIFx1Yzc0Y1x1Yzc3NCBcdWM1NDRcdWIyY2MgXHVjMmVkXHVjOWM0XHVjMjE4IFx1YzhmY1x1YzE4Y1x1YWMxMiwgXHVhZGY4XHViOWFjXHVhY2UwIEZcdWIwOTggRFx1Yjg1YyBcdWM3NzRcdWI5MDRcdWM4MzggXHVjNzg4XHViMmU0LiBGXHViMjk0IGZ1bGwgd29yZFx1ZDBjMFx1Yzc4NSwgRFx1YjI5NCBkb3VibGUgd29yZFx1ZDBjMFx1Yzc4NVx1Yzc0NCBcdWM3NThcdWJiZjhcdWQ1NWNcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQgXHViYTg1XHViODM5XHVjNWI0ICZxdW90O0EgMTI4IEYmcXVvdDtcdWIyOTQgXHVhYzAwXHVjMGIwXHVhZTMwXHVjNWQwIFx1YmE1NFx1YmFhOFx1YjlhYyBcdWMwYzFcdWM1ZDBcdWMxMWMmbmJzcDsxMjggXHVjOGZjXHVjMThjXHVjNWQwIFx1Yzc4OFx1YjI5NCBmdWxsIHdvcmQgXHVkMGMwXHVjNzg1IFx1YmNjMFx1YzIxOFx1YWMxMlx1Yzc0NCBcdWIzNTRcdWQ1NThcdWI3N2NcdWIyOTQgXHVjNzU4XHViYmY4XHVjNzc0XHViMmU0LiBcdWM3NzQgXHVjNWYwXHVjMGIwXHVjNzQwIFx1Yzc3NFx1YzljNFx1YzIxOFx1Yjg1YyZuYnNwOzExMTAwMDAwMTAwMDAwMDAwXHVjNzNjXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxY1x1YjJlNC4gXHVjNTVlXHVjNzU4Jm5ic3A7MTExMDBcdWM3NDAgJnF1b3Q7YWRkJnF1b3Q7XHViOTdjIFx1Yzc1OFx1YmJmOFx1ZDU1OFx1YjI5NCA1XHViZTQ0XHVkMmI4XHVjNzU4IG9wY29kZVx1Yzc3NFx1YWNlMCwgXHViMmU0XHVjNzRjIDExXHViZTQ0XHVkMmI4Jm5ic3A7MDAwMTAwMDAwMDAoPTEyOClcdWM3NDAgXHVkNTNjXHVjNWYwXHVjMGIwXHVjNzkwXHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YmE3MCwgXHViOWM4XHVjOWMwXHViOWM5XHVjNzU4IDBcdWM3NDAgZnVsbCB3b3JkXHVkMGMwXHVjNzg1XHVjNzQ0IFx1YzVmMFx1YzBiMFx1ZDU1Y1x1YjJlNFx1YjI5NCBcdWFjODNcdWM3NDQgXHVjNzU4XHViYmY4XHVkNTVjXHViMmU0LiAoZG91YmxlIHdvcmQgXHVkMGMwXHVjNzg1XHVjNzc0XHViNzdjXHViYTc0IFx1YjljOFx1YzljMFx1YjljOSBcdWM3OTBcdWI5YWNcdWIyOTQgMVx1Yzc3NCBcdWI0MWNcdWIyZTQuKTxcL3A+XHJcblxyXG48cD5FRFNBQyBcdWM1ZjBcdWMwYjBcdWM3NDAgXHViZDgwXHViM2Q5XHVjMThjXHVjMjE4XHVjODEwIDJcdWM3NTggXHViY2Y0XHVjMjE4IFx1YzVmMFx1YzBiMFx1Yzc3NFx1YzljMFx1YjljYywgXHViMmU4XHVjMjFjXHVkNTVjIFx1YzgxNVx1YzIxOCBcdWMwYWNcdWNlNTlcdWM1ZjBcdWMwYjBcdWM3NzQgXHVjNTQ0XHViMmNjIFx1ZDYwNFx1YjMwMCBcdWNlZjRcdWQ0ZThcdWQxMzBcdWM2NDAgXHViZTQ0XHVjMmI3XHVkNTVjIFx1YmMyOVx1YmM5NVx1YzczY1x1Yjg1YyBcdWMyMThcdWI5N2MgXHVjNWYwXHVjMGIwXHVkNTVjXHViMmU0LiZuYnNwO0VEU0FDXHVjNzU4IFx1YzVmMFx1YzBiMCBcdWM3YTVcdWNlNThcdWIyOTQgXHVjMThjXHVjMjE4XHVjODEwXHVjNzc0IFx1YWMwMFx1YzdhNSBcdWIxOTJcdWM3NDAgXHVjNzkwXHViOWJmXHVjMjE4KFx1YWMwMFx1YzdhNSBcdWM2N2NcdWNhYmRcdWM1ZDAgXHVjNzg4XHViMjk0IFx1Yzc5MFx1YjliZlx1YzIxOClcdWM2NDAgXHVhZGY4IFx1YjJlNFx1Yzc0YyBcdWM3OTBcdWI5YmZcdWMyMTgoXHViYzE0XHViODVjIFx1YzYyNFx1Yjk3OFx1Y2FiZFx1YzVkMCBcdWM3ODhcdWIyOTQgXHVjNzkwXHViOWJmXHVjMjE4KSBcdWMwYWNcdWM3NzRcdWM1ZDAgXHVjNzg4XHViMmU0XHVhY2UwIFx1YWMwMFx1YzgxNVx1ZDU1Y1x1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjIDE3XHViZTQ0XHVkMmI4IHdvcmQgXHVkMGMwXHVjNzg1IHhcdWM3NTggXHVkNDVjXHVkNjA0IFx1YmM5NFx1YzcwNFx1YjI5NCAtMS4wJm5ic3A7JmxlOyZuYnNwO3ggJmx0OyAxLjBcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDozMCVcIj5cclxuXHQ8dGhlYWQ+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD4mbmJzcDtcdWFjMTI8XC90aD5cclxuXHRcdFx0PHRoPlx1Yzc3NFx1YzljNFx1YzIxOCBcdWQ0NWNcdWQ2MDQmbmJzcDs8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPi0xLjAmbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzEwMDAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzFcLzI8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzAxMDAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzNcLzQ8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzAxMTAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOy0xXC8yPFwvdGQ+XHJcblx0XHRcdDx0ZD4xMTAwMDAwMDAwMDAwMDAwMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+XHViNTMwXHViNzdjXHVjMTFjIFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWFjMDBcdWM3YTUgXHVkMDcwIFx1YzU5MVx1Yzc1OCBcdWMyZTRcdWMyMThcdWIyOTQmbmJzcDswMTExMTExMTExMTExMTExMSA9IDAuOTk5OTg0NzQxMjEwOTM3NVx1Yzc3NFx1YWNlMCwgXHVhYzAwXHVjN2E1IFx1Yzc5MVx1Yzc0MCBcdWM1OTFcdWM3NTggXHVjMmU0XHVjMjE4XHViMjk0Jm5ic3A7MDAwMDAwMDAwMDAwMDAwMDEgPSAyXigtMTYpID0gMC4wMDAwMTUyNTg3ODkwNjI1XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2YjBcdWM1ZjBcdWM3NTggXHVjNzdjXHVjZTU4XHVjNzc4XHVjOWMwIFx1Yzc1OFx1YjNjNFx1YzgwMVx1Yzc3OCBcdWMxMjRcdWFjYzRcdWM3NzhcdWM5YzAsIG9wY29kZSBhZGQgXHVjNWYwXHVjMGIwXHVhY2ZjJm5ic3A7XHVkMTU0XHViODA4XHVkMGMwXHVjNzc0XHVkNTA0IFx1Y2Y1NFx1YjRkYyAmIzM5O0EmIzM5O1x1YjI5NCAxMTEwMFx1YzczY1x1Yjg1YyBcdWM3N2NcdWNlNThcdWQ1NThcdWJhNzAsIHN1YnRyYWN0Jm5ic3A7XHVjNWYwXHVjMGIwXHVhY2ZjICYjMzk7UyYjMzk7IFx1YzVlZFx1YzJkYyAwMTEwMFx1YzczY1x1Yjg1YyBcdWM3N2NcdWNlNThcdWQ1NWNcdWIyZTQuIFx1YjYxMFx1ZDU1YyBcdWQxNTRcdWI4MDhcdWQwYzBcdWM3NzRcdWQ1MDQgXHVjZjU0XHViNGRjXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1YzU0Y1x1ZDMwY1x1YmNiM1x1Yzc0MCZuYnNwOyZxdW90O1BRV0VSVFlVSU9KI1NaSyo/RkBEIUhOTSZhbXA7TFhHQUJDViZxdW90O1x1Yjg1YyBcdWJhYThcdWI0NTAgMzJcdWM3OTBcdWM3NzhcdWIzNzAsIDVcdWJlNDRcdWQyYjggb3Bjb2RlXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMjk0IFx1YzIxOFx1Yzc1OCBcdWFjMWNcdWMyMThcdWIzYzQgMzJcdWFjMWNcdWM3NzRcdWIyZTQuIChcdWQxNTRcdWI4MDhcdWQwYzBcdWM3NzRcdWQ1MDQgXHVjZjU0XHViNGRjXHViODVjIFBcdWIyOTQgMDAwMDAsIFFcdWIyOTQgMDAwMDFcdWI4NWMgXHVjNzA0IFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWM5OWRcdWFjMDBcdWQ1NThcdWM1ZWMgVlx1YjI5NCAxMTExMVx1YzczY1x1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWI0MWNcdWIyZTQuKSBcdWM3NzQgXHVkMmI5XHVjMTMxIFx1YjM1NVx1YmQ4NFx1YzVkMCZuYnNwO0VEU0FDIFx1YzViNFx1YzE0OFx1YmUxNFx1YjdlY1x1Yjk3YyBcdWI5Y2NcdWI0ZTRcdWFlMzBcdWFjMDAgXHVjMjZjXHVjNmNjXHVjODRjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFkZjhcdWI3ZWNcdWIwOTgmbmJzcDtFRFNBQyBcdWM1YjRcdWMxNDhcdWJlMTRcdWI3ZWNcdWM1ZDBcdWIyOTQgXHVkMmI5XHViY2M0XHVkNzg4IFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWFjMTJcdWM3NDQgXHVkNDVjXHVkNjA0XHVkNTU4XHViMjk0IFx1ZDJiOVx1YmNjNFx1ZDU1YyBcdWNmNTRcdWI0ZGNcdWFjMDAgXHVjNWM2XHViMmU0LiZuYnNwO1x1YWRmOFx1Yjc5OFx1YzExYyBcdWQ1NWMgRURTQUMgXHVkNTA0XHViODVjXHVhZGY4XHViNzk4XHViYTM4XHViMjk0IFx1Yzc3Y1x1YmMxOCBcdWJhODVcdWI4MzlcdWM1YjRcdWI5N2MgXHViMzcwXHVjNzc0XHVkMTMwIFx1YWMxMiBcdWQ0NWNcdWQ2MDRcdWM1ZDAgXHVjNGYwXHVhZTMwXHViODVjIFx1ZDU4OFx1YjJlNC4gXHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCBcdWMwYzFcdWMyMTggM1wvNCgwMTEwMDAwMDAwMDAwMDAwMClcdWIyOTQgJmxkcXVvO1MgMCBGXHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxOFx1YmE3MCwgMVwvMyhcdWM1N2QgMDAxMDEwMTAxMDEwMTAxMDEpXHVjNzQwICZsZHF1bztUIDY4MiBEJnJkcXVvO1x1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWI0MWNcdWIyZTQuIChUPTAwMTAxLCA2ODI9MDEwMTAxMDEwMTAxKTxcL3A+XHJcblxyXG48cD5cdWMyZWRcdWM5YzRcdWMyMThcdWFjMDAgXHVjNzg1XHViODI1XHVjNzNjXHViODVjIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMgXHVjNzc0XHViOTdjIFx1YzgwMVx1YzgwOFx1ZDU1YyBFRFNBQyBcdWJhODVcdWI4MzlcdWM1YjRcdWI4NWMgXHVkNDVjXHVkNjA0XHVkNTU4XHViMjk0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM3OTFcdWMxMzFcdWQ1NThcdWMyZGNcdWM2MjQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWM3ODVcdWI4MjVcdWM3NTggXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YzIxOFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQmbmJzcDtcdWM4MTVcdWMyMTggUCgxJm5ic3A7JmxlOyZuYnNwO1AmbmJzcDsmbGU7IDEwMDApXHVhYzAwIFx1ZDU1OFx1YjA5OCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViMjk0IFx1YzgxNVx1YzIxOCBEXHVhYzAwIFx1ZDU1YyBcdWM5MDQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBEXHViMjk0IHNkLmRkZC4uLi5cdWM3NTggXHVkNjE1XHVkMGRjXHViODVjIFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NFx1YjM3MCwgc1x1YjI5NCBcdWI5YzhcdWM3NzRcdWIxMDhcdWMyYTQgXHViZDgwXHVkNjM4XHVjNzc0XHVhY2UwIFx1YzBkZFx1YjdiNVx1YjQyMCBcdWMyMTggXHVjNzg4XHViMmU0LiBkXHViMjk0IFx1YzJlZFx1YzljNFx1YzIxOCBcdWQ1NWMgXHVjNzkwXHViOWFjKDAtOSlcdWM3NzRcdWIyZTQuIFx1YzE4Y1x1YzIxOFx1YzgxMCBcdWM3NzRcdWQ1NThcdWIyOTQgXHVjZDVjXHVjMThjIFx1ZDU1YyBcdWM3OTBcdWI5YWMgXHVjNzc0XHVjMGMxIFx1Y2Q1Y1x1YjMwMCAxNlx1Yzc5MFx1YjlhYyBcdWM3NzRcdWQ1NThcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjgmbmJzcDtcdWNmMDBcdWM3NzRcdWMyYTRcdWM1ZDAgXHViMzAwXHVkNTc0IFx1Yzc4NVx1YjgyNVx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzQgXHVjMjE4XHViOTdjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NWMgRURTQUMgXHViYTg1XHViODM5XHVjNWI0IFx1ZDU1YyBcdWM5MDRcdWM3NDQgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWNkOWNcdWI4MjVcdWM3NDAgb3Bjb2RlIFx1YmIzOFx1Yzc5MCBcdWQ1NThcdWIwOThcdWM2NDAgXHVhY2Y1XHViYzMxIFx1ZDU1OFx1YjA5OCwgXHVjNzRjXHVjNzc0IFx1YzU0NFx1YjJjYyBcdWMyZWRcdWM5YzRcdWMyMTggXHVjODE1XHVjMjE4XHVjNzc4IFx1ZDUzY1x1YzVmMFx1YzBiMFx1Yzc5MCBcdWQ1NThcdWIwOThcdWM2NDAgXHVhY2Y1XHViYzMxIFx1ZDU1OFx1YjA5OCwgJiMzOTtGJiMzOTsgXHViNjEwXHViMjk0ICYjMzk7RCYjMzk7XHViODVjIFx1Yzc3NFx1YjkwNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YzIxOFx1YWMwMCBcdWM4MTVcdWQ2NTVcdWQ3ODggMTdcdWJlNDRcdWQyYjhcdWI4NWMgXHVkNDVjXHVkNjA0XHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyOTQgXHVjMjE4XHViNzdjXHViYTc0LCAwXHVjNWQwIFx1YjM1NCBcdWFjMDBcdWFlNGNcdWM2YjQgXHVjMjE4XHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1Y1x1YjJlNC4gKFx1YzU5MVx1YzIxOFx1Yjc3Y1x1YmE3NCBcdWIwYjRcdWI5YmMsIFx1Yzc0Y1x1YzIxOFx1Yjc3Y1x1YmE3NCBcdWM2MmNcdWI5YmNcdWQ1NWNcdWIyZTQuKTxcL3A+XHJcblxyXG48cD5EXHVhYzAwJm5ic3A7LTEuMCAmbHQ7PSBEICZsdDsgMS4wIFx1YmM5NFx1YzcwNFx1Yzc1OCBcdWMyMThcdWFjMDAgXHVjNTQ0XHViMmM4XHViNzdjXHViYTc0IEVEU0FDIFx1YmE4NVx1YjgzOVx1YzViNCBcdWIzMDBcdWMyZTAmbmJzcDsmcXVvdDtJTlZBTElEIFZBTFVFJnF1b3Q7XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIyNjc3IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiUHJvZ3JhbW1pbmcgdGhlIEVEU0FDIiwiZGVzY3JpcHRpb24iOiI8cD5UaGUgd29ybGQmIzM5O3MgZmlyc3QgZnVsbC1zY2FsZSwgc3RvcmVkLXByb2dyYW0sIGVsZWN0cm9uaWMsIGRpZ2l0YWwgY29tcHV0ZXIgd2FzIHRoZSBFRFNBQyAoRWxlY3Ryb25pY0RlbGF5IFN0b3JhZ2UgQXV0b21hdGljIENhbGN1bGF0b3IpLiBUaGUgRURTQUMgaGFkIGFuIGFjY3VtdWxhdG9yLWJhc2VkIGluc3RydWN0aW9uIHNldCxvcGVyYXRpbmcgb24gMTctYml0IHdvcmRzIChhbmQgMzUtYml0IGRvdWJsZSB3b3JkcyksIGFuZCB1c2VkIGEgNS1iaXQgdGVsZXR5cGV3cml0ZXIgY29kZSBmb3IgaW5wdXRhbmQgb3V0cHV0LjxcL3A+XHJcblxyXG48cD5UaGUgRURTQUMgd2FzIHByb2dyYW1tZWQgdXNpbmcgYSB2ZXJ5IHNpbXBsZSBhc3NlbWJseSBsYW5ndWFnZTogYSBzaW5nbGUgbGV0dGVyIG9wY29kZWZvbGxvd2VkIGJ5IGFuIHVuc2lnbmVkIGRlY2ltYWwgYWRkcmVzcywgZm9sbG93ZWQgYnkgdGhlIHRoZSBsZXR0ZXIgJiMzOTtGJiMzOTsgKGZvciBmdWxsIHdvcmQpIG9yICYjMzk7RCYjMzk7IChmb3IgZG91YmxlIHdvcmQpLiBGb3IgZXhhbXBsZSwgdGhlIGluc3RydWN0aW9uICZxdW90O0EgMTI4IEYmcXVvdDsgd291bGQgbWVhbiAmcXVvdDthZGQgdGhlIGZ1bGwgd29yZCBhdCBsb2NhdGlvbiAxMjggdG8gdGhlIGFjY3VtdWxhdG9yJnF1b3Q7LCBhbmQgd291bGQgYmUgYXNzZW1ibGVkIGludG8gdGhlIDE3LWJpdCBiaW5hcnkgdmFsdWUsIDExMTAwMDAwMTAwMDAwMDAwLGNvbnNpc3Rpbmcgb2YgYSA1LWJpdCBvcGNvZGUgKDExMTAwID0gJnF1b3Q7YWRkJnF1b3Q7KSwgYW4gMTEtYml0IG9wZXJhbmQgKDAwMDEwMDAwMDAwID0gMTI4KSwgYW5kIGEgc2luZ2xlIDAgYml0IGRlbm90aW5nIGEgZnVsbCB3b3JkIG9wZXJhdGlvbiAoYSAxIGJpdCB3b3VsZCBpbmRpY2F0ZSBhIGRvdWJsZSB3b3JkIG9wZXJhdGlvbikuPFwvcD5cclxuXHJcbjxwPkFsdGhvdWdoIGFyaXRobWV0aWMgb24gdGhlIEVEU0FDIHdhcyBmaXhlZCBwb2ludCB0d28mIzM5O3MgY29tcGxlbWVudCBiaW5hcnksIGl0IHdhcyBub3QgbWVyZSBpbnRlZ2VyIGFyaXRobWV0aWMgKGFzIGlzIGNvbW1vbiB3aXRoIG1vZGVybiBtYWNoaW5lcykuIFRoZSBFRFNBQyBoYXJkd2FyZSBhc3N1bWVkIGEgYmluYXJ5IHBvaW50IGJldHdlZW4gdGhlIGxlZnRtb3N0IGJpdCBhbmQgaXRzIGltbWVkaWF0ZSBzdWNjZXNzb3IuIFRodXMgdGhlIGhhcmR3YXJlIGNvdWxkIGhhbmRsZSBvbmx5IHZhbHVlcyBpbiB0aGUgcmFuZ2UgLTEuMCAmbHQ7PSB4ICZsdDsgMS4wLiBGb3IgZXhhbXBsZTo8XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBzdHlsZT1cIndpZHRoOjQwJVwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPlZhbHVlPFwvdGg+XHJcblx0XHRcdDx0aD5CaW5hcnkgUmVwcmVzZW50YXRpb248XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPi0xLjA8XC90ZD5cclxuXHRcdFx0PHRkPjEwMDAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjFcLzI8XC90ZD5cclxuXHRcdFx0PHRkPjAxMDAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjNcLzQ8XC90ZD5cclxuXHRcdFx0PHRkPjAxMTAwMDAwMDAwMDAwMDAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPi0xXC8yPFwvdGQ+XHJcblx0XHRcdDx0ZD4xMTAwMDAwMDAwMDAwMDAwMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+QXMgeW91IGNhbiBzZWUsIHRoZSBsYXJnZXN0IHBvc3NpYmxlIHBvc2l0aXZlIHZhbHVlIHdhczo8XC9wPlxyXG5cclxuPHA+MDExMTExMTExMTExMTExMTEgPSAwLjk5OTk4NDc0MTIxMDkzNzU8XC9wPlxyXG5cclxuPHA+YW5kIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBwb3NpdGl2ZSB2YWx1ZSB3YXM6PFwvcD5cclxuXHJcbjxwPjAwMDAwMDAwMDAwMDAwMDAxID0gMjxzdXA+LTE2PFwvc3VwPiA9IDAuMDAwMDE1MjU4Nzg5MDYyNTxcL3A+XHJcblxyXG48cD4oVGhpcyBhbHNvIGhhcHBlbnMgdG8gYmUgdGhlIGluY3JlbWVudCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgdmFsdWVzIG9uIHRoZSBFRFNBQykuPFwvcD5cclxuXHJcbjxwPkJ5IGEgY3VyaW91cyBjb2luY2lkZW5jZSAob3IgYW4gZWxlZ2FudCBkZXNpZ24gZGVjaXNpb24pLCB0aGUgb3Bjb2RlIGZvciB0aGUgYWRkIG9wZXJhdGlvbiAoMTExMDApIHdhcyB0aGUgc2FtZSBhcyB0aGUgdGVsZXByaW50ZXIgY29kZSBmb3IgdGhlIGxldHRlciAmIzM5O0EmIzM5Oy4gVGhlIG9wY29kZSBmb3Igc3VidHJhY3Qgd2FzIHRoZSBzYW1lIGFzIHRoZSB0ZWxlcHJpbnRlciBjb2RlIGZvciAmIzM5O1MmIzM5OyAoMDExMDApLCBhbmQgc28gb24uIFRoaXMgc2ltcGxpZmllZCB0aGUgcHJvZ3JhbW1pbmcgZm9yIHRoZSBhc3NlbWJsZXIgKHdoaWNoLCBpbmNpZGVudGFsbHksIHdhcyBhIG1lcmUgMzEgaW5zdHJ1Y3Rpb25zIGxvbmcpLiBUaGUgRURTQUMgdGVsZXByaW50ZXIgYWxwaGFiZXQgd2FzICZxdW90O1BRV0VSVFlVSU9KI1NaSyo/RkBEIUhOTSZhbXA7TFhHQUJDViZxdW90OyAod2l0aCAmIzM5O1AmIzM5OyA9IDAwMDAwLCAmIzM5O1EmIzM5OyA9IDAwMDAxLCBhbmQgc28gb24sIHVwIHRvICYjMzk7ViYjMzk7PSAxMTExMSkuPFwvcD5cclxuXHJcbjxwPlVuZm9ydHVuYXRlbHksIHRoZSBFRFNBQyBhc3NlbWJsZXIgaGFkIG5vIHNwZWNpYWwgZGlyZWN0aXZlcyBmb3IgZGF0YSB2YWx1ZXMuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGVyZSB3YXMgbm8gcmVhc29uIHRoYXQgb3JkaW5hcnkgaW5zdHJ1Y3Rpb25zIGNvdWxkbiYjMzk7dCBiZSB1c2VkIGZvciB0aGlzLCB0aHVzLCBhbiBFRFNBQyBwcm9ncmFtbWVyIGRlc2lyaW5nIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBjb25zdGFudCAzXC80IChyZXByZXNlbnRlZCBhcyAwMTEwMDAwMDAwMDAwMDAwMCkgd291bGQgdXNlIHRoZWluc3RydWN0aW9uICZxdW90O1MgMCBGJnF1b3Q7IGFuZCBmb3IgMVwvMyAod2hpY2ggaXMgYXBwcm94aW1hdGVseSByZXByZXNlbnRlZCBhcyAwMDEwMTAxMDEwMTAxMDEwMSkgJnF1b3Q7VCA2ODIgRCZxdW90OywgYW5kIHNvIG9uLjxcL3A+XHJcblxyXG48cD5Zb3VyIGpvYiBpcyB0byB3cml0ZSBhIHByb2dyYW0gdGhhdCB3aWxsIHRyYW5zbGF0ZSBkZWNpbWFsIGlucHV0IHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBFRFNBQyBpbnN0cnVjdGlvbnMuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIFAsICgxICZsZTsgUCAmbGU7IDEwMDApLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGRhdGEgc2V0cyB0aGF0IGZvbGxvdy4gRWFjaCBkYXRhIHNldCBpcyBhIHNpbmdsZSBsaW5lIHRoYXQgY29uc2lzdHMgb2YgdHdvIHNwYWNlIHNlcGFyYXRlZCB2YWx1ZXMgTiBhbmQgRC4gTiBpcyB0aGUgZGF0YSBzZXQgbnVtYmVyLiBEIGlzIHRoZSBkZWNpbWFsIG51bWJlciBvZiB0aGUgZm9ybSBzZC5kZGQmaGVsbGlwOy4sIHdoZXJlIHMgaXMgYW4gb3B0aW9uYWwgbWludXMgc2lnbiwgYW5kIGQgaXMgYW55IGRlY2ltYWwgZGlnaXQgKDAtOSkuIFRoZXJlIHdpbGwgYmUgYXQgbGVhc3QgMSBhbmQgYXQgbW9zdCAxNiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggZGF0YSBzZXQgdGhlcmUgaXMgb25lIGxpbmUgb2Ygb3V0cHV0LiBJdCBjb250YWlucyB0aGUgRURTQUMgaW5zdHJ1Y3Rpb24gbmVjZXNzYXJ5IHRvIHNwZWNpZnkgdGhlIGdpdmVuIGNvbnN0YW50LiBUaGUgaW5zdHJ1Y3Rpb24gc2hvdWxkIGJlIHByaW50ZWQgYXMgZm9sbG93czogdGhlICZxdW90O29wY29kZSZxdW90OyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBzcGFjZSBmb2xsb3dlZCBieSB0aGUgb3BlcmFuZCAoYXMgYSBub24tbmVnYXRpdmUgZGVjaW1hbCBpbnRlZ2VyKSBmb2xsb3dlZCBieSBhIHNwYWNlIGZvbGxvd2VkIGJ5IGFuICYjMzk7RiYjMzk7IG9yICYjMzk7RCYjMzk7IChhcyBhcHByb3ByaWF0ZSkuIElmIHRoZSBjb25zdGFudCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgZXhhY3RseSBpbiAxNyBiaXRzLCB0aGUgdmFsdWUgaXMgdG8gYmUgcm91bmRlZCB0b3dhcmQgemVybyAodXAgZm9yIG5lZ2F0aXZlLCBkb3duIGZvciBwb3NpdGl2ZSBudW1iZXJzKS4gSWYgdGhlIGlucHV0IHZhbHVlIEQgaXMgbm90IGluIHRoZSByYW5nZSAtMS4wICZsdDs9IEQgJmx0OyAxLjAsIHRoZSBzdHJpbmcgJnF1b3Q7SU5WQUxJRCBWQUxVRSZxdW90OyBzaG91bGQgYmUgcHJpbnRlZCBpbnN0ZWFkIG9mIGFuIEVEU0FDIGluc3RydWN0aW9uLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1YzYwMVx1YzViNCJ9XQ==