-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVCABs Competition Template.vex
1 lines (1 loc) · 22 KB
/
VCABs Competition Template.vex
1
./___ThIsisATemPoRaRyFiLE___.json 000666 000000 000000 0000050430 13462627600 017146 0 ustar 00 000000 000000 13462465500 31106215312 {"title":"VCABs Competition Template","description":"Use this template for all competition code.","version":"0.0.1","icon":"USER000x.bmp","files":{"robot-config.h":"dXNpbmcgbmFtZXNwYWNlIHZleDsKdmV4OjpicmFpbiBCcmFpbjsKdmV4Ojptb3RvciBMZWZ0RHJpdmUgKHZleDo6UE9SVDIsIHZleDo6Z2VhclNldHRpbmc6OnJhdGlvMThfMSxmYWxzZSk7CnZleDo6bW90b3IgUmlnaHREcml2ZTIgKHZleDo6UE9SVDMsIHZleDo6Z2VhclNldHRpbmc6OnJhdGlvMThfMSx0cnVlKTsKdmV4Ojptb3RvciBMZWZ0RHJpdmUyICh2ZXg6OlBPUlQxOSwgdmV4OjpnZWFyU2V0dGluZzo6cmF0aW8xOF8xLGZhbHNlKTsKdmV4Ojptb3RvciBSaWdodERyaXZlICh2ZXg6OlBPUlQyMCwgdmV4OjpnZWFyU2V0dGluZzo6cmF0aW8xOF8xLHRydWUpOwp2ZXg6OmNvbnRyb2xsZXIgQ29udHJvbGxlcjE7","main.cpp":"I2luY2x1ZGUgInJvYm90LWNvbmZpZy5oIgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgIERlc2NyaXB0aW9uOiBDb21wZXRpdGlvbiB0ZW1wbGF0ZSBmb3IgVkNTIFZFWCBWNSAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vQ3JlYXRlcyBhIGNvbXBldGl0aW9uIG9iamVjdCB0aGF0IGFsbG93cyBhY2Nlc3MgdG8gQ29tcGV0aXRpb24gbWV0aG9kcy4KdmV4Ojpjb21wZXRpdGlvbiAgICBDb21wZXRpdGlvbjsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgIFByZS1BdXRvbm9tb3VzIEZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICBZb3UgbWF5IHdhbnQgdG8gcGVyZm9ybSBzb21lIGFjdGlvbnMgYmVmb3JlIHRoZSBjb21wZXRpdGlvbiBzdGFydHMuICAgICAgKi8KLyogIERvIHRoZW0gaW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbi4gIFlvdSBtdXN0IHJldHVybiBmcm9tIHRoaXMgZnVuY3Rpb24gICAqLwovKiAgb3IgdGhlIGF1dG9ub21vdXMgYW5kIHVzZXJjb250cm9sIHRhc2tzIHdpbGwgbm90IGJlIHN0YXJ0ZWQuICBUaGlzICAgICAgICovCi8qICBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBvbmNlIGFmdGVyIHRoZSBjb3J0ZXggaGFzIGJlZW4gcG93ZXJlZCBvbiBhbmQgICAgKi8KLyogIG5vdCBldmVyeSB0aW1lIHRoYXQgdGhlIHJvYm90IGlzIGRpc2FibGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2b2lkIHByZV9hdXRvbiggdm9pZCApIHsKICAvLyBBbGwgYWN0aXZpdGllcyB0aGF0IG9jY3VyIGJlZm9yZSB0aGUgY29tcGV0aXRpb24gc3RhcnRzCiAgLy8gRXhhbXBsZTogY2xlYXJpbmcgZW5jb2RlcnMsIHNldHRpbmcgc2Vydm8gcG9zaXRpb25zLCAuLi4KICAKfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b25vbW91cyBUYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgVGhpcyB0YXNrIGlzIHVzZWQgdG8gY29udHJvbCB5b3VyIHJvYm90IGR1cmluZyB0aGUgYXV0b25vbW91cyBwaGFzZSBvZiAgICovCi8qICBhIFZFWCBDb21wZXRpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgWW91IG11c3QgbW9kaWZ5IHRoZSBjb2RlIHRvIGFkZCB5b3VyIG93biByb2JvdCBzcGVjaWZpYyBjb21tYW5kcyBoZXJlLiAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkNBQnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVkIGJ5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgQmVuIENvcm5lbGl1cyBhbmQgT3JpbiBTZWxieSAoMjAxOSkgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgIEZvciAyLXdoZWVsIGRyaXZlOiAgdXNlIHRoZSBibG9ja3MgYXMgdGhleSBhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgRm9yIDQtd2hlZWwgZHJpdmU6ICB1bmNvbW1lbnQgKGRlbGV0ZSAgIi8vIiBiZWZvcmUgdGhlIGNvbW1hbmQpIHRoZSAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgIFJlYXJEcml2ZSBjb21tYW5kcyBmb3IgZWFjaCBibG9jayAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgIE5hbWUgdGhlIG1vdG9yczogICAgTGVmdERyaXZlLCBSaWdodERyaXZlLCBSaWdodERyaXZlMiwgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICBMZWZ0RHJpdmUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICBCZSBzdXJlIHRvIHJldmVyc2UgYW55IG1vdG9ycyB0aGF0IG5lZWQgdG8gYmUgcmV2ZXJzZWQgaW4gb3JkZXIgdG8gZ28gICAqLwovKiAgICAgIGZvcndhcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgVEhFU0UgRFJJVkUgQkxPQ0tTIFdJTEwgT05MWSBXT1JLIElGIEFMTCBXSEVFTFMgQVJFIFRIRSBTQU1FIFNJWkUgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgppbnQgb25lQmxvY2s7Cgp2b2lkIG1vdmVGd2QoaW50IGRlZyA9IDIwMCwgaW50IHJwbXMgPSAxNjApewogICAgQ29udHJvbGxlcjEuU2NyZWVuLmNsZWFyU2NyZWVuKCk7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uc2V0Q3Vyc29yKDEsMSk7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoIm1vdmVGd2QiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICAvL0xlZnREcml2ZTIucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOyAgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgLy9SaWdodERyaXZlMi5yb3RhdGVGb3IoZGVnLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSxmYWxzZSk7ICAgIC8vdW5jb21tZW50IGlmIHlvdSBoYXZlIDQtd2hlZWwgZHJpdmUKICAgIFJpZ2h0RHJpdmUucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOyAgICAKICAgIExlZnREcml2ZS5yb3RhdGVGb3IoZGVnLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSk7Cn0KCnZvaWQgbW92ZUJ3ZChpbnQgZGVnID0gMjAwLCBpbnQgcnBtcyA9IDE2MCl7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uY2xlYXJTY3JlZW4oKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMSwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgibW92ZUJrd2QiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICAvL0xlZnREcml2ZTIucm90YXRlRm9yKC1kZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgIC8vdW5jb21tZW50IGlmIHlvdSBoYXZlIDQtd2hlZWwgZHJpdmUKICAgIC8vUmlnaHREcml2ZTIucm90YXRlRm9yKC1kZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgUmlnaHREcml2ZS5yb3RhdGVGb3IoLWRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOwogICAgTGVmdERyaXZlLnJvdGF0ZUZvcigtZGVnLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSk7Cn0KCnZvaWQgelJpZ2h0KGludCBkZWcgPSAzMTUsIGludCBycG1zID0gMTAwKXsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5jbGVhclNjcmVlbigpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigxLDEpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KCJ6UmlnaHQiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICAvL0xlZnREcml2ZTIucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOyAgICAgIC8vdW5jb21tZW50IGlmIHlvdSBoYXZlIDQtd2hlZWwgZHJpdmUKICAgIC8vUmlnaHREcml2ZTIucm90YXRlRm9yKC1kZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgUmlnaHREcml2ZS5yb3RhdGVGb3IoLWRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOwogICAgTGVmdERyaXZlLnJvdGF0ZUZvcihkZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtKTsKfQoKdm9pZCB6TGVmdChpbnQgZGVnID0gMzE1LCBpbnQgcnBtcyA9IDEwMCl7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uY2xlYXJTY3JlZW4oKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMSwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiekxlZnQiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICAvL0xlZnREcml2ZTIucm90YXRlRm9yKC1kZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgLy9SaWdodERyaXZlMi5yb3RhdGVGb3IoZGVnLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSxmYWxzZSk7ICAgIC8vdW5jb21tZW50IGlmIHlvdSBoYXZlIDQtd2hlZWwgZHJpdmUKICAgIFJpZ2h0RHJpdmUucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOwogICAgTGVmdERyaXZlLnJvdGF0ZUZvcigtZGVnLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSk7Cn0KCnZvaWQgd2lkZVJpZ2h0KGludCBkZWcgPSA2MzAsIGludCBycG1zID0gMTAwKXsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5jbGVhclNjcmVlbigpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigxLDEpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KCJ3aWRlUmlnaHQiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICBSaWdodERyaXZlLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgIC8vUmlnaHREcml2ZTIuc3RvcChicmFrZVR5cGU6OmhvbGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VuY29tbWVudCBpZiB5b3UgaGF2ZSA0LXdoZWVsIGRyaXZlCiAgICAvL0xlZnREcml2ZTIucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOyAgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgTGVmdERyaXZlLnJvdGF0ZUZvcihkZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtKTsKfQoKdm9pZCB3aWRlTGVmdChpbnQgZGVnID0gNjMwLCBpbnQgcnBtcyA9IDEwMCl7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uY2xlYXJTY3JlZW4oKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMSwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgid2lkZUxlZnQiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoZGVnKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiUlBNczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMywxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQocnBtcyk7CiAgICBMZWZ0RHJpdmUuc3RvcChicmFrZVR5cGU6OmhvbGQpOwogICAgLy9MZWZ0RHJpdmUyLnN0b3AoYnJha2VUeXBlOjpob2xkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VuY29tbWVudCBpZiB5b3UgaGF2ZSA0LXdoZWVsIGRyaXZlCiAgICAvL1JpZ2h0RHJpdmUyLnJvdGF0ZUZvcihkZWcscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgIC8vdW5jb21tZW50IGlmIHlvdSBoYXZlIDQtd2hlZWwgZHJpdmUKICAgIFJpZ2h0RHJpdmUucm90YXRlRm9yKGRlZyxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0pOwp9Cgp2b2lkIGJsb2NrRndkKGludCBycG1zID0gMTYwKXsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5jbGVhclNjcmVlbigpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigxLDEpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KCJibG9ja0Z3ZCIpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigyLDEpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KCJEZWdyZWVzOiIpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigyLDEyKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludChvbmVCbG9jayk7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uc2V0Q3Vyc29yKDMsMSk7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQoIlJQTXM6Iik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uc2V0Q3Vyc29yKDMsMTIpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KHJwbXMpOwogICAgLy9MZWZ0RHJpdmUyLnJvdGF0ZUZvcihvbmVCbG9jayxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0sZmFsc2UpOyAgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgLy9SaWdodERyaXZlMi5yb3RhdGVGb3Iob25lQmxvY2sscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgUmlnaHREcml2ZS5yb3RhdGVGb3Iob25lQmxvY2sscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsKICAgIExlZnREcml2ZS5yb3RhdGVGb3Iob25lQmxvY2sscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtKTsKfQoKdm9pZCBibG9ja0J3ZChpbnQgcnBtcyA9IDE2MCl7CiAgICBDb250cm9sbGVyMS5TY3JlZW4uY2xlYXJTY3JlZW4oKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMSwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiYmxvY2tCd2QiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludCgiRGVncmVlczoiKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5zZXRDdXJzb3IoMiwxMik7CiAgICBDb250cm9sbGVyMS5TY3JlZW4ucHJpbnQob25lQmxvY2spOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigzLDEpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnByaW50KCJSUE1zOiIpOwogICAgQ29udHJvbGxlcjEuU2NyZWVuLnNldEN1cnNvcigzLDEyKTsKICAgIENvbnRyb2xsZXIxLlNjcmVlbi5wcmludChycG1zKTsKICAgIC8vTGVmdERyaXZlMi5yb3RhdGVGb3IoLW9uZUJsb2NrLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSxmYWxzZSk7ICAgICAvL3VuY29tbWVudCBpZiB5b3UgaGF2ZSA0LXdoZWVsIGRyaXZlCiAgICAvL1JpZ2h0RHJpdmUyLnJvdGF0ZUZvcigtb25lQmxvY2sscm90YXRpb25Vbml0czo6ZGVnLHJwbXMsdmVsb2NpdHlVbml0czo6cnBtLGZhbHNlKTsgICAgLy91bmNvbW1lbnQgaWYgeW91IGhhdmUgNC13aGVlbCBkcml2ZQogICAgUmlnaHREcml2ZS5yb3RhdGVGb3IoLW9uZUJsb2NrLHJvdGF0aW9uVW5pdHM6OmRlZyxycG1zLHZlbG9jaXR5VW5pdHM6OnJwbSxmYWxzZSk7CiAgICBMZWZ0RHJpdmUucm90YXRlRm9yKC1vbmVCbG9jayxyb3RhdGlvblVuaXRzOjpkZWcscnBtcyx2ZWxvY2l0eVVuaXRzOjpycG0pOwp9Cgp2b2lkIGF1dG9ub21vdXMoIHZvaWQgKSB7Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGludGVnZXJzIGluIHBsYWNlIG9mIHRoZSBkZWcgcGFyYW1ldGVycyBmb3IgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IFlvdXIgVHVybiBWYXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAKICAgIGludCBuRGVnWiA9IDMxNTsgICAvL1R1bmUgdGhpcyB0byB0aGUgZGVnIHZhbHVlIHlvdXIgYm90IG5lZWRzIHRvIHBlcmZvcm0gYSA5MGRlZyB6ZXJvLXBvaW50IHR1cm4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1VzZSB0aGlzIGFzIHRoZSBkZWcgdmFsdWUgZm9yIHpSaWdodCgpIGFuZCB6TGVmdCgpIHRvIHBlcmZvcm0gOTBkZWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vei10dXJucy4KICAgIAogICAgaW50IG5EZWdXID0gNjMwOyAgIC8vVHVuZSB0aGlzIHRvIHRoZSBkZWcgdmFsdWUgeW91ciBib3QgbmVlZHMgdG8gcGVyZm9ybSBhIDkwZGVnIHdpZGUgdHVybi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vVXNlIHRoaXMgYXMgdGhlIGRlZyB2YWx1ZSBmb3Igd2lkZVJpZ2h0KCkgYW5kIHdpZGVMZWZ0KCkgdG8gcGVyZm9ybQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy85MGRlZyB3aWRlIHR1cm5zLgoKICAgIAovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgeW91ciAiT25lLUJsb2NrIiBEZWdyZWUgVmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAKICAgIG9uZUJsb2NrID0gNjUwOyAgICAgLy9zZXQgdG8gdGhlIGRlZyB2YWx1ZSB5b3VyIGJvdCBuZWVkcyB0byBtb3ZlIG9uZSBmdWxsIGJsb2NrIG9yIHNxdWFyZQogICAgCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIFN0YXJ0IHlvdXIgYXV0b25vbW91cyBwcm9ncmFtIGhlcmUgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcfC8gICAgICAgICAgICAgICAgICAgICAgICAgICovCgoKCn0KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciBDb250cm9sIFRhc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICBUaGlzIHRhc2sgaXMgdXNlZCB0byBjb250cm9sIHlvdXIgcm9ib3QgZHVyaW5nIHRoZSB1c2VyIGNvbnRyb2wgcGhhc2Ugb2YgICovCi8qICBhIFZFWCBDb21wZXRpdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICBZb3UgbXVzdCBtb2RpZnkgdGhlIGNvZGUgdG8gYWRkIHlvdXIgb3duIHJvYm90IHNwZWNpZmljIGNvbW1hbmRzIGhlcmUuICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2b2lkIHVzZXJjb250cm9sKCB2b2lkICkgewogIC8vIFVzZXIgY29udHJvbCBjb2RlIGhlcmUsIGluc2lkZSB0aGUgbG9vcAogIHdoaWxlICgxKXsKICAgIC8vIFRoaXMgaXMgdGhlIG1haW4gZXhlY3V0aW9uIGxvb3AgZm9yIHRoZSB1c2VyIGNvbnRyb2wgcHJvZ3JhbS4KICAgIC8vIEVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wIHlvdXIgcHJvZ3JhbSBzaG91bGQgdXBkYXRlIG1vdG9yICsgc2Vydm8gCiAgICAvLyB2YWx1ZXMgYmFzZWQgb24gZmVlZGJhY2sgZnJvbSB0aGUgam95c3RpY2tzLgoKICAgIC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogICAgLy8gSW5zZXJ0IHVzZXIgY29kZSBoZXJlLiBUaGlzIGlzIHdoZXJlIHlvdSB1c2UgdGhlIGpveXN0aWNrIHZhbHVlcyB0byAKICAgIC8vIHVwZGF0ZSB5b3VyIG1vdG9ycywgZXRjLgogICAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKICAgIHZleDo6dGFzazo6c2xlZXAoMjApOyAvL1NsZWVwIHRoZSB0YXNrIGZvciBhIHNob3J0IGFtb3VudCBvZiB0aW1lIHRvIHByZXZlbnQgd2FzdGVkIHJlc291cmNlcy4gCiAgfQp9CgovLwovLyBNYWluIHdpbGwgc2V0IHVwIHRoZSBjb21wZXRpdGlvbiBmdW5jdGlvbnMgYW5kIGNhbGxiYWNrcy4KLy8KaW50IG1haW4oKSB7CiAgICAKICAgIC8vUnVuIHRoZSBwcmUtYXV0b25vbW91cyBmdW5jdGlvbi4gCiAgICBwcmVfYXV0b24oKTsKICAgIAogICAgLy9TZXQgdXAgY2FsbGJhY2tzIGZvciBhdXRvbm9tb3VzIGFuZCBkcml2ZXIgY29udHJvbCBwZXJpb2RzLgogICAgQ29tcGV0aXRpb24uYXV0b25vbW91cyggYXV0b25vbW91cyApOwogICAgQ29tcGV0aXRpb24uZHJpdmVyY29udHJvbCggdXNlcmNvbnRyb2wgKTsKCiAgICAvL1ByZXZlbnQgbWFpbiBmcm9tIGV4aXRpbmcgd2l0aCBhbiBpbmZpbml0ZSBsb29wLiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgd2hpbGUoMSkgewogICAgICB2ZXg6OnRhc2s6OnNsZWVwKDEwMCk7Ly9TbGVlcCB0aGUgdGFzayBmb3IgYSBzaG9ydCBhbW91bnQgb2YgdGltZSB0byBwcmV2ZW50IHdhc3RlZCByZXNvdXJjZXMuCiAgICB9ICAgIAogICAgICAgCn0="},"device":{"slot":1,"type":"vexV5"},"language":{"name":"vc++"},"components":[{"name":"RightDrive","class":"vex::motor","port":"20","left":318,"top":289,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"RightDrive2","class":"vex::motor","port":"3","left":427,"top":348,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"LeftDrive","class":"vex::motor","port":"2","left":455,"top":181,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"LeftDrive2","class":"vex::motor","port":"19","left":617,"top":269,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Controller1","class":"vex::controller","left":657,"top":56,"type":"controller"}]}