<?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>178986</bug_id>
          
          <creation_ts>2017-10-28 17:57:26 -0700</creation_ts>
          <short_desc>[WSL] Allow functions to have multiple pointer returns</short_desc>
          <delta_ts>2018-10-13 15:56:55 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>MOVED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=176967</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1365775</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-28 17:57:26 -0700</bug_when>
    <thetext>This is needed for anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365776</commentid>
    <comment_count>1</comment_count>
      <attachid>325270</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-28 17:58:24 -0700</bug_when>
    <thetext>Created attachment 325270
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365884</commentid>
    <comment_count>2</comment_count>
      <attachid>325305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-29 17:11:45 -0700</bug_when>
    <thetext>Created attachment 325305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365885</commentid>
    <comment_count>3</comment_count>
      <attachid>325305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-29 17:13:01 -0700</bug_when>
    <thetext>Comment on attachment 325305
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=325305&amp;action=review

&gt; Tools/WebGPUShadingLanguageRI/LogicalMode.js:117
&gt; +            [Node.visit(node.value, this), Node.visit(node.argumentList[1], this)]);

s/node.argumentList[1]/this._subscript.argumentList[1]/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365917</commentid>
    <comment_count>4</comment_count>
      <attachid>325322</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-29 21:56:06 -0700</bug_when>
    <thetext>Created attachment 325322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365933</commentid>
    <comment_count>5</comment_count>
      <attachid>325331</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-30 00:09:17 -0700</bug_when>
    <thetext>Created attachment 325331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455046</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-29 17:14:00 -0700</bug_when>
    <thetext>This is going to be tricky.

On one hand, anders are not useful if they can&apos;t have multiple pointer returns.

On the other hand, multiple pointer returns naively require phi operations over pointers.

So we&apos;ll have to inline the ander and see if we can remove the pointer. But, for user-created types, any arbitrary stuff can be in the ander. So, we have to specify exactly what types of transformations the compiler will perform to try to remove these pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457283</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-06 15:12:55 -0700</bug_when>
    <thetext>Seems that a policy of &quot;anders are mostly useless, please use getters and setters instead&quot; along with compiler optimizations is sufficient for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468919</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 15:56:55 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/121</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325270</attachid>
            <date>2017-10-28 17:58:24 -0700</date>
            <delta_ts>2017-10-29 17:11:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>6952</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGVkOTVmM2I5M2FlOWU2MDhhNzVhODIxMjViYzdlMThjMmMxYTZmZDcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgT2N0IDI4
IDE3OjU2OjI3IDIwMTcgLTA3MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKaW5kZXggMzBhMGIwOTk2NTUuLmIzMjdkNzg0NjMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCkBAIC0xMDYsNiArMTA2LDcgQEAgbG9hZCgiTGV4ZXIuanMiKTsKIGxv
YWQoIkxleGVyVG9rZW4uanMiKTsKIGxvYWQoIkxpdGVyYWxUeXBlQ2hlY2tlci5qcyIpOwogbG9h
ZCgiTG9naWNhbEV4cHJlc3Npb24uanMiKTsKK2xvYWQoIkxvZ2ljYWxNb2RlLmpzIik7CiBsb2Fk
KCJMb2dpY2FsTm90LmpzIik7CiBsb2FkKCJMb29wQ2hlY2tlci5qcyIpOwogbG9hZCgiTWFrZUFy
cmF5UmVmRXhwcmVzc2lvbi5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTG9naWNhbE1vZGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9M
b2dpY2FsTW9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTdm
MDFlMzkxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Mb2dpY2FsTW9kZS5qcwpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKKy8vIGRvUHJlcCgidGhyZWFk
IGludCogZm9vKHRocmVhZCBpbnQqIHgpIHsgcmV0dXJuIHg7IH0gdm9pZCBiYXIoKSB7IGludCB4
OyBpbnQgeSA9ICpmb28oJngpOyB9IikKKworY2xhc3MgSW5saW5lRGVyZWZlcmVuY2UgZXh0ZW5k
cyBSZXdyaXRlciB7CisgICAgY29uc3RydWN0b3IoZGVyZWZlcmVuY2VOb2RlKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5fZGVyZWZlcmVuY2VOb2RlID0gZGVyZWZlcmVu
Y2VOb2RlOworICAgICAgICB0aGlzLl9vdXRlckZ1bmN0aW9uID0gZmFsc2U7CisgICAgfQorICAg
IHZpc2l0RnVuY3Rpb25MaWtlQmxvY2sobm9kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9v
dXRlckZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaXQobmV3IFJld3JpdGVy
KCkpOworICAgICAgICB0aGlzLl9vdXRlckZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IHN1cGVyLnZpc2l0RnVuY3Rpb25MaWtlQmxvY2sobm9kZSk7CisgICAgICAgIHRoaXMu
X291dGVyRnVuY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgdmlzaXRSZXR1cm4obm9kZSkKKyAgICB7CisgICAgICAgIGxldCBuZXdEZXJlZmVyZW5jZUV4
cHJlc3Npb24gPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRoaXMuX2RlcmVmZXJlbmNlTm9k
ZS5vcmlnaW4sIE5vZGUudmlzaXQobm9kZS52YWx1ZSwgdGhpcykpOworICAgICAgICBuZXdEZXJl
ZmVyZW5jZUV4cHJlc3Npb24udHlwZSA9IE5vZGUudmlzaXQodGhpcy5fZGVyZWZlcmVuY2VOb2Rl
LnR5cGUsIHRoaXMpOworICAgICAgICBuZXdEZXJlZmVyZW5jZUV4cHJlc3Npb24uYWRkcmVzc1Nw
YWNlID0gdGhpcy5fZGVyZWZlcmVuY2VOb2RlLmFkZHJlc3NTcGFjZTsKKyAgICAgICAgcmV0dXJu
IG5ldyBSZXR1cm4obm9kZS5vcmlnaW4sIG5ld0RlcmVmZXJlbmNlRXhwcmVzc2lvbik7CisgICAg
fQorfQorCitjbGFzcyBSSFNSZWZlcmVuY2VUeXBlc0xvd2VyZXIgZXh0ZW5kcyBSZXdyaXRlciB7
CisgICAgdmlzaXREZXJlZmVyZW5jZUV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGxl
dCByZXN1bHQgPSBzdXBlci52aXNpdERlcmVmZXJlbmNlRXhwcmVzc2lvbihub2RlKTsKKyAgICAg
ICAgCisgICAgICAgIGxldCBwdHIgPSByZXN1bHQucHRyOworICAgICAgICBsZXQgZGVlcGVzdENv
bW1hOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKCFwdHIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChwdHIgaW5zdGFuY2Vv
ZiBJZGVudGl0eUV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBwdHIgPSBwdHIudGFyZ2V0
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHB0ciBpbnN0YW5jZW9mIENvbW1hRXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgIGRl
ZXBlc3RDb21tYSA9IHB0cjsKKyAgICAgICAgICAgICAgICBwdHIgPSBwdHIubGlzdFtwdHIubGlz
dC5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghKHB0ciBpbnN0YW5jZW9mIEZ1bmN0aW9uTGlrZUJsb2NrKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGxldCBuZXdGdW5jdGlvbiA9IHB0ci52aXNpdChuZXcgSW5s
aW5lRGVyZWZlcmVuY2Uobm9kZSkpOworICAgICAgICBpZiAoZGVlcGVzdENvbW1hKSB7CisgICAg
ICAgICAgICBkZWVwZXN0Q29tbWEubGlzdFtkZWVwZXN0Q29tbWEubGlzdC5sZW5ndGggLSAxXSA9
IG5ld0Z1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5wdHI7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uOworICAgIH0KK30KKworY2xhc3MgQXNzaWdubWVu
dFJIU0xvd2VyZXIgZXh0ZW5kcyBSZXdyaXRlciB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX2N1cnJlbnREZXB0aCA9IDA7CisgICAgICAgIHRo
aXMuX21heERlcHRoID0gMDsKKyAgICB9CisgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpIHsKKyAg
ICAgICAgKyt0aGlzLl9jdXJyZW50RGVwdGg7CisgICAgICAgIHRoaXMuX21heERlcHRoID0gTWF0
aC5tYXgodGhpcy5fY3VycmVudERlcHRoLCB0aGlzLl9tYXhEZXB0aCk7CisgICAgICAgIGxldCBy
ZXN1bHQgPSBzdXBlci52aXNpdEFzc2lnbm1lbnQobm9kZSk7CisgICAgICAgIGlmICh0aGlzLl9t
YXhEZXB0aCA9PSB0aGlzLl9jdXJyZW50RGVwdGgpIHsKKyAgICAgICAgICAgIC8vIEknbSB0aGUg
aW5uZXJtb3N0IEFzc2lnbm1lbnQuCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgQXNzaWdubWVu
dChub2RlLm9yaWdpbiwgcmVzdWx0Lmxocywgbm9kZS5yaHMudmlzaXQobmV3IFJIU1JlZmVyZW5j
ZVR5cGVzTG93ZXJlcigpKSk7CisgICAgICAgICAgICByZXN1bHQudHlwZSA9IE5vZGUudmlzaXQo
bm9kZS50eXBlLCB0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAtLXRoaXMuX2N1cnJlbnREZXB0
aDsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnREZXB0aCA9PSAwKQorICAgICAgICAgICAgdGhp
cy5fbWF4RGVwdGggPSAwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB2aXNp
dFZhcmlhYmxlRGVjbChub2RlKSB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgVmFyaWFibGVE
ZWNsKAorICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKKyAgICAgICAgICAgIG5v
ZGUudHlwZS52aXNpdCh0aGlzKSwKKyAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbml0aWFs
aXplciwgbmV3IFJIU1JlZmVyZW5jZVR5cGVzTG93ZXJlcigpKSk7CisgICAgICAgIHRoaXMuX21h
cE5vZGUobm9kZSwgcmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LmVQdHIgPSBub2RlLmVQdHI7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1NQSVJWLmh0bWwKaW5kZXggZDE3M2Y3ZTcyNTEuLjhlZGI4NWYzN2EzIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKQEAgLTg5LDYgKzg5LDcgQEAgdGQgewog
ICAgIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTGl0ZXJhbFR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTG9n
aWNhbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJMb2dpY2FsTW9k
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxvZ2ljYWxOb3QuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJMb29wQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1ha2VBcnJheVJlZkV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCmluZGV4IDMyMGZiYTk5ZDU1Li5jZWMxMDBmNTIyZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtODMsNiArODMsNyBA
QAogPHNjcmlwdCBzcmM9IkxleGVyVG9rZW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ikxp
dGVyYWxUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9naWNhbEV4cHJl
c3Npb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxvZ2ljYWxNb2RlLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJMb2dpY2FsTm90LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJM
b29wQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTWFrZUFycmF5UmVmRXhwcmVz
c2lvbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9pbmRleC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRt
bAppbmRleCAzYTdlOTQ4YmU2Ny4uMDg3NmIwMWNlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvaW5kZXguaHRtbApAQCAtODMsNiArODMsNyBAQAogPHNjcmlwdCBzcmM9IkxleGVy
VG9rZW4uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hlY2tlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9naWNhbEV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9IkxvZ2ljYWxNb2RlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMb2dp
Y2FsTm90LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMb29wQ2hlY2tlci5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iTWFrZUFycmF5UmVmRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325305</attachid>
            <date>2017-10-29 17:11:45 -0700</date>
            <delta_ts>2017-10-29 21:56:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>10526</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGE1NzJhM2I4YzQyZWNiY2U0YzdmMjY4ZWMzYmM1MDBhZWJkZjg5MzcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgT2N0IDI4
IDE3OjU2OjI3IDIwMTcgLTA3MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKaW5kZXggMzBhMGIwOTk2NTUuLmIzMjdkNzg0NjMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCkBAIC0xMDYsNiArMTA2LDcgQEAgbG9hZCgiTGV4ZXIuanMiKTsKIGxv
YWQoIkxleGVyVG9rZW4uanMiKTsKIGxvYWQoIkxpdGVyYWxUeXBlQ2hlY2tlci5qcyIpOwogbG9h
ZCgiTG9naWNhbEV4cHJlc3Npb24uanMiKTsKK2xvYWQoIkxvZ2ljYWxNb2RlLmpzIik7CiBsb2Fk
KCJMb2dpY2FsTm90LmpzIik7CiBsb2FkKCJMb29wQ2hlY2tlci5qcyIpOwogbG9hZCgiTWFrZUFy
cmF5UmVmRXhwcmVzc2lvbi5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvTG9naWNhbE1vZGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9M
b2dpY2FsTW9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTZi
OGU5NjgxYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9Mb2dpY2FsTW9kZS5qcwpAQCAtMCwwICsxLDIxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisidXNlIHN0cmljdCI7CisKKy8vIGRvUHJlcCgidGhyZWFk
IGludCogZm9vKHRocmVhZCBpbnQqIHgpIHsgcmV0dXJuIHg7IH0gdm9pZCBiYXIoKSB7IGludCB4
OyBpbnQgeSA9ICpmb28oJngpOyB9IikKKy8vIGRvUHJlcCgic3RydWN0IEZvbyB7IGludCB4OyBp
bnQgeTsgfSBGb28gZm9vKCkgeyByZXR1cm4gRm9vKDMsIDQpOyB9IHZvaWQgYmFyKCkgeyBpbnQg
eCA9IGZvbygpLng7IH0iKQorLy8gZG9QcmVwKCJ0aHJlYWQgaW50W10gZm9vKHRocmVhZCBpbnRb
XSB4KSB7IHJldHVybiB4OyB9IHZvaWQgYmFyKCkgeyBpbnRbMV0geDsgaW50IHkgPSBmb28oQHgp
WzBdOyB9IikKKworY2xhc3MgUmV3cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIGV4dGVuZHMg
UmV3cml0ZXIgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7Cisg
ICAgICAgIHRoaXMuX291dGVyRnVuY3Rpb24gPSBmYWxzZTsKKyAgICB9CisKKyAgICB2aXNpdEZ1
bmN0aW9uTGlrZUJsb2NrKG5vZGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fb3V0ZXJGdW5j
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBub2RlLnZpc2l0KG5ldyBSZXdyaXRlcigpKTsKKyAg
ICAgICAgdGhpcy5fb3V0ZXJGdW5jdGlvbiA9IHRydWU7CisgICAgICAgIGxldCByZXN1bHQgPSBu
ZXcgRnVuY3Rpb25MaWtlQmxvY2soCisgICAgICAgICAgICBub2RlLm9yaWdpbiwKKyAgICAgICAg
ICAgIE5vZGUudmlzaXQodGhpcy5fcmV0dXJuVHlwZShub2RlKSwgdGhpcyksCisgICAgICAgICAg
ICBub2RlLmFyZ3VtZW50TGlzdC5tYXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykp
LAorICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4gcGFyYW1ldGVy
LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKSk7CisgICAg
ICAgIHJlc3VsdC5yZXR1cm5FUHRyID0gbm9kZS5yZXR1cm5FUHRyOworICAgICAgICB0aGlzLl9v
dXRlckZ1bmN0aW9uID0gZmFsc2U7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQor
CitjbGFzcyBJbmxpbmVEZXJlZmVyZW5jZSBleHRlbmRzIFJld3JpdGVTaW5nbGVGdW5jdGlvbkxp
a2VCbG9jayB7CisgICAgY29uc3RydWN0b3IoZGVyZWZlcmVuY2UpCisgICAgeworICAgICAgICBz
dXBlcigpOworICAgICAgICB0aGlzLl9kZXJlZmVyZW5jZSA9IGRlcmVmZXJlbmNlOworICAgIH0K
KyAgICAKKyAgICBfcmV0dXJuVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUu
cmV0dXJuVHlwZS5lbGVtZW50VHlwZTsKKyAgICB9CisKKyAgICB2aXNpdFJldHVybihub2RlKQor
ICAgIHsKKyAgICAgICAgbGV0IG5ld0RlcmVmZXJlbmNlID0gbmV3IERlcmVmZXJlbmNlRXhwcmVz
c2lvbih0aGlzLl9kZXJlZmVyZW5jZS5vcmlnaW4sIE5vZGUudmlzaXQobm9kZS52YWx1ZSwgdGhp
cykpOworICAgICAgICBuZXdEZXJlZmVyZW5jZS50eXBlID0gTm9kZS52aXNpdCh0aGlzLl9kZXJl
ZmVyZW5jZS50eXBlLCB0aGlzKTsKKyAgICAgICAgbmV3RGVyZWZlcmVuY2UuYWRkcmVzc1NwYWNl
ID0gdGhpcy5fZGVyZWZlcmVuY2UuYWRkcmVzc1NwYWNlOworICAgICAgICByZXR1cm4gbmV3IFJl
dHVybihub2RlLm9yaWdpbiwgbmV3RGVyZWZlcmVuY2UpOworICAgIH0KK30KKworY2xhc3MgSW5s
aW5lR2V0dGVyIGV4dGVuZHMgUmV3cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIHsKKyAgICBj
b25zdHJ1Y3RvcihnZXR0ZXIsIHR5cGUpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAg
ICB0aGlzLl9nZXR0ZXIgPSBnZXR0ZXI7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAg
IH0KKyAgICAKKyAgICBfcmV0dXJuVHlwZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3R5cGU7CisgICAgfQorCisgICAgdmlzaXRSZXR1cm4obm9kZSkKKyAgICB7CisgICAgICAg
IGxldCBuZXdHZXR0ZXIgPSBuZXcgQ2FsbEV4cHJlc3Npb24oCisgICAgICAgICAgICB0aGlzLl9n
ZXR0ZXIub3JpZ2luLCB0aGlzLl9nZXR0ZXIubmFtZSwKKyAgICAgICAgICAgIHRoaXMuX2dldHRl
ci50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1lbnQgPT4gdHlwZUFyZ3VtZW50LnZpc2l0KHRo
aXMpKSwKKyAgICAgICAgICAgIFtOb2RlLnZpc2l0KG5vZGUudmFsdWUsIHRoaXMpXSk7CisgICAg
ICAgIG5ld0dldHRlciA9IHRoaXMucHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YSh0aGlzLl9nZXR0ZXIs
IG5ld0dldHRlcik7CisgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG5vZGUub3JpZ2luLCBuZXdH
ZXR0ZXIpOworICAgIH0KK30KKworY2xhc3MgSW5saW5lU3Vic2NyaXB0IGV4dGVuZHMgUmV3cml0
ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIHsKKyAgICBjb25zdHJ1Y3RvcihzdWJzY3JpcHQpCisg
ICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9zdWJzY3JpcHQgPSBzdWJzY3Jp
cHQ7CisgICAgfQorICAgIAorICAgIF9yZXR1cm5UeXBlKG5vZGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gbm9kZS5yZXR1cm5UeXBlLmVsZW1lbnRUeXBlOworICAgIH0KKworICAgIHZpc2l0UmV0
dXJuKG5vZGUpCisgICAgeworICAgICAgICBsZXQgbmV3U3Vic2NyaXB0ID0gbmV3IENhbGxFeHBy
ZXNzaW9uKAorICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0Lm9yaWdpbiwgdGhpcy5fc3Vic2Ny
aXB0Lm5hbWUsCisgICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHQudHlwZUFyZ3VtZW50cy5tYXAo
dHlwZUFyZ3VtZW50ID0+IHR5cGVBcmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAgICAgICBb
Tm9kZS52aXNpdChub2RlLnZhbHVlLCB0aGlzKSwgTm9kZS52aXNpdChub2RlLmFyZ3VtZW50TGlz
dFsxXSwgdGhpcyldKTsKKyAgICAgICAgbmV3U3Vic2NyaXB0ID0gdGhpcy5wcm9jZXNzRGVyaXZl
ZENhbGxEYXRhKHRoaXMuX3N1YnNjcmlwdCwgbmV3U3Vic2NyaXB0KTsKKyAgICAgICAgcmV0dXJu
IG5ldyBSZXR1cm4obm9kZS5vcmlnaW4sIG5ld1N1YnNjcmlwdCk7CisgICAgfQorfQorCitjbGFz
cyBSSFNSZWZlcmVuY2VUeXBlc0xvd2VyZXIgZXh0ZW5kcyBSZXdyaXRlciB7CisgICAgX2ZpbmRJ
bm5lckZ1bmN0aW9uTGlrZUJsb2NrKG5vZGUpCisgICAgeworICAgICAgICBsZXQgZGVlcGVzdENv
bW1hOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKCFub2RlKQorICAg
ICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgICAgICBpZiAobm9kZSBpbnN0
YW5jZW9mIElkZW50aXR5RXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgIG5vZGUgPSBub2Rl
LnRhcmdldDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ29tbWFFeHByZXNzaW9uKSB7CisgICAgICAgICAg
ICAgICAgZGVlcGVzdENvbW1hID0gbm9kZTsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5s
aXN0W25vZGUubGlzdC5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiBGdW5jdGlvbkxp
a2VCbG9jaykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7ZGVlcGVzdENvbW1hLCBmdW5jdGlv
bkxpa2VCbG9jazogbm9kZX07CisgICAgfQorICAgIAorICAgIF9pbmxpbmVWYWx1ZUludG9GdW5j
dGlvbkxpa2VCbG9jayhyZXN1bHQsIGlubmVyVmFsdWUsIHN1YnN0aXR1dGlvbikKKyAgICB7Cisg
ICAgICAgIGxldCByZXN1bHQgPSBzdXBlci52aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpOworICAg
IAorICAgICAgICBsZXQgaW5uZXJGdW5jdGlvbkxpa2VCbG9jayA9IHRoaXMuX2ZpbmRJbm5lckZ1
bmN0aW9uTGlrZUJsb2NrKGlubmVyVmFsdWUocmVzdWx0KSk7CisgICAgCisgICAgICAgIGlmICgh
aW5uZXJGdW5jdGlvbkxpa2VCbG9jaykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAg
ICAgICAgbGV0IG5ld0Z1bmN0aW9uID0gaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5mdW5jdGlvbkxp
a2VCbG9jay52aXNpdChzdWJzdGl0dXRpb24oaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5mdW5jdGlv
bkxpa2VCbG9jaykpOworICAgICAgICBpZiAoaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5kZWVwZXN0
Q29tbWEpIHsKKyAgICAgICAgICAgIGlubmVyRnVuY3Rpb25MaWtlQmxvY2suZGVlcGVzdENvbW1h
Lmxpc3RbaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5kZWVwZXN0Q29tbWEubGlzdC5sZW5ndGggLSAx
XSA9IG5ld0Z1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5wdHI7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uOworICAgIH0KKworICAgIHZpc2l0RGVyZWZl
cmVuY2VFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gX2lubGluZVZhbHVl
SW50b0Z1bmN0aW9uTGlrZUJsb2NrKHN1cGVyLnZpc2l0RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5v
ZGUpLCByZXN1bHQgPT4gcmVzdWx0LnB0ciwgZnVuY3Rpb25MaWtlQmxvY2sgPT4gbmV3IElubGlu
ZURlcmVmZXJlbmNlKG5vZGUpKTsKKyAgICB9CisKKyAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5v
ZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5uYW1lLnN0YXJ0c1dpdGgoIm9wZXJhdG9yLiIp
ICYmICFub2RlLm5hbWUuZW5kc1dpdGgoIj0iKSkgeworICAgICAgICAgICAgLy8gVXNlci1hdXRo
b3JlZCBmdW5jdGlvbnMgd2lsbCBoYXZlIGJlZW4gdHJhbnNsYXRlZCB0byBGdW5jdGlvbkxpa2VC
bG9ja3MsIHNvCisgICAgICAgICAgICAvLyB0aGlzIHdpbGwgb25seSBjYXRjaCBuYXRpdmUgZmll
bGQgZ2V0dGVycy4KKyAgICAgICAgICAgIGxldCBmaWVsZE5hbWUgPSBub2RlLm5hbWUuc3Vic3Ry
aW5nKCJvcGVyYXRvci4iLmxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gX2lubGluZVZhbHVl
SW50b0Z1bmN0aW9uTGlrZUJsb2NrKHN1cGVyLnZpc2l0RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5v
ZGUpLCByZXN1bHQgPT4gcmVzdWx0LmFyZ3VtZW50TGlzdFswXSwgZnVuY3Rpb25MaWtlQmxvY2sg
PT4gbmV3IElubGluZUdldHRlcihub2RlLCBmdW5jdGlvbkxpa2VCbG9jay5yZXR1cm5UeXBlLmZp
ZWxkQnlOYW1lKGZpZWxkTmFtZSkudHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5v
ZGUubmFtZSA9PSAib3BlcmF0b3ImW10iKQorICAgICAgICAgICAgcmV0dXJuIF9pbmxpbmVWYWx1
ZUludG9GdW5jdGlvbkxpa2VCbG9jayhzdXBlci52aXNpdERlcmVmZXJlbmNlRXhwcmVzc2lvbihu
b2RlKSwgcmVzdWx0ID0+IHJlc3VsdC5hcmd1bWVudExpc3RbMF0sIGZ1bmN0aW9uTGlrZUJsb2Nr
ID0+IG5ldyBJbmxpbmVTdWJzY3JpcHQobm9kZSkpOworCisgICAgICAgIHJldHVybiBzdXBlci52
aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpOworICAgIH0KK30KKworY2xhc3MgQ3VzdG9tUkhTUmV3
cml0ZXIgZXh0ZW5kcyBSZXdyaXRlciB7CisgICAgY29uc3RydWN0b3IoaW5uZXJSZXdyaXRlcikK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX2N1cnJlbnREZXB0aCA9IDA7
CisgICAgICAgIHRoaXMuX21heERlcHRoID0gMDsKKyAgICAgICAgdGhpcy5faW5uZXJSZXdyaXRl
ciA9IGlubmVyUmV3cml0ZXI7CisgICAgfQorCisgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpIHsK
KyAgICAgICAgKyt0aGlzLl9jdXJyZW50RGVwdGg7CisgICAgICAgIHRoaXMuX21heERlcHRoID0g
TWF0aC5tYXgodGhpcy5fY3VycmVudERlcHRoLCB0aGlzLl9tYXhEZXB0aCk7CisgICAgICAgIGxl
dCByZXN1bHQgPSBzdXBlci52aXNpdEFzc2lnbm1lbnQobm9kZSk7CisgICAgICAgIGlmICh0aGlz
Ll9tYXhEZXB0aCA9PSB0aGlzLl9jdXJyZW50RGVwdGgpIHsKKyAgICAgICAgICAgIC8vIEknbSB0
aGUgaW5uZXJtb3N0IEFzc2lnbm1lbnQuCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgQXNzaWdu
bWVudChub2RlLm9yaWdpbiwgcmVzdWx0Lmxocywgbm9kZS5yaHMudmlzaXQodGhpcy5faW5uZXJS
ZXdyaXRlcikpOworICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBOb2RlLnZpc2l0KG5vZGUudHlw
ZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgLS10aGlzLl9jdXJyZW50RGVwdGg7CisgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50RGVwdGggPT0gMCkKKyAgICAgICAgICAgIHRoaXMuX21heERl
cHRoID0gMDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2aXNpdFZhcmlh
YmxlRGVjbChub2RlKSB7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgVmFyaWFibGVEZWNsKAor
ICAgICAgICAgICAgbm9kZS5vcmlnaW4sIG5vZGUubmFtZSwKKyAgICAgICAgICAgIG5vZGUudHlw
ZS52aXNpdCh0aGlzKSwKKyAgICAgICAgICAgIE5vZGUudmlzaXQobm9kZS5pbml0aWFsaXplciwg
dGhpcy5faW5uZXJSZXdyaXRlcikpOworICAgICAgICB0aGlzLl9tYXBOb2RlKG5vZGUsIHJlc3Vs
dCk7CisgICAgICAgIHJlc3VsdC5lUHRyID0gbm9kZS5lUHRyOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1NQSVJWLmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCmlu
ZGV4IGQxNzNmN2U3MjUxLi44ZWRiODVmMzdhMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9TUElSVi5odG1sCkBAIC04OSw2ICs4OSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0i
TGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxpdGVyYWxUeXBlQ2hl
Y2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxvZ2ljYWxFeHByZXNzaW9uLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTG9naWNhbE1vZGUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJMb2dpY2FsTm90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNYWtlQXJyYXlS
ZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rl
c3QuaHRtbAppbmRleCAzMjBmYmE5OWQ1NS4uY2VjMTAwZjUyMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTgzLDYgKzgzLDcgQEAKIDxzY3JpcHQgc3JjPSJM
ZXhlclRva2VuLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNrZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxvZ2ljYWxFeHByZXNzaW9uLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJMb2dpY2FsTW9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
TG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9vcENoZWNrZXIuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ik1ha2VBcnJheVJlZkV4cHJlc3Npb24uanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggM2E3ZTk0OGJl
NjcuLjA4NzZiMDFjZWY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0
bWwKQEAgLTgzLDYgKzgzLDcgQEAKIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkxvZ2ljYWxFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJMb2dp
Y2FsTW9kZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iTG9vcENoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ik1ha2VBcnJheVJlZkV4cHJlc3Npb24uanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325322</attachid>
            <date>2017-10-29 21:56:06 -0700</date>
            <delta_ts>2017-10-30 00:09:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>10980</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGNkZDNlMWI4ZTYxMTI0MTBkMjA5YWIzNmNiZWViYTFkYTgxOTlhZTMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgT2N0IDI4
IDE3OjU2OjI3IDIwMTcgLTA3MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKaW5kZXggMzBhMGIwOTk2NTUuLmIzMjdkNzg0NjMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCkBAIC0xMDYsNiArMTA2LDcgQEAgbG9hZCgiTGV4ZXIuanMiKTsKIGxv
YWQoIkxleGVyVG9rZW4uanMiKTsKIGxvYWQoIkxpdGVyYWxUeXBlQ2hlY2tlci5qcyIpOwogbG9h
ZCgiTG9naWNhbEV4cHJlc3Npb24uanMiKTsKK2xvYWQoIkxvZ2ljYWxNb2RlLmpzIik7CiBsb2Fk
KCJMb2dpY2FsTm90LmpzIik7CiBsb2FkKCJMb29wQ2hlY2tlci5qcyIpOwogbG9hZCgiTWFrZUFy
cmF5UmVmRXhwcmVzc2lvbi5qcyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQW5vbnltb3VzVmFyaWFibGUuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Bbm9ueW1vdXNWYXJpYWJsZS5qcwppbmRleCA0MGY1YmQzMWNjMy4uZjE0MzcxNWQ2NWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fub255bW91c1Zhcmlh
YmxlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fub255bW91c1Zhcmlh
YmxlLmpzCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEFub255bW91c1ZhcmlhYmxlIGV4dGVuZHMg
VmFsdWUgewogICAgIAogICAgIGdldCBvcmlnaW4oKSB7IHJldHVybiB0aGlzLl9vcmlnaW47IH0K
ICAgICBnZXQgbmFtZSgpIHsgcmV0dXJuICJhbm9uVmFyPCIgKyB0aGlzLmluZGV4ICsgIj4iOyB9
CisgICAgZ2V0IHZhcklzTFZhbHVlKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHRvU3Ry
aW5nKCkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9M
b2dpY2FsTW9kZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2ljYWxNb2Rl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNmM1Yjc4ZTg2Ywot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xvZ2ljYWxN
b2RlLmpzCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworLy8gZG9QcmVwKCJ0aHJlYWQgaW50KiBmb28o
dGhyZWFkIGludCogeCkgeyByZXR1cm4geDsgfSB2b2lkIGJhcigpIHsgaW50IHg7IGludCB5ID0g
KmZvbygmeCk7IH0iKQorLy8gZG9QcmVwKCJzdHJ1Y3QgRm9vIHsgaW50IHg7IGludCB5OyB9IEZv
byBmb28oKSB7IHJldHVybiBGb28oMywgNCk7IH0gdm9pZCBiYXIoKSB7IGludCB4ID0gZm9vKCku
eDsgfSIpCisvLyBkb1ByZXAoInRocmVhZCBpbnRbXSBmb28odGhyZWFkIGludFtdIHgpIHsgcmV0
dXJuIHg7IH0gdm9pZCBiYXIoKSB7IGludFsxXSB4OyBpbnQgeSA9IGZvbyhAeClbMF07IH0iKQor
CitjbGFzcyBSZXdyaXRlU2luZ2xlRnVuY3Rpb25MaWtlQmxvY2sgZXh0ZW5kcyBSZXdyaXRlciB7
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhp
cy5fb3V0ZXJGdW5jdGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIHZpc2l0RnVuY3Rpb25MaWtl
QmxvY2sobm9kZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9vdXRlckZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIG5vZGUudmlzaXQobmV3IFJld3JpdGVyKCkpOworICAgICAgICB0aGlz
Ll9vdXRlckZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBGdW5jdGlv
bkxpa2VCbG9jaygKKyAgICAgICAgICAgIG5vZGUub3JpZ2luLAorICAgICAgICAgICAgTm9kZS52
aXNpdCh0aGlzLl9yZXR1cm5UeXBlKG5vZGUpLCB0aGlzKSwKKyAgICAgICAgICAgIG5vZGUuYXJn
dW1lbnRMaXN0Lm1hcChhcmd1bWVudCA9PiBhcmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAg
ICAgICBub2RlLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0ZXIudmlzaXQodGhp
cykpLAorICAgICAgICAgICAgbm9kZS5ib2R5LnZpc2l0KHRoaXMpKTsKKyAgICAgICAgcmVzdWx0
LnJldHVybkVQdHIgPSBub2RlLnJldHVybkVQdHI7CisgICAgICAgIHRoaXMuX291dGVyRnVuY3Rp
b24gPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CisKK2NsYXNzIElu
bGluZURlcmVmZXJlbmNlIGV4dGVuZHMgUmV3cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIHsK
KyAgICBjb25zdHJ1Y3RvcihkZXJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7Cisg
ICAgICAgIHRoaXMuX2RlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2U7CisgICAgfQorICAgIAorICAg
IF9yZXR1cm5UeXBlKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5yZXR1cm5UeXBl
LmVsZW1lbnRUeXBlOworICAgIH0KKworICAgIHZpc2l0UmV0dXJuKG5vZGUpCisgICAgeworICAg
ICAgICBsZXQgbmV3RGVyZWZlcmVuY2UgPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRoaXMu
X2RlcmVmZXJlbmNlLm9yaWdpbiwgTm9kZS52aXNpdChub2RlLnZhbHVlLCB0aGlzKSk7CisgICAg
ICAgIG5ld0RlcmVmZXJlbmNlLnR5cGUgPSBOb2RlLnZpc2l0KHRoaXMuX2RlcmVmZXJlbmNlLnR5
cGUsIHRoaXMpOworICAgICAgICBuZXdEZXJlZmVyZW5jZS5hZGRyZXNzU3BhY2UgPSB0aGlzLl9k
ZXJlZmVyZW5jZS5hZGRyZXNzU3BhY2U7CisgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG5vZGUu
b3JpZ2luLCBuZXdEZXJlZmVyZW5jZSk7CisgICAgfQorfQorCitjbGFzcyBJbmxpbmVHZXR0ZXIg
ZXh0ZW5kcyBSZXdyaXRlU2luZ2xlRnVuY3Rpb25MaWtlQmxvY2sgeworICAgIGNvbnN0cnVjdG9y
KGdldHRlciwgdHlwZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX2dl
dHRlciA9IGdldHRlcjsKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgfQorICAgIAor
ICAgIF9yZXR1cm5UeXBlKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsK
KyAgICB9CisKKyAgICB2aXNpdFJldHVybihub2RlKQorICAgIHsKKyAgICAgICAgbGV0IG5ld0dl
dHRlciA9IG5ldyBDYWxsRXhwcmVzc2lvbigKKyAgICAgICAgICAgIHRoaXMuX2dldHRlci5vcmln
aW4sIHRoaXMuX2dldHRlci5uYW1lLAorICAgICAgICAgICAgdGhpcy5fZ2V0dGVyLnR5cGVBcmd1
bWVudHMubWFwKHR5cGVBcmd1bWVudCA9PiB0eXBlQXJndW1lbnQudmlzaXQodGhpcykpLAorICAg
ICAgICAgICAgW05vZGUudmlzaXQobm9kZS52YWx1ZSwgdGhpcyldKTsKKyAgICAgICAgbmV3R2V0
dGVyID0gdGhpcy5wcm9jZXNzRGVyaXZlZENhbGxEYXRhKHRoaXMuX2dldHRlciwgbmV3R2V0dGVy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4obm9kZS5vcmlnaW4sIG5ld0dldHRlcik7Cisg
ICAgfQorfQorCitjbGFzcyBJbmxpbmVTdWJzY3JpcHQgZXh0ZW5kcyBSZXdyaXRlU2luZ2xlRnVu
Y3Rpb25MaWtlQmxvY2sgeworICAgIGNvbnN0cnVjdG9yKHN1YnNjcmlwdCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX3N1YnNjcmlwdCA9IHN1YnNjcmlwdDsKKyAgICB9
CisgICAgCisgICAgX3JldHVyblR5cGUobm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2Rl
LnJldHVyblR5cGUuZWxlbWVudFR5cGU7CisgICAgfQorCisgICAgdmlzaXRSZXR1cm4obm9kZSkK
KyAgICB7CisgICAgICAgIGxldCBuZXdTdWJzY3JpcHQgPSBuZXcgQ2FsbEV4cHJlc3Npb24oCisg
ICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHQub3JpZ2luLCB0aGlzLl9zdWJzY3JpcHQubmFtZSwK
KyAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdC50eXBlQXJndW1lbnRzLm1hcCh0eXBlQXJndW1l
bnQgPT4gdHlwZUFyZ3VtZW50LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIFtOb2RlLnZpc2l0
KG5vZGUudmFsdWUsIHRoaXMpLCBOb2RlLnZpc2l0KHRoaXMuX3N1YnNjcmlwdC5hcmd1bWVudExp
c3RbMV0sIHRoaXMpXSk7CisgICAgICAgIG5ld1N1YnNjcmlwdCA9IHRoaXMucHJvY2Vzc0Rlcml2
ZWRDYWxsRGF0YSh0aGlzLl9zdWJzY3JpcHQsIG5ld1N1YnNjcmlwdCk7CisgICAgICAgIHJldHVy
biBuZXcgUmV0dXJuKG5vZGUub3JpZ2luLCBuZXdTdWJzY3JpcHQpOworICAgIH0KK30KKworY2xh
c3MgUkhTUmVmZXJlbmNlVHlwZXNMb3dlcmVyIGV4dGVuZHMgUmV3cml0ZXIgeworICAgIF9maW5k
SW5uZXJGdW5jdGlvbkxpa2VCbG9jayhub2RlKQorICAgIHsKKyAgICAgICAgbGV0IGRlZXBlc3RD
b21tYTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgaWYgKG5vZGUgaW5z
dGFuY2VvZiBJZGVudGl0eUV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9k
ZS50YXJnZXQ7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIENvbW1hRXhwcmVzc2lvbikgeworICAgICAgICAg
ICAgICAgIGRlZXBlc3RDb21tYSA9IG5vZGU7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUu
bGlzdFtub2RlLmxpc3QubGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgRnVuY3Rpb25M
aWtlQmxvY2spKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2RlZXBlc3RDb21tYSwgZnVuY3Rp
b25MaWtlQmxvY2s6IG5vZGV9OworICAgIH0KKyAgICAKKyAgICBfaW5saW5lVmFsdWVJbnRvRnVu
Y3Rpb25MaWtlQmxvY2socmVzdWx0LCBpbm5lclZhbHVlLCBzdWJzdGl0dXRpb24pCisgICAgewor
ICAgICAgICBsZXQgaW5uZXJGdW5jdGlvbkxpa2VCbG9jayA9IHRoaXMuX2ZpbmRJbm5lckZ1bmN0
aW9uTGlrZUJsb2NrKGlubmVyVmFsdWUocmVzdWx0KSk7CisgICAgCisgICAgICAgIGlmICghaW5u
ZXJGdW5jdGlvbkxpa2VCbG9jaykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAg
ICAgbGV0IG5ld0Z1bmN0aW9uID0gaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5mdW5jdGlvbkxpa2VC
bG9jay52aXNpdChzdWJzdGl0dXRpb24oaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5mdW5jdGlvbkxp
a2VCbG9jaykpOworICAgICAgICBpZiAoaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5kZWVwZXN0Q29t
bWEpIHsKKyAgICAgICAgICAgIGlubmVyRnVuY3Rpb25MaWtlQmxvY2suZGVlcGVzdENvbW1hLmxp
c3RbaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5kZWVwZXN0Q29tbWEubGlzdC5sZW5ndGggLSAxXSA9
IG5ld0Z1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5wdHI7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uOworICAgIH0KKworICAgIHZpc2l0RGVyZWZlcmVu
Y2VFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lVmFs
dWVJbnRvRnVuY3Rpb25MaWtlQmxvY2soc3VwZXIudmlzaXREZXJlZmVyZW5jZUV4cHJlc3Npb24o
bm9kZSksIHJlc3VsdCA9PiByZXN1bHQucHRyLCBmdW5jdGlvbkxpa2VCbG9jayA9PiBuZXcgSW5s
aW5lRGVyZWZlcmVuY2Uobm9kZSkpOworICAgIH0KKworICAgIHZpc2l0Q2FsbEV4cHJlc3Npb24o
bm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5hbWUuc3RhcnRzV2l0aCgib3BlcmF0b3Iu
IikgJiYgIW5vZGUubmFtZS5lbmRzV2l0aCgiPSIpKSB7CisgICAgICAgICAgICAvLyBVc2VyLWF1
dGhvcmVkIGZ1bmN0aW9ucyB3aWxsIGhhdmUgYmVlbiB0cmFuc2xhdGVkIHRvIEZ1bmN0aW9uTGlr
ZUJsb2Nrcywgc28KKyAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBvbmx5IGNhdGNoIG5hdGl2ZSBm
aWVsZCBnZXR0ZXJzLgorICAgICAgICAgICAgbGV0IGZpZWxkTmFtZSA9IG5vZGUubmFtZS5zdWJz
dHJpbmcoIm9wZXJhdG9yLiIubGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbmxp
bmVWYWx1ZUludG9GdW5jdGlvbkxpa2VCbG9jayhzdXBlci52aXNpdENhbGxFeHByZXNzaW9uKG5v
ZGUpLCByZXN1bHQgPT4gcmVzdWx0LmFyZ3VtZW50TGlzdFswXSwgZnVuY3Rpb25MaWtlQmxvY2sg
PT4gbmV3IElubGluZUdldHRlcihub2RlLCBmdW5jdGlvbkxpa2VCbG9jay5yZXR1cm5UeXBlLmZp
ZWxkQnlOYW1lKGZpZWxkTmFtZSkudHlwZSkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5v
ZGUubmFtZSA9PSAib3BlcmF0b3ImW10iKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lubGlu
ZVZhbHVlSW50b0Z1bmN0aW9uTGlrZUJsb2NrKHN1cGVyLnZpc2l0Q2FsbEV4cHJlc3Npb24obm9k
ZSksIHJlc3VsdCA9PiByZXN1bHQuYXJndW1lbnRMaXN0WzBdLCBmdW5jdGlvbkxpa2VCbG9jayA9
PiBuZXcgSW5saW5lU3Vic2NyaXB0KG5vZGUpKTsKKworICAgICAgICByZXR1cm4gc3VwZXIudmlz
aXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICB9Cit9CisKK2NsYXNzIEN1c3RvbVJIU1Jld3Jp
dGVyIGV4dGVuZHMgUmV3cml0ZXIgeworICAgIGNvbnN0cnVjdG9yKGlubmVyUmV3cml0ZXIpCisg
ICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9jdXJyZW50RGVwdGggPSAwOwor
ICAgICAgICB0aGlzLl9tYXhEZXB0aCA9IDA7CisgICAgICAgIHRoaXMuX2lubmVyUmV3cml0ZXIg
PSBpbm5lclJld3JpdGVyOworICAgIH0KKworICAgIHZpc2l0QXNzaWdubWVudChub2RlKSB7Cisg
ICAgICAgICsrdGhpcy5fY3VycmVudERlcHRoOworICAgICAgICB0aGlzLl9tYXhEZXB0aCA9IE1h
dGgubWF4KHRoaXMuX2N1cnJlbnREZXB0aCwgdGhpcy5fbWF4RGVwdGgpOworICAgICAgICBsZXQg
cmVzdWx0ID0gc3VwZXIudmlzaXRBc3NpZ25tZW50KG5vZGUpOworICAgICAgICBpZiAodGhpcy5f
bWF4RGVwdGggPT0gdGhpcy5fY3VycmVudERlcHRoKSB7CisgICAgICAgICAgICAvLyBJJ20gdGhl
IGlubmVybW9zdCBBc3NpZ25tZW50LgorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEFzc2lnbm1l
bnQobm9kZS5vcmlnaW4sIHJlc3VsdC5saHMsIG5vZGUucmhzLnZpc2l0KHRoaXMuX2lubmVyUmV3
cml0ZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gTm9kZS52aXNpdChub2RlLnR5cGUs
IHRoaXMpOworICAgICAgICB9CisgICAgICAgIC0tdGhpcy5fY3VycmVudERlcHRoOworICAgICAg
ICBpZiAodGhpcy5fY3VycmVudERlcHRoID09IDApCisgICAgICAgICAgICB0aGlzLl9tYXhEZXB0
aCA9IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmlzaXRWYXJpYWJs
ZURlY2wobm9kZSkgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFZhcmlhYmxlRGVjbCgKKyAg
ICAgICAgICAgIG5vZGUub3JpZ2luLCBub2RlLm5hbWUsCisgICAgICAgICAgICBub2RlLnR5cGUu
dmlzaXQodGhpcyksCisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIsIHRo
aXMuX2lubmVyUmV3cml0ZXIpKTsKKyAgICAgICAgdGhpcy5fbWFwTm9kZShub2RlLCByZXN1bHQp
OworICAgICAgICByZXN1bHQuZVB0ciA9IG5vZGUuZVB0cjsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
UElSVi5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRl
eCBkMTczZjdlNzI1MS4uOGVkYjg1ZjM3YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvU1BJUlYuaHRtbApAQCAtODksNiArODksNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9Ikxl
eGVyVG9rZW4uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMaXRlcmFsVHlwZUNoZWNr
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkxvZ2ljYWxNb2RlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTG9naWNhbE5vdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ikxvb3BDaGVja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTWFrZUFycmF5UmVm
RXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWwKaW5kZXggMzIwZmJhOTlkNTUuLmNlYzEwMGY1MjJlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC04Myw2ICs4Myw3IEBACiA8c2NyaXB0IHNyYz0iTGV4
ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5cGVDaGVja2VyLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iTG9naWNhbE1vZGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ikxv
Z2ljYWxOb3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ikxvb3BDaGVja2VyLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJNYWtlQXJyYXlSZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IDNhN2U5NDhiZTY3
Li4wODc2YjAxY2VmNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
aW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1s
CkBAIC04Myw2ICs4Myw3IEBACiA8c2NyaXB0IHNyYz0iTGV4ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iTGl0ZXJhbFR5cGVDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJMb2dpY2FsRXhwcmVzc2lvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iTG9naWNh
bE1vZGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkxvZ2ljYWxOb3QuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ikxvb3BDaGVja2VyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJN
YWtlQXJyYXlSZWZFeHByZXNzaW9uLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325331</attachid>
            <date>2017-10-30 00:09:17 -0700</date>
            <delta_ts>2018-08-29 17:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>19971</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDA5M2U4NTFhY2JmOGZkZmRmNDZjMDg0ZWE2OGE2ODhhMjNlZTViMWMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgT2N0IDI4
IDE3OjU2OjI3IDIwMTcgLTA3MDAKCiAgICBXSVAKCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9B
bGwuanMKaW5kZXggMzBhMGIwOTk2NTUuLjhiZmUyZmNiNzM4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQWxsLmpzCkBAIC0xMDEsNiArMTAxLDcgQEAgbG9hZCgiSW5zdGFudGlhdGVJbW1l
ZGlhdGVzLmpzIik7CiBsb2FkKCJJbnRMaXRlcmFsLmpzIik7CiBsb2FkKCJJbnRMaXRlcmFsVHlw
ZS5qcyIpOwogbG9hZCgiSW50cmluc2ljcy5qcyIpOworbG9hZCgiTEhTTG9naWNhbE1vZGVJbmxp
bmVyLmpzIik7CiBsb2FkKCJMYXRlQ2hlY2tlci5qcyIpOwogbG9hZCgiTGV4ZXIuanMiKTsKIGxv
YWQoIkxleGVyVG9rZW4uanMiKTsKQEAgLTEzMiw2ICsxMzMsNyBAQCBsb2FkKCJQcm90b2NvbERl
Y2wuanMiKTsKIGxvYWQoIlByb3RvY29sRnVuY0RlY2wuanMiKTsKIGxvYWQoIlByb3RvY29sUmVm
LmpzIik7CiBsb2FkKCJQdHJUeXBlLmpzIik7Citsb2FkKCJSSFNMb2dpY2FsTW9kZUlubGluZXIu
anMiKTsKIGxvYWQoIlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiKTsKIGxvYWQoIlJlY3Vy
c2lvbkNoZWNrZXIuanMiKTsKIGxvYWQoIlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIik7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Bbm9ueW1vdXNWYXJpYWJsZS5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fub255bW91c1ZhcmlhYmxlLmpzCmlu
ZGV4IDQwZjViZDMxY2MzLi5mMTQzNzE1ZDY1YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQW5vbnltb3VzVmFyaWFibGUuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvQW5vbnltb3VzVmFyaWFibGUuanMKQEAgLTM4LDYgKzM4LDcgQEAgY2xh
c3MgQW5vbnltb3VzVmFyaWFibGUgZXh0ZW5kcyBWYWx1ZSB7CiAgICAgCiAgICAgZ2V0IG9yaWdp
bigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gImFu
b25WYXI8IiArIHRoaXMuaW5kZXggKyAiPiI7IH0KKyAgICBnZXQgdmFySXNMVmFsdWUoKSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xIU0xvZ2ljYWxNb2RlSW5saW5lci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xIU0xvZ2ljYWxNb2RlSW5saW5lci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODdlZGIxZWYwMTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MSFNMb2dpY2FsTW9kZUlu
bGluZXIuanMKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBMSFNSZWZlcmVuY2VUeXBlc0xv
d2VyZXIgZXh0ZW5kcyBSZXdyaXRlciB7Cit9CisKK2NsYXNzIEN1c3RvbUxIU1Jld3JpdGVyIGV4
dGVuZHMgUmV3cml0ZXIgeworICAgIF9maW5kSW5uZXJGdW5jdGlvbkxpa2VCbG9jayhub2RlKQor
ICAgIHsKKyAgICAgICAgLy8gKihhLCBmb28oKSkgPSBiYXIgLi4uIHJldHVybiBiYXogPT4gKmJh
eiA9IGJhcgorICAgICAgICAvLyAqKGEsIChiLCAqZm9vKCkpKSA9IGJhciAuLi4gKGEsIChiLCBm
b28oKSkpCisgICAgICAgIGxldCBvcGVyYXRpb25zID0gW107CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDsKKyAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRGVyZWZlcmVuY2VFeHByZXNz
aW9uKSB7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5wdXNoKG5vZGUpOworICAgICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLnB0cjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICgobm9kZSBpbnN0YW5jZW9mIENhbGxFeHByZXNzaW9u
KSAmJiAoKG5vZGUubmFtZS5zdGFydHNXaXRoKCJvcGVyYXRvci4iKSAmJiAhbm9kZS5uYW1lLmVu
ZHNXaXRoKCI9IikpIHx8IChub2RlLm5hbWUgPT0gIm9wZXJhdG9yJltdIikpKSB7CisgICAgICAg
ICAgICAgICAgb3BlcmF0aW9ucy5wdXNoKG5vZGUpOworICAgICAgICAgICAgICAgIG5vZGUgPSBu
b2RlLmFyZ3VtZW50TGlzdFswXTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgSWRlbnRpdHlFeHByZXNzaW9u
KSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUudGFyZ2V0OworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2Vv
ZiBDb21tYUV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5saXN0Lmxlbmd0
aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLmxpc3Rbbm9kZS5saXN0Lmxlbmd0aCAtIDFdOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEobm9kZSBp
bnN0YW5jZW9mIEZ1bmN0aW9uTGlrZUJsb2NrKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7ZnVuY3Rpb25MaWtlQmxvY2s6IG5v
ZGUsIG9wZXJhdGlvbnN9OworICAgIH0KKyAgICAKKyAgICBfaW5saW5lTm9kZXMob3JpZ2luYWxB
c3NpZ25tZW50LCBmdW5jdGlvbkxpa2VCbG9jaywgb3BlcmF0aW9ucykKKyAgICB7CisgICAgICAg
IGNsYXNzIFJld3JpdGVTaW5nbGVGdW5jdGlvbkxpa2VCbG9jayBleHRlbmRzIFJld3JpdGVyIHsK
KyAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzdXBlcigpOworICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsQXNzaWdubWVudCA9IG9y
aWdpbmFsQXNzaWdubWVudDsKKyAgICAgICAgICAgICAgICB0aGlzLl9vdXRlckZ1bmN0aW9uID0g
ZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpc2l0RnVuY3Rpb25MaWtlQmxv
Y2sobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3V0ZXJG
dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaXQobmV3IFJld3Jp
dGVyKCkpOworICAgICAgICAgICAgICAgIHRoaXMuX291dGVyRnVuY3Rpb24gPSB0cnVlOworICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY3Rpb25MaWtlQmxvY2soCisgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3JpZ2luLAorICAgICAgICAgICAgICAgICAgICBOb2RlLnZpc2l0
KHRoaXMuX29yaWdpbmFsQXNzaWdubWVudC50eXBlLCB0aGlzKSwKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS5hcmd1bWVudExpc3QubWFwKGFyZ3VtZW50ID0+IGFyZ3VtZW50LnZpc2l0KHRoaXMp
KSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4g
cGFyYW1ldGVyLnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5ib2R5LnZp
c2l0KHRoaXMpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQucmV0dXJuRVB0ciA9IG5vZGUucmV0
dXJuRVB0cjsKKyAgICAgICAgICAgICAgICB0aGlzLl9vdXRlckZ1bmN0aW9uID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgdmlzaXRSZXR1cm4obm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBsZXQgcHRyID0gbm9kZS52YWx1ZTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBp
ID0gb3BlcmF0aW9ucy5zaXplKCkgLSAxOyBpID49IDA7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBsZXQgb3BlcmF0aW9uID0gb3BlcmF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IG5ld05vZGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRGVy
ZWZlcmVuY2VFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdOb2RlID0g
bmV3IERlcmVmZXJlbmNlRXhwcmVzc2lvbihvcGVyYXRpb24ub3JpZ2luLCBwdHIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3Tm9kZS50eXBlID0gTm9kZS52aXNpdChvcGVyYXRpb24udHlw
ZSwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdOb2RlLmFkZHJlc3NTcGFjZSA9
IG9wZXJhdGlvbi5hZGRyZXNzU3BhY2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bm9kZSBpbnN0YW5jZW9mIENhbGxFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgYXJndW1lbnRMaXN0ID0gW3B0cl07CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBqID0gMTsgaiA8IG9wZXJhdGlvbi5hcmd1bWVudExpc3QubGVuZ3RoOyArK2opCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LnB1c2goTm9kZS52aXNpdChvcGVy
YXRpb24uYXJndW1lbnRMaXN0W2pdLCB0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d05vZGUgPSBuZXcgQ2FsbEV4cHJlc3Npb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uLm9yaWdpbiwgb3BlcmF0aW9uLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uLnR5cGVBcmd1bWVudHMubWFwKHR5cGVBcmd1bWVudCA9PiB0eXBlQXJn
dW1lbnQudmlzaXQodGhpcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
TGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdOb2RlID0gdGhpcy5wcm9jZXNzRGVy
aXZlZENhbGxEYXRhKG9wZXJhdGlvbiwgbmV3Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgcHRyID0gbmV3Tm9kZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgbGV0IGFzc2lnbm1lbnQgPSBuZXcgQXNzaWdubWVudCh0aGlzLl9vcmln
aW5hbEFzc2lnbm1lbnQub3JpZ2luLCBwdHIsIHRoaXMuX29yaWdpbmFsQXNzaWdubWVudC5yaHMp
OworICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQudHlwZSA9IE5vZGUudmlzaXQodGhpcy5fb3Jp
Z2luYWxBc3NpZ25tZW50LnR5cGUsIHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
UmV0dXJuKG5vZGUub3JpZ2luLCBhc3NpZ25tZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZnVuY3Rpb25MaWtlQmxvY2sudmlzaXQobmV3IFJld3JpdGVTaW5n
bGVGdW5jdGlvbkxpa2VCbG9jaygpKTsKKyAgICB9CisgICAgCisgICAgY2xhc3MgUmVtb3ZlSW5s
aW5lZE5vZGVzIGV4dGVuZHMgUmV3cml0ZXIgeworICAgICAgICBjb25zdHJ1Y3RvcihmdW5jdGlv
bkxpa2VCbG9jaykKKyAgICAgICAgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAg
IHRoaXMuX2Z1bmN0aW9uTGlrZUJsb2NrID0gZnVuY3Rpb25MaWtlQmxvY2s7CisgICAgICAgIH0K
KworICAgICAgICB2aXNpdERlcmVmZXJlbmNlRXhwcmVzc2lvbihub2RlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gbm9kZS5wdHIudmlzaXQodGhpcyk7CisgICAgICAgIH0KKworICAg
ICAgICB2aXNpdENhbGxFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICgobm9kZS5uYW1lLnN0YXJ0c1dpdGgoIm9wZXJhdG9yLiIpICYmICFub2RlLm5hbWUuZW5kc1dp
dGgoIj0iKSkgfHwgKG5vZGUubmFtZSA9PSAib3BlcmF0b3ImW10iKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbm9kZS5hcmd1bWVudExpc3RbMF0udmlzaXQodGhpcyk7CisgICAgICAgICAgICBy
ZXR1cm4gc3VwZXIudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpc2l0SWRlbnRpdHlFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBub2RlLnRhcmdldC52aXNpdCh0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
c2l0Q29tbWFFeHByZXNzaW9uKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBsYXN0
SW5kZXggPSBub2RlLmxpc3QubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIGxldCBsaXN0ID0gW107
CisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3RJbmRleDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG5vZGUubGlzdFtpXS52aXNpdChuZXcgUmV3cml0ZXIo
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTnVsbCByZXN1bHQgZnJvbSAiICsgZXhwcmVzc2lvbik7CisgICAgICAg
ICAgICAgICAgbGlzdC5wdXNoKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gbm9kZS5saXN0W2xhc3RJbmRleF0udmlzaXQodGhpcyk7CisgICAgICAgICAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk51bGwgcmVz
dWx0IGZyb20gIiArIGV4cHJlc3Npb24pOworICAgICAgICAgICAgbGlzdC5wdXNoKHJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gbmV3IENvbW1hRXhwcmVzc2lvbihub2RlLm9yaWdpbiwgbGlz
dCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZpc2l0RnVuY3Rpb25MaWtlQmxvY2so
bm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9uTGlrZUJs
b2NrOworICAgICAgICB9CisgICAgfQorCisgICAgdmlzaXRBc3NpZ25tZW50KG5vZGUpIHsKKyAg
ICAgICAgLy8gKmEoKSA9ICgqYigpID0gYykKKyAgICAgICAgbGV0IG5vZGUgPSBzdXBlci52aXNp
dEFzc2lnbm1lbnQobm9kZSk7CisgICAgICAgIGxldCBmdW5jdGlvbkxpa2VCbG9jayA9IHRoaXMu
X2ZpbmRJbm5lckZ1bmN0aW9uTGlrZUJsb2NrKG5vZGUubGhzKTsKKyAgICAgICAgaWYgKCFmdW5j
dGlvbkxpa2VCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICBsZXQgbmV3
RnVuY3Rpb25MaWtlQmxvY2sgPSB0aGlzLl9pbmxpbmVOb2Rlcyhub2RlLCBmdW5jdGlvbkxpa2VC
bG9jay5mdW5jdGlvbkxpa2VCbG9jaywgZnVuY3Rpb25MaWtlQmxvY2sub3BlcmF0aW9ucyk7Cisg
ICAgICAgIHJldHVybiBub2RlLmxocy52aXNpdChuZXcgUmVtb3ZlSW5saW5lZE5vZGVzKG5ld0Z1
bmN0aW9uTGlrZUJsb2NrKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUkhTTG9naWNhbE1vZGVJbmxpbmVyLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUkhTTG9naWNhbE1vZGVJbmxpbmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kN2RjNGY2ZTBmMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1JIU0xvZ2ljYWxNb2RlSW5saW5lci5qcwpAQCAt
MCwwICsxLDIxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisidXNlIHN0cmljdCI7CisKKy8vIGRvUHJlcCgidGhyZWFkIGludCogZm9vKHRocmVhZCBpbnQq
IHgpIHsgcmV0dXJuIHg7IH0gdm9pZCBiYXIoKSB7IGludCB4OyBpbnQgeSA9ICpmb28oJngpOyB9
IikKKy8vIGRvUHJlcCgic3RydWN0IEZvbyB7IGludCB4OyBpbnQgeTsgfSBGb28gZm9vKCkgeyBy
ZXR1cm4gRm9vKDMsIDQpOyB9IHZvaWQgYmFyKCkgeyBpbnQgeCA9IGZvbygpLng7IH0iKQorLy8g
ZG9QcmVwKCJ0aHJlYWQgaW50W10gZm9vKHRocmVhZCBpbnRbXSB4KSB7IHJldHVybiB4OyB9IHZv
aWQgYmFyKCkgeyBpbnRbMV0geDsgaW50IHkgPSBmb28oQHgpWzBdOyB9IikKKworY2xhc3MgUmV3
cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIGV4dGVuZHMgUmV3cml0ZXIgeworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX291dGVyRnVu
Y3Rpb24gPSBmYWxzZTsKKyAgICB9CisKKyAgICB2aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKG5vZGUp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fb3V0ZXJGdW5jdGlvbikKKyAgICAgICAgICAgIHJl
dHVybiBub2RlLnZpc2l0KG5ldyBSZXdyaXRlcigpKTsKKyAgICAgICAgdGhpcy5fb3V0ZXJGdW5j
dGlvbiA9IHRydWU7CisgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRnVuY3Rpb25MaWtlQmxvY2so
CisgICAgICAgICAgICBub2RlLm9yaWdpbiwKKyAgICAgICAgICAgIE5vZGUudmlzaXQodGhpcy5f
cmV0dXJuVHlwZShub2RlKSwgdGhpcyksCisgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdC5t
YXAoYXJndW1lbnQgPT4gYXJndW1lbnQudmlzaXQodGhpcykpLAorICAgICAgICAgICAgbm9kZS5w
YXJhbWV0ZXJzLm1hcChwYXJhbWV0ZXIgPT4gcGFyYW1ldGVyLnZpc2l0KHRoaXMpKSwKKyAgICAg
ICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKSk7CisgICAgICAgIHJlc3VsdC5yZXR1cm5FUHRy
ID0gbm9kZS5yZXR1cm5FUHRyOworICAgICAgICB0aGlzLl9vdXRlckZ1bmN0aW9uID0gZmFsc2U7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQorCitjbGFzcyBJbmxpbmVEZXJlZmVy
ZW5jZSBleHRlbmRzIFJld3JpdGVTaW5nbGVGdW5jdGlvbkxpa2VCbG9jayB7CisgICAgY29uc3Ry
dWN0b3IoZGVyZWZlcmVuY2UpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlz
Ll9kZXJlZmVyZW5jZSA9IGRlcmVmZXJlbmNlOworICAgIH0KKyAgICAKKyAgICBfcmV0dXJuVHlw
ZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUucmV0dXJuVHlwZS5lbGVtZW50VHlw
ZTsKKyAgICB9CisKKyAgICB2aXNpdFJldHVybihub2RlKQorICAgIHsKKyAgICAgICAgbGV0IG5l
d0RlcmVmZXJlbmNlID0gbmV3IERlcmVmZXJlbmNlRXhwcmVzc2lvbih0aGlzLl9kZXJlZmVyZW5j
ZS5vcmlnaW4sIE5vZGUudmlzaXQobm9kZS52YWx1ZSwgdGhpcykpOworICAgICAgICBuZXdEZXJl
ZmVyZW5jZS50eXBlID0gTm9kZS52aXNpdCh0aGlzLl9kZXJlZmVyZW5jZS50eXBlLCB0aGlzKTsK
KyAgICAgICAgbmV3RGVyZWZlcmVuY2UuYWRkcmVzc1NwYWNlID0gdGhpcy5fZGVyZWZlcmVuY2Uu
YWRkcmVzc1NwYWNlOworICAgICAgICByZXR1cm4gbmV3IFJldHVybihub2RlLm9yaWdpbiwgbmV3
RGVyZWZlcmVuY2UpOworICAgIH0KK30KKworY2xhc3MgSW5saW5lR2V0dGVyIGV4dGVuZHMgUmV3
cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJsb2NrIHsKKyAgICBjb25zdHJ1Y3RvcihnZXR0ZXIsIHR5
cGUpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9nZXR0ZXIgPSBnZXR0
ZXI7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgIH0KKyAgICAKKyAgICBfcmV0dXJu
VHlwZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfQorCisg
ICAgdmlzaXRSZXR1cm4obm9kZSkKKyAgICB7CisgICAgICAgIGxldCBuZXdHZXR0ZXIgPSBuZXcg
Q2FsbEV4cHJlc3Npb24oCisgICAgICAgICAgICB0aGlzLl9nZXR0ZXIub3JpZ2luLCB0aGlzLl9n
ZXR0ZXIubmFtZSwKKyAgICAgICAgICAgIHRoaXMuX2dldHRlci50eXBlQXJndW1lbnRzLm1hcCh0
eXBlQXJndW1lbnQgPT4gdHlwZUFyZ3VtZW50LnZpc2l0KHRoaXMpKSwKKyAgICAgICAgICAgIFtO
b2RlLnZpc2l0KG5vZGUudmFsdWUsIHRoaXMpXSk7CisgICAgICAgIG5ld0dldHRlciA9IHRoaXMu
cHJvY2Vzc0Rlcml2ZWRDYWxsRGF0YSh0aGlzLl9nZXR0ZXIsIG5ld0dldHRlcik7CisgICAgICAg
IHJldHVybiBuZXcgUmV0dXJuKG5vZGUub3JpZ2luLCBuZXdHZXR0ZXIpOworICAgIH0KK30KKwor
Y2xhc3MgSW5saW5lU3Vic2NyaXB0IGV4dGVuZHMgUmV3cml0ZVNpbmdsZUZ1bmN0aW9uTGlrZUJs
b2NrIHsKKyAgICBjb25zdHJ1Y3RvcihzdWJzY3JpcHQpCisgICAgeworICAgICAgICBzdXBlcigp
OworICAgICAgICB0aGlzLl9zdWJzY3JpcHQgPSBzdWJzY3JpcHQ7CisgICAgfQorICAgIAorICAg
IF9yZXR1cm5UeXBlKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS5yZXR1cm5UeXBl
LmVsZW1lbnRUeXBlOworICAgIH0KKworICAgIHZpc2l0UmV0dXJuKG5vZGUpCisgICAgeworICAg
ICAgICBsZXQgbmV3U3Vic2NyaXB0ID0gbmV3IENhbGxFeHByZXNzaW9uKAorICAgICAgICAgICAg
dGhpcy5fc3Vic2NyaXB0Lm9yaWdpbiwgdGhpcy5fc3Vic2NyaXB0Lm5hbWUsCisgICAgICAgICAg
ICB0aGlzLl9zdWJzY3JpcHQudHlwZUFyZ3VtZW50cy5tYXAodHlwZUFyZ3VtZW50ID0+IHR5cGVB
cmd1bWVudC52aXNpdCh0aGlzKSksCisgICAgICAgICAgICBbTm9kZS52aXNpdChub2RlLnZhbHVl
LCB0aGlzKSwgTm9kZS52aXNpdCh0aGlzLl9zdWJzY3JpcHQuYXJndW1lbnRMaXN0WzFdLCB0aGlz
KV0pOworICAgICAgICBuZXdTdWJzY3JpcHQgPSB0aGlzLnByb2Nlc3NEZXJpdmVkQ2FsbERhdGEo
dGhpcy5fc3Vic2NyaXB0LCBuZXdTdWJzY3JpcHQpOworICAgICAgICByZXR1cm4gbmV3IFJldHVy
bihub2RlLm9yaWdpbiwgbmV3U3Vic2NyaXB0KTsKKyAgICB9Cit9CisKK2NsYXNzIFJIU1JlZmVy
ZW5jZVR5cGVzTG93ZXJlciBleHRlbmRzIFJld3JpdGVyIHsKKyAgICBfZmluZElubmVyRnVuY3Rp
b25MaWtlQmxvY2sobm9kZSkKKyAgICB7CisgICAgICAgIGxldCBkZWVwZXN0Q29tbWE7CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgSWRl
bnRpdHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUudGFyZ2V0Owor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG5vZGUgaW5zdGFuY2VvZiBDb21tYUV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS5saXN0Lmxlbmd0aCA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZp
bmVkOworICAgICAgICAgICAgICAgIGRlZXBlc3RDb21tYSA9IG5vZGU7CisgICAgICAgICAgICAg
ICAgbm9kZSA9IG5vZGUubGlzdFtub2RlLmxpc3QubGVuZ3RoIC0gMV07CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIShub2RlIGluc3Rh
bmNlb2YgRnVuY3Rpb25MaWtlQmxvY2spKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ge2RlZXBl
c3RDb21tYSwgZnVuY3Rpb25MaWtlQmxvY2s6IG5vZGV9OworICAgIH0KKyAgICAKKyAgICBfaW5s
aW5lVmFsdWVJbnRvRnVuY3Rpb25MaWtlQmxvY2socmVzdWx0LCBpbm5lclZhbHVlLCBzdWJzdGl0
dXRpb24pCisgICAgeworICAgICAgICBsZXQgaW5uZXJGdW5jdGlvbkxpa2VCbG9jayA9IHRoaXMu
X2ZpbmRJbm5lckZ1bmN0aW9uTGlrZUJsb2NrKGlubmVyVmFsdWUocmVzdWx0KSk7CisgICAgCisg
ICAgICAgIGlmICghaW5uZXJGdW5jdGlvbkxpa2VCbG9jaykKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisKKyAgICAgICAgbGV0IG5ld0Z1bmN0aW9uID0gaW5uZXJGdW5jdGlvbkxpa2VCbG9j
ay5mdW5jdGlvbkxpa2VCbG9jay52aXNpdChzdWJzdGl0dXRpb24oaW5uZXJGdW5jdGlvbkxpa2VC
bG9jay5mdW5jdGlvbkxpa2VCbG9jaykpOworICAgICAgICBpZiAoaW5uZXJGdW5jdGlvbkxpa2VC
bG9jay5kZWVwZXN0Q29tbWEpIHsKKyAgICAgICAgICAgIGlubmVyRnVuY3Rpb25MaWtlQmxvY2su
ZGVlcGVzdENvbW1hLmxpc3RbaW5uZXJGdW5jdGlvbkxpa2VCbG9jay5kZWVwZXN0Q29tbWEubGlz
dC5sZW5ndGggLSAxXSA9IG5ld0Z1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5w
dHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uOworICAgIH0KKworICAg
IHZpc2l0RGVyZWZlcmVuY2VFeHByZXNzaW9uKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5faW5saW5lVmFsdWVJbnRvRnVuY3Rpb25MaWtlQmxvY2soc3VwZXIudmlzaXREZXJlZmVy
ZW5jZUV4cHJlc3Npb24obm9kZSksIHJlc3VsdCA9PiByZXN1bHQucHRyLCBmdW5jdGlvbkxpa2VC
bG9jayA9PiBuZXcgSW5saW5lRGVyZWZlcmVuY2Uobm9kZSkpOworICAgIH0KKworICAgIHZpc2l0
Q2FsbEV4cHJlc3Npb24obm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLm5hbWUuc3RhcnRz
V2l0aCgib3BlcmF0b3IuIikgJiYgIW5vZGUubmFtZS5lbmRzV2l0aCgiPSIpKSB7CisgICAgICAg
ICAgICAvLyBVc2VyLWF1dGhvcmVkIGZ1bmN0aW9ucyB3aWxsIGhhdmUgYmVlbiB0cmFuc2xhdGVk
IHRvIEZ1bmN0aW9uTGlrZUJsb2Nrcywgc28KKyAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBvbmx5
IGNhdGNoIG5hdGl2ZSBmaWVsZCBnZXR0ZXJzLgorICAgICAgICAgICAgbGV0IGZpZWxkTmFtZSA9
IG5vZGUubmFtZS5zdWJzdHJpbmcoIm9wZXJhdG9yLiIubGVuZ3RoKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9pbmxpbmVWYWx1ZUludG9GdW5jdGlvbkxpa2VCbG9jayhzdXBlci52aXNpdENh
bGxFeHByZXNzaW9uKG5vZGUpLCByZXN1bHQgPT4gcmVzdWx0LmFyZ3VtZW50TGlzdFswXSwgZnVu
Y3Rpb25MaWtlQmxvY2sgPT4gbmV3IElubGluZUdldHRlcihub2RlLCBmdW5jdGlvbkxpa2VCbG9j
ay5yZXR1cm5UeXBlLmZpZWxkQnlOYW1lKGZpZWxkTmFtZSkudHlwZSkpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG5vZGUubmFtZSA9PSAib3BlcmF0b3ImW10iKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2lubGluZVZhbHVlSW50b0Z1bmN0aW9uTGlrZUJsb2NrKHN1cGVyLnZpc2l0Q2Fs
bEV4cHJlc3Npb24obm9kZSksIHJlc3VsdCA9PiByZXN1bHQuYXJndW1lbnRMaXN0WzBdLCBmdW5j
dGlvbkxpa2VCbG9jayA9PiBuZXcgSW5saW5lU3Vic2NyaXB0KG5vZGUpKTsKKworICAgICAgICBy
ZXR1cm4gc3VwZXIudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTsKKyAgICB9Cit9CisKK2NsYXNz
IEN1c3RvbVJIU1Jld3JpdGVyIGV4dGVuZHMgUmV3cml0ZXIgeworICAgIGNvbnN0cnVjdG9yKGlu
bmVyUmV3cml0ZXIpCisgICAgeworICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLl9jdXJy
ZW50RGVwdGggPSAwOworICAgICAgICB0aGlzLl9tYXhEZXB0aCA9IDA7CisgICAgICAgIHRoaXMu
X2lubmVyUmV3cml0ZXIgPSBpbm5lclJld3JpdGVyOworICAgIH0KKworICAgIHZpc2l0QXNzaWdu
bWVudChub2RlKSB7CisgICAgICAgICsrdGhpcy5fY3VycmVudERlcHRoOworICAgICAgICB0aGlz
Ll9tYXhEZXB0aCA9IE1hdGgubWF4KHRoaXMuX2N1cnJlbnREZXB0aCwgdGhpcy5fbWF4RGVwdGgp
OworICAgICAgICBsZXQgcmVzdWx0ID0gc3VwZXIudmlzaXRBc3NpZ25tZW50KG5vZGUpOworICAg
ICAgICBpZiAodGhpcy5fbWF4RGVwdGggPT0gdGhpcy5fY3VycmVudERlcHRoKSB7CisgICAgICAg
ICAgICAvLyBJJ20gdGhlIGlubmVybW9zdCBBc3NpZ25tZW50LgorICAgICAgICAgICAgcmVzdWx0
ID0gbmV3IEFzc2lnbm1lbnQobm9kZS5vcmlnaW4sIHJlc3VsdC5saHMsIG5vZGUucmhzLnZpc2l0
KHRoaXMuX2lubmVyUmV3cml0ZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdC50eXBlID0gTm9kZS52
aXNpdChub2RlLnR5cGUsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIC0tdGhpcy5fY3VycmVu
dERlcHRoOworICAgICAgICBpZiAodGhpcy5fY3VycmVudERlcHRoID09IDApCisgICAgICAgICAg
ICB0aGlzLl9tYXhEZXB0aCA9IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgdmlzaXRWYXJpYWJsZURlY2wobm9kZSkgeworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFZh
cmlhYmxlRGVjbCgKKyAgICAgICAgICAgIG5vZGUub3JpZ2luLCBub2RlLm5hbWUsCisgICAgICAg
ICAgICBub2RlLnR5cGUudmlzaXQodGhpcyksCisgICAgICAgICAgICBOb2RlLnZpc2l0KG5vZGUu
aW5pdGlhbGl6ZXIsIHRoaXMuX2lubmVyUmV3cml0ZXIpKTsKKyAgICAgICAgdGhpcy5fbWFwTm9k
ZShub2RlLCByZXN1bHQpOworICAgICAgICByZXN1bHQuZVB0ciA9IG5vZGUuZVB0cjsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
U1BJUlYuaHRtbAppbmRleCBkMTczZjdlNzI1MS4uODBkYmIwNmNhODkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbApAQCAtODQsNiArODQsNyBAQCB0ZCB7CiAgICAg
PHNjcmlwdCBzcmM9IkludExpdGVyYWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJJ
bnRMaXRlcmFsVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkludHJpbnNpY3Mu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJMSFNMb2dpY2FsTW9kZUlubGluZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXRlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkxleGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTGV4
ZXJUb2tlbi5qcyI+PC9zY3JpcHQ+CkBAIC0xMTUsNiArMTE2LDcgQEAgdGQgewogICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbEZ1bmNEZWNsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
UHJvdG9jb2xSZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iUkhTTG9naWNhbE1vZGVJbmxpbmVyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJSZWN1cnNpdmVUeXBlQ2hlY2tlci5qcyI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggMzIwZmJhOTlkNTUuLmM3ZDk4
ZTgyYTljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC03OCw2
ICs3OCw3IEBACiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkludHJpbnNp
Y3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxIU0xvZ2ljYWxNb2RlSW5saW5lci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGF0ZUNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkxleGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJMZXhlclRva2VuLmpzIj48
L3NjcmlwdD4KQEAgLTEwOSw2ICsxMTAsNyBAQAogPHNjcmlwdCBzcmM9IlByb3RvY29sRnVuY0Rl
Y2wuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb3RvY29sUmVmLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJSSFNMb2dp
Y2FsTW9kZUlubGluZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2lvbkNoZWNrZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVDaGVja2VyLmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0
bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IDNhN2U5
NDhiZTY3Li4yYWIzNmE1NDVkOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRl
eC5odG1sCkBAIC03OCw2ICs3OCw3IEBACiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW50TGl0ZXJhbFR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IkludHJpbnNpY3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IkxIU0xvZ2ljYWxN
b2RlSW5saW5lci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iTGF0ZUNoZWNrZXIuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9IkxleGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJM
ZXhlclRva2VuLmpzIj48L3NjcmlwdD4KQEAgLTEwOSw2ICsxMTAsNyBAQAogPHNjcmlwdCBzcmM9
IlByb3RvY29sRnVuY0RlY2wuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlByb3RvY29sUmVm
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJQdHJUeXBlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJSSFNMb2dpY2FsTW9kZUlubGluZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJl
Y3Vyc2lvbkNoZWNrZXIuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlJlY3Vyc2l2ZVR5cGVD
aGVja2VyLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>