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

문제

20xx년, 경기과학고등학교는 국내 최대의 프로그래밍 대회인 ACM-ICPC Suwon Regional을 주최하게 되었다! 이번 수원 리저널에서는, 단순한 대회 주최 뿐만 아니라, 참가자들을 위한 수원시 버스 여행까지 계획되어 있고, 재현이는 이 버스 여행의 자세한 경로를 계획할 예정이다.

비록 2016년의 수원시는 정돈된 시가지하고는 거리가 멀지만, 20xx년의 수원시는 동-서 거리와 남-북 거리로 잘 정돈된 그리드 형태의 시가지를 가지고 있다. 서로 인접한 평행한 거리들은 100m 간격으로 떨어져 있다. 관광 명소는 항상 이러한 거리들의 교차로에 있는데, 재현이는 여행사를 통해서 각각의 관광 명소의 건설 시기 ai,j와 매력도 ci,j를 알고 있다.

재현이는 버스 여행을 통해 순서대로 여러 관광 명소를 방문할 계획이며, 이때의 매력도의 합을 최대화하려고 한다. 한편, 이번 버스 여행의 테마는 수원시의 역사이기 때문에, 건설 시기가 증가하는 (같아서는 안 된다!) 순으로 관광 명소를 방문하려고 한다. 또한, 수원시의 경치는 너무나도 아름다워서, 사람들은 버스 안에서 수원시의 경치를 감상하는 것을 즐긴다. 때문에, 두 관광 명소 사이를 이동하는 와중에도 매력도가 100m마다 1씩 증가한다.

재현이는 아무 관광 명소에서 시작해서, 중간에 여러 관광 명소를 들린 후, 아무 관광 명소에서 도착하는 여행 계획을 만들려고 한다. 가능한 여행 계획 중, 매력도의 합의 최댓값은 얼마인가? 버스는 두 관광 명소 사이를 최단 거리로 움직이며, 버스가 움직이는 동안 지나쳤던 관광지는 방문했다고 치지 않는다.

입력

첫 번째 줄에는 동-서 거리와 남-북 거리의 개수인 n, m 이 주어진다. (2 ≤ n, m ≤ 1000)

이후 n 개의 줄에 각각의 관광 명소의 건설 시기가 주어진다. 이 중 i번째 줄에는 m개의 정수 ai,j (0 ≤ ai,j ≤ 106) 가 주어지며, i번 동-서 거리와 j번 남-북 거리의 교차로를 의미한다. ai,j = 0 일 경우, 해당 거리의 교차로에는 관광 명소가 없다. 관광 명소는 하나 이상 존재한다.

이후 n 개의 줄에 각각의 관광 명소의 매력도가 주어진다. 이 중 i번째 줄에는 m개의 정수 ci,j (0 ≤ ci,j ≤ 109) 가 주어지며, i번 동-서 거리와 j번 남-북 거리의 교차로에 있는 관광 명소의 매력도를 뜻한다. 만약에 해당 교차로에 관광 명소가 없다면, ci,j = 0 임이 보장된다.

출력

가능한 여행 계획 중, 매력도의 합의 최댓값을 출력하라.

예제 입력 1

4 5
1 2 6 0 2
1 3 4 0 4
0 0 4 0 3
2 2 0 0 4
1 3 5 0 2
2 8 1 0 2
0 0 3 0 4
0 5 0 0 3

예제 출력 1

39

힌트

재현이는 (2, 1) → (1, 5) → (2, 2) → (4, 5) → (1, 3) 순으로 관광 명소를 방문한다. 관광 명소의 매력도의 합은 2 + 2 + 8 + 3 + 5 = 20 이고, 이동 중에 쌓은 매력도의 합은 5 + 4 + 5 + 5 = 19 이다. 고로 총 매력도의 합은 39이다.

W3sicHJvYmxlbV9pZCI6Ijc5NzUiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5IiwiZGVzY3JpcHRpb24iOiI8cD4yMHh4XHViMTQ0LCBcdWFjYmRcdWFlMzBcdWFjZmNcdWQ1NTlcdWFjZTBcdWI0ZjFcdWQ1NTlcdWFkNTBcdWIyOTQgXHVhZDZkXHViMGI0IFx1Y2Q1Y1x1YjMwMFx1Yzc1OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHViMzAwXHVkNjhjXHVjNzc4IEFDTS1JQ1BDIFN1d29uIFJlZ2lvbmFsXHVjNzQ0IFx1YzhmY1x1Y2Q1Y1x1ZDU1OFx1YWM4YyBcdWI0MThcdWM1YzhcdWIyZTQhIFx1Yzc3NFx1YmM4OCBcdWMyMThcdWM2ZDAgXHViOWFjXHVjODAwXHViMTEwXHVjNWQwXHVjMTFjXHViMjk0LCBcdWIyZThcdWMyMWNcdWQ1NWMgXHViMzAwXHVkNjhjIFx1YzhmY1x1Y2Q1YyBcdWJmZDBcdWI5Y2MgXHVjNTQ0XHViMmM4XHViNzdjLCBcdWNjMzhcdWFjMDBcdWM3OTBcdWI0ZTRcdWM3NDQgXHVjNzA0XHVkNTVjIFx1YzIxOFx1YzZkMFx1YzJkYyBcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5XHVhZTRjXHVjOWMwIFx1YWNjNFx1ZDY4ZFx1YjQxOFx1YzViNCBcdWM3ODhcdWFjZTAsIFx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCBcdWM3NzQgXHViYzg0XHVjMmE0IFx1YzVlY1x1ZDU4OVx1Yzc1OCBcdWM3OTBcdWMxMzhcdWQ1NWMgXHVhY2JkXHViODVjXHViOTdjIFx1YWNjNFx1ZDY4ZFx1ZDU2MCBcdWM2MDhcdWM4MTVcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YmU0NFx1Yjg1ZCAyMDE2XHViMTQ0XHVjNzU4IFx1YzIxOFx1YzZkMFx1YzJkY1x1YjI5NCBcdWM4MTVcdWIzYzhcdWI0MWMgXHVjMmRjXHVhYzAwXHVjOWMwXHVkNTU4XHVhY2UwXHViMjk0IFx1YWM3MFx1YjlhY1x1YWMwMCBcdWJhNDBcdWM5YzBcdWI5Y2MsIDIweHhcdWIxNDRcdWM3NTggXHVjMjE4XHVjNmQwXHVjMmRjXHViMjk0IFx1YjNkOS1cdWMxMWMgXHVhYzcwXHViOWFjXHVjNjQwIFx1YjBhOC1cdWJkODEgXHVhYzcwXHViOWFjXHViODVjIFx1Yzc5OCBcdWM4MTVcdWIzYzhcdWI0MWMgXHVhZGY4XHViOWFjXHViNGRjIFx1ZDYxNVx1ZDBkY1x1Yzc1OCBcdWMyZGNcdWFjMDBcdWM5YzBcdWI5N2MgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHVjMTFjXHViODVjIFx1Yzc3OFx1YzgxMVx1ZDU1YyBcdWQzYzlcdWQ1ODlcdWQ1NWMgXHVhYzcwXHViOWFjXHViNGU0XHVjNzQwIDEwMG0gXHVhYzA0XHVhY2E5XHVjNzNjXHViODVjIFx1YjVhOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWIyOTQgXHVkNTZkXHVjMGMxIFx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWFjNzBcdWI5YWNcdWI0ZTRcdWM3NTggXHVhZDUwXHVjYzI4XHViODVjXHVjNWQwIFx1Yzc4OFx1YjI5NFx1YjM3MCwgXHVjN2FjXHVkNjA0XHVjNzc0XHViMjk0IFx1YzVlY1x1ZDU4OVx1YzBhY1x1Yjk3YyBcdWQxYjVcdWQ1NzRcdWMxMWMgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM3NTggXHVhYzc0XHVjMTI0IFx1YzJkY1x1YWUzMCBhPHN1Yj5pLGo8XC9zdWI+XHVjNjQwIFx1YjllNFx1YjgyNVx1YjNjNCBjPHN1Yj5pLGo8XC9zdWI+XHViOTdjIFx1YzU0Y1x1YWNlMCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCBcdWJjODRcdWMyYTQgXHVjNWVjXHVkNTg5XHVjNzQ0IFx1ZDFiNVx1ZDU3NCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjNWVjXHViN2VjIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWI5N2MgXHViYzI5XHViYjM4XHVkNTYwIFx1YWNjNFx1ZDY4ZFx1Yzc3NFx1YmE3MCwgXHVjNzc0XHViNTRjXHVjNzU4IFx1YjllNFx1YjgyNVx1YjNjNFx1Yzc1OCBcdWQ1NjlcdWM3NDQgXHVjZDVjXHViMzAwXHVkNjU0XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVkNTVjXHVkM2I4LCBcdWM3NzRcdWJjODggXHViYzg0XHVjMmE0IFx1YzVlY1x1ZDU4OVx1Yzc1OCBcdWQxNGNcdWI5YzhcdWIyOTQgXHVjMjE4XHVjNmQwXHVjMmRjXHVjNzU4IFx1YzVlZFx1YzBhY1x1Yzc3NFx1YWUzMCBcdWI1NGNcdWJiMzhcdWM1ZDAsIFx1YWM3NFx1YzEyNCBcdWMyZGNcdWFlMzBcdWFjMDAgXHVjOTlkXHVhYzAwXHVkNTU4XHViMjk0IChcdWFjMTlcdWM1NDRcdWMxMWNcdWIyOTQgXHVjNTQ4IFx1YjQxY1x1YjJlNCEpIFx1YzIxY1x1YzczY1x1Yjg1YyBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHViOTdjIFx1YmMyOVx1YmIzOFx1ZDU1OFx1YjgyNFx1YWNlMCBcdWQ1NWNcdWIyZTQuIFx1YjYxMFx1ZDU1YywgXHVjMjE4XHVjNmQwXHVjMmRjXHVjNzU4IFx1YWNiZFx1Y2U1OFx1YjI5NCBcdWIxMDhcdWJiMzRcdWIwOThcdWIzYzQgXHVjNTQ0XHViOTg0XHViMmU0XHVjNmNjXHVjMTFjLCBcdWMwYWNcdWI3OGNcdWI0ZTRcdWM3NDAgXHViYzg0XHVjMmE0IFx1YzU0OFx1YzVkMFx1YzExYyBcdWMyMThcdWM2ZDBcdWMyZGNcdWM3NTggXHVhY2JkXHVjZTU4XHViOTdjIFx1YWMxMFx1YzBjMVx1ZDU1OFx1YjI5NCBcdWFjODNcdWM3NDQgXHVjOTkwXHVhZTM0XHViMmU0LiBcdWI1NGNcdWJiMzhcdWM1ZDAsIFx1YjQ1MCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjIFx1YzBhY1x1Yzc3NFx1Yjk3YyBcdWM3NzRcdWIzZDlcdWQ1NThcdWIyOTQgXHVjNjQwXHVjOTExXHVjNWQwXHViM2M0IFx1YjllNFx1YjgyNVx1YjNjNFx1YWMwMCAxMDBtXHViOWM4XHViMmU0IDFcdWM1MjkgXHVjOTlkXHVhYzAwXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3YWNcdWQ2MDRcdWM3NzRcdWIyOTQgXHVjNTQ0XHViYjM0IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM1ZDBcdWMxMWMgXHVjMmRjXHVjNzkxXHVkNTc0XHVjMTFjLCBcdWM5MTFcdWFjMDRcdWM1ZDAgXHVjNWVjXHViN2VjIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWI5N2MgXHViNGU0XHViOWIwIFx1ZDZjNCwgXHVjNTQ0XHViYjM0IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM1ZDBcdWMxMWMgXHViM2M0XHVjYzI5XHVkNTU4XHViMjk0IFx1YzVlY1x1ZDU4OSBcdWFjYzRcdWQ2OGRcdWM3NDQgXHViOWNjXHViNGU0XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVhYzAwXHViMmE1XHVkNTVjIFx1YzVlY1x1ZDU4OSBcdWFjYzRcdWQ2OGQgXHVjOTExLCBcdWI5ZTRcdWI4MjVcdWIzYzRcdWM3NTggXHVkNTY5XHVjNzU4IFx1Y2Q1Y1x1YjMxM1x1YWMxMlx1Yzc0MCBcdWM1YmNcdWI5YzhcdWM3NzhcdWFjMDA/IFx1YmM4NFx1YzJhNFx1YjI5NCBcdWI0NTAgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4YyBcdWMwYWNcdWM3NzRcdWI5N2MgXHVjZDVjXHViMmU4IFx1YWM3MFx1YjlhY1x1Yjg1YyBcdWM2YzBcdWM5YzFcdWM3NzRcdWJhNzAsIFx1YmM4NFx1YzJhNFx1YWMwMCBcdWM2YzBcdWM5YzFcdWM3NzRcdWIyOTQgXHViM2Q5XHVjNTQ4IFx1YzljMFx1YjA5OFx1Y2NlNFx1YjM1OCBcdWFkMDBcdWFkMTFcdWM5YzBcdWIyOTQgXHViYzI5XHViYjM4XHVkNTg4XHViMmU0XHVhY2UwIFx1Y2U1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWIgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWIzZDktXHVjMTFjIFx1YWM3MFx1YjlhY1x1YzY0MCBcdWIwYTgtXHViZDgxIFx1YWM3MFx1YjlhY1x1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzggbiwgbSBcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoMiAmbGU7IG4sIG0gJmxlOyAxMDAwKTxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWQ2YzQgbiBcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQwIFx1YWMwMVx1YWMwMVx1Yzc1OCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHVjNzU4IFx1YWM3NFx1YzEyNCBcdWMyZGNcdWFlMzBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWM3NzQgXHVjOTExIGlcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHViMjk0IG1cdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4IGE8c3ViPmksajxcL3N1Yj4gKDAgJmxlOyBhPHN1Yj5pLGo8XC9zdWI+ICZsZTsgMTA8c3VwPjY8XC9zdXA+KSBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHViYTcwLCBpXHViYzg4IFx1YjNkOS1cdWMxMWMgXHVhYzcwXHViOWFjXHVjNjQwIGpcdWJjODggXHViMGE4LVx1YmQ4MSBcdWFjNzBcdWI5YWNcdWM3NTggXHVhZDUwXHVjYzI4XHViODVjXHViOTdjIFx1Yzc1OFx1YmJmOFx1ZDU1Y1x1YjJlNC4gYTxzdWI+aSxqPFwvc3ViPiA9IDAgXHVjNzdjIFx1YWNiZFx1YzZiMCwgPHN0cm9uZz5cdWQ1NzRcdWIyZjkgXHVhYzcwXHViOWFjXHVjNzU4IFx1YWQ1MFx1Y2MyOFx1Yjg1Y1x1YzVkMFx1YjI5NCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHVhYzAwIFx1YzVjNlx1YjJlNDxcL3N0cm9uZz4uIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWIyOTQgXHVkNTU4XHViMDk4IFx1Yzc3NFx1YzBjMSBcdWM4NzRcdWM3YWNcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc3NFx1ZDZjNCBuIFx1YWMxY1x1Yzc1OCBcdWM5MDRcdWM1ZDAgXHVhYzAxXHVhYzAxXHVjNzU4IFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM3NTggXHViOWU0XHViODI1XHViM2M0XHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVjNzc0IFx1YzkxMSBpXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBtXHVhYzFjXHVjNzU4IFx1YzgxNVx1YzIxOCBjPHN1Yj5pLGo8XC9zdWI+ICgwICZsZTsgYzxzdWI+aSxqPFwvc3ViPiAmbGU7IDEwPHN1cD45PFwvc3VwPikgXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljMFx1YmE3MCwgaVx1YmM4OCBcdWIzZDktXHVjMTFjIFx1YWM3MFx1YjlhY1x1YzY0MCBqXHViYzg4IFx1YjBhOC1cdWJkODEgXHVhYzcwXHViOWFjXHVjNzU4IFx1YWQ1MFx1Y2MyOFx1Yjg1Y1x1YzVkMCBcdWM3ODhcdWIyOTQgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1Yzc1OCBcdWI5ZTRcdWI4MjVcdWIzYzRcdWI5N2MgXHViNzNiXHVkNTVjXHViMmU0LiBcdWI5Y2NcdWM1N2RcdWM1ZDAgXHVkNTc0XHViMmY5IFx1YWQ1MFx1Y2MyOFx1Yjg1Y1x1YzVkMCBcdWFkMDBcdWFkMTEgXHViYTg1XHVjMThjXHVhYzAwIFx1YzVjNlx1YjJlNFx1YmE3NCwgYzxzdWI+aSxqPFwvc3ViPiA9IDAgXHVjNzg0XHVjNzc0IFx1YmNmNFx1YzdhNVx1YjQxY1x1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDBcdWIyYTVcdWQ1NWMgXHVjNWVjXHVkNTg5IFx1YWNjNFx1ZDY4ZCBcdWM5MTEsIFx1YjllNFx1YjgyNVx1YjNjNFx1Yzc1OCBcdWQ1NjlcdWM3NTggXHVjZDVjXHViMzEzXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1Yjc3Yy48XC9wPlxyXG4iLCJoaW50IjoiPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL29ubGluZWp1ZGdlaW1hZ2VzLnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb21cL3Byb2JsZW1cLzc5NzVcLzIucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MzYwcHg7IHdpZHRoOjQyOHB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzdhY1x1ZDYwNFx1Yzc3NFx1YjI5NCAoMiwgMSkgJnJhcnI7ICgxLCA1KSAmcmFycjsgKDIsIDIpICZyYXJyOyAoNCwgNSkgJnJhcnI7ICgxLCAzKSBcdWMyMWNcdWM3M2NcdWI4NWMgXHVhZDAwXHVhZDExIFx1YmE4NVx1YzE4Y1x1Yjk3YyBcdWJjMjlcdWJiMzhcdWQ1NWNcdWIyZTQuIFx1YWQwMFx1YWQxMSBcdWJhODVcdWMxOGNcdWM3NTggXHViOWU0XHViODI1XHViM2M0XHVjNzU4IFx1ZDU2OVx1Yzc0MCAyICsgMiArIDggKyAzICsgNSA9IDIwIFx1Yzc3NFx1YWNlMCwgXHVjNzc0XHViM2Q5IFx1YzkxMVx1YzVkMCBcdWMzMTNcdWM3NDAgXHViOWU0XHViODI1XHViM2M0XHVjNzU4IFx1ZDU2OVx1Yzc0MCA1ICsgNCArIDUgKyA1ID0gMTkgXHVjNzc0XHViMmU0LiBcdWFjZTBcdWI4NWMgXHVjZDFkIFx1YjllNFx1YjgyNVx1YjNjNFx1Yzc1OCBcdWQ1NjlcdWM3NDAgMzlcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiI3OTc1IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiQnVzIFRyaXAiLCJkZXNjcmlwdGlvbiI6IjxwPkJ5dGVhc2FyIHdvcmtzIGFzIGEgdGVhY2hlciBpbiBhIHByaW1hcnkgc2Nob29sIGluIEJ5dGVidXJnLiBUaGUgd2VhdGhlciBpcyBjdXJyZW50bHkgcmVhbGx5IG5pY2UsIHNvIEJ5dGVhc2FyIHdvdWxkIGxpa2UgdG8gdGFrZSBoaXMgY2xhc3MgZm9yIGEgYnVzIHRyaXAgdG8gQnl0ZXRvd24gJm1kYXNoOyB0aGUgY2FwaXRhbCBvZiBCeXRlbGFuZC4gQnl0ZWFzYXIgaGFzIGRlY2lkZWQgdG8gaGlyZSBhIHRyYXZlbCBhZ2VuY3kgdG8gcGxhbiB0aGUgdHJpcC48XC9wPlxyXG5cclxuPHA+VGhlIHN0cmVldHMgaW4gQnl0ZXRvd24gZm9ybSBhIHJlZ3VsYXIgZ3JpZCBvZiBFYXN0LVdlc3QgYW5kIE5vcnRoLVNvdXRoIHN0cmVldHMuIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIGFueSBwYWlyIG9mIGFkamFjZW50IHBhcmFsbGVsIHN0cmVldHMgaXMgZXF1YWwgdG8gMSBraWxvbWV0ZXIuIFRoZXJlIGFyZSB0b3VyaXN0IGF0dHJhY3Rpb25zIGxvY2F0ZWQgYXQgc2V2ZXJhbCBqdW5jdGlvbnMuIEJ5dGVhbiBndWlkZXMgaGF2ZSBhc3NpZ25lZCBhdHRyYWN0aXZlbmVzcyBjb2VmZmljaWVudCB0byBlYWNoIHRvdXJpc3QgYXR0cmFjdGlvbjogdGhlIGdyZWF0ZXIgdGhlIGF0dHJhY3RpdmVuZXNzLCB0aGUgbW9yZSBpbnRlcmVzdGluZyBpcyB0aGUgYXR0cmFjdGlvbiBmb3IgdGhlIHZpc2l0b3JzLiBCeXRlYXNhciBrbm93cyB0aGF0IHRoZSBwdXBpbHMgaW4gdGhlIGNsYXNzIGhlIHRlYWNoZXMgZ2V0IGJvcmVkIGVhc2lseS4gQmVjYXVzZSBvZiB0aGF0IGhlIHJlcXVpcmVzIHRoYXQgdGhlIGF0dHJhY3Rpb25zIHZpc2l0ZWQgb24gdGhlIHRyaXAgaGF2ZSBpbmNyZWFzaW5nIGF0dHJhY3RpdmVuZXNzLjxcL3A+XHJcblxyXG48cD5UaGUgdHJhdmVsIGFnZW5jeSBoYXMgYWdyZWVkIHRvIEJ5dGVhc2FyJnJzcXVvO3MgcmVxdWlyZW1lbnRzLiBJbiBhZGRpdGlvbiwgdGhlIGFnZW5jeSB3b3VsZCBsaWtlIHRvIGVhcm4gYXMgbXVjaCBtb25leSBhcyBwb3NzaWJsZSBmb3Igb3JnYW5pemluZyB0aGUgdHJpcC4gVGhlIGFnZW5jeSBnZXRzIGEgZml4ZWQgcmF0ZSBvZiAxIGJ5dGhhbGVyIGZvciBlYWNoIGtpbG9tZXRlciBvZiB0aGUgdHJpcC4gVGhlIGJ1cyBhbHdheXMgY2hvb3NlcyB0aGUgc2hvcnRlc3Qgcm91dGUgYWxvbmcgdGhlIHN0cmVldHMgb2YgQnl0ZXRvd24gd2hlbiBkcml2aW5nIGJldHdlZW4gdGhlIGF0dHJhY3Rpb25zIG9uIHRoZSB0cmlwLiBNb3Jlb3ZlciB0aGUgYWdlbmN5IGdldHMgYWRkaXRpb25hbCBtb25leSBmcm9tIHRoZSBtYW5hZ2VycyBvZiBhdHRyYWN0aW9ucyB0aGF0IGFyZSB2aXNpdGVkIGFsb25nIHRoZSB0cmlwLjxcL3A+XHJcblxyXG48cD5IZWxwIHRoZSBhZ2VuY3kgcGxhbiBhIHRyaXAgdGhhdCBzYXRpc2ZpZXMgQnl0ZWFzYXImcnNxdW87cyByZXF1aXJlbWVudHMgYW5kIGdyYW50cyB0aGUgYWdlbmN5IHRoZSBoaWdoZXN0IHByb2ZpdC4gUGxlYXNlIG5vdGUgdGhhdCBkcml2aW5nIG5leHQgdG8gYSB0b3VyaXN0IGF0dHJhY3Rpb24gKHdpdGhvdXQgc3RvcHBpbmcpIGRvZXMgbm90IGNvdW50IGFzIHZpc2l0aW5nIHRoZSBhdHRyYWN0aW9uLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGZpcnN0IGxpbmUgb2YgaW5wdXQgY29udGFpbnMgdHdvIGludGVnZXJzIG4gYW5kIG0gKDIgJmxlOyBuLCBtICZsZTsgMTAwMCksIHRoZSBudW1iZXIgb2YgRWFzdC1XZXN0IHN0cmVldHMgYW5kIHRoZSBudW1iZXIgb2YgTm9ydGgtU291dGggc3RyZWV0cy48XC9wPlxyXG5cclxuPHA+biBsaW5lcyBmb2xsb3cgd2l0aCBhIGRlc2NyaXB0aW9uIG9mIHRoZSB0b3VyaXN0IGF0dHJhY3Rpb25zIGluIEJ5dGV0b3duLiBUaGUgaS10aCBvZiB0aGVzZSBsaW5lcyBob2xkcyBtIGludGVnZXJzIHc8c3ViPmksajxcL3N1Yj4gKDAgJmxlOyB3PHN1Yj5pLGo8XC9zdWI+ICZsZTsgMTA8c3VwPjY8XC9zdXA+KSB0aGF0IGdpdmUgdGhlIGF0dHJhY3RpdmVuZXNzIG9mIGVhY2ggb2YgdGhlIGF0dHJhY3Rpb25zIGxvY2F0ZWQgYXQgdGhlIGp1bmN0aW9ucyBvZiB0aGUgaS10aCBFYXN0LVdlc3Qgc3RyZWV0IHdpdGggdGhlIHJlc3BlY3RpdmUgTm9ydGgtU291dGggc3RyZWV0cy4gQXR0cmFjdGl2ZW5lc3MgMCBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIHRvdXJpc3QgYXR0cmFjdGlvbiBhdCB0aGUgcmVzcGVjdGl2ZSBqdW5jdGlvbi4gWW91IGNhbiBhc3N1bWUgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdG91cmlzdCBhdHRyYWN0aW9uIGluIEJ5dGV0b3duLjxcL3A+XHJcblxyXG48cD5FYWNoIG9mIHRoZSBmb2xsb3dpbmcgbiBsaW5lcyBob2xkcyBuIGludGVnZXJzIGM8c3ViPmksajxcL3N1Yj4gKDAgJmxlOyBjPHN1Yj5pLGo8XC9zdWI+ICZsZTsgMTA8c3VwPjk8XC9zdXA+KS4gVGhlIG51bWJlciBjPHN1Yj5pLGo8XC9zdWI+LCB0aGF0IGlzLCB0aGUgai10aCBudW1iZXIgaW4gdGhlIGktdGggb2YgdGhlIGNvbnNpZGVyZWQgbGluZXMsIHJlcHJlc2VudHMgdGhlIGFtb3VudCBvZiBtb25leSAoaW4gYnl0aGFsZXJzKSB0aGF0IHRoZSBhZ2VuY3kgcmVjZWl2ZXMgZm9yIG1ha2luZyBhIHRyaXAgbGVhZCB0aHJvdWdoIHRoZSB0b3VyaXN0IGF0dHJhY3Rpb24gZGVzY3JpYmVkIGJ5IHRoZSBhdHRyYWN0aXZlbmVzcyB3PHN1Yj5pLGo8XC9zdWI+LiBJZiB0aGVyZSBpcyBubyB0b3VyaXN0IGF0dHJhY3Rpb24gYXQgYSBqdW5jdGlvbiwgdGhlIGNvcnJlc3BvbmRpbmcgbnVtYmVyIGNpLGogZXF1YWxzIDAuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+VGhlIG9ubHkgbGluZSBvZiBvdXRwdXQgc2hvdWxkIGNvbnRhaW4gb25lIGludGVnZXI6IHRoZSBtYXhpbXVtIHByb2ZpdCAoaW4gYnl0aGFsZXJzKSB0aGF0IHRoZSBhZ2VuY3kgY2FuIG1ha2UgZm9yIG9yZ2FuaXppbmcgYSB0cmlwIGxlYWRpbmcgdGhyb3VnaCBhIG51bWJlciBvZiBhdHRyYWN0aW9ucyB3aXRoIHN0cmljdGx5IGluY3JlYXNpbmcgYXR0cmFjdGl2ZW5lc3MuPFwvcD5cclxuIiwiaGludCI6IjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL29ubGluZWp1ZGdlaW1hZ2VzLnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb21cL3Byb2JsZW1cLzc5NzVcLzEucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MjcwcHg7IHdpZHRoOjMzMHB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPkV4cGxhbmF0aW9uIG9mIHRoZSBleGFtcGxlOiBUaGUgbnVtYmVycyBpbiB0aGUganVuY3Rpb25zIHJlcHJlc2VudCB0aGUgYXR0cmFjdGl2ZW5lc3Mgb2YgdGhlIHJlc3BlY3RpdmUgYXR0cmFjdGlvbnMuIFRoZSBudW1iZXJzIHdyaXR0ZW4gaW4gaXRhbGljIHJlcHJlc2VudCB0aGUgcHJvZml0IG9mIHRoZSB0cmF2ZWwgYWdlbmN5IGZvciBtYWtpbmcgYSB0cmlwIGxlYWQgdGhyb3VnaCB0aGUgcmVzcGVjdGl2ZSBhdHRyYWN0aW9ucy4gVGhlIG1vc3QgcHJvZml0YWJsZSB0cmlwIGZvciB0aGUgYWdlbmN5IGlzIGhpZ2hsaWdodGVkIHdpdGggY2lyY2xlczogdGhlIGFnZW5jeSByZWNlaXZlcyAyLCAyLCA4LCAzIGFuZCA1IGJ5dGhhbGVycyBmb3IgdGhlc2UgYXR0cmFjdGlvbnMgcmVzcGVjdGl2ZWx5LCBhbmQgbW9yZW92ZXIgaXQgcmVjZWl2ZXMgMTkgYnl0aGFsZXJzIGFzIHRoZSBidXMgZmFyZS48XC9wPlxyXG4iLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=