<?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>238024</bug_id>
          
          <creation_ts>2022-03-17 07:40:02 -0700</creation_ts>
          <short_desc>Recycling a webgl context when it has been lost and restored causes a crash</short_desc>
          <delta_ts>2022-05-25 14:52:29 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240821</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852280</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-17 07:40:02 -0700</bug_when>
    <thetext>Recycling a webgl context when it has been lost and restored causes a crash

lose a context
schedule it for restore
force the context lost due to &quot;recycling&quot;, e.g. exceeding active context limit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852282</commentid>
    <comment_count>1</comment_count>
      <attachid>454973</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-17 07:43:36 -0700</bug_when>
    <thetext>Created attachment 454973
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852403</commentid>
    <comment_count>2</comment_count>
      <attachid>455000</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-17 12:06:05 -0700</bug_when>
    <thetext>Created attachment 455000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852405</commentid>
    <comment_count>3</comment_count>
      <attachid>455000</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-17 12:18:12 -0700</bug_when>
    <thetext>Comment on attachment 455000
Patch

r=me

All red! I feel bad for taking away the ability to r+ this patch from Alex Christensen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852640</commentid>
    <comment_count>4</comment_count>
      <attachid>455074</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-18 00:50:37 -0700</bug_when>
    <thetext>Created attachment 455074
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852681</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 05:19:10 -0700</bug_when>
    <thetext>Committed r291477 (248593@main): &lt;https://commits.webkit.org/248593@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455074.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852682</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-18 05:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90481699&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454973</attachid>
            <date>2022-03-17 07:43:36 -0700</date>
            <delta_ts>2022-03-17 12:05:58 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-238024-20220317164334.patch</filename>
            <type>text/plain</type>
            <size>28022</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNmZWFjYzlhZTMyMDc4
MWIzNTc3NzlkOTkxOWFlZmM5YWFmMzlmYS4uNWYyOGQ5NzBkMGE2Mzk3MjcxYzFhZmRkOThkMGE0
M2FmMTk2ZWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAzLTE3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIGEg
d2ViZ2wgY29udGV4dCB3aGVuIGl0IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBh
IGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Lmg6CisKIDIwMjItMDMtMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJHTCBjb250ZXh0IGxvc3QgZXZlbnQgaXMgbm90IHNlbnQgYWdhaW4gZm9y
IGNvbnRleHRzIHRoYXQgYXJlIGxvc3QgYW5kIHJlc3RvcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxZjlhMzZk
ZjlmNWFiODEyZDcwOTZkMWZiMDBlY2ViYzJjN2RmOGIuLmU3MGM5MDkyZWI3NTVhZjJjOWVhZDJk
ODk3OTRhYTFlODcwMzE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMTcg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZWN5Y2xp
bmcgYSB3ZWJnbCBjb250ZXh0IHdoZW4gaXQgaGFzIGJlZW4gbG9zdCBhbmQgcmVzdG9yZWQgY2F1
c2VzIGEgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzODAyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWFy
a0NvbnRleHRMb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisK
IDIwMjItMDMtMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJHTCBjb250ZXh0IGxvc3QgZXZlbnQgaXMgbm90IHNlbnQgYWdhaW4gZm9yIGNvbnRl
eHRzIHRoYXQgYXJlIGxvc3QgYW5kIHJlc3RvcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDAxNTQz
YjVlOTBmNmZjMjNlOTZkYmZhYTQwMmE3ODU2M2I5MjFiNjUuLjQ1MGQ2NmM2ZjViNDY0YTgwM2M4
ZmQ3NmNjNjdlOTZjY2ZkMTYzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC02NDUyLDE1ICs2NDUy
LDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TG9zdEMKICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsK
ICAgICBtX2NvbnRleHRMb3N0TW9kZSA9IG1vZGU7CiAKLSAgICBpZiAobW9kZSA9PSBSZWFsTG9z
dENvbnRleHQpIHsKLSAgICAgICAgLy8gSW5mb3JtIHRoZSBlbWJlZGRlciB0aGF0IGEgbG9zdCBj
b250ZXh0IHdhcyByZWNlaXZlZC4gSW4gcmVzcG9uc2UsIHRoZSBlbWJlZGRlciBtaWdodAotICAg
ICAgICAvLyBkZWNpZGUgdG8gdGFrZSBhY3Rpb24gc3VjaCBhcyBhc2tpbmcgdGhlIHVzZXIgZm9y
IHBlcm1pc3Npb24gdG8gdXNlIFdlYkdMIGFnYWluLgotICAgICAgICBhdXRvKiBjYW52YXMgPSBo
dG1sQ2FudmFzKCk7Ci0gICAgICAgIGlmIChjYW52YXMpIHsKLSAgICAgICAgICAgIGlmIChSZWZQ
dHI8RnJhbWU+IGZyYW1lID0gY2FudmFzLT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250
ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOwotICAgICAgICB9Ci0gICAgfQogCiAg
ICAgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwogICAgIGxvc2VFeHRlbnNpb25zKG1vZGUp
OwpAQCAtNzc3MSwzMyArNzc2Miw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgaWYgKCFtX3Jlc3RvcmVBbGxvd2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQtPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKLQotICAgIHN3aXRjaCAoY29udGV4dExvc3RSZWFzb24p
IHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpOT19FUlJPUjoKLSAgICAgICAgLy8gVGhl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGltcGxlbWVudGF0aW9uIG1pZ2h0IG5vdCBmdWxseQot
ICAgICAgICAvLyBzdXBwb3J0IEdMX0FSQl9yb2J1c3RuZXNzIHNlbWFudGljcyB5ZXQuIEFsdGVy
bmF0aXZlbHksIHRoZQotICAgICAgICAvLyBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIG1p
Z2h0IGhhdmUgYmVlbiB1c2VkIHRvIGZvcmNlCi0gICAgICAgIC8vIGEgbG9zdCBjb250ZXh0Lgot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpHVUlMVFlfQ09OVEVY
VF9SRVNFVF9BUkI6Ci0gICAgICAgIC8vIFRoZSByZW5kZXJpbmcgY29udGV4dCBpcyBub3QgcmVz
dG9yZWQgaWYgdGhpcyBjb250ZXh0IHdhcwotICAgICAgICAvLyBndWlsdHkgb2YgY2F1c2luZyB0
aGUgZ3JhcGhpY3MgcmVzZXQuCi0gICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIldBUk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgY2F1c2VkIHRoZSBn
cmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3QgcmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTk5PQ0VOVF9DT05URVhU
X1JFU0VUX0FSQjoKLSAgICAgICAgLy8gQWx3YXlzIGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJl
c3RvcmVkLgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTktO
T1dOX0NPTlRFWFRfUkVTRVRfQVJCOgotICAgICAgICAvLyBXYXJuLiBJZGVhbGx5LCBwcm9tcHQg
dGhlIHVzZXIgdGVsbGluZyB0aGVtIHRoYXQgV2ViR0wKLSAgICAgICAgLy8gY29udGVudCBvbiB0
aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0bwotICAgICAgICAv
LyByZXNldCBhbmQgYXNrIHRoZW0gd2hldGhlciB0aGV5IHdhbnQgdG8gY29udGludWUgcnVubmlu
ZwotICAgICAgICAvLyB0aGUgY29udGVudC4gT25seSBpZiB0aGV5IHNheSAieWVzIiBzaG91bGQg
d2Ugc3RhcnQKLSAgICAgICAgLy8gYXR0ZW1wdGluZyB0byByZXN0b3JlIHRoZSBjb250ZXh0Lgot
ICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBX
ZWJHTCBjb250ZW50IG9uIHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBj
YXJkIHRvIHJlc2V0Iik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGF1dG8qIGNhbnZh
cyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoIWNhbnZhcykKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA3OTQzNWEzYWMyNDc1
NmY3ZjlkOTRhNTkyNmMyMDE2ZTkxMTY3MjI4Li40NWY1NTIyYjQ4NmVkMjRmZTFkZjA3OTgyYzFm
NzUwODI5YmQ2NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMzQwLDkgKzM0MCw2IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dXZWJHTChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4g
ZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBh
IFdlYkdMIGNhbnZhcyBpbnNpZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAot
ICAgIC8vIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWls
dC9pbm5vY2VuY2UgY29kZSAoc2VlIEdyYXBoaWNzQ29udGV4dEdMLmgpLgotICAgIHZpcnR1YWwg
dm9pZCBkaWRMb3NlV2ViR0xDb250ZXh0KGludCkgeyB9CiAgICAgdmlydHVhbCBXZWJHTExvYWRQ
b2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xM
b2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KICAgICB2aXJ0dWFsIFdlYkdMTG9hZFBv
bGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4g
V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5k
ZXggMzIyMDkxMzY1ZTBmYzZkMWIzNjU1ZTZlY2I5ZDg4ODI4NjI4NzMwMi4uZTMxNzFjMzczYTg4
ODJmMjBmMjg3MWIyZDllYTUxNmQ0MDkwOGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMzc1LDE0ICsxMzc1
LDYgQEAgcHVibGljOgogICAgIC8vIEhhcyBubyBvdGhlciBzaWRlLWVmZmVjdHMuCiAgICAgdmly
dHVhbCBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICAv
LyBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIE5vdGU6IFRoaXMgbWV0aG9kJ3MgYmVoYXZpb3Ig
ZGlmZmVycyBmcm9tIHRoZSBHTF9BUkJfcm9idXN0bmVzcwotICAgIC8vIHNwZWNpZmljYXRpb24g
aW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgLy8gVGhlIGltcGxlbWVudGF0aW9uIG11c3Qgbm90
IHJlc2V0IHRoZSBlcnJvciBzdGF0ZSBkdXJpbmcgdGhpcyBjYWxsLgotICAgIC8vIElmIGdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIgcmV0dXJucyBhbiBlcnJvciwgaXQgc2hvdWxkIGNvbnRpbnVl
Ci0gICAgLy8gcmV0dXJuaW5nIHRoZSBzYW1lIGVycm9yLiBSZXN0b3JpbmcgdGhlIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMIGlzIGhhbmRsZWQKLSAgICAvLyBleHRlcm5hbGx5LgotICAgIHZpcnR1
YWwgR0NHTGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPSAwOwogCiAgICAgLy8gR0xf
QU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNjdmYmM0NGZlYmRhZjYzZTlkMjhhMDg1ZTNj
ZmQ1MmYxYTgyOGRmZS4uNjNmNWQzOTZhNWMzN2JiZjFkNzEzOGFhNmY2ZTIwNzI2NWZjMzgwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTI5MjMsMTEgKzI5MjMsNiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhu
YW1lKSB8fCBtX2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1HTGludCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLXsKLSAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCiBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3Jt
R0xPYmplY3Qgc2hhZGVyKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZjRkYzg3ZGI1MmUwZTI5NzAwYTIwNzc5MzUx
MWFlMGFlOTU2YTIyZC4uYmUxMDRjNTU3YTZiN2ZlZjA4MzViOTk4YjQzNWVkNDY1ODgxZTU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzI5LDcgKzMyOSw2IEBAIHB1Ymxp
YzoKICAgICBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICBib29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBHQ0dMaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAy
MWU4MjlmYmQxMDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2Li40ODk2OTljNGVlM2NmNDA5
YTQzNzU3YWZlZjdhNDY1ZTM0Y2RmYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmNwcApAQCAtMTU5LDExICsxNTksNiBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6aXNFbmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gc3VwcG9ydHMo
bmFtZSk7CiB9CiAKLWludCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKQotewotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7
Ci19Ci0KIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hh
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCAyYzM3ZmFjOTY1
YzAyMTZkYTA1YWM1ZmI4ZWFhZWI2ODNkNDRhN2U2Li5iNzQwNmM0OTcwNmM2MDNlNmEzOWJhYmUx
ZTIzYzkzYzEwYjIwNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBA
IC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3Qg
U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7
CiAgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAw
OwogCkBAIC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBH
Q0dMdWludCBkaXZpc29yKSA9IDA7CiAKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCisgICAgLy8gRVhUIFJvYnVzdG5lc3MKICAgICB2aXJ0
dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIHZvaWQgKmRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhU
KEdDR0x1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0
ICpwYXJhbXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHBy
b2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDk5N2U3OWVlNWQ0YzE3ZTIxMjBiYjNk
ZjRlMDI1NTAyNjBhNGMzOGYuLjU0YjE3MDAxNTA5NTBlMWRiNjQ3MmNjY2FiMWFhOWM5NTY4ZTJh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTY2LDI2ICsxNjYsNiBA
QCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25z
dCBHQ0dMZW51bT4gLyogYnVmcyAqLykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1pbnQg
RXh0ZW5zaW9uc0dMT3BlbkdMRVM6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGNhbGwgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiwg
YnV0IGluc3RlYWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVC4KLSAgICAvLyBUaGUgcmV0dXJu
IGNvZGVzIGZyb20gdGhlIHR3byBleHRlbnNpb25zIGFyZSBpZGVudGljYWwgYW5kIHRoZWlyIHB1
cnBvc2UgaXMgdGhlIHNhbWUsIHNvIGl0Ci0gICAgLy8gbWF5IGJlIGJlc3QgdG8gcmVuYW1lIGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSB0byBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCkuCi0g
ICAgaWYgKG1fY29udGV4dFJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQotICAgICAgICByZXR1
cm4gbV9jb250ZXh0UmVzZXRTdGF0dXM7Ci0gICAgaWYgKG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzRVhUKSB7Ci0gICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IEdyYXBoaWNzQ29udGV4dEdM
OjpVTktOT1dOX0NPTlRFWFRfUkVTRVRfQVJCOwotICAgICAgICBpZiAobV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgICAgIHJlYXNvbkZvclJlc2V0ID0gbV9nbEdldEdy
YXBoaWNzUmVzZXRTdGF0dXNFWFQoKTsKLSAgICAgICAgaWYgKHJlYXNvbkZvclJlc2V0ICE9IEdM
X05PX0VSUk9SKQotICAgICAgICAgICAgbV9jb250ZXh0UmVzZXRTdGF0dXMgPSByZWFzb25Gb3JS
ZXNldDsKLSAgICAgICAgcmV0dXJuIHJlYXNvbkZvclJlc2V0OwotICAgIH0KLQotICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVhZG5QaXhlbHNFWFQo
aW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpCiB7
CiAgICAgaWYgKG1fZ2xSZWFkblBpeGVsc0VYVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
aAppbmRleCA5YmI1MmY5YmFhYWNiNTcxNmM0ZDAyYjliNWJmNzkxYTc4Zjc1MGUxLi4xZDg1NjY0
ZGVlZWU5NDA5OTczYTBjNDQyY2Y1NDVmMDQ1ZGI3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuaApAQCAtOTgsOSArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50
IGRpdmlzb3IpIG92ZXJyaWRlOwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAotICAg
IGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KICAgICAvLyBFWFQg
Um9idXN0bmVzcyAtIGV0YwogICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZv
aWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xz
aXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDM2M2U5NjE3NzA2ZDhmMWQ4NGQ5ZDc5YzkyZGQ5ZTAx
ZDAxOTczY2IuLjRhOWU4ZmFlMDM3ZWVmNDBkZWQ5ZjJjZWFmODcyZmExNThhNDNhZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzA3MCwxMSArMzA3MCw2IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQobmFtZSk7
CiB9CiAKLUdMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkKLXsKLSAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZl
cnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJuIGdl
dEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVChidWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKaW5kZXggZTg5OTdiMmU1MDQzZjYzNzYyMDE1ZWIxNTIyOTI3ODhjMzU5
NjUyNi4uNTNlMWQxZDRiYWVmZjhkZDI2OGI5ODI2NzQ5NzljNmQ5ZjU5MzEwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTM3Miw3ICszNzIsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lk
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBp
c0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgR0xpbnQgZ2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+KSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggNmNjOGE1MDg1MGQyYzBiNDcxNDVi
ZWEzZGI0NGZlMWM2NzQ5NzgxYi4uM2Y0ZTU0YmUyN2JhZjhlOWU3ZDk1YzQ3NWJiNGJlODQ1OTAw
N2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjg0
LDcgKzI4NCw2IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMy
X3QgcHJvZ3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90
IHByb2dyYW0sIHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxv
Y2tCaW5kaW5nKQogICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJv
Z3JhbSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRf
dCBwYXJhbXNTaXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5
bmNocm9ub3VzCi0gICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMy
X3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKICAgICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMy
X3Q+IGJ1ZnMpCiAgICAgdm9pZCBHZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CmluZGV4IDRhNTNmODg3MzZmOGUwYzllOWQ5ZDM4MDAxZmZlZDM1Mjk3N2NkODEuLjEwZWU5MjRm
MDQ1MDZhOGFjYWQzNTI0YjJiMTE0ZDljMGE4OGEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dl
bmVyYXRlZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzIxLDEzICsxMzIxLDYg
QEAKICAgICAgICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1
bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90
Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi0gICAgewotICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0g
eyB9OwotICAgICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Ci0gICAgfQogICAgIHZvaWQgZ2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKaW5kZXggZTQ1ZGZiZDQ4YWJkOWRlMmIwZDkwNDA3ZjZhOGQxZmJlNTQyNjM1YS4u
ZjQwNjgwYjA0MDk2MGQyNzI1NjE5YTM3N2VkZjMyZTZhNzVlNmQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyhJbWFnZUJ1ZmZlciYgYnUKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47CisgICAgV1RGTG9nQWx3YXlzKCJra2tpaSAlcyEgJXAiLCBfX0ZVTkNUSU9OX18sIHRo
aXMpOwogICAgIC8vIEZJWE1FOiB0aGUgYnVmZmVyIGlzICJyZWxhdGl2ZWx5IGVtcHR5IiBhbHdh
eXMsIGJ1dCBmb3IgY29uc2lzdGVuY3ksIHdlIG5lZWQgdG8gZW5zdXJlCiAgICAgLy8gbm8gcGVu
ZGluZyBvcGVyYXRpb25zIGFyZSB0YXJnZXRlZCBmb3IgdGhlIGBidWZmZXJgLgogICAgIGJ1ZmZl
ci5mbHVzaERyYXdpbmdDb250ZXh0KCk7CkBAIC0xNjAsOCArMTYxLDEzIEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXImIGJ1CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBidWZmZXIpCiB7Cis8PDw8PDw8
IFVwZGF0ZWQgdXBzdHJlYW0KICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1
cm47Cis9PT09PT09CisgICAgV1RGTG9nQWx3YXlzKCJra2tpaSAlcyEgJXAiLCBfX0ZVTkNUSU9O
X18sIHRoaXMpOworCis+Pj4+Pj4+IFN0YXNoZWQgY2hhbmdlcwogICAgIGJ1ZmZlci5mbHVzaERy
YXdpbmdDb250ZXh0KCk7CiAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
YnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXM6OlJlcGx5KCkp
OwogICAgIGlmICghc2VuZFJlc3VsdCkgewpAQCAtMjkxLDYgKzI5Nyw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ2hhbmdlZCgpCiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bWFya0NvbnRleHRMb3N0KCkKIHsKKyAgICBXVEZMb2dBbHdheXMo
Imtra2lpICVzISAlcCIsIF9fRlVOQ1RJT05fXywgdGhpcyk7CiAgICAgZGlzY29ubmVjdEdwdVBy
b2Nlc3NJZk5lZWRlZCgpOwogICAgIGZvcmNlQ29udGV4dExvc3QoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZjBiOGNhOThmOTBiMzE2ZmZkMDVkMzli
MzhlODJiMTNjYmJjNDY4ZC4uNzRmZTE3YmZhNGNjNjFmYzdmNDIyNjk3MTY2MzIxMWY3YWRjZjNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTMxNCw3ICsz
MTQsNiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkgZmluYWw7
CiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
IGZpbmFsOwogICAgIHZvaWQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3Jh
bSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxH
Q0dMaW50PiBwYXJhbXMpIGZpbmFsOwotICAgIEdDR0xpbnQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpIGZpbmFsOwogICAgIFN0cmluZyBnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAgICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdD
R0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5hbDsKICAgICB2b2lkIGdldEludGVybmFs
Zm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcAppbmRleCAxZjI5NjA2ZmJiMzgzNTRlMDg3NWU4NWU3M2RjNjg2YjUzOTE4ZWJlLi40
MzFhZGM5MzlhZGMyMzZhYzc3MjY1OWRhNTQ0MzNhMzIyZDMzZDMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAKQEAgLTIyNjcsMTcgKzIyNjcsNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDRwog
ICAgIH0KIH0KIAotR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkKLXsKLSAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owot
ICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSk7Ci0gICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKLSAgICAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwotICAgIH0KLSAgICByZXR1
cm4gcmV0dXJuVmFsdWU7Ci19Ci0KIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQog
ewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NjkyZWQzMjE3YTc2ODlm
OTE1NmM4NDg3NGQ0ZjUzNmY3ZWU4YjNjLi45M2RjYzk3ZjJlNzlmMGFiMjkyNjIwZDRlZDY5NjY5
ZTc4Y2ZkOGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMTcgIEtpbW1vIEtpbm51
bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZWN5Y2xpbmcgYSB3ZWJnbCBj
b250ZXh0IHdoZW4gaXQgaGFzIGJlZW4gbG9zdCBhbmQgcmVzdG9yZWQgY2F1c2VzIGEgY3Jhc2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODAyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViZ2wv
bWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXByZXZlbnQtZGVmYXVsdC5odG1s
OgorCiAyMDIyLTAzLTE3ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIGFjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sIGZhc3Rlci4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xj
b250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL21heC1h
Y3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQuaHRtbAppbmRl
eCAzNjg0N2E5MzQ0OTU0NTQwZGNmZDQ5ZDk2YTM1MmNiMTliODYzMzMzLi5lMzZmMDBlOGUwZGEz
MTQ3MDcyZWMyMTBhYzdkODlhZWJhMjY5N2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
bC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRl
eHRsb3N0LXByZXZlbnQtZGVmYXVsdC5odG1sCkBAIC0xLDIxICsxLDE0NyBAQAotPGRpdiBpZD0i
cmVzdWx0Ij5QQVNTIGlmIHRoZSBmaXJzdCBjb250ZXh0IHdhcyBsb3N0IGR1ZSB0byBjcmVhdGlu
ZyB0b28gbWFueSBXZWJHTCBjb250ZXh0cyBldmVuIHRob3VnaCA8Y29kZT5wcmV2ZW50RGVmYXVs
dCgpPC9jb2RlPiB3YXMgY2FsbGVkIHdoZW4gYSA8Y29kZT53ZWJnbGNvbnRleHRsb3N0PC9jb2Rl
PiBldmVudCB3YXMgZGlzcGF0Y2hlZC48L2Rpdj4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0icmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ii8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci19Ci0K
LXZhciBtYXhOdW1iZXJPZkFjdGl2ZUNvbnRleHRzID0gMTY7Ci12YXIgY29udGV4dHMgPSBbXTsK
LWZvciAodmFyIGkgPSAwOyBpIDw9IG1heE51bWJlck9mQWN0aXZlQ29udGV4dHM7IGkrKykgewot
ICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBj
YW52YXMuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsIGZ1bmN0aW9uKGV2ZW50
KSB7Ci0gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGlmICghY29udGV4
dHNbMF0uaXNDb250ZXh0TG9zdCgpKQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gIkZBSUwiOwotICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyJ1c2Ugc3Ry
aWN0IjsKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgZmlyc3QgbG9zaW5nIGNvbnRleHQsIHRyeWlu
ZyB0byByZXN0b3JlIGl0LCBhbmQgdGhlbiBkb2luZyBzb21ldGhpbmcgdG8gcmVhbGx5IGxvc2Ug
aXQgZG9lcyBub3QgY3Jhc2guIik7CisKKy8vIFRoZSB0ZXN0IHdvdWxkIGNyYXNoIHdpdGggZm9s
bG93aW5nIHNlcXVlbmNlOgorLy8gMS4gQ2F1c2UgYSByZWFsIGNvbnRleHQgbG9zdC4gSW4gdGhp
cyB0ZXN0LCAiZ3B1U3RhdHVzRmFpbHVyZSIuCisvLyAyLiBQYWdlIHdvdWxkIHRyeSB0byByZXN0
b3JlIHRoZSBjb250ZXh0LiBUaGlzIHdvdWxkIHN0YXJ0IHRoZSByZXN0b3JlIHRpbWVyLgorLy8g
My4gQmVmb3JlIHRoZSByZXN0b3JlIHRpbWVyIGZpcmVzLCByZWFsbHkgbG9zZSB0aGUgY29udGV4
dC4gSW4gdGhpcyB0ZXN0LCAibWFueUNvbnRleHQiLgorLy8gNC4gVGhlIHJlc3RvcmUgdGltZXIg
d291bGQgZmlyZSwgYW5kIHJlc3RvcmUgZnVuY3Rpb24gd291bGQgdXNlIG51bGxwdHIgY29udGV4
dC4KKwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsOworCithc3luYyBmdW5jdGlv
biB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCB0aW1lb3V0TVMpCit7CisgICAgdGlt
ZW91dE1TID0gdGltZW91dE1TIHx8IDUwMDsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBmdW5jdGlvbiB0aW1lb3V0SGFuZGxlcigpIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIs
IHsgb25jZTogdHJ1ZSB9KTsKKyAgICAgICAgICAgIHJlamVjdCgpOworICAgICAgICB9CisgICAg
ICAgIGNvbnN0IHJlamVjdElEID0gc2V0VGltZW91dCh0aW1lb3V0SGFuZGxlciwgdGltZW91dE1T
KTsKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkgeworICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHJlamVjdElEKTsKKyAgICAgICAgICAgIHJlc29sdmUoZXZlbnQpOworICAgICAgICB9
CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIHsg
b25jZTogdHJ1ZSB9KTsKICAgICB9KTsKLSAgICBjb250ZXh0c1tpXSA9IGNhbnZhcy5nZXRDb250
ZXh0KCJ3ZWJnbCIpOworfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yV2ViR0xDb250ZXh0UmVz
dG9yZWQoY2FudmFzLCB0aW1lb3V0TVMpCit7CisgICAgYXdhaXQgd2FpdEZvckV2ZW50KGNhbnZh
cywgIndlYmdsY29udGV4dHJlc3RvcmVkIiwgdGltZW91dE1TKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gd2FpdEZvcldlYkdMQ29udGV4dExvc3RBbmRSZXN0b3JlKGNhbnZhcywgdGltZW91dE1TKQor
eworICAgIGxldCBldmVudCA9IGF3YWl0IHdhaXRGb3JFdmVudChjYW52YXMsICJ3ZWJnbGNvbnRl
eHRsb3N0IiwgdGltZW91dE1TKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfQorCitm
dW5jdGlvbiB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkgeworICAgIHJldHVybiBPYmplY3Qua2V5
cyhzdWJjYXNlKS5tYXAoKGspID0+IGAke2t9OiAke3R5cGVvZiBzdWJjYXNlW2tdID09PSAiZnVu
Y3Rpb24iID8gc3ViY2FzZVtrXS5uYW1lIDogc3ViY2FzZVtrXX1gKS5qb2luKCIsICIpOworfQor
Cithc3luYyBmdW5jdGlvbiBydW5UZXN0KHN1YmNhc2UpCit7CisgICAgZGVidWcoYFJ1bm5pbmcg
dGVzdDogJHt0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSl9YCk7CisKKyAgICBjb25zdCBjYW52YXMg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSAx
OworICAgIGNhbnZhcy5oZWlnaHQgPSAxOworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChj
YW52YXMpOworICAgIGNvbnN0IFdFQkdMX2xvc2VfY29udGV4dCA9IHd0dS5nZXRFeHRlbnNpb25X
aXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2xvc2VfY29udGV4dCIpOworCisgICAgY29uc3Qg
d2ViZ2xjb250ZXh0bG9zdGFuZHJlc3RvcmUgPSB3YWl0Rm9yV2ViR0xDb250ZXh0TG9zdEFuZFJl
c3RvcmUoY2FudmFzKTsKKyAgICBjb25zdCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IHdhaXRGb3JX
ZWJHTENvbnRleHRSZXN0b3JlZChjYW52YXMpOworICAgIGxldCBleHBlY3RSZXN0b3JlSWdub3Jl
ZCA9IHN1YmNhc2UubG9zZU1ldGhvZChnbCwgV0VCR0xfbG9zZV9jb250ZXh0KTsKKworICAgIHRy
eSB7CisgICAgICAgIGF3YWl0IHdlYmdsY29udGV4dGxvc3RhbmRyZXN0b3JlOworICAgICAgICB0
ZXN0UGFzc2VkKCJHb3Qgd2ViZ2xjb250ZXh0bG9zdCBhbmQgcmVzdG9yZSB3YXMgYXR0ZW1wdGVk
LiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVGltZWQgb3V0IHdh
aXRpbmcgd2ViZ2xjb250ZXh0bG9zdCB0aGF0IHdvdWxkIGF0dGVtcHQgdG8gYmUgcmVzdG9yZWQu
Iik7CisgICAgfQorICAgIGV4cGVjdFJlc3RvcmVJZ25vcmVkIHw9IHN1YmNhc2UubG9zZU1ldGhv
ZDIoZ2wsIFdFQkdMX2xvc2VfY29udGV4dCk7CisKKyAgICB0cnkgeworICAgICAgICBhd2FpdCB3
ZWJnbGNvbnRleHRyZXN0b3JlZDsKKyAgICAgICAgaWYgKGV4cGVjdFJlc3RvcmVJZ25vcmVkKQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQg
aXQgd2FzIG5vdC4iKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmICghZXhwZWN0UmVz
dG9yZUlnbm9yZWQpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJEaWQgbm90IGV4cGVjdCByZXN0
b3JlIGJlIGlnbm9yZWQsIGJ1dCBpdCB3YXMuIik7CisKKyAgICB9CisgICAgaWYgKGV4cGVjdFJl
c3RvcmVJZ25vcmVkKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ2wuaXNDb250ZXh0TG9zdCgp
Iik7CisgICAgICAgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLkNPTlRFWFRfTE9TVF9X
RUJHTCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4
dExvc3QoKSIpOworICAgICAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJP
UiIpOworICAgIH0KKyAgICBzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIp
OworfQorCitmdW5jdGlvbiBsb3NlQ29udGV4dChnbCwgV0VCR0xfbG9zZV9jb250ZXh0KQorewor
ICAgIGlmICghV0VCR0xfbG9zZV9jb250ZXh0KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxk
IG5vdCBmaW5kIFdFQkdMX2xvc2VfY29udGV4dCBleHRlbnNpb24iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBXRUJHTF9sb3NlX2NvbnRleHQubG9zZUNvbnRleHQoKTsKKyAgICByZXR1
cm4gdHJ1ZTsgLy8gUmVxdWVzdCBmb3IgcmVzdG9yZSBpcyBpZ25vcmVkLgorfQorCitmdW5jdGlv
biBtYW55Q29udGV4dHMoKQoreworICAgIC8vIFRoaXMgY2F1c2VzIHRoZSBvbGRlciBjb250ZXh0
cyB0byBiZSBsb3N0LCBpbmNsdWRpbmcgdGhlIGZpcnN0IG9uZSB3ZSBjcmVhdGVkCisgICAgLy8g
Zm9yIHRlc3RpbmcuCisgICAgY29uc3QgY29udGV4dHMgPSBbXQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgNTA7ICsraSkKKyAgICAgICAgY29udGV4dHMucHVzaChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJ3ZWJnbCIpKTsKKyAgICByZXR1cm4gdHJ1ZTsgLy8g
UmVxdWVzdCBmb3IgcmVzdG9yZSBpcyBpZ25vcmVkLgorfQorCitmdW5jdGlvbiBncHVTdGF0dXNG
YWlsdXJlKGdsKQoreworICAgIGludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0
KCJHUFVTdGF0dXNGYWlsdXJlIiwgZ2wpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9C
SVQpOworICAgIHJldHVybiB0cnVlOyAvLyBSZXF1ZXN0IGZvciByZXN0b3JlIGlzIGhvbm9yZWQu
Cit9CisKK2Z1bmN0aW9uIGlkZW50aXR5KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Nv
bnN0IGxvc2VNZXRob2RzID0gWyBsb3NlQ29udGV4dCwgbWFueUNvbnRleHRzXTsKK2lmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgIGxvc2VNZXRob2RzLnB1c2goZ3B1U3RhdHVzRmFpbHVyZSk7CisK
K2NvbnN0IHN1YmNhc2VzID0gW107Citmb3IgKGNvbnN0IGxvc2VNZXRob2Qgb2YgbG9zZU1ldGhv
ZHMpCisgICAgZm9yIChjb25zdCBsb3NlTWV0aG9kMiBvZiBsb3NlTWV0aG9kcy5jb25jYXQoaWRl
bnRpdHkpKQorICAgICAgICBzdWJjYXNlcy5wdXNoKHtsb3NlTWV0aG9kLCBsb3NlTWV0aG9kMn0p
OworCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKGxldCBzdWJjYXNlIG9mIHN1
YmNhc2VzKQorICAgICAgICBhd2FpdCBydW5UZXN0KHN1YmNhc2UpOworICAgIGZpbmlzaFRlc3Qo
KTsKIH0KIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455000</attachid>
            <date>2022-03-17 12:06:05 -0700</date>
            <delta_ts>2022-03-18 00:50:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238024-20220317210603.patch</filename>
            <type>text/plain</type>
            <size>33932</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMzYzNhOTk5OGNkMzJj
ZDNkNTBkYWE0NDZhNjhkMWZiMDRhNTNkOC4uZjA5ODdkNjFmN2YxYTlhYjY5NTQwNTJiNDQ4YjNl
MWI3Zjc1Y2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAzLTE3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIGEg
d2ViZ2wgY29udGV4dCB3aGVuIGl0IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBh
IGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZWQgY29udGV4dCBsb3N0IG1ha2VzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1f
Y29udGV4dCA9IG51bGxwdHIKKyAgICAgICAgUmVhbCBjb250ZXh0IGxvc3QgcHJlc2VydmVzIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1fY29udGV4dC4KKworICAgICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkgdXNlZCBtX2NvbnRleHQuCisK
KyAgICAgICAgVGhlIGludGVudGlvbiB3YXMgdGhhdCBzaW11bGF0ZWQgY29udGV4dCBsb3N0IG5l
dmVyIGludm9rZXMgbWF5YmVSZXN0b3JlQ29udGV4dCgpCisgICAgICAgIGFzIHRoZSB0aW1lciB0
byBydW4gbWF5YmVSZXN0b3JlQ29udGV4dCgpIGlzIHN0YXJ0ZWQgb25seSBvbiByZWFsIGNvbnRl
eHQgbG9zdC4KKworICAgICAgICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnZva2Ugc2lt
dWxhdGVkIGNvbnRleHQgbG9zdCBhZnRlciBhIHJlYWwgY29udGV4dCBsb3N0LAorICAgICAgICBi
dXQgYmVmb3JlIHRoZSB0aW1lciB0cmlnZ2VycyBtYXliZVJlc3RvcmVDb250ZXh0KCkuCisKKyAg
ICAgICAgVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorICAgICAgICAxLiBMb3NlIHRoZSBjb250ZXh0
IHNvbWVob3cKKyAgICAgICAgMi4gV2FpdCBmb3Igd2ViZ2xjb250ZXh0bG9zdCwgdXNlIGV2ZW50
LnByZXZlbnREZWZhdWx0KCkgdG8gcmVxdWVzdCBhIHJlc3RvcmUuCisgICAgICAgIDMuIEJlZm9y
ZSByZXN0b3JlIGhhcHBlbnMsIGxvc2UgdGhlIGNvbnRleHQgdmlhIHNpbXVsYXRlZCBjb250ZXh0
IGxvc3QuCisgICAgICAgICAgIFRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgbWFueSBjb250
ZXh0cyBvciB2aWEgdGhlIFdFQkdMX2xvc2VfY29udGV4dC5sb3NlQ29udGV4dCgpLgorICAgICAg
ICA0LiBtYXliZVJlc3RvcmVDb250ZXh0KCkgd291bGQgcXVlcnkgbV9jb250ZXh0LT5nZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgZm9yCisgICAgICAgICAgIGNvbnNvbGUgbG9nIHJlYXNvbnMs
IHRyeWluZyB0byBleHBsYWluIHRvIHRoZSBkZXZlbG9wZXIgd2h5IHRoZSBjb250ZXh0IHdhcyBs
b3N0LgorICAgICAgICAgICBJbiBjYXNlIHNpbXVsYXRlZCBjb250ZXh0IGxvc3Qgc2V0IHRoZSBt
X2NvbnRleHQgPT0gbnVsbHB0ciwgdGhpcyB3b3VsZCBjcmFzaC4KKworICAgICAgICBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgaGFzIGxpa2VseSBub3QgYmVlbiBhY2N1cmF0ZSBmb3IgYW55
IHBsYXRmb3JtIGV2ZXIuCisgICAgICAgIEZvciBBTkdMRSwgaXQgaXMgdW5pbXBsZW1lbnRlZCBh
bmQgY2Fubm90IHBpbnBvaW50IHdoaWNoIGNvbnRleHQgY2F1c2VkIHRoZSBjb250ZXh0IGxvc3Qu
CisgICAgICAgIEp1c3QgcmVtb3ZlIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSB1c2UgZnJv
bSBtYXliZVJlc3RvcmVDb250ZXh0KCksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdGhlIGNyYXNo
LiBSZW1vdmUgaXQgYWxzbyBmcm9tIFdlYktpdCB1c2UgYWx0b2dldGhlciwgaXQgaXMgbmV2ZXIg
dXNlZCBmb3IgYW55dGhpbmcuCisKKyAgICAgICAgQWRkcyB0aGUgY2FzZSB0byB3ZWJnbC9tYXgt
YWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0bWwKKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjItMDMtMTcgIE9yaW9s
IEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IGNvZGUgZm9y
IGxvZ2ljYWwtdG8tcGh5c2ljYWwgbWFwcGluZ3MsIGFuZCBhZGQgcGh5c2ljYWwtdG8tbG9naWNh
bCBtYXBwaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWEzNTM3N2IyZWY2ODE2ZjdlMDcyZjBkOGY5MzhjMWQ3
ZmU4NjU0Li41ZGQyZGZlMTE4YmQzMDM2N2Y3ZTZmM2Q3NWMzZjlhMzY4Zjc4ZTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIGEgd2ViZ2wgY29udGV4dCB3aGVuIGl0
IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBhIGNyYXNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwMjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgR3JhcGhpY3NDb250ZXh0
R0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgaXQncyB1bnVzZWQgbm93LgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWFy
a0NvbnRleHRMb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisK
IDIwMjItMDMtMTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgQnVpbGQgYnJva2VuIG9uIG1hY09TIE1vbnRlcmV5IDEyLjMgLSBQYXNzS2l0
U1BJIHJlbGF0ZWQgZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDE1NDNiNWU5MGY2ZmMyM2U5
NmRiZmFhNDAyYTc4NTYzYjkyMWI2NS4uOGYwOTk0NWYxZGU0YzFmMTM1YzE0MzgxZjY2OWFlMTVj
YzViN2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTY0NTIsMTYgKzY0NTIsNiBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgIG1fY29udGV4dExvc3QgPSB0cnVlOwogICAgIG1fY29udGV4
dExvc3RNb2RlID0gbW9kZTsKIAotICAgIGlmIChtb2RlID09IFJlYWxMb3N0Q29udGV4dCkgewot
ICAgICAgICAvLyBJbmZvcm0gdGhlIGVtYmVkZGVyIHRoYXQgYSBsb3N0IGNvbnRleHQgd2FzIHJl
Y2VpdmVkLiBJbiByZXNwb25zZSwgdGhlIGVtYmVkZGVyIG1pZ2h0Ci0gICAgICAgIC8vIGRlY2lk
ZSB0byB0YWtlIGFjdGlvbiBzdWNoIGFzIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiB0
byB1c2UgV2ViR0wgYWdhaW4uCi0gICAgICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsK
LSAgICAgICAgaWYgKGNhbnZhcykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBjYW52YXMtPmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBkZXRhY2hBbmRS
ZW1vdmVBbGxPYmplY3RzKCk7CiAgICAgbG9zZUV4dGVuc2lvbnMobW9kZSk7CiAKQEAgLTc3NzEs
MzMgKzc3NjEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9y
ZUNvbnRleHQoKQogICAgIGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGNvbnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7Ci0KLSAgICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I6Ci0gICAgICAgIC8vIFRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBtaWdodCBub3QgZnVsbHkKLSAgICAgICAgLy8g
c3VwcG9ydCBHTF9BUkJfcm9idXN0bmVzcyBzZW1hbnRpY3MgeWV0LiBBbHRlcm5hdGl2ZWx5LCB0
aGUKLSAgICAgICAgLy8gV0VCR0xfbG9zZV9jb250ZXh0IGV4dGVuc2lvbiBtaWdodCBoYXZlIGJl
ZW4gdXNlZCB0byBmb3JjZQotICAgICAgICAvLyBhIGxvc3QgY29udGV4dC4KLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJC
OgotICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRleHQgaXMgbm90IHJlc3RvcmVkIGlmIHRo
aXMgY29udGV4dCB3YXMKLSAgICAgICAgLy8gZ3VpbHR5IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNz
IHJlc2V0LgotICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJX
QVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2Fy
ZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29udGV4dCIpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6
Ci0gICAgICAgIC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSByZXN0b3JlZC4KLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5LTk9XTl9DT05URVhU
X1JFU0VUX0FSQjoKLSAgICAgICAgLy8gV2Fybi4gSWRlYWxseSwgcHJvbXB0IHRoZSB1c2VyIHRl
bGxpbmcgdGhlbSB0aGF0IFdlYkdMCi0gICAgICAgIC8vIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWln
aHQgaGF2ZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8KLSAgICAgICAgLy8gcmVzZXQgYW5k
IGFzayB0aGVtIHdoZXRoZXIgdGhleSB3YW50IHRvIGNvbnRpbnVlIHJ1bm5pbmcKLSAgICAgICAg
Ly8gdGhlIGNvbnRlbnQuIE9ubHkgaWYgdGhleSBzYXkgInllcyIgc2hvdWxkIHdlIHN0YXJ0Ci0g
ICAgICAgIC8vIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KLSAgICAgICAgcHJp
bnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzogV2ViR0wgY29udGVu
dCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNl
dCIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2Fu
dmFzKCk7CiAgICAgaWYgKCFjYW52YXMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNzk0MzVhM2FjMjQ3NTZmN2Y5ZDk0YTU5
MjZjMjAxNmU5MTE2NzIyOC4uNDVmNTUyMmI0ODZlZDI0ZmUxZGYwNzk4MmMxZjc1MDgyOWJkNjVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0MCw5
ICszNDAsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBib29s
IGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQotICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBXZWJHTCBjYW52
YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQKLSAgICAvLyBub3Rp
ZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNl
IGNvZGUgKHNlZSBHcmFwaGljc0NvbnRleHRHTC5oKS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9z
ZVdlYkdMQ29udGV4dChpbnQpIHsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAgICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBv
bGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDMyMjA5MTM2
NWUwZmM2ZDFiMzY1NWU2ZWNiOWQ4ODgyODYyODczMDIuLjdkZWU2NmVjY2RmNjQxN2Y4Yjc0OTYw
ZmNkMWFhYjZiOTg0NzQwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTM3NSwxNSArMTM3NSw2IEBAIHB1Ymxp
YzoKICAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgogICAgIHZpcnR1YWwgYm9vbCBp
c0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgLy8gR0xfQVJCX3Jv
YnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJv
bSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUg
ZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51ZQotICAgIC8vIHJl
dHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQogICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKaW5kZXggNjdmYmM0NGZlYmRhZjYzZTlkMjhhMDg1ZTNjZmQ1MmYxYTgy
OGRmZS4uNjNmNWQzOTZhNWMzN2JiZjFkNzEzOGFhNmY2ZTIwNzI2NWZjMzgwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTI5MjMsMTEgKzI5MjMsNiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1HTGludCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLXsKLSAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKaW5kZXggZjRkYzg3ZGI1MmUwZTI5NzAwYTIwNzc5MzUxMWFlMGFlOTU2
YTIyZC4uYmUxMDRjNTU3YTZiN2ZlZjA4MzViOTk4YjQzNWVkNDY1ODgxZTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzI5LDcgKzMyOSw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29s
IGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAyMWU4MjlmYmQx
MDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2Li40ODk2OTljNGVlM2NmNDA5YTQzNzU3YWZl
ZjdhNDY1ZTM0Y2RmYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTU5LDExICsxNTksNiBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gc3VwcG9ydHMobmFtZSk7CiB9
CiAKLWludCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQotewotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KIFN0
cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCAyYzM3ZmFjOTY1YzAyMTZkYTA1
YWM1ZmI4ZWFhZWI2ODNkNDRhN2U2Li5iNzQwNmM0OTcwNmM2MDNlNmEzOWJhYmUxZTIzYzkzYzEw
YjIwNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC00Myw3ICs0
Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCkBAIC01
Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSA9IDA7CiAKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCisgICAgLy8gRVhUIFJvYnVzdG5lc3MKICAgICB2aXJ0dWFsIHZvaWQg
cmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IHZvaWQgKmRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDk5N2U3OWVlNWQ0YzE3ZTIxMjBiYjNkZjRlMDI1NTAy
NjBhNGMzOGYuLjU0YjE3MDAxNTA5NTBlMWRiNjQ3MmNjY2FiMWFhOWM5NTY4ZTJhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTY2LDI2ICsxNjYsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gLyogYnVmcyAqLykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1pbnQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIC8vIEZJWE1F
OiBUaGlzIGRvZXMgbm90IGNhbGwgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiwgYnV0IGluc3Rl
YWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVC4KLSAgICAvLyBUaGUgcmV0dXJuIGNvZGVzIGZy
b20gdGhlIHR3byBleHRlbnNpb25zIGFyZSBpZGVudGljYWwgYW5kIHRoZWlyIHB1cnBvc2UgaXMg
dGhlIHNhbWUsIHNvIGl0Ci0gICAgLy8gbWF5IGJlIGJlc3QgdG8gcmVuYW1lIGdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSB0byBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCkuCi0gICAgaWYgKG1f
Y29udGV4dFJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQotICAgICAgICByZXR1cm4gbV9jb250
ZXh0UmVzZXRTdGF0dXM7Ci0gICAgaWYgKG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKSB7
Ci0gICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTktOT1dO
X0NPTlRFWFRfUkVTRVRfQVJCOwotICAgICAgICBpZiAobV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgICAgIHJlYXNvbkZvclJlc2V0ID0gbV9nbEdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNFWFQoKTsKLSAgICAgICAgaWYgKHJlYXNvbkZvclJlc2V0ICE9IEdMX05PX0VSUk9S
KQotICAgICAgICAgICAgbV9jb250ZXh0UmVzZXRTdGF0dXMgPSByZWFzb25Gb3JSZXNldDsKLSAg
ICAgICAgcmV0dXJuIHJlYXNvbkZvclJlc2V0OwotICAgIH0KLQotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpCiB7CiAgICAgaWYg
KG1fZ2xSZWFkblBpeGVsc0VYVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA5
YmI1MmY5YmFhYWNiNTcxNmM0ZDAyYjliNWJmNzkxYTc4Zjc1MGUxLi4xZDg1NjY0ZGVlZWU5NDA5
OTczYTBjNDQyY2Y1NDVmMDQ1ZGI3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApA
QCAtOTgsOSArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAotICAgIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIGV0YwogICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IDM2M2U5NjE3NzA2ZDhmMWQ4NGQ5ZDc5YzkyZGQ5ZTAxZDAxOTczY2Iu
LjRhOWU4ZmFlMDM3ZWVmNDBkZWQ5ZjJjZWFmODcyZmExNThhNDNhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzA3MCwxMSArMzA3MCw2IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQobmFtZSk7CiB9CiAKLUdM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
LXsKLSAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJuIGdldEV4dGVuc2lv
bnMoKS5kcmF3QnVmZmVyc0VYVChidWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggZTg5OTdiMmU1MDQzZjYzNzYyMDE1ZWIxNTIyOTI3ODhjMzU5NjUyNi4uNTNl
MWQxZDRiYWVmZjhkZDI2OGI5ODI2NzQ5NzljNmQ5ZjU5MzEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKQEAgLTM3Miw3ICszNzIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc0V4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgR0xpbnQgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+KSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggNmNjOGE1MDg1MGQyYzBiNDcxNDViZWEzZGI0NGZl
MWM2NzQ5NzgxYi4uM2Y0ZTU0YmUyN2JhZjhlOWU3ZDk1YzQ3NWJiNGJlODQ1OTAwN2VmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjg0LDcgKzI4NCw2
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3Ry
ZWFtIHsKICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCiAgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQogICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
Ci0gICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAg
ICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMp
CiAgICAgdm9pZCBHZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IDRh
NTNmODg3MzZmOGUwYzllOWQ5ZDM4MDAxZmZlZDM1Mjk3N2NkODEuLjEwZWU5MjRmMDQ1MDZhOGFj
YWQzNTI0YjJiMTE0ZDljMGE4OGEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzIxLDEzICsxMzIxLDYgQEAKICAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi0gICAgewotICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OwotICAg
ICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Ci0gICAgfQogICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRl
eCBmMGI4Y2E5OGY5MGIzMTZmZmQwNWQzOWIzOGU4MmIxM2NiYmM0NjhkLi43NGZlMTdiZmE0Y2M2
MWZjN2Y0MjI2OTcxNjYzMjExZjdhZGNmM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtMzE0LDcgKzMxNCw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgR0NH
TGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwog
ICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZp
bmFsOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFy
YW1zKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDFmMjk2MDZmYmIzODM1NGUw
ODc1ZTg1ZTczZGM2ODZiNTM5MThlYmUuLjQzMWFkYzkzOWFkYzIzNmFjNzcyNjU5ZGE1NDQzM2Ez
MjJkMzNkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMjI2NywxNyArMjI2Nyw2IEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHCiAgICAgfQogfQogCi1HQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKLSAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJu
VmFsdWUpKTsKLSAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7Ci0gICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQogU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDhiYmNjNmRkMTgyN2ZmOGMxNDdiY2RmODBiZGMxMzhlNThhZjdhNTYuLmM1OWRk
ZWRjOWM1N2ZmMDUwYWM5NDFlNzg4Yjc0ZjQ4MDU0ZGMwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAyMi0wMy0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlY3ljbGluZyBhIHdlYmdsIGNvbnRleHQgd2hlbiBpdCBoYXMgYmVlbiBsb3N0IGFu
ZCByZXN0b3JlZCBjYXVzZXMgYSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ3JlYXRpbmcgZXhjZXNzaXZlIGFtb3VudCBvZiBjb250ZXh0cyB3
aWxsIGxvc2UgdGhlIG9sZGVzdCBjb250ZXh0IHZpYQorICAgICAgICAic2ltdWxhdGVkIGNvbnRl
eHQgbG9zdCIgbG9naWMsIG1ha2luZyB0aGUgY29udGV4dHMgbm9uLXJlc3RvcmFibGUuCisKKyAg
ICAgICAgUHJldmlvdXNseSB0aGUgdGVzdCB0cmllZCB0byB0ZXN0IHRoYXQgcmVxdWVzdGluZyBh
IHJlc3RvcmUgb24gYSBjb250ZXh0IHRoYXQKKyAgICAgICAgaGFkIHNpbXVsYXRlZCBjb250ZXh0
IGxvc3Qgd291bGQgbm90IHJlc3RvcmUuIEhvd2V2ZXIsIHRoZSB0ZXN0IHdhcyBpbnZhbGlkLAor
ICAgICAgICBhcyBpdCBhc3NlcnRlZCB0aGF0IHRoZSBjb250ZXh0IGlzIHN0aWxsIGxvc3QgaW1t
ZWRpYXRlbHkgYWZ0ZXIgcHJldmVudERlZmF1bHQoKToKKworICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgaWYgKCFjb250ZXh0c1swXS5pc0NvbnRleHRMb3N0KCkp
CisgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250
ZW50ID0gIkZBSUwiOworCisgICAgICAgIFRoaXMgaXMgbm90IGNvcnJlY3QsIGFzIHRoZSBwcmV2
ZW50RGVmYXVsdCgpIG9ubHkgaW5mb3JtcyB0aGUgYnJvd3NlcgorICAgICAgICB0aGF0IHRoZSBj
b250ZXh0IHNob3VsZCBiZSByZXN0b3JlZC4gVGhlIHJlc3RvcmUgaGFwcGVucyBhc3luY2hyb25v
dXNseS4KKworICAgICAgICBGaXggdGhlIHRlc3QgbG9naWMgYW5kIGFkZCBleHRyYSBjYXNlcy4g
TWFrZSB0aGUgbG9naWMgYXMgc3VjaDoKKyAgICAgICAgMS4gTG9zZSB0aGUgY29udGV4dCBpbiBz
b21lIHdheQorICAgICAgICAyLiBXYWl0IGZvciBjb250ZXh0IGxvc3QgZXZlbnQsIHJlcXVlc3Qg
cmVzdG9yZQorICAgICAgICAzLiBPcHRpb25hbGx5IGRvIHNvbWV0aGluZyB0aGF0IHdvdWxkIHRy
aWdnZXIgYW5vdGhlciB3YXkgb2YgbG9zaW5nIHRoZSBjb250ZXh0CisgICAgICAgIDQuIFJ1biBh
c3NlcnRpb25zIGFib3V0IGNvbnRleHQgYmVpbmcgc3RpbGwgZXhwZWN0ZWRseSBsb3N0CisKKyAg
ICAgICAgVGhlIGZhaWx1cmVzIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9uOgorICAgICAgICBGQUlM
IGdldEVycm9yIGV4cGVjdGVkOiBJTlZBTElEX09QRVJBVElPTi4gV2FzIE5PX0VSUk9SIDoKKyAg
ICAgICAgRkFJTCBnZXRFcnJvciBleHBlY3RlZDogQ09OVEVYVF9MT1NUX1dFQkdMLiBXYXMgTk9f
RVJST1IgOgorICAgICAgICBidWcgMjM2OTY1CisKKyAgICAgICAgRkFJTCBFeHBlY3RlZCByZXN0
b3JlIGJlIGlnbm9yZWQsIGJ1dCBpdCB3YXMgbm90LgorICAgICAgICBidWcgMjM4MDM0CisKKyAg
ICAgICAgKiB3ZWJnbC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVu
dC1kZWZhdWx0Lmh0bWw6CisKIDIwMjItMDMtMTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi14
eHguaHRtbCB0ZXN0cyBpbiBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1k
ZWZhdWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29udGV4
dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0CmluZGV4IDcx
NGE4YmUyMjZlZDVjNTlmY2Y5ZDY4ZTFmYjQzMmI3N2FhMTAzOTYuLmM5M2RjYzlkMTJkMmQyMmIz
NzM0Mzg0YTU5NjhlNjA0MzBjMjc1ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsL21h
eC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xj
b250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEsNzMgQEAK
LUNPTlNPTEUgTUVTU0FHRTogVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250ZXh0
cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuCi1QQVNTIGlm
IHRoZSBmaXJzdCBjb250ZXh0IHdhcyBsb3N0IGR1ZSB0byBjcmVhdGluZyB0b28gbWFueSBXZWJH
TCBjb250ZXh0cyBldmVuIHRob3VnaCBwcmV2ZW50RGVmYXVsdCgpIHdhcyBjYWxsZWQgd2hlbiBh
IHdlYmdsY29udGV4dGxvc3QgZXZlbnQgd2FzIGRpc3BhdGNoZWQuCitUZXN0IHRoYXQgZmlyc3Qg
bG9zaW5nIGNvbnRleHQsIHRyeWluZyB0byByZXN0b3JlIGl0LCBhbmQgdGhlbiBkb2luZyBzb21l
dGhpbmcgdG8gcmVhbGx5IGxvc2UgaXQgZG9lcyBub3QgY3Jhc2guCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworVEVTVCBDT01QTEVURTogNDIgUEFTUywgMTAgRkFJTAorCitSdW5uaW5n
IHRlc3Q6IGxvc2VNZXRob2Q6IGxvc2VDb250ZXh0LCBsb3NlTWV0aG9kMjogbG9zZUNvbnRleHQK
K1BBU1MgR290IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3RvcmUgd2FzIGF0dGVtcHRlZC4KK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBDT05URVhUX0xPU1RfV0VCR0wgOgorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDoKK1BBU1Mg
Z2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6CitSdW5uaW5nIHRlc3Q6IGxvc2VNZXRob2Q6IGxvc2VDb250ZXh0LCBs
b3NlTWV0aG9kMjogbWFueUNvbnRleHRzCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCBy
ZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Q09OVEVYVF9MT1NUX1dFQkdMIDoKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitSdW5uaW5nIHRlc3Q6
IGxvc2VNZXRob2Q6IGxvc2VDb250ZXh0LCBsb3NlTWV0aG9kMjogZ3B1U3RhdHVzRmFpbHVyZQor
UEFTUyBHb3Qgd2ViZ2xjb250ZXh0bG9zdCBhbmQgcmVzdG9yZSB3YXMgYXR0ZW1wdGVkLgorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IENPTlRFWFRfTE9TVF9XRUJHTCA6CitQQVNT
IGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBsb3NlQ29udGV4dCwg
bG9zZU1ldGhvZDI6IG5vdGhpbmcKK1BBU1MgR290IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3Rv
cmUgd2FzIGF0dGVtcHRlZC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBDT05U
RVhUX0xPU1RfV0VCR0wgOgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKK1J1bm5pbmcgdGVzdDogbG9z
ZU1ldGhvZDogbWFueUNvbnRleHRzLCBsb3NlTWV0aG9kMjogbG9zZUNvbnRleHQKK1BBU1MgR290
IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3RvcmUgd2FzIGF0dGVtcHRlZC4KK0ZBSUwgZ2V0RXJy
b3IgZXhwZWN0ZWQ6IENPTlRFWFRfTE9TVF9XRUJHTC4gV2FzIE5PX0VSUk9SIDoKK0ZBSUwgZ2V0
RXJyb3IgZXhwZWN0ZWQ6IElOVkFMSURfT1BFUkFUSU9OLiBXYXMgTk9fRVJST1IgOgorUEFTUyBn
bC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDoKK1J1bm5pbmcgdGVzdDogbG9zZU1ldGhvZDogbWFueUNvbnRleHRzLCBs
b3NlTWV0aG9kMjogbWFueUNvbnRleHRzCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCBy
ZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitGQUlMIGdldEVycm9yIGV4cGVjdGVkOiBDT05URVhUX0xP
U1RfV0VCR0wuIFdhcyBOT19FUlJPUiA6CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVl
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0
ZXN0OiBsb3NlTWV0aG9kOiBtYW55Q29udGV4dHMsIGxvc2VNZXRob2QyOiBncHVTdGF0dXNGYWls
dXJlCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQu
CitGQUlMIGdldEVycm9yIGV4cGVjdGVkOiBDT05URVhUX0xPU1RfV0VCR0wuIFdhcyBOT19FUlJP
UiA6CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBtYW55
Q29udGV4dHMsIGxvc2VNZXRob2QyOiBub3RoaW5nCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0
IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitGQUlMIGdldEVycm9yIGV4cGVjdGVkOiBDT05U
RVhUX0xPU1RfV0VCR0wuIFdhcyBOT19FUlJPUiA6CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBp
cyB0cnVlCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVu
bmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBncHVTdGF0dXNGYWlsdXJlLCBsb3NlTWV0aG9kMjogbG9z
ZUNvbnRleHQKK1BBU1MgR290IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3RvcmUgd2FzIGF0dGVt
cHRlZC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBDT05URVhUX0xPU1RfV0VC
R0wgOgorRkFJTCBnZXRFcnJvciBleHBlY3RlZDogSU5WQUxJRF9PUEVSQVRJT04uIFdhcyBOT19F
UlJPUiA6CitGQUlMIEV4cGVjdGVkIHJlc3RvcmUgYmUgaWdub3JlZCwgYnV0IGl0IHdhcyBub3Qu
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0
ZXN0OiBsb3NlTWV0aG9kOiBncHVTdGF0dXNGYWlsdXJlLCBsb3NlTWV0aG9kMjogbWFueUNvbnRl
eHRzCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQu
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogQ09OVEVYVF9MT1NUX1dFQkdMIDoK
K0ZBSUwgRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQgd2FzIG5vdC4KK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitSdW5uaW5nIHRlc3Q6IGxv
c2VNZXRob2Q6IGdwdVN0YXR1c0ZhaWx1cmUsIGxvc2VNZXRob2QyOiBncHVTdGF0dXNGYWlsdXJl
CitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogQ09OVEVYVF9MT1NUX1dFQkdMIDoKK0ZB
SUwgRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQgd2FzIG5vdC4KK1BBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitSdW5uaW5nIHRlc3Q6IGxvc2VN
ZXRob2Q6IGdwdVN0YXR1c0ZhaWx1cmUsIGxvc2VNZXRob2QyOiBub3RoaW5nCitQQVNTIEdvdCB3
ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogQ09OVEVYVF9MT1NUX1dFQkdMIDoKK0ZBSUwgRXhwZWN0ZWQg
cmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQgd2FzIG5vdC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvbWF4LWFj
dGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXByZXZlbnQtZGVmYXVsdC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXByZXZl
bnQtZGVmYXVsdC5odG1sCmluZGV4IDM2ODQ3YTkzNDQ5NTQ1NDBkY2ZkNDlkOTZhMzUyY2IxOWI4
NjMzMzMuLmIzYTIxMjZlY2FkZGNhNGFmY2JjY2ExNmJiNWU3ZDQyNTM0NWI3MzIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9z
dC1wcmV2ZW50LWRlZmF1bHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9tYXgtYWN0aXZl
LWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0bWwKQEAgLTEsMjEg
KzEsMTUyIEBACi08ZGl2IGlkPSJyZXN1bHQiPlBBU1MgaWYgdGhlIGZpcnN0IGNvbnRleHQgd2Fz
IGxvc3QgZHVlIHRvIGNyZWF0aW5nIHRvbyBtYW55IFdlYkdMIGNvbnRleHRzIGV2ZW4gdGhvdWdo
IDxjb2RlPnByZXZlbnREZWZhdWx0KCk8L2NvZGU+IHdhcyBjYWxsZWQgd2hlbiBhIDxjb2RlPndl
YmdsY29udGV4dGxvc3Q8L2NvZGU+IGV2ZW50IHdhcyBkaXNwYXRjaGVkLjwvZGl2PgorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLX0KLQotdmFyIG1heE51bWJlck9mQWN0aXZlQ29udGV4dHMgPSAxNjsK
LXZhciBjb250ZXh0cyA9IFtdOwotZm9yICh2YXIgaSA9IDA7IGkgPD0gbWF4TnVtYmVyT2ZBY3Rp
dmVDb250ZXh0czsgaSsrKSB7Ci0gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwotICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRs
b3N0IiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICAgICAgaWYgKCFjb250ZXh0c1swXS5pc0NvbnRleHRMb3N0KCkpCi0gICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSAiRkFJTCI7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworInVzZSBzdHJpY3QiOworZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBmaXJzdCBs
b3NpbmcgY29udGV4dCwgdHJ5aW5nIHRvIHJlc3RvcmUgaXQsIGFuZCB0aGVuIGRvaW5nIHNvbWV0
aGluZyB0byByZWFsbHkgbG9zZSBpdCBkb2VzIG5vdCBjcmFzaC4iKTsKKworLy8gVGhlIHRlc3Qg
d291bGQgY3Jhc2ggd2l0aCBmb2xsb3dpbmcgc2VxdWVuY2U6CisvLyAxLiBDYXVzZSBhIHJlYWwg
Y29udGV4dCBsb3N0LiBJbiB0aGlzIHRlc3QsICJncHVTdGF0dXNGYWlsdXJlIi4KKy8vIDIuIFBh
Z2Ugd291bGQgdHJ5IHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuIFRoaXMgd291bGQgc3RhcnQgdGhl
IHJlc3RvcmUgdGltZXIuCisvLyAzLiBCZWZvcmUgdGhlIHJlc3RvcmUgdGltZXIgZmlyZXMsIHJl
YWxseSBsb3NlIHRoZSBjb250ZXh0LiBJbiB0aGlzIHRlc3QsICJtYW55Q29udGV4dCIuCisvLyA0
LiBUaGUgcmVzdG9yZSB0aW1lciB3b3VsZCBmaXJlLCBhbmQgcmVzdG9yZSBmdW5jdGlvbiB3b3Vs
ZCB1c2UgbnVsbHB0ciBjb250ZXh0LgorCit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Z2w7CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIHRp
bWVvdXRNUykKK3sKKyAgICB0aW1lb3V0TVMgPSB0aW1lb3V0TVMgfHwgMjAwMDsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBmdW5jdGlvbiB0
aW1lb3V0SGFuZGxlcigpIHsKKyAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIGhhbmRsZXIsIHsgb25jZTogdHJ1ZSB9KTsKKyAgICAgICAgICAgIHJlamVj
dCgpOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHJlamVjdElEID0gc2V0VGltZW91dCh0aW1l
b3V0SGFuZGxlciwgdGltZW91dE1TKTsKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlcihldmVudCkg
eworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHJlamVjdElEKTsKKyAgICAgICAgICAgIHJlc29s
dmUoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWUsIGhhbmRsZXIsIHsgb25jZTogdHJ1ZSB9KTsKICAgICB9KTsKLSAgICBjb250ZXh0
c1tpXSA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIpOworfQorCithc3luYyBmdW5jdGlvbiB3
YWl0Rm9yV2ViR0xDb250ZXh0UmVzdG9yZWQoY2FudmFzLCB0aW1lb3V0TVMpCit7CisgICAgYXdh
aXQgd2FpdEZvckV2ZW50KGNhbnZhcywgIndlYmdsY29udGV4dHJlc3RvcmVkIiwgdGltZW91dE1T
KTsKK30KKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvcldlYkdMQ29udGV4dExvc3RBbmRSZXN0b3Jl
KGNhbnZhcywgdGltZW91dE1TKQoreworICAgIGxldCBldmVudCA9IGF3YWl0IHdhaXRGb3JFdmVu
dChjYW52YXMsICJ3ZWJnbGNvbnRleHRsb3N0IiwgdGltZW91dE1TKTsKKyAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworfQorCitmdW5jdGlvbiB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkgewor
ICAgIHJldHVybiBPYmplY3Qua2V5cyhzdWJjYXNlKS5tYXAoKGspID0+IGAke2t9OiAke3R5cGVv
ZiBzdWJjYXNlW2tdID09PSAiZnVuY3Rpb24iID8gc3ViY2FzZVtrXS5uYW1lIDogc3ViY2FzZVtr
XX1gKS5qb2luKCIsICIpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KHN1YmNhc2UpCit7
CisgICAgZGVidWcoYFJ1bm5pbmcgdGVzdDogJHt0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSl9YCk7
CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
KyAgICBjYW52YXMud2lkdGggPSAxOworICAgIGNhbnZhcy5oZWlnaHQgPSAxOworICAgIGdsID0g
d3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIGNvbnN0IFdFQkdMX2xvc2VfY29udGV4
dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhlcyhnbCwgIldFQkdMX2xvc2VfY29u
dGV4dCIpOworCisgICAgY29uc3Qgd2ViZ2xjb250ZXh0bG9zdGFuZHJlc3RvcmUgPSB3YWl0Rm9y
V2ViR0xDb250ZXh0TG9zdEFuZFJlc3RvcmUoY2FudmFzKTsKKyAgICBjb25zdCB3ZWJnbGNvbnRl
eHRyZXN0b3JlZCA9IHdhaXRGb3JXZWJHTENvbnRleHRSZXN0b3JlZChjYW52YXMpOworICAgIGxl
dCBleHBlY3RSZXN0b3JlSWdub3JlZCA9IHN1YmNhc2UubG9zZU1ldGhvZChnbCwgV0VCR0xfbG9z
ZV9jb250ZXh0KTsKKworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IHdlYmdsY29udGV4dGxvc3Rh
bmRyZXN0b3JlOworICAgICAgICB0ZXN0UGFzc2VkKCJHb3Qgd2ViZ2xjb250ZXh0bG9zdCBhbmQg
cmVzdG9yZSB3YXMgYXR0ZW1wdGVkLiIpOworICAgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5DT05URVhUX0xPU1RfV0VCR0wpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYg
KGUpCisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB0ZXN0RmFpbGVkKCJUaW1lZCBvdXQg
d2FpdGluZyB3ZWJnbGNvbnRleHRsb3N0IHRoYXQgd291bGQgYXR0ZW1wdCB0byBiZSByZXN0b3Jl
ZC4iKTsKKyAgICB9CisgICAgZXhwZWN0UmVzdG9yZUlnbm9yZWQgPSBzdWJjYXNlLmxvc2VNZXRo
b2QyKGdsLCBXRUJHTF9sb3NlX2NvbnRleHQpIHx8IGV4cGVjdFJlc3RvcmVJZ25vcmVkOworCisg
ICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgd2ViZ2xjb250ZXh0cmVzdG9yZWQ7CisgICAgICAgIGlm
IChleHBlY3RSZXN0b3JlSWdub3JlZCkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVk
IHJlc3RvcmUgYmUgaWdub3JlZCwgYnV0IGl0IHdhcyBub3QuIik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUpCisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICBp
ZiAoIWV4cGVjdFJlc3RvcmVJZ25vcmVkKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiRGlkIG5v
dCBleHBlY3QgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQgd2FzLiIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImdsLmlzQ29udGV4dExvc3QoKSIpOworICAgIH0K
KworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK30KKworZnVuY3Rp
b24gbG9zZUNvbnRleHQoZ2wsIFdFQkdMX2xvc2VfY29udGV4dCkKK3sKKyAgICBpZiAoIVdFQkdM
X2xvc2VfY29udGV4dCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgZmluZCBXRUJH
TF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bGV0IHdhc0xvc3QgPSBnbC5pc0NvbnRleHRMb3N0KCk7CisgICAgV0VCR0xfbG9zZV9jb250ZXh0
Lmxvc2VDb250ZXh0KCk7CisgICAgaWYgKHdhc0xvc3QpCisgICAgICAgIHd0dS5nbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gdHJ1ZTsgLy8gUmVx
dWVzdCBmb3IgcmVzdG9yZSBpcyBpZ25vcmVkLgorfQorCitmdW5jdGlvbiBtYW55Q29udGV4dHMo
KQoreworICAgIC8vIFRoaXMgY2F1c2VzIHRoZSBvbGRlciBjb250ZXh0cyB0byBiZSBsb3N0LCBp
bmNsdWRpbmcgdGhlIGZpcnN0IG9uZSB3ZSBjcmVhdGVkCisgICAgLy8gZm9yIHRlc3RpbmcuCisg
ICAgY29uc3QgY29udGV4dHMgPSBbXQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkK
KyAgICAgICAgY29udGV4dHMucHVzaChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5n
ZXRDb250ZXh0KCJ3ZWJnbCIpKTsKKyAgICByZXR1cm4gdHJ1ZTsgLy8gUmVxdWVzdCBmb3IgcmVz
dG9yZSBpcyBpZ25vcmVkLgorfQorCitmdW5jdGlvbiBncHVTdGF0dXNGYWlsdXJlKGdsKQorewor
ICAgIGludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xDb250ZXh0KCJHUFVTdGF0dXNGYWls
dXJlIiwgZ2wpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHJldHVy
biB0cnVlOyAvLyBSZXF1ZXN0IGZvciByZXN0b3JlIGlzIGhvbm9yZWQuCit9CisKK2Z1bmN0aW9u
IG5vdGhpbmcoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3QgbG9zZU1ldGhvZHMg
PSBbbG9zZUNvbnRleHQsIG1hbnlDb250ZXh0c107CitpZiAod2luZG93LmludGVybmFscykKKyAg
ICBsb3NlTWV0aG9kcy5wdXNoKGdwdVN0YXR1c0ZhaWx1cmUpOworCitjb25zdCBzdWJjYXNlcyA9
IFtdOworZm9yIChjb25zdCBsb3NlTWV0aG9kIG9mIGxvc2VNZXRob2RzKQorICAgIGZvciAoY29u
c3QgbG9zZU1ldGhvZDIgb2YgbG9zZU1ldGhvZHMuY29uY2F0KG5vdGhpbmcpKQorICAgICAgICBz
dWJjYXNlcy5wdXNoKHtsb3NlTWV0aG9kLCBsb3NlTWV0aG9kMn0pOworCithc3luYyBmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBmb3IgKGxldCBzdWJjYXNlIG9mIHN1YmNhc2VzKQorICAgICAgICBh
d2FpdCBydW5UZXN0KHN1YmNhc2UpOworICAgIGZpbmlzaFRlc3QoKTsKIH0KIDwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455074</attachid>
            <date>2022-03-18 00:50:37 -0700</date>
            <delta_ts>2022-03-18 05:19:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238024-20220318095035.patch</filename>
            <type>text/plain</type>
            <size>34751</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMzYzNhOTk5OGNkMzJj
ZDNkNTBkYWE0NDZhNjhkMWZiMDRhNTNkOC4uZDg3YjMzNjhhYTRiZjZhYTVjNzQyNDExNDdiNDU5
YTgwNWQ5ZDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAzLTE3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIGEg
d2ViZ2wgY29udGV4dCB3aGVuIGl0IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBh
IGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBT
aW11bGF0ZWQgY29udGV4dCBsb3N0IG1ha2VzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1f
Y29udGV4dCA9IG51bGxwdHIKKyAgICAgICAgUmVhbCBjb250ZXh0IGxvc3QgcHJlc2VydmVzIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1fY29udGV4dC4KKworICAgICAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkgdXNlZCBtX2NvbnRleHQuCisK
KyAgICAgICAgVGhlIGludGVudGlvbiB3YXMgdGhhdCBzaW11bGF0ZWQgY29udGV4dCBsb3N0IG5l
dmVyIGludm9rZXMgbWF5YmVSZXN0b3JlQ29udGV4dCgpCisgICAgICAgIGFzIHRoZSB0aW1lciB0
byBydW4gbWF5YmVSZXN0b3JlQ29udGV4dCgpIGlzIHN0YXJ0ZWQgb25seSBvbiByZWFsIGNvbnRl
eHQgbG9zdC4KKworICAgICAgICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnZva2Ugc2lt
dWxhdGVkIGNvbnRleHQgbG9zdCBhZnRlciBhIHJlYWwgY29udGV4dCBsb3N0LAorICAgICAgICBi
dXQgYmVmb3JlIHRoZSB0aW1lciB0cmlnZ2VycyBtYXliZVJlc3RvcmVDb250ZXh0KCkuCisKKyAg
ICAgICAgVGhlIHNlcXVlbmNlIHdvdWxkIGJlOgorICAgICAgICAxLiBMb3NlIHRoZSBjb250ZXh0
IHNvbWVob3cKKyAgICAgICAgMi4gV2FpdCBmb3Igd2ViZ2xjb250ZXh0bG9zdCwgdXNlIGV2ZW50
LnByZXZlbnREZWZhdWx0KCkgdG8gcmVxdWVzdCBhIHJlc3RvcmUuCisgICAgICAgIDMuIEJlZm9y
ZSByZXN0b3JlIGhhcHBlbnMsIGxvc2UgdGhlIGNvbnRleHQgdmlhIHNpbXVsYXRlZCBjb250ZXh0
IGxvc3QuCisgICAgICAgICAgIFRoaXMgY2FuIGJlIGRvbmUgYnkgY3JlYXRpbmcgbWFueSBjb250
ZXh0cyBvciB2aWEgdGhlIFdFQkdMX2xvc2VfY29udGV4dC5sb3NlQ29udGV4dCgpLgorICAgICAg
ICA0LiBtYXliZVJlc3RvcmVDb250ZXh0KCkgd291bGQgcXVlcnkgbV9jb250ZXh0LT5nZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgZm9yCisgICAgICAgICAgIGNvbnNvbGUgbG9nIHJlYXNvbnMs
IHRyeWluZyB0byBleHBsYWluIHRvIHRoZSBkZXZlbG9wZXIgd2h5IHRoZSBjb250ZXh0IHdhcyBs
b3N0LgorICAgICAgICAgICBJbiBjYXNlIHNpbXVsYXRlZCBjb250ZXh0IGxvc3Qgc2V0IHRoZSBt
X2NvbnRleHQgPT0gbnVsbHB0ciwgdGhpcyB3b3VsZCBjcmFzaC4KKworICAgICAgICBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgaGFzIGxpa2VseSBub3QgYmVlbiBhY2N1cmF0ZSBmb3IgYW55
IHBsYXRmb3JtIGV2ZXIuCisgICAgICAgIEZvciBBTkdMRSwgaXQgaXMgdW5pbXBsZW1lbnRlZCBh
bmQgY2Fubm90IHBpbnBvaW50IHdoaWNoIGNvbnRleHQgY2F1c2VkIHRoZSBjb250ZXh0IGxvc3Qu
CisgICAgICAgIEp1c3QgcmVtb3ZlIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSB1c2UgZnJv
bSBtYXliZVJlc3RvcmVDb250ZXh0KCksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdGhlIGNyYXNo
LiBSZW1vdmUgaXQgYWxzbyBmcm9tIFdlYktpdCB1c2UgYWx0b2dldGhlciwgaXQgaXMgbmV2ZXIg
dXNlZCBmb3IgYW55dGhpbmcuCisKKyAgICAgICAgQWRkcyB0aGUgY2FzZSB0byB3ZWJnbC9tYXgt
YWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0Lmh0bWwKKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisKIDIwMjItMDMtMTcgIE9yaW9s
IEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IGNvZGUgZm9y
IGxvZ2ljYWwtdG8tcGh5c2ljYWwgbWFwcGluZ3MsIGFuZCBhZGQgcGh5c2ljYWwtdG8tbG9naWNh
bCBtYXBwaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWEzNTM3N2IyZWY2ODE2ZjdlMDcyZjBkOGY5MzhjMWQ3
ZmU4NjU0Li5kMzA0MDIzYmY4OWU3YmNhZWJjYmJhMTdjM2Q1MDI2ODFhMDY3MzM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVjeWNsaW5nIGEgd2ViZ2wgY29udGV4dCB3aGVuIGl0
IGhhcyBiZWVuIGxvc3QgYW5kIHJlc3RvcmVkIGNhdXNlcyBhIGNyYXNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwMjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBSZW1vdmUgR3JhcGhpY3NDb250ZXh0
R0w6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgaXQncyB1bnVzZWQgbm93LgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAgIChnZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWFy
a0NvbnRleHRMb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisK
IDIwMjItMDMtMTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgQnVpbGQgYnJva2VuIG9uIG1hY09TIE1vbnRlcmV5IDEyLjMgLSBQYXNzS2l0
U1BJIHJlbGF0ZWQgZXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDE1NDNiNWU5MGY2ZmMyM2U5
NmRiZmFhNDAyYTc4NTYzYjkyMWI2NS4uOGYwOTk0NWYxZGU0YzFmMTM1YzE0MzgxZjY2OWFlMTVj
YzViN2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTY0NTIsMTYgKzY0NTIsNiBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgIG1fY29udGV4dExvc3QgPSB0cnVlOwogICAgIG1fY29udGV4
dExvc3RNb2RlID0gbW9kZTsKIAotICAgIGlmIChtb2RlID09IFJlYWxMb3N0Q29udGV4dCkgewot
ICAgICAgICAvLyBJbmZvcm0gdGhlIGVtYmVkZGVyIHRoYXQgYSBsb3N0IGNvbnRleHQgd2FzIHJl
Y2VpdmVkLiBJbiByZXNwb25zZSwgdGhlIGVtYmVkZGVyIG1pZ2h0Ci0gICAgICAgIC8vIGRlY2lk
ZSB0byB0YWtlIGFjdGlvbiBzdWNoIGFzIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiB0
byB1c2UgV2ViR0wgYWdhaW4uCi0gICAgICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsK
LSAgICAgICAgaWYgKGNhbnZhcykgewotICAgICAgICAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBjYW52YXMtPmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBkZXRhY2hBbmRS
ZW1vdmVBbGxPYmplY3RzKCk7CiAgICAgbG9zZUV4dGVuc2lvbnMobW9kZSk7CiAKQEAgLTc3NzEs
MzMgKzc3NjEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9y
ZUNvbnRleHQoKQogICAgIGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IGNvbnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCk7Ci0KLSAgICBzd2l0Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7Ci0gICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I6Ci0gICAgICAgIC8vIFRoZSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBtaWdodCBub3QgZnVsbHkKLSAgICAgICAgLy8g
c3VwcG9ydCBHTF9BUkJfcm9idXN0bmVzcyBzZW1hbnRpY3MgeWV0LiBBbHRlcm5hdGl2ZWx5LCB0
aGUKLSAgICAgICAgLy8gV0VCR0xfbG9zZV9jb250ZXh0IGV4dGVuc2lvbiBtaWdodCBoYXZlIGJl
ZW4gdXNlZCB0byBmb3JjZQotICAgICAgICAvLyBhIGxvc3QgY29udGV4dC4KLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJC
OgotICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRleHQgaXMgbm90IHJlc3RvcmVkIGlmIHRo
aXMgY29udGV4dCB3YXMKLSAgICAgICAgLy8gZ3VpbHR5IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNz
IHJlc2V0LgotICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJX
QVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2Fy
ZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29udGV4dCIpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkI6
Ci0gICAgICAgIC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSByZXN0b3JlZC4KLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5LTk9XTl9DT05URVhU
X1JFU0VUX0FSQjoKLSAgICAgICAgLy8gV2Fybi4gSWRlYWxseSwgcHJvbXB0IHRoZSB1c2VyIHRl
bGxpbmcgdGhlbSB0aGF0IFdlYkdMCi0gICAgICAgIC8vIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWln
aHQgaGF2ZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8KLSAgICAgICAgLy8gcmVzZXQgYW5k
IGFzayB0aGVtIHdoZXRoZXIgdGhleSB3YW50IHRvIGNvbnRpbnVlIHJ1bm5pbmcKLSAgICAgICAg
Ly8gdGhlIGNvbnRlbnQuIE9ubHkgaWYgdGhleSBzYXkgInllcyIgc2hvdWxkIHdlIHN0YXJ0Ci0g
ICAgICAgIC8vIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KLSAgICAgICAgcHJp
bnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzogV2ViR0wgY29udGVu
dCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNl
dCIpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2Fu
dmFzKCk7CiAgICAgaWYgKCFjYW52YXMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNzk0MzVhM2FjMjQ3NTZmN2Y5ZDk0YTU5
MjZjMjAxNmU5MTE2NzIyOC4uNDVmNTUyMmI0ODZlZDI0ZmUxZGYwNzk4MmMxZjc1MDgyOWJkNjVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM0MCw5
ICszNDAsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBib29s
IGFsbG93V2ViR0woYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQotICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBXZWJHTCBjYW52
YXMgaW5zaWRlIHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQKLSAgICAvLyBub3Rp
ZmljYXRpb24gd2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNl
IGNvZGUgKHNlZSBHcmFwaGljc0NvbnRleHRHTC5oKS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9z
ZVdlYkdMQ29udGV4dChpbnQpIHsgfQogICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAgICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBv
bGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDMyMjA5MTM2
NWUwZmM2ZDFiMzY1NWU2ZWNiOWQ4ODgyODYyODczMDIuLjdkZWU2NmVjY2RmNjQxN2Y4Yjc0OTYw
ZmNkMWFhYjZiOTg0NzQwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTM3NSwxNSArMTM3NSw2IEBAIHB1Ymxp
YzoKICAgICAvLyBIYXMgbm8gb3RoZXIgc2lkZS1lZmZlY3RzLgogICAgIHZpcnR1YWwgYm9vbCBp
c0V4dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgLy8gR0xfQVJCX3Jv
YnVzdG5lc3MKLSAgICAvLyBOb3RlOiBUaGlzIG1ldGhvZCdzIGJlaGF2aW9yIGRpZmZlcnMgZnJv
bSB0aGUgR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb2xs
b3dpbmcgd2F5OgotICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG5vdCByZXNldCB0aGUg
ZXJyb3Igc3RhdGUgZHVyaW5nIHRoaXMgY2FsbC4KLSAgICAvLyBJZiBnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCIHJldHVybnMgYW4gZXJyb3IsIGl0IHNob3VsZCBjb250aW51ZQotICAgIC8vIHJl
dHVybmluZyB0aGUgc2FtZSBlcnJvci4gUmVzdG9yaW5nIHRoZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCBpcyBoYW5kbGVkCi0gICAgLy8gZXh0ZXJuYWxseS4KLSAgICB2aXJ0dWFsIEdDR0xpbnQg
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID0gMDsKLQogICAgIC8vIEdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKaW5kZXggNjdmYmM0NGZlYmRhZjYzZTlkMjhhMDg1ZTNjZmQ1MmYxYTgy
OGRmZS4uNjNmNWQzOTZhNWMzN2JiZjFkNzEzOGFhNmY2ZTIwNzI2NWZjMzgwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTI5MjMsMTEgKzI5MjMsNiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucyhuYW1lKSB8fCBt
X2VuYWJsZWRFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCi1HTGludCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKLXsKLSAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0R0w6Ok5PX0VSUk9SOwotfQotCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3Qg
c2hhZGVyKQogewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKaW5kZXggZjRkYzg3ZGI1MmUwZTI5NzAwYTIwNzc5MzUxMWFlMGFlOTU2
YTIyZC4uYmUxMDRjNTU3YTZiN2ZlZjA4MzViOTk4YjQzNWVkNDY1ODgxZTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzI5LDcgKzMyOSw2IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29s
IGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBHQ0dMaW50
IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCdWZm
ZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAyMWU4MjlmYmQx
MDFkZjZkNDY5MzE2ZjlkMjljZWQ4NmI0YWM5NjA2Li40ODk2OTljNGVlM2NmNDA5YTQzNzU3YWZl
ZjdhNDY1ZTM0Y2RmYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTU5LDExICsxNTksNiBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6aXNF
bmFibGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gc3VwcG9ydHMobmFtZSk7CiB9
CiAKLWludCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKQotewotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRHTDo6Tk9fRVJST1I7Ci19Ci0KIFN0
cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaAppbmRleCAyYzM3ZmFjOTY1YzAyMTZkYTA1
YWM1ZmI4ZWFhZWI2ODNkNDRhN2U2Li5iNzQwNmM0OTcwNmM2MDNlNmEzOWJhYmUxZTIzYzkzYzEw
YjIwNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5oCkBAIC00Myw3ICs0
Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIGVuc3VyZUVuYWJsZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIGlzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykgPSAwOwogCkBAIC01
Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKSA9IDA7CiAKLSAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCisgICAgLy8gRVhUIFJvYnVzdG5lc3MKICAgICB2aXJ0dWFsIHZvaWQg
cmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUs
IHZvaWQgKmRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDR0x1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0NHTHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDk5N2U3OWVlNWQ0YzE3ZTIxMjBiYjNkZjRlMDI1NTAy
NjBhNGMzOGYuLjU0YjE3MDAxNTA5NTBlMWRiNjQ3MmNjY2FiMWFhOWM5NTY4ZTJhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMTY2LDI2ICsxNjYsNiBAQCB2b2lkIEV4
dGVuc2lvbnNHTE9wZW5HTEVTOjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gLyogYnVmcyAqLykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1pbnQgRXh0ZW5zaW9u
c0dMT3BlbkdMRVM6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIC8vIEZJWE1F
OiBUaGlzIGRvZXMgbm90IGNhbGwgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiwgYnV0IGluc3Rl
YWQgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVC4KLSAgICAvLyBUaGUgcmV0dXJuIGNvZGVzIGZy
b20gdGhlIHR3byBleHRlbnNpb25zIGFyZSBpZGVudGljYWwgYW5kIHRoZWlyIHB1cnBvc2UgaXMg
dGhlIHNhbWUsIHNvIGl0Ci0gICAgLy8gbWF5IGJlIGJlc3QgdG8gcmVuYW1lIGdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSB0byBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCkuCi0gICAgaWYgKG1f
Y29udGV4dFJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQotICAgICAgICByZXR1cm4gbV9jb250
ZXh0UmVzZXRTdGF0dXM7Ci0gICAgaWYgKG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKSB7
Ci0gICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTktOT1dO
X0NPTlRFWFRfUkVTRVRfQVJCOwotICAgICAgICBpZiAobV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgICAgIHJlYXNvbkZvclJlc2V0ID0gbV9nbEdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNFWFQoKTsKLSAgICAgICAgaWYgKHJlYXNvbkZvclJlc2V0ICE9IEdMX05PX0VSUk9S
KQotICAgICAgICAgICAgbV9jb250ZXh0UmVzZXRTdGF0dXMgPSByZWFzb25Gb3JSZXNldDsKLSAg
ICAgICAgcmV0dXJuIHJlYXNvbkZvclJlc2V0OwotICAgIH0KLQotICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpCiB7CiAgICAgaWYg
KG1fZ2xSZWFkblBpeGVsc0VYVCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAppbmRleCA5
YmI1MmY5YmFhYWNiNTcxNmM0ZDAyYjliNWJmNzkxYTc4Zjc1MGUxLi4xZDg1NjY0ZGVlZWU5NDA5
OTczYTBjNDQyY2Y1NDVmMDQ1ZGI3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaApA
QCAtOTgsOSArOTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0x2
b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB2
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3Ip
IG92ZXJyaWRlOwogCi0gICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAotICAgIGludCBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgb3ZlcnJpZGU7Ci0KICAgICAvLyBFWFQgUm9idXN0bmVz
cyAtIGV0YwogICAgIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0blVu
aWZvcm1mdkVYVChHQ0dMdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDR0xzaXplaSBidWZT
aXplLCBmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IDM2M2U5NjE3NzA2ZDhmMWQ4NGQ5ZDc5YzkyZGQ5ZTAxZDAxOTczY2Iu
LjRhOWU4ZmFlMDM3ZWVmNDBkZWQ5ZjJjZWFmODcyZmExNThhNDNhZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzA3MCwxMSArMzA3MCw2IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIGdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQobmFtZSk7CiB9CiAKLUdM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkK
LXsKLSAgICByZXR1cm4gZ2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd0J1ZmZlcnNFWFQoR0NH
TFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJuIGdldEV4dGVuc2lv
bnMoKS5kcmF3QnVmZmVyc0VYVChidWZmZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggZTg5OTdiMmU1MDQzZjYzNzYyMDE1ZWIxNTIyOTI3ODhjMzU5NjUyNi4uNTNl
MWQxZDRiYWVmZjhkZDI2OGI5ODI2NzQ5NzljNmQ5ZjU5MzEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKQEAgLTM3Miw3ICszNzIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBpc0V4dGVuc2lv
bkVuYWJsZWQoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgR0xpbnQgZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpIGZpbmFsOwogICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+KSBvdmVycmlkZTsKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggNmNjOGE1MDg1MGQyYzBiNDcxNDViZWEzZGI0NGZl
MWM2NzQ5NzgxYi4uM2Y0ZTU0YmUyN2JhZjhlOWU3ZDk1YzQ3NWJiNGJlODQ1OTAwN2VmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjg0LDcgKzI4NCw2
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3Ry
ZWFtIHsKICAgICB2b2lkIEdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUodWludDMyX3QgcHJvZ3Jh
bSwgdWludDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgpIC0+IChTdHJpbmcgcmV0dXJuVmFsdWUpIFN5
bmNocm9ub3VzCiAgICAgdm9pZCBVbmlmb3JtQmxvY2tCaW5kaW5nKHVpbnQzMl90IHByb2dyYW0s
IHVpbnQzMl90IHVuaWZvcm1CbG9ja0luZGV4LCB1aW50MzJfdCB1bmlmb3JtQmxvY2tCaW5kaW5n
KQogICAgIHZvaWQgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYodWludDMyX3QgcHJvZ3JhbSwgdWlu
dDMyX3QgdW5pZm9ybUJsb2NrSW5kZXgsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
Ci0gICAgdm9pZCBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgLT4gKGludDMyX3QgcmV0dXJu
VmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUodWludDMyX3QgYXJnMCkgLT4gKFN0cmluZyByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAg
ICB2b2lkIERyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IGJ1ZnMp
CiAgICAgdm9pZCBHZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qg
aW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNTaXplKSAtPiAo
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCmluZGV4IDRh
NTNmODg3MzZmOGUwYzllOWQ5ZDM4MDAxZmZlZDM1Mjk3N2NkODEuLjEwZWU5MjRmMDQ1MDZhOGFj
YWQzNTI0YjJiMTE0ZDljMGE4OGEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oCkBAIC0xMzIxLDEzICsxMzIxLDYgQEAKICAgICAg
ICAgbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1z
LmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsKICAgICB9Ci0gICAgdm9pZCBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50MzJfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi0gICAgewotICAgICAgICBHQ0dMaW50IHJldHVyblZhbHVlID0geyB9OwotICAg
ICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwotICAgICAgICByZXR1cm5WYWx1ZSA9
IG1fY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSk7Ci0gICAgfQogICAgIHZvaWQgZ2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKHVpbnQzMl90IGFyZzAsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRl
eCBmMGI4Y2E5OGY5MGIzMTZmZmQwNWQzOWIzOGU4MmIxM2NiYmM0NjhkLi43NGZlMTdiZmE0Y2M2
MWZjN2Y0MjI2OTcxNjYzMjExZjdhZGNmM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaApAQCAtMzE0LDcgKzMxNCw2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4KSBmaW5hbDsKICAgICB2b2lkIHVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykgZmluYWw7CiAgICAgdm9pZCBnZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykgZmluYWw7Ci0gICAgR0NH
TGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApIGZpbmFsOwog
ICAgIHZvaWQgZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1ZnMpIGZp
bmFsOwogICAgIHZvaWQgZ2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFy
YW1zKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDFmMjk2MDZmYmIzODM1NGUw
ODc1ZTg1ZTczZGM2ODZiNTM5MThlYmUuLjQzMWFkYzkzOWFkYzIzNmFjNzcyNjU5ZGE1NDQzM2Ez
MjJkMzNkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMjI2NywxNyArMjI2Nyw2IEBA
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHCiAgICAgfQogfQogCi1HQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQotewotICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKLSAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJu
VmFsdWUpKTsKLSAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQotICAgICAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7Ci0gICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQogU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDhiYmNjNmRkMTgyN2ZmOGMxNDdiY2RmODBiZGMxMzhlNThhZjdhNTYuLmI4ZDlh
MGU0NWFiY2RjODRmMTU5MzcyMGNhOTlmNGFjNTIwZmFkMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAyMi0wMy0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlY3ljbGluZyBhIHdlYmdsIGNvbnRleHQgd2hlbiBpdCBoYXMgYmVlbiBsb3N0IGFu
ZCByZXN0b3JlZCBjYXVzZXMgYSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgQ3JlYXRpbmcgZXhjZXNzaXZlIGFtb3VudCBvZiBjb250ZXh0cyB3
aWxsIGxvc2UgdGhlIG9sZGVzdCBjb250ZXh0IHZpYQorICAgICAgICAic2ltdWxhdGVkIGNvbnRl
eHQgbG9zdCIgbG9naWMsIG1ha2luZyB0aGUgY29udGV4dHMgbm9uLXJlc3RvcmFibGUuCisKKyAg
ICAgICAgUHJldmlvdXNseSB0aGUgdGVzdCB0cmllZCB0byB0ZXN0IHRoYXQgcmVxdWVzdGluZyBh
IHJlc3RvcmUgb24gYSBjb250ZXh0IHRoYXQKKyAgICAgICAgaGFkIHNpbXVsYXRlZCBjb250ZXh0
IGxvc3Qgd291bGQgbm90IHJlc3RvcmUuIEhvd2V2ZXIsIHRoZSB0ZXN0IHdhcyBpbnZhbGlkLAor
ICAgICAgICBhcyBpdCBhc3NlcnRlZCB0aGF0IHRoZSBjb250ZXh0IGlzIHN0aWxsIGxvc3QgaW1t
ZWRpYXRlbHkgYWZ0ZXIgcHJldmVudERlZmF1bHQoKToKKworICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CisgICAgICAgICAgaWYgKCFjb250ZXh0c1swXS5pc0NvbnRleHRMb3N0KCkp
CisgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250
ZW50ID0gIkZBSUwiOworCisgICAgICAgIFRoaXMgaXMgbm90IGNvcnJlY3QsIGFzIHRoZSBwcmV2
ZW50RGVmYXVsdCgpIG9ubHkgaW5mb3JtcyB0aGUgYnJvd3NlcgorICAgICAgICB0aGF0IHRoZSBj
b250ZXh0IHNob3VsZCBiZSByZXN0b3JlZC4gVGhlIHJlc3RvcmUgaGFwcGVucyBhc3luY2hyb25v
dXNseS4KKworICAgICAgICBGaXggdGhlIHRlc3QgbG9naWMgYW5kIGFkZCBleHRyYSBjYXNlcy4g
TWFrZSB0aGUgbG9naWMgYXMgc3VjaDoKKyAgICAgICAgMS4gTG9zZSB0aGUgY29udGV4dCBpbiBz
b21lIHdheQorICAgICAgICAyLiBXYWl0IGZvciBjb250ZXh0IGxvc3QgZXZlbnQsIHJlcXVlc3Qg
cmVzdG9yZQorICAgICAgICAzLiBPcHRpb25hbGx5IGRvIHNvbWV0aGluZyB0aGF0IHdvdWxkIHRy
aWdnZXIgYW5vdGhlciB3YXkgb2YgbG9zaW5nIHRoZSBjb250ZXh0CisgICAgICAgIDQuIFJ1biBh
c3NlcnRpb25zIGFib3V0IGNvbnRleHQgYmVpbmcgc3RpbGwgZXhwZWN0ZWRseSBsb3N0CisKKyAg
ICAgICAgVGhlIGZhaWx1cmVzIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9uOgorICAgICAgICBGQUlM
IGdldEVycm9yIGV4cGVjdGVkOiBJTlZBTElEX09QRVJBVElPTi4gV2FzIE5PX0VSUk9SIDoKKyAg
ICAgICAgRkFJTCBnZXRFcnJvciBleHBlY3RlZDogQ09OVEVYVF9MT1NUX1dFQkdMLiBXYXMgTk9f
RVJST1IgOgorICAgICAgICBidWcgMjM2OTY1CisKKyAgICAgICAgRkFJTCBFeHBlY3RlZCByZXN0
b3JlIGJlIGlnbm9yZWQsIGJ1dCBpdCB3YXMgbm90LgorICAgICAgICBidWcgMjM4MDM0CisKKyAg
ICAgICAgKiB3ZWJnbC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVu
dC1kZWZhdWx0Lmh0bWw6CisKIDIwMjItMDMtMTcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi14
eHguaHRtbCB0ZXN0cyBpbiBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNGExYTUyYWU0MzM3NGEyYTMxN2VmYWJhMzc2
ZjM0YTkyNDM0ZWVkYi4uN2RmYWE2ZDU1ZjY3ZGM0MmUyNWU4MzY1MGQyMjRiMTc3NDJmYTJkMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM4NCw2
ICsxMzg0LDcgQEAgd2Via2l0Lm9yZy9iLzIxOTI1MSBmYXN0L2NhbnZhcy93ZWJnbC9nZXRJbmRl
eGVkUGFyYW1ldGVyLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNzI4MTIg
ZmFzdC9jYW52YXMvd2ViZ2wvbG9zZS1jb250ZXh0LW9uLXN0YXR1cy1mYWlsdXJlLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xNzI4MTIgd2ViZ2wvbG9zZS1jb250ZXh0LWFmdGVyLWNvbnRl
eHQtbG9zdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTcyODEyIHdlYmdsL211bHRp
cGxlLWNvbnRleHQtbG9zc2VzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xNzI4MTIg
d2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXByZXZlbnQtZGVmYXVs
dC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjM2MjQgd2ViZ2wvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9raHItcGFyYWxsZWwtc2hhZGVyLWNvbXBpbGUuaHRtbCBbIFNraXAgXQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmds
Y29udGV4dGxvc3QtcHJldmVudC1kZWZhdWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQt
ZXhwZWN0ZWQudHh0CmluZGV4IDcxNGE4YmUyMjZlZDVjNTlmY2Y5ZDY4ZTFmYjQzMmI3N2FhMTAz
OTYuLmM5M2RjYzlkMTJkMmQyMmIzNzM0Mzg0YTU5NjhlNjA0MzBjMjc1ZTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1w
cmV2ZW50LWRlZmF1bHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsL21heC1h
Y3RpdmUtY29udGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQtZXhwZWN0ZWQu
dHh0CkBAIC0xLDIgKzEsNzMgQEAKLUNPTlNPTEUgTUVTU0FHRTogVGhlcmUgYXJlIHRvbyBtYW55
IGFjdGl2ZSBXZWJHTCBjb250ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3
aWxsIGJlIGxvc3QuCi1QQVNTIGlmIHRoZSBmaXJzdCBjb250ZXh0IHdhcyBsb3N0IGR1ZSB0byBj
cmVhdGluZyB0b28gbWFueSBXZWJHTCBjb250ZXh0cyBldmVuIHRob3VnaCBwcmV2ZW50RGVmYXVs
dCgpIHdhcyBjYWxsZWQgd2hlbiBhIHdlYmdsY29udGV4dGxvc3QgZXZlbnQgd2FzIGRpc3BhdGNo
ZWQuCitUZXN0IHRoYXQgZmlyc3QgbG9zaW5nIGNvbnRleHQsIHRyeWluZyB0byByZXN0b3JlIGl0
LCBhbmQgdGhlbiBkb2luZyBzb21ldGhpbmcgdG8gcmVhbGx5IGxvc2UgaXQgZG9lcyBub3QgY3Jh
c2guCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVEVTVCBDT01QTEVURTogNDIgUEFT
UywgMTAgRkFJTAorCitSdW5uaW5nIHRlc3Q6IGxvc2VNZXRob2Q6IGxvc2VDb250ZXh0LCBsb3Nl
TWV0aG9kMjogbG9zZUNvbnRleHQKK1BBU1MgR290IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3Rv
cmUgd2FzIGF0dGVtcHRlZC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBDT05U
RVhUX0xPU1RfV0VCR0wgOgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFM
SURfT1BFUkFUSU9OIDoKK1BBU1MgZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKK1BBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitSdW5uaW5nIHRlc3Q6IGxvc2VN
ZXRob2Q6IGxvc2VDb250ZXh0LCBsb3NlTWV0aG9kMjogbWFueUNvbnRleHRzCitQQVNTIEdvdCB3
ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogQ09OVEVYVF9MT1NUX1dFQkdMIDoKK1BBU1MgZ2wuaXNDb250
ZXh0TG9zdCgpIGlzIHRydWUKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19F
UlJPUiA6CitSdW5uaW5nIHRlc3Q6IGxvc2VNZXRob2Q6IGxvc2VDb250ZXh0LCBsb3NlTWV0aG9k
MjogZ3B1U3RhdHVzRmFpbHVyZQorUEFTUyBHb3Qgd2ViZ2xjb250ZXh0bG9zdCBhbmQgcmVzdG9y
ZSB3YXMgYXR0ZW1wdGVkLgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IENPTlRF
WFRfTE9TVF9XRUJHTCA6CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3Nl
TWV0aG9kOiBsb3NlQ29udGV4dCwgbG9zZU1ldGhvZDI6IG5vdGhpbmcKK1BBU1MgR290IHdlYmds
Y29udGV4dGxvc3QgYW5kIHJlc3RvcmUgd2FzIGF0dGVtcHRlZC4KK1BBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBDT05URVhUX0xPU1RfV0VCR0wgOgorUEFTUyBnbC5pc0NvbnRleHRM
b3N0KCkgaXMgdHJ1ZQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDoKK1J1bm5pbmcgdGVzdDogbG9zZU1ldGhvZDogbWFueUNvbnRleHRzLCBsb3NlTWV0aG9kMjog
bG9zZUNvbnRleHQKK1BBU1MgR290IHdlYmdsY29udGV4dGxvc3QgYW5kIHJlc3RvcmUgd2FzIGF0
dGVtcHRlZC4KK0ZBSUwgZ2V0RXJyb3IgZXhwZWN0ZWQ6IENPTlRFWFRfTE9TVF9XRUJHTC4gV2Fz
IE5PX0VSUk9SIDoKK0ZBSUwgZ2V0RXJyb3IgZXhwZWN0ZWQ6IElOVkFMSURfT1BFUkFUSU9OLiBX
YXMgTk9fRVJST1IgOgorUEFTUyBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQorUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKK1J1bm5pbmcgdGVzdDogbG9zZU1l
dGhvZDogbWFueUNvbnRleHRzLCBsb3NlTWV0aG9kMjogbWFueUNvbnRleHRzCitQQVNTIEdvdCB3
ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitGQUlMIGdldEVycm9y
IGV4cGVjdGVkOiBDT05URVhUX0xPU1RfV0VCR0wuIFdhcyBOT19FUlJPUiA6CitQQVNTIGdsLmlz
Q29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBtYW55Q29udGV4dHMsIGxvc2VN
ZXRob2QyOiBncHVTdGF0dXNGYWlsdXJlCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCBy
ZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitGQUlMIGdldEVycm9yIGV4cGVjdGVkOiBDT05URVhUX0xP
U1RfV0VCR0wuIFdhcyBOT19FUlJPUiA6CitQQVNTIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVl
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0
ZXN0OiBsb3NlTWV0aG9kOiBtYW55Q29udGV4dHMsIGxvc2VNZXRob2QyOiBub3RoaW5nCitQQVNT
IEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitGQUlMIGdl
dEVycm9yIGV4cGVjdGVkOiBDT05URVhUX0xPU1RfV0VCR0wuIFdhcyBOT19FUlJPUiA6CitQQVNT
IGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBncHVTdGF0dXNGYWls
dXJlLCBsb3NlTWV0aG9kMjogbG9zZUNvbnRleHQKK1BBU1MgR290IHdlYmdsY29udGV4dGxvc3Qg
YW5kIHJlc3RvcmUgd2FzIGF0dGVtcHRlZC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBDT05URVhUX0xPU1RfV0VCR0wgOgorRkFJTCBnZXRFcnJvciBleHBlY3RlZDogSU5WQUxJ
RF9PUEVSQVRJT04uIFdhcyBOT19FUlJPUiA6CitGQUlMIEV4cGVjdGVkIHJlc3RvcmUgYmUgaWdu
b3JlZCwgYnV0IGl0IHdhcyBub3QuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOgorUnVubmluZyB0ZXN0OiBsb3NlTWV0aG9kOiBncHVTdGF0dXNGYWlsdXJlLCBs
b3NlTWV0aG9kMjogbWFueUNvbnRleHRzCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCBy
ZXN0b3JlIHdhcyBhdHRlbXB0ZWQuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Q09OVEVYVF9MT1NUX1dFQkdMIDoKK0ZBSUwgRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBi
dXQgaXQgd2FzIG5vdC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6CitSdW5uaW5nIHRlc3Q6IGxvc2VNZXRob2Q6IGdwdVN0YXR1c0ZhaWx1cmUsIGxvc2VNZXRo
b2QyOiBncHVTdGF0dXNGYWlsdXJlCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0
b3JlIHdhcyBhdHRlbXB0ZWQuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogQ09O
VEVYVF9MT1NUX1dFQkdMIDoKK0ZBSUwgRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQg
aXQgd2FzIG5vdC4KK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
CitSdW5uaW5nIHRlc3Q6IGxvc2VNZXRob2Q6IGdwdVN0YXR1c0ZhaWx1cmUsIGxvc2VNZXRob2Qy
OiBub3RoaW5nCitQQVNTIEdvdCB3ZWJnbGNvbnRleHRsb3N0IGFuZCByZXN0b3JlIHdhcyBhdHRl
bXB0ZWQuCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogQ09OVEVYVF9MT1NUX1dF
QkdMIDoKK0ZBSUwgRXhwZWN0ZWQgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQgd2FzIG5vdC4K
K1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6CitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13ZWJnbGNvbnRleHRsb3N0LXByZXZl
bnQtZGVmYXVsdC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvbWF4LWFjdGl2ZS1jb250ZXh0cy13
ZWJnbGNvbnRleHRsb3N0LXByZXZlbnQtZGVmYXVsdC5odG1sCmluZGV4IDM2ODQ3YTkzNDQ5NTQ1
NDBkY2ZkNDlkOTZhMzUyY2IxOWI4NjMzMzMuLmIzYTIxMjZlY2FkZGNhNGFmY2JjY2ExNmJiNWU3
ZDQyNTM0NWI3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsL21heC1hY3RpdmUtY29u
dGV4dHMtd2ViZ2xjb250ZXh0bG9zdC1wcmV2ZW50LWRlZmF1bHQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9tYXgtYWN0aXZlLWNvbnRleHRzLXdlYmdsY29udGV4dGxvc3QtcHJldmVudC1k
ZWZhdWx0Lmh0bWwKQEAgLTEsMjEgKzEsMTUyIEBACi08ZGl2IGlkPSJyZXN1bHQiPlBBU1MgaWYg
dGhlIGZpcnN0IGNvbnRleHQgd2FzIGxvc3QgZHVlIHRvIGNyZWF0aW5nIHRvbyBtYW55IFdlYkdM
IGNvbnRleHRzIGV2ZW4gdGhvdWdoIDxjb2RlPnByZXZlbnREZWZhdWx0KCk8L2NvZGU+IHdhcyBj
YWxsZWQgd2hlbiBhIDxjb2RlPndlYmdsY29udGV4dGxvc3Q8L2NvZGU+IGV2ZW50IHdhcyBkaXNw
YXRjaGVkLjwvZGl2PgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvanMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3Jp
cHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLX0KLQotdmFyIG1heE51bWJlck9m
QWN0aXZlQ29udGV4dHMgPSAxNjsKLXZhciBjb250ZXh0cyA9IFtdOwotZm9yICh2YXIgaSA9IDA7
IGkgPD0gbWF4TnVtYmVyT2ZBY3RpdmVDb250ZXh0czsgaSsrKSB7Ci0gICAgdmFyIGNhbnZhcyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNhbnZhcy5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgaWYgKCFjb250ZXh0c1swXS5pc0NvbnRleHRM
b3N0KCkpCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4
dENvbnRlbnQgPSAiRkFJTCI7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworInVzZSBzdHJpY3QiOworZGVzY3JpcHRp
b24oIlRlc3QgdGhhdCBmaXJzdCBsb3NpbmcgY29udGV4dCwgdHJ5aW5nIHRvIHJlc3RvcmUgaXQs
IGFuZCB0aGVuIGRvaW5nIHNvbWV0aGluZyB0byByZWFsbHkgbG9zZSBpdCBkb2VzIG5vdCBjcmFz
aC4iKTsKKworLy8gVGhlIHRlc3Qgd291bGQgY3Jhc2ggd2l0aCBmb2xsb3dpbmcgc2VxdWVuY2U6
CisvLyAxLiBDYXVzZSBhIHJlYWwgY29udGV4dCBsb3N0LiBJbiB0aGlzIHRlc3QsICJncHVTdGF0
dXNGYWlsdXJlIi4KKy8vIDIuIFBhZ2Ugd291bGQgdHJ5IHRvIHJlc3RvcmUgdGhlIGNvbnRleHQu
IFRoaXMgd291bGQgc3RhcnQgdGhlIHJlc3RvcmUgdGltZXIuCisvLyAzLiBCZWZvcmUgdGhlIHJl
c3RvcmUgdGltZXIgZmlyZXMsIHJlYWxseSBsb3NlIHRoZSBjb250ZXh0LiBJbiB0aGlzIHRlc3Qs
ICJtYW55Q29udGV4dCIuCisvLyA0LiBUaGUgcmVzdG9yZSB0aW1lciB3b3VsZCBmaXJlLCBhbmQg
cmVzdG9yZSBmdW5jdGlvbiB3b3VsZCB1c2UgbnVsbHB0ciBjb250ZXh0LgorCit2YXIgd3R1ID0g
V2ViR0xUZXN0VXRpbHM7Cit2YXIgZ2w7CisKK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JFdmVudChl
bGVtZW50LCBldmVudE5hbWUsIHRpbWVvdXRNUykKK3sKKyAgICB0aW1lb3V0TVMgPSB0aW1lb3V0
TVMgfHwgMjAwMDsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICBmdW5jdGlvbiB0aW1lb3V0SGFuZGxlcigpIHsKKyAgICAgICAgICAgIGVsZW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIHsgb25jZTogdHJ1ZSB9
KTsKKyAgICAgICAgICAgIHJlamVjdCgpOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHJlamVj
dElEID0gc2V0VGltZW91dCh0aW1lb3V0SGFuZGxlciwgdGltZW91dE1TKTsKKyAgICAgICAgZnVu
Y3Rpb24gaGFuZGxlcihldmVudCkgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHJlamVjdElE
KTsKKyAgICAgICAgICAgIHJlc29sdmUoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIHsgb25jZTogdHJ1ZSB9KTsK
ICAgICB9KTsKLSAgICBjb250ZXh0c1tpXSA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIpOwor
fQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yV2ViR0xDb250ZXh0UmVzdG9yZWQoY2FudmFzLCB0
aW1lb3V0TVMpCit7CisgICAgYXdhaXQgd2FpdEZvckV2ZW50KGNhbnZhcywgIndlYmdsY29udGV4
dHJlc3RvcmVkIiwgdGltZW91dE1TKTsKK30KKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvcldlYkdM
Q29udGV4dExvc3RBbmRSZXN0b3JlKGNhbnZhcywgdGltZW91dE1TKQoreworICAgIGxldCBldmVu
dCA9IGF3YWl0IHdhaXRGb3JFdmVudChjYW52YXMsICJ3ZWJnbGNvbnRleHRsb3N0IiwgdGltZW91
dE1TKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfQorCitmdW5jdGlvbiB0ZXN0RGVz
Y3JpcHRpb24oc3ViY2FzZSkgeworICAgIHJldHVybiBPYmplY3Qua2V5cyhzdWJjYXNlKS5tYXAo
KGspID0+IGAke2t9OiAke3R5cGVvZiBzdWJjYXNlW2tdID09PSAiZnVuY3Rpb24iID8gc3ViY2Fz
ZVtrXS5uYW1lIDogc3ViY2FzZVtrXX1gKS5qb2luKCIsICIpOworfQorCithc3luYyBmdW5jdGlv
biBydW5UZXN0KHN1YmNhc2UpCit7CisgICAgZGVidWcoYFJ1bm5pbmcgdGVzdDogJHt0ZXN0RGVz
Y3JpcHRpb24oc3ViY2FzZSl9YCk7CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSAxOworICAgIGNhbnZhcy5o
ZWlnaHQgPSAxOworICAgIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworICAgIGNv
bnN0IFdFQkdMX2xvc2VfY29udGV4dCA9IHd0dS5nZXRFeHRlbnNpb25XaXRoS25vd25QcmVmaXhl
cyhnbCwgIldFQkdMX2xvc2VfY29udGV4dCIpOworCisgICAgY29uc3Qgd2ViZ2xjb250ZXh0bG9z
dGFuZHJlc3RvcmUgPSB3YWl0Rm9yV2ViR0xDb250ZXh0TG9zdEFuZFJlc3RvcmUoY2FudmFzKTsK
KyAgICBjb25zdCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IHdhaXRGb3JXZWJHTENvbnRleHRSZXN0
b3JlZChjYW52YXMpOworICAgIGxldCBleHBlY3RSZXN0b3JlSWdub3JlZCA9IHN1YmNhc2UubG9z
ZU1ldGhvZChnbCwgV0VCR0xfbG9zZV9jb250ZXh0KTsKKworICAgIHRyeSB7CisgICAgICAgIGF3
YWl0IHdlYmdsY29udGV4dGxvc3RhbmRyZXN0b3JlOworICAgICAgICB0ZXN0UGFzc2VkKCJHb3Qg
d2ViZ2xjb250ZXh0bG9zdCBhbmQgcmVzdG9yZSB3YXMgYXR0ZW1wdGVkLiIpOworICAgICAgICB3
dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5DT05URVhUX0xPU1RfV0VCR0wpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUpCisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB0
ZXN0RmFpbGVkKCJUaW1lZCBvdXQgd2FpdGluZyB3ZWJnbGNvbnRleHRsb3N0IHRoYXQgd291bGQg
YXR0ZW1wdCB0byBiZSByZXN0b3JlZC4iKTsKKyAgICB9CisgICAgZXhwZWN0UmVzdG9yZUlnbm9y
ZWQgPSBzdWJjYXNlLmxvc2VNZXRob2QyKGdsLCBXRUJHTF9sb3NlX2NvbnRleHQpIHx8IGV4cGVj
dFJlc3RvcmVJZ25vcmVkOworCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgd2ViZ2xjb250ZXh0
cmVzdG9yZWQ7CisgICAgICAgIGlmIChleHBlY3RSZXN0b3JlSWdub3JlZCkKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkV4cGVjdGVkIHJlc3RvcmUgYmUgaWdub3JlZCwgYnV0IGl0IHdhcyBub3Qu
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImdsLmlzQ29udGV4
dExvc3QoKSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUpCisgICAgICAgICAg
ICB0aHJvdyBlOworICAgICAgICBpZiAoIWV4cGVjdFJlc3RvcmVJZ25vcmVkKQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiRGlkIG5vdCBleHBlY3QgcmVzdG9yZSBiZSBpZ25vcmVkLCBidXQgaXQg
d2FzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaG91bGRCZVRydWUoImdsLmlzQ29u
dGV4dExvc3QoKSIpOworICAgIH0KKworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5P
X0VSUk9SKTsKK30KKworZnVuY3Rpb24gbG9zZUNvbnRleHQoZ2wsIFdFQkdMX2xvc2VfY29udGV4
dCkKK3sKKyAgICBpZiAoIVdFQkdMX2xvc2VfY29udGV4dCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJDb3VsZCBub3QgZmluZCBXRUJHTF9sb3NlX2NvbnRleHQgZXh0ZW5zaW9uIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbGV0IHdhc0xvc3QgPSBnbC5pc0NvbnRleHRMb3N0KCk7Cisg
ICAgV0VCR0xfbG9zZV9jb250ZXh0Lmxvc2VDb250ZXh0KCk7CisgICAgaWYgKHdhc0xvc3QpCisg
ICAgICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICByZXR1cm4gdHJ1ZTsgLy8gUmVxdWVzdCBmb3IgcmVzdG9yZSBpcyBpZ25vcmVkLgorfQorCitm
dW5jdGlvbiBtYW55Q29udGV4dHMoKQoreworICAgIC8vIFRoaXMgY2F1c2VzIHRoZSBvbGRlciBj
b250ZXh0cyB0byBiZSBsb3N0LCBpbmNsdWRpbmcgdGhlIGZpcnN0IG9uZSB3ZSBjcmVhdGVkCisg
ICAgLy8gZm9yIHRlc3RpbmcuCisgICAgY29uc3QgY29udGV4dHMgPSBbXQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTA7ICsraSkKKyAgICAgICAgY29udGV4dHMucHVzaChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJ3ZWJnbCIpKTsKKyAgICByZXR1cm4gdHJ1
ZTsgLy8gUmVxdWVzdCBmb3IgcmVzdG9yZSBpcyBpZ25vcmVkLgorfQorCitmdW5jdGlvbiBncHVT
dGF0dXNGYWlsdXJlKGdsKQoreworICAgIGludGVybmFscy5zaW11bGF0ZUV2ZW50Rm9yV2ViR0xD
b250ZXh0KCJHUFVTdGF0dXNGYWlsdXJlIiwgZ2wpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQpOworICAgIHJldHVybiB0cnVlOyAvLyBSZXF1ZXN0IGZvciByZXN0b3JlIGlzIGhv
bm9yZWQuCit9CisKK2Z1bmN0aW9uIG5vdGhpbmcoKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworY29uc3QgbG9zZU1ldGhvZHMgPSBbbG9zZUNvbnRleHQsIG1hbnlDb250ZXh0c107CitpZiAo
d2luZG93LmludGVybmFscykKKyAgICBsb3NlTWV0aG9kcy5wdXNoKGdwdVN0YXR1c0ZhaWx1cmUp
OworCitjb25zdCBzdWJjYXNlcyA9IFtdOworZm9yIChjb25zdCBsb3NlTWV0aG9kIG9mIGxvc2VN
ZXRob2RzKQorICAgIGZvciAoY29uc3QgbG9zZU1ldGhvZDIgb2YgbG9zZU1ldGhvZHMuY29uY2F0
KG5vdGhpbmcpKQorICAgICAgICBzdWJjYXNlcy5wdXNoKHtsb3NlTWV0aG9kLCBsb3NlTWV0aG9k
Mn0pOworCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKGxldCBzdWJjYXNlIG9m
IHN1YmNhc2VzKQorICAgICAgICBhd2FpdCBydW5UZXN0KHN1YmNhc2UpOworICAgIGZpbmlzaFRl
c3QoKTsKIH0KIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>