<?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>26006</bug_id>
          
          <creation_ts>2009-05-25 03:15:00 -0700</creation_ts>
          <short_desc>Sort out lexical / dynamic global object for window.location</short_desc>
          <delta_ts>2009-05-25 14:50:34 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>123026</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 03:15:00 -0700</bug_when>
    <thetext>Our choice of lexicalGlobalObject or dynamicGlobalObject not correct.  The correct choices appear to be:

1) Use dynamicGlobalObject to find the user gesture.
2) Use dynamicGlobalObject to complete URLs.
3) Use lexicalGlobalObject to find the referrer.
4) Use lexicalGlobalObject for the frame navigation checks.
5) Use lexicalGlobalObject for the XSS checks.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123027</commentid>
    <comment_count>1</comment_count>
      <attachid>30647</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 03:27:01 -0700</bug_when>
    <thetext>Created attachment 30647
patch

This patch isn&apos;t fully vetted yet, but it&apos;s bedtime.  Hopefully I&apos;m nominate it for review tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123049</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-25 09:18:38 -0700</bug_when>
    <thetext>I would prefer we don&apos;t continue to use the term activeFrame, as I think it conveys nothing.  In fact, in the code you are changing, it was used to refer to the frame associated with the dynamic global object, but now you are associating it with the lexical global object. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123050</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 09:27:44 -0700</bug_when>
    <thetext>&gt; I would prefer we don&apos;t continue to use the term activeFrame,

Sure.  What term would you like?  How about &quot;calling Frame?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123051</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-25 09:39:20 -0700</bug_when>
    <thetext>How about the lexicalFrame and the dynamicFrame.  Not the best names for sure, but they at least evoke the terms we use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123052</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 09:46:22 -0700</bug_when>
    <thetext>&gt; How about the lexicalFrame and the dynamicFrame.  Not the best names for sure,
&gt; but they at least evoke the terms we use.

I&apos;d like to use the same term in both the JSC and V8 bindings so they&apos;re easier to keep in sync.  The problem with lexicalFrame is that V8 would think that&apos;s a different frame because it would give you the lexicalFrame for the *current* function (i.e., the one we&apos;re implementing) not the lexical frame for the function that called this one...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123053</commentid>
    <comment_count>6</comment_count>
      <attachid>30653</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 09:52:52 -0700</bug_when>
    <thetext>Created attachment 30653
patch

This patch uses the &quot;callingFrame&quot; name.  We can change the name later.  There are still a bunch more of these lexical/dynamic issues to sort out (e.g., window.open).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123064</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-25 11:53:47 -0700</bug_when>
    <thetext>While I understand your desire to have a name that works with the terminology the v8 bindings folks decided to use, I don&apos;t think we should make it harder for the webkit folks because of that.  CallingFrame doesn&apos;t state which global object it is using clearly, and therefore is less than ideal for me.  I would much prefer to go with lexicalFrame and dynamicFrame and have the v8 bindings change to accommodate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123065</commentid>
    <comment_count>8</comment_count>
      <attachid>30653</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 12:01:07 -0700</bug_when>
    <thetext>Comment on attachment 30653
patch

Ok.  I&apos;ll spin up a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123067</commentid>
    <comment_count>9</comment_count>
      <attachid>30657</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 12:10:41 -0700</bug_when>
    <thetext>Created attachment 30657
patch with lexicalFrame

I changed the JSC code to lexicalFrame and left the V8 code with callingFrame.  That way the variables match the terminology for each bindings.  (This patch is still compiling, but I can fix any typos before landing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123070</commentid>
    <comment_count>10</comment_count>
      <attachid>30657</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-25 12:21:22 -0700</bug_when>
    <thetext>Comment on attachment 30657
patch with lexicalFrame

Assuming it all compiles and stuff, r=me.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123080</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-25 14:50:34 -0700</bug_when>
    <thetext>Transmitting file data ..................
Committed revision 44135.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30647</attachid>
            <date>2009-05-25 03:27:01 -0700</date>
            <delta_ts>2009-05-25 09:52:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0002-lexical-window.location.patch</filename>
            <type>text/plain</type>
            <size>29135</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAyODFlNmM4OGFkMWU4M2UyNjI3MGIyMjRiNThlZTU2NDcyZjlmZWRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogTW9uLCAyNSBNYXkgMjAwOSAwMzoyMjo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGxleGlj
YWwgd2luZG93LmxvY2F0aW9uCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysKIC4uLi9jb250ZXh0LWZvci1sb2NhdGlv
bi1hc3NpZ24tZXhwZWN0ZWQudHh0ICAgICAgIHwgICAgMiArCiAuLi4vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwgICAgICAgICAgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9j
b250ZXh0LWZvci1sb2NhdGlvbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgICAgMiArCiAu
Li4vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQgICAgICAgICB8ICAgIDIg
KwogLi4uL2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLmh0bWwgfCAg
IDMzICsrKysrKysrKysrCiAuLi4vZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9u
Lmh0bWwgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1l
LWZvci1sb2NhdGlvbi5odG1sICAgICAgIHwgICAgNCArKwogLi4uL3Jlc291cmNlcy90YXJnZXQt
Zm9yLWxvY2F0aW9uLmh0bWwgICAgICAgICAgICAgfCAgIDE0ICsrKysrCiBXZWJDb3JlL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDcgKysrKysrKysrKysr
KysrKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwICAgICAgICAgICAgICAg
fCAgIDI3ICsrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCAgICAg
ICAgICAgICAgICAgfCAgICA1ICsrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCAgICAgICAgICB8ICAgMTggKysrKy0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwICAgICAgICAgICB8ICAgNTcgKysrKysrKysrLS0tLS0tLS0tLS0KIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwICAgICAgICAgICAgICAgIHwgICAzMSAr
KysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oICAgICAgICAgICAg
ICAgICAgfCAgICA1ICsrCiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAgICB8ICAgMjMgKysrLS0tLS0tCiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcCAgICB8ICAgNTYgKysrKysrLS0tLS0tLS0tLS0tLS0KIDE4IGZp
bGVzIGNoYW5nZWQsIDMxNiBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29u
dGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2Nh
dGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlk
ZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3RhcmdldC1m
b3ItbG9jYXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTk5YzMzLi4yNGRmOWIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMDktMDUtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9nPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjAwNgorCisgICAgICAgIFRlc3Qgb3VyIHVz
ZSBvZiBkeW5hbWljR2xvYmFsT2JqZWN0IGFuZCBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvcgorICAg
ICAgICB3aW5kb3cubG9jYXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250
ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24taHJlZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1l
LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRl
ZC4KKwogMjAwOS0wNS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
YXNzaWduLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZkYTYwOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRl
eHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitkb2N1
bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24tYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDk5YjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3It
bG9jYXRpb24tYXNzaWduLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobXNnKSB7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIGdv
KCkgeworICAgIGZyYW1lc1swXS5mcmFtZXNbMF0ubG9jYXRpb24uYXNzaWduKCJ0YXJnZXQtZm9y
LWxvY2F0aW9uLmh0bWwiKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBmdW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9j
YXRpb24uaHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42NmMzODU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorZG9jdW1lbnQucmVmZXJyZXIgPSBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxv
Y2F0aW9uLWhyZWYuaHRtbAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2Nv
bnRleHQtZm9yLWxvY2F0aW9uLWhyZWYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY2YzM4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1o
cmVmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK2RvY3VtZW50LnJlZmVycmVyID0gaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi1ocmVmLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1m
b3ItbG9jYXRpb24taHJlZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlhNmQ1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLmh0bWwKQEAgLTAs
MCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworfQorCitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIGdvKCkgeworICAgIGZyYW1lc1swXS5mcmFtZXNb
MF0ubG9jYXRpb24uaHJlZiA9ICJ0YXJnZXQtZm9yLWxvY2F0aW9uLmh0bWwiOworfQorCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGUpIHsKKyAgICBsb2coZS5k
YXRhKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIGZhbHNlKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sIj4KKzwvYm9keT4KKzwvaHRt
bD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZmYWI1OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRl
eHQtZm9yLWxvY2F0aW9uLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobXNnKSB7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIGdv
KCkgeworICAgIGZyYW1lc1swXS5mcmFtZXNbMF0ubG9jYXRpb24gPSAidGFyZ2V0LWZvci1sb2Nh
dGlvbi5odG1sIjsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5j
dGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24u
aHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9taWRkbGUtZnJhbWUtZm9y
LWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjkwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
bWlkZGxlLWZyYW1lLWZvci1sb2NhdGlvbi5odG1sCkBAIC0wLDAgKzEsNCBAQAorPGlmcmFtZSBz
cmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKzxzY3JpcHQ+Cit0b3AuZ28oKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL3RhcmdldC1mb3ItbG9jYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy90YXJnZXQtZm9yLWxv
Y2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3NzgyMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy90YXJnZXQtZm9yLWxvY2F0aW9uLmh0bWwKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbXNnID0gImRvY3VtZW50LnJlZmVycmVyID0g
IiArIGRvY3VtZW50LnJlZmVycmVyOworICAgIHRvcC5wb3N0TWVzc2FnZShtc2csICIqIik7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorQ29ycmVjdCB0YXJnZXQuCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGI5OWE0ZDkuLmU4MDM2NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNTMgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjYwMDYKKworICAgICAgICBTb3J0IG91dCBvdXIgdXNlIG9mIGR5bmFt
aWNHbG9iYWxPYmplY3QgYW5kIGxleGljYWxHbG9iYWxPYmplY3QgZm9yCisgICAgICAgIHdpbmRv
dy5sb2NhdGlvbi4gIFRoZSBjb3JyZWN0IHVzZSBhcHBlYXJzIHRvIGJlIGFzIGZvbGxvd3M6CisK
KyAgICAgICAgMSkgVXNlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8gZmluZCB0aGUgdXNlciBnZXN0
dXJlLgorICAgICAgICAyKSBVc2UgZHluYW1pY0dsb2JhbE9iamVjdCB0byBjb21wbGV0ZSBVUkxz
LgorICAgICAgICAzKSBVc2UgbGV4aWNhbEdsb2JhbE9iamVjdCB0byBmaW5kIHRoZSByZWZlcnJl
ci4KKyAgICAgICAgNCkgVXNlIGxleGljYWxHbG9iYWxPYmplY3QgZm9yIHRoZSBmcmFtZSBuYXZp
Z2F0aW9uIGNoZWNrcy4KKyAgICAgICAgNSkgVXNlIGxleGljYWxHbG9iYWxPYmplY3QgZm9yIHRo
ZSBYU1MgY2hlY2tzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24taHJlZi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQWN0aXZlRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBsZXRlVVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNMb2NhdGlvbjo6c2V0SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uOjpyZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjphc3NpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNMb2NhdGlvbjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvblByb3Rv
dHlwZTo6Y3VzdG9tUHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBsZXRl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Om5hdmlnYXRlSWZBbGxvd2VkKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFV0aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEN1c3RvbTo6V2luZG93
U2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgIChX
ZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wpOgorCisyMDA5LTA1LTI1ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDA0
CiAKICAgICAgICAgVGhlIG9yaWdpbiBmb3IgcG9zdE1lc3NhZ2Ugc2hvdWxkIGZvbGxvdyBsZXhp
Y2FsIHNjb3BlLCBub3QgZHluYW1pYwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmlu
ZGV4IGM5YWZjMDYuLmU3ZTQ2MWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
QEAgLTUwNCw2ICs1MDQsMTIgQEAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoRXhlY1N0YXRl
KiBleGVjLCBGcmFtZSogZnJhbWUsIFN0cmluZyYgbWVzc2FnZSkKICAgICByZXR1cm4gd2luZG93
ICYmIHdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjLCBtZXNzYWdlKTsKIH0KIAorYm9vbCBz
aG91bGRBbGxvd05hdmlnYXRpb24oRXhlY1N0YXRlKiBleGVjLCBGcmFtZSogZnJhbWUpCit7Cisg
ICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gdG9BY3RpdmVGcmFtZShleGVjKTsKKyAgICByZXR1cm4g
YWN0aXZlRnJhbWUgJiYgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRp
b24oZnJhbWUpOworfQorCiB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTUxMiw2
ICs1MTgsMjcgQEAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB3aW5kb3ctPnByaW50RXJyb3JNZXNzYWdl
KG1lc3NhZ2UpOwogfQogCitGcmFtZSogdG9BY3RpdmVGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
aW1wbCgpLT5mcmFtZSgpOworfQorCitib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgRnJhbWUqIGZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5h
bWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lICYm
IGZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Cit9CisKK0tVUkwgY29t
cGxldGVVUkwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKQorewor
ICAgIC8vIEZvciBoaXN0b2ljYWwgcmVhc29ucywgd2UgbmVlZCB0byBjb21wbGV0ZSB0aGUgVVJM
IHVzaW5nIHRoZSBkeW5hbWljIGZyYW1lLgorICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01XaW5k
b3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2Fk
ZXIoKS0+Y29tcGxldGVVUkwocmVsYXRpdmVVUkwpOworfQorCisKIEpTVmFsdWUgb2JqZWN0VG9T
dHJpbmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVu
Y1RvU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDYxZDhjYTEuLmRl
YjM2YjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMTgzLDkgKzE4MywxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCBjdXJy
ZW50IHByb3BlcnR5IHZhbHVlcyBpbnZvbHZlZCBhdCBhbGwuCiAgICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwogICAgIGJvb2wgYWxsb3dzQWNj
ZXNzRnJvbUZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTdHJpbmcmIG1lc3NhZ2UpOwor
ICAgIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsK
ICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IEpTQzo6UHJvcGVydHlTbG90Jik7CiAKKyAgICBGcmFtZSogdG9BY3RpdmVGcmFtZShKU0M6
OkV4ZWNTdGF0ZSopOworICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKEpTQzo6RXhlY1N0
YXRlKik7CisgICAgS1VSTCBjb21wbGV0ZVVSTChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmVVUkwpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBK
U0RPTUJpbmRpbmdfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCAyZmNjZWEyLi40NmIzOGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmxvY2F0
aW9uKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEZyYW1lKiBhY3RpdmVG
cmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgp
LT5mcmFtZSgpOworICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IHRvQWN0aXZlRnJhbWUoZXhlYyk7
CiAgICAgaWYgKCFhY3RpdmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTUsMTMgKzE5
NSwxOSBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2Fk
ZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGltcGwoKS0+ZnJhbWUoKSkpCisgICAgRnJhbWUq
IGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisKKyAgICBpZiAo
IXNob3VsZEFsbG93TmF2aWdhdGlvbihleGVjLCBmcmFtZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBTdHJpbmcgZHN0VXJsID0gYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTCh2YWx1
ZS50b1N0cmluZyhleGVjKSkuc3RyaW5nKCk7Ci0gICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlw
dChkc3RVcmwpIHx8IGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpIHsKLSAgICAgICAgYm9vbCB1c2Vy
R2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7
CisKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKGV4ZWMsIHZhbHVlLnRvU3RyaW5nKGV4ZWMp
KTsKKyAgICBpZiAodXJsLmlzTnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFwcm90
b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpIHsKICAgICAg
ICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhpcyBKUyB3YXMgY2FsbGVkIHZp
YSBhIHVzZXIgZ2VzdHVyZQotICAgICAgICBpbXBsKCktPmZyYW1lKCktPmxvYWRlcigpLT5zY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKGRzdFVybCwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICBmcmFtZS0+bG9hZGVy
KCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPm91
dGdvaW5nUmVmZXJyZXIoKSwgIWFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoZXhlYykpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXgg
OTdlNjFhYi4uZWFiYWY4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20u
Y3BwCkBAIC0xNDUsMTEgKzE0NSwxMiBAQCB2b2lkIEpTTG9jYXRpb246OmRlZmluZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSgogCiBzdGF0
aWMgdm9pZCBuYXZpZ2F0ZUlmQWxsb3dlZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExp
c3QpCiB7Ci0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5h
bWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7Ci0gICAgaWYgKCFwcm90b2NvbElz
SmF2YVNjcmlwdCh1cmwpIHx8IGFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVjLCBmcmFtZSkpIHsK
LSAgICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2Nh
dGlvbkNoYW5nZSh1cmwuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdS
ZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgdXNlckdlc3R1cmUp
OwotICAgIH0KKyAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSB0b0FjdGl2ZUZyYW1lKGV4ZWMpOwor
ICAgIGlmICghYWN0aXZlRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSB8fCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUp
KQorICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0
cmluZygpLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgbG9ja0hp
c3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShleGVjKSk7
CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCkBAIC0xNTcsMTMgKzE1OCwxMyBAQCB2b2lkIEpTTG9jYXRpb246OnNldEhyZWYoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+
ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1l
KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlv
bihleGVjLCBmcmFtZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5s
b2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKworICAgIEtVUkwgdXJsID0g
Y29tcGxldGVVUkwoZXhlYywgdmFsdWUudG9TdHJpbmcoZXhlYykpOworICAgIGlmICh1cmwuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gYWN0aXZlRnJhbWUtPmxv
YWRlcigpLT5jb21wbGV0ZVVSTCh2YWx1ZS50b1N0cmluZyhleGVjKSk7CiAgICAgbmF2aWdhdGVJ
ZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KIApAQCAtMjYxLDMwICsyNjIsMjUgQEAg
SlNWYWx1ZSBKU0xvY2F0aW9uOjpyZXBsYWNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpIAor
ICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGV4ZWMsIGZyYW1lKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZS0+bG9hZGVyKCktPnNob3Vs
ZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpCisKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKGV4
ZWMsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhl
YywgZnJhbWUsIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKSksIHRydWUsIHRydWUpOworICAgIG5hdmlnYXRlSWZBbGxvd2VkKGV4ZWMs
IGZyYW1lLCB1cmwsIHRydWUsIHRydWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQog
CiBKU1ZhbHVlIEpTTG9jYXRpb246OnJlbG9hZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lKTsKLSAgICBpZiAoIXdpbmRvdy0+YWxsb3dzQWNj
ZXNzRnJvbShleGVjKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUo
ZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxvYWRlcigpLT51cmwoKSkgfHwgKHdpbmRvdyAm
JiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSB7Ci0gICAgICAgIGJvb2wgdXNlckdl
c3R1cmUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwo
KS0+ZnJhbWUoKS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlUmVmcmVzaCh1c2VyR2VzdHVyZSk7Ci0gICAgfQorICAg
IGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxvYWRlcigpLT51cmwoKSkpCisgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVSZWZyZXNoKHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTI5NCwyMyArMjkw
LDIyIEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6YXNzaWduKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJh
bWUpCisgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKworICAgIEtVUkwgdXJsID0gY29tcGxldGVV
UkwoZXhlYywgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKHVybC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICAvLyBXZSB3YW50IGEgbmV3
IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBjYWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCi0g
ICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+
Y29tcGxldGVVUkwoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSksICFmcmFtZS0+c2NyaXB0KCkt
PmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSk7CisgICAgbmF2aWdhdGVJ
ZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKLSAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAoIWFsbG93
c0FjY2Vzc0Zyb21GcmFtZShleGVjLCBmcmFtZSkpCisgICAgaWYgKCFmcmFtZSB8fCAhYWxsb3dz
QWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT50b1N0cmluZygpKTsKQEAg
LTMxOCw5ICszMTMsNyBAQCBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYpCiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6Y3VzdG9t
UHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2YpOwog
fQogCiB2b2lkIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0
aW9uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCBjMTYyODdlLi4zNDUzYWI5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAtNzEsNCArNzEsMzUgQEAgdm9p
ZCByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9v
bCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6
OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIHJldHVybiBmcmFtZSAmJiBm
cmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOworfQorCitib29sIHNob3Vs
ZEFsbG93TmF2aWdhdGlvbihGcmFtZSogZnJhbWUpCit7CisgICAgRnJhbWUqIGFjdGl2ZUZyYW1l
ID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckNhbGxpbmdDb250ZXh0KCk7CisgICAgcmV0dXJu
IGFjdGl2ZUZyYW1lICYmIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0
aW9uKGZyYW1lKTsKK30KKworS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHJlbGF0aXZl
VVJMKQoreworICAgIC8vIEZvciBoaXN0b2ljYWwgcmVhc29ucywgd2UgbmVlZCB0byBjb21wbGV0
ZSB0aGUgVVJMIHVzaW5nIHRoZSBkeW5hbWljIGZyYW1lLgorICAgIEZyYW1lKiBmcmFtZSA9IFY4
UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+Y29t
cGxldGVVUkwocmVsYXRpdmVVUkwpOworfQorCit2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QpCit7CisgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmll
dmVGcmFtZUZvckNhbGxpbmdDb250ZXh0KCk7CisgICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IFNjcmlw
dENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIo
KS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKaW5kZXggMjgyOGRlYS4uOTMzNDlkNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhVdGlsaXRpZXMuaApAQCAtNDAsNiArNDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdm9pZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpMb2NhbDx2ODo6T2JqZWN0Piwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4sIGludCBjYWNoZUluZGV4KTsKIHZvaWQgcmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6Ok9iamVjdD4sIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBp
bnQgY2FjaGVJbmRleCk7CiAKK2Jvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Citib29sIHNo
b3VsZEFsbG93TmF2aWdhdGlvbihGcmFtZSogZnJhbWUpOworS1VSTCBjb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmIHJlbGF0aXZlVVJMKTsKK3ZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4VXRpbGl0
aWVzX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93
Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCA4YWIzYjUzLi5lNjllZWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC04MDEsMjkgKzgwMSwyMCBAQCBOQU1F
RF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93KQogfQogCiAKLXZvaWQgVjhDdXN0b206OldpbmRv
d1NldExvY2F0aW9uKERPTVdpbmRvdyogd2luZG93LCBjb25zdCBTdHJpbmcmIHYpCit2b2lkIFY4
Q3VzdG9tOjpXaW5kb3dTZXRMb2NhdGlvbihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVVSTCkKIHsKLSAgICBpZiAoIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICBGcmFtZSog
ZnJhbWUgPSB3aW5kb3ctPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVu
dGVyZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFs
bG93TmF2aWdhdGlvbihmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYWN0aXZl
RnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24od2luZG93LT5mcmFtZSgpKSkK
KyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMKTsKKyAgICBpZiAodXJsLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhcnNlVVJMKHYpLnN0YXJ0c1dp
dGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpCi0gICAgICAgIHx8IFNjcmlwdENvbnRyb2xsZXI6Omlz
U2FmZVNjcmlwdCh3aW5kb3ctPmZyYW1lKCkpKSB7Ci0gICAgICAgIFN0cmluZyBjb21wbGV0ZWRV
cmwgPSBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHYpLnN0cmluZygpOwotICAK
LSAgICAgICAgLy8gRklYTUU6IFRoZSBKU0MgYmluZGluZ3MgcGFzcyAhYW55UGFnZUlzUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkgZm9yCi0gICAgICAgIC8vIHRoZSBsb2NrSGlzdG9yeSBwYXJhbWV0
ZXIuICBXZSBzaG91bGQgcHJvYmFibHkgZG8gc29tZXRoaW5nIHNpbWlsYXIuCi0gIAotICAgICAg
ICB3aW5kb3ctPmZyYW1lKCktPmxvYWRlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBs
ZXRlZFVybCwKLSAgICAgICAgICAgIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpLCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICBhY3RpdmVGcmFtZS0+c2NyaXB0KCkt
PnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKLSAgICB9CisgICAgbmF2aWdhdGVJZkFsbG93ZWQo
ZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGYyNzU5OGQuLjc4NmVhODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhDdXN0b21FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgorI2luY2x1
ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKQEAgLTU3LDIxICs1OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IHdlJ3JlIGp1c3QgbWFraW5nIGFsbCB0aGVzZSBjdXN0b20gZm9yIG5vdy4gIFRoZSBmdW5jdGlv
bmFsaXR5IGlzIHNpbXBsZQogLy8gYW5kIG1pcnJvcnMgSlNMb2NhdGlvbkN1c3RvbS5jcHAuCiAK
LXN0YXRpYyB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCi17Ci0gICAg
aWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZyYW1lKiBhY3RpdmVG
cmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwotICAgIGlm
ICghYWN0aXZlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdXJsLnByb3RvY29s
SXMoImphdmFzY3JpcHQiKSB8fCBTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUp
KSB7Ci0gICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPm91dGdv
aW5nUmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHVzZXJHZXN0
dXJlKTsKLSAgICB9Ci19Ci0KIEFDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhhc2gpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uTG9jYXRpb24uaGFzaC5fc2V0Iik7CkBAIC0xMzcsMjAgKzEyMywxOSBA
QCBBQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25IcmVmKQogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0
aW9uLmhyZWYuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5Ib2xkZXIoKTsKICAgICBMb2NhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8
TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7Ci0gICAgU3RyaW5nIGhy
ZWYgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gaW1wLT5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lKiBh
Y3RpdmVGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwot
ICAgIGlmICghYWN0aXZlRnJhbWUpCisgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+
c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJM
KHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCBhY3RpdmVGcmFtZS0+bG9h
ZGVyKCktPmNvbXBsZXRlVVJMKGhyZWYpLCBmYWxzZSwgZmFsc2UpOworICAgIG5hdmlnYXRlSWZB
bGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIEFDQ0VTU09SX1NFVFRFUihM
b2NhdGlvblBhdGhuYW1lKQpAQCAtMjg1LDE4ICsyNzAsMTEgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNM
KExvY2F0aW9uUmVsb2FkKQogICAgIExvY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9i
amVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKIAogICAgIEZy
YW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6
cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkK
KyAgICBpZiAoIWZyYW1lIHx8ICFTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUp
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgaWYgKCFTY3JpcHRDb250
cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwotCi0gICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZVJlZnJl
c2godXNlckdlc3R1cmUpOworICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxv
YWRlcigpLT51cmwoKSkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVSZWZyZXNo
KHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCkBAIC0zMDUsMjAgKzI4MywxOSBAQCBDQUxMQkFDS19GVU5DX0RFQ0woTG9jYXRpb25SZXBs
YWNlKQogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlcGxhY2UiKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBMb2NhdGlvbiogaW1w
ID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJ
T04sIGhvbGRlcik7Ci0gICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsK
IAogICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0g
VjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFhY3Rp
dmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpCiAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2FkZXIo
KS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRl
VVJMKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisgICAgaWYgKHVybC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZy
YW1lLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVybCksIHRydWUsIHRydWUp
OworICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIHRydWUsIHRydWUpOwogICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTMyNywyMCArMzA0LDE5IEBAIENBTExCQUNL
X0ZVTkNfREVDTChMb2NhdGlvbkFzc2lnbikKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5h
c3NpZ24iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaG9sZGVyID0gYXJncy5Ib2xkZXIo
KTsKICAgICBMb2NhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8TG9jYXRpb24+
KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7Ci0gICAgU3RyaW5nIHVybCA9IHRvV2Vi
Q29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAg
RnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250
ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdh
dGlvbihmcmFtZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAo
IWFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAg
ICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisgICAg
aWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAg
IG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRl
VVJMKHVybCksIGZhbHNlLCBmYWxzZSk7CisgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVy
bCwgZmFsc2UsIGZhbHNlKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi0tIAox
LjYuMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30653</attachid>
            <date>2009-05-25 09:52:52 -0700</date>
            <delta_ts>2009-05-25 12:10:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0002-lexical-window.location.patch</filename>
            <type>text/plain</type>
            <size>30802</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBkMDk0NWU5MWU5ZTlkZTZlM2Y5ODJiMWUzODUwZDVlNzY2MTZiNzdjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogTW9uLCAyNSBNYXkgMjAwOSAwMzoyMjo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGxleGlj
YWwgd2luZG93LmxvY2F0aW9uCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysKIC4uLi9jb250ZXh0LWZvci1sb2NhdGlv
bi1hc3NpZ24tZXhwZWN0ZWQudHh0ICAgICAgIHwgICAgMiArCiAuLi4vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwgICAgICAgICAgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9j
b250ZXh0LWZvci1sb2NhdGlvbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgICAgMiArCiAu
Li4vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQgICAgICAgICB8ICAgIDIg
KwogLi4uL2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLmh0bWwgfCAg
IDMzICsrKysrKysrKysrCiAuLi4vZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9u
Lmh0bWwgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1l
LWZvci1sb2NhdGlvbi5odG1sICAgICAgIHwgICAgNCArCiAuLi4vcmVzb3VyY2VzL3RhcmdldC1m
b3ItbG9jYXRpb24uaHRtbCAgICAgICAgICAgICB8ICAgMTQgKysrKysKIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NyArKysrKysrKysrKysr
KysKIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCAgICAgICAgICAgICAgIHwg
ICAyNyArKysrKysrKysKIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggICAgICAg
ICAgICAgICAgIHwgICAgNSArKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgICAgICAgICAgfCAgIDI0ICsrKysrLS0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwICAgICAgICAgICB8ICAgNTcgKysrKysrKystLS0tLS0tLS0tCiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCAgICAgICAgICAgICAgICB8ICAgMzIgKysr
KysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oICAgICAgICAgICAgICAg
ICAgfCAgICA5ICsrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwICAgfCAgIDI0ICsrKy0tLS0tCiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcCAgICB8ICAgNjAgKysrKysrLS0tLS0tLS0tLS0tLS0KIDE4IGZpbGVz
IGNoYW5nZWQsIDMyNyBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4
dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlv
bi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxl
LWZyYW1lLWZvci1sb2NhdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3RhcmdldC1mb3It
bG9jYXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTk5YzMzLi4yNGRmOWIyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMDktMDUtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9nPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjAwNgorCisgICAgICAgIFRlc3Qgb3VyIHVzZSBv
ZiBkeW5hbWljR2xvYmFsT2JqZWN0IGFuZCBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvcgorICAgICAg
ICB3aW5kb3cubG9jYXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0
LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
aHJlZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZv
ci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAwOS0wNS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNz
aWduLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZkYTYwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQt
Zm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitkb2N1bWVu
dC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDk5YjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIGdvKCkg
eworICAgIGZyYW1lc1swXS5mcmFtZXNbMF0ubG9jYXRpb24uYXNzaWduKCJ0YXJnZXQtZm9yLWxv
Y2F0aW9uLmh0bWwiKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBm
dW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRp
b24uaHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yM2I5MjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorZG9jdW1lbnQucmVmZXJyZXIgPSBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0
aW9uLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZv
ci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42NmMzODU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitkb2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
aHJlZi5odG1sCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0
aW9uLWhyZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTZkNWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNn
KSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChk
aXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAgICBmcmFtZXNbMF0uZnJhbWVzWzBdLmxvY2F0
aW9uLmhyZWYgPSAidGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sIjsKK30KKword2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmFiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAg
ICBmcmFtZXNbMF0uZnJhbWVzWzBdLmxvY2F0aW9uID0gInRhcmdldC1mb3ItbG9jYXRpb24uaHRt
bCI7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkg
eworICAgIGxvZyhlLmRhdGEpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgZmFsc2Up
OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGlmcmFtZSBzcmM9InJlc291cmNlcy9taWRkbGUtZnJhbWUtZm9yLWxvY2F0aW9uLmh0bWwiPgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
cmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hM2I5MDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL21pZGRsZS1m
cmFtZS1mb3ItbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDQgQEAKKzxpZnJhbWUgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+Cis8c2NyaXB0PgordG9wLmdvKCk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy90YXJnZXQtZm9yLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNzc4MjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIG1zZyA9ICJkb2N1bWVudC5yZWZlcnJlciA9ICIgKyBkb2N1
bWVudC5yZWZlcnJlcjsKKyAgICB0b3AucG9zdE1lc3NhZ2UobXNnLCAiKiIpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0NvcnJlY3QgdGFyZ2V0LgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTlhNGQ5Li5lODAzNjc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDUzIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2MDA2CisKKyAgICAgICAgU29ydCBvdXQgb3VyIHVzZSBvZiBkeW5hbWljR2xvYmFs
T2JqZWN0IGFuZCBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvcgorICAgICAgICB3aW5kb3cubG9jYXRp
b24uICBUaGUgY29ycmVjdCB1c2UgYXBwZWFycyB0byBiZSBhcyBmb2xsb3dzOgorCisgICAgICAg
IDEpIFVzZSBkeW5hbWljR2xvYmFsT2JqZWN0IHRvIGZpbmQgdGhlIHVzZXIgZ2VzdHVyZS4KKyAg
ICAgICAgMikgVXNlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8gY29tcGxldGUgVVJMcy4KKyAgICAg
ICAgMykgVXNlIGxleGljYWxHbG9iYWxPYmplY3QgdG8gZmluZCB0aGUgcmVmZXJyZXIuCisgICAg
ICAgIDQpIFVzZSBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvciB0aGUgZnJhbWUgbmF2aWdhdGlvbiBj
aGVja3MuCisgICAgICAgIDUpIFVzZSBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvciB0aGUgWFNTIGNo
ZWNrcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
Y29udGV4dC1mb3ItbG9jYXRpb24uaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0FjdGl2ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNl
dExvY2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5hdmlnYXRlSWZBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTG9jYXRpb246OnNldEhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cmVw
bGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNMb2NhdGlvbjo6YXNzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb25Qcm90b3R5cGU6OmN1
c3RvbVB1dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb21wbGV0ZVVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDdXN0b206OldpbmRvd1NldExvY2F0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKworMjAwOS0wNS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjAwNAogCiAgICAg
ICAgIFRoZSBvcmlnaW4gZm9yIHBvc3RNZXNzYWdlIHNob3VsZCBmb2xsb3cgbGV4aWNhbCBzY29w
ZSwgbm90IGR5bmFtaWMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBjOWFm
YzA2Li44ODBiNjM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC01MDQs
NiArNTA0LDEyIEBAIGJvb2wgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKEV4ZWNTdGF0ZSogZXhlYywg
RnJhbWUqIGZyYW1lLCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgcmV0dXJuIHdpbmRvdyAmJiB3aW5k
b3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYywgbWVzc2FnZSk7CiB9CiAKK2Jvb2wgc2hvdWxkQWxs
b3dOYXZpZ2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGZyYW1lKQoreworICAgIEZyYW1l
KiBjYWxsaW5nRnJhbWUgPSB0b0NhbGxpbmdGcmFtZShleGVjKTsKKyAgICByZXR1cm4gY2FsbGlu
Z0ZyYW1lICYmIGNhbGxpbmdGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihm
cmFtZSk7Cit9CisKIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIWZyYW1lKQpAQCAtNTEyLDYgKzUx
OCwyNyBAQCB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UobWVz
c2FnZSk7CiB9CiAKK0ZyYW1lKiB0b0NhbGxpbmdGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1w
bCgpLT5mcmFtZSgpOworfQorCitib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgRnJhbWUqIGZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZy
YW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Cit9CisKK0tVUkwgY29tcGxl
dGVVUkwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKQoreworICAg
IC8vIEZvciBoaXN0b2ljYWwgcmVhc29ucywgd2UgbmVlZCB0byBjb21wbGV0ZSB0aGUgVVJMIHVz
aW5nIHRoZSBkeW5hbWljIGZyYW1lLgorICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01XaW5kb3co
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIo
KS0+Y29tcGxldGVVUkwocmVsYXRpdmVVUkwpOworfQorCisKIEpTVmFsdWUgb2JqZWN0VG9TdHJp
bmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JikKIHsKICAgICByZXR1cm4gbmV3IChleGVjKSBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCAwLCBwcm9wZXJ0eU5hbWUsIG9iamVjdFByb3RvRnVuY1Rv
U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDYxZDhjYTEuLjhmODY1
MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMTgzLDkgKzE4MywxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCBjdXJyZW50
IHByb3BlcnR5IHZhbHVlcyBpbnZvbHZlZCBhdCBhbGwuCiAgICAgYm9vbCBhbGxvd3NBY2Nlc3NG
cm9tRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwogICAgIGJvb2wgYWxsb3dzQWNjZXNz
RnJvbUZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqLCBTdHJpbmcmIG1lc3NhZ2UpOworICAg
IGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsKICAg
ICB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0
IEpTQzo6UHJvcGVydHlTbG90Jik7CiAKKyAgICBGcmFtZSogdG9DYWxsaW5nRnJhbWUoSlNDOjpF
eGVjU3RhdGUqKTsKKyAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZShKU0M6OkV4ZWNTdGF0
ZSopOworICAgIEtVUkwgY29tcGxldGVVUkwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlVVJMKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNE
T01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5k
ZXggMmZjY2VhMi4uNWQ3MWI5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKQEAgLTE3OSwxNSArMTc5LDE1IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmxvY2F0
aW9uKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEZyYW1lKiBhY3RpdmVG
cmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgp
LT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCisgICAgRnJhbWUqIGNhbGxpbmdGcmFt
ZSA9IHRvQ2FsbGluZ0ZyYW1lKGV4ZWMpOworICAgIGlmICghY2FsbGluZ0ZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgLy8gVG8gYXZv
aWQgYnJlYWtpbmcgb2xkIHdpZGdldHMsIG1ha2UgInZhciBsb2NhdGlvbiA9IiBpbiBhIHRvcC1s
ZXZlbCBmcmFtZSBjcmVhdGUKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlvbiIgaW5z
dGVhZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2ODgwMzk+
KS4KLSAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkp
IHsKLSAgICAgICAgaWYgKHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSgpICYmICFhY3RpdmVGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgIGlmIChT
ZXR0aW5ncyogc2V0dGluZ3MgPSBjYWxsaW5nRnJhbWUtPnNldHRpbmdzKCkpIHsKKyAgICAgICAg
aWYgKHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYm
ICFjYWxsaW5nRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgIGlmIChhbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICAgICAgICAgIHB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTUs
MTMgKzE5NSwxOSBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1l
LT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGltcGwoKS0+ZnJhbWUoKSkpCisgICAg
RnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisKKyAg
ICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihleGVjLCBmcmFtZSkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBTdHJpbmcgZHN0VXJsID0gYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVS
TCh2YWx1ZS50b1N0cmluZyhleGVjKSkuc3RyaW5nKCk7Ci0gICAgaWYgKCFwcm90b2NvbElzSmF2
YVNjcmlwdChkc3RVcmwpIHx8IGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpIHsKLSAgICAgICAgYm9v
bCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCk7CisKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKGV4ZWMsIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkg
ewogICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBj
YWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCi0gICAgICAgIGltcGwoKS0+ZnJhbWUoKS0+bG9hZGVy
KCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoZHN0VXJsLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCkt
Pm91dGdvaW5nUmVmZXJyZXIoKSwgIWFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7CisgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwsIGNhbGxpbmdGcmFtZS0+bG9h
ZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgIWNhbGxpbmdGcmFtZS0+c2NyaXB0KCktPmFueVBh
Z2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KGV4ZWMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20u
Y3BwCmluZGV4IDk3ZTYxYWIuLmM1MWJhYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcApAQCAtMTQ1LDExICsxNDUsMTIgQEAgdm9pZCBKU0xvY2F0aW9uOjpkZWZp
bmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEoKIAogc3RhdGljIHZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRXhlY1N0YXRlKiBleGVjLCBGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KQogewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3co
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywg
ZnJhbWUpKSB7Ci0gICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0
KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCkt
Pm91dGdvaW5nUmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHVz
ZXJHZXN0dXJlKTsKLSAgICB9CisgICAgRnJhbWUqIGNhbGxpbmdGcmFtZSA9IHRvQ2FsbGluZ0Zy
YW1lKGV4ZWMpOworICAgIGlmICghY2FsbGluZ0ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1l
KGV4ZWMsIGZyYW1lKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZUxvY2F0aW9u
Q2hhbmdlKHVybC5zdHJpbmcoKSwgY2FsbGluZ0ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgcHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE1NywxMyArMTU4LDEzIEBAIHZvaWQgSlNMb2NhdGlv
bjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgRnJhbWUqIGZy
YW1lID0gaW1wbCgpLT5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBGcmFtZSog
YWN0aXZlRnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSkt
PmltcGwoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lKQorICAgIGlmICghc2hvdWxk
QWxsb3dOYXZpZ2F0aW9uKGV4ZWMsIGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICgh
YWN0aXZlRnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKQorCisg
ICAgS1VSTCB1cmwgPSBjb21wbGV0ZVVSTChleGVjLCB2YWx1ZS50b1N0cmluZyhleGVjKSk7Cisg
ICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBh
Y3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHZhbHVlLnRvU3RyaW5nKGV4ZWMpKTsK
ICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgdXJsLCAhZnJhbWUtPnNjcmlwdCgp
LT5hbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSwgZmFsc2UpOwogfQogCkBAIC0yNjEs
MzAgKzI2MiwyNSBAQCBKU1ZhbHVlIEpTTG9jYXRpb246OnJlcGxhY2UoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYXNKU0RPTVdpbmRvdyhl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7Ci0gICAgaWYgKCFh
Y3RpdmVGcmFtZSkgCisgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5s
b2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKworICAgIEtVUkwgdXJsID0g
Y29tcGxldGVVUkwoZXhlYywgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKHVy
bC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBuYXZpZ2F0
ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVS
TChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgbmF2aWdhdGVJ
ZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKIEpTVmFsdWUgSlNMb2NhdGlvbjo6cmVsb2FkKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAg
SlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZnJhbWUpOwotICAgIGlmICghd2lu
ZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmICghZnJhbWUgfHwgIWFsbG93c0Fj
Y2Vzc0Zyb21GcmFtZShleGVjLCBmcmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCi0gICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChmcmFtZS0+bG9hZGVyKCktPnVybCgp
KSB8fCAod2luZG93ICYmIHdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkpIHsKLSAgICAg
ICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVSZWZyZXNoKHVzZXJHZXN0dXJl
KTsKLSAgICB9CisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChmcmFtZS0+bG9hZGVyKCkt
PnVybCgpKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZVJlZnJlc2gocHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApA
QCAtMjk0LDIzICsyOTAsMjIgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjphc3NpZ24oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYXNKU0RPTVdp
bmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7Ci0gICAg
aWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihleGVjLCBm
cmFtZSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGlmICghYWN0aXZlRnJh
bWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKQorCisgICAgS1VSTCB1
cmwgPSBjb21wbGV0ZVVSTChleGVjLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBp
ZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoaXMgSlMgd2FzIGNhbGxlZCB2aWEgYSB1
c2VyIGdlc3R1cmUKLSAgICBuYXZpZ2F0ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgYWN0aXZlRnJh
bWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpKSwgIWZy
YW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsK
KyAgICBuYXZpZ2F0ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgdXJsLCAhZnJhbWUtPnNjcmlwdCgp
LT5hbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSwgZmFsc2UpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5m
cmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKKyAgICBpZiAoIWZy
YW1lIHx8ICFhbGxvd3NBY2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpbXBsKCktPnRv
U3RyaW5nKCkpOwpAQCAtMzE4LDkgKzMxMyw3IEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6dG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JikKIAogYm9vbCBKU0xvY2F0aW9uUHJv
dG90eXBlOjpjdXN0b21QdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudmFsdWVPZik7CiB9CiAKIHZvaWQgSlNMb2NhdGlvblByb3RvdHlwZTo6ZGVmaW5lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogZ2V0dGVyRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4IGMx
NjI4N2UuLjM5NWE4ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcx
LDQgKzcyLDM1IEBAIHZvaWQgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gb2JqZWN0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKK2Jvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBy
ZXR1cm4gZnJhbWUgJiYgZnJhbWUtPnNjcmlwdCgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsK
K30KKworYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb24oRnJhbWUqIGZyYW1lKQoreworICAgIEZy
YW1lKiBjYWxsaW5nRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRl
eHQoKTsKKyAgICByZXR1cm4gY2FsbGluZ0ZyYW1lICYmIGNhbGxpbmdGcmFtZS0+bG9hZGVyKCkt
PnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSk7Cit9CisKK0tVUkwgY29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJiByZWxhdGl2ZVVSTCkKK3sKKyAgICAvLyBGb3IgaGlzdG9pY2FsIHJlYXNvbnMs
IHdlIG5lZWQgdG8gY29tcGxldGUgdGhlIFVSTCB1c2luZyB0aGUgZHluYW1pYyBmcmFtZS4KKyAg
ICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBm
cmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMKTsKK30KKwordm9pZCBuYXZp
Z2F0ZUlmQWxsb3dlZChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBsb2NrSGlz
dG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQoreworICAgIEZyYW1lKiBjYWxsaW5nRnJh
bWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ2FsbGluZ0NvbnRleHQoKTsKKyAgICBpZiAo
IWNhbGxpbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpIHx8IFNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpCisg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwuc3RyaW5n
KCksIGNhbGxpbmdGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCmluZGV4IDI4
MjhkZWEuLjdmZTdlNDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKQEAgLTM1LDExICsz
NSwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZyYW1lOworY2xhc3MgS1VS
TDsKK2NsYXNzIFN0cmluZzsKKwogLy8gVXNlIGFuIGFycmF5IHRvIGhvbGQgZGVwZW5kZW50cy4g
SXQgd29ya3MgbGlrZSBhIHJlZi1jb3VudGVkIHNjaGVtZS4KIC8vIEEgdmFsdWUgY2FuIGJlIGFk
ZGVkIG1vcmUgdGhhbiBvbmNlIHRvIHRoZSBET00gb2JqZWN0Lgogdm9pZCBjcmVhdGVIaWRkZW5E
ZXBlbmRlbmN5KHY4OjpMb2NhbDx2ODo6T2JqZWN0Piwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGlu
dCBjYWNoZUluZGV4KTsKIHZvaWQgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6
Ok9iamVjdD4sIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBpbnQgY2FjaGVJbmRleCk7CiAKK2Jvb2wg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Citib29sIHNob3VsZEFsbG93TmF2aWdhdGlvbihGcmFt
ZSogZnJhbWUpOworS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKTsK
K3ZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJv
b2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4VXRpbGl0aWVzX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA4YWIzYjUzLi5jMDRl
MDM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgor
I2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAKICNpbmNsdWRlICJCYXNlNjQuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCkBAIC04MDEsMjkgKzgwMiwyMCBAQCBOQU1FRF9QUk9QRVJUWV9H
RVRURVIoRE9NV2luZG93KQogfQogCiAKLXZvaWQgVjhDdXN0b206OldpbmRvd1NldExvY2F0aW9u
KERPTVdpbmRvdyogd2luZG93LCBjb25zdCBTdHJpbmcmIHYpCit2b2lkIFY4Q3VzdG9tOjpXaW5k
b3dTZXRMb2NhdGlvbihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVS
TCkKIHsKLSAgICBpZiAoIXdpbmRvdy0+ZnJhbWUoKSkKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5k
b3ctPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJh
bWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0
KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlv
bihmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYWN0aXZlRnJhbWUtPmxvYWRl
cigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24od2luZG93LT5mcmFtZSgpKSkKKyAgICBLVVJMIHVy
bCA9IGNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhcnNlVVJMKHYpLnN0YXJ0c1dpdGgoImphdmFzY3Jp
cHQ6IiwgZmFsc2UpCi0gICAgICAgIHx8IFNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdCh3
aW5kb3ctPmZyYW1lKCkpKSB7Ci0gICAgICAgIFN0cmluZyBjb21wbGV0ZWRVcmwgPSBhY3RpdmVG
cmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHYpLnN0cmluZygpOwotICAKLSAgICAgICAgLy8g
RklYTUU6IFRoZSBKU0MgYmluZGluZ3MgcGFzcyAhYW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCkgZm9yCi0gICAgICAgIC8vIHRoZSBsb2NrSGlzdG9yeSBwYXJhbWV0ZXIuICBXZSBzaG91
bGQgcHJvYmFibHkgZG8gc29tZXRoaW5nIHNpbWlsYXIuCi0gIAotICAgICAgICB3aW5kb3ctPmZy
YW1lKCktPmxvYWRlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbXBsZXRlZFVybCwKLSAg
ICAgICAgICAgIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBmYWxz
ZSwgZmFsc2UsCi0gICAgICAgICAgICBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKTsKLSAgICB9CisgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwg
ZmFsc2UsIGZhbHNlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGYyNzU5OGQuLmM1ZjNiMWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlY4VXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKQEAgLTUxLDI3ICs1MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGlzIGNsYXNz
IGlzIG5vdCB2ZXJ5IEpTLWVuZ2luZSBzcGVjaWZpYy4gIElmIHdlIGNhbiBtb3ZlIGEgY291cGxl
IG9mCiAvLyBtZXRob2RzIHRvIHRoZSBzY3JpcHRDb250cm9sbGVyLCB3ZSBzaG91bGQgYmUgYWJs
ZSB0byB1bmlmeSB0aGUgY29kZQogLy8gYmV0d2VlbiBKU0MgYW5kIFY4OgotLy8gICAgcmV0cmll
dmVBY3RpdmVGcmFtZSgpICAgLSBpbiBKU0MsIHRoaXMgbmVlZHMgYW4gRXhlY1N0YXRlLgorLy8g
ICAgdG9DYWxsaW5nRnJhbWUoKSAgIC0gaW4gSlNDLCB0aGlzIG5lZWRzIGFuIEV4ZWNTdGF0ZS4K
IC8vICAgIGlzU2FmZVNjcmlwdCgpCi0vLyBTaW5jZSBKU0MgYW5kIFY4IGhhdmUgZGlmZmVyZW50
IG1lY2hhbmlzbXMgZm9yIGdldHRpbmcgYXQgdGhlIEFjdGl2ZUZyYW1lLAorLy8gU2luY2UgSlND
IGFuZCBWOCBoYXZlIGRpZmZlcmVudCBtZWNoYW5pc21zIGZvciBnZXR0aW5nIGF0IHRoZSBjYWxs
aW5nIGZyYW1lLAogLy8gd2UncmUganVzdCBtYWtpbmcgYWxsIHRoZXNlIGN1c3RvbSBmb3Igbm93
LiAgVGhlIGZ1bmN0aW9uYWxpdHkgaXMgc2ltcGxlCiAvLyBhbmQgbWlycm9ycyBKU0xvY2F0aW9u
Q3VzdG9tLmNwcC4KIAotc3RhdGljIHZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJk
TGlzdCkKLXsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
RnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250
ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCF1cmwucHJvdG9jb2xJcygiamF2YXNjcmlwdCIpIHx8IFNjcmlwdENvbnRyb2xsZXI6OmlzU2Fm
ZVNjcmlwdChmcmFtZSkpIHsKLSAgICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1l
LT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5s
b2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgdXNlckdlc3R1cmUpOwotICAgIH0KLX0KLQogQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9u
SGFzaCkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5oYXNoLl9zZXQiKTsKQEAgLTEz
NywyMCArMTIzLDE5IEBAIEFDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhyZWYpCiAgICAgSU5DX1NU
QVRTKCJET00uTG9jYXRpb24uaHJlZi5fc2V0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogICAgIExvY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpU
b05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsK
LSAgICBTdHJpbmcgaHJlZiA9IHRvV2ViQ29yZVN0cmluZyh2YWx1ZSk7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBpbXAtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVy
ZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93
TmF2aWdhdGlvbihmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYWN0aXZlRnJh
bWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKQorICAgIEtVUkwgdXJs
ID0gY29tcGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKHZhbHVlKSk7CisgICAgaWYgKHVybC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIGFj
dGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoaHJlZiksIGZhbHNlLCBmYWxzZSk7Cisg
ICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKIH0KIAogQUND
RVNTT1JfU0VUVEVSKExvY2F0aW9uUGF0aG5hbWUpCkBAIC0yODUsMTggKzI3MCwxMSBAQCBDQUxM
QkFDS19GVU5DX0RFQ0woTG9jYXRpb25SZWxvYWQpCiAgICAgTG9jYXRpb24qIGltcCA9IFY4UHJv
eHk6OlRvTmF0aXZlT2JqZWN0PExvY2F0aW9uPihWOENsYXNzSW5kZXg6OkxPQ0FUSU9OLCBob2xk
ZXIpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUp
Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBGcmFtZSogYWN0aXZlRnJh
bWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKLSAgICBpZiAo
IWFjdGl2ZUZyYW1lKQorICAgIGlmICghZnJhbWUgfHwgIVNjcmlwdENvbnRyb2xsZXI6OmlzU2Fm
ZVNjcmlwdChmcmFtZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBp
ZiAoIVNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0aXZlRnJhbWUt
PnNjcmlwdCgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICBmcmFtZS0+bG9hZGVyKCkt
PnNjaGVkdWxlUmVmcmVzaCh1c2VyR2VzdHVyZSk7CisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNj
cmlwdChmcmFtZS0+bG9hZGVyKCktPnVybCgpKSkKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5z
Y2hlZHVsZVJlZnJlc2gocHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTMwNSwyMCArMjgzLDE5IEBAIENBTExCQUNLX0ZVTkNfREVD
TChMb2NhdGlvblJlcGxhY2UpCiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVwbGFjZSIp
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAg
IExvY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFz
c0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKLSAgICBTdHJpbmcgdXJsID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOwogCiAgICAgRnJhbWUqIGZyYW1lID0gaW1wLT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBGcmFtZSog
YWN0aXZlRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsK
LSAgICBpZiAoIWFjdGl2ZUZyYW1lKQorICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZy
YW1lKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIGlmICghYWN0aXZl
RnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKQorICAgIEtVUkwg
dXJsID0gY29tcGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKyAgICBpZiAodXJs
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgbmF2aWdh
dGVJZkFsbG93ZWQoZnJhbWUsIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwodXJs
KSwgdHJ1ZSwgdHJ1ZSk7CisgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVybCwgdHJ1ZSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIApAQCAtMzI3LDIwICszMDQs
MTkgQEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uQXNzaWduKQogICAgIElOQ19TVEFUUygi
RE9NLkxvY2F0aW9uLmFzc2lnbiIpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBob2xkZXIg
PSBhcmdzLkhvbGRlcigpOwogICAgIExvY2F0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9i
amVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKLSAgICBTdHJp
bmcgdXJsID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogCiAgICAgRnJhbWUqIGZyYW1lID0g
aW1wLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAKLSAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1l
Rm9yRW50ZXJlZENvbnRleHQoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lKQorICAgIGlmICghc2hv
dWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIAotICAgIGlmICghYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRp
b24oZnJhbWUpKQorICAgIEtVUkwgdXJsID0gY29tcGxldGVVUkwodG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIGFjdGl2ZUZyYW1lLT5sb2Fk
ZXIoKS0+Y29tcGxldGVVUkwodXJsKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBuYXZpZ2F0ZUlmQWxs
b3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLS0gCjEuNi4wLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30657</attachid>
            <date>2009-05-25 12:10:41 -0700</date>
            <delta_ts>2009-05-25 12:21:22 -0700</delta_ts>
            <desc>patch with lexicalFrame</desc>
            <filename>0002-lexical-window.location.patch</filename>
            <type>text/plain</type>
            <size>30803</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAzZWFjOWVlMzc1YjdjN2VmMjE1NmYyMzE0NGQ0OGQ2OGM1YTcyOGUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogTW9uLCAyNSBNYXkgMjAwOSAwMzoyMjo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGxleGlj
YWwgd2luZG93LmxvY2F0aW9uCgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysKIC4uLi9jb250ZXh0LWZvci1sb2NhdGlv
bi1hc3NpZ24tZXhwZWN0ZWQudHh0ICAgICAgIHwgICAgMiArCiAuLi4vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwgICAgICAgICAgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9j
b250ZXh0LWZvci1sb2NhdGlvbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgICAgMiArCiAu
Li4vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQgICAgICAgICB8ICAgIDIg
KwogLi4uL2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLmh0bWwgfCAg
IDMzICsrKysrKysrKysrCiAuLi4vZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9u
Lmh0bWwgICAgICB8ICAgMzMgKysrKysrKysrKysKIC4uLi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1l
LWZvci1sb2NhdGlvbi5odG1sICAgICAgIHwgICAgNCArCiAuLi4vcmVzb3VyY2VzL3RhcmdldC1m
b3ItbG9jYXRpb24uaHRtbCAgICAgICAgICAgICB8ICAgMTQgKysrKysKIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NyArKysrKysrKysrKysr
KysKIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCAgICAgICAgICAgICAgIHwg
ICAyNyArKysrKysrKysKIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggICAgICAg
ICAgICAgICAgIHwgICAgNSArKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgICAgICAgICAgfCAgIDI0ICsrKysrLS0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9j
YXRpb25DdXN0b20uY3BwICAgICAgICAgICB8ICAgNTcgKysrKysrKystLS0tLS0tLS0tCiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCAgICAgICAgICAgICAgICB8ICAgMzIgKysr
KysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oICAgICAgICAgICAgICAg
ICAgfCAgICA5ICsrKwogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwICAgfCAgIDI0ICsrKy0tLS0tCiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcCAgICB8ICAgNjAgKysrKysrLS0tLS0tLS0tLS0tLS0KIDE4IGZpbGVz
IGNoYW5nZWQsIDMyNyBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4
dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlv
bi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxl
LWZyYW1lLWZvci1sb2NhdGlvbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3RhcmdldC1mb3It
bG9jYXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTk5YzMzLi4yNGRmOWIyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMDktMDUtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9nPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjAwNgorCisgICAgICAgIFRlc3Qgb3VyIHVzZSBv
ZiBkeW5hbWljR2xvYmFsT2JqZWN0IGFuZCBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvcgorICAgICAg
ICB3aW5kb3cubG9jYXRpb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0
LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9j
b250ZXh0LWZvci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
aHJlZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZv
ci1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAwOS0wNS0yNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNz
aWduLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZkYTYwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQt
Zm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitkb2N1bWVu
dC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDk5YjRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9j
YXRpb24tYXNzaWduLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIGdvKCkg
eworICAgIGZyYW1lc1swXS5mcmFtZXNbMF0ubG9jYXRpb24uYXNzaWduKCJ0YXJnZXQtZm9yLWxv
Y2F0aW9uLmh0bWwiKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBm
dW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRp
b24uaHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yM2I5MjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorZG9jdW1lbnQucmVmZXJyZXIgPSBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0
aW9uLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZv
ci1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42NmMzODU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitkb2N1bWVudC5yZWZlcnJlciA9IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
aHJlZi5odG1sCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0
aW9uLWhyZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTZkNWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24taHJlZi5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNn
KSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChk
aXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAgICBmcmFtZXNbMF0uZnJhbWVzWzBdLmxvY2F0
aW9uLmhyZWYgPSAidGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sIjsKK30KKword2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7CisgICAgbG9nKGUuZGF0YSk7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L2NvbnRleHQtZm9yLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZmFiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBnbygpIHsKKyAg
ICBmcmFtZXNbMF0uZnJhbWVzWzBdLmxvY2F0aW9uID0gInRhcmdldC1mb3ItbG9jYXRpb24uaHRt
bCI7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZSkg
eworICAgIGxvZyhlLmRhdGEpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgZmFsc2Up
OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGlmcmFtZSBzcmM9InJlc291cmNlcy9taWRkbGUtZnJhbWUtZm9yLWxvY2F0aW9uLmh0bWwiPgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbWlkZGxlLWZyYW1lLWZvci1sb2NhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
cmVzb3VyY2VzL21pZGRsZS1mcmFtZS1mb3ItbG9jYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hM2I5MDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL21pZGRsZS1m
cmFtZS1mb3ItbG9jYXRpb24uaHRtbApAQCAtMCwwICsxLDQgQEAKKzxpZnJhbWUgc3JjPSJhYm91
dDpibGFuayI+PC9pZnJhbWU+Cis8c2NyaXB0PgordG9wLmdvKCk7Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy90YXJnZXQtZm9yLWxvY2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNzc4MjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvdGFyZ2V0LWZvci1sb2NhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Cit3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIG1zZyA9ICJkb2N1bWVudC5yZWZlcnJlciA9ICIgKyBkb2N1
bWVudC5yZWZlcnJlcjsKKyAgICB0b3AucG9zdE1lc3NhZ2UobXNnLCAiKiIpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0NvcnJlY3QgdGFyZ2V0LgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTlhNGQ5Li43MDFmMWQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDUzIEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2MDA2CisKKyAgICAgICAgU29ydCBvdXQgb3VyIHVzZSBvZiBkeW5hbWljR2xvYmFs
T2JqZWN0IGFuZCBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvcgorICAgICAgICB3aW5kb3cubG9jYXRp
b24uICBUaGUgY29ycmVjdCB1c2UgYXBwZWFycyB0byBiZSBhcyBmb2xsb3dzOgorCisgICAgICAg
IDEpIFVzZSBkeW5hbWljR2xvYmFsT2JqZWN0IHRvIGZpbmQgdGhlIHVzZXIgZ2VzdHVyZS4KKyAg
ICAgICAgMikgVXNlIGR5bmFtaWNHbG9iYWxPYmplY3QgdG8gY29tcGxldGUgVVJMcy4KKyAgICAg
ICAgMykgVXNlIGxleGljYWxHbG9iYWxPYmplY3QgdG8gZmluZCB0aGUgcmVmZXJyZXIuCisgICAg
ICAgIDQpIFVzZSBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvciB0aGUgZnJhbWUgbmF2aWdhdGlvbiBj
aGVja3MuCisgICAgICAgIDUpIFVzZSBsZXhpY2FsR2xvYmFsT2JqZWN0IGZvciB0aGUgWFNTIGNo
ZWNrcy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWhyZWYu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
Y29udGV4dC1mb3ItbG9jYXRpb24uaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0xleGljYWxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGxldGVVUkwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpz
ZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0xvY2F0aW9uOjpzZXRIcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnJl
cGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6cmVsb2FkKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTG9jYXRpb246OmFzc2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0
aW9uOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0xvY2F0aW9uUHJvdG90eXBlOjpj
dXN0b21QdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpz
aG91bGRBbGxvd05hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGxldGVVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6bmF2aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4VXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tOjpXaW5kb3dTZXRMb2Nh
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6
OkNBTExCQUNLX0ZVTkNfREVDTCk6CisKKzIwMDktMDUtMjUgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwMDQKIAogICAg
ICAgICBUaGUgb3JpZ2luIGZvciBwb3N0TWVzc2FnZSBzaG91bGQgZm9sbG93IGxleGljYWwgc2Nv
cGUsIG5vdCBkeW5hbWljCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggYzlh
ZmMwNi4uZGQ0MDc4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNTA0
LDYgKzUwNCwxMiBAQCBib29sIGFsbG93c0FjY2Vzc0Zyb21GcmFtZShFeGVjU3RhdGUqIGV4ZWMs
IEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogICAgIHJldHVybiB3aW5kb3cgJiYgd2lu
ZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMsIG1lc3NhZ2UpOwogfQogCitib29sIHNob3VsZEFs
bG93TmF2aWdhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBGcmFt
ZSogbGV4aWNhbEZyYW1lID0gdG9MZXhpY2FsRnJhbWUoZXhlYyk7CisgICAgcmV0dXJuIGxleGlj
YWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmxvYWRlcigpLT5zaG91bGRBbGxvd05hdmlnYXRpb24o
ZnJhbWUpOworfQorCiB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTUxMiw2ICs1
MTgsMjcgQEAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB3aW5kb3ctPnByaW50RXJyb3JNZXNzYWdlKG1l
c3NhZ2UpOwogfQogCitGcmFtZSogdG9MZXhpY2FsRnJhbWUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmlt
cGwoKS0+ZnJhbWUoKTsKK30KKworYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSAmJiBm
cmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOworfQorCitLVVJMIGNvbXBs
ZXRlVVJMKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCkKK3sKKyAg
ICAvLyBGb3IgaGlzdG9pY2FsIHJlYXNvbnMsIHdlIG5lZWQgdG8gY29tcGxldGUgdGhlIFVSTCB1
c2luZyB0aGUgZHluYW1pYyBmcmFtZS4KKyAgICBGcmFtZSogZnJhbWUgPSBhc0pTRE9NV2luZG93
KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBmcmFtZS0+bG9hZGVy
KCktPmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMKTsKK30KKworCiBKU1ZhbHVlIG9iamVjdFRvU3Ry
aW5nRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYpCiB7CiAgICAgcmV0dXJuIG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgMCwgcHJvcGVydHlOYW1lLCBvYmplY3RQcm90b0Z1bmNU
b1N0cmluZyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA2MWQ4Y2ExLi43YTI5
YWJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTE4Myw5ICsxODMsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgY3VycmVu
dCBwcm9wZXJ0eSB2YWx1ZXMgaW52b2x2ZWQgYXQgYWxsLgogICAgIGJvb2wgYWxsb3dzQWNjZXNz
RnJvbUZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsKICAgICBib29sIGFsbG93c0FjY2Vz
c0Zyb21GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKiwgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICBib29sIHNob3VsZEFsbG93TmF2aWdhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKik7CiAg
ICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25z
dCBKU0M6OlByb3BlcnR5U2xvdCYpOwogCisgICAgRnJhbWUqIHRvTGV4aWNhbEZyYW1lKEpTQzo6
RXhlY1N0YXRlKik7CisgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoSlNDOjpFeGVjU3Rh
dGUqKTsKKyAgICBLVVJMIGNvbXBsZXRlVVJMKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZVVSTCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpT
RE9NQmluZGluZ19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmlu
ZGV4IDJmY2NlYTIuLjI1ODc4NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCkBAIC0xNzksMTUgKzE3OSwxNSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpsb2Nh
dGlvbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBGcmFtZSogYWN0aXZl
RnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwo
KS0+ZnJhbWUoKTsKLSAgICBpZiAoIWFjdGl2ZUZyYW1lKQorICAgIEZyYW1lKiBsZXhpY2FsRnJh
bWUgPSB0b0xleGljYWxGcmFtZShleGVjKTsKKyAgICBpZiAoIWxleGljYWxGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIC8vIFRvIGF2
b2lkIGJyZWFraW5nIG9sZCB3aWRnZXRzLCBtYWtlICJ2YXIgbG9jYXRpb24gPSIgaW4gYSB0b3At
bGV2ZWwgZnJhbWUgY3JlYXRlCiAgICAgLy8gYSBwcm9wZXJ0eSBuYW1lZCAibG9jYXRpb24iIGlu
c3RlYWQgb2YgcGVyZm9ybWluZyBhIG5hdmlnYXRpb24gKDxyZGFyOi8vcHJvYmxlbS81Njg4MDM5
PikuCi0gICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGFjdGl2ZUZyYW1lLT5zZXR0aW5ncygp
KSB7Ci0gICAgICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKKyAgICBpZiAo
U2V0dGluZ3MqIHNldHRpbmdzID0gbGV4aWNhbEZyYW1lLT5zZXR0aW5ncygpKSB7CisgICAgICAg
IGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAm
JiAhbGV4aWNhbEZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoYWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgICAgICAgICBwdXREaXJlY3QoSWRlbnRpZmll
cihleGVjLCAibG9jYXRpb24iKSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk1
LDEzICsxOTUsMTkgQEAgdm9pZCBKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFhY3RpdmVGcmFt
ZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihpbXBsKCktPmZyYW1lKCkpKQorICAg
IEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworCisg
ICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1
cm47Ci0gICAgU3RyaW5nIGRzdFVybCA9IGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVV
UkwodmFsdWUudG9TdHJpbmcoZXhlYykpLnN0cmluZygpOwotICAgIGlmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQoZHN0VXJsKSB8fCBhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKSB7Ci0gICAgICAgIGJv
b2wgdXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpOworCisgICAgS1VSTCB1cmwgPSBjb21wbGV0ZVVSTChleGVjLCB2YWx1ZS50b1N0cmlu
ZyhleGVjKSk7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IGFsbG93c0FjY2Vzc0Zyb20oZXhlYykp
IHsKICAgICAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhpcyBKUyB3YXMg
Y2FsbGVkIHZpYSBhIHVzZXIgZ2VzdHVyZQotICAgICAgICBpbXBsKCktPmZyYW1lKCktPmxvYWRl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGRzdFVybCwgYWN0aXZlRnJhbWUtPmxvYWRlcigp
LT5vdXRnb2luZ1JlZmVycmVyKCksICFhY3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1By
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLCBsZXhpY2FsRnJhbWUtPmxv
YWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksICFsZXhpY2FsRnJhbWUtPnNjcmlwdCgpLT5hbnlQ
YWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSwgZmFsc2UsIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShleGVjKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAppbmRleCA5N2U2MWFiLi45YzVhODM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTE0NSwxMSArMTQ1LDEyIEBAIHZvaWQgSlNMb2NhdGlvbjo6ZGVm
aW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKCiAKIHN0YXRpYyB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEV4ZWNTdGF0ZSogZXhlYywgRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKIHsKLSAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBhc0pTRE9NV2luZG93
KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKTsKLSAgICBpZiAo
IXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMs
IGZyYW1lKSkgewotICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0aXZlRnJhbWUtPnNjcmlw
dCgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybC5zdHJpbmcoKSwgYWN0aXZlRnJhbWUtPmxvYWRlcigp
LT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB1
c2VyR2VzdHVyZSk7Ci0gICAgfQorICAgIEZyYW1lKiBsZXhpY2FsRnJhbWUgPSB0b0xleGljYWxG
cmFtZShleGVjKTsKKyAgICBpZiAoIWxleGljYWxGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpIHx8IGFsbG93c0FjY2Vzc0Zyb21GcmFt
ZShleGVjLCBmcmFtZSkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlv
bkNoYW5nZSh1cmwuc3RyaW5nKCksIGxleGljYWxGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHByb2Nlc3NpbmdVc2Vy
R2VzdHVyZShleGVjKSk7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0xNTcsMTMgKzE1OCwxMyBAQCB2b2lkIEpTTG9jYXRp
b246OnNldEhyZWYoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIEZyYW1lKiBm
cmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogCi0gICAgRnJhbWUq
IGFjdGl2ZUZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkp
LT5pbXBsKCktPmZyYW1lKCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3Vs
ZEFsbG93TmF2aWdhdGlvbihleGVjLCBmcmFtZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
IWFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKwor
ICAgIEtVUkwgdXJsID0gY29tcGxldGVVUkwoZXhlYywgdmFsdWUudG9TdHJpbmcoZXhlYykpOwor
ICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0g
YWN0aXZlRnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTCh2YWx1ZS50b1N0cmluZyhleGVjKSk7
CiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQo
KS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKIH0KIApAQCAtMjYx
LDMwICsyNjIsMjUgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjpyZXBsYWNlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3co
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICgh
YWN0aXZlRnJhbWUpIAorICAgIGlmICghc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGV4ZWMsIGZyYW1l
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZS0+
bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpCisKKyAgICBLVVJMIHVybCA9
IGNvbXBsZXRlVVJMKGV4ZWMsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmICh1
cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgbmF2aWdh
dGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVV
UkwoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSksIHRydWUsIHRydWUpOworICAgIG5hdmlnYXRl
SWZBbGxvd2VkKGV4ZWMsIGZyYW1lLCB1cmwsIHRydWUsIHRydWUpOwogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCiBKU1ZhbHVlIEpTTG9jYXRpb246OnJlbG9hZChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUo
KTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAg
IEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lKTsKLSAgICBpZiAoIXdp
bmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFhbGxvd3NB
Y2Nlc3NGcm9tRnJhbWUoZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxvYWRlcigpLT51cmwo
KSkgfHwgKHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSB7Ci0gICAg
ICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlUmVmcmVzaCh1c2VyR2VzdHVy
ZSk7Ci0gICAgfQorICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxvYWRlcigp
LT51cmwoKSkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVSZWZyZXNoKHByb2Nl
c3NpbmdVc2VyR2VzdHVyZShleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTI5NCwyMyArMjkwLDIyIEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6YXNzaWduKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01X
aW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAg
IGlmICghYWN0aXZlRnJhbWUpCisgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywg
ZnJhbWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAoIWFjdGl2ZUZy
YW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKworICAgIEtVUkwg
dXJsID0gY29tcGxldGVVUkwoZXhlYywgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSk7CisgICAg
aWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICAv
LyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBjYWxsZWQgdmlhIGEg
dXNlciBnZXN0dXJlCi0gICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIGFjdGl2ZUZy
YW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSksICFm
cmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBmYWxzZSk7
CisgICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQo
KS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIH0KIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjp0b1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+
ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LSAgICBpZiAoIWFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVjLCBmcmFtZSkpCisgICAgaWYgKCFm
cmFtZSB8fCAhYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbCgpLT50
b1N0cmluZygpKTsKQEAgLTMxOCw5ICszMTMsNyBAQCBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCiAKIGJvb2wgSlNMb2NhdGlvblBy
b3RvdHlwZTo6Y3VzdG9tUHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewotICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nIHx8IHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS50b1N0cmluZyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLnZhbHVlT2YpOwogfQogCiB2b2lkIEpTTG9jYXRpb25Qcm90b3R5cGU6OmRlZmluZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmpl
Y3QqIGdldHRlckZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCBj
MTYyODdlLi4zOTVhOGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0
aWVzLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSAiRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
MSw0ICs3MiwzNSBAQCB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdgogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCitib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCit7CisgICAgRnJhbWUq
IGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAg
cmV0dXJuIGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7
Cit9CisKK2Jvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBG
cmFtZSogY2FsbGluZ0ZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckNhbGxpbmdDb250
ZXh0KCk7CisgICAgcmV0dXJuIGNhbGxpbmdGcmFtZSAmJiBjYWxsaW5nRnJhbWUtPmxvYWRlcigp
LT5zaG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpOworfQorCitLVVJMIGNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgcmVsYXRpdmVVUkwpCit7CisgICAgLy8gRm9yIGhpc3RvaWNhbCByZWFzb25z
LCB3ZSBuZWVkIHRvIGNvbXBsZXRlIHRoZSBVUkwgdXNpbmcgdGhlIGR5bmFtaWMgZnJhbWUuCisg
ICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4g
ZnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTCk7Cit9CisKK3ZvaWQgbmF2
aWdhdGVJZkFsbG93ZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKK3sKKyAgICBGcmFtZSogY2FsbGluZ0Zy
YW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckNhbGxpbmdDb250ZXh0KCk7CisgICAgaWYg
KCFjYWxsaW5nRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcHJvdG9jb2xJc0ph
dmFTY3JpcHQodXJsKSB8fCBTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKQor
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmlu
ZygpLCBjYWxsaW5nRnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhVdGlsaXRpZXMuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaAppbmRleCAy
ODI4ZGVhLi43ZmU3ZTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0
aWVzLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oCkBAIC0zNSwxMSAr
MzUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGcmFtZTsKK2NsYXNzIEtV
Ukw7CitjbGFzcyBTdHJpbmc7CisKIC8vIFVzZSBhbiBhcnJheSB0byBob2xkIGRlcGVuZGVudHMu
IEl0IHdvcmtzIGxpa2UgYSByZWYtY291bnRlZCBzY2hlbWUuCiAvLyBBIHZhbHVlIGNhbiBiZSBh
ZGRlZCBtb3JlIHRoYW4gb25jZSB0byB0aGUgRE9NIG9iamVjdC4KIHZvaWQgY3JlYXRlSGlkZGVu
RGVwZW5kZW5jeSh2ODo6TG9jYWw8djg6Ok9iamVjdD4sIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBp
bnQgY2FjaGVJbmRleCk7CiB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkxvY2FsPHY4
OjpPYmplY3Q+LCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgaW50IGNhY2hlSW5kZXgpOwogCitib29s
IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOworYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb24oRnJh
bWUqIGZyYW1lKTsKK0tVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCk7
Cit2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
b29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBWOFV0aWxpdGllc19oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOGFiM2I1My4uYzA0
ZTAzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgog
I2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogCiAjaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtODAxLDI5ICs4MDIsMjAgQEAgTkFNRURfUFJPUEVSVFlf
R0VUVEVSKERPTVdpbmRvdykKIH0KIAogCi12b2lkIFY4Q3VzdG9tOjpXaW5kb3dTZXRMb2NhdGlv
bihET01XaW5kb3cqIHdpbmRvdywgY29uc3QgU3RyaW5nJiB2KQordm9pZCBWOEN1c3RvbTo6V2lu
ZG93U2V0TG9jYXRpb24oRE9NV2luZG93KiB3aW5kb3csIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVV
UkwpCiB7Ci0gICAgaWYgKCF3aW5kb3ctPmZyYW1lKCkpCisgICAgRnJhbWUqIGZyYW1lID0gd2lu
ZG93LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZy
YW1lKiBhY3RpdmVGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4
dCgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCisgICAgaWYgKCFzaG91bGRBbGxvd05hdmlnYXRp
b24oZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2Fk
ZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKHdpbmRvdy0+ZnJhbWUoKSkpCisgICAgS1VSTCB1
cmwgPSBjb21wbGV0ZVVSTChyZWxhdGl2ZVVSTCk7CisgICAgaWYgKHVybC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwYXJzZVVSTCh2KS5zdGFydHNXaXRoKCJqYXZhc2Ny
aXB0OiIsIGZhbHNlKQotICAgICAgICB8fCBTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQo
d2luZG93LT5mcmFtZSgpKSkgewotICAgICAgICBTdHJpbmcgY29tcGxldGVkVXJsID0gYWN0aXZl
RnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTCh2KS5zdHJpbmcoKTsKLSAgCi0gICAgICAgIC8v
IEZJWE1FOiBUaGUgSlNDIGJpbmRpbmdzIHBhc3MgIWFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpIGZvcgotICAgICAgICAvLyB0aGUgbG9ja0hpc3RvcnkgcGFyYW1ldGVyLiAgV2Ugc2hv
dWxkIHByb2JhYmx5IGRvIHNvbWV0aGluZyBzaW1pbGFyLgotICAKLSAgICAgICAgd2luZG93LT5m
cmFtZSgpLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb21wbGV0ZWRVcmwsCi0g
ICAgICAgICAgICBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgZmFs
c2UsIGZhbHNlLAotICAgICAgICAgICAgYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSk7Ci0gICAgfQorICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmws
IGZhbHNlLCBmYWxzZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBmMjc1OThkLi5jNWYzYjFkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZl
bnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKKyNpbmNsdWRlICJWOFV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCkBAIC01MSwyNyArNTIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyBjbGFz
cyBpcyBub3QgdmVyeSBKUy1lbmdpbmUgc3BlY2lmaWMuICBJZiB3ZSBjYW4gbW92ZSBhIGNvdXBs
ZSBvZgogLy8gbWV0aG9kcyB0byB0aGUgc2NyaXB0Q29udHJvbGxlciwgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gdW5pZnkgdGhlIGNvZGUKIC8vIGJldHdlZW4gSlNDIGFuZCBWODoKLS8vICAgIHJldHJp
ZXZlQWN0aXZlRnJhbWUoKSAgIC0gaW4gSlNDLCB0aGlzIG5lZWRzIGFuIEV4ZWNTdGF0ZS4KKy8v
ICAgIHRvQ2FsbGluZ0ZyYW1lKCkgICAtIGluIEpTQywgdGhpcyBuZWVkcyBhbiBFeGVjU3RhdGUu
CiAvLyAgICBpc1NhZmVTY3JpcHQoKQotLy8gU2luY2UgSlNDIGFuZCBWOCBoYXZlIGRpZmZlcmVu
dCBtZWNoYW5pc21zIGZvciBnZXR0aW5nIGF0IHRoZSBBY3RpdmVGcmFtZSwKKy8vIFNpbmNlIEpT
QyBhbmQgVjggaGF2ZSBkaWZmZXJlbnQgbWVjaGFuaXNtcyBmb3IgZ2V0dGluZyBhdCB0aGUgY2Fs
bGluZyBmcmFtZSwKIC8vIHdlJ3JlIGp1c3QgbWFraW5nIGFsbCB0aGVzZSBjdXN0b20gZm9yIG5v
dy4gIFRoZSBmdW5jdGlvbmFsaXR5IGlzIHNpbXBsZQogLy8gYW5kIG1pcnJvcnMgSlNMb2NhdGlv
bkN1c3RvbS5jcHAuCiAKLXN0YXRpYyB2b2lkIG5hdmlnYXRlSWZBbGxvd2VkKEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpCi17Ci0gICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEZyYW1lKiBhY3RpdmVGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29u
dGV4dCgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghdXJsLnByb3RvY29sSXMoImphdmFzY3JpcHQiKSB8fCBTY3JpcHRDb250cm9sbGVyOjppc1Nh
ZmVTY3JpcHQoZnJhbWUpKSB7Ci0gICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhY3RpdmVGcmFt
ZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmluZygpLCBhY3RpdmVGcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIHVzZXJHZXN0dXJlKTsKLSAgICB9Ci19Ci0KIEFDQ0VTU09SX1NFVFRFUihMb2NhdGlv
bkhhc2gpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uaGFzaC5fc2V0Iik7CkBAIC0x
MzcsMjAgKzEyMywxOSBAQCBBQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25IcmVmKQogICAgIElOQ19T
VEFUUygiRE9NLkxvY2F0aW9uLmhyZWYuX3NldCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKICAgICBMb2NhdGlvbiogaW1wID0gVjhQcm94eTo6
VG9OYXRpdmVPYmplY3Q8TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7
Ci0gICAgU3RyaW5nIGhyZWYgPSB0b1dlYkNvcmVTdHJpbmcodmFsdWUpOwogCiAgICAgRnJhbWUq
IGZyYW1lID0gaW1wLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRl
cmVkQ29udGV4dCgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCisgICAgaWYgKCFzaG91bGRBbGxv
d05hdmlnYXRpb24oZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWFjdGl2ZUZy
YW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAgICBLVVJMIHVy
bCA9IGNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworICAgIGlmICh1cmwuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCBh
Y3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKGhyZWYpLCBmYWxzZSwgZmFsc2UpOwor
ICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIEFD
Q0VTU09SX1NFVFRFUihMb2NhdGlvblBhdGhuYW1lKQpAQCAtMjg1LDE4ICsyNzAsMTEgQEAgQ0FM
TEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uUmVsb2FkKQogICAgIExvY2F0aW9uKiBpbXAgPSBWOFBy
b3h5OjpUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9s
ZGVyKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1l
KQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgRnJhbWUqIGFjdGl2ZUZy
YW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgaWYg
KCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFTY3JpcHRDb250cm9sbGVyOjppc1Nh
ZmVTY3JpcHQoZnJhbWUpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAg
aWYgKCFTY3JpcHRDb250cm9sbGVyOjppc1NhZmVTY3JpcHQoZnJhbWUpKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1l
LT5zY3JpcHQoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgZnJhbWUtPmxvYWRlcigp
LT5zY2hlZHVsZVJlZnJlc2godXNlckdlc3R1cmUpOworICAgIGlmICghcHJvdG9jb2xJc0phdmFT
Y3JpcHQoZnJhbWUtPmxvYWRlcigpLT51cmwoKSkpCisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
c2NoZWR1bGVSZWZyZXNoKHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCkBAIC0zMDUsMjAgKzI4MywxOSBAQCBDQUxMQkFDS19GVU5DX0RF
Q0woTG9jYXRpb25SZXBsYWNlKQogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlcGxhY2Ui
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAg
ICBMb2NhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8TG9jYXRpb24+KFY4Q2xh
c3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7Ci0gICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0
cmluZyhhcmdzWzBdKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGltcC0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgRnJhbWUq
IGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7
Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNob3VsZEFsbG93TmF2aWdhdGlvbihm
cmFtZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAoIWFjdGl2
ZUZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZyYW1lKSkKKyAgICBLVVJM
IHVybCA9IGNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisgICAgaWYgKHVy
bC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIG5hdmln
YXRlSWZBbGxvd2VkKGZyYW1lLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKHVy
bCksIHRydWUsIHRydWUpOworICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIHRydWUs
IHRydWUpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKQEAgLTMyNywyMCArMzA0
LDE5IEBAIENBTExCQUNLX0ZVTkNfREVDTChMb2NhdGlvbkFzc2lnbikKICAgICBJTkNfU1RBVFMo
IkRPTS5Mb2NhdGlvbi5hc3NpZ24iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaG9sZGVy
ID0gYXJncy5Ib2xkZXIoKTsKICAgICBMb2NhdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVP
YmplY3Q8TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7Ci0gICAgU3Ry
aW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9
IGltcC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogCi0gICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFt
ZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFhY3RpdmVGcmFtZSkKKyAgICBpZiAoIXNo
b3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiAKLSAgICBpZiAoIWFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0
aW9uKGZyYW1lKSkKKyAgICBLVVJMIHVybCA9IGNvbXBsZXRlVVJMKHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKSk7CisgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIAotICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCBhY3RpdmVGcmFtZS0+bG9h
ZGVyKCktPmNvbXBsZXRlVVJMKHVybCksIGZhbHNlLCBmYWxzZSk7CisgICAgbmF2aWdhdGVJZkFs
bG93ZWQoZnJhbWUsIHVybCwgZmFsc2UsIGZhbHNlKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi0tIAoxLjYuMC4xCgo=
</data>
<flag name="review"
          id="15519"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>