<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>189025</bug_id>
          
          <creation_ts>2018-08-27 16:14:56 -0700</creation_ts>
          <short_desc>[WHLSL] Implement atomic operations and barriers</short_desc>
          <delta_ts>2018-10-13 15:15:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>rmorisset</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454179</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-27 16:14:56 -0700</bug_when>
    <thetext>Implement atomic operations and barriers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459218</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 18:51:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/44403016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462239</commentid>
    <comment_count>2</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-21 19:32:30 -0700</bug_when>
    <thetext>They also need implementing in the code generation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462360</commentid>
    <comment_count>3</comment_count>
      <attachid>350516</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 04:08:25 -0700</bug_when>
    <thetext>Created attachment 350516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462362</commentid>
    <comment_count>4</comment_count>
      <attachid>350517</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 04:21:26 -0700</bug_when>
    <thetext>Created attachment 350517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462436</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-22 16:23:03 -0700</bug_when>
    <thetext>Committed r236387: &lt;https://trac.webkit.org/changeset/236387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468882</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 15:15:33 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/82</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350516</attachid>
            <date>2018-09-22 04:08:25 -0700</date>
            <delta_ts>2018-09-22 04:21:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189025-20180922200824.patch</filename>
            <type>text/plain</type>
            <size>27097</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uNjI0M2Y1ZGZjNWI2NjdmNDJmYzhlYTMyNGM3YmMzZDU5N2NiZjc5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE4LTA5LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBJbXBsZW1lbnQgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGJhcnJp
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkw
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0
aGUgaW50ZXJwcmV0ZXIsIGF0b21pYyBvcGVyYXRpb25zIGRvbid0IG5lZWQgdG8gYmUgYXRvbWlj
LgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAg
ICAgICAgKEludHJpbnNpY3MuKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChsZXQuc3RhbmRhcmRMaWJyYXJ5KToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVzdHMuYXRv
bWljcyk6CisKIDIwMTgtMDktMjEgIFRob21hcyBEZW5uZXkgIDx0ZGVubmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0hMU0xdIExvY2FsIHZhcmlhYmxlcyBzaG91bGQgYmUgc3RhdGljYWxseSBh
bGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJp
bnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmlu
ZGV4IDY4YjBkZDU3M2ZjMDJlYTM4NTE3OTU1ZDgzODhhNjQ2YWE5MGE1OTYuLjRiZWNhYjNkN2Fj
N2UxN2VmOWY4NDE4OWE5NmYzZDZkZDYzMDA5YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMjMwLDEyICsyMzAsMTYgQEAgY2xhc3MgSW50cmlu
c2ljcyB7CiAgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGF0b21pY19pbnQiLAogICAgICAg
ICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY19pbnQgPSB0eXBl
OworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBl
LnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9m
ZnNldCwgMCk7CiAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYXRvbWljX3VpbnQiLAogICAgICAgICAgICAgIHR5
cGUgPT4gewogICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY191aW50ID0gdHlwZTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0
ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDAp
OwogICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVj
dG9yRWxlbWVudFR5cGVzKSB7CkBAIC04NTMsNiArODU3LDE5OCBAQCBjbGFzcyBJbnRyaW5zaWNz
IHsKICAgICAgICAgZm9yIChsZXQgc2V0dGVyIG9mIEJ1aWx0aW5NYXRyaXhTZXR0ZXIuZnVuY3Rp
b25zKCkpCiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5j
ID0+IHNldHRlci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpKTsKIAorICAgICAgICB0
aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGF0
b21pY191aW50KiB0aHJlYWQsdWludCx1aW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAgIGZ1bmMg
PT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRv
bWljLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGEg
PSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxl
dCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQg
PSBjYXN0VG9VaW50KGEgKyBiKTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5s
b2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgICAg
IGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChyZXN1bHQpLCAxKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAor
ICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2VkQWRkKGF0b21pY19pbnQqIHRocmVh
ZCxpbnQsaW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAg
ICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2YWx1ZSwgb3JpZ2lu
YWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9hZFZhbHVl
KCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYXN0VG9JbnQoYSArIGIp
OworICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9t
KEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgp
LmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZl
IHZvaWQgSW50ZXJsb2NrZWRBbmQoYXRvbWljX3VpbnQqIHRocmVhZCx1aW50LHVpbnQqIHRocmVh
ZCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAg
ICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSB2YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNhc3RUb1VpbnQoYSAmIGIpOworICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGEpLCAx
KTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIu
Ym94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRBbmQoYXRvbWljX2ludCogdGhyZWFkLGludCxpbnQqIHRocmVhZCkiLAorICAgICAgICAgICAg
ZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9u
KFthdG9taWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICBs
ZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IGIgPSB2YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IGNhc3RUb0ludChhICYgYik7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFs
dWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAg
ICAgICBhdG9taWMubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3gocmVzdWx0KSwgMSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNl
dCgKKyAgICAgICAgICAgICJuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZEV4Y2hhbmdlKGF0b21pY191
aW50KiB0aHJlYWQsdWludCx1aW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4gewor
ICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2
YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9t
aWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBiID0g
dmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9h
ZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAgICAgICBh
dG9taWMubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYiksIDEpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAibmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShhdG9taWNfaW50KiB0aHJlYWQs
aW50LGludCogdGhyZWFkKSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAg
ICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFs
VmFsdWVdKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBhID0gYXRvbWljLmxvYWRWYWx1ZSgp
LmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IHZhbHVlLmxvYWRWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlG
cm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1
ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGIpLCAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB2
b2lkIEludGVybG9ja2VkTWF4KGF0b21pY191aW50KiB0aHJlYWQsdWludCx1aW50KiB0aHJlYWQp
IiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50
YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBjYXN0VG9VaW50KGEgPiBiID8gYSA6IGIpOworICAgICAg
ICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94
KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9t
KEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0p
OworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWRNYXgoYXRvbWljX2ludCogdGhyZWFkLGludCxpbnQqIHRocmVhZCkiLAorICAgICAg
ICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1
bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAg
ICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IGIgPSB2YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IGNhc3RUb0ludChhID4gYiA/IGEgOiBiKTsKKyAgICAgICAgICAgICAgICAg
ICAgb3JpZ2luYWxWYWx1ZS5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChy
ZXN1bHQpLCAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWlu
KGF0b21pY191aW50KiB0aHJlYWQsdWludCx1aW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAgIGZ1
bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihb
YXRvbWljLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
IGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBjYXN0VG9VaW50KGEgPCBiID8gYSA6IGIpOworICAgICAgICAgICAgICAgICAgICBvcmln
aW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCks
IDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMu
X21hcC5zZXQoCisgICAgICAgICAgICAibmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oYXRvbWlj
X2ludCogdGhyZWFkLGludCxpbnQqIHRocmVhZCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7Cisg
ICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZh
bHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21p
Yy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSB2
YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNhc3RU
b0ludChhIDwgYiA/IGEgOiBiKTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5s
b2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgICAg
IGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChyZXN1bHQpLCAxKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAuc2V0KAor
ICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2VkT3IoYXRvbWljX3VpbnQqIHRocmVh
ZCx1aW50LHVpbnQqIHRocmVhZCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmln
aW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFs
dWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSB2YWx1ZS5sb2Fk
VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNhc3RUb1VpbnQoYSB8
IGIpOworICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlG
cm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1
ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAibmF0
aXZlIHZvaWQgSW50ZXJsb2NrZWRPcihhdG9taWNfaW50KiB0aHJlYWQsaW50LGludCogdGhyZWFk
KSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVu
dGF0aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAg
ICAgICAgICAgICAgICAgIGxldCBhID0gYXRvbWljLmxvYWRWYWx1ZSgpLmxvYWRWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IHZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvSW50KGEgfCBiKTsKKyAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxWYWx1ZS5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7
CisgICAgICAgICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJv
eChyZXN1bHQpLCAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2Vk
WG9yKGF0b21pY191aW50KiB0aHJlYWQsdWludCx1aW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAg
IGZ1bmMgPT4geworICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlv
bihbYXRvbWljLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBjYXN0VG9VaW50KGEgXiBiKTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxW
YWx1ZS5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAg
ICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChyZXN1bHQpLCAxKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9tYXAu
c2V0KAorICAgICAgICAgICAgIm5hdGl2ZSB2b2lkIEludGVybG9ja2VkWG9yKGF0b21pY19pbnQq
IHRocmVhZCxpbnQsaW50KiB0aHJlYWQpIiwKKyAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAg
ICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2YWx1ZSwg
b3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9h
ZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUu
bG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYXN0VG9JbnQo
YSBeIGIpOworICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNv
cHlGcm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRW
YWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAi
bmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoYXRvbWljX3VpbnQqIHRocmVh
ZCx1aW50LHVpbnQsdWludCogdGhyZWFkKSIsCisgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAg
ICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oW2F0b21pYywgY29tcGFy
ZVZhbHVlLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
IGxldCBiID0gY29tcGFyZVZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBs
ZXQgYyA9IHZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBi
KQorICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQ
dHIuYm94KGMpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5sb2FkVmFs
dWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICJuYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShhdG9taWNfaW50KiB0aHJlYWQsaW50LGlu
dCxpbnQqIHRocmVhZCkiLAorICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAg
ZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIGNvbXBhcmVWYWx1ZSwgdmFs
dWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBhID0gYXRvbWlj
LmxvYWRWYWx1ZSgpLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGNv
bXBhcmVWYWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGMgPSB2YWx1
ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChjKSwg
MSk7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9hZFZhbHVlKCkuY29weUZy
b20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
CiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVW5kZWZpbmVkKG9yaWdpbiwgZXhwbGFuYXRpb24sIHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4
IGNmMzA5M2JiZThjZjM3YjI5M2QzOGE3OWU2ZTc2OTExNmM0NDkzMzguLmViZmI5OTg3NTYzOWZk
ZTgxZmNjZGIzZTZhY2IzY2NhNDliNDM5NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTE4ODgsMTUgKzE4ODgsMTkgQEAgbGV0
IHN0YW5kYXJkTGlicmFyeSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBwcmludCgpOwotICAgICAgICAvKgorCiAgICAgICAgIGZvciAobGV0IHR5cGUg
b2YgW2B1aW50YCwgYGludGBdKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBmdW5jdGlvbk5hbWUg
b2YgW2BBZGRgLCBgQW5kYCwgYEV4Y2hhbmdlYCwgYE1heGAsIGBNaW5gLCBgT3JgLCBgWG9yYF0p
IHsKICAgICAgICAgICAgICAgICBwcmludChgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWQke2Z1bmN0
aW9uTmFtZX0odGhyZWFkIGF0b21pY18ke3R5cGV9KiwgJHt0eXBlfSwgdGhyZWFkICR7dHlwZX0q
KTtgKTsKKyAgICAgICAgICAgICAgICAvL3ByaW50KGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZCR7
ZnVuY3Rpb25OYW1lfSh0aHJlYWRncm91cCBhdG9taWNfJHt0eXBlfSosICR7dHlwZX0sIHRocmVh
ZCAke3R5cGV9Kik7YCk7CisgICAgICAgICAgICAgICAgLy9wcmludChgbmF0aXZlIHZvaWQgSW50
ZXJsb2NrZWQke2Z1bmN0aW9uTmFtZX0oZGV2aWNlIGF0b21pY18ke3R5cGV9KiwgJHt0eXBlfSwg
dGhyZWFkICR7dHlwZX0qKTtgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByaW50KGBu
YXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSh0aHJlYWQgYXRvbWljXyR7dHlw
ZX0qLCAke3R5cGV9LCAke3R5cGV9LCB0aHJlYWQgJHt0eXBlfSopO2ApOworICAgICAgICAgICAg
Ly9wcmludChgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhyZWFkZ3Jv
dXAgYXRvbWljXyR7dHlwZX0qLCAke3R5cGV9LCAke3R5cGV9LCB0aHJlYWQgJHt0eXBlfSopO2Ap
OworICAgICAgICAgICAgLy9wcmludChgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhj
aGFuZ2UoZGV2aWNlIGF0b21pY18ke3R5cGV9KiwgJHt0eXBlfSwgJHt0eXBlfSwgdGhyZWFkICR7
dHlwZX0qKTtgKTsKICAgICAgICAgfQogICAgICAgICBwcmludCgpOwotICAgICAgICAqLworCiAg
ICAgICAgIGZvciAobGV0IHR5cGUgb2YgW2B1Y2hhcmAsIGB1c2hvcnRgLCBgdWludGAsIGBjaGFy
YCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKICAgICAgICAgICAgIGZvciAo
bGV0IGxlbmd0aCBvZiBbYGAsIGAyYCwgYDNgLCBgNGBdKSB7CiAgICAgICAgICAgICAgICAgcHJp
bnQoYG5hdGl2ZSAke3R5cGV9JHtsZW5ndGh9IFNhbXBsZShUZXh0dXJlMUQ8JHt0eXBlfSR7bGVu
Z3RofT4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTtgKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzCmluZGV4IGJmOWY1NWUzMTUzNzg0YjZkMDA3NGJlMWI5YTkxNDhiYTJlNDI0
OWUuLjJhNzk4ZGVjMzRhMzQ5MmJlZmI1MGVjMDU4MjMwMjRlYzI1NDFjZDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtNTgwMyw2ICs1ODAzLDM3OCBAQCB0ZXN0cy5j
YXN0cyA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImJheiIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDE0KTsKIH0KIAordGVzdHMuYXRv
bWljcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAg
IHRlc3QgaW50IGZvbyhpbnQgeikgeworICAgICAgICAgICAgYXRvbWljX2ludCB4OworICAgICAg
ICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ4LCB6LCAmcmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50
KHByb2dyYW0sIDYpXSksIDApOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0
IGludCBmb28oaW50IHopIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgeDsKKyAgICAgICAgICAg
IGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7
CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCA2KV0pLCA2
KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB6KSB7
CisgICAgICAgICAgICBhdG9taWNfaW50IHg7CisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAg
ICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJngsIHosICZyZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIGludCh4KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNildKSwgNik7Cisg
ICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeikgeworICAg
ICAgICAgICAgYXRvbWljX2ludCB4OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9j
a2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBpbnQoeCk7CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDEyKTsKKyAgICBwcm9ncmFtID0gZG9Q
cmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHopIHsKKyAgICAgICAgICAgIGF0b21p
Y191aW50IHg7CisgICAgICAgICAgICB1aW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9j
a2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgNildKSwgMCk7CisgICAgcHJvZ3JhbSA9IGRv
UHJlcChgCisgICAgICAgIHRlc3QgdWludCBmb28odWludCB6KSB7CisgICAgICAgICAgICBhdG9t
aWNfdWludCB4OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxv
Y2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwg
eiwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAg
YCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KHByb2dyYW0sIDYpXSksIDYpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAg
ICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeikgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgeDsK
KyAgICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJngs
IHosICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHVpbnQoeCk7CisgICAgICAgIH0KKyAg
ICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbbWFrZVVpbnQocHJvZ3JhbSwgNildKSwgNik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisg
ICAgICAgIHRlc3QgdWludCBmb28odWludCB6KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB4
OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
eCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwgeiwgJnJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh4KTsKKyAgICAgICAgfQorICAgIGApOworICAg
IGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dChwcm9ncmFtLCA2KV0pLCAxMik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRl
c3QgdWludCBmb28odWludCB4LCB1aW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY191aW50IHo7
CisgICAgICAgICAgICB1aW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6
LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQW5kKCZ6LCB5LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAgICAgICB9CisgICAgYCk7CisgICAg
Y2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50
KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCAxKTsKKyAgICBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeworICAgICAg
ICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAg
ICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAgICAgSW50ZXJsb2Nr
ZWRBbmQoJnosIHksICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwg
Myk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCwg
aW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAgICAgIGludCByZXN1
bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAg
ICAgICBJbnRlcmxvY2tlZEFuZCgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
aW50KHopOworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUludChwcm9n
cmFtLCA1KV0pLCAxKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQg
Zm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6OworICAgICAgICAg
ICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQW5kKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBt
YWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAg
ICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWlu
dCB6OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFk
ZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZ6LCB5
LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAgICAgICB9CisgICAg
YCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCA1KTsKKyAgICBw
cm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkg
eworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0Owor
ICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAgICAg
SW50ZXJsb2NrZWRFeGNoYW5nZSgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChw
cm9ncmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBp
bnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6OworICAgICAg
ICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVz
dWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkRXhjaGFuZ2UoJnosIHksICZyZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIGludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNr
SW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3Jh
bSwgMyksIG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgNSk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChg
CisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21p
Y19pbnQgejsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tl
ZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEV4Y2hhbmdlKCZ6
LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAg
ICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHBy
b2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7
CisgICAgICAgICAgICBhdG9taWNfdWludCB6OworICAgICAgICAgICAgdWludCByZXN1bHQ7Cisg
ICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJ
bnRlcmxvY2tlZE1heCgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh6
KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3Jh
bSwgNSldKSwgNSk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBtYWtlVWludChwcm9ncmFtLCAzKV0pLCA1
KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgs
IHVpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQg
cmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAg
ICAgICAgICAgSW50ZXJsb2NrZWRNYXgoJnosIHksICZyZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVp
bnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBtYWtlVWludChwcm9ncmFt
LCAzKV0pLCA1KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQgZm9v
KGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6OworICAgICAgICAgICAg
aW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsK
KyAgICAgICAgICAgIEludGVybG9ja2VkTWF4KCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBpbnQoeik7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtl
SW50KHByb2dyYW0sIDUpXSksIDUpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNSksIG1ha2VJbnQocHJvZ3JhbSwg
MyldKSwgNSk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZvbyhp
bnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAgICAgIGlu
dCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7Cisg
ICAgICAgICAgICBJbnRlcmxvY2tlZE1heCgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUlu
dChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDUpLCBtYWtlSW50KHByb2dyYW0sIDMp
XSksIDUpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVp
bnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB6OworICAgICAgICAgICAg
dWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7
CisgICAgICAgICAgICBJbnRlcmxvY2tlZE1pbigmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAg
ICByZXR1cm4gdWludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwg
bWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBtYWtlVWludChw
cm9ncmFtLCAzKV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1
aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAg
ICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgs
ICZyZXN1bHQpOworICAgICAgICAgICAgSW50ZXJsb2NrZWRNaW4oJnosIHksICZyZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNr
VWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9n
cmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBt
YWtlVWludChwcm9ncmFtLCAzKV0pLCA1KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAg
ICAgdGVzdCBpbnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6
OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6
LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkTWluKCZ6LCB5LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBpbnQoeik7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHBy
b2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIGNoZWNrSW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNSksIG1h
a2VJbnQocHJvZ3JhbSwgMyldKSwgMyk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAg
IHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsK
KyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwg
eCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE1pbigmeiwgeSwgJnJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hl
Y2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9n
cmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDUpLCBtYWtl
SW50KHByb2dyYW0sIDMpXSksIDUpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0
ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB6
OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
eiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE9yKCZ6LCB5LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAgICAgICB9CisgICAgYCk7CisgICAg
Y2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50
KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCA3KTsKKyAgICBwcm9ncmFtID0g
ZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeworICAgICAg
ICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAg
ICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAgICAgSW50ZXJsb2Nr
ZWRPcigmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCAz
KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4LCBp
bnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6OworICAgICAgICAgICAgaW50IHJlc3Vs
dDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkT3IoJnosIHksICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGlu
dCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyksIG1ha2VJbnQocHJvZ3Jh
bSwgNSldKSwgNyk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZv
byhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAgICAg
IGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7
CisgICAgICAgICAgICBJbnRlcmxvY2tlZE9yKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtl
SW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0
ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB6
OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
eiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZFhvcigmeiwgeSwgJnJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAg
IGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWlu
dChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgNik7CisgICAgcHJvZ3JhbSA9
IGRvUHJlcChgCisgICAgICAgIHRlc3QgdWludCBmb28odWludCB4LCB1aW50IHkpIHsKKyAgICAg
ICAgICAgIGF0b21pY191aW50IHo7CisgICAgICAgICAgICB1aW50IHJlc3VsdDsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9j
a2VkWG9yKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSks
IDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IGludCBmb28oaW50IHgs
IGludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfaW50IHo7CisgICAgICAgICAgICBpbnQgcmVz
dWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAg
ICAgICAgSW50ZXJsb2NrZWRYb3IoJnosIHksICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJu
IGludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyksIG1ha2VJbnQocHJv
Z3JhbSwgNSldKSwgNik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50
IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAg
ICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3Vs
dCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZFhvcigmeiwgeSwgJnJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAzKSwg
bWFrZUludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAg
ICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSwgdWludCB6KSB7CisgICAgICAgICAgICBh
dG9taWNfdWludCB3OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRl
cmxvY2tlZEFkZCgmdywgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZENvbXBh
cmVFeGNoYW5nZSgmdywgeSwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh3
KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3Jh
bSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIDUpOworICAgIGNoZWNrVWludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFr
ZVVpbnQocHJvZ3JhbSwgNCksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dy
YW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5LCB1aW50
IHopIHsKKyAgICAgICAgICAgIGF0b21pY191aW50IHc7CisgICAgICAgICAgICB1aW50IHJlc3Vs
dDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ3LCB4LCAmcmVzdWx0KTsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZ3LCB5LCB6LCAmcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQo
cHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwg
MyksIG1ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAg
ICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDQpLCBtYWtlVWludChwcm9ncmFtLCA1
KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQgZm9vKGlu
dCB4LCBpbnQgeSwgaW50IHopIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgdzsKKyAgICAgICAg
ICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmdywgeCwgJnJlc3Vs
dCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgmdywgeSwgeiwgJnJl
c3VsdCk7CisgICAgICAgICAgICByZXR1cm4gaW50KHcpOworICAgICAgICB9CisgICAgYCk7Cisg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUlu
dChwcm9ncmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCA1KV0p
LCA1KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDQpLCBtYWtlSW50KHByb2dy
YW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IGludCBm
b28oaW50IHgsIGludCB5LCBpbnQgeikgeworICAgICAgICAgICAgYXRvbWljX2ludCB3OworICAg
ICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ3LCB4LCAm
cmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZ3LCB5LCB6
LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBg
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0s
IDUpXSksIDMpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyksIG1ha2VJbnQocHJvZ3JhbSwgNCksIG1ha2VJbnQo
cHJvZ3JhbSwgNSldKSwgMyk7Cit9CisKIHRlc3RzLnBvaW50ZXJUb01lbWJlciA9IGZ1bmN0aW9u
KCkKIHsKICAgICBjaGVja0ZhaWwoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350517</attachid>
            <date>2018-09-22 04:21:26 -0700</date>
            <delta_ts>2018-09-22 15:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189025-20180922202124.patch</filename>
            <type>text/plain</type>
            <size>28021</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MzY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ExZmEyMzljNDU1ODk5ZTY4OGMyMjNmZmJmZTlhZGQy
OTliMTliNy4uNjI0M2Y1ZGZjNWI2NjdmNDJmYzhlYTMyNGM3YmMzZDU5N2NiZjc5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE4LTA5LTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBJbXBsZW1lbnQgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGJhcnJp
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkw
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0
aGUgaW50ZXJwcmV0ZXIsIGF0b21pYyBvcGVyYXRpb25zIGRvbid0IG5lZWQgdG8gYmUgYXRvbWlj
LgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSW50cmluc2ljcy5qczoKKyAg
ICAgICAgKEludHJpbnNpY3MuKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
dGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChsZXQuc3RhbmRhcmRMaWJyYXJ5KToKKyAgICAg
ICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAodGVzdHMuYXRv
bWljcyk6CisKIDIwMTgtMDktMjEgIFRob21hcyBEZW5uZXkgIDx0ZGVubmV5QGFwcGxlLmNvbT4K
IAogICAgICAgICBbV0hMU0xdIExvY2FsIHZhcmlhYmxlcyBzaG91bGQgYmUgc3RhdGljYWxseSBh
bGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0ludHJp
bnNpY3MuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRyaW5zaWNzLmpzCmlu
ZGV4IDY4YjBkZDU3M2ZjMDJlYTM4NTE3OTU1ZDgzODhhNjQ2YWE5MGE1OTYuLmU2NzVkNGVjNmEw
NjYyZTUzZGMwYjM5MTIxOGRhZDdjNmNlNTM5ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0ludHJpbnNpY3MuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvSW50cmluc2ljcy5qcwpAQCAtMjMwLDEyICsyMzAsMTYgQEAgY2xhc3MgSW50cmlu
c2ljcyB7CiAgICAgICAgICAgICAgIm5hdGl2ZSB0eXBlZGVmIGF0b21pY19pbnQiLAogICAgICAg
ICAgICAgIHR5cGUgPT4gewogICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY19pbnQgPSB0eXBl
OworICAgICAgICAgICAgICAgICB0eXBlLnNpemUgPSAxOworICAgICAgICAgICAgICAgICB0eXBl
LnBvcHVsYXRlRGVmYXVsdFZhbHVlID0gKGJ1ZmZlciwgb2Zmc2V0KSA9PiBidWZmZXIuc2V0KG9m
ZnNldCwgMCk7CiAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgdGhpcy5fbWFwLnNldCgKICAg
ICAgICAgICAgICAibmF0aXZlIHR5cGVkZWYgYXRvbWljX3VpbnQiLAogICAgICAgICAgICAgIHR5
cGUgPT4gewogICAgICAgICAgICAgICAgICB0aGlzLmF0b21pY191aW50ID0gdHlwZTsKKyAgICAg
ICAgICAgICAgICAgdHlwZS5zaXplID0gMTsKKyAgICAgICAgICAgICAgICAgdHlwZS5wb3B1bGF0
ZURlZmF1bHRWYWx1ZSA9IChidWZmZXIsIG9mZnNldCkgPT4gYnVmZmVyLnNldChvZmZzZXQsIDAp
OwogICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAobGV0IHZlY3RvclR5cGUgb2YgVmVj
dG9yRWxlbWVudFR5cGVzKSB7CkBAIC04NTMsNiArODU3LDIwMCBAQCBjbGFzcyBJbnRyaW5zaWNz
IHsKICAgICAgICAgZm9yIChsZXQgc2V0dGVyIG9mIEJ1aWx0aW5NYXRyaXhTZXR0ZXIuZnVuY3Rp
b25zKCkpCiAgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KHNldHRlci50b1N0cmluZygpLCBmdW5j
ID0+IHNldHRlci5pbnN0YW50aWF0ZUltcGxlbWVudGF0aW9uKGZ1bmMpKTsKIAorICAgICAgICBm
b3IgKGxldCBhZGRyZXNzU3BhY2Ugb2YgWyJ0aHJlYWQiLCAidGhyZWFkZ3JvdXAiLCAiZGV2aWNl
Il0pIHsKKyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAgICAgYG5hdGl2
ZSB2b2lkIEludGVybG9ja2VkQWRkKGF0b21pY191aW50KiAke2FkZHJlc3NTcGFjZX0sdWludCx1
aW50KiB0aHJlYWQpYCwKKyAgICAgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmln
aW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9h
ZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IHZh
bHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNh
c3RUb1VpbnQoYSArIGIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5s
b2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhdG9taWMubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3gocmVzdWx0KSwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
dGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAgICBgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRB
ZGQoYXRvbWljX2ludCogJHthZGRyZXNzU3BhY2V9LGludCxpbnQqIHRocmVhZClgLAorICAgICAg
ICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvSW50KGEgKyBiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0
ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgp
LmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAgICAgYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkQW5kKGF0b21pY191aW50KiAke2FkZHJl
c3NTcGFjZX0sdWludCx1aW50KiB0aHJlYWQpYCwKKyAgICAgICAgICAgICAgICBmdW5jID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9t
aWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgYiA9IHZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IGNhc3RUb1VpbnQoYSAmIGIpOworICAgICAgICAgICAgICAgICAgICAgICAg
b3JpZ2luYWxWYWx1ZS5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdG9taWMubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3go
cmVzdWx0KSwgMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAgICAgICBgbmF0aXZlIHZv
aWQgSW50ZXJsb2NrZWRBbmQoYXRvbWljX2ludCogJHthZGRyZXNzU3BhY2V9LGludCxpbnQqIHRo
cmVhZClgLAorICAgICAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFs
dWVdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUo
KS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9h
ZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvSW50
KGEgJiBiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9hZFZhbHVl
KCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgYXRv
bWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuX21h
cC5zZXQoCisgICAgICAgICAgICAgICAgYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkRXhjaGFuZ2Uo
YXRvbWljX3VpbnQqICR7YWRkcmVzc1NwYWNlfSx1aW50LHVpbnQqIHRocmVhZClgLAorICAgICAg
ICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0
aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQ
dHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUo
KS5jb3B5RnJvbShFUHRyLmJveChiKSwgMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAgICAgICAgICAg
ICAgICBgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRFeGNoYW5nZShhdG9taWNfaW50KiAke2FkZHJl
c3NTcGFjZX0saW50LGludCogdGhyZWFkKWAsCisgICAgICAgICAgICAgICAgZnVuYyA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWlj
LCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBh
ID0gYXRvbWljLmxvYWRWYWx1ZSgpLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGV0IGIgPSB2YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbmFsVmFsdWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGIp
LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICAgIGBuYXRpdmUgdm9pZCBJbnRl
cmxvY2tlZE1heChhdG9taWNfdWludCogJHthZGRyZXNzU3BhY2V9LHVpbnQsdWludCogdGhyZWFk
KWAsCisgICAgICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmMu
aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2YWx1ZSwgb3JpZ2luYWxWYWx1ZV0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gYXRvbWljLmxvYWRWYWx1ZSgpLmxv
YWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSB2YWx1ZS5sb2FkVmFs
dWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYXN0VG9VaW50KGEg
PiBiID8gYSA6IGIpOworICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5sb2Fk
VmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhdG9taWMubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3gocmVzdWx0KSwgMSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGhp
cy5fbWFwLnNldCgKKyAgICAgICAgICAgICAgICBgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNYXgo
YXRvbWljX2ludCogJHthZGRyZXNzU3BhY2V9LGludCxpbnQqIHRocmVhZClgLAorICAgICAgICAg
ICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9u
ID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvSW50KGEgPiBiID8gYSA6IGIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZS5sb2FkVmFsdWUoKS5jb3B5RnJv
bShFUHRyLmJveChhKSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdG9taWMubG9hZFZh
bHVlKCkuY29weUZyb20oRVB0ci5ib3gocmVzdWx0KSwgMSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGhpcy5fbWFwLnNldCgKKyAg
ICAgICAgICAgICAgICBgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRNaW4oYXRvbWljX3VpbnQqICR7
YWRkcmVzc1NwYWNlfSx1aW50LHVpbnQqIHRocmVhZClgLAorICAgICAgICAgICAgICAgIGZ1bmMg
PT4geworICAgICAgICAgICAgICAgICAgICBmdW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24o
W2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFsdWVdKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBiID0gdmFsdWUubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvVWludChhIDwgYiA/IGEgOiBiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3go
YSksIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlG
cm9tKEVQdHIuYm94KHJlc3VsdCksIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAg
ICAgYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkTWluKGF0b21pY19pbnQqICR7YWRkcmVzc1NwYWNl
fSxpbnQsaW50KiB0aHJlYWQpYCwKKyAgICAgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZhbHVl
LCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9t
aWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
YiA9IHZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IGNhc3RUb0ludChhIDwgYiA/IGEgOiBiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbmFsVmFsdWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJl
c3VsdCksIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAgICAgYG5hdGl2ZSB2b2lk
IEludGVybG9ja2VkT3IoYXRvbWljX3VpbnQqICR7YWRkcmVzc1NwYWNlfSx1aW50LHVpbnQqIHRo
cmVhZClgLAorICAgICAgICAgICAgICAgIGZ1bmMgPT4geworICAgICAgICAgICAgICAgICAgICBm
dW5jLmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb24oW2F0b21pYywgdmFsdWUsIG9yaWdpbmFsVmFs
dWVdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFsdWUo
KS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gdmFsdWUubG9h
ZFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY2FzdFRvVWlu
dChhIHwgYik7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1
ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0
b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChyZXN1bHQpLCAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLl9t
YXAuc2V0KAorICAgICAgICAgICAgICAgIGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZE9yKGF0b21p
Y19pbnQqICR7YWRkcmVzc1NwYWNlfSxpbnQsaW50KiB0aHJlYWQpYCwKKyAgICAgICAgICAgICAg
ICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1lbnRhdGlvbiA9IGZ1
bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgYiA9IHZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNhc3RUb0ludChhIHwgYik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KGEp
LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJv
bShFUHRyLmJveChyZXN1bHQpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAorICAgICAgICAgICAgICAg
IGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZFhvcihhdG9taWNfdWludCogJHthZGRyZXNzU3BhY2V9
LHVpbnQsdWludCogdGhyZWFkKWAsCisgICAgICAgICAgICAgICAgZnVuYyA9PiB7CisgICAgICAg
ICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbihbYXRvbWljLCB2YWx1
ZSwgb3JpZ2luYWxWYWx1ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gYXRv
bWljLmxvYWRWYWx1ZSgpLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IGIgPSB2YWx1ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSBjYXN0VG9VaW50KGEgXiBiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFs
VmFsdWUubG9hZFZhbHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIuYm94KHJlc3VsdCks
IDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAgICAgICAgICAgYG5hdGl2ZSB2b2lkIEludGVy
bG9ja2VkWG9yKGF0b21pY19pbnQqICR7YWRkcmVzc1NwYWNlfSxpbnQsaW50KiB0aHJlYWQpYCwK
KyAgICAgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYy5pbXBs
ZW1lbnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IHZhbHVlLmxvYWRWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGNhc3RUb0ludChhIF4gYik7
CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlG
cm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0b21pYy5sb2Fk
VmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChyZXN1bHQpLCAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KAor
ICAgICAgICAgICAgICAgIGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZShh
dG9taWNfdWludCogJHthZGRyZXNzU3BhY2V9LHVpbnQsdWludCx1aW50KiB0aHJlYWQpYCwKKyAg
ICAgICAgICAgICAgICBmdW5jID0+IHsKKyAgICAgICAgICAgICAgICAgICAgZnVuYy5pbXBsZW1l
bnRhdGlvbiA9IGZ1bmN0aW9uKFthdG9taWMsIGNvbXBhcmVWYWx1ZSwgdmFsdWUsIG9yaWdpbmFs
VmFsdWVdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGF0b21pYy5sb2FkVmFs
dWUoKS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gY29tcGFy
ZVZhbHVlLmxvYWRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGMgPSB2YWx1
ZS5sb2FkVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID09IGIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljLmxvYWRWYWx1ZSgpLmNvcHlGcm9tKEVQdHIu
Ym94KGMpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUubG9hZFZh
bHVlKCkuY29weUZyb20oRVB0ci5ib3goYSksIDEpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoCisgICAgICAg
ICAgICAgICAgYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKGF0b21pY19p
bnQqICR7YWRkcmVzc1NwYWNlfSxpbnQsaW50LGludCogdGhyZWFkKWAsCisgICAgICAgICAgICAg
ICAgZnVuYyA9PiB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmMuaW1wbGVtZW50YXRpb24gPSBm
dW5jdGlvbihbYXRvbWljLCBjb21wYXJlVmFsdWUsIHZhbHVlLCBvcmlnaW5hbFZhbHVlXSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBhdG9taWMubG9hZFZhbHVlKCkubG9hZFZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGNvbXBhcmVWYWx1ZS5sb2Fk
VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjID0gdmFsdWUubG9hZFZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBiKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0b21pYy5sb2FkVmFsdWUoKS5jb3B5RnJvbShFUHRyLmJveChjKSwgMSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLmxvYWRWYWx1ZSgpLmNvcHlG
cm9tKEVQdHIuYm94KGEpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gY2hlY2tVbmRlZmluZWQob3Jp
Z2luLCBleHBsYW5hdGlvbiwgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh2YWx1
ZSA9PSB1bmRlZmluZWQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9TdGFuZGFyZExpYnJhcnkuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFu
ZGFyZExpYnJhcnkuanMKaW5kZXggY2YzMDkzYmJlOGNmMzdiMjkzZDM4YTc5ZTZlNzY5MTE2YzQ0
OTMzOC4uYWQ1YTU4ODY4ZTg4ZjYxNjIyYjM1YmJkZjVlZDE2OGU3ZmUzNmJkZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwpAQCAtMTg4
OCwxNSArMTg4OCwxOSBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHByaW50KCk7Ci0gICAgICAgIC8qCisKICAg
ICAgICAgZm9yIChsZXQgdHlwZSBvZiBbYHVpbnRgLCBgaW50YF0pIHsKICAgICAgICAgICAgIGZv
ciAobGV0IGZ1bmN0aW9uTmFtZSBvZiBbYEFkZGAsIGBBbmRgLCBgRXhjaGFuZ2VgLCBgTWF4YCwg
YE1pbmAsIGBPcmAsIGBYb3JgXSkgewogICAgICAgICAgICAgICAgIHByaW50KGBuYXRpdmUgdm9p
ZCBJbnRlcmxvY2tlZCR7ZnVuY3Rpb25OYW1lfSh0aHJlYWQgYXRvbWljXyR7dHlwZX0qLCAke3R5
cGV9LCB0aHJlYWQgJHt0eXBlfSopO2ApOworICAgICAgICAgICAgICAgIHByaW50KGBuYXRpdmUg
dm9pZCBJbnRlcmxvY2tlZCR7ZnVuY3Rpb25OYW1lfSh0aHJlYWRncm91cCBhdG9taWNfJHt0eXBl
fSosICR7dHlwZX0sIHRocmVhZCAke3R5cGV9Kik7YCk7CisgICAgICAgICAgICAgICAgcHJpbnQo
YG5hdGl2ZSB2b2lkIEludGVybG9ja2VkJHtmdW5jdGlvbk5hbWV9KGRldmljZSBhdG9taWNfJHt0
eXBlfSosICR7dHlwZX0sIHRocmVhZCAke3R5cGV9Kik7YCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBwcmludChgbmF0aXZlIHZvaWQgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UodGhy
ZWFkIGF0b21pY18ke3R5cGV9KiwgJHt0eXBlfSwgJHt0eXBlfSwgdGhyZWFkICR7dHlwZX0qKTtg
KTsKKyAgICAgICAgICAgIHByaW50KGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZENvbXBhcmVFeGNo
YW5nZSh0aHJlYWRncm91cCBhdG9taWNfJHt0eXBlfSosICR7dHlwZX0sICR7dHlwZX0sIHRocmVh
ZCAke3R5cGV9Kik7YCk7CisgICAgICAgICAgICBwcmludChgbmF0aXZlIHZvaWQgSW50ZXJsb2Nr
ZWRDb21wYXJlRXhjaGFuZ2UoZGV2aWNlIGF0b21pY18ke3R5cGV9KiwgJHt0eXBlfSwgJHt0eXBl
fSwgdGhyZWFkICR7dHlwZX0qKTtgKTsKICAgICAgICAgfQogICAgICAgICBwcmludCgpOwotICAg
ICAgICAqLworCiAgICAgICAgIGZvciAobGV0IHR5cGUgb2YgW2B1Y2hhcmAsIGB1c2hvcnRgLCBg
dWludGAsIGBjaGFyYCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKICAgICAg
ICAgICAgIGZvciAobGV0IGxlbmd0aCBvZiBbYGAsIGAyYCwgYDNgLCBgNGBdKSB7CiAgICAgICAg
ICAgICAgICAgcHJpbnQoYG5hdGl2ZSAke3R5cGV9JHtsZW5ndGh9IFNhbXBsZShUZXh0dXJlMUQ8
JHt0eXBlfSR7bGVuZ3RofT4sIHNhbXBsZXIsIGZsb2F0IGxvY2F0aW9uKTtgKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCmluZGV4IGJmOWY1NWUzMTUzNzg0YjZkMDA3NGJlMWI5
YTkxNDhiYTJlNDI0OWUuLjJhNzk4ZGVjMzRhMzQ5MmJlZmI1MGVjMDU4MjMwMjRlYzI1NDFjZDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtNTgwMyw2ICs1ODAzLDM3
OCBAQCB0ZXN0cy5jYXN0cyA9IGZ1bmN0aW9uKCkKICAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDE0KTsKIH0K
IAordGVzdHMuYXRvbWljcyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJl
cChgCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeikgeworICAgICAgICAgICAgYXRvbWljX2lu
dCB4OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRk
KCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDApOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAor
ICAgICAgICB0ZXN0IGludCBmb28oaW50IHopIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgeDsK
KyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwg
eiwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hl
Y2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9n
cmFtLCA2KV0pLCA2KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQg
Zm9vKGludCB6KSB7CisgICAgICAgICAgICBhdG9taWNfaW50IHg7CisgICAgICAgICAgICBpbnQg
cmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJngsIHosICZyZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuIGludCh4KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50
KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwg
NildKSwgNik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZvbyhp
bnQgeikgeworICAgICAgICAgICAgYXRvbWljX2ludCB4OworICAgICAgICAgICAgaW50IHJlc3Vs
dDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBp
bnQoeCk7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDYpXSksIDEyKTsKKyAgICBw
cm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHopIHsKKyAgICAg
ICAgICAgIGF0b21pY191aW50IHg7CisgICAgICAgICAgICB1aW50IHJlc3VsdDsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkQWRkKCZ4LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgNildKSwgMCk7CisgICAg
cHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgdWludCBmb28odWludCB6KSB7CisgICAg
ICAgICAgICBhdG9taWNfdWludCB4OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAg
ICAgICBJbnRlcmxvY2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxv
Y2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDYpXSksIDYpOworICAgIHByb2dyYW0gPSBk
b1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeikgeworICAgICAgICAgICAgYXRv
bWljX3VpbnQgeDsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJs
b2NrZWRBZGQoJngsIHosICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHVpbnQoeCk7Cisg
ICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHBy
b2dyYW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgNildKSwgNik7CisgICAgcHJvZ3JhbSA9
IGRvUHJlcChgCisgICAgICAgIHRlc3QgdWludCBmb28odWludCB6KSB7CisgICAgICAgICAgICBh
dG9taWNfdWludCB4OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRl
cmxvY2tlZEFkZCgmeCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
eCwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh4KTsKKyAgICAgICAgfQor
ICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludChwcm9ncmFtLCA2KV0pLCAxMik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChg
CisgICAgICAgIHRlc3QgdWludCBmb28odWludCB4LCB1aW50IHkpIHsKKyAgICAgICAgICAgIGF0
b21pY191aW50IHo7CisgICAgICAgICAgICB1aW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVy
bG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQW5kKCZ6
LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAgICAgICB9Cisg
ICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCAxKTsKKyAg
ICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQg
eSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0
OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAg
ICAgSW50ZXJsb2NrZWRBbmQoJnosIHksICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJv
Z3JhbSwgNSldKSwgMyk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50
IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAg
ICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3Vs
dCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFuZCgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm4gaW50KHopOworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJv
Z3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFtLCAzKSwg
bWFrZUludChwcm9ncmFtLCA1KV0pLCAxKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAg
ICAgdGVzdCBpbnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6
OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6
LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQW5kKCZ6LCB5LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHBy
b2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1By
ZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAg
ICBhdG9taWNfdWludCB6OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJ
bnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEV4
Y2hhbmdlKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAg
ICAgICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9n
cmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0p
LCA1KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50
IHgsIHVpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVp
bnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOwor
ICAgICAgICAgICAgSW50ZXJsb2NrZWRFeGNoYW5nZSgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDMp
LCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAg
ICAgICAgdGVzdCBpbnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2lu
dCB6OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRk
KCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkRXhjaGFuZ2UoJnosIHks
ICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGludCh6KTsKKyAgICAgICAgfQorICAgIGAp
OworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21h
a2VJbnQocHJvZ3JhbSwgMyksIG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgNSk7CisgICAgcHJvZ3Jh
bSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAg
ICAgICAgIGF0b21pY19pbnQgejsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAg
ICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tl
ZEV4Y2hhbmdlKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSks
IDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQg
eCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB6OworICAgICAgICAgICAgdWlu
dCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7Cisg
ICAgICAgICAgICBJbnRlcmxvY2tlZE1heCgmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gdWludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFr
ZVVpbnQocHJvZ3JhbSwgNSldKSwgNSk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBtYWtlVWludChwcm9n
cmFtLCAzKV0pLCA1KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50
IGZvbyh1aW50IHgsIHVpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAg
ICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZy
ZXN1bHQpOworICAgICAgICAgICAgSW50ZXJsb2NrZWRNYXgoJnosIHksICZyZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWlu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFt
LCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hlY2tVaW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUpLCBtYWtl
VWludChwcm9ncmFtLCAzKV0pLCA1KTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAg
dGVzdCBpbnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6Owor
ICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4
LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkTWF4KCZ6LCB5LCAmcmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybiBpbnQoeik7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dy
YW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDUpOworICAgIGNoZWNrSW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgNSksIG1ha2VJ
bnQocHJvZ3JhbSwgMyldKSwgNSk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRl
c3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsKKyAg
ICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwgeCwg
JnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE1heCgmeiwgeSwgJnJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJ
bnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChwcm9ncmFt
LCAzKSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBj
YWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDUpLCBtYWtlSW50
KHByb2dyYW0sIDMpXSksIDUpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0
IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfdWludCB6Owor
ICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwg
eCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE1pbigmeiwgeSwgJnJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gdWludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNo
ZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChw
cm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hlY2tVaW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDUp
LCBtYWtlVWludChwcm9ncmFtLCAzKV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAg
ICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSkgeworICAgICAgICAgICAgYXRvbWlj
X3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2Nr
ZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAgICAgSW50ZXJsb2NrZWRNaW4oJnosIHks
ICZyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIGAp
OworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtt
YWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgMyk7CisgICAgY2hl
Y2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHBy
b2dyYW0sIDUpLCBtYWtlVWludChwcm9ncmFtLCAzKV0pLCA1KTsKKyAgICBwcm9ncmFtID0gZG9Q
cmVwKGAKKyAgICAgICAgdGVzdCBpbnQgZm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAg
YXRvbWljX2ludCB6OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVy
bG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkTWluKCZ6
LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBpbnQoeik7CisgICAgICAgIH0KKyAg
ICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIGNo
ZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJv
Z3JhbSwgNSksIG1ha2VJbnQocHJvZ3JhbSwgMyldKSwgMyk7CisgICAgcHJvZ3JhbSA9IGRvUHJl
cChgCisgICAgICAgIHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0
b21pY19pbnQgejsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxv
Y2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE1pbigmeiwg
eSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAg
YCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
bWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dy
YW0sIDUpLCBtYWtlSW50KHByb2dyYW0sIDMpXSksIDUpOworICAgIHByb2dyYW0gPSBkb1ByZXAo
YAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBh
dG9taWNfdWludCB6OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRl
cmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE9yKCZ6
LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB1aW50KHopOworICAgICAgICB9Cisg
ICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1KV0pLCA3KTsKKyAg
ICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQg
eSkgeworICAgICAgICAgICAgYXRvbWljX3VpbnQgejsKKyAgICAgICAgICAgIHVpbnQgcmVzdWx0
OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1bHQpOworICAgICAgICAg
ICAgSW50ZXJsb2NrZWRPcigmeiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tVaW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9n
cmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVzdCBpbnQg
Zm9vKGludCB4LCBpbnQgeSkgeworICAgICAgICAgICAgYXRvbWljX2ludCB6OworICAgICAgICAg
ICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkT3IoJnosIHksICZyZXN1bHQpOworICAgICAgICAg
ICAgcmV0dXJuIGludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyksIG1h
a2VJbnQocHJvZ3JhbSwgNSldKSwgNyk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAg
IHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQgejsK
KyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgmeiwg
eCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZE9yKCZ6LCB5LCAmcmVzdWx0KTsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dy
YW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAo
YAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwgdWludCB5KSB7CisgICAgICAgICAgICBh
dG9taWNfdWludCB6OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRl
cmxvY2tlZEFkZCgmeiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZFhvcigm
eiwgeSwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gdWludCh6KTsKKyAgICAgICAgfQor
ICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZv
byIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNSldKSwgNik7Cisg
ICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIHRlc3QgdWludCBmb28odWludCB4LCB1aW50
IHkpIHsKKyAgICAgICAgICAgIGF0b21pY191aW50IHo7CisgICAgICAgICAgICB1aW50IHJlc3Vs
dDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ6LCB4LCAmcmVzdWx0KTsKKyAgICAgICAg
ICAgIEludGVybG9ja2VkWG9yKCZ6LCB5LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHBy
b2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IGlu
dCBmb28oaW50IHgsIGludCB5KSB7CisgICAgICAgICAgICBhdG9taWNfaW50IHo7CisgICAgICAg
ICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgSW50ZXJsb2NrZWRBZGQoJnosIHgsICZyZXN1
bHQpOworICAgICAgICAgICAgSW50ZXJsb2NrZWRYb3IoJnosIHksICZyZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGludCh6KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyks
IG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgNik7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAg
ICAgIHRlc3QgaW50IGZvbyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQg
ejsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
eiwgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZFhvcigmeiwgeSwgJnJlc3Vs
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgYCk7CisgICAg
Y2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZUludChw
cm9ncmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9Q
cmVwKGAKKyAgICAgICAgdGVzdCB1aW50IGZvbyh1aW50IHgsIHVpbnQgeSwgdWludCB6KSB7Cisg
ICAgICAgICAgICBhdG9taWNfdWludCB3OworICAgICAgICAgICAgdWludCByZXN1bHQ7CisgICAg
ICAgICAgICBJbnRlcmxvY2tlZEFkZCgmdywgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRl
cmxvY2tlZENvbXBhcmVFeGNoYW5nZSgmdywgeSwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gdWludCh3KTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNoZWNrVWludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9ncmFtLCAzKSwgbWFr
ZVVpbnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIDUpOworICAgIGNoZWNr
VWludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFttYWtlVWludChwcm9n
cmFtLCAzKSwgbWFrZVVpbnQocHJvZ3JhbSwgNCksIG1ha2VVaW50KHByb2dyYW0sIDUpXSksIDMp
OworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICB0ZXN0IHVpbnQgZm9vKHVpbnQgeCwg
dWludCB5LCB1aW50IHopIHsKKyAgICAgICAgICAgIGF0b21pY191aW50IHc7CisgICAgICAgICAg
ICB1aW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2VkQWRkKCZ3LCB4LCAmcmVzdWx0
KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZ3LCB5LCB6LCAmcmVz
dWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICBgKTsKKyAg
ICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbbWFrZVVp
bnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDMpLCBtYWtlVWludChwcm9ncmFtLCA1
KV0pLCAzKTsKKyAgICBjaGVja1VpbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZVVpbnQocHJvZ3JhbSwgMyksIG1ha2VVaW50KHByb2dyYW0sIDQpLCBtYWtlVWlu
dChwcm9ncmFtLCA1KV0pLCAzKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgdGVz
dCBpbnQgZm9vKGludCB4LCBpbnQgeSwgaW50IHopIHsKKyAgICAgICAgICAgIGF0b21pY19pbnQg
dzsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBJbnRlcmxvY2tlZEFkZCgm
dywgeCwgJnJlc3VsdCk7CisgICAgICAgICAgICBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgm
dywgeSwgeiwgJnJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gaW50KHcpOworICAgICAgICB9
CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJm
b28iLCBbbWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUludChwcm9ncmFtLCAzKSwgbWFrZUludChw
cm9ncmFtLCA1KV0pLCA1KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJv
Z3JhbSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDQpLCBt
YWtlSW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAg
ICB0ZXN0IGludCBmb28oaW50IHgsIGludCB5LCBpbnQgeikgeworICAgICAgICAgICAgYXRvbWlj
X2ludCB3OworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEludGVybG9ja2Vk
QWRkKCZ3LCB4LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIEludGVybG9ja2VkQ29tcGFyZUV4Y2hh
bmdlKCZ3LCB5LCB6LCAmcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3Jh
bSwgImZvbyIsIFttYWtlSW50KHByb2dyYW0sIDMpLCBtYWtlSW50KHByb2dyYW0sIDMpLCBtYWtl
SW50KHByb2dyYW0sIDUpXSksIDMpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlv
bihwcm9ncmFtLCAiZm9vIiwgW21ha2VJbnQocHJvZ3JhbSwgMyksIG1ha2VJbnQocHJvZ3JhbSwg
NCksIG1ha2VJbnQocHJvZ3JhbSwgNSldKSwgMyk7Cit9CisKIHRlc3RzLnBvaW50ZXJUb01lbWJl
ciA9IGZ1bmN0aW9uKCkKIHsKICAgICBjaGVja0ZhaWwoCg==
</data>
<flag name="review"
          id="367958"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>