[fpc-devel] Stretchdraw function in TFPCanvas
Luk Vandelaer
luk.vandelaer at wisa.be
Mon Sep 11 14:07:05 CEST 2006
R3JlZXRpbmdzLAoKSSBtYWRlIHNvbWUgcGF0Y2hlcyB0byBpbmNsdWRlIGEgc3RyZXRjaGRyYXcg
ZnVuY3Rpb24gaW4gdGhlIFRGUENhbnZhcyAKb2JqZWN0LgoKVGhlIGFsZ29yaXRobWVzIGZvciB0
aGUgaW50ZXJwb2xhdGlvbiByb3V0aW5lcyBjb21lIGZyb20gSW1hZ2VNYWdpY2ssIApyZWltcGxl
bWVudGVkIGluIHBhc2NhbC4KCgoKTHVrIFZhbmRlbGFlcgotLS0tLS0tLS0tLS0tLSBuZXh0IHBh
cnQgLS0tLS0tLS0tLS0tLS0KeyBURlBDdXN0b21JbnRlcnBvbGF0aW9uIH0NCg0KcHJvY2VkdXJl
IFRGUEN1c3RvbUludGVycG9sYXRpb24uSW5pdGlhbGl6ZShhaW1hZ2U6IFRGUEN1c3RvbUltYWdl
OyBhY2FudmFzOiBURlBDdXN0b21DYW52YXMpOw0KYmVnaW4NCiAgZmltYWdlIDo9IGFpbWFnZTsN
CiAgZmNhbnZhcyA6PSBhY2FudmFzOw0KZW5kOw0KDQp7IFRGUEJhc2VJbnRlcnBvbGF0aW9uIH0N
Cg0KdHlwZQ0KDQogIFRJbnRlcnBvbGF0aW9uQ29udHJpYnV0aW9uID0gcmVjb3JkDQogICAgd2Vp
Z2h0IDogZG91YmxlOw0KICAgIHBsYWNlIDogaW50ZWdlcjsNCiAgZW5kOw0KDQpmdW5jdGlvbiBD
b2xvclJvdW5kIChjIDogZG91YmxlKSA6IHdvcmQ7DQpiZWdpbg0KICBpZiBjID4gJEZGRkYgdGhl
bg0KICAgIHJlc3VsdCA6PSAkRkZGRg0KICBlbHNlIGlmIGMgPCAwLjAgdGhlbg0KICAgIHJlc3Vs
dCA6PSAwDQogIGVsc2UNCiAgICByZXN1bHQgOj0gcm91bmQoYyk7DQplbmQ7DQoNCnByb2NlZHVy
ZSBURlBCYXNlSW50ZXJwb2xhdGlvbi5Ib3Jpem9udGFsICh3aWR0aCA6IGludGVnZXIpOw0KdmFy
IHgseSxyIDogaW50ZWdlcjsNCiAgc3RhcnQsIHN0b3AsIG1heGNvbnRyaWJzIDogaW50ZWdlcjsN
CiAgY2VudGVyLCByZSxncixibCwgZGVuc2l0eSA6IGRvdWJsZTsNCiAgY29udHJpYnV0aW9ucyA6
IGFycmF5WzAuLjEwXSBvZiBUSW50ZXJwb2xhdGlvbkNvbnRyaWJ1dGlvbjsNCiAgZGlmLCB3LCBn
YW1tYSwgYSA6IGRvdWJsZTsNCiAgYyA6IFRGUENvbG9yOw0KYmVnaW4NCiAgZm9yIHggOj0gMCB0
byB3aWR0aC0xIGRvDQogICAgYmVnaW4NCiAgICBjZW50ZXIgOj0geCAqIHhmYWN0b3I7DQogICAg
c3RhcnQgOj0gcm91bmQgKGNlbnRlci14c3VwcG9ydCk7DQogICAgaWYgc3RhcnQgPCAwIHRoZW4N
CiAgICAgIHN0YXJ0IDo9IDA7DQogICAgc3RvcCA6PSByb3VuZChjZW50ZXIreHN1cHBvcnQpOw0K
ICAgIGlmIHN0b3AgPj0gaW1hZ2UuV2lkdGggdGhlbg0KICAgICAgc3RvcCA6PSBpbWFnZS5XaWR0
aC0xOw0KICAgIGRlbnNpdHkgOj0gMC4wOw0KICAgIG1heGNvbnRyaWJzIDo9IC0xOw0KICAgIGZv
ciByIDo9IHN0YXJ0IHRvIHN0b3AgZG8NCiAgICAgIGJlZ2luDQogICAgICBkaWYgOj0gciAtIGNl
bnRlcjsNCiAgICAgIHcgOj0gRmlsdGVyIChkaWYpOw0KICAgICAgaWYgdyA+IDAuMCB0aGVuDQog
ICAgICAgIGJlZ2luDQogICAgICAgIGluYyAobWF4Y29udHJpYnMpOw0KICAgICAgICB3aXRoIGNv
bnRyaWJ1dGlvbnNbbWF4Y29udHJpYnNdIGRvDQogICAgICAgICAgYmVnaW4NCiAgICAgICAgICB3
ZWlnaHQgOj0gdzsNCiAgICAgICAgICBkZW5zaXR5IDo9IGRlbnNpdHkgKyB3Ow0KICAgICAgICAg
IHBsYWNlIDo9IHI7DQogICAgICAgICAgZW5kOw0KICAgICAgICBlbmQ7DQogICAgICBlbmQ7DQog
ICAgaWYgKGRlbnNpdHkgPD4gMC4wKSBhbmQgKGRlbnNpdHkgPD4gMS4wKSB0aGVuDQogICAgICBi
ZWdpbg0KICAgICAgZGVuc2l0eSA6PSAxLjAgLyBkZW5zaXR5Ow0KICAgICAgZm9yIHIgOj0gMCB0
byBtYXhjb250cmlicyBkbw0KICAgICAgICBjb250cmlidXRpb25zW3JdLndlaWdodCA6PSBjb250
cmlidXRpb25zW3JdLndlaWdodCAqIGRlbnNpdHk7DQogICAgICBlbmQ7DQogICAgZm9yIHkgOj0g
MCB0byBpbWFnZS5oZWlnaHQtMSBkbw0KICAgICAgYmVnaW4NCiAgICAgIGdhbW1hIDo9IDAuMDsN
CiAgICAgIHJlIDo9IDAuMDsNCiAgICAgIGdyIDo9IDAuMDsNCiAgICAgIGJsIDo9IDAuMDsNCiAg
ICAgIGZvciByIDo9IDAgdG8gbWF4Y29udHJpYnMgZG8NCiAgICAgICAgd2l0aCBjb250cmlidXRp
b25zW3JdIGRvDQogICAgICAgICAgd2l0aCBpbWFnZS5jb2xvcnNbcGxhY2UseV0gZG8NCiAgICAg
ICAgICAgIGJlZ2luDQogICAgICAgICAgICBhIDo9IHdlaWdodCAqIGFscGhhIC8gJEZGRkY7DQog
ICAgICAgICAgICByZSA6PSByZSArIGEgKiBpbWFnZS5jb2xvcnNbcGxhY2UseV0ucmVkOw0KICAg
ICAgICAgICAgZ3IgOj0gZ3IgKyBhICogaW1hZ2UuY29sb3JzW3BsYWNlLHldLmdyZWVuOw0KICAg
ICAgICAgICAgYmwgOj0gYmwgKyBhICogaW1hZ2UuY29sb3JzW3BsYWNlLHldLmJsdWU7DQogICAg
ICAgICAgICBnYW1tYSA6PSBnYW1tYSArIGE7DQogICAgICAgICAgICBlbmQ7DQogICAgICB3aXRo
IGMgZG8NCiAgICAgICAgYmVnaW4NCiAgICAgICAgcmVkIDo9IENvbG9yUm91bmQgKHJlKTsNCiAg
ICAgICAgZ3JlZW4gOj0gQ29sb3JSb3VuZCAoZ3IpOw0KICAgICAgICBibHVlIDo9IENvbG9yUm91
bmQgKGJsKTsNCiAgICAgICAgYWxwaGEgOj0gQ29sb3JSb3VuZCAoZ2FtbWEgKiAkRkZGRikgOw0K
ICAgICAgICBlbmQ7DQogICAgICB0ZW1waW1hZ2UuY29sb3JzW3gseV0gOj0gYzsNCiAgICAgIGVu
ZDsNCiAgICBlbmQ7DQplbmQ7DQoNCnByb2NlZHVyZSBURlBCYXNlSW50ZXJwb2xhdGlvbi52ZXJ0
aWNhbChkeCxkeSx3aWR0aCxoZWlnaHQ6IGludGVnZXIpOw0KdmFyIHgseSxyIDogaW50ZWdlcjsN
CiAgc3RhcnQsIHN0b3AsIG1heGNvbnRyaWJzIDogaW50ZWdlcjsNCiAgY2VudGVyLCByZSxncixi
bCwgZGVuc2l0eSA6IGRvdWJsZTsNCiAgY29udHJpYnV0aW9ucyA6IGFycmF5WzAuLjEwXSBvZiBU
SW50ZXJwb2xhdGlvbkNvbnRyaWJ1dGlvbjsNCiAgZGlmLCB3LCBnYW1tYSwgYSA6IGRvdWJsZTsN
CiAgYyA6IFRGUENvbG9yOw0KYmVnaW4NCiAgZm9yIHkgOj0gMCB0byBoZWlnaHQtMSBkbw0KICAg
IGJlZ2luDQogICAgY2VudGVyIDo9IHkgKiB5ZmFjdG9yOw0KICAgIHN0YXJ0IDo9IHJvdW5kIChj
ZW50ZXIteXN1cHBvcnQpOw0KICAgIGlmIHN0YXJ0IDwgMCB0aGVuDQogICAgICBzdGFydCA6PSAw
Ow0KICAgIHN0b3AgOj0gcm91bmQoY2VudGVyK3lzdXBwb3J0KTsNCiAgICBpZiBzdG9wID49IHRl
bXBpbWFnZS5oZWlnaHQgdGhlbg0KICAgICAgc3RvcCA6PSB0ZW1waW1hZ2UuaGVpZ2h0LTE7DQog
ICAgZGVuc2l0eSA6PSAwLjA7DQogICAgbWF4Y29udHJpYnMgOj0gLTE7DQogICAgZm9yIHIgOj0g
c3RhcnQgdG8gc3RvcCBkbw0KICAgICAgYmVnaW4NCiAgICAgIGRpZiA6PSByIC0gY2VudGVyOw0K
ICAgICAgdyA6PSBGaWx0ZXIgKGRpZik7DQogICAgICBpZiB3ID4gMC4wIHRoZW4NCiAgICAgICAg
YmVnaW4NCiAgICAgICAgaW5jIChtYXhjb250cmlicyk7DQogICAgICAgIHdpdGggY29udHJpYnV0
aW9uc1ttYXhjb250cmlic10gZG8NCiAgICAgICAgICBiZWdpbg0KICAgICAgICAgIHdlaWdodCA6
PSB3Ow0KICAgICAgICAgIGRlbnNpdHkgOj0gZGVuc2l0eSArIHc7DQogICAgICAgICAgcGxhY2Ug
Oj0gcjsNCiAgICAgICAgICBlbmQ7DQogICAgICAgIGVuZDsNCiAgICAgIGVuZDsNCiAgICBpZiAo
ZGVuc2l0eSA8PiAwLjApIGFuZCAoZGVuc2l0eSA8PiAxLjApIHRoZW4NCiAgICAgIGJlZ2luDQog
ICAgICBkZW5zaXR5IDo9IDEuMCAvIGRlbnNpdHk7DQogICAgICBmb3IgciA6PSAwIHRvIG1heGNv
bnRyaWJzIGRvDQogICAgICAgIGNvbnRyaWJ1dGlvbnNbcl0ud2VpZ2h0IDo9IGNvbnRyaWJ1dGlv
bnNbcl0ud2VpZ2h0ICogZGVuc2l0eTsNCiAgICAgIGVuZDsNCiAgICBmb3IgeCA6PSAwIHRvIHdp
ZHRoLTEgZG8NCiAgICAgIGJlZ2luDQogICAgICBnYW1tYSA6PSAwLjA7DQogICAgICByZSA6PSAw
LjA7DQogICAgICBnciA6PSAwLjA7DQogICAgICBibCA6PSAwLjA7DQogICAgICBmb3IgciA6PSAw
IHRvIG1heGNvbnRyaWJzIGRvDQogICAgICAgIHdpdGggY29udHJpYnV0aW9uc1tyXSBkbw0KICAg
ICAgICAgIHdpdGggdGVtcGltYWdlLmNvbG9yc1t4LHBsYWNlXSBkbw0KICAgICAgICAgICAgYmVn
aW4NCiAgICAgICAgICAgIGEgOj0gd2VpZ2h0ICogYWxwaGEgLyAkRkZGRjsNCiAgICAgICAgICAg
IHJlIDo9IHJlICsgYSAqIHJlZDsNCiAgICAgICAgICAgIGdyIDo9IGdyICsgYSAqIGdyZWVuOw0K
ICAgICAgICAgICAgYmwgOj0gYmwgKyBhICogYmx1ZTsNCiAgICAgICAgICAgIGdhbW1hIDo9IGdh
bW1hICsgYTsNCiAgICAgICAgICAgIGVuZDsNCiAgICAgIHdpdGggYyBkbw0KICAgICAgICBiZWdp
bg0KICAgICAgICByZWQgOj0gQ29sb3JSb3VuZCAocmUpOw0KICAgICAgICBncmVlbiA6PSBDb2xv
clJvdW5kIChncik7DQogICAgICAgIGJsdWUgOj0gQ29sb3JSb3VuZCAoYmwpOw0KICAgICAgICBh
bHBoYSA6PSBDb2xvclJvdW5kIChnYW1tYSAqICRGRkZGKTsNCiAgICAgICAgZW5kOw0KICAgICAg
Y2FudmFzLmNvbG9yc1t4K2R4LHkrZHldIDo9IGM7DQogICAgICBlbmQ7DQogICAgZW5kOw0KZW5k
Ow0KDQpwcm9jZWR1cmUgVEZQQmFzZUludGVycG9sYXRpb24uRXhlY3V0ZSh4LCB5LCB3LCBoOiBp
bnRlZ2VyKTsNCnZhciBtYXh5IDogaW50ZWdlcjsNCiAgICByeCxyeSA6IGludGVnZXI7DQpiZWdp
bg0KICB0ZW1waW1hZ2UgOj0gVEZQTWVtb3J5SW1hZ2UuQ3JlYXRlICh3LGltYWdlLmhlaWdodCk7
DQogIHRlbXBpbWFnZS5Vc2VQYWxldHRlIDo9IGZhbHNlOw0KICB4ZmFjdG9yIDo9IGltYWdlLldp
ZHRoIC8gdzsNCiAgeWZhY3RvciA6PSBpbWFnZS5IZWlnaHQgLyBoOw0KICBpZiB4ZmFjdG9yID4g
MS4wIHRoZW4NCiAgICB4c3VwcG9ydCA6PSBNYXhTdXBwb3J0DQogIGVsc2UNCiAgICB4c3VwcG9y
dCA6PSB4ZmFjdG9yICogTWF4U3VwcG9ydDsNCiAgaWYgeWZhY3RvciA+IDEuMCB0aGVuDQogICAg
eXN1cHBvcnQgOj0gTWF4U3VwcG9ydA0KICBlbHNlDQogICAgeXN1cHBvcnQgOj0geWZhY3RvciAq
IE1heFN1cHBvcnQ7DQogIEhvcml6b250YWwgKHcpOw0KICBWZXJ0aWNhbCAoeCx5LHcsaCk7DQpl
bmQ7DQoNCnsgVE1pdGNoZWxJbnRlcnBvbGF0aW9uIH0NCg0KZnVuY3Rpb24gVE1pdGNoZWxJbnRl
cnBvbGF0aW9uLkZpbHRlcih4OiBkb3VibGUpOiBkb3VibGU7DQpjb25zdA0KICBCICA9ICgxLjAv
My4wKTsNCiAgQyAgPSAoMS4wLzMuMCk7DQogIFAwID0gKCggIDYuMC0gMi4wKkIgICAgICAgKS82
LjApOw0KICBQMiA9ICgoLTE4LjArMTIuMCpCKyA2LjAqQykvNi4wKTsNCiAgUDMgPSAoKCAxMi4w
LSA5LjAqQi0gNi4wKkMpLzYuMCk7DQogIFEwID0gKCggICAgICAgOC4wKkIrMjQuMCpDKS82LjAp
Ow0KICBRMSA9ICgoICAgICAtMTIuMCpCLTQ4LjAqQykvNi4wKTsNCiAgUTIgPSAoKCAgICAgICA2
LjAqQiszMC4wKkMpLzYuMCk7DQogIFEzID0gKCggICAgIC0gMS4wKkItIDYuMCpDKS82LjApOw0K
YmVnaW4NCiAgaWYgKHggPCAtMi4wKSB0aGVuDQogICAgcmVzdWx0IDo9IDAuMA0KICBlbHNlIGlm
ICh4IDwgLTEuMCkgdGhlbg0KICAgIHJlc3VsdCA6PSBRMC14KihRMS14KihRMi14KlEzKSkNCiAg
ZWxzZSBpZiAoeCA8IDAuMCkgdGhlbg0KICAgIHJlc3VsdCA6PSBQMCt4KngqKFAyLXgqUDMpDQog
IGVsc2UgaWYgKHggPCAxLjApIHRoZW4NCiAgICByZXN1bHQgOj0gUDAreCp4KihQMit4KlAzKQ0K
ICBlbHNlIGlmICh4IDwgMi4wKSB0aGVuDQogICAgcmVzdWx0IDo9IFEwK3gqKFExK3gqKFEyK3gq
UTMpKQ0KICBlbHNlDQogIHJlc3VsdCA6PSAwLjA7DQplbmQ7DQoNCmZ1bmN0aW9uIFRNaXRjaGVs
SW50ZXJwb2xhdGlvbi5NYXhTdXBwb3J0OiBkb3VibGU7DQpiZWdpbg0KICByZXN1bHQgOj0gMi4w
Ow0KZW5kOw0KDQotLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KLS0tIGZj
bC9pbWFnZS9mcGNhbnZhcy5wcAkyMDA2LTA2LTI5IDIwOjMxOjM4LjAwMDAwMDAwMCArMDIwMA0K
KysrIC4uL2ZvdG93ZWIvY2FudmFzLnBwCTIwMDYtMDktMTEgMTM6NDI6MjYuMTcxODc1MDAwICsw
MjAwDQpAQCAtMTUzLDYgKzE1Myw0MyBAQA0KICAgZW5kOw0KICAgVEZQQ3VzdG9tQnJ1c2hDbGFz
cyA9IGNsYXNzIG9mIFRGUEN1c3RvbUJydXNoOw0KIA0KKyAgeyBURlBDdXN0b21JbnRlcnBvbGF0
aW9uIH0NCisNCisgIFRGUEN1c3RvbUludGVycG9sYXRpb24gPSBjbGFzcw0KKyAgcHJpdmF0ZQ0K
KyAgICBmY2FudmFzOiBURlBDdXN0b21DYW52YXM7DQorICAgIGZpbWFnZTogVEZQQ3VzdG9tSW1h
Z2U7DQorICBwcm90ZWN0ZWQNCisgICAgcHJvY2VkdXJlIEluaXRpYWxpemUgKGFpbWFnZTpURlBD
dXN0b21JbWFnZTsgYWNhbnZhczpURlBDdXN0b21DYW52YXMpOyB2aXJ0dWFsOw0KKyAgICBwcm9j
ZWR1cmUgRXhlY3V0ZSAoeCx5LHcsaDppbnRlZ2VyKTsgdmlydHVhbDsgYWJzdHJhY3Q7DQorICBw
dWJsaWMNCisgICAgcHJvcGVydHkgQ2FudmFzIDogVEZQQ3VzdG9tQ2FudmFzIHJlYWQgZmNhbnZh
czsNCisgICAgcHJvcGVydHkgSW1hZ2UgOiBURlBDdXN0b21JbWFnZSByZWFkIGZpbWFnZTsNCisg
IGVuZDsNCisNCisgIHsgVEZQQmFzZUludGVycG9sYXRpb24gfQ0KKw0KKyAgVEZQQmFzZUludGVy
cG9sYXRpb24gPSBjbGFzcyAoVEZQQ3VzdG9tSW50ZXJwb2xhdGlvbikNCisgIHByaXZhdGUNCisg
ICAgeGZhY3RvciwgeWZhY3RvciA6IGRvdWJsZTsNCisgICAgeHN1cHBvcnQseXN1cHBvcnQgOiBk
b3VibGU7DQorICAgIHRlbXBpbWFnZSA6IFRGUEN1c3RvbUltYWdlOw0KKyAgICBwcm9jZWR1cmUg
SG9yaXpvbnRhbCAod2lkdGggOiBpbnRlZ2VyKTsNCisgICAgcHJvY2VkdXJlIHZlcnRpY2FsIChk
eCxkeSx3aWR0aCxoZWlnaHQ6IGludGVnZXIpOw0KKyAgcHJvdGVjdGVkDQorICAgIHByb2NlZHVy
ZSBFeGVjdXRlICh4LHksdyxoOmludGVnZXIpOyBvdmVycmlkZTsNCisgICAgZnVuY3Rpb24gRmls
dGVyICh4IDogZG91YmxlKSA6IGRvdWJsZTsgdmlydHVhbDsgYWJzdHJhY3Q7DQorICAgIGZ1bmN0
aW9uIE1heFN1cHBvcnQgOiBkb3VibGU7IHZpcnR1YWw7IGFic3RyYWN0Ow0KKyAgZW5kOw0KKw0K
KyAgeyBUTWl0Y2hlbEludGVycG9sYXRpb24gfQ0KKw0KKyAgVE1pdGNoZWxJbnRlcnBvbGF0aW9u
ID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBvbGF0aW9uKQ0KKyAgcHJvdGVjdGVkDQorICAgIGZ1bmN0
aW9uIEZpbHRlciAoeCA6IGRvdWJsZSkgOiBkb3VibGU7IG92ZXJyaWRlOw0KKyAgICBmdW5jdGlv
biBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlkZTsNCisgIGVuZDsNCisNCiAgIHsgVEZQQ3Vz
dG9tQ2FudmFzIH0NCiANCiAgIFRGUEN1c3RvbUNhbnZhcyA9IGNsYXNzKFRQZXJzaXN0ZW50KQ0K
QEAgLTE3MCw2ICsyMDcsNyBAQA0KICAgICBGQ2xpcFJlY3QgOiBUUmVjdDsNCiAgICAgRkhlbHBl
cnMgOiBUTGlzdDsNCiAgICAgRkxvY2tzIDogaW50ZWdlcjsNCisgICAgRkludGVycG9sYXRpb24g
OiBURlBDdXN0b21JbnRlcnBvbGF0aW9uOw0KICAgICBmdW5jdGlvbiBBbGxvd0ZvbnQgKEFGb250
IDogVEZQQ3VzdG9tRm9udCkgOiBib29sZWFuOw0KICAgICBmdW5jdGlvbiBBbGxvd0JydXNoIChB
QnJ1c2ggOiBURlBDdXN0b21CcnVzaCkgOiBib29sZWFuOw0KICAgICBmdW5jdGlvbiBBbGxvd1Bl
biAoQVBlbiA6IFRGUEN1c3RvbVBlbikgOiBib29sZWFuOw0KQEAgLTIxOSw4ICsyNTcsNiBAQA0K
ICAgICBwcm9jZWR1cmUgRG9Nb3ZlVG8gKHgseTppbnRlZ2VyKTsgdmlydHVhbDsNCiAgICAgcHJv
Y2VkdXJlIERvTGluZVRvICh4LHk6aW50ZWdlcik7IHZpcnR1YWw7DQogICAgIHByb2NlZHVyZSBE
b0xpbmUgKHgxLHkxLHgyLHkyOmludGVnZXIpOyB2aXJ0dWFsOyBhYnN0cmFjdDsNCi0gICAgcHJv
Y2VkdXJlIERvQ29weVJlY3QgKHgseTppbnRlZ2VyOyBjYW52YXM6VEZQQ3VzdG9tQ2FudmFzOyBD
b25zdCBTb3VyY2VSZWN0OlRSZWN0KTsgdmlydHVhbDsgYWJzdHJhY3Q7DQotICAgIHByb2NlZHVy
ZSBEb0RyYXcgKHgseTppbnRlZ2VyOyBDb25zdCBpbWFnZTpURlBDdXN0b21JbWFnZSk7IHZpcnR1
YWw7IGFic3RyYWN0Ow0KICAgICBwcm9jZWR1cmUgQ2hlY2tIZWxwZXIgKEFIZWxwZXI6VEZQQ2Fu
dmFzSGVscGVyKTsgdmlydHVhbDsNCiAgICAgcHJvY2VkdXJlIEFkZEhlbHBlciAoQUhlbHBlcjpU
RlBDYW52YXNIZWxwZXIpOw0KICAgcHVibGljDQpAQCAtMjU5LDExICsyOTUsMTMgQEANCiAgICAg
Ly8gb3RoZXIgcHJvY2VkdXJlcw0KICAgICBwcm9jZWR1cmUgQ29weVJlY3QgKHgseTppbnRlZ2Vy
OyBjYW52YXM6VEZQQ3VzdG9tQ2FudmFzOyBTb3VyY2VSZWN0OlRSZWN0KTsNCiAgICAgcHJvY2Vk
dXJlIERyYXcgKHgseTppbnRlZ2VyOyBpbWFnZTpURlBDdXN0b21JbWFnZSk7DQorICAgIHByb2Nl
ZHVyZSBTdHJldGNoRHJhdyAoeCx5LHcsaDppbnRlZ2VyOyBzb3VyY2U6VEZQQ3VzdG9tSW1hZ2Up
Ow0KICAgICBwcm9jZWR1cmUgRXJhc2U7dmlydHVhbDsNCiAgICAgLy8gcHJvcGVydGllcw0KICAg
ICBwcm9wZXJ0eSBGb250IDogVEZQQ3VzdG9tRm9udCByZWFkIEdldEZvbnQgd3JpdGUgU2V0Rm9u
dDsNCiAgICAgcHJvcGVydHkgUGVuIDogVEZQQ3VzdG9tUGVuIHJlYWQgR2V0UGVuIHdyaXRlIFNl
dFBlbjsNCiAgICAgcHJvcGVydHkgQnJ1c2ggOiBURlBDdXN0b21CcnVzaCByZWFkIEdldEJydXNo
IHdyaXRlIFNldEJydXNoOw0KKyAgICBwcm9wZXJ0eSBJbnRlcnBvbGF0aW9uIDogVEZQQ3VzdG9t
SW50ZXJwb2xhdGlvbiByZWFkIEZJbnRlcnBvbGF0aW9uIHdyaXRlIEZJbnRlcnBvbGF0aW9uOw0K
ICAgICBwcm9wZXJ0eSBDb2xvcnMgW3gseTppbnRlZ2VyXSA6IFRGUENvbG9yIHJlYWQgR2V0Q29s
b3Igd3JpdGUgU2V0Q29sb3I7DQogICAgIHByb3BlcnR5IENsaXBSZWN0IDogVFJlY3QgcmVhZCBH
ZXRDbGlwUmVjdCB3cml0ZSBTZXRDbGlwUmVjdDsNCiAgICAgcHJvcGVydHkgQ2xpcHBpbmcgOiBi
b29sZWFuIHJlYWQgRkNsaXBwaW5nIHdyaXRlIEZDbGlwcGluZzsNCkBAIC0zNzUsNiArNDEzLDcg
QEANCiB7JGkgRlBGb250LmluY30NCiB7JGkgRlBQZW4uaW5jfQ0KIHskaSBGUEJydXNoLmluY30N
Cit7JGkgZnBpbnRlcnBvbGF0aW9uLmluY30NCiB7JGkgRlBDYW52YXMuaW5jfQ0KIHskaSBGUENE
cmF3SC5pbmN9DQogDQotLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KLS0t
IGZjbC9pbWFnZS9mcGNhbnZhcy5pbmMJMjAwNi0wNi0yOSAyMDozMTozOC4wMDAwMDAwMDAgKzAy
MDANCisrKyAuLi9mb3Rvd2ViL2ZwY2FudmFzLmluYwkyMDA2LTA4LTIwIDIzOjM2OjUwLjAwMDAw
MDAwMCArMDIwMA0KQEAgLTYwNSwzICs2MDUsMjYgQEANCiAgICAgZW5kOw0KIGVuZDsNCiANCitw
cm9jZWR1cmUgVEZQQ3VzdG9tQ2FudmFzLlN0cmV0Y2hEcmF3KHgsIHksIHcsIGg6IGludGVnZXI7
IHNvdXJjZTogVEZQQ3VzdG9tSW1hZ2UpOw0KK3ZhciBpIDogVEZQQ3VzdG9tSW50ZXJwb2xhdGlv
bjsNCisgICAgRnJlZUludGVycG9sYXRpb24gOiBib29sZWFuOw0KKyAgICBJUCA6IFRGUEN1c3Rv
bUludGVycG9sYXRpb247DQorYmVnaW4NCisgIEZyZWVJbnRlcnBvbGF0aW9uIDo9IG5vdCBhc3Np
Z25lZCAoRkludGVycG9sYXRpb24pOw0KKyAgaWYgRnJlZUludGVycG9sYXRpb24gdGhlbg0KKyAg
ICBJUCA6PSBUTWl0Y2hlbEludGVycG9sYXRpb24uQ3JlYXRlDQorICBlbHNlDQorICAgIElQIDo9
IEZJbnRlcnBvbGF0aW9uOw0KKyAgdHJ5DQorICAgIHdpdGggSVAgZG8NCisgICAgICBiZWdpbg0K
KyAgICAgIEluaXRpYWxpemUgKHNvdXJjZSwgc2VsZik7DQorICAgICAgRXhlY3V0ZSAoeCx5LHcs
aCk7DQorICAgICAgZW5kOw0KKyAgZmluYWxseQ0KKyAgICBpZiBGcmVlSW50ZXJwb2xhdGlvbiB0
aGVuDQorICAgICAgSVAuRnJlZTsNCisgIGVuZDsNCitlbmQ7DQorDQorDQotLS0tLS0tLS0tLS0t
LSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KdW5pdCBtb3JlaW50ZXJwb2xhdGlvbjsKCnsKU29t
ZSBtb3JlIGludGVycG9sYXRpb24gZmlsdGVycyBmb3IgVEZQQ2FudmFzLlN0cmV0Y2hEcmF3OgpC
ZXNzZWwsIEdhdXNzaWFuIGFuZCBTaW5jIGFyZSBpbmZpbml0ZSBpbXB1bHNlIHJlc3BvbnNlIChJ
SVIpLAp0aGUgb3RoZXIgYXJlIGZpbml0ZSBpbXB1bHNlIHJlc3BvbnNlIChGSVIpLiBUaGUgaW1w
bGVtZW50YXRpb24Kb2YgQmVzc2VsIGFuZCBTaW5jIGFyZSB3aW5kb3dlZCB3aXRoIEJsYWNrbWFu
IGZpbHRlci4KfQoKeyRtb2RlIG9iamZwY317JEgrfQoKaW50ZXJmYWNlCgp1c2VzCiAgQ2xhc3Nl
cywgU3lzVXRpbHMsIEZQSW1hZ2UsIEZQQ2FudmFzOwoKdHlwZQoKICB7IFRCbGFja21hbkludGVy
cG9sYXRpb24gfQoKICBUQmxhY2ttYW5JbnRlcnBvbGF0aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRl
cnBvbGF0aW9uKQogIHByb3RlY3RlZAogICAgZnVuY3Rpb24gRmlsdGVyICh4IDogZG91YmxlKSA6
IGRvdWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5jdGlvbiBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVy
cmlkZTsKICBlbmQ7CgogIHsgVEJsYWNrbWFuU2luY0ludGVycG9sYXRpb24gfQoKICBUQmxhY2tt
YW5TaW5jSW50ZXJwb2xhdGlvbiA9IGNsYXNzIChURlBCYXNlSW50ZXJwb2xhdGlvbikKICBwcm90
ZWN0ZWQKICAgIGZ1bmN0aW9uIEZpbHRlciAoeCA6IGRvdWJsZSkgOiBkb3VibGU7IG92ZXJyaWRl
OwogICAgZnVuY3Rpb24gTWF4U3VwcG9ydCA6IGRvdWJsZTsgb3ZlcnJpZGU7CiAgZW5kOwoKICB7
IFRCbGFja21hbkJlc3NlbEludGVycG9sYXRpb24gfQoKICBUQmxhY2ttYW5CZXNzZWxJbnRlcnBv
bGF0aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBvbGF0aW9uKQogIHByb3RlY3RlZAogICAgZnVu
Y3Rpb24gRmlsdGVyICh4IDogZG91YmxlKSA6IGRvdWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5jdGlv
biBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlkZTsKICBlbmQ7CgogIHsgVEdhdXNzaWFuSW50
ZXJwb2xhdGlvbiB9CgogIFRHYXVzc2lhbkludGVycG9sYXRpb24gPSBjbGFzcyAoVEZQQmFzZUlu
dGVycG9sYXRpb24pCiAgcHJvdGVjdGVkCiAgICBmdW5jdGlvbiBGaWx0ZXIgKHggOiBkb3VibGUp
IDogZG91YmxlOyBvdmVycmlkZTsKICAgIGZ1bmN0aW9uIE1heFN1cHBvcnQgOiBkb3VibGU7IG92
ZXJyaWRlOwogIGVuZDsKCiAgeyBUQm94SW50ZXJwb2xhdGlvbiB9CgogIFRCb3hJbnRlcnBvbGF0
aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBvbGF0aW9uKQogIHByb3RlY3RlZAogICAgZnVuY3Rp
b24gRmlsdGVyICh4IDogZG91YmxlKSA6IGRvdWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5jdGlvbiBN
YXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlkZTsKICBlbmQ7CgogIHsgVEhlcm1pdGVJbnRlcnBv
bGF0aW9uIH0KCiAgVEhlcm1pdGVJbnRlcnBvbGF0aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBv
bGF0aW9uKQogIHByb3RlY3RlZAogICAgZnVuY3Rpb24gRmlsdGVyICh4IDogZG91YmxlKSA6IGRv
dWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5jdGlvbiBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlk
ZTsKICBlbmQ7CgogIHsgVExhbmN6b3NJbnRlcnBvbGF0aW9uIH0KCiAgVExhbmN6b3NJbnRlcnBv
bGF0aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBvbGF0aW9uKQogIHByb3RlY3RlZAogICAgZnVu
Y3Rpb24gRmlsdGVyICh4IDogZG91YmxlKSA6IGRvdWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5jdGlv
biBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlkZTsKICBlbmQ7CgogIHsgVFF1YWRyYXRpY0lu
dGVycG9sYXRpb24gfQoKICBUUXVhZHJhdGljSW50ZXJwb2xhdGlvbiA9IGNsYXNzIChURlBCYXNl
SW50ZXJwb2xhdGlvbikKICBwcm90ZWN0ZWQKICAgIGZ1bmN0aW9uIEZpbHRlciAoeCA6IGRvdWJs
ZSkgOiBkb3VibGU7IG92ZXJyaWRlOwogICAgZnVuY3Rpb24gTWF4U3VwcG9ydCA6IGRvdWJsZTsg
b3ZlcnJpZGU7CiAgZW5kOwoKICB7IFRDdWJpY0ludGVycG9sYXRpb24gfQoKICBUQ3ViaWNJbnRl
cnBvbGF0aW9uID0gY2xhc3MgKFRGUEJhc2VJbnRlcnBvbGF0aW9uKQogIHByb3RlY3RlZAogICAg
ZnVuY3Rpb24gRmlsdGVyICh4IDogZG91YmxlKSA6IGRvdWJsZTsgb3ZlcnJpZGU7CiAgICBmdW5j
dGlvbiBNYXhTdXBwb3J0IDogZG91YmxlOyBvdmVycmlkZTsKICBlbmQ7CgogIHsgVENhdHJvbUlu
dGVycG9sYXRpb24gfQoKICBUQ2F0cm9tSW50ZXJwb2xhdGlvbiA9IGNsYXNzIChURlBCYXNlSW50
ZXJwb2xhdGlvbikKICBwcm90ZWN0ZWQKICAgIGZ1bmN0aW9uIEZpbHRlciAoeCA6IGRvdWJsZSkg
OiBkb3VibGU7IG92ZXJyaWRlOwogICAgZnVuY3Rpb24gTWF4U3VwcG9ydCA6IGRvdWJsZTsgb3Zl
cnJpZGU7CiAgZW5kOwoKICB7IFRCaWxpbmVhaXJJbnRlcnBvbGF0aW9uIH0KCiAgVEJpbGluZWFp
ckludGVycG9sYXRpb24gPSBjbGFzcyAoVEZQQmFzZUludGVycG9sYXRpb24pCiAgcHJvdGVjdGVk
CiAgICBmdW5jdGlvbiBGaWx0ZXIgKHggOiBkb3VibGUpIDogZG91YmxlOyBvdmVycmlkZTsKICAg
IGZ1bmN0aW9uIE1heFN1cHBvcnQgOiBkb3VibGU7IG92ZXJyaWRlOwogIGVuZDsKCiAgeyBUSGFu
bmluZ0ludGVycG9sYXRpb24gfQoKICBUSGFubmluZ0ludGVycG9sYXRpb24gPSBjbGFzcyAoVEZQ
QmFzZUludGVycG9sYXRpb24pCiAgcHJvdGVjdGVkCiAgICBmdW5jdGlvbiBGaWx0ZXIgKHggOiBk
b3VibGUpIDogZG91YmxlOyBvdmVycmlkZTsKICAgIGZ1bmN0aW9uIE1heFN1cHBvcnQgOiBkb3Vi
bGU7IG92ZXJyaWRlOwogIGVuZDsKCiAgeyBUSGFtbWluZ0ludGVycG9sYXRpb24gfQoKICBUSGFt
bWluZ0ludGVycG9sYXRpb24gPSBjbGFzcyAoVEZQQmFzZUludGVycG9sYXRpb24pCiAgcHJvdGVj
dGVkCiAgICBmdW5jdGlvbiBGaWx0ZXIgKHggOiBkb3VibGUpIDogZG91YmxlOyBvdmVycmlkZTsK
ICAgIGZ1bmN0aW9uIE1heFN1cHBvcnQgOiBkb3VibGU7IG92ZXJyaWRlOwogIGVuZDsKCmltcGxl
bWVudGF0aW9uCgoKLy8gQmVzc2VsT3JkZXJPbmU6IGNvbXB1dGVzIEJlc3NlbCBmdW5jdGlvbiBv
ZiB4IGluIHRoZSBmaXJzdCBraW5kIG9mIG9yZGVyIDAKCmZ1bmN0aW9uIEoxICh4IDogZG91Ymxl
KSA6IGRvdWJsZTsKY29uc3QgUG9uZSA6IGFycmF5WzAuLjhdIG9mIGRvdWJsZSA9CiAgICAoICAw
LjU4MTE5OTM1NDAwMTYwNjE0MzkyODA1MDgwOWUrMjEsCiAgICAgIC0wLjY2NzIxMDY1Njg5MjQ5
MTYyOTgwMjA5NDE0ODRlKzIwLAogICAgICAgMC4yMzE2NDMzNTgwNjM0MDAyMjk3OTMxODE1NDM1
ZSsxOSwKICAgICAgLTAuMzU4ODgxNzU2OTkxMDEwNjA1MDc0MzY0MTQxM2UrMTcsCiAgICAgICAw
LjI5MDg3OTUyNjM4MzQ3NzU0MDk3Mzc2MDE2ODllKzE1LAogICAgICAtMC4xMzIyOTgzNDgwMzMy
MTI2NDUzMTI1NDczMjQ3ZSsxMywKICAgICAgIDAuMzQxMzIzNDE4MjMwMTcwMDUzOTA5MTI5MjY1
NWUrMTAsCiAgICAgIC0wLjQ2OTU3NTM1MzA2NDI5OTU4NTk3NjcxNjIxNjZlKzcsCiAgICAgICAw
LjI3MDExMjI3MTA4OTIzMjM0MTQ4NTY3OTA5OWUrNAogICAgKTsKICAgIFFvbmUgOiBhcnJheSBb
MC4uOF0gb2YgZG91YmxlID0KICAgICggMC4xMTYyMzk4NzA4MDAzMjEyMjg3ODU4NTI5NGUrMjIs
CiAgICAgIDAuMTE4NTc3MDcxMjE5MDMyMDk5OTgzNzExMzM0OGUrMjAsCiAgICAgIDAuNjA5MjA2
MTM5ODkxNzUyMTc0NjEwNTE5Njg2M2UrMTcsCiAgICAgIDAuMjA4MTY2MTIyMTMwNzYwNzM1MTI0
MDE4NDIyOWUrMTUsCiAgICAgIDAuNTI0MzcxMDI2MjE2NzY0OTcxNTQwNjcyODY0MmUrMTIsCiAg
ICAgIDAuMTAxMzg2MzUxNDM1ODY3Mzk4OTk2NzA0NTU4OGUrMTAsCiAgICAgIDAuMTUwMTc5MzU5
NDk5ODU4NTUwNTkyMTA5NzU3OGUrNywKICAgICAgMC4xNjA2OTMxNTczNDgxNDg3ODAxOTcwOTE2
NzQ5ZSs0LAogICAgICAwLjFlKzEKICAgICk7CnZhciBwLHEgOiBkb3VibGU7CiAgICByIDogMC4u
ODsKYmVnaW4KICBwIDo9IFBvbmVbOF07CiAgcSA6PSBRb25lWzhdOwogIGZvciByIDo9IDcgZG93
bnRvIDAgZG8KICAgIGJlZ2luCiAgICBwIDo9IHAqeCp4K3BPbmVbcl07CiAgICBxIDo9IHEqWCpY
K1FvbmVbcl07CiAgICBlbmQ7CiAgcmVzdWx0IDo9IHAgLyBxOwplbmQ7CgpmdW5jdGlvbiBQMSAo
eCA6IGRvdWJsZSkgOiBkb3VibGU7CmNvbnN0IFBvbmUgOiBhcnJheVswLi41XSBvZiBkb3VibGUg
PQogICAgKCAwLjM1MjI0NjY0OTEzMzY3OTc5ODM0MTcyNDM3M2UrNSwKICAgICAgMC42Mjc1ODg0
NTI0NzE2MTI4MTI2OTAwNTY3NWUrNSwKICAgICAgMC4zMTM1Mzk2MzExMDkxNTk1NzQyMzg2Njk4
ODhlKzUsCiAgICAgIDAuNDk4NTQ4MzIwNjA1OTQzMzg0MzQ1MDA0NTVlKzQsCiAgICAgIDAuMjEx
MTUyOTE4Mjg1Mzk2MjM4MjEwNTcxOGUrMywKICAgICAgMC4xMjU3MTcxNjkyOTE0NTM0MTU1ODQ5
NWUrMQogICAgKTsKICAgIFFvbmUgOiBhcnJheSBbMC4uNV0gb2YgZG91YmxlID0KICAgICggMC4z
NTIyNDY2NDkxMzM2Nzk3OTgwNjgzOTA0MzFlKzUsCiAgICAgIDAuNjI2OTQzNDY5NTkzNTYwNTEx
ODg4ODMzNzMxZSs1LAogICAgICAwLjMxMjQwNDA2MzgxOTA0MTAzOTkyMzAxNTcwM2UrNSwKICAg
ICAgMC40OTMwMzk2NDkwMTgxMDg4OTc5Mzg2MDk3ZSs0LAogICAgICAwLjIwMzA3NzUxODkxMzQ3
NTkzMjIyOTM1NzRlKzMsCiAgICAgIDAuMWUrMQogICAgKTsKdmFyIHg4LHAscSA6IGRvdWJsZTsK
ICAgIHIgOiAwLi41OwpiZWdpbgogIHAgOj0gUG9uZVs1XTsKICBxIDo9IFFvbmVbNV07CiAgeDgg
Oj0gOC4wIC8geDsKICBmb3IgciA6PSA0IGRvd250byAwIGRvCiAgICBiZWdpbgogICAgcCA6PSBw
Kng4Kng4K3BPbmVbcl07CiAgICBxIDo9IHEqeDgqeDgrUW9uZVtyXTsKICAgIGVuZDsKICByZXN1
bHQgOj0gcCAvIHE7CmVuZDsKCmZ1bmN0aW9uIFExICh4IDogZG91YmxlKSA6IGRvdWJsZTsKY29u
c3QgUG9uZSA6IGFycmF5WzAuLjVdIG9mIGRvdWJsZSA9CiAgICAoIDAuMzUxMTc1MTkxNDMwMzU1
MjgyMjUzMzMxOGUrMywKICAgICAgMC43MjEwMzkxODA0OTA0NDc1MDM5MjgwODYzZSszLAogICAg
ICAwLjQyNTk4NzMwMTE2NTQ0NDIzODk4ODY5OTNlKzMsCiAgICAgIDAuODMxODk4OTU3NjczODUw
ODI3MzI1MjI2ZSsyLAogICAgICAwLjQ1NjgxNzE2Mjk1NTEyMjY3MDY0NDA1ZSsxLAogICAgICAw
LjM1MzI4NDAwNTI3NDAxMjM2NDI3MzVlLTEKICAgICk7CiAgICBRb25lIDogYXJyYXkgWzAuLjVd
IG9mIGRvdWJsZSA9CiAgICAoIDAuNzQ5MTczNzQxNzE4MDkxMjc3MTQ1MTk1MDVlKzQsCiAgICAg
IDAuMTU0MTQxNzczMzkyNjUwOTcwNDk5ODQ4MDUxZSs1LAogICAgICAwLjkxNTIyMzE3MDE1MTY5
OTIyNzA1OTA0NzI3ZSs0LAogICAgICAwLjE4MTExODY3MDA1NTIzNTEzNTA2NzI0MTU4ZSs0LAog
ICAgICAwLjEwMzgxODc1ODU0NjIxMzM3Mjg3NzY2MzZlKzMsCiAgICAgIDAuMWUrMQogICAgKTsK
dmFyIHg4LHAscSA6IGRvdWJsZTsKICAgIHIgOiAwLi41OwpiZWdpbgogIHAgOj0gUG9uZVs1XTsK
ICBxIDo9IFFvbmVbNV07CiAgeDggOj0gOC4wIC8geDsKICBmb3IgciA6PSA0IGRvd250byAwIGRv
CiAgICBiZWdpbgogICAgcCA6PSBwKng4Kng4K3BPbmVbcl07CiAgICBxIDo9IHEqeDgqeDgrUW9u
ZVtyXTsKICAgIGVuZDsKICByZXN1bHQgOj0gcCAvIHE7CmVuZDsKCmZ1bmN0aW9uIEJlc3NlbE9y
ZGVyT25lICh4IDogZG91YmxlKSA6IGRvdWJsZTsKdmFyIHAscSwgT25lT3ZlclNxcnQyLHNpbngs
Y29zeCA6IGRvdWJsZTsKYmVnaW4KICBpZiB4ID0gMC4wIHRoZW4KICAgIHJlc3VsdCA6PSAwLjAK
ICBlbHNlCiAgICBiZWdpbgogICAgcCA6PSB4OwogICAgaWYgeCA8IDAuMCB0aGVuCiAgICAgIHgg
Oj0gLXg7CiAgICBpZiB4IDwgOC4wIHRoZW4KICAgICAgcmVzdWx0IDo9IHAgKiBKMSh4KQogICAg
ZWxzZQogICAgICBiZWdpbgogICAgICBPbmVPdmVyU3FydDIgOj0gMS4wIC8gc3FydCgyLjApOwog
ICAgICBzaW54IDo9IHNpbih4KTsKICAgICAgY29zeCA6PSBjb3MoeCk7CiAgICAgIHJlc3VsdCA6
PSBzcXJ0KDIuMC8oUEkqeCkpICoKICAgICAgICAgICAoIFAxKHgpKihPbmVPdmVyU3FydDIqKHNp
bngtY29zeCkpCiAgICAgICAgICAgICAtIDguMC94KlExKHgpKigtT25lT3ZlclNxcnQyKihzaW54
K2Nvc3gpKQogICAgICAgICAgICk7CiAgICAgIGlmIHAgPCAwLjAgdGhlbgogICAgICAgIHJlc3Vs
dCA6PSAtcmVzdWx0OwogICAgICBlbmQKICAgIGVuZDsKZW5kOwoKLy8gRnVuY3Rpb25zIHRvIGFp
ZCBjYWxjdWxhdGlvbnMKCmZ1bmN0aW9uIEJlc3NlbCAoeCA6IGRvdWJsZSkgOiBkb3VibGU7CmJl
Z2luCiAgaWYgeCA9IDAuMCB0aGVuCiAgICByZXN1bHQgOj0gUEkgLyA0LjAKICBlbHNlCiAgICBy
ZXN1bHQgOj0gQmVzc2VsT3JkZXJPbmUoUEkgKiB4KSAvICgyLjAgKiB4KTsKZW5kOwoKZnVuY3Rp
b24gU2luYyAoeCA6IGRvdWJsZSkgOiBkb3VibGU7CnZhciB4eCA6IGRvdWJsZTsKYmVnaW4KICBp
ZiB4ID0gMC4wIHRoZW4KICAgIHJlc3VsdCA6PSAxLjAKICBlbHNlCiAgICBiZWdpbgogICAgeHgg
Oj0gUEkqeDsKICAgIHJlc3VsdCA6PSBzaW4oeHgpIC8gKHh4KTsKICAgIGVuZDsKZW5kOwoKZnVu
Y3Rpb24gQmxhY2ttYW4gKHggOiBkb3VibGUpIDogZG91YmxlOwp2YXIgeHBpIDogZG91YmxlOwpi
ZWdpbgogIHhwaSA6PSBQSSAqIHg7CiAgcmVzdWx0IDo9IDAuNDIgKyAwLjUgKiBjb3MoeHBpKSAr
IDAuMDggKiBjb3MoMip4cGkpOwplbmQ7Cgp7IFRIZXJtaXRlSW50ZXJwb2xhdGlvbiB9CgpmdW5j
dGlvbiBUSGVybWl0ZUludGVycG9sYXRpb24uRmlsdGVyKHg6IGRvdWJsZSk6IGRvdWJsZTsKYmVn
aW4KICBpZiB4IDwgLTEuMCB0aGVuCiAgICByZXN1bHQgOj0gMC4wCiAgZWxzZSBpZiB4IDwgMC4w
IHRoZW4KICAgIHJlc3VsdCA6PSAoMi4wKigteCktMy4wKSooLXgpKigteCkrMS4wCiAgZWxzZSBp
ZiB4IDwgMS4wIHRoZW4KICAgIHJlc3VsdCA6PSAoMi4wKngtMy4wKSp4KngrMS4wCiAgZWxzZQog
ICAgcmVzdWx0IDo9IDA7CmVuZDsKCmZ1bmN0aW9uIFRIZXJtaXRlSW50ZXJwb2xhdGlvbi5NYXhT
dXBwb3J0OiBkb3VibGU7CmJlZ2luCiAgcmVzdWx0IDo9IDEuMDsKZW5kOwoKeyBUTGFuY3pvc0lu
dGVycG9sYXRpb24gfQoKZnVuY3Rpb24gVExhbmN6b3NJbnRlcnBvbGF0aW9uLkZpbHRlcih4OiBk
b3VibGUpOiBkb3VibGU7CmJlZ2luCiAgaWYgeCA8IC0zLjAgdGhlbgogICAgcmVzdWx0IDo9IDAu
MAogIGVsc2UgaWYgeCA8IDAuMCB0aGVuCiAgICByZXN1bHQgOj0gc2luYygteCkqc2luYygteC8z
LjApCiAgZWxzZSBpZiB4IDwgMy4wIHRoZW4KICAgIHJlc3VsdCA6PSBzaW5jKHgpKnNpbmMoeC8z
LjApCiAgZWxzZQogICAgcmVzdWx0IDo9IDAuMDsKZW5kOwoKZnVuY3Rpb24gVExhbmN6b3NJbnRl
cnBvbGF0aW9uLk1heFN1cHBvcnQ6IGRvdWJsZTsKYmVnaW4KICByZXN1bHQgOj0gMy4wOwplbmQ7
Cgp7IFRRdWFkcmF0aWNJbnRlcnBvbGF0aW9uIH0KCmZ1bmN0aW9uIFRRdWFkcmF0aWNJbnRlcnBv
bGF0aW9uLkZpbHRlcih4OiBkb3VibGUpOiBkb3VibGU7CmJlZ2luCiAgaWYgeCA8IC0xLjUgdGhl
bgogICAgcmVzdWx0IDo9IDAuMAogIGVsc2UgaWYgeCA8IC0wLjUgdGhlbgogICAgYmVnaW4KICAg
IHggOj0geCArIDEuNTsKICAgIHJlc3VsdCA6PSAwLjUqeCp4OwogICAgZW5kCiAgZWxzZSBpZiB4
IDwgMC41IHRoZW4KICAgIHJlc3VsdCA6PSAwLjc1IC0geCp4CiAgZWxzZSBpZiB4IDwgMS41IHRo
ZW4KICAgIGJlZ2luCiAgICB4IDo9IHggLSAxLjU7CiAgICByZXN1bHQgOj0gMC41KngqeDsKICAg
IGVuZAogIGVsc2UKICAgIHJlc3VsdCA6PSAwLjA7CmVuZDsKCmZ1bmN0aW9uIFRRdWFkcmF0aWNJ
bnRlcnBvbGF0aW9uLk1heFN1cHBvcnQ6IGRvdWJsZTsKYmVnaW4KICByZXN1bHQgOj0gMS41Owpl
bmQ7Cgp7IFRDdWJpY0ludGVycG9sYXRpb24gfQoKZnVuY3Rpb24gVEN1YmljSW50ZXJwb2xhdGlv
bi5GaWx0ZXIoeDogZG91YmxlKTogZG91YmxlOwpiZWdpbgogIGlmIHggPCAtMi4wIHRoZW4KICAg
IHJlc3VsdCA6PSAwLjAKICBlbHNlIGlmIHggPCAtMS4wIHRoZW4KICAgIGJlZ2luCiAgICB4IDo9
IHggKzIuMDsKICAgIHJlc3VsdCA6PSB4KngqeCAvIDYuMDsKICAgIGVuZAogIGVsc2UgaWYgeCA8
IDAuMCB0aGVuCiAgICByZXN1bHQgOj0gKDQuMCt4KngqKC02LjAtMy4wKngpKSAvIDYuMAogIGVs
c2UgaWYgeCA8IDEuMCB0aGVuCiAgICByZXN1bHQgOj0gKDQuMCt4KngqKC02LjArMy4wKngpKSAv
IDYuMAogIGVsc2UgaWYgeCA8IDIuMCB0aGVuCiAgICBiZWdpbgogICAgeCA6PSAyLjAgLSB4Owog
ICAgcmVzdWx0IDo9IHgqeCp4IC8gNi4wOwogICAgZW5kCiAgZWxzZQogICAgcmVzdWx0IDo9IDAu
MDsKZW5kOwoKZnVuY3Rpb24gVEN1YmljSW50ZXJwb2xhdGlvbi5NYXhTdXBwb3J0OiBkb3VibGU7
CmJlZ2luCiAgcmVzdWx0IDo9IDIuMDsKZW5kOwoKeyBUQ2F0cm9tSW50ZXJwb2xhdGlvbiB9Cgpm
dW5jdGlvbiBUQ2F0cm9tSW50ZXJwb2xhdGlvbi5GaWx0ZXIoeDogZG91YmxlKTogZG91YmxlOwpi
ZWdpbgogIGlmIHggPCAtMi4wIHRoZW4KICAgIHJlc3VsdCA6PSAwLjAKICBlbHNlIGlmIHggPCAt
MS4wIHRoZW4KICAgIHJlc3VsdCA6PSAwLjUqKDQuMCt4Kig4LjAreCooNS4wK3gpKSkKICBlbHNl
IGlmIHggPCAwLjAgdGhlbgogICAgcmVzdWx0IDo9IDAuNSooMi4wK3gqeCooLTUuMC0zLjAqeCkp
CiAgZWxzZSBpZiB4IDwgMS4wIHRoZW4KICAgIHJlc3VsdCA6PSAwLjUqKDIuMCt4KngqKC01LjAr
My4wKngpKQogIGVsc2UgaWYgeCA8IDIuMCB0aGVuCiAgICByZXN1bHQgOj0gMC41Kig0LjAreCoo
LTguMCt4Kig1LjAteCkpKQogIGVsc2UKICAgIHJlc3VsdCA6PSAwLjA7CmVuZDsKCmZ1bmN0aW9u
IFRDYXRyb21JbnRlcnBvbGF0aW9uLk1heFN1cHBvcnQ6IGRvdWJsZTsKYmVnaW4KICByZXN1bHQg
Oj0gMi4wOwplbmQ7Cgp7IFRIYW5uaW5nSW50ZXJwb2xhdGlvbiB9CgpmdW5jdGlvbiBUSGFubmlu
Z0ludGVycG9sYXRpb24uRmlsdGVyKHg6IGRvdWJsZSk6IGRvdWJsZTsKYmVnaW4KICBpZiB4IDwg
LTEuMCB0aGVuCiAgICByZXN1bHQgOj0gMC4wCiAgZWxzZSBpZiB4IDw9IDEuMCB0aGVuCiAgICBy
ZXN1bHQgOj0gMC41KzAuNSpjb3MoUEkqeCkKICBlbHNlCiAgICByZXN1bHQgOj0gMC4wOwplbmQ7
CgpmdW5jdGlvbiBUSGFubmluZ0ludGVycG9sYXRpb24uTWF4U3VwcG9ydDogZG91YmxlOwpiZWdp
bgogIHJlc3VsdCA6PSAxLjA7CmVuZDsKCnsgVEhhbW1pbmdJbnRlcnBvbGF0aW9uIH0KCmZ1bmN0
aW9uIFRIYW1taW5nSW50ZXJwb2xhdGlvbi5GaWx0ZXIoeDogZG91YmxlKTogZG91YmxlOwpiZWdp
bgogIGlmIHggPCAtMS4wIHRoZW4KICAgIHJlc3VsdCA6PSAwLjAKICBlbHNlIGlmIHggPD0gMS4w
IHRoZW4KICAgIHJlc3VsdCA6PSAwLjU0KzAuNDYqY29zKFBJKngpCiAgZWxzZQogICAgcmVzdWx0
IDo9IDAuMDsKZW5kOwoKZnVuY3Rpb24gVEhhbW1pbmdJbnRlcnBvbGF0aW9uLk1heFN1cHBvcnQ6
IGRvdWJsZTsKYmVnaW4KICByZXN1bHQgOj0gMS4wOwplbmQ7Cgp7IFRCaWxpbmVhaXJJbnRlcnBv
bGF0aW9uIH0KCmZ1bmN0aW9uIFRCaWxpbmVhaXJJbnRlcnBvbGF0aW9uLkZpbHRlcih4OiBkb3Vi
bGUpOiBkb3VibGU7CmJlZ2luCiAgaWYgeCA8IC0xLjAgdGhlbgogICAgcmVzdWx0IDo9IDAuMAog
IGVsc2UgaWYgeCA8IDAuMCB0aGVuCiAgICByZXN1bHQgOj0gMSArIHgKICBlbHNlIGlmIHggPCAx
LjAgdGhlbgogICAgcmVzdWx0IDo9IDEgLSB4CiAgZWxzZQogICAgcmVzdWx0IDo9IDAuMDsKZW5k
OwoKZnVuY3Rpb24gVEJpbGluZWFpckludGVycG9sYXRpb24uTWF4U3VwcG9ydDogZG91YmxlOwpi
ZWdpbgogIHJlc3VsdCA6PSAxLjA7CmVuZDsKCnsgVEJveEludGVycG9sYXRpb24gfQoKZnVuY3Rp
b24gVEJveEludGVycG9sYXRpb24uRmlsdGVyKHg6IGRvdWJsZSk6IGRvdWJsZTsKYmVnaW4KICBp
ZiB4IDwgLTAuNSB0aGVuCiAgICByZXN1bHQgOj0gMC4wCiAgZWxzZSBpZiB4IDwgMC41IHRoZW4K
ICAgIHJlc3VsdCA6PSAxLjAKICBlbHNlCiAgICByZXN1bHQgOj0gMC4wOwplbmQ7CgpmdW5jdGlv
biBUQm94SW50ZXJwb2xhdGlvbi5NYXhTdXBwb3J0OiBkb3VibGU7CmJlZ2luCiAgcmVzdWx0IDo9
IDAuNTsKZW5kOwoKeyBUR2F1c3NpYW5JbnRlcnBvbGF0aW9uIH0KCmZ1bmN0aW9uIFRHYXVzc2lh
bkludGVycG9sYXRpb24uRmlsdGVyKHg6IGRvdWJsZSk6IGRvdWJsZTsKYmVnaW4KICByZXN1bHQg
Oj0gZXhwKC0yLjAqeCp4KSAqIHNxcnQoMi4wL1BJKTsKZW5kOwoKZnVuY3Rpb24gVEdhdXNzaWFu
SW50ZXJwb2xhdGlvbi5NYXhTdXBwb3J0OiBkb3VibGU7CmJlZ2luCiAgcmVzdWx0IDo9IDEuMjU7
CmVuZDsKCnsgVEJsYWNrbWFuQmVzc2VsSW50ZXJwb2xhdGlvbiB9CgpmdW5jdGlvbiBUQmxhY2tt
YW5CZXNzZWxJbnRlcnBvbGF0aW9uLkZpbHRlcih4OiBkb3VibGUpOiBkb3VibGU7CmJlZ2luCiAg
cmVzdWx0IDo9IEJsYWNrbWFuKHgvTWF4U3VwcG9ydCkgKiBCZXNzZWwgKHgpOwplbmQ7CgpmdW5j
dGlvbiBUQmxhY2ttYW5CZXNzZWxJbnRlcnBvbGF0aW9uLk1heFN1cHBvcnQ6IGRvdWJsZTsKYmVn
aW4KICBSZXN1bHQgOj0gMy4yMzgzOwplbmQ7Cgp7IFRCbGFja21hblNpbmNJbnRlcnBvbGF0aW9u
IH0KCmZ1bmN0aW9uIFRCbGFja21hblNpbmNJbnRlcnBvbGF0aW9uLkZpbHRlcih4OiBkb3VibGUp
OiBkb3VibGU7CmJlZ2luCiAgUmVzdWx0IDo9IEJsYWNrbWFuKHgvTWF4U3VwcG9ydCkgKiBTaW5j
KHgpOwplbmQ7CgpmdW5jdGlvbiBUQmxhY2ttYW5TaW5jSW50ZXJwb2xhdGlvbi5NYXhTdXBwb3J0
OiBkb3VibGU7CmJlZ2luCiAgUmVzdWx0IDo9IDQuMDsKZW5kOwoKeyBUQmxhY2ttYW5JbnRlcnBv
bGF0aW9uIH0KCmZ1bmN0aW9uIFRCbGFja21hbkludGVycG9sYXRpb24uRmlsdGVyKHg6IGRvdWJs
ZSk6IGRvdWJsZTsKYmVnaW4KICBSZXN1bHQgOj0gQmxhY2ttYW4gKHgpOwplbmQ7CgpmdW5jdGlv
biBUQmxhY2ttYW5JbnRlcnBvbGF0aW9uLk1heFN1cHBvcnQ6IGRvdWJsZTsKYmVnaW4KICBSZXN1
bHQgOj0gMS4wOwplbmQ7CgplbmQuCgo=
More information about the fpc-devel
mailing list