<?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>147245</bug_id>
          
          <creation_ts>2015-07-23 17:24:18 -0700</creation_ts>
          <short_desc>Extract FTLLocation to be used outside of FTL</short_desc>
          <delta_ts>2015-09-14 10:57:26 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1111851</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-23 17:24:18 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112047</commentid>
    <comment_count>1</comment_count>
      <attachid>257463</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-24 11:56:35 -0700</bug_when>
    <thetext>Created attachment 257463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121530</commentid>
    <comment_count>2</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-27 18:46:15 -0700</bug_when>
    <thetext>No longer useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125636</commentid>
    <comment_count>3</comment_count>
      <attachid>257463</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-14 10:57:26 -0700</bug_when>
    <thetext>Comment on attachment 257463
Patch

Cleared review? from attachment 257463 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257463</attachid>
            <date>2015-07-24 11:56:35 -0700</date>
            <delta_ts>2015-09-14 10:57:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147245-20150724115518.patch</filename>
            <type>text/plain</type>
            <size>50157</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OGJlOThjYWRmMDQ0YWRlMWFlYmEzZTE4ZTBkYzU3NWJlYWE1YTVjLi43OTBmMGIyYjIyYjM2Yzlk
N2VjOTZmMDY0N2FkOWE1M2YxODFhODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNS0wNy0yNCAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgRXh0cmFjdCBGVExMb2NhdGlvbiB0byBiZSB1c2VkIG91dHNp
ZGUgb2YgRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDcyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGV4dHJhY3RzIHRoZSBGVExMb2NhdGlvbiBjbGFzcyBpbnRvIGEgTG9jYXRp
b24gY2xhc3MgaW4KKyAgICAgICAgaml0LywgYW5kIG1ha2VzIGl0IHVzZSBvdXIgb3duIFJlZyBj
bGFzcyBpbnN0ZWFkIG9mIEZUTERXQVJGUmVnaXN0ZXJzLgorICAgICAgICBUaGlzIGFsbG93cyB0
byB1c2UgdGhpcyBuZXcgY2xhc3MgZm9yIHZhbHVlIHJlY292ZXJ5IG91dHNpZGUgb2YgdGhlIEZU
TAorICAgICAgICAtIHNwZWNpZmljYWxseSwgaXQgaXMgbmVlZGVkIGZvciBhbiBlZmZpY2llbnQg
dGFpbCBjYWxsIGltcGxlbWVudGF0aW9uCisgICAgICAgIGluIHRoZSBERkcuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9uKToKKyAgICAgICAgKiBmdGwv
RlRMU2F2ZVJlc3RvcmUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnNhdmVBbGxSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpGVEw6OnJlc3RvcmVBbGxSZWdpc3RlcnMpOgorICAgICAgICAqIGZ0
bC9GVExTYXZlUmVzdG9yZS5oOgorICAgICAgICAqIGZ0bC9GVExTdGFja01hcHMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YWNrTWFwczo6TG9jYXRpb246OnRvSlNDTG9jYXRpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OlN0YWNrTWFwczo6TG9jYXRpb246OmRpcmVjdEdQUik6CisgICAgICAg
IChKU0M6OkZUTDo6U3RhY2tNYXBzOjpMb2NhdGlvbjo6cmVzdG9yZUludG8pOgorICAgICAgICAq
IGZ0bC9GVExTdGFja01hcHMuaDoKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmg6CisgICAgICAg
ICogaml0L0xvY2F0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG9jYXRpb24uY3BwLgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6ZHVtcCk6CisgICAg
ICAgIChKU0M6OkxvY2F0aW9uOjppbnZvbHZlc0dQUik6CisgICAgICAgIChKU0M6OkxvY2F0aW9u
Ojppc0dQUik6CisgICAgICAgIChKU0M6OkxvY2F0aW9uOjpncHIpOgorICAgICAgICAoSlNDOjpM
b2NhdGlvbjo6aXNGUFIpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6ZnByKToKKyAgICAgICAg
KEpTQzo6TG9jYXRpb246OmRpcmVjdEdQUik6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGppdC9Mb2NhdGlvbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oLgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6TG9jYXRp
b24pOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6Zm9yUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpMb2NhdGlvbjo6Zm9ySW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6Zm9yQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6a2luZCk6CisgICAgICAgIChKU0M6Okxv
Y2F0aW9uOjpoYXNSZWcpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6cmVnKToKKyAgICAgICAg
KEpTQzo6TG9jYXRpb246Omhhc09mZnNldCk6CisgICAgICAgIChKU0M6OkxvY2F0aW9uOjpvZmZz
ZXQpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6aGFzQWRkZW5kKToKKyAgICAgICAgKEpTQzo6
TG9jYXRpb246OmFkZGVuZCk6CisgICAgICAgIChKU0M6OkxvY2F0aW9uOjpoYXNDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkxvY2F0aW9uOjpjb25zdGFudCk6CisgICAgICAgIChKU0M6OkxvY2F0
aW9uOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpMb2NhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChKU0M6OkxvY2F0aW9uOjpoYXNoKToKKyAgICAgICAgKEpTQzo6TG9jYXRpb25IYXNoOjpoYXNo
KToKKyAgICAgICAgKEpTQzo6TG9jYXRpb25IYXNoOjplcXVhbCk6CisKIDIwMTUtMDctMTUgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRml4IGFy
bXY3IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDhmZjJiYjlm
Mjg3MDVlMjNmZmVkOTQ1ZmRlOTk1M2E0ZDY0MGFiZjIuLjI5ZTlmZGNjMGVkYTMzZGVmMzM3MDI1
MDM3YTU3NWViNjdiMjJlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTM2OCw2ICszNjgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGppdC9KSVRT
dHVicy5jcHAKICAgICBqaXQvSklUVGh1bmtzLmNwcAogICAgIGppdC9KSVRUb0RGR0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAKKyAgICBqaXQvTG9jYXRpb24uY3BwCiAgICAgaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAogICAgIGppdC9SZWcuY3BwCiAgICAgaml0L1Jl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKQEAgLTg4MSw3ICs4ODIsNiBA
QCBpZiAoRU5BQkxFX0ZUTF9KSVQpCiAgICAgICAgIGZ0bC9GVExKU0NhbGxCYXNlLmNwcAogICAg
ICAgICBmdGwvRlRMSlNDYWxsVmFyYXJncy5jcHAKICAgICAgICAgZnRsL0ZUTExpbmsuY3BwCi0g
ICAgICAgIGZ0bC9GVExMb2NhdGlvbi5jcHAKICAgICAgICAgZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAogICAgICAgICBmdGwvRlRMT1NSRW50cnkuY3BwCiAgICAgICAgIGZ0bC9GVExPU1JFeGl0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggZmMyOGYzYjRk
N2RhNjdmNmZkNGEzZTIyMGRmN2M1Mzc4NWJmMDM1Mi4uNWZiZDU3YTkxNGY1MTExYjM4ODlmYTdm
NDYwZTVmYmY1MmIxYTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CkBAIC01MjUsNyArNTI1LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExK
U0NhbGxCYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExKU0Nh
bGxWYXJhcmdzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExMaW5r
LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExMb2NhdGlvbi5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRMTG93ZXJERkdUb0xMVk0uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZnRsXEZUTE9TUkVudHJ5LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGZ0bFxGVExPU1JFeGl0LmNwcCIgLz4KQEAgLTYz
Myw2ICs2MzIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFN0dWJzLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxMb2NhdGlv
bi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcU2V0dXBWYXJhcmdzRnJh
bWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWcu
Y3BwIiAvPgpAQCAtMTI0MSw3ICsxMjQxLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGZ0bFxGVExKU0NhbGxCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxc
RlRMSlNDYWxsVmFyYXJncy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZU
TExpbmsuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExMb2NhdGlvbi5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTExvd2VyREZHVG9MTFZNLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRMTG93ZXJlZE5vZGVWYWx1ZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTE9TUkVudHJ5LmgiIC8+CkBA
IC0xMzk5LDYgKzEzOTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVFRv
REZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcSklUV3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcSlNJbnRlcmZhY2VKSVQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGppdFxMb2NhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFNldHVw
VmFyYXJnc0ZyYW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGpp
dFxSZWcuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCBhYWYzMjU2Mjk2MTQzZjcxYmNlNTZkYjllYTNjNTIzYTJjYTFhNDM4Li4x
YmY3MzJiNjlmMmQ0NzMyNGY5OTI5ZjZiMmRjZTgxZmY1OGI3ZWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xNDg4LDkgKzE0ODgs
NiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZnRsXEZUTExpbmsuY3BwIj4KICAgICAg
IDxGaWx0ZXI+ZnRsPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxmdGxcRlRMTG9jYXRpb24uY3BwIj4KLSAgICAgIDxGaWx0ZXI+ZnRsPC9GaWx0
ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxmdGxcRlRM
TG93ZXJERkdUb0xMVk0uY3BwIj4KICAgICAgIDxGaWx0ZXI+ZnRsPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0xNzU1LDYgKzE3NTIsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCI+CiAgICAgICA8RmlsdGVyPmpp
dDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aml0XExvY2F0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcVmlydHVhbFJlZ2lz
dGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0zOTM1LDkgKzM5MzUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRs
XEZUTExpbmsuaCI+CiAgICAgICA8RmlsdGVyPmZ0bDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTExvY2F0aW9uLmgiPgotICAgICAg
PEZpbHRlcj5mdGw8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGZ0bFxGVExMb3dlckRGR1RvTExWTS5oIj4KICAgICAgIDxGaWx0ZXI+ZnRsPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00MjUwLDYgKzQyNDcsOSBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiPgogICAg
ICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxMb2NhdGlvbi5oIj4KKyAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcU2V0dXBW
YXJhcmdzRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZU
TEpTQ2FsbEJhc2UuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGE1MTY0
YzY5YWM3MDEyZWMxZjUyYmZiYjY1YjJmZDRmNzM2MWJlOC4uMGFjZDZhOTFiYzQzMTcyZjc0Yzk3
OWU2ODE2YjIxMjBhZTBiODU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4
MSw4ICs1ODEsNiBAQAogCQkwRkNFRkFENzE4MDYxNzQ2MDA0NzJDRTQgLyogTExWTUFuY2hvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFE
NjE4MDYxNzQ2MDA0NzJDRTQgLyogTExWTUFuY2hvci5jcHAgKi87IH07CiAJCTBGQ0VGQURBMTgw
NjIwREEwMDQ3MkNFNCAvKiBMTFZNQVBJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFDODE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQSS5oICov
OyB9OwogCQkwRkNFRkFEQzE4MDY0QTE0MDA0NzJDRTQgLyogY29uZmlnX2xsdm0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0VGQURCMTgwNjRBMTQw
MDQ3MkNFNCAvKiBjb25maWdfbGx2bS5oICovOyB9OwotCQkwRkNFRkFERjE4MDczOEMwMDA0NzJD
RTQgLyogRlRMTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDRUZBREQxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmNwcCAq
LzsgfTsKLQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNFRkFERTE4MDczOEMw
MDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkQxMjAyRjFBOEFFRDEyMDAwRjUyODAgLyogRlRMSlNDYWxs
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkQxMjAyRDFBOEFFRDEyMDAwRjUyODAgLyogRlRMSlNDYWxsQmFzZS5jcHAgKi87IH07CiAJCTBG
RDEyMDMwMUE4QUVEMTIwMDBGNTI4MCAvKiBGVExKU0NhbGxCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQxMjAyRTFBOEFFRDEyMDAwRjUyODAg
LyogRlRMSlNDYWxsQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDEy
MDMxMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCAqLzsgfTsKQEAgLTk2
Nyw2ICs5NjUsOCBAQAogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBp
biBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUy
NTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1
NSAvKiBtaW5pZG9tLmpzICovOyB9OwogCQk1REU2RTVCMzBFMTcyOEVDMDAxODA0MDcgLyogY3Jl
YXRlX2hhc2hfdGFibGUgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJNjI2NDk0NjExQjYxQkMyRTAwMkU2
OENCIC8qIExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDYyNjQ5NDVGMUI2MUJDMkUwMDJFNjhDQiAvKiBMb2NhdGlvbi5jcHAgKi87IH07
CisJCTYyNjQ5NDYyMUI2MUJDMkUwMDJFNjhDQiAvKiBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjI2NDk0NjAxQjYxQkMyRTAwMkU2OENC
IC8qIExvY2F0aW9uLmggKi87IH07CiAJCTYyRDJEMzhGMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5j
dGlvblJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAq
LzsgfTsKIAkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyRDJEMzhFMUFE
RjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjJGMkFBMzcxQjBCRURFMzAwNjEwQzdBIC8q
IERGR0xhenlOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYyQTlBMjlFMUIwQkVENDgwMEJENTRDQSAvKiBERkdMYXp5Tm9kZS5jcHAgKi87IH07
CkBAIC0yMzM4LDggKzIzMzgsNiBAQAogCQkwRkNFRkFEMjE4MDVFRENDMDA0NzJDRTQgLyogTExW
TUhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExWTUhlYWRlcnMu
aDsgcGF0aCA9IGxsdm0vTExWTUhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZDRUZBRDYxODA2MTc0NjAwNDcyQ0U0IC8qIExMVk1BbmNob3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExWTUFuY2hvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQ0VGQURCMTgwNjRBMTQwMDQ3MkNFNCAvKiBjb25maWdfbGx2bS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWdfbGx2bS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRkNFRkFERDE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9j
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMTG9jYXRp
b24uY3BwOyBwYXRoID0gZnRsL0ZUTExvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEZDRUZBREUxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTExvY2F0aW9uLmg7IHBhdGggPSBmdGwvRlRM
TG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEMTIwMkQxQThBRUQx
MjAwMEY1MjgwIC8qIEZUTEpTQ2FsbEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMSlNDYWxsQmFzZS5jcHA7IHBhdGggPSBmdGwvRlRMSlNDYWxsQmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDEyMDJFMUE4QUVEMTIwMDBGNTI4
MCAvKiBGVExKU0NhbGxCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZU
TEpTQ2FsbEJhc2UuaDsgcGF0aCA9IGZ0bC9GVExKU0NhbGxCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRDEyMDMxMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJh
cmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEpTQ2FsbFZh
cmFyZ3MuY3BwOyBwYXRoID0gZnRsL0ZUTEpTQ2FsbFZhcmFyZ3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjY4OCw2ICsyNjg2LDggQEAKIAkJNURBRkQ2Q0IxNDZCNjg2MzAw
RkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVERERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBMTElu
dERlc2lyZWRPZmZzZXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
RGVzaXJlZE9mZnNldHMuaDsgcGF0aCA9IExMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRz
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTVERTNEMEY0MEREOERE
RkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0QXZhaWxhYmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTYyNjQ5NDVGMUI2MUJDMkUwMDJFNjhDQiAvKiBMb2NhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTYyNjQ5NDYwMUI2MUJDMkUwMDJFNjhDQiAvKiBMb2NhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2MkE5QTI5RTFCMEJFRDQ4MDBCRDU0Q0EgLyogREZHTGF6eU5vZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTGF6eU5vZGUuY3Bw
OyBwYXRoID0gZGZnL0RGR0xhenlOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjJBOUEyOUYxQjBCRUQ0ODAwQkQ1NENBIC8qIERGR0xhenlOb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0xhenlOb2RlLmg7IHBhdGggPSBkZmcvREZHTGF6eU5v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjJEMkQzOEQxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRnVuY3Rpb25SYXJlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNzY1LDggKzM3NjUsNiBAQAogCQkJCTBGRDEyMDMyMUE4Qzg1QkQwMDBGNTI4MCAvKiBG
VExKU0NhbGxWYXJhcmdzLmggKi8sCiAJCQkJMEY4RjJCOTMxNzJFMDQ5RTAwN0RCREE1IC8qIEZU
TExpbmsuY3BwICovLAogCQkJCTBGOEYyQjk0MTcyRTA0OUUwMDdEQkRBNSAvKiBGVExMaW5rLmgg
Ki8sCi0JCQkJMEZDRUZBREQxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmNwcCAqLywK
LQkJCQkwRkNFRkFERTE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uaCAqLywKIAkJCQkw
RkVBMEEwNDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uY3BwICovLAogCQkJ
CTBGRUEwQTA1MTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oICovLAogCQkJ
CUE3RDg5RDAxMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVlLmggKi8sCkBA
IC0zOTExLDggKzM5MDksNiBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwRkYwNTRGNzFB
QzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmNwcCAqLywKLQkJCQkw
RkYwNTRGODFBQzM1QjQ0MDBFNUJFNTcgLyogRXhlY3V0YWJsZUFsbG9jYXRpb25GdXp6LmggKi8s
CiAJCQkJMEY3NTc2RDAxOEUxRkVFOTAwMkVGNENEIC8qIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lLmNwcCAqLywKIAkJCQkwRjc1NzZEMTE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxs
SklUU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRjZCMUNDNzE4NjQxREY4MDA4NDVEOTcgLyogQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwICovLApAQCAtMzkyMyw2ICszOTE5LDggQEAKIAkJ
CQkwRjY0QjI3MDFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggKi8sCiAJCQkJMEYy
NEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oICovLAogCQkJCTBGRDgyRTM3
MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLAorCQkJCTBGRjA1NEY3
MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouY3BwICovLAorCQkJ
CTBGRjA1NEY4MUFDMzVCNDQwMEU1QkU1NyAvKiBFeGVjdXRhYmxlQWxsb2NhdGlvbkZ1enouaCAq
LywKIAkJCQlBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAgKi8sCiAJCQkJQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0
b3IuaCAqLywKIAkJCQk4NkRCNjQ2MzBGOTVDNkZDMDBEN0Q5MjEgLyogRXhlY3V0YWJsZUFsbG9j
YXRvckZpeGVkVk1Qb29sLmNwcCAqLywKQEAgLTM5NjksOCArMzk2Nyw4IEBACiAJCQkJMEZDNzEy
RTExN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggKi8sCiAJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5o
ICovLAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oICov
LAotCQkJCTBGRUU5ODQyMUE4OTIyNzUwMDc1NEU5MyAvKiBTZXR1cFZhcmFyZ3NGcmFtZS5jcHAg
Ki8sCi0JCQkJMEZFRTk4NDAxQTg4NjVCNjAwNzU0RTkzIC8qIFNldHVwVmFyYXJnc0ZyYW1lLmgg
Ki8sCisJCQkJNjI2NDk0NUYxQjYxQkMyRTAwMkU2OENCIC8qIExvY2F0aW9uLmNwcCAqLywKKwkJ
CQk2MjY0OTQ2MDFCNjFCQzJFMDAyRTY4Q0IgLyogTG9jYXRpb24uaCAqLywKIAkJCQkwRkU4MzQx
NTFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICovLAog
CQkJCTBGRTgzNDE2MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5oICovLAogCQkJCTBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwICovLApAQCAt
Mzk4Myw2ICszOTgxLDggQEAKIAkJCQkwRjI0RTU0QTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRj
aC5oICovLAogCQkJCTBGQTdBOEVEMThDRTRGRDgwMDUyMzcxRCAvKiBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuY3BwICovLAogCQkJCTBGMjRFNTRCMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaCAqLywKKwkJCQkwRkVFOTg0MjFBODkyMjc1MDA3NTRFOTMgLyog
U2V0dXBWYXJhcmdzRnJhbWUuY3BwICovLAorCQkJCTBGRUU5ODQwMUE4ODY1QjYwMDc1NEU5MyAv
KiBTZXR1cFZhcmFyZ3NGcmFtZS5oICovLAogCQkJCUE3MDlGMkVGMTdBMEFDMDQwMDUxMkU5OCAv
KiBTbG93UGF0aENhbGwuaCAqLywKIAkJCQlBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oICovLAogCQkJCUE3RkY2NDdBMThDNTJFODUwMEI1NTMwNyAvKiBT
cGlsbFJlZ2lzdGVyc01vZGUuaCAqLywKQEAgLTU5OTQsNyArNTk5NCw2IEBACiAJCQkJMEZFRDY3
QkExQjI2MjU2RDAwNjZDRTE1IC8qIERGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2QjFDQjYxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4RjJCOTYxNzJFMDRBMzAwN0RCREE1IC8qIEZUTExpbmsuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2Vy
REZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDgg
LyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1
MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTY1MTIsNiAr
NjUxMSw3IEBACiAJCQkJMEZGNDI3NDExNThFQkU4RDAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQyMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZf
ZXh0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0Mjc0NDE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X2lucHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2MjY0OTQ2MjFCNjFCQzJFMDAyRTY4
Q0IgLyogTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzQ4MTU4RUJFOTEwMDRD
QjlGRiAvKiB1ZGlzODZfc3luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0Mjc0OTE1OEVCRTkx
MDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEIwQTlEMTFB
OUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLywKQEAgLTcyODUs
NyArNzI4NSw2IEBACiAJCQkJNjJGMkFBMzcxQjBCRURFMzAwNjEwQzdBIC8qIERGR0xhenlOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExK
U0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTUxNzJFMDRBMDAwN0RCREE1IC8q
IEZUTExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZDRUZBREYxODA3MzhDMDAwNDcyQ0U0
IC8qIEZUTExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTBGMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
QTMxQjE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCREMxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NTk1LDYgKzc1OTQsNyBAQAogCQkJCTBGMkI2NzA0MTdCNkI1QUIwMEE3QUUzRiAv
KiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjI1
NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk2MjY0OTQ2MTFCNjFCQzJFMDAyRTY4Q0IgLyogTG9jYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4RjJCOUUxNzMwNkM4RDAwN0RCREE1IC8qIFNvdXJjZUNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggYzZmY2NhMDVlZjkzNzU2YThkOWU0YWJjMmI3
YmJiMmYzOWU4YjU3YS4uNTliN2FlNGYwZWU2ZjA5ODc5Njc1ZTllMTlkYTRmNjhiYTFkMWJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0xNDcsOSArMTQ3
LDggQEAgc3RhdGljIGludCBvZmZzZXRPZlN0YWNrUmVnaW9uKFN0YWNrTWFwczo6UmVjb3JkTWFw
JiByZWNvcmRNYXAsIHVpbnQzMl90IHN0YWNrbWEKICAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9
IHJlY29yZE1hcC5lbmQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXRlci0+dmFsdWUuc2l6ZSgp
ID09IDEpOwogICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXItPnZhbHVlWzBdLmxvY2F0aW9ucy5zaXpl
KCkgPT0gMSk7Ci0gICAgTG9jYXRpb24gY2FwdHVyZWRMb2NhdGlvbiA9Ci0gICAgICAgIExvY2F0
aW9uOjpmb3JTdGFja21hcHMobnVsbHB0ciwgaXRlci0+dmFsdWVbMF0ubG9jYXRpb25zWzBdKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChjYXB0dXJlZExvY2F0aW9uLmtpbmQoKSA9PSBMb2NhdGlvbjo6
UmVnaXN0ZXIpOworICAgIEpTQzo6TG9jYXRpb24gY2FwdHVyZWRMb2NhdGlvbiA9IGl0ZXItPnZh
bHVlWzBdLmxvY2F0aW9uc1swXS50b0pTQ0xvY2F0aW9uKCk7CisgICAgUkVMRUFTRV9BU1NFUlQo
Y2FwdHVyZWRMb2NhdGlvbi5raW5kKCkgPT0gSlNDOjpMb2NhdGlvbjo6UmVnaXN0ZXIpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGNhcHR1cmVkTG9jYXRpb24uZ3ByKCkgPT0gR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEoY2FwdHVyZWRMb2NhdGlvbi5hZGRl
bmQoKSAlIHNpemVvZihSZWdpc3RlcikpKTsKICAgICByZXR1cm4gY2FwdHVyZWRMb2NhdGlvbi5h
ZGRlbmQoKSAvIHNpemVvZihSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG9jYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDA5ODI1Mjc2YzIx
MjM0MTAxMGE0ZTk1ODYwZTA1YTc1YmQ4YmEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24u
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkZUTExvY2F0aW9uLmgiCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLQotI2luY2x1ZGUg
IkZUTFNhdmVSZXN0b3JlLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKLSNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KLSNpbmNsdWRlIDx3
dGYvTGlzdER1bXAuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewotCi1Mb2Nh
dGlvbiBMb2NhdGlvbjo6Zm9yU3RhY2ttYXBzKGNvbnN0IFN0YWNrTWFwcyogc3RhY2ttYXBzLCBj
b25zdCBTdGFja01hcHM6OkxvY2F0aW9uJiBsb2NhdGlvbikKLXsKLSAgICBzd2l0Y2ggKGxvY2F0
aW9uLmtpbmQpIHsKLSAgICBjYXNlIFN0YWNrTWFwczo6TG9jYXRpb246OlVucHJvY2Vzc2VkOgot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAg
ICAgICAgCi0gICAgY2FzZSBTdGFja01hcHM6OkxvY2F0aW9uOjpSZWdpc3RlcjoKLSAgICBjYXNl
IFN0YWNrTWFwczo6TG9jYXRpb246OkRpcmVjdDoKLSAgICAgICAgcmV0dXJuIGZvclJlZ2lzdGVy
KGxvY2F0aW9uLmR3YXJmUmVnLCBsb2NhdGlvbi5vZmZzZXQpOwotICAgICAgICAKLSAgICBjYXNl
IFN0YWNrTWFwczo6TG9jYXRpb246OkluZGlyZWN0OgotICAgICAgICByZXR1cm4gZm9ySW5kaXJl
Y3QobG9jYXRpb24uZHdhcmZSZWcsIGxvY2F0aW9uLm9mZnNldCk7Ci0gICAgICAgIAotICAgIGNh
c2UgU3RhY2tNYXBzOjpMb2NhdGlvbjo6Q29uc3RhbnQ6Ci0gICAgICAgIHJldHVybiBmb3JDb25z
dGFudChsb2NhdGlvbi5vZmZzZXQpOwotICAgICAgICAKLSAgICBjYXNlIFN0YWNrTWFwczo6TG9j
YXRpb246OkNvbnN0YW50SW5kZXg6Ci0gICAgICAgIEFTU0VSVChzdGFja21hcHMpOwotICAgICAg
ICByZXR1cm4gZm9yQ29uc3RhbnQoc3RhY2ttYXBzLT5jb25zdGFudHNbbG9jYXRpb24ub2Zmc2V0
XS5pbnRlZ2VyKTsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQotICAgIHJldHVybiBMb2NhdGlvbigpOwotfQotCi12b2lkIExvY2F0aW9uOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCIoIiwga2luZCgpKTsKLSAg
ICBpZiAoaGFzRHdhcmZSZWcoKSkKLSAgICAgICAgb3V0LnByaW50KCIsICIsIGR3YXJmUmVnKCkp
OwotICAgIGlmIChoYXNPZmZzZXQoKSkKLSAgICAgICAgb3V0LnByaW50KCIsICIsIG9mZnNldCgp
KTsKLSAgICBpZiAoaGFzQWRkZW5kKCkpCi0gICAgICAgIG91dC5wcmludCgiLCAiLCBhZGRlbmQo
KSk7Ci0gICAgaWYgKGhhc0NvbnN0YW50KCkpCi0gICAgICAgIG91dC5wcmludCgiLCAiLCBjb25z
dGFudCgpKTsKLSAgICBvdXQucHJpbnQoIikiKTsKLX0KLQotYm9vbCBMb2NhdGlvbjo6aW52b2x2
ZXNHUFIoKSBjb25zdAotewotICAgIHJldHVybiBpc0dQUigpIHx8IGtpbmQoKSA9PSBJbmRpcmVj
dDsKLX0KLQotYm9vbCBMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAotewotICAgIHJldHVybiBraW5k
KCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWcoKS5yZWcoKS5pc0dQUigpOwotfQotCi1HUFJSZWcg
TG9jYXRpb246OmdwcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGR3YXJmUmVnKCkucmVnKCkuZ3By
KCk7Ci19Ci0KLWJvb2wgTG9jYXRpb246OmlzRlBSKCkgY29uc3QKLXsKLSAgICByZXR1cm4ga2lu
ZCgpID09IFJlZ2lzdGVyICYmIGR3YXJmUmVnKCkucmVnKCkuaXNGUFIoKTsKLX0KLQotRlBSUmVn
IExvY2F0aW9uOjpmcHIoKSBjb25zdAotewotICAgIHJldHVybiBkd2FyZlJlZygpLnJlZygpLmZw
cigpOwotfQotCi12b2lkIExvY2F0aW9uOjpyZXN0b3JlSW50byhNYWNyb0Fzc2VtYmxlciYgaml0
LCBjaGFyKiBzYXZlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgdW5zaWduZWQgbnVtRnJhbWVz
VG9Qb3ApIGNvbnN0Ci17Ci0gICAgaWYgKGludm9sdmVzR1BSKCkgJiYgUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCkuZ2V0KGdwcigpKSkgewotICAgICAgICAvLyBNYWtlIHRoZSByZXN1bHQg
R1BSIGNvbnRhaW4gdGhlIGFwcHJvcHJpYXRlIHN0YWNrIHJlZ2lzdGVyLgotICAgICAgICBpZiAo
bnVtRnJhbWVzVG9Qb3ApIHsKLSAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpm
cmFtZVBvaW50ZXJSZWdpc3RlciwgcmVzdWx0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbnVtRnJhbWVzVG9Qb3AgLSAxOyBpLS07KQotICAgICAgICAgICAg
ICAgIGppdC5sb2FkUHRyKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKGdwcigpID09IE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlcikKLSAg
ICAgICAgICAgICAgICBqaXQubG9hZFB0cihyZXN1bHQsIHJlc3VsdCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzaXplb2Yodm9pZCopICogMiksIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgaml0Lm1vdmUoZ3ByKCksIHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIGlmIChpc0dQ
UigpKSB7Ci0gICAgICAgIGlmIChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQoZ3By
KCkpKSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IHJlc3RvcmVkIGludG8gcmVzdWx0LgotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIGppdC5sb2FkNjQoc2F2ZWRSZWdpc3RlcnMgKyBvZmZz
ZXRPZkdQUihncHIoKSksIHJlc3VsdCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoYWRkZW5kKCkp
Ci0gICAgICAgICAgICBqaXQuYWRkNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihhZGRl
bmQoKSksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlz
RlBSKCkpIHsKLSAgICAgICAgaml0LmxvYWQ2NChzYXZlZFJlZ2lzdGVycyArIG9mZnNldE9mRlBS
KGZwcigpKSwgcmVzdWx0KTsKLSAgICAgICAgQVNTRVJUKCFhZGRlbmQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgc3dpdGNoIChraW5kKCkpIHsKLSAgICBjYXNlIFJlZ2lz
dGVyOgotICAgICAgICAvLyBMTFZNIHVzZWQgc29tZSByZWdpc3RlciB0aGF0IHdlIGRvbid0IGtu
b3cgYWJvdXQhCi0gICAgICAgIGRhdGFMb2coIlVucmVjb2duaXplZCBsb2NhdGlvbjogIiwgKnRo
aXMsICJcbiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAotICAgIGNhc2UgSW5kaXJlY3Q6Ci0gICAgICAgIGlmIChSZWdp
c3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQoZ3ByKCkpKSB7Ci0gICAgICAgICAgICAvLyBU
aGUgc3RhY2sgcmVnaXN0ZXIgaXMgYWxyZWFkeSByZWNvdmVyZWQgaW50byByZXN1bHQuCi0gICAg
ICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdCwgb2Zmc2V0
KCkpLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBqaXQubG9hZDY0KHNhdmVkUmVnaXN0ZXJzICsgb2Zmc2V0T2ZHUFIoZ3ByKCkpLCBy
ZXN1bHQpOwotICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dCwgb2Zmc2V0KCkpLCByZXN1bHQpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIGNh
c2UgQ29uc3RhbnQ6Ci0gICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQoY29uc3RhbnQoKSksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAg
Y2FzZSBVbnByb2Nlc3NlZDoKLSAgICAgICAgLy8gU2hvdWxkIG5ldmVyIHNlZSB0aGlzIC0gaXQn
cyBhbiBlbnVtZXJhdGlvbiBlbnRyeSBvbiBMTFZNJ3Mgc2lkZSB0aGF0IG1lYW5zIHRoYXQKLSAg
ICAgICAgLy8gaXQgaGFzbid0IHByb2Nlc3NlZCB0aGlzIGxvY2F0aW9uLgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLUdQUlJlZyBMb2NhdGlvbjo6
ZGlyZWN0R1BSKCkgY29uc3QKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCghYWRkZW5kKCkpOwotICAg
IHJldHVybiBncHIoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzo6RlRMOwotCi12b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpGVEw6OkxvY2F0aW9uOjpLaW5kIGtpbmQpCi17Ci0g
ICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBMb2NhdGlvbjo6VW5wcm9jZXNzZWQ6Ci0gICAg
ICAgIG91dC5wcmludCgiVW5wcm9jZXNzZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
TG9jYXRpb246OlJlZ2lzdGVyOgotICAgICAgICBvdXQucHJpbnQoIlJlZ2lzdGVyIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIExvY2F0aW9uOjpJbmRpcmVjdDoKLSAgICAgICAgb3V0LnBy
aW50KCJJbmRpcmVjdCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBMb2NhdGlvbjo6Q29u
c3RhbnQ6Ci0gICAgICAgIG91dC5wcmludCgiQ29uc3RhbnQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvY2F0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNzE4
YmJkODcyODI1NjBlZjMwMzY1MTZlMjAyY2Y0MzdjY2Y0MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b2NhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBGVExMb2NhdGlv
bl9oCi0jZGVmaW5lIEZUTExvY2F0aW9uX2gKLQotI2lmIEVOQUJMRShGVExfSklUKQotCi0jaW5j
bHVkZSAiRlBSSW5mby5oIgotI2luY2x1ZGUgIkZUTERXQVJGUmVnaXN0ZXIuaCIKLSNpbmNsdWRl
ICJGVExTdGFja01hcHMuaCIKLSNpbmNsdWRlICJHUFJJbmZvLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewotCi1jbGFzcyBMb2Nh
dGlvbiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBLaW5kIHsKLSAgICAgICAgVW5wcm9jZXNzZWQsCi0g
ICAgICAgIFJlZ2lzdGVyLAotICAgICAgICBJbmRpcmVjdCwKLSAgICAgICAgQ29uc3RhbnQKLSAg
ICB9OwotICAgIAotICAgIExvY2F0aW9uKCkKLSAgICAgICAgOiBtX2tpbmQoVW5wcm9jZXNzZWQp
Ci0gICAgewotICAgICAgICB1LmNvbnN0YW50ID0gMDsKLSAgICB9Ci0gICAgCi0gICAgTG9jYXRp
b24oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fa2luZChVbnBy
b2Nlc3NlZCkKLSAgICB7Ci0gICAgICAgIHUuY29uc3RhbnQgPSAxOwotICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgTG9jYXRpb24gZm9yUmVnaXN0ZXIoRFdBUkZSZWdpc3RlciBkd2FyZlJlZywgaW50
MzJfdCBhZGRlbmQpCi0gICAgewotICAgICAgICBMb2NhdGlvbiByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX2tpbmQgPSBSZWdpc3RlcjsKLSAgICAgICAgcmVzdWx0LnUudmFyaWFibGUuZHdhcmZS
ZWdOdW0gPSBkd2FyZlJlZy5kd2FyZlJlZ051bSgpOwotICAgICAgICByZXN1bHQudS52YXJpYWJs
ZS5vZmZzZXQgPSBhZGRlbmQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAot
ICAgIHN0YXRpYyBMb2NhdGlvbiBmb3JJbmRpcmVjdChEV0FSRlJlZ2lzdGVyIGR3YXJmUmVnLCBp
bnQzMl90IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIExvY2F0aW9uIHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0Lm1fa2luZCA9IEluZGlyZWN0OwotICAgICAgICByZXN1bHQudS52YXJpYWJsZS5kd2Fy
ZlJlZ051bSA9IGR3YXJmUmVnLmR3YXJmUmVnTnVtKCk7Ci0gICAgICAgIHJlc3VsdC51LnZhcmlh
YmxlLm9mZnNldCA9IG9mZnNldDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIExvY2F0aW9uIGZvckNvbnN0YW50KGludDY0X3QgY29uc3RhbnQpCi0gICAg
ewotICAgICAgICBMb2NhdGlvbiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBDb25z
dGFudDsKLSAgICAgICAgcmVzdWx0LnUuY29uc3RhbnQgPSBjb25zdGFudDsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBZb3UgY2FuIHBhc3MgYSBudWxsIFN0YWNrTWFw
cyBpZiB5b3UgYXJlIGNvbmZpZGVudCB0aGF0IHRoZSBsb2NhdGlvbiBkb2Vzbid0Ci0gICAgLy8g
aW52b2x2ZSBhIHdpZGUgY29uc3RhbnQuCi0gICAgc3RhdGljIExvY2F0aW9uIGZvclN0YWNrbWFw
cyhjb25zdCBTdGFja01hcHMqLCBjb25zdCBTdGFja01hcHM6OkxvY2F0aW9uJik7Ci0gICAgCi0g
ICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgCi0gICAgYm9vbCBo
YXNEd2FyZlJlZ051bSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciB8fCBraW5k
KCkgPT0gSW5kaXJlY3Q7IH0KLSAgICBpbnQxNl90IGR3YXJmUmVnTnVtKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChoYXNEd2FyZlJlZ051bSgpKTsKLSAgICAgICAgcmV0dXJuIHUudmFy
aWFibGUuZHdhcmZSZWdOdW07Ci0gICAgfQotICAgIAotICAgIGJvb2wgaGFzRHdhcmZSZWcoKSBj
b25zdCB7IHJldHVybiBoYXNEd2FyZlJlZ051bSgpOyB9Ci0gICAgRFdBUkZSZWdpc3RlciBkd2Fy
ZlJlZygpIGNvbnN0IHsgcmV0dXJuIERXQVJGUmVnaXN0ZXIoZHdhcmZSZWdOdW0oKSk7IH0KLSAg
ICAKLSAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBJbmRpcmVj
dDsgfQotICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCho
YXNPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVybiB1LnZhcmlhYmxlLm9mZnNldDsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBoYXNBZGRlbmQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gUmVnaXN0
ZXI7IH0KLSAgICBpbnQzMl90IGFkZGVuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
aGFzQWRkZW5kKCkpOwotICAgICAgICByZXR1cm4gdS52YXJpYWJsZS5vZmZzZXQ7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaGFzQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gQ29u
c3RhbnQ7IH0KLSAgICBpbnQ2NF90IGNvbnN0YW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChoYXNDb25zdGFudCgpKTsKLSAgICAgICAgcmV0dXJuIHUuY29uc3RhbnQ7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFVucHJv
Y2Vzc2VkICYmICF1LnZhcmlhYmxlLm9mZnNldDsgfQotICAgIAotICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gVW5wcm9jZXNzZWQgJiYg
dS52YXJpYWJsZS5vZmZzZXQ7IH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9j
YXRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhl
ci5tX2tpbmQKLSAgICAgICAgICAgICYmIHUuY29uc3RhbnQgPT0gb3RoZXIudS5jb25zdGFudDsK
LSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2tpbmQ7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGtpbmQo
KSkgewotICAgICAgICBjYXNlIFVucHJvY2Vzc2VkOgotICAgICAgICAgICAgcmVzdWx0IF49IHUu
dmFyaWFibGUub2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSZWdp
c3RlcjoKLSAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLmR3YXJmUmVnTnVtOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBJbmRpcmVjdDoKLSAg
ICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLmR3YXJmUmVnTnVtOwotICAgICAgICAgICAg
cmVzdWx0IF49IHUudmFyaWFibGUub2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBDb25zdGFudDoKLSAgICAgICAgICAgIHJlc3VsdCBePSBXVEY6
OkludEhhc2g8aW50NjRfdD46Omhhc2godS5jb25zdGFudCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDx1bnNpZ25l
ZD46Omhhc2gocmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCBpc0dQUigpIGNvbnN0OwotICAgIGJvb2wgaW52b2x2
ZXNHUFIoKSBjb25zdDsKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3Q7Ci0gICAgR1BSUmVnIGRpcmVj
dEdQUigpIGNvbnN0OyAvLyBHZXQgdGhlIEdQUiBhbmQgYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8g
YWRkZW5kLgotICAgIAotICAgIGJvb2wgaXNGUFIoKSBjb25zdDsKLSAgICBGUFJSZWcgZnByKCkg
Y29uc3Q7Ci0gICAgCi0gICAgLy8gQXNzdW1pbmcgdGhhdCBhbGwgcmVnaXN0ZXJzIGFyZSBzYXZl
ZCB0byB0aGUgc2F2ZWRSZWdpc3RlcnMgYnVmZmVyIGFjY29yZGluZwotICAgIC8vIHRvIEZUTFNh
dmVSZXN0b3JlIGNvbnZlbnRpb24sIHRoaXMgbG9hZHMgdGhlIHZhbHVlIGludG8gdGhlIGdpdmVu
IHJlZ2lzdGVyLgotICAgIC8vIFRoZSBjb2RlIHRoYXQgdGhpcyBnZW5lcmF0ZXMgaXNuJ3QgZXhh
Y3RseSBzdXBlciBmYXN0LiBUaGlzIGFzc3VtZXMgdGhhdCBGUAotICAgIC8vIGFuZCBTUCBjb250
YWluIHRoZSBzYW1lIHZhbHVlcyB0aGF0IHRoZXkgd291bGQgaGF2ZSBjb250YWluZWQgaW4gdGhl
IG9yaWdpbmFsCi0gICAgLy8gZnJhbWUsIG9yIHRoYXQgeW91J3ZlIGRvbmUgb25lIG9yIG1vcmUg
Y2Fub25pY2FsbHkgZm9ybWVkIGNhbGxzIChpLmUuIGNhbgotICAgIC8vIHJlc3RvcmUgdGhlIEZQ
IGJ5IGZvbGxvd2luZyB0aGUgY2FsbCBmcmFtZSBsaW5rZWQgbGlzdCBudW1GcmFtZXNUb1BvcCB0
aW1lcywKLSAgICAvLyBhbmQgU1AgY2FuIGJlIHJlY292ZXJlZCBieSBwb3BwaW5nIEZQIG51bUZy
YW1lc1RvUG9wLTEgdGltZXMgYW5kIGFkZGluZyAxNikuCi0gICAgdm9pZCByZXN0b3JlSW50byhN
YWNyb0Fzc2VtYmxlciYsIGNoYXIqIHNhdmVkUmVnaXN0ZXJzLCBHUFJSZWcgcmVzdWx0LCB1bnNp
Z25lZCBudW1GcmFtZXNUb1BvcCA9IDApIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICBLaW5k
IG1fa2luZDsKLSAgICB1bmlvbiB7Ci0gICAgICAgIGludDY0X3QgY29uc3RhbnQ7Ci0gICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQxNl90IGR3YXJmUmVnTnVtOwotICAgICAgICAgICAg
aW50MzJfdCBvZmZzZXQ7Ci0gICAgICAgIH0gdmFyaWFibGU7Ci0gICAgfSB1OwotfTsKLQotc3Ry
dWN0IExvY2F0aW9uSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTG9jYXRp
b24mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IExvY2F0aW9uJiBhLCBjb25zdCBMb2NhdGlvbiYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpGVEw6OkxvY2F0aW9uOjpLaW5k
KTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpGVEw6OkxvY2F0aW9uPiB7Ci0gICAgdHlwZWRlZiBK
U0M6OkZUTDo6TG9jYXRpb25IYXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSGFzaFRyYWl0czsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpGVEw6
OkxvY2F0aW9uPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkZUTDo6TG9jYXRpb24+IHsg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKLQot
I2VuZGlmIC8vIEZUTExvY2F0aW9uX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFNhdmVSZXN0b3JlLmNwcAppbmRleCBjNzUyZmQyMmZiNzY2MzEyY2IzYzRhMTJkZjE0MjZiZTE5
N2IyNmI0Li4zNGYxM2M2OWY3NzgzNDFhOTRiYzQ3YWI0NmY2NDY1ZTY2YTliMGU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDMsNiAr
MTQzLDY4IEBAIHZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxlciYgaml0LCBj
aGFyKiBzY3JhdGNoTWVtb3J5KQogICAgIGppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MocmVncy5maXJzdCwgb2Zmc2V0T2ZHUFIocmVncy5maXJzdCkpLCByZWdzLmZpcnN0KTsKIH0K
IAordm9pZCByZXN0b3JlSlNDTG9jYXRpb25JbnRvKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIq
IHNjcmF0Y2hNZW1vcnksIGNvbnN0IEpTQzo6TG9jYXRpb24mIGxvY2F0aW9uLCBHUFJSZWcgcmVz
dWx0LCB1bnNpZ25lZCBudW1GcmFtZXNUb1BvcCkKK3sKKyAgICBpZiAobG9jYXRpb24uaW52b2x2
ZXNHUFIoKSkgeworICAgICAgICBpZiAoUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0
KGxvY2F0aW9uLmdwcigpKSkgeworICAgICAgICAgICAgLy8gTWFrZSB0aGUgcmVzdWx0IEdQUiBj
b250YWluIHRoZSBhcHByb3ByaWF0ZSBzdGFjayByZWdpc3Rlci4KKyAgICAgICAgICAgIGlmIChu
dW1GcmFtZXNUb1BvcCkgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgcmVzdWx0KTsKKworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bUZyYW1lc1RvUG9wIC0gMTsgaS0tOykKKyAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWRQdHIocmVzdWx0LCByZXN1bHQpOworCisgICAgICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uLmdwcigpID09IE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlcikKKyAg
ICAgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIocmVzdWx0LCByZXN1bHQpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCopICogMiksIHJlc3VsdCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBqaXQubW92ZShsb2NhdGlvbi5ncHIoKSwgcmVzdWx0
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2hNZW1vcnkg
KyBvZmZzZXRPZkdQUihsb2NhdGlvbi5ncHIoKSksIHJlc3VsdCk7CisgICAgfQorCisgICAgaWYg
KGxvY2F0aW9uLmlzR1BSKCkpIHsKKyAgICAgICAgQVNTRVJUKGxvY2F0aW9uLmludm9sdmVzR1BS
KCkpOworICAgICAgICAvLyBUaGUgc3RhY2sgcmVnaXN0ZXIgaXMgYWxyZWFkeSByZWNvdmVyZWQg
aW50byByZXN1bHQuCisgICAgICAgIGlmIChsb2NhdGlvbi5hZGRlbmQoKSkKKyAgICAgICAgICAg
IGppdC5hZGQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uLmFkZGVuZCgp
KSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChsb2NhdGlvbi5p
c0ZQUigpKSB7CisgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaE1lbW9yeSArIG9mZnNldE9mRlBS
KGxvY2F0aW9uLmZwcigpKSwgcmVzdWx0KTsKKyAgICAgICAgQVNTRVJUKCFsb2NhdGlvbi5hZGRl
bmQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGxvY2F0aW9uLmtp
bmQoKSkgeworICAgIGNhc2UgSlNDOjpMb2NhdGlvbjo6UmVnaXN0ZXI6CisgICAgICAgIC8vIExM
Vk0gdXNlZCBzb21lIHJlZ2lzdGVyIHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCEKKyAgICAgICAg
ZGF0YUxvZygiVW5yZWNvZ25pemVkIGxvY2F0aW9uOiAiLCBsb2NhdGlvbiwgIlxuIik7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgSlNDOjpMb2NhdGlvbjo6SW5kaXJlY3Q6CisgICAgICAgIEFTU0VSVChsb2NhdGlvbi5p
bnZvbHZlc0dQUigpKTsKKyAgICAgICAgLy8gVGhlIHN0YWNrIHJlZ2lzdGVyIGlzIGFscmVhZHkg
cmVjb3ZlcmVkIGludG8gcmVzdWx0LgorICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHJlc3VsdCwgbG9jYXRpb24ub2Zmc2V0KCkpLCByZXN1bHQpOworICAgICAgICBy
ZXR1cm47CisKKyAgICBjYXNlIEpTQzo6TG9jYXRpb246OkNvbnN0YW50OgorICAgICAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KGxvY2F0aW9uLmNvbnN0YW50KCkpLCBy
ZXN1bHQpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIEpTQzo6TG9jYXRpb246OlVucHJv
Y2Vzc2VkOgorICAgICAgICAvLyBTaG91bGQgbmV2ZXIgc2VlIHRoaXMgLSBpdCdzIGFuIGVudW1l
cmF0aW9uIGVudHJ5IG9uIExMVk0ncyBzaWRlIHRoYXQgbWVhbnMgdGhhdAorICAgICAgICAvLyBp
dCBoYXNuJ3QgcHJvY2Vzc2VkIHRoaXMgbG9jYXRpb24uCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNl
bmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU2F2ZVJlc3RvcmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2
ZVJlc3RvcmUuaAppbmRleCA3MjBjNzZjM2VkZWFkYTA3ODYzNDQ4Y2ZmZDk2Mzc2NTE2ZTIyNzc5
Li43MjRhMjg2M2U4YWNmY2UwZTU0Y2YyYThiZjA3YTQ5OTZkYzZjNWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpZm5kZWYgRlRMU2F2ZVJlc3RvcmVfaApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiRlBSSW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRl
ICJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlJlZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUx
LDkgKzUyLDE3IEBAIHZvaWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxlciYgaml0LCBj
aGFyKiBzY3JhdGNoTWVtb3J5KTsKIAogdm9pZCByZXN0b3JlQWxsUmVnaXN0ZXJzKE1hY3JvQXNz
ZW1ibGVyJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpOwogCisvLyBBc3N1bWluZyB0aGF0IGFs
bCByZWdpc3RlcnMgYXJlIHNhdmVkIHRvIHRoZSBzYXZlZFJlZ2lzdGVycyBidWZmZXIgYWNjb3Jk
aW5nCisvLyB0byBTYXZlUmVzdG9yZSBjb252ZW50aW9uLCB0aGlzIGxvYWRzIHRoZSB2YWx1ZSBp
bnRvIHRoZSBnaXZlbiByZWdpc3Rlci4KKy8vIFRoZSBjb2RlIHRoYXQgdGhpcyBnZW5lcmF0ZXMg
aXNuJ3QgZXhhY3RseSBzdXBlciBmYXN0LiBUaGlzIGFzc3VtZXMgdGhhdCBGUAorLy8gYW5kIFNQ
IGNvbnRhaW4gdGhlIHNhbWUgdmFsdWVzIHRoYXQgdGhleSB3b3VsZCBoYXZlIGNvbnRhaW5lZCBp
biB0aGUgb3JpZ2luYWwKKy8vIGZyYW1lLCBvciB0aGF0IHlvdSd2ZSBkb25lIG9uZSBvciBtb3Jl
IGNhbm9uaWNhbGx5IGZvcm1lZCBjYWxscyAoaS5lLiBjYW4KKy8vIHJlc3RvcmUgdGhlIEZQIGJ5
IGZvbGxvd2luZyB0aGUgY2FsbCBmcmFtZSBsaW5rZWQgbGlzdCBudW1GcmFtZXNUb1BvcCB0aW1l
cywKKy8vIGFuZCBTUCBjYW4gYmUgcmVjb3ZlcmVkIGJ5IHBvcHBpbmcgRlAgbnVtRnJhbWVzVG9Q
b3AtMSB0aW1lcyBhbmQgYWRkaW5nIDE2KS4KK3ZvaWQgcmVzdG9yZUpTQ0xvY2F0aW9uSW50byhN
YWNyb0Fzc2VtYmxlciYsIGNoYXIqIHNjcmF0Y2hNZW1vcnksIGNvbnN0IEpTQzo6TG9jYXRpb24m
LCBHUFJSZWcgcmVzdWx0LCB1bnNpZ25lZCBudW1GcmFtZXNUb1BvcCA9IDApOworCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAotI2VuZGlm
IC8vIEZUTFNhdmVSZXN0b3JlX2gKLQorI2VuZGlmIC8vIFNhdmVSZXN0b3JlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmNwcAppbmRleCBhOGNlMTJiYWIyYmQxNGFl
MzU2YmY0ODBlZTkwNzU2ZTNiZDc4NDAxLi4wMWYyOGMzZmViODY3Nzk1YzUwMDNmYmEyOGEyMTM0
ODgyMDlmMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNr
TWFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVkZSAi
RlRMTG9jYXRpb24uaCIKKyNpbmNsdWRlICJGVExTYXZlUmVzdG9yZS5oIgogI2luY2x1ZGUgPHd0
Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0RHVtcC5oPgpAQCAtODYsMTUgKzg2LDQyIEBAIHZvaWQgU3RhY2tNYXBzOjpMb2NhdGlv
bjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIG91dC5wcmludCgiKCIsIGtpbmQs
ICIsICIsIGR3YXJmUmVnLCAiLCBvZmY6Iiwgb2Zmc2V0LCAiLCBzaXplOiIsIHNpemUsICIpIik7
CiB9CiAKK0pTQzo6TG9jYXRpb24gU3RhY2tNYXBzOjpMb2NhdGlvbjo6dG9KU0NMb2NhdGlvbihj
b25zdCBTdGFja01hcHMqIHN0YWNrbWFwcykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsK
KyAgICBjYXNlIFN0YWNrTWFwczo6TG9jYXRpb246OlVucHJvY2Vzc2VkOgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU3Rh
Y2tNYXBzOjpMb2NhdGlvbjo6UmVnaXN0ZXI6CisgICAgY2FzZSBTdGFja01hcHM6OkxvY2F0aW9u
OjpEaXJlY3Q6CisgICAgICAgIHJldHVybiBKU0M6OkxvY2F0aW9uOjpmb3JSZWdpc3Rlcihkd2Fy
ZlJlZy5yZWcoKSwgb2Zmc2V0KTsKKworICAgIGNhc2UgU3RhY2tNYXBzOjpMb2NhdGlvbjo6SW5k
aXJlY3Q6CisgICAgICAgIHJldHVybiBKU0M6OkxvY2F0aW9uOjpmb3JJbmRpcmVjdChkd2FyZlJl
Zy5yZWcoKSwgb2Zmc2V0KTsKKworICAgIGNhc2UgU3RhY2tNYXBzOjpMb2NhdGlvbjo6Q29uc3Rh
bnQ6CisgICAgICAgIHJldHVybiBKU0M6OkxvY2F0aW9uOjpmb3JDb25zdGFudChvZmZzZXQpOwor
CisgICAgY2FzZSBTdGFja01hcHM6OkxvY2F0aW9uOjpDb25zdGFudEluZGV4OgorICAgICAgICBB
U1NFUlQoc3RhY2ttYXBzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6TG9jYXRpb246OmZvckNvbnN0
YW50KHN0YWNrbWFwcy0+Y29uc3RhbnRzW29mZnNldF0uaW50ZWdlcik7CisgICAgfQorCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiBKU0M6OkxvY2F0aW9u
KCk7Cit9CisKIEdQUlJlZyBTdGFja01hcHM6OkxvY2F0aW9uOjpkaXJlY3RHUFIoKSBjb25zdAog
ewotICAgIHJldHVybiBGVEw6OkxvY2F0aW9uOjpmb3JTdGFja21hcHMobnVsbHB0ciwgKnRoaXMp
LmRpcmVjdEdQUigpOworICAgIHJldHVybiB0b0pTQ0xvY2F0aW9uKG51bGxwdHIpLmRpcmVjdEdQ
UigpOwogfQogCiB2b2lkIFN0YWNrTWFwczo6TG9jYXRpb246OnJlc3RvcmVJbnRvKAogICAgIE1h
Y3JvQXNzZW1ibGVyJiBqaXQsIFN0YWNrTWFwcyYgc3RhY2ttYXBzLCBjaGFyKiBzYXZlZFJlZ2lz
dGVycywgR1BSUmVnIHJlc3VsdCkgY29uc3QKIHsKLSAgICBGVEw6OkxvY2F0aW9uOjpmb3JTdGFj
a21hcHMoJnN0YWNrbWFwcywgKnRoaXMpLnJlc3RvcmVJbnRvKGppdCwgc2F2ZWRSZWdpc3RlcnMs
IHJlc3VsdCk7CisgICAgcmVzdG9yZUpTQ0xvY2F0aW9uSW50byhqaXQsIHNhdmVkUmVnaXN0ZXJz
LCB0b0pTQ0xvY2F0aW9uKCZzdGFja21hcHMpLCByZXN1bHQpOwogfQogCiB2b2lkIFN0YWNrTWFw
czo6TGl2ZU91dDo6cGFyc2UoU3RhY2tNYXBzOjpQYXJzZUNvbnRleHQmIGNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNrTWFwcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01hcHMuaAppbmRleCA2NDQwYjBmN2YyYTMzZDUx
YmVmM2ExOTVkNzNlZWUyOWYwZWZlOTc3Li40YzM0MDg3MjQyNTY0OTdhMzYwN2ExZDM2MjQ3OGQ3
MzgyZjQyYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNr
TWFwcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhVmlldy5oIgogI2luY2x1ZGUgIkZUTERXQVJG
UmVnaXN0ZXIuaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTG9jYXRpb24uaCIK
ICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAg
LTgyLDYgKzgzLDEwIEBAIHN0cnVjdCBTdGFja01hcHMgewogICAgICAgICAKICAgICAgICAgR1BS
UmVnIGRpcmVjdEdQUigpIGNvbnN0OwogICAgICAgICB2b2lkIHJlc3RvcmVJbnRvKE1hY3JvQXNz
ZW1ibGVyJiwgU3RhY2tNYXBzJiwgY2hhciogc2F2ZWRSZWdpc3RlcnMsIEdQUlJlZyByZXN1bHQp
IGNvbnN0OworCisgICAgICAgIC8vIFlvdSBjYW4gcGFzcyBhIG51bGwgU3RhY2tNYXBzIGlmIHlv
dSBhcmUgY29uZmlkZW50IHRoYXQgdGhlIGxvY2F0aW9uIGRvZXNuJ3QKKyAgICAgICAgLy8gaW52
b2x2ZSBhIHdpZGUgY29uc3RhbnQuCisgICAgICAgIEpTQzo6TG9jYXRpb24gdG9KU0NMb2NhdGlv
bihjb25zdCBTdGFja01hcHMqIHN0YWNrbWFwcyA9IG51bGxwdHIpIGNvbnN0OwogICAgIH07CiAg
ICAgCiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIGhvdyBtdWNoIG1lbW9yeSB0aGlzIHRha2Vz
IGFuZCBwb3NzaWJseSBwcnVuZSBpdCBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmgKaW5kZXggOGNmYjE2ZDNkMmE1N2U2YTdlNGRjZWFjMjhjMjhhOGQzNWE3MTUzZi4u
MmY2ZWY0YTgxY2U1MTk5NGFhMDBmNzMzYTViNGM5ZmZhZDc0OWI5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoRlRM
X0pJVCkKIAotI2luY2x1ZGUgIkZUTExvY2F0aW9uLmgiCiAjaW5jbHVkZSAiRlRMU2xvd1BhdGhD
YWxsS2V5LmgiCisjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvTG9jYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2OWRiNDg3MmQ0N2Q1ZGQ0YjY4NzZiM2Fm
OTMyNmYzYzlhZmNhZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0xvY2F0aW9uLmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxvY2F0aW9uLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3Zv
aWQgTG9jYXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJp
bnQoIigiLCBraW5kKCkpOworICAgIGlmIChoYXNSZWcoKSkKKyAgICAgICAgb3V0LnByaW50KCIs
ICIsIHJlZygpKTsKKyAgICBpZiAoaGFzT2Zmc2V0KCkpCisgICAgICAgIG91dC5wcmludCgiLCAi
LCBvZmZzZXQoKSk7CisgICAgaWYgKGhhc0FkZGVuZCgpKQorICAgICAgICBvdXQucHJpbnQoIiwg
IiwgYWRkZW5kKCkpOworICAgIGlmIChoYXNDb25zdGFudCgpKQorICAgICAgICBvdXQucHJpbnQo
IiwgIiwgY29uc3RhbnQoKSk7CisgICAgb3V0LnByaW50KCIpIik7Cit9CisKK2Jvb2wgTG9jYXRp
b246Omludm9sdmVzR1BSKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNHUFIoKSB8fCBraW5kKCkg
PT0gSW5kaXJlY3Q7Cit9CisKK2Jvb2wgTG9jYXRpb246OmlzR1BSKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4ga2luZCgpID09IFJlZ2lzdGVyICYmIHJlZygpLmlzR1BSKCk7Cit9CisKK0dQUlJlZyBM
b2NhdGlvbjo6Z3ByKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVnKCkuZ3ByKCk7Cit9CisKK2Jv
b2wgTG9jYXRpb246OmlzRlBSKCkgY29uc3QKK3sKKyAgICByZXR1cm4ga2luZCgpID09IFJlZ2lz
dGVyICYmIHJlZygpLmlzRlBSKCk7Cit9CisKK0ZQUlJlZyBMb2NhdGlvbjo6ZnByKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVnKCkuZnByKCk7Cit9CisKK0dQUlJlZyBMb2NhdGlvbjo6ZGlyZWN0
R1BSKCkgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghYWRkZW5kKCkpOworICAgIHJldHVy
biBncHIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgSlNDOjpMb2NhdGlvbjo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAg
IGNhc2UgTG9jYXRpb246OlVucHJvY2Vzc2VkOgorICAgICAgICBvdXQucHJpbnQoIlVucHJvY2Vz
c2VkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExvY2F0aW9uOjpSZWdpc3RlcjoKKyAg
ICAgICAgb3V0LnByaW50KCJSZWdpc3RlciIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBM
b2NhdGlvbjo6SW5kaXJlY3Q6CisgICAgICAgIG91dC5wcmludCgiSW5kaXJlY3QiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgTG9jYXRpb246OkNvbnN0YW50OgorICAgICAgICBvdXQucHJp
bnQoIkNvbnN0YW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2NhdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Mb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlk
MGQ0Njk0NWY5NjI0ZWQ4ZjAxNTMwZDM5NDkxMzZhZjZmMGFmNTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0xvY2F0aW9uLmgKQEAgLTAsMCArMSwxOTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTG9jYXRpb25faAorI2RlZmluZSBMb2NhdGlvbl9oCisKKyNpZiBFTkFCTEUoSklUKQorCisj
aW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWcu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
TG9jYXRpb24geworcHVibGljOgorICAgIGVudW0gS2luZCB7CisgICAgICAgIFVucHJvY2Vzc2Vk
LAorICAgICAgICBSZWdpc3RlciwKKyAgICAgICAgSW5kaXJlY3QsCisgICAgICAgIENvbnN0YW50
CisgICAgfTsKKworICAgIExvY2F0aW9uKCkKKyAgICAgICAgOiBtX2tpbmQoVW5wcm9jZXNzZWQp
CisgICAgeworICAgICAgICB1LmNvbnN0YW50ID0gMDsKKyAgICB9CisKKyAgICBMb2NhdGlvbihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9raW5kKFVucHJvY2Vz
c2VkKQorICAgIHsKKyAgICAgICAgdS5jb25zdGFudCA9IDE7CisgICAgfQorCisgICAgc3RhdGlj
IExvY2F0aW9uIGZvclJlZ2lzdGVyKFJlZyByZWcsIGludDMyX3QgYWRkZW5kKQorICAgIHsKKyAg
ICAgICAgTG9jYXRpb24gcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gUmVnaXN0ZXI7
CisgICAgICAgIHJlc3VsdC51LnZhcmlhYmxlLnJlZ0luZGV4ID0gcmVnLmluZGV4KCk7CisgICAg
ICAgIHJlc3VsdC51LnZhcmlhYmxlLm9mZnNldCA9IGFkZGVuZDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgTG9jYXRpb24gZm9ySW5kaXJlY3QoUmVnIHJlZywg
aW50MzJfdCBvZmZzZXQpCisgICAgeworICAgICAgICBMb2NhdGlvbiByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBJbmRpcmVjdDsKKyAgICAgICAgcmVzdWx0LnUudmFyaWFibGUucmVn
SW5kZXggPSByZWcuaW5kZXgoKTsKKyAgICAgICAgcmVzdWx0LnUudmFyaWFibGUub2Zmc2V0ID0g
b2Zmc2V0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBMb2Nh
dGlvbiBmb3JDb25zdGFudChpbnQ2NF90IGNvbnN0YW50KQorICAgIHsKKyAgICAgICAgTG9jYXRp
b24gcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gQ29uc3RhbnQ7CisgICAgICAgIHJl
c3VsdC51LmNvbnN0YW50ID0gY29uc3RhbnQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisKKyAgICBib29s
IGhhc1JlZygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciB8fCBraW5kKCkgPT0g
SW5kaXJlY3Q7IH0KKyAgICBSZWcgcmVnKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNSZWcoKSk7CisgICAgICAgIHJldHVybiBSZWc6OmZyb21JbmRleCh1LnZhcmlhYmxlLnJlZ0lu
ZGV4KTsKKyAgICB9CisKKyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBJbmRpcmVjdDsgfQorICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNPZmZzZXQoKSk7CisgICAgICAgIHJldHVybiB1LnZhcmlhYmxlLm9mZnNl
dDsKKyAgICB9CisKKyAgICBib29sIGhhc0FkZGVuZCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBSZWdpc3RlcjsgfQorICAgIGludDMyX3QgYWRkZW5kKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNBZGRlbmQoKSk7CisgICAgICAgIHJldHVybiB1LnZhcmlhYmxlLm9mZnNldDsK
KyAgICB9CisKKyAgICBib29sIGhhc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09
IENvbnN0YW50OyB9CisgICAgaW50NjRfdCBjb25zdGFudCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzQ29uc3RhbnQoKSk7CisgICAgICAgIHJldHVybiB1LmNvbnN0YW50OworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFVucHJv
Y2Vzc2VkICYmICF1LnZhcmlhYmxlLm9mZnNldDsgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBVbnByb2Nlc3NlZCAmJiB1LnZh
cmlhYmxlLm9mZnNldDsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExvY2F0aW9uJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5k
CisgICAgICAgICAgICAmJiB1LmNvbnN0YW50ID09IG90aGVyLnUuY29uc3RhbnQ7CisgICAgfQor
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSBtX2tpbmQ7CisKKyAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBV
bnByb2Nlc3NlZDoKKyAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLm9mZnNldDsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUmVnaXN0ZXI6CisgICAgICAgICAgICBy
ZXN1bHQgXj0gdS52YXJpYWJsZS5yZWdJbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgSW5kaXJlY3Q6CisgICAgICAgICAgICByZXN1bHQgXj0gdS52YXJpYWJsZS5yZWdJ
bmRleDsKKyAgICAgICAgICAgIHJlc3VsdCBePSB1LnZhcmlhYmxlLm9mZnNldDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAgICAgICAgICByZXN1bHQg
Xj0gV1RGOjpJbnRIYXNoPGludDY0X3Q+OjpoYXNoKHUuY29uc3RhbnQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gV1RGOjpJbnRIYXNoPHVuc2lnbmVk
Pjo6aGFzaChyZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OworCisgICAgYm9vbCBpc0dQUigpIGNvbnN0OworICAgIGJvb2wgaW52b2x2ZXNHUFIoKSBj
b25zdDsKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3Q7CisgICAgR1BSUmVnIGRpcmVjdEdQUigpIGNv
bnN0OyAvLyBHZXQgdGhlIEdQUiBhbmQgYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gYWRkZW5kLgor
CisgICAgYm9vbCBpc0ZQUigpIGNvbnN0OworICAgIEZQUlJlZyBmcHIoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBLaW5kIG1fa2luZDsKKyAgICB1bmlvbiB7CisgICAgICAgIGludDY0X3QgY29u
c3RhbnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQzMl90IHJlZ0luZGV4Owor
ICAgICAgICAgICAgaW50MzJfdCBvZmZzZXQ7CisgICAgICAgIH0gdmFyaWFibGU7CisgICAgfSB1
OworfTsKKworc3RydWN0IExvY2F0aW9uSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgTG9jYXRpb24mIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IExvY2F0aW9uJiBhLCBjb25zdCBMb2NhdGlvbiYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYg
eworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkxvY2F0aW9uOjpLaW5k
KTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpMb2NhdGlvbj4geworICAgIHR5cGVkZWYgSlNDOjpM
b2NhdGlvbkhhc2ggSGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNo
VHJhaXRzOwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkxvY2F0aW9uPiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkxvY2F0aW9uPiB7IH07CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIExvY2F0aW9uX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>