-
Notifications
You must be signed in to change notification settings - Fork 0
/
drive-red.vex
1 lines (1 loc) · 18 KB
/
drive-red.vex
1
./___ThIsisATemPoRaRyFiLE___.json 000666 000000 000000 0000040366 13511043203 017120 0 ustar 00 000000 000000 13511043203 13511043203 {"title":"drive-red","description":"Use this template for all competition code.","version":"0.0.1","icon":"USER000x.bmp","files":{"robot-config.h":"dXNpbmcgbmFtZXNwYWNlIHZleDsKCmJyYWluIEJyYWluID0gYnJhaW4oKTsKY29udHJvbGxlciBDb250cm9sbGVyID0gY29udHJvbGxlcigpOwoKCm1vdG9yIExlZnRGcm9udChQT1JUNSxnZWFyU2V0dGluZzo6cmF0aW8xOF8xLGZhbHNlKTsKbW90b3IgTGVmdEJhY2soUE9SVDIsZ2VhclNldHRpbmc6OnJhdGlvMThfMSxmYWxzZSk7Cm1vdG9yIFJpZ2h0RnJvbnQoUE9SVDE5LGdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7Cm1vdG9yIFJpZ2h0QmFjayhQT1JUMTIsZ2VhclNldHRpbmc6OnJhdGlvMThfMSx0cnVlKTsKCgoKCm1vdG9yIExpZnRpbmcxKFBPUlQ0LGdlYXJTZXR0aW5nOjpyYXRpbzZfMSxmYWxzZSk7Cm1vdG9yIExpZnRpbmcyKFBPUlQxMSxnZWFyU2V0dGluZzo6cmF0aW82XzEsdHJ1ZSk7Cm1vdG9yIExpZnRpbmczKFBPUlQzLGdlYXJTZXR0aW5nOjpyYXRpbzZfMSx0cnVlKTsKCm1vdG9yIENsYW1wKFBPUlQ2LGdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwoKYnVtcGVyIEJ1bXBlclVwID0gYnVtcGVyKEJyYWluLlRocmVlV2lyZVBvcnQuQSk7CmJ1bXBlciBCdW1wZXJEb3duID0gYnVtcGVyKEJyYWluLlRocmVlV2lyZVBvcnQuQik7Cg==","main.cpp":"I2luY2x1ZGUgInJvYm90LWNvbmZpZy5oIgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNkZWZpbmUgczEgdGFzazo6c2xlZXAoMTAwMCkKI2RlZmluZSBzMiB0YXNrOjpzbGVlcCgyMDAwKQoKdXNpbmcgbmFtZXNwYWNlIHZleDsKCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlIENvZGUgLSAwNy8wNy8xOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCBSZWQgRnJvbnQgQXV0b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlZDoyIHRvd2VyOjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYuMCAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSAgWkpRLCBMS1ksIExTUSAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgp2ZXg6OmNvbXBldGl0aW9uIENvbXBldGl0aW9uOwoKCnZvaWQgcHJlX2F1dG9uKCB2b2lkICkgewogICAgCn0KCgoKLy9tZXRob2RzCnZvaWQgZm9yd2FyZChpbnQgeCxpbnQgdil7CiAgICBSaWdodEZyb250LnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFjay5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnQuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2suc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgYmFja3dhcmQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udC5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnQuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0Kdm9pZCB0dXJuUmlnaHQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udC5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnQuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2suc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgdHVybkxlZnQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udC5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2suc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEZyb250LnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFjay5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgY2xhbXBDbG9zZShpbnQgeCxpbnQgdil7CiAgICBDbGFtcC5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0Kdm9pZCBjbGFtcE9wZW4oaW50IHgsaW50IHYpewogICAgQ2xhbXAuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKfQp2b2lkIGxpZnREb3duKGludCB4LGludCB2KXsKICAgIExpZnRpbmcxLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExpZnRpbmcyLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExpZnRpbmczLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKfQp2b2lkIGxpZnRVcChpbnQgeCxpbnQgdil7CiAgICBMaWZ0aW5nMS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGlmdGluZzIuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExpZnRpbmczLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0KCgovL2NsYW1wIDQ1MCAtIDkwIGRlZwovL2xpZnQgIDIyNSAtIDJuZCBjdWJlIHdhcyAxMDAgKjIuMjUKLy8gICAgICA1NTAgLSAzcmQgY3ViZSB3YXMgMjAwCi8vZm9yd2FyZCAgIDcwMCAtIDEgcGFkCi8vdHVybiAgICAgIDM2MCAtIDkwIGRlZwoKdm9pZCBhdXRvbm9tb3VzKCB2b2lkICkgewogICAgCiAgICBSaWdodEZyb250LnNldFN0b3BwaW5nKHZleDo6YnJha2VUeXBlOjpjb2FzdCk7CiAgICBSaWdodEJhY2suc2V0U3RvcHBpbmcodmV4OjpicmFrZVR5cGU6OmNvYXN0KTsKICAgIExlZnRGcm9udC5zZXRTdG9wcGluZyh2ZXg6OmJyYWtlVHlwZTo6Y29hc3QpOwogICAgTGVmdEJhY2suc2V0U3RvcHBpbmcodmV4OjpicmFrZVR5cGU6OmNvYXN0KTsKICAgIExpZnRpbmcxLnNldFN0b3BwaW5nKGJyYWtlVHlwZTo6aG9sZCk7CiAgICBMaWZ0aW5nMi5zZXRTdG9wcGluZyhicmFrZVR5cGU6OmhvbGQpOwogICAKICAgIAogICAgLyoKICAgICAgICBOT1RJQ0U6CiAgICAgICAgY29kZSBtaWdodCBsb29rIHdlaXJkCiAgICAgICAgd2VpcmQgc3BlZWQgb3IgcmVwZWF0ZWQgZm9yICJubyByZWFzb24iCiAgICAgICAgYnV0IGFsbCBjb2RlIGhhcyBpdHMgbWVhbmluZwogICAgICAgIHVubGVzcyBpdCdzIGEgdHlwbwogICAgICAgIGJ1dCB0eXBvIGFyZSB2ZXJ5IHJhcmUKICAgICAgICBzbwogICAgICAgIERPTidUIERFTEVURSBBTlkgV0VJUkQgQ09ERQogICAgICAgIGlmIHlvdSBkb24ndCB3YW50IHRvIGV4ZWN1dGUgc29tZSBzcGVjaWZpYyBsaW5lcyBvZiBjb2RlCiAgICAgICAgY29tbWVudCBpdCBvdXQgcGx6CiAgICAqLwogICAgCiAgICAKICAgIAogICAgCiAgICAvL2N1YmUgMSBzY29yZWQKICAgIGZvcndhcmQoMjUwLDUwKTsKICAgIHRhc2s6OnNsZWVwKDMwMCk7CiAgICBmb3J3YXJkKDIwLDgwKTsKICAgIGxpZnRVcCgyMDAsNzApOwogICAgdGFzazo6c2xlZXAoNDAwKTsKICAgIGxpZnRVcCgxMjUsNTApOwogICAgYmFja3dhcmQoNTAwLDUwKTsKICAgIC8vb3BlbiBjbGFtcAogICAgY2xhbXBDbG9zZSg0NTAsNzApOyAKICAgIHMxOwogICAgbGlmdERvd24oNDAwLDYwKTsKICAgIAogICAgCiAgICAvL2N1YmUgMgogICAgCiAgICAKICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioKICAgIHR1cm5SaWdodCgxMzAsMzApOwogICAgczE7CiAgICBmb3J3YXJkKDMyMCw1MCk7CiAgICBzMTsKICAgIC8vY2xhbXAgY3ViZSAyCiAgICBmb3J3YXJkKDUwLDI1KTsKICAgIGNsYW1wQ2xvc2UoNDUwLDkwKTsKICAgIHMxOwogICAgbGlmdFVwKDI1MCwzMCk7CiAgICBiYWNrd2FyZCg0NzAsMzApOwogICAgY2xhbXBDbG9zZSg1LDIpOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioKICAgIHR1cm5MZWZ0KDIwMCwzMCk7CiAgICBzMTsKICAgIAogICAgLy9wdXQgdGhlIHNlY29uZCBjdWJlIGRvd24KICAgIGNsYW1wQ2xvc2UoNSwyKTsKICAgIGxpZnRVcCgzMTAsMzUpOwogICAgZm9yd2FyZCgzMDAsNDApOwogICAgczE7CiAgICAvL3Nsb3cgcGxhY2UgdGhlIHNlY29uZCBjdWJlCiAgICBmb3J3YXJkKDYwLDEwKTsKICAgIHRhc2s6OnNsZWVwKDIwMCk7CiAgICBjbGFtcE9wZW4oMjAwLDcwKTsKICAgIHMxOwogICAgbGlmdFVwKDIwLDIwKTsKICAgIHRhc2s6OnNsZWVwKDIwMCk7CiAgICAKICAgIGJhY2t3YXJkKDQyMCw3MCk7CiAgICBzMTsKICAgIAogICAgCiAgICAKICAgIC8vY3ViZSAxIHRvd2VyCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioKICAgIGxpZnREb3duKDYzMCw2MCk7CiAgICB0dXJuUmlnaHQoNDIwLDUwKTsKICAgIHMxOwogICAgCiAgICBiYWNrd2FyZCgzMDAsNzApOwogICAgczE7CiAgICBmb3J3YXJkKDEyMDAsNjUpOwogICAgdGFzazo6c2xlZXAoMTUwMCk7CiAgICAvL2ZvcndhcmQoOTAwLDY1KTsKICAgIC8vczE7CiAgICBjbGFtcENsb3NlKDI2MCw3MCk7CiAgICBzMTsKICAgIGNsYW1wQ2xvc2UoNSwyKTsKICAgIGJhY2t3YXJkKDIzMCw1MCk7CiAgICBsaWZ0VXAoMTQwMCw2MCk7CiAgICBzMTsKICAgIGZvcndhcmQoMjMwLDIwKTsKICAgIGNsYW1wQ2xvc2UoNSwyKTsKICAgIHMxOwogICAgY2xhbXBPcGVuKDIwMCw3MCk7CiAgICBzMTsKICAgIAogICAgCiAgICAKICAgIC8vYWJvdmUgbW9zdGx5IG9rCgogICAgCiAgICAKICAgIGJhY2t3YXJkKDExMDAsNjApOwogICAgbGlmdERvd24oMTQ1MCw3MCk7CiAgICBjbGFtcE9wZW4oMTAwLDcwKTsKICAgIHRhc2s6OnNsZWVwKDE1MDApOwogICAgCiAgICAKICAgIC8vY3ViZSAyIHRvd2VyCiAgICAKICAgIHR1cm5SaWdodCgxNTAsNjApOwogICAgczE7CiAgICBmb3J3YXJkKDEwMCw2MCk7CiAgICB0YXNrOjpzbGVlcCg1MDApOwogICAgZm9yd2FyZCg1MCwzMCk7CiAgICBjbGFtcENsb3NlKDI3MCw3MCk7CiAgICBzMTsKICAgIGNsYW1wQ2xvc2UoNSwyKTsKICAgIGxpZnRVcCgxNzAwLDQwKTsKICAgIHR1cm5SaWdodCgxNTAsMzApOwogICAgczI7CiAgICBjbGFtcENsb3NlKDUsMik7CiAgICBmb3J3YXJkKDMwMCwzMCk7CiAgICBzMTsKICAgIGNsYW1wT3Blbig0MDAsNzApOwogICAgczE7CiAgICAKICAgIAogICAgCiAgICAKfQoKdm9pZCB1c2VyY29udHJvbCggdm9pZCApIHsKICAgIAogIHdoaWxlICgxKSB7CiAgICAgIAogICAgICBSaWdodEZyb250LnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgICBSaWdodEJhY2suc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgICBMZWZ0RnJvbnQuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgICBMZWZ0QmFjay5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsKICAgICAgTGlmdGluZzEuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7ICAgICAgCiAgICAgIExpZnRpbmcyLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOyAgCiAgICAgIExpZnRpbmczLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOyAgCiAgICAgIENsYW1wLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgICAKICAgICAgaW50IHZhbHVlMT0wOwogICAgICBpbnQgdmFsdWUzPTA7CiAgICAgIAogICAgICBpZihDb250cm9sbGVyLkF4aXMxLnZhbHVlKCk+MCYmQ29udHJvbGxlci5BeGlzMS52YWx1ZSgpPD04MCl7CiAgICAgICAgICB2YWx1ZTE9Q29udHJvbGxlci5BeGlzMS52YWx1ZSgpLzIuNTsKICAgICAgIH0KICAgICAgZWxzZSBpZihDb250cm9sbGVyLkF4aXMxLnZhbHVlKCk+ODApewogICAgICAgICAgdmFsdWUxPXBvdyhDb250cm9sbGVyLkF4aXMxLnZhbHVlKCksMikvMjAwOwogICAgICB9CiAgICAgIGlmKENvbnRyb2xsZXIuQXhpczEudmFsdWUoKTwwJiZDb250cm9sbGVyLkF4aXMxLnZhbHVlKCk+PS04MCl7CiAgICAgICAgICB2YWx1ZTE9Q29udHJvbGxlci5BeGlzMS52YWx1ZSgpLzIuNTsKICAgICAgfQogICAgICBlbHNlIGlmKENvbnRyb2xsZXIuQXhpczEudmFsdWUoKTwtODApewogICAgICAgICAgdmFsdWUxPS1wb3coQ29udHJvbGxlci5BeGlzMS52YWx1ZSgpLDIpLzIwMDsKICAgICAgfSAKICAgICAgCiAgICAgIC8vdmFsdWUxPUNvbnRyb2xsZXIuQXhpczEudmFsdWUoKTsgCiAgICAgIHZhbHVlMz1Db250cm9sbGVyLkF4aXMzLnZhbHVlKCk7IAogICAgICAKICAgICAgTGVmdEZyb250LnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCh2YWx1ZTErdmFsdWUzKSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICBMZWZ0QmFjay5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwodmFsdWUxK3ZhbHVlMyksdmVsb2NpdHlVbml0czo6cGN0KTsgCiAgICAgIFJpZ2h0RnJvbnQuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsKHZhbHVlMS12YWx1ZTMpLHZlbG9jaXR5VW5pdHM6OnBjdCk7IAogICAgICBSaWdodEJhY2suc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsKHZhbHVlMS12YWx1ZTMpLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgCiAgICAgIAogICAgICBpZihCdW1wZXJVcC5wcmVzc2luZygpKXsKICAgICAgICAgIGlmKENvbnRyb2xsZXIuQnV0dG9uUjEucHJlc3NpbmcoKSl7CiAgICAgICAgICAgICAgTGlmdGluZzEuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzIuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzMuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmKENvbnRyb2xsZXIuQnV0dG9uRG93bi5wcmVzc2luZygpKXsKICAgICAgICAgICAgICBMaWZ0aW5nMS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICBMaWZ0aW5nMi5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICBMaWZ0aW5nMy5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgLy9MaWZ0aW5nMS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgLy9MaWZ0aW5nMi5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzEuc3RvcChicmFrZVR5cGU6OmhvbGQpOwogICAgICAgICAgICAgIExpZnRpbmcyLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgICAgICAgICAgICBMaWZ0aW5nMy5zdG9wKGJyYWtlVHlwZTo6aG9sZCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIGVsc2UgaWYoQnVtcGVyRG93bi5wcmVzc2luZygpKXsKICAgICAgICAgIGlmKENvbnRyb2xsZXIuQnV0dG9uUjIucHJlc3NpbmcoKSl7CiAgICAgICAgICAgICAgTGlmdGluZzEuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzIuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzMuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmKENvbnRyb2xsZXIuQnV0dG9uVXAucHJlc3NpbmcoKSl7CiAgICAgICAgICAgICAgTGlmdGluZzEuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzIuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgTGlmdGluZzMuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICB9CiAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgLy9MaWZ0aW5nMS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgIC8vTGlmdGluZzIuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMSx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgICAgICBMaWZ0aW5nMS5zdG9wKGJyYWtlVHlwZTo6aG9sZCk7CiAgICAgICAgICAgICAgIExpZnRpbmcyLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgICAgICAgICAgICAgTGlmdGluZzMuc3RvcChicmFrZVR5cGU6OmhvbGQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBlbHNlewogICAgICAgICAgaWYoQ29udHJvbGxlci5CdXR0b25SMS5wcmVzc2luZygpKXsKICAgICAgICAgICAgICAgTGlmdGluZzEuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgIExpZnRpbmcyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgICAgICBMaWZ0aW5nMy5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYoQ29udHJvbGxlci5CdXR0b25SMi5wcmVzc2luZygpKXsKICAgICAgICAgICAgICAgTGlmdGluZzEuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICAgICAgIExpZnRpbmcyLnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgICAgICBMaWZ0aW5nMy5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYoQ29udHJvbGxlci5CdXR0b25VcC5wcmVzc2luZygpKXsKICAgICAgICAgICAgICBMaWZ0aW5nMS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICBMaWZ0aW5nMi5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICBMaWZ0aW5nMy5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYoQ29udHJvbGxlci5CdXR0b25Eb3duLnByZXNzaW5nKCkpewogICAgICAgICAgICAgIExpZnRpbmcxLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgICAgIExpZnRpbmcyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgICAgIExpZnRpbmczLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgfQogICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAvL0xpZnRpbmcxLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICAvL0xpZnRpbmcyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDEsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgICAgICBMaWZ0aW5nMS5zdG9wKGJyYWtlVHlwZTo6aG9sZCk7CiAgICAgICAgICAgICAgTGlmdGluZzIuc3RvcChicmFrZVR5cGU6OmhvbGQpOwogICAgICAgICAgICAgIExpZnRpbmczLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgCiAgICAgIAogICAgICBpZihDb250cm9sbGVyLkJ1dHRvbkwxLnByZXNzaW5nKCkpewogICAgICAgICAgQ2xhbXAuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgIH0KICAgICAgZWxzZSBpZihDb250cm9sbGVyLkJ1dHRvbkwyLnByZXNzaW5nKCkpewogICAgICAgICAgQ2xhbXAuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgIH0KICAgICAgZWxzZXsKICAgICAgICAgIENsYW1wLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgICAgfQogICAgICAKICAgICAgaWYoQ29udHJvbGxlci5CdXR0b25ZLnByZXNzaW5nKCkpewogICAgICAgICAgbGlmdFVwKDEwMCw4MCk7CiAgICAgICAgICBjbGFtcENsb3NlKDcwMCw4MCk7ICAKICAgICAgICAgIGJhY2t3YXJkKDEwMCw4MCk7CiAgICAgICAgICB0YXNrOjpzbGVlcCg4MDApOwogICAgICAgICAgdHVyblJpZ2h0KDUwLDgwKTsKICAgICAgICAgIGxpZnREb3duKDE1MCw4MCk7CiAgICAgICAgICB0YXNrOjpzbGVlcCg4MDApOwogICAgICAgICAgZm9yd2FyZCg1MDAsODApOwogICAgICAgICAgdGFzazo6c2xlZXAoMTAwMCk7CiAgICAgICAgICBiYWNrd2FyZCg1MDAsODApOwogICAgICAgICAgdGFzazo6c2xlZXAoMTAwMCk7CiAgICAgIH0KICAgICAgaWYoQ29udHJvbGxlci5CdXR0b25YLnByZXNzaW5nKCkpewogICAgICAgICAgbGlmdFVwKDEwMCw4MCk7CiAgICAgICAgICBjbGFtcENsb3NlKDcwMCw4MCk7ICAKICAgICAgICAgIGJhY2t3YXJkKDEwMCw4MCk7CiAgICAgICAgICB0YXNrOjpzbGVlcCg4MDApOwogICAgICAgICAgdHVybkxlZnQoNTAsODApOwogICAgICAgICAgbGlmdERvd24oMTUwLDgwKTsKICAgICAgICAgIHRhc2s6OnNsZWVwKDgwMCk7CiAgICAgICAgICBmb3J3YXJkKDUwMCw4MCk7CiAgICAgICAgICB0YXNrOjpzbGVlcCgxMDAwKTsKICAgICAgICAgIGJhY2t3YXJkKDUwMCw4MCk7CiAgICAgICAgICB0YXNrOjpzbGVlcCgxMDAwKTsKICAgICAgfQogICAgCiAgICAgIAogICAgICAKICAgIHRhc2s6OnNsZWVwKDIwKTsgCiAgfQp9CgoKCgppbnQgbWFpbigpIHsKICAgIAogICAgLy9SdW4gdGhlIHByZS1hdXRvbm9tb3VzIGZ1bmN0aW9uLiAKICAgIHByZV9hdXRvbigpOwogICAgCiAgICAvL1NldCB1cCBjYWxsYmFja3MgZm9yIGF1dG9ub21vdXMgYW5kIGRyaXZlciBjb250cm9sIHBlcmlvZHMuCiAgICBDb21wZXRpdGlvbi5hdXRvbm9tb3VzKCBhdXRvbm9tb3VzICk7CiAgICBDb21wZXRpdGlvbi5kcml2ZXJjb250cm9sKCB1c2VyY29udHJvbCApOwoKICAgIC8vUHJldmVudCBtYWluIGZyb20gZXhpdGluZyB3aXRoIGFuIGluZmluaXRlIGxvb3AuICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB3aGlsZSgxKSB7CiAgICAgIHZleDo6dGFzazo6c2xlZXAoMTAwKTsvL1NsZWVwIHRoZSB0YXNrIGZvciBhIHNob3J0IGFtb3VudCBvZiB0aW1lIHRvIHByZXZlbnQgd2FzdGVkIHJlc291cmNlcy4KICAgIH0gICAgCiAgICAgICAKfQ=="},"device":{"slot":2,"type":"vexV5"},"language":{"name":"c++"},"components":[]}