<?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>77116</bug_id>
          
          <creation_ts>2012-01-26 10:27:17 -0800</creation_ts>
          <short_desc>Merge AllocationSpace into MarkedSpace</short_desc>
          <delta_ts>2012-01-26 18:30:59 -0800</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>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="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>levin+threading</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543243</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-01-26 10:27:17 -0800</bug_when>
    <thetext>We have two separate classes that handle allocation in MarkedBlocks. It&apos;s unclear why we make the distinction between AllocationSpace and MarkedSpace. In preparation for future refactoring/enhancement of MarkedSpace allocation, we should merge AllocationSpace into MarkedSpace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543253</commentid>
    <comment_count>1</comment_count>
      <attachid>124141</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-01-26 10:37:43 -0800</bug_when>
    <thetext>Created attachment 124141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543276</commentid>
    <comment_count>2</comment_count>
      <attachid>124145</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-01-26 10:54:53 -0800</bug_when>
    <thetext>Created attachment 124145
Fixing builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543280</commentid>
    <comment_count>3</comment_count>
      <attachid>124145</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-26 10:57:33 -0800</bug_when>
    <thetext>Comment on attachment 124145
Fixing builds

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543307</commentid>
    <comment_count>4</comment_count>
      <attachid>124145</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-26 11:17:25 -0800</bug_when>
    <thetext>Comment on attachment 124145
Fixing builds

Attachment 124145 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11357002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543322</commentid>
    <comment_count>5</comment_count>
      <attachid>124145</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-26 11:25:25 -0800</bug_when>
    <thetext>Comment on attachment 124145
Fixing builds

Attachment 124145 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11191414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543593</commentid>
    <comment_count>6</comment_count>
      <attachid>124198</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-01-26 15:47:17 -0800</bug_when>
    <thetext>Created attachment 124198
Fixing more build stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543621</commentid>
    <comment_count>7</comment_count>
      <attachid>124204</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-01-26 16:08:54 -0800</bug_when>
    <thetext>Created attachment 124204
Hopefully last build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543622</commentid>
    <comment_count>8</comment_count>
      <attachid>124204</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-26 16:09:44 -0800</bug_when>
    <thetext>Comment on attachment 124204
Hopefully last build fix

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543720</commentid>
    <comment_count>9</comment_count>
      <attachid>124204</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 18:30:54 -0800</bug_when>
    <thetext>Comment on attachment 124204
Hopefully last build fix

Clearing flags on attachment: 124204

Committed r106078: &lt;http://trac.webkit.org/changeset/106078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543721</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 18:30:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124141</attachid>
            <date>2012-01-26 10:37:43 -0800</date>
            <delta_ts>2012-01-26 10:54:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77116-20120126103742.patch</filename>
            <type>text/plain</type>
            <size>31018</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTg0YjM4M2VlZjdjMTgzZjQxZDZhYjlhOGQ4OTA0MmM3ZTllYWYxLi4xOTBlMzU1YmRlN2Q5NjRh
MjBiODYxMjUwMTNmNmFjYjEzMTEyNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxMi0wMS0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIE1lcmdlIEFsbG9jYXRpb25TcGFjZSBpbnRvIE1hcmtlZFNwYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzExNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcg
QWxsb2NhdGlvblNwYWNlIGFuZCBNYXJrZWRTcGFjZSBpbiBwcmVwYXJhdGlvbiBmb3IgZnV0dXJl
IHJlZmFjdG9yaW5nL2VuaGFuY2VtZW50IHRvIAorICAgICAgICBNYXJrZWRTcGFjZSBhbGxvY2F0
aW9uLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVhcC9BbGxvY2F0
aW9uU3BhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmg6
IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9CdW1wU3BhY2UuaDoKKyAgICAgICAgKEJ1bXBTcGFj
ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVjdFNw
YWNlKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoKToKKyAgICAgICAgKiBoZWFwL0hlYXBC
bG9jay5oOgorICAgICAgICAoKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlSGVscGVyKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZnJlZUJs
b2Nrcyk6CisgICAgICAgIChUYWtlSWZVbm1hcmtlZCk6CisgICAgICAgIChKU0M6OlRha2VJZlVu
bWFya2VkOjpUYWtlSWZVbm1hcmtlZCk6CisgICAgICAgIChKU0M6OlRha2VJZlVubWFya2VkOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFrZUlmVW5tYXJrZWQ6OnJldHVyblZhbHVlKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmluayk6CisgICAgICAgIChHYXRoZXJEaXJ0
eUNlbGxzKToKKyAgICAgICAgKEpTQzo6R2F0aGVyRGlydHlDZWxsczo6cmV0dXJuVmFsdWUpOgor
ICAgICAgICAoSlNDOjpHYXRoZXJEaXJ0eUNlbGxzOjpHYXRoZXJEaXJ0eUNlbGxzKToKKyAgICAg
ICAgKEpTQzo6R2F0aGVyRGlydHlDZWxsczo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpnYXRoZXJEaXJ0eUNlbGxzKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNl
Lmg6CisgICAgICAgIChNYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpi
bG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaENlbGwpOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlKToKKwogMjAxMi0w
MS0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF1bV2luXSBPbmUgbW9yZSBzcGVjdWxhdGl2ZSBidWlsZGZpeCBhZnRlciByMTA1OTcwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNGJmM2VkOTg4YTFkMjQy
Y2ZkNjJiMWQ4ZWQ5MWI0OTdmZDk0MjZkNy4uMzIwOTYxNWJhYjAzMGY1NWE5Nzg5YjM0MTI1NzZi
MWM3ODk0ZWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBA
IC0xMjcsNiArMTI3LDcgQEAgX19aTjNKU0MxMUpTQnl0ZUFycmF5M3B1dEVQTlNfNkpTQ2VsbEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWwKIF9fWk4zSlNDMTFKU0J5
dGVBcnJheTZzX2luZm9FCiBfX1pOM0pTQzExSlNCeXRlQXJyYXk3ZGVzdHJveUVQTlNfNkpTQ2Vs
bEUKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRlRVBOU185U3RydWN0dXJl
RVBOM1dURjlCeXRlQXJyYXlFCitfX1pOM0pTQzExTWFya2VkU3BhY2UxNmFsbG9jYXRlU2xvd0Nh
c2VFUk5TMF85U2l6ZUNsYXNzRQogX19aTjNKU0MxMVBhcnNlckFyZW5hNXJlc2V0RXYKIF9fWk4z
SlNDMTFjaGVja1N5bnRheEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwU291cmNlQ29kZUVQTlNfN0pT
VmFsdWVFCiBfX1pOM0pTQzExY3JlYXRlRXJyb3JFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmlu
Z0UKQEAgLTE5MCw3ICsxOTEsNiBAQCBfX1pOM0pTQzE0VGltZW91dENoZWNrZXI1cmVzZXRFdgog
X19aTjNKU0MxNFZUYWJsZVNwZWN0cnVtNWNvdW50RVBOU182SlNDZWxsRQogX19aTjNKU0MxNHRo
cm93VHlwZUVycm9yRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxNHRocm93VHlwZUVycm9yRVBO
U185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCi1fX1pOM0pTQzE1QWxsb2NhdGlvblNwYWNlMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4zSlNDMTVX
ZWFrSGFuZGxlT3duZXIyNmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzRU5TXzZIYW5kbGVJTlNf
N1Vua25vd25FRUVQdlJOU18xMVNsb3RWaXNpdG9yRQogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25l
cjhmaW5hbGl6ZUVOU182SGFuZGxlSU5TXzdVbmtub3duRUVFUHYKIF9fWk4zSlNDMTVXZWFrSGFu
ZGxlT3duZXJEMkV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwOGZlZTNiZGJl
ZTBlYTk1OTcwMGEwZWY5YWY2ZGYzZjc5Y2M2MzQuLjVjZTI1NGY1ODFiMDYwZDE5ZDJmZWMxNzJk
ZjQyMDM1NWQ3NTdlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzQsOCAr
NDc0LDYgQEAKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcx
MkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8q
IEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3
REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3Bh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlB
NzA0NTZCMTE0MjdGQjk1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ1NkFFMTQyN0ZCMDMwMDM3
REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuY3BwICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBC
RDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVz
MzJfNjQuY3BwICovOyB9OwogCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RBbk9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi87IH07CiAJCUE3
MjcwMUI5MERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4
RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovOyB9OwpAQCAtMTMwNSw4ICsxMzAzLDYgQEAKIAkJ
QTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExRDc2NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3MDQ1NkFFMTQyN0ZCMDMwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2NhdGlvblNwYWNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcwNDU2QUYxNDI3RkIxNTAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBbGxvY2F0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxMjM2
RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFi
bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcg
LyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3
NzEsOCArMTc2Nyw2IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNzA0NTZBRTE0MjdG
QjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLywKLQkJCQlBNzA0NTZBRjE0MjdG
QjE1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi8sCiAJCQkJQzJDOEQwMkUxNEEzQ0VG
QzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oICovLAogCQkJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2
NCAvKiBCdW1wU3BhY2UuY3BwICovLAogCQkJCUMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBC
dW1wU3BhY2UuaCAqLywKQEAgLTI2NDYsNyArMjY0MCw2IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk4
NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTcwNDU2QjAxNDI3RkI5MTAwMzdEQTY4IC8qIEFsbG9jYXRpb25T
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAwQjM0NDYwIC8qIEFs
d2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0NDYw
IC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2
MSAvKiBBUElTaGltcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDA2LDcgKzMzOTksNiBAQAogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJQTcwNDU2QjExNDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9j
YXRpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdB
NDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0
MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjkwZjJhMjhhNWVmM2VkNzg0MDBhZjAxNGVmMjMwZTYxMzBlOWJkNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MjAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJBbGxvY2F0aW9uU3BhY2UuaCIKLQotI2luY2x1ZGUgIkhlYXAuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWlubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OnRyeUFsbG9jYXRlKE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9IEFsbG9jYXRpb247Ci0gICAgdm9pZCogcmVzdWx0ID0gbV9tYXJrZWRTcGFjZS5h
bGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0g
Tm9PcGVyYXRpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCogQWxsb2NhdGlvblNw
YWNlOjphbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykK
LXsKLSNpZiBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04KLSAgICBtX2hlYXAtPmNvbGxlY3RB
bGxHYXJiYWdlKCk7Ci0gICAgQVNTRVJUKG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uKTsKLSNlbmRpZgotICAgIAotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9j
YXRlKHNpemVDbGFzcyk7Ci0gICAgCi0gICAgaWYgKExJS0VMWShyZXN1bHQgIT0gMCkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAgQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9u
RWZmb3J0OwotICAgIAotICAgIGlmICgoCi0jaWYgRU5BQkxFKEdHQykKLSAgICAgICAgIG1fbWFy
a2VkU3BhY2UubnVyc2VyeVdhdGVyTWFyaygpIDwgbV9oZWFwLT5tX21pbkJ5dGVzUGVyQ3ljbGUK
LSNlbHNlCi0gICAgICAgICBtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0ZXJN
YXJrKCkKLSNlbmRpZgotICAgICAgICAgKSB8fCAhbV9oZWFwLT5tX2lzU2FmZVRvQ29sbGVjdCkK
LSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2VlZDsKLSAgICBl
bHNlCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFpbDsKLSAgICAK
LSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5jZWxsU2l6
ZSwgYWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgIG1fbWFya2Vk
U3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBibG9jayk7Ci0gICAgICAgIHZvaWQqIHJlc3VsdCA9
IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICBtX2hlYXAtPmNvbGxlY3QoSGVhcDo6
RG9Ob3RTd2VlcCk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsK
LSAgICAKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAotICAg
IEFTU0VSVChtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0ZXJNYXJrKCkpOwot
ICAgIAotICAgIG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBhbGxvY2F0ZUJsb2Nr
KHNpemVDbGFzcy5jZWxsU2l6ZSwgQWxsb2NhdGlvbk11c3RTdWNjZWVkKSk7Ci0gICAgCi0gICAg
cmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1NYXJrZWRCbG9jayogQWxsb2NhdGlvblNwYWNlOjphbGxv
Y2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZm
b3J0KQotewotICAgIE1hcmtlZEJsb2NrKiBibG9jazsKLSAgICAKLSAgICB7Ci0gICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIGlmICht
X2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzKSB7Ci0gICAgICAgICAgICBibG9jayA9IHN0YXRp
Y19jYXN0PE1hcmtlZEJsb2NrKj4obV9oZWFwLT5tX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpKTsK
LSAgICAgICAgICAgIEFTU0VSVChibG9jayk7Ci0gICAgICAgICAgICBtX2hlYXAtPm1fbnVtYmVy
T2ZGcmVlQmxvY2tzLS07Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYmxvY2sgPSAwOwot
ICAgIH0KLSAgICBpZiAoYmxvY2spCi0gICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OnJlY3lj
bGUoYmxvY2ssIG1faGVhcCwgY2VsbFNpemUpOwotICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZv
cnQgPT0gQWxsb2NhdGlvbkNhbkZhaWwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAg
ICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgY2VsbFNpemUpOwotICAg
IAotICAgIG1fYmxvY2tzLmFkZChibG9jayk7Ci0gICAgCi0gICAgcmV0dXJuIGJsb2NrOwotfQot
Ci12b2lkIEFsbG9jYXRpb25TcGFjZTo6ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKLXsK
LSAgICBNYXJrZWRCbG9jayogbmV4dDsKLSAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IGhl
YWQ7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IHN0YXRpY19jYXN0PE1h
cmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSk7Ci0gICAgICAgIAotICAgICAgICBtX2Jsb2Nrcy5y
ZW1vdmUoYmxvY2spOwotICAgICAgICBibG9jay0+c3dlZXAoKTsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX2Zy
ZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJs
b2NrcysrOwotICAgIH0KLX0KLQotY2xhc3MgVGFrZUlmVW5tYXJrZWQgewotcHVibGljOgotICAg
IHR5cGVkZWYgTWFya2VkQmxvY2sqIFJldHVyblR5cGU7Ci0gICAgCi0gICAgVGFrZUlmVW5tYXJr
ZWQoTWFya2VkU3BhY2UqKTsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKLSAg
ICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7Ci0gICAgCi1wcml2YXRlOgotICAgIE1hcmtlZFNw
YWNlKiBtX21hcmtlZFNwYWNlOwotICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IG1f
ZW1wdGllczsKLX07Ci0KLWlubGluZSBUYWtlSWZVbm1hcmtlZDo6VGFrZUlmVW5tYXJrZWQoTWFy
a2VkU3BhY2UqIG5ld1NwYWNlKQotICAgIDogbV9tYXJrZWRTcGFjZShuZXdTcGFjZSkKLXsKLX0K
LQotaW5saW5lIHZvaWQgVGFrZUlmVW5tYXJrZWQ6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJs
b2NrKQotewotICAgIGlmICghYmxvY2stPm1hcmtDb3VudElzWmVybygpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgbV9tYXJrZWRTcGFjZS0+cmVtb3ZlQmxvY2soYmxvY2spOwotICAgIG1f
ZW1wdGllcy5hcHBlbmQoYmxvY2spOwotfQotCi1pbmxpbmUgVGFrZUlmVW5tYXJrZWQ6OlJldHVy
blR5cGUgVGFrZUlmVW5tYXJrZWQ6OnJldHVyblZhbHVlKCkKLXsKLSAgICByZXR1cm4gbV9lbXB0
aWVzLmhlYWQoKTsKLX0KLQotdm9pZCBBbGxvY2F0aW9uU3BhY2U6OnNocmluaygpCi17Ci0gICAg
Ly8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBhdm9pZCBtb2RpZnlp
bmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgotICAgIFRha2VJZlVubWFya2VkIHRha2VJ
ZlVubWFya2VkKCZtX21hcmtlZFNwYWNlKTsKLSAgICBmcmVlQmxvY2tzKGZvckVhY2hCbG9jayh0
YWtlSWZVbm1hcmtlZCkpOwotfQotCi0jaWYgRU5BQkxFKEdHQykKLWNsYXNzIEdhdGhlckRpcnR5
Q2VsbHMgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhdGhlckRpcnR5Q2VsbHMpOwotcHVi
bGljOgotICAgIHR5cGVkZWYgdm9pZCogUmV0dXJuVHlwZTsKLSAgICAKLSAgICBleHBsaWNpdCBH
YXRoZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3IqKTsKLSAgICB2b2lk
IG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkg
eyByZXR1cm4gMDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBNYXJrZWRCbG9jazo6RGlydHlDZWxs
VmVjdG9yKiBtX2RpcnR5Q2VsbHM7Ci19OwotCi1pbmxpbmUgR2F0aGVyRGlydHlDZWxsczo6R2F0
aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yKiBkaXJ0eUNlbGxzKQot
ICAgIDogbV9kaXJ0eUNlbGxzKGRpcnR5Q2VsbHMpCi17Ci19Ci0KLWlubGluZSB2b2lkIEdhdGhl
ckRpcnR5Q2VsbHM6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQotewotICAgIGJsb2Nr
LT5nYXRoZXJEaXJ0eUNlbGxzKCptX2RpcnR5Q2VsbHMpOwotfQotCi12b2lkIEFsbG9jYXRpb25T
cGFjZTo6Z2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yJiBkaXJ0
eUNlbGxzKQotewotICAgIEdhdGhlckRpcnR5Q2VsbHMgZ2F0aGVyRGlydHlDZWxscygmZGlydHlD
ZWxscyk7Ci0gICAgZm9yRWFjaEJsb2NrKGdhdGhlckRpcnR5Q2VsbHMpOwotfQotI2VuZGlmCi0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFj
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YTZiNWEzZTQxNWI2ODEyZmU2MDkxYTIzNzNkNWVl
NzViNGE5NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQWxsb2NhdGlvblNwYWNl
X2gKLSNkZWZpbmUgQWxsb2NhdGlvblNwYWNlX2gKLQotI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0
LmgiCi0jaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKLQotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBIZWFwOwotY2xhc3MgTWFya2VkQmxvY2s7Ci0K
LWNsYXNzIEFsbG9jYXRpb25TcGFjZSB7Ci1wdWJsaWM6Ci0gICAgQWxsb2NhdGlvblNwYWNlKEhl
YXAqIGhlYXApCi0gICAgICAgIDogbV9oZWFwKGhlYXApCi0gICAgICAgICwgbV9tYXJrZWRTcGFj
ZShoZWFwKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJs
b2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7Ci0gICAgCi0gICAgTWFya2VkQmxvY2tTZXQm
IGJsb2NrcygpIHsgcmV0dXJuIG1fYmxvY2tzOyB9Ci0gICAgTWFya2VkU3BhY2U6OlNpemVDbGFz
cyYgc2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9tYXJrZWRTcGFjZS5zaXpl
Q2xhc3NGb3IoYnl0ZXMpOyB9Ci0gICAgc2l6ZV90IHdhdGVyTWFyaygpIHsgcmV0dXJuIG1fbWFy
a2VkU3BhY2Uud2F0ZXJNYXJrKCk7IH0KLQotI2lmIEVOQUJMRShHR0MpCi0gICAgdm9pZCBnYXRo
ZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3ImKTsKLSNlbmRpZgotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbCgpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJs
b2NrKEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBG
dW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwotICAgIAotICAgIHZvaWQgY2Fub25p
Y2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpIHsgbV9tYXJrZWRTcGFjZS5jYW5vbmljYWxpemVDZWxs
TGl2ZW5lc3NEYXRhKCk7IH0KLSAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCkgeyBtX21hcmtlZFNw
YWNlLnJlc2V0QWxsb2NhdG9yKCk7IH0KLSAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3Qp
OwotICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayopOwotICAgIHZvaWQgc2hyaW5rKCk7
Ci0gICAgCi1wcml2YXRlOgotICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25D
YW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKLQotICAgIHZvaWQqIGFsbG9jYXRlKE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKLSAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93
Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Ci0gICAgTWFya2VkQmxvY2sqIGFsbG9jYXRl
QmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0KTsKLSAgICAKLSAgICBIZWFw
KiBtX2hlYXA7Ci0gICAgTWFya2VkU3BhY2UgbV9tYXJrZWRTcGFjZTsKLSAgICBNYXJrZWRCbG9j
a1NldCBtX2Jsb2NrczsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaENlbGwo
RnVuY3RvciYgZnVuY3RvcikKLXsKLSAgICBjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7
Ci0KLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgIGZv
ciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgKCppdCktPmZvckVhY2hDZWxsKGZ1bmN0b3IpOwotICAgIHJldHVybiBm
dW5jdG9yLnJldHVyblZhbHVlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFj
aENlbGwoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaENlbGwo
ZnVuY3Rvcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0
b3ImIGZ1bmN0b3IpCi17Ci0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5l
bmQoKTsKLSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGZ1bmN0b3IoKml0KTsKLSAgICByZXR1cm4gZnVu
Y3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hC
bG9jaygpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoQmxvY2so
ZnVuY3Rvcik7Ci19Ci0KLWlubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlKE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICAvLyBUaGlzIGlzIGEgbGln
aHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9zdCBjb21tb24gY2FzZS4KLSAgICBN
YXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBzaXplQ2xhc3MuZmlyc3RGcmVl
Q2VsbDsKLSAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwpKQotICAgICAgICByZXR1cm4g
YWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3MpOwotICAgIAotICAgIHNpemVDbGFzcy5maXJzdEZy
ZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKLSAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsK
LX0KLQotaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVz
KQotewotICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0Zv
cihieXRlcyk7Ci0gICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7Ci19Ci0KLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oCmluZGV4IDFmZmNiNDY4MDNh
YzcxMTAxZjgwODQ3ODU1NjA2ZWQ4YTlhNzYwOTIuLjMwZTZiNzRmZTg5YmMzZDg5N2FmMTg4ZGYx
ZmE1Mjk2YWExMGVjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1
bXBTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEJ1bXBTcGFjZV9oCiAjZGVmaW5lIEJ1bXBTcGFjZV9o
CiAKKyNpbmNsdWRlICJIZWFwQmxvY2suaCIKICNpbmNsdWRlICJUaW55Qmxvb21GaWx0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQm9vbGVh
bi5oPgpAQCAtNjYsOCArNjcsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEJ1bXBCbG9jayogYmxv
Y2tGb3Iodm9pZCopOwogCiBwcml2YXRlOgotICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFs
bG9jYXRpb25DYW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKLQogICAgIENoZWNrZWRC
b29sZWFuIHRyeUFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZV90LCB2b2lkKiopOwogICAgIENoZWNrZWRC
b29sZWFuIGFkZE5ld0Jsb2NrKCk7CiAgICAgQ2hlY2tlZEJvb2xlYW4gYWxsb2NhdGVOZXdCbG9j
ayhCdW1wQmxvY2sqKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggNDRhNmY4NjM4
YzhhYWMxNTk0NzdhMjNjOWZlYTg5YWIzY2I2M2M5Ni4uNDBhODM3NmYwMTZhM2I1MjUxMmU2NmEz
ZTViZDQ4Y2RhMjg1Zjg2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjIsNyAr
MjIsNiBAQAogI2lmbmRlZiBIZWFwX2gKICNkZWZpbmUgSGVhcF9oCiAKLSNpbmNsdWRlICJBbGxv
Y2F0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlSGVhcC5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCkBAIC04Niw3ICs4NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koKTsg
Ly8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKICAg
ICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxE
YXRhOyB9Ci0gICAgICAgIEFsbG9jYXRpb25TcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBt
X29iamVjdFNwYWNlOyB9CisgICAgICAgIE1hcmtlZFNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0
dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICAgICAgTWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJl
YWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFkczsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwpAQCAtMTM2LDgg
KzEzNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRv
cjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKQEAgLTE5MSw3ICsxOTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IG1faGlnaFdhdGVyTWFyazsKICAgICAgICAg
CiAgICAgICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3MgbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAg
ICAgICBBbGxvY2F0aW9uU3BhY2UgbV9vYmplY3RTcGFjZTsKKyAgICAgICAgTWFya2VkU3BhY2Ug
bV9vYmplY3RTcGFjZTsKICAgICAgICAgQnVtcFNwYWNlIG1fc3RvcmFnZVNwYWNlOwogCiAgICAg
ICAgIERvdWJseUxpbmtlZExpc3Q8SGVhcEJsb2NrPiBtX2ZyZWVCbG9ja3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oCmluZGV4IDFkNjZhYWRlOTkwZjU2OGMzZmIxNjFmNmYy
YTUyN2RhZGY3Y2VhMDEuLmIwZWNiMjA1OTU2Y2NmNzQzZTJiY2RjZjQwODNjNTYzZTVkNjQzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oCkBAIC0zMSw2ICszMSw4IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9u
Q2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07CisKIGNsYXNzIEhlYXBCbG9jayA6IHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxIZWFwQmxvY2s+IHsKIHB1YmxpYzoKICAgICBIZWFw
QmxvY2soUGFnZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IGMxMmU5YmE5ZGYyNzAwMDFkMWYxMjcy
OGE3ZDU3NDNiNzFiZGNiMjIuLmZjY2ExODhlNDcxN2EzZGVjNWI1M2JiN2FkZmI3ODMyYmM3ZTA4
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKQEAgLTgx
LDQgKzgxLDE5MiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NE
YXRhKCkKICAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwogfQog
CitpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OnRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZp
cnN0RnJlZUNlbGwgPSBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbDsKKyAgICBpZiAoIWZpcnN0RnJl
ZUNlbGwpIHsKKyAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLmN1
cnJlbnRCbG9jazsgYmxvY2s7IGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihibG9j
ay0+bmV4dCgpKSkgeworICAgICAgICAgICAgZmlyc3RGcmVlQ2VsbCA9IGJsb2NrLT5zd2VlcChN
YXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAgICAgIGlmIChmaXJzdEZyZWVD
ZWxsKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9udXJzZXJ5V2F0ZXJN
YXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpIC0gYmxvY2stPnNpemUoKTsKKyAgICAgICAgICAgIG1f
d2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpOworICAgICAgICAgICAgYmxvY2stPmRpZENv
bnN1bWVGcmVlTGlzdCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmaXJzdEZyZWVDZWxs
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQVNTRVJUKGZpcnN0RnJlZUNl
bGwpOworICAgIHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsK
KyAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKK30KKworaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNl
Ojp0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCit7CisgICAg
bV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9uOworICAgIHZvaWQqIHJl
c3VsdCA9IHRyeUFsbG9jYXRlSGVscGVyKHNpemVDbGFzcyk7CisgICAgbV9oZWFwLT5tX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3MpCit7CisjaWYgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCisgICAgbV9o
ZWFwLT5jb2xsZWN0QWxsR2FyYmFnZSgpOworICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CisjZW5kaWYKKyAgICAKKyAgICB2b2lkKiByZXN1
bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIAorICAgIGlmIChMSUtFTFkocmVzdWx0
ICE9IDApKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIEFsbG9jYXRpb25FZmZv
cnQgYWxsb2NhdGlvbkVmZm9ydDsKKyAgICAKKyAgICBpZiAoKAorI2lmIEVOQUJMRShHR0MpCisg
ICAgICAgICBudXJzZXJ5V2F0ZXJNYXJrKCkgPCBtX2hlYXAtPm1fbWluQnl0ZXNQZXJDeWNsZQor
I2Vsc2UKKyAgICAgICAgIG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1h
cmsoKQorI2VuZGlmCisgICAgICAgICApIHx8ICFtX2hlYXAtPm1faXNTYWZlVG9Db2xsZWN0KQor
ICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbk11c3RTdWNjZWVkOworICAgIGVs
c2UKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25DYW5GYWlsOworICAgIAor
ICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXpl
LCBhbGxvY2F0aW9uRWZmb3J0KTsKKyAgICBpZiAoYmxvY2spIHsKKyAgICAgICAgYWRkQmxvY2so
c2l6ZUNsYXNzLCBibG9jayk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNp
emVDbGFzcyk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICAKKyAgICBtX2hlYXAtPmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7Cisg
ICAgCisgICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAKKyAgICBpZiAo
cmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIEFTU0VSVChtX2hlYXAt
PndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0ZXJNYXJrKCkpOworICAgIAorICAgIGFkZEJs
b2NrKHNpemVDbGFzcywgYWxsb2NhdGVCbG9jayhzaXplQ2xhc3MuY2VsbFNpemUsIEFsbG9jYXRp
b25NdXN0U3VjY2VlZCkpOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFz
cyk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTWFya2Vk
QmxvY2sqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgQWxsb2Nh
dGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0KQoreworICAgIE1hcmtlZEJsb2NrKiBibG9jazsK
KyAgICAKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJs
b2NrTG9jayk7CisgICAgICAgIGlmIChtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzKSB7Cisg
ICAgICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4obV9oZWFwLT5tX2Zy
ZWVCbG9ja3MucmVtb3ZlSGVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9jayk7CisgICAg
ICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzLS07CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgYmxvY2sgPSAwOworICAgIH0KKyAgICBpZiAoYmxvY2spCisgICAgICAgIGJs
b2NrID0gTWFya2VkQmxvY2s6OnJlY3ljbGUoYmxvY2ssIG1faGVhcCwgY2VsbFNpemUpOworICAg
IGVsc2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbkNhbkZhaWwpCisgICAgICAg
IHJldHVybiAwOworICAgIGVsc2UKKyAgICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRl
KG1faGVhcCwgY2VsbFNpemUpOworICAgIAorICAgIG1fYmxvY2tzLmFkZChibG9jayk7CisgICAg
CisgICAgcmV0dXJuIGJsb2NrOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxvY2tzKE1h
cmtlZEJsb2NrKiBoZWFkKQoreworICAgIE1hcmtlZEJsb2NrKiBuZXh0OworICAgIGZvciAoTWFy
a2VkQmxvY2sqIGJsb2NrID0gaGVhZDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgeworICAgICAgICBu
ZXh0ID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihibG9jay0+bmV4dCgpKTsKKyAgICAgICAg
CisgICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7CisgICAgICAgIGJsb2NrLT5zd2VlcCgp
OworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwor
ICAgICAgICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5hcHBlbmQoYmxvY2spOworICAgICAgICBtX2hl
YXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzKys7CisgICAgfQorfQorCitjbGFzcyBUYWtlSWZVbm1h
cmtlZCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYXJrZWRCbG9jayogUmV0dXJuVHlwZTsKKyAg
ICAKKyAgICBUYWtlSWZVbm1hcmtlZChNYXJrZWRTcGFjZSopOworICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRCbG9jayopOworICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKTsKKyAgICAKK3By
aXZhdGU6CisgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3BhY2U7CisgICAgRG91Ymx5TGlua2Vk
TGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVzOworfTsKKworaW5saW5lIFRha2VJZlVubWFya2Vk
OjpUYWtlSWZVbm1hcmtlZChNYXJrZWRTcGFjZSogbmV3U3BhY2UpCisgICAgOiBtX21hcmtlZFNw
YWNlKG5ld1NwYWNlKQoreworfQorCitpbmxpbmUgdm9pZCBUYWtlSWZVbm1hcmtlZDo6b3BlcmF0
b3IoKShNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAgaWYgKCFibG9jay0+bWFya0NvdW50SXNa
ZXJvKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLT5yZW1vdmVC
bG9jayhibG9jayk7CisgICAgbV9lbXB0aWVzLmFwcGVuZChibG9jayk7Cit9CisKK2lubGluZSBU
YWtlSWZVbm1hcmtlZDo6UmV0dXJuVHlwZSBUYWtlSWZVbm1hcmtlZDo6cmV0dXJuVmFsdWUoKQor
eworICAgIHJldHVybiBtX2VtcHRpZXMuaGVhZCgpOworfQorCit2b2lkIE1hcmtlZFNwYWNlOjpz
aHJpbmsoKQoreworICAgIC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMg
dG8gYXZvaWQgbW9kaWZ5aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KKyAgICBUYWtl
SWZVbm1hcmtlZCB0YWtlSWZVbm1hcmtlZCh0aGlzKTsKKyAgICBmcmVlQmxvY2tzKGZvckVhY2hC
bG9jayh0YWtlSWZVbm1hcmtlZCkpOworfQorCisjaWYgRU5BQkxFKEdHQykKK2NsYXNzIEdhdGhl
ckRpcnR5Q2VsbHMgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdhdGhlckRpcnR5Q2VsbHMp
OworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCogUmV0dXJuVHlwZTsKKyAgICAKKyAgICBleHBs
aWNpdCBHYXRoZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3IqKTsKKyAg
ICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKKyAgICBSZXR1cm5UeXBlIHJldHVyblZh
bHVlKCkgeyByZXR1cm4gMDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBNYXJrZWRCbG9jazo6RGly
dHlDZWxsVmVjdG9yKiBtX2RpcnR5Q2VsbHM7Cit9OworCitpbmxpbmUgR2F0aGVyRGlydHlDZWxs
czo6R2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yKiBkaXJ0eUNl
bGxzKQorICAgIDogbV9kaXJ0eUNlbGxzKGRpcnR5Q2VsbHMpCit7Cit9CisKK2lubGluZSB2b2lk
IEdhdGhlckRpcnR5Q2VsbHM6Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQoreworICAg
IGJsb2NrLT5nYXRoZXJEaXJ0eUNlbGxzKCptX2RpcnR5Q2VsbHMpOworfQorCit2b2lkIE1hcmtl
ZFNwYWNlOjpnYXRoZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3ImIGRp
cnR5Q2VsbHMpCit7CisgICAgR2F0aGVyRGlydHlDZWxscyBnYXRoZXJEaXJ0eUNlbGxzKCZkaXJ0
eUNlbGxzKTsKKyAgICBmb3JFYWNoQmxvY2soZ2F0aGVyRGlydHlDZWxscyk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAppbmRleCAzYjJjODI4Zjc3ZjVkM2UzZTRiNGQ4YzY2ZjU5NThmZWU3ZmRjM2NjLi4wODU0
ZWZjNmNiZTE4OWJmMzNlNzlkOTZlN2E3ODdhNjY4NzdjZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIk1h
Y2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAi
TWFya2VkQmxvY2tTZXQuaCIKICNpbmNsdWRlICJQYWdlQWxsb2NhdGlvbkFsaWduZWQuaCIKICNp
bmNsdWRlIDx3dGYvQml0bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4K
QEAgLTYxLDIyICs2MiwzNiBAQCBwdWJsaWM6CiAgICAgTWFya2VkU3BhY2UoSGVhcCopOwogCiAg
ICAgU2l6ZUNsYXNzJiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKKyAgICB2b2lkKiBhbGxvY2F0ZShz
aXplX3QpOwogICAgIHZvaWQqIGFsbG9jYXRlKFNpemVDbGFzcyYpOwogICAgIAogICAgIHZvaWQg
cmVzZXRBbGxvY2F0b3IoKTsKIAogICAgIHZvaWQgYWRkQmxvY2soU2l6ZUNsYXNzJiwgTWFya2Vk
QmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKik7CisgICAgTWFya2Vk
QmxvY2tTZXQmIGJsb2NrcygpIHsgcmV0dXJuIG1fYmxvY2tzOyB9CiAgICAgCiAgICAgdm9pZCBj
YW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAKICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7
CiAgICAgc2l6ZV90IG51cnNlcnlXYXRlck1hcmsoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKEZ1bmN0
b3ImKTsgLy8gU2FmZSB0byByZW1vdmUgdGhlIGN1cnJlbnQgaXRlbSB3aGlsZSBpdGVyYXRpbmcu
CisgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0
b3I7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbCgpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5
cGUgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOworICAgIAorICAg
IHZvaWQgc2hyaW5rKCk7CisgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKTsK
IAogcHJpdmF0ZToKKyAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKFNpemVDbGFzcyYpOworICAg
IHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKKyAgICB2
b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgTWFya2VkQmxv
Y2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90LCBBbGxvY2F0aW9uRWZmb3J0KTsKKwogICAgIC8vIFsg
MzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2Vk
QmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9
IDI1NjsKQEAgLTkyLDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fd2F0ZXJNYXJr
OwogICAgIHNpemVfdCBtX251cnNlcnlXYXRlck1hcms7CiAgICAgSGVhcCogbV9oZWFwOworICAg
IE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwogfTsKIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFj
ZTo6d2F0ZXJNYXJrKCkKQEAgLTEwNCw2ICsxMjAsMjIgQEAgaW5saW5lIHNpemVfdCBNYXJrZWRT
cGFjZTo6bnVyc2VyeVdhdGVyTWFyaygpCiAgICAgcmV0dXJuIG1fbnVyc2VyeVdhdGVyTWFyazsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6
OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCit7
CisgICAgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOworCisgICAgQmxvY2tJdGVyYXRv
ciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQg
PSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQp
LT5mb3JFYWNoQ2VsbChmdW5jdG9yKTsKKyAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaENlbGwoKQoreworICAgIEZ1bmN0b3Ig
ZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaENlbGwoZnVuY3Rvcik7Cit9CisKIGlubGluZSBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBNYXJrZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVfdCBi
eXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMgJiYgYnl0ZXMgPD0gbWF4Q2VsbFNpemUpOwpAQCAt
MTEyLDI1ICsxNDQsMTkgQEAgaW5saW5lIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNw
YWNlOjpzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5dGVzKQogICAgIHJldHVybiBtX2ltcHJlY2lzZVNp
emVDbGFzc2VzWyhieXRlcyAtIDEpIC8gaW1wcmVjaXNlU3RlcF07CiB9CiAKK2lubGluZSB2b2lk
KiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQoreworICAgIFNpemVDbGFzcyYg
c2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKKyAgICByZXR1cm4gYWxsb2NhdGUoc2l6
ZUNsYXNzKTsKK30KKwogaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTaXplQ2xh
c3MmIHNpemVDbGFzcykKIHsKKyAgICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0
aCB0byBjb3ZlciB0aGUgbW9zdCBjb21tb24gY2FzZS4KICAgICBNYXJrZWRCbG9jazo6RnJlZUNl
bGwqIGZpcnN0RnJlZUNlbGwgPSBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbDsKLSAgICBpZiAoIWZp
cnN0RnJlZUNlbGwpIHsKLSAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNs
YXNzLmN1cnJlbnRCbG9jazsgYmxvY2s7IGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sq
PihibG9jay0+bmV4dCgpKSkgewotICAgICAgICAgICAgZmlyc3RGcmVlQ2VsbCA9IGJsb2NrLT5z
d2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKLSAgICAgICAgICAgIGlmIChmaXJz
dEZyZWVDZWxsKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgbV9udXJzZXJ5
V2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpIC0gYmxvY2stPnNpemUoKTsKLSAgICAgICAg
ICAgIG1fd2F0ZXJNYXJrICs9IGJsb2NrLT5jYXBhY2l0eSgpOwotICAgICAgICAgICAgYmxvY2st
PmRpZENvbnN1bWVGcmVlTGlzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmaXJzdEZy
ZWVDZWxsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQVNTRVJUKGZpcnN0
RnJlZUNlbGwpOwotCisgICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKKyAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKKyAgICAKICAgICBzaXplQ2xhc3Mu
Zmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7CiAgICAgcmV0dXJuIGZpcnN0RnJl
ZUNlbGw7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124145</attachid>
            <date>2012-01-26 10:54:53 -0800</date>
            <delta_ts>2012-01-26 15:47:14 -0800</delta_ts>
            <desc>Fixing builds</desc>
            <filename>bug-77116-20120126105452.patch</filename>
            <type>text/plain</type>
            <size>33815</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTg0YjM4M2VlZjdjMTgzZjQxZDZhYjlhOGQ4OTA0MmM3ZTllYWYxLi45OWExN2UzMTA0N2E2NjVi
MTY0YzE3ODEzZDQ4ZmZiNjk3Y2ZiZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxMi0wMS0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIE1lcmdlIEFsbG9jYXRpb25TcGFjZSBpbnRvIE1hcmtlZFNwYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzExNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcg
QWxsb2NhdGlvblNwYWNlIGFuZCBNYXJrZWRTcGFjZSBpbiBwcmVwYXJhdGlvbiBmb3IgZnV0dXJl
IHJlZmFjdG9yaW5nL2VuaGFuY2VtZW50IHRvIAorICAgICAgICBNYXJrZWRTcGFjZSBhbGxvY2F0
aW9uLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGhl
YXAvQWxsb2NhdGlvblNwYWNlLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9CdW1wU3BhY2Uu
aDoKKyAgICAgICAgKEJ1bXBTcGFjZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAg
IChKU0M6OkhlYXA6Om9iamVjdFNwYWNlKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAoKToK
KyAgICAgICAgKiBoZWFwL0hlYXBCbG9jay5oOgorICAgICAgICAoKToKKyAgICAgICAgKiBoZWFw
L01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnRyeUFsbG9jYXRl
SGVscGVyKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlB
bGxvY2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6ZnJlZUJsb2Nrcyk6CisgICAgICAgIChUYWtlSWZVbm1hcmtlZCk6Cisg
ICAgICAgIChKU0M6OlRha2VJZlVubWFya2VkOjpUYWtlSWZVbm1hcmtlZCk6CisgICAgICAgIChK
U0M6OlRha2VJZlVubWFya2VkOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFrZUlmVW5t
YXJrZWQ6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmluayk6
CisgICAgICAgIChHYXRoZXJEaXJ0eUNlbGxzKToKKyAgICAgICAgKEpTQzo6R2F0aGVyRGlydHlD
ZWxsczo6cmV0dXJuVmFsdWUpOgorICAgICAgICAoSlNDOjpHYXRoZXJEaXJ0eUNlbGxzOjpHYXRo
ZXJEaXJ0eUNlbGxzKToKKyAgICAgICAgKEpTQzo6R2F0aGVyRGlydHlDZWxsczo6b3BlcmF0b3Io
KSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpnYXRoZXJEaXJ0eUNlbGxzKToKKyAgICAg
ICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChNYXJrZWRTcGFjZSk6CisgICAgICAg
IChKU0M6Ok1hcmtlZFNwYWNlOjpibG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
Zm9yRWFjaENlbGwpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OmFsbG9jYXRlKToKKwogMjAxMi0wMS0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtRdF1bV2luXSBPbmUgbW9yZSBzcGVjdWxhdGl2ZSBidWlsZGZp
eCBhZnRlciByMTA1OTcwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCA0MDdmZjMzOWUwMTgyNjVlNTRkZDAwZWJmNTRjZDRjMWUzNzE4OTcxLi4xZmZmOTAx
MjdiMWUzNGZkOTFiOTE5YTA5YjE1ZjgyYmZjZjA3MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTc4LDggKzE3OCw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBcCi0JU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdGlvblNwYWNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1
bXBCbG9jay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA0YmYzZWQ5ODhhMWQyNDJjZmQ2MmIxZDhl
ZDkxYjQ5N2ZkOTQyNmQ3Li4zMjA5NjE1YmFiMDMwZjU1YTk3ODliMzQxMjU3NmIxYzc4OTRlYzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTEyNyw2ICsx
MjcsNyBAQCBfX1pOM0pTQzExSlNCeXRlQXJyYXkzcHV0RVBOU182SlNDZWxsRVBOU185RXhlY1N0
YXRlRVJLTlNfMTBJZGVudGlmaWVyRU5TXzdKU1ZhbAogX19aTjNKU0MxMUpTQnl0ZUFycmF5NnNf
aW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheTdkZXN0cm95RVBOU182SlNDZWxsRQogX19aTjNK
U0MxMUpTQnl0ZUFycmF5QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFUE4zV1RGOUJ5
dGVBcnJheUUKK19fWk4zSlNDMTFNYXJrZWRTcGFjZTE2YWxsb2NhdGVTbG93Q2FzZUVSTlMwXzlT
aXplQ2xhc3NFCiBfX1pOM0pTQzExUGFyc2VyQXJlbmE1cmVzZXRFdgogX19aTjNKU0MxMWNoZWNr
U3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfMTBTb3VyY2VDb2RlRVBOU183SlNWYWx1ZUUKIF9f
Wk4zSlNDMTFjcmVhdGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQpAQCAtMTkw
LDcgKzE5MSw2IEBAIF9fWk4zSlNDMTRUaW1lb3V0Q2hlY2tlcjVyZXNldEV2CiBfX1pOM0pTQzE0
VlRhYmxlU3BlY3RydW01Y291bnRFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJy
b3JFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzE0dGhyb3dUeXBlRXJyb3JFUE5TXzlFeGVjU3Rh
dGVFUktOU183VVN0cmluZ0UKLV9fWk4zSlNDMTVBbGxvY2F0aW9uU3BhY2UxNmFsbG9jYXRlU2xv
d0Nhc2VFUk5TXzExTWFya2VkU3BhY2U5U2l6ZUNsYXNzRQogX19aTjNKU0MxNVdlYWtIYW5kbGVP
d25lcjI2aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNFTlNfNkhhbmRsZUlOU183VW5rbm93bkVF
RVB2Uk5TXzExU2xvdFZpc2l0b3JFCiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyOGZpbmFsaXpl
RU5TXzZIYW5kbGVJTlNfN1Vua25vd25FRUVQdgogX19aTjNKU0MxNVdlYWtIYW5kbGVPd25lckQy
RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBp
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKaW5kZXggOWE4NzZj
MjA5OGUzMDBmN2IyMmI0MzM3NGZjZDQzNmU5Y2RmMzgzZS4uYjU5YmUzOGQ5NzEyYjQxZWI5NTI2
ZDk0OGY0NTlmN2RiYjQ0ZjE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cGkKQEAgLTI3LDcgKzI3LDYgQEAKICAgICAgICAgICAgICdBUEkvT3BhcXVlSlNTdHJp
bmcuaCcsCiAgICAgICAgICAgICAnYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oJywK
ICAgICAgICAgICAgICdieXRlY29kZS9PcGNvZGUuaCcsCi0gICAgICAgICAgICAnaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaCcsCiAgICAgICAgICAgICAnaGVhcC9CdW1wQmxvY2suaCcsCiAgICAgICAg
ICAgICAnaGVhcC9CdW1wU3BhY2UuaCcsCiAgICAgICAgICAgICAnaGVhcC9CdW1wU3BhY2VJbmxp
bmVNZXRob2RzLmgnLApAQCAtMzMzLDcgKzMzMiw2IEBACiAgICAgICAgICAgICAnYnl0ZWNvbXBp
bGVyL0xhYmVsU2NvcGUuaCcsCiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAnLAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9SZWdpc3RlcklELmgnLAotICAgICAg
ICAgICAgJ2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5jcHAnLAog
ICAgICAgICAgICAgJ2hlYXAvSGFuZGxlU3RhY2suY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggZjRhNTc4NWQ4
OTM3NTNhYjFjMWQzOWI2MWJiMDkyOTU1YzEwY2Q0YS4uZDFlMzRiMGNiM2I2N2IzOGI3Y2RmZTUy
NDU1NDVkNGZjNTA4M2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTE5OTgsMTQgKzE5OTgsNiBAQAogCQkJTmFt
ZT0iaGVhcCIKIAkJCT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEFs
bG9jYXRpb25TcGFjZS5jcHAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxGaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxl
PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQnVtcEJsb2NrLmgiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MDhmZWUz
YmRiZWUwZWE5NTk3MDBhMGVmOWFmNmRmM2Y3OWNjNjM0Li41Y2UyNTRmNTgxYjA2MGQxOWQyZmVj
MTcyZGY0MjAzNTVkNzU3ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc0
LDggKzQ3NCw2IEBACiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0Ux
MUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJl
Z0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExRDc2NDUyMTM1NDQ0OEIwMEM1QzdD
MCAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRDc2NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzA0NTZCMDE0MjdGQjkx
MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NTZBRjE0MjdGQjE1MDAzN0RBNjggLyogQWxsb2NhdGlv
blNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQTcwNDU2QjExNDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NTZBRTE0MjdGQjAz
MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bj
b2RlczMyXzY0LmNwcCAqLzsgfTsKIAkJQTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90
QW5PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovOyB9Owog
CQlBNzI3MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAw
RTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKQEAgLTEzMDUsOCArMTMwMyw2IEBA
CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWdubWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNw
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRpb25T
cGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MDQ1NkFGMTQyN0ZCMTUw
MDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWxsb2NhdGlvblNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEpp
dFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJs
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2
NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsg
cGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzcxLDggKzE3NjcsNiBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTcwNDU2QUUx
NDI3RkIwMzAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi8sCi0JCQkJQTcwNDU2QUYx
NDI3RkIxNTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovLAogCQkJCUMyQzhEMDJFMTRB
M0NFRkMwMDU3OEU2NSAvKiBCdW1wQmxvY2suaCAqLywKIAkJCQlDMjQwMzA1MzE0QjQwNEM5MDA3
OUVCNjQgLyogQnVtcFNwYWNlLmNwcCAqLywKIAkJCQlDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIg
LyogQnVtcFNwYWNlLmggKi8sCkBAIC0yNjQ2LDcgKzI2NDAsNiBAQAogCQkJZmlsZXMgPSAoCiAJ
CQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRDc2NDUyMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3REE2OCAvKiBBbGxvY2F0
aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U0MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBBbHdheXNJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjVGNDA4ODEwRTdENTYzMDA5
NDczNjEgLyogQVBJU2hpbXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwNiw3ICszMzk5LDYgQEAK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCUE3MDQ1NkIxMTQyN0ZCOTUwMDM3REE2OCAvKiBB
bGxvY2F0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAw
NDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkUxMDdFQzM3
NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI5MGYyYTI4YTVlZjNlZDc4NDAwYWYwMTRlZjIzMGU2MTMwZTli
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDIwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5j
bHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1pbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjp0cnlBbGxvY2F0ZShNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIHZvaWQqIHJlc3VsdCA9IG1fbWFya2VkU3Bh
Y2UuYWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9IE5vT3BlcmF0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQqIEFsbG9jYXRp
b25TcGFjZTo6YWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xh
c3MpCi17Ci0jaWYgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCi0gICAgbV9oZWFwLT5jb2xs
ZWN0QWxsR2FyYmFnZSgpOwotICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBOb09wZXJhdGlvbik7Ci0jZW5kaWYKLSAgICAKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlB
bGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIAotICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDApKQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAotICAgIEFsbG9jYXRpb25FZmZvcnQgYWxsb2Nh
dGlvbkVmZm9ydDsKLSAgICAKLSAgICBpZiAoKAotI2lmIEVOQUJMRShHR0MpCi0gICAgICAgICBt
X21hcmtlZFNwYWNlLm51cnNlcnlXYXRlck1hcmsoKSA8IG1faGVhcC0+bV9taW5CeXRlc1BlckN5
Y2xlCi0jZWxzZQotICAgICAgICAgbV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdh
dGVyTWFyaygpCi0jZW5kaWYKLSAgICAgICAgICkgfHwgIW1faGVhcC0+bV9pc1NhZmVUb0NvbGxl
Y3QpCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQ7Ci0g
ICAgZWxzZQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNhbkZhaWw7Ci0g
ICAgCi0gICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhzaXplQ2xhc3MuY2Vs
bFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOwotICAgIGlmIChibG9jaykgewotICAgICAgICBtX21h
cmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOwotICAgICAgICB2b2lkKiByZXN1
bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgbV9oZWFwLT5jb2xsZWN0KEhl
YXA6OkRvTm90U3dlZXApOwotICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFz
cyk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAK
LSAgICBBU1NFUlQobV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFyaygp
KTsKLSAgICAKLSAgICBtX21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYWxsb2NhdGVC
bG9jayhzaXplQ2xhc3MuY2VsbFNpemUsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCkpOwotICAgIAot
ICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTWFya2VkQmxvY2sqIEFsbG9jYXRpb25TcGFjZTo6
YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUsIEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlv
bkVmZm9ydCkKLXsKLSAgICBNYXJrZWRCbG9jayogYmxvY2s7Ci0gICAgCi0gICAgewotICAgICAg
ICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBp
ZiAobV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcykgewotICAgICAgICAgICAgYmxvY2sgPSBz
dGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2spOwotICAgICAgICAgICAgbV9oZWFwLT5tX251
bWJlck9mRnJlZUJsb2Nrcy0tOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJsb2NrID0g
MDsKLSAgICB9Ci0gICAgaWYgKGJsb2NrKQotICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpy
ZWN5Y2xlKGJsb2NrLCBtX2hlYXAsIGNlbGxTaXplKTsKLSAgICBlbHNlIGlmIChhbGxvY2F0aW9u
RWZmb3J0ID09IEFsbG9jYXRpb25DYW5GYWlsKQotICAgICAgICByZXR1cm4gMDsKLSAgICBlbHNl
Ci0gICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsK
LSAgICAKLSAgICBtX2Jsb2Nrcy5hZGQoYmxvY2spOwotICAgIAotICAgIHJldHVybiBibG9jazsK
LX0KLQotdm9pZCBBbGxvY2F0aW9uU3BhY2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQp
Ci17Ci0gICAgTWFya2VkQmxvY2sqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sg
PSBoZWFkOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBzdGF0aWNfY2Fz
dDxNYXJrZWRCbG9jayo+KGJsb2NrLT5uZXh0KCkpOwotICAgICAgICAKLSAgICAgICAgbV9ibG9j
a3MucmVtb3ZlKGJsb2NrKTsKLSAgICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIG1faGVhcC0+
bV9mcmVlQmxvY2tzLmFwcGVuZChibG9jayk7Ci0gICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZy
ZWVCbG9ja3MrKzsKLSAgICB9Ci19Ci0KLWNsYXNzIFRha2VJZlVubWFya2VkIHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOwotICAgIAotICAgIFRha2VJZlVu
bWFya2VkKE1hcmtlZFNwYWNlKik7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7
Ci0gICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOwotICAgIAotcHJpdmF0ZToKLSAgICBNYXJr
ZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKLSAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2Nr
PiBtX2VtcHRpZXM7Ci19OwotCi1pbmxpbmUgVGFrZUlmVW5tYXJrZWQ6OlRha2VJZlVubWFya2Vk
KE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKLSAgICA6IG1fbWFya2VkU3BhY2UobmV3U3BhY2UpCi17
Ci19Ci0KLWlubGluZSB2b2lkIFRha2VJZlVubWFya2VkOjpvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
KiBibG9jaykKLXsKLSAgICBpZiAoIWJsb2NrLT5tYXJrQ291bnRJc1plcm8oKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJsb2NrKGJsb2NrKTsKLSAg
ICBtX2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKLX0KLQotaW5saW5lIFRha2VJZlVubWFya2VkOjpS
ZXR1cm5UeXBlIFRha2VJZlVubWFya2VkOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0dXJuIG1f
ZW1wdGllcy5oZWFkKCk7Ci19Ci0KLXZvaWQgQWxsb2NhdGlvblNwYWNlOjpzaHJpbmsoKQotewot
ICAgIC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9k
aWZ5aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KLSAgICBUYWtlSWZVbm1hcmtlZCB0
YWtlSWZVbm1hcmtlZCgmbV9tYXJrZWRTcGFjZSk7Ci0gICAgZnJlZUJsb2Nrcyhmb3JFYWNoQmxv
Y2sodGFrZUlmVW5tYXJrZWQpKTsKLX0KLQotI2lmIEVOQUJMRShHR0MpCi1jbGFzcyBHYXRoZXJE
aXJ0eUNlbGxzIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYXRoZXJEaXJ0eUNlbGxzKTsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQqIFJldHVyblR5cGU7Ci0gICAgCi0gICAgZXhwbGlj
aXQgR2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yKik7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7Ci0gICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1
ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTWFya2VkQmxvY2s6OkRpcnR5
Q2VsbFZlY3RvciogbV9kaXJ0eUNlbGxzOwotfTsKLQotaW5saW5lIEdhdGhlckRpcnR5Q2VsbHM6
OkdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciogZGlydHlDZWxs
cykKLSAgICA6IG1fZGlydHlDZWxscyhkaXJ0eUNlbGxzKQotewotfQotCi1pbmxpbmUgdm9pZCBH
YXRoZXJEaXJ0eUNlbGxzOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKLXsKLSAgICBi
bG9jay0+Z2F0aGVyRGlydHlDZWxscygqbV9kaXJ0eUNlbGxzKTsKLX0KLQotdm9pZCBBbGxvY2F0
aW9uU3BhY2U6OmdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciYg
ZGlydHlDZWxscykKLXsKLSAgICBHYXRoZXJEaXJ0eUNlbGxzIGdhdGhlckRpcnR5Q2VsbHMoJmRp
cnR5Q2VsbHMpOwotICAgIGZvckVhY2hCbG9jayhnYXRoZXJEaXJ0eUNlbGxzKTsKLX0KLSNlbmRp
ZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9u
U3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWE2YjVhM2U0MTViNjgxMmZlNjA5MWEyMzcz
ZDVlZTc1YjRhOTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFsbG9jYXRpb25T
cGFjZV9oCi0jZGVmaW5lIEFsbG9jYXRpb25TcGFjZV9oCi0KLSNpbmNsdWRlICJNYXJrZWRCbG9j
a1NldC5oIgotI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0KLSNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSGVhcDsKLWNsYXNzIE1hcmtlZEJsb2Nr
OwotCi1jbGFzcyBBbGxvY2F0aW9uU3BhY2UgewotcHVibGljOgotICAgIEFsbG9jYXRpb25TcGFj
ZShIZWFwKiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAgICAsIG1fbWFya2Vk
U3BhY2UoaGVhcCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHR5cGVkZWYgSGFzaFNldDxNYXJr
ZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOwotICAgIAotICAgIE1hcmtlZEJsb2Nr
U2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Jsb2NrczsgfQotICAgIE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fbWFya2VkU3BhY2Uu
c2l6ZUNsYXNzRm9yKGJ5dGVzKTsgfQotICAgIHNpemVfdCB3YXRlck1hcmsoKSB7IHJldHVybiBt
X21hcmtlZFNwYWNlLndhdGVyTWFyaygpOyB9Ci0KLSNpZiBFTkFCTEUoR0dDKQotICAgIHZvaWQg
Z2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yJik7Ci0jZW5kaWYK
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgZm9yRWFjaENlbGwoRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoKTsKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jayhGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKLSAgICAKLSAgICB2b2lkIGNh
bm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKSB7IG1fbWFya2VkU3BhY2UuY2Fub25pY2FsaXpl
Q2VsbExpdmVuZXNzRGF0YSgpOyB9Ci0gICAgdm9pZCByZXNldEFsbG9jYXRvcigpIHsgbV9tYXJr
ZWRTcGFjZS5yZXNldEFsbG9jYXRvcigpOyB9Ci0gICAgCi0gICAgdm9pZCogYWxsb2NhdGUoc2l6
ZV90KTsKLSAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIHNocmlu
aygpOwotICAgIAotcHJpdmF0ZToKLSAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0
aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07Ci0KLSAgICB2b2lkKiBhbGxvY2F0
ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2Vk
U3BhY2U6OlNpemVDbGFzcyYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRl
U2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwotICAgIE1hcmtlZEJsb2NrKiBhbGxv
Y2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgCi0gICAg
SGVhcCogbV9oZWFwOwotICAgIE1hcmtlZFNwYWNlIG1fbWFya2VkU3BhY2U7Ci0gICAgTWFya2Vk
QmxvY2tTZXQgbV9ibG9ja3M7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hD
ZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0
YSgpOwotCi0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAg
ICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5mb3JFYWNoQ2VsbChmdW5jdG9yKTsKLSAgICByZXR1
cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZv
ckVhY2hDZWxsKCkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hD
ZWxsKGZ1bmN0b3IpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlw
ZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hCbG9jayhG
dW5jdG9yJiBmdW5jdG9yKQotewotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0
KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBmdW5jdG9yKCppdCk7Ci0gICAgcmV0dXJu
IGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JF
YWNoQmxvY2soKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwotfQotCi1pbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0
ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0gICAgLy8gVGhpcyBpcyBh
IGxpZ2h0LXdlaWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCi0g
ICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0
RnJlZUNlbGw7Ci0gICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKLSAgICAgICAgcmV0
dXJuIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKLSAgICAKLSAgICBzaXplQ2xhc3MuZmly
c3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7Ci0gICAgcmV0dXJuIGZpcnN0RnJlZUNl
bGw7Ci19Ci0KLWlubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlKHNpemVfdCBi
eXRlcykKLXsKLSAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBzaXplQ2xh
c3NGb3IoYnl0ZXMpOwotICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwotfQotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuaAppbmRleCAxZmZjYjQ2
ODAzYWM3MTEwMWY4MDg0Nzg1NTYwNmVkOGE5YTc2MDkyLi4zMGU2Yjc0ZmU4OWJjM2Q4OTdhZjE4
OGRmMWZhNTI5NmFhMTBlY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CdW1wU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2Uu
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBCdW1wU3BhY2VfaAogI2RlZmluZSBCdW1wU3Bh
Y2VfaAogCisjaW5jbHVkZSAiSGVhcEJsb2NrLmgiCiAjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEJv
b2xlYW4uaD4KQEAgLTY2LDggKzY3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBCdW1wQmxvY2sq
IGJsb2NrRm9yKHZvaWQqKTsKIAogcHJpdmF0ZToKLSAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQg
eyBBbGxvY2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07Ci0KICAgICBDaGVj
a2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCwgdm9pZCoqKTsKICAgICBDaGVj
a2VkQm9vbGVhbiBhZGROZXdCbG9jaygpOwogICAgIENoZWNrZWRCb29sZWFuIGFsbG9jYXRlTmV3
QmxvY2soQnVtcEJsb2NrKiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDQ0YTZm
ODYzOGM4YWFjMTU5NDc3YTIzYzlmZWE4OWFiM2NiNjNjOTYuLjQwYTgzNzZmMDE2YTNiNTI1MTJl
NjZhM2U1YmQ0OGNkYTI4NWY4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTIy
LDcgKzIyLDYgQEAKICNpZm5kZWYgSGVhcF9oCiAjZGVmaW5lIEhlYXBfaAogCi0jaW5jbHVkZSAi
QWxsb2NhdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1ZGUg
IkhhbmRsZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgpAQCAtODYsNyArODUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95
KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgog
CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsRGF0YTsgfQotICAgICAgICBBbGxvY2F0aW9uU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZTsgfQorICAgICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7
IHJldHVybiBtX29iamVjdFNwYWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5l
VGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKQEAgLTEz
Niw4ICsxMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRp
dmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNz
IE1hcmtlZEJsb2NrOwotICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwogICAg
ICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZp
c2l0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xOTEsNyArMTkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBtX2hpZ2hXYXRlck1hcms7CiAgICAg
ICAgIAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsK
LSAgICAgICAgQWxsb2NhdGlvblNwYWNlIG1fb2JqZWN0U3BhY2U7CisgICAgICAgIE1hcmtlZFNw
YWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgICAgIEJ1bXBTcGFjZSBtX3N0b3JhZ2VTcGFjZTsKIAog
ICAgICAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4gbV9mcmVlQmxvY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaAppbmRleCAxZDY2YWFkZTk5MGY1NjhjM2ZiMTYx
ZjZmMmE1MjdkYWRmN2NlYTAxLi5iMGVjYjIwNTk1NmNjZjc0M2UyYmNkY2Y0MDgzYzU2M2U1ZDY0
MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaApAQCAtMzEsNiArMzEs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxsb2Nh
dGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9OworCiBjbGFzcyBIZWFwQmxvY2sg
OiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8SGVhcEJsb2NrPiB7CiBwdWJsaWM6CiAgICAg
SGVhcEJsb2NrKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCBjMTJlOWJhOWRmMjcwMDAxZDFm
MTI3MjhhN2Q1NzQzYjcxYmRjYjIyLi5mY2NhMTg4ZTQ3MTdhM2RlYzViNTNiYjdhZGZiNzgzMmJj
N2UwODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBA
IC04MSw0ICs4MSwxOTIgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExpdmVu
ZXNzRGF0YSgpCiAgICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuemFwRnJlZUxpc3QoKTsK
IH0KIAoraW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCit7CisgICAgTWFya2VkQmxvY2s6OkZyZWVDZWxs
KiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7CisgICAgaWYgKCFmaXJz
dEZyZWVDZWxsKSB7CisgICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9IHNpemVDbGFz
cy5jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4o
YmxvY2stPm5leHQoKSkpIHsKKyAgICAgICAgICAgIGZpcnN0RnJlZUNlbGwgPSBibG9jay0+c3dl
ZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgICAgICBpZiAoZmlyc3RG
cmVlQ2VsbCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbnVyc2VyeVdh
dGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7CisgICAgICAgICAg
ICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKKyAgICAgICAgICAgIGJsb2NrLT5k
aWRDb25zdW1lRnJlZUxpc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZmlyc3RGcmVl
Q2VsbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChmaXJzdEZy
ZWVDZWxsKTsKKyAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5l
eHQ7CisgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Cit9CisKK2lubGluZSB2b2lkKiBNYXJrZWRT
cGFjZTo6dHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQorewor
ICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKKyAgICB2b2lk
KiByZXN1bHQgPSB0cnlBbGxvY2F0ZUhlbHBlcihzaXplQ2xhc3MpOworICAgIG1faGVhcC0+bV9v
cGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVD
bGFzcyYgc2l6ZUNsYXNzKQoreworI2lmIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTgorICAg
IG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICBBU1NFUlQobV9oZWFwLT5tX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworI2VuZGlmCisgICAgCisgICAgdm9pZCog
cmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHJl
c3VsdCAhPSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKKyAgICBBbGxvY2F0aW9u
RWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7CisgICAgCisgICAgaWYgKCgKKyNpZiBFTkFCTEUoR0dD
KQorICAgICAgICAgbnVyc2VyeVdhdGVyTWFyaygpIDwgbV9oZWFwLT5tX21pbkJ5dGVzUGVyQ3lj
bGUKKyNlbHNlCisgICAgICAgICBtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdoV2F0
ZXJNYXJrKCkKKyNlbmRpZgorICAgICAgICAgKSB8fCAhbV9oZWFwLT5tX2lzU2FmZVRvQ29sbGVj
dCkKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2VlZDsKKyAg
ICBlbHNlCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFpbDsKKyAg
ICAKKyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5jZWxs
U2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7CisgICAgaWYgKGJsb2NrKSB7CisgICAgICAgIGFkZEJs
b2NrKHNpemVDbGFzcywgYmxvY2spOworICAgICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0
ZShzaXplQ2xhc3MpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgbV9oZWFwLT5jb2xsZWN0KEhlYXA6OkRvTm90U3dlZXAp
OworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgCisgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKKyAgICBBU1NFUlQobV9o
ZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFyaygpKTsKKyAgICAKKyAgICBh
ZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxv
Y2F0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXpl
Q2xhc3MpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01h
cmtlZEJsb2NrKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUsIEFs
bG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCkKK3sKKyAgICBNYXJrZWRCbG9jayogYmxv
Y2s7CisgICAgCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2Zy
ZWVCbG9ja0xvY2spOworICAgICAgICBpZiAobV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nrcykg
eworICAgICAgICAgICAgYmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KG1faGVhcC0+
bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKSk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2spOwor
ICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nrcy0tOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGJsb2NrID0gMDsKKyAgICB9CisgICAgaWYgKGJsb2NrKQorICAgICAg
ICBibG9jayA9IE1hcmtlZEJsb2NrOjpyZWN5Y2xlKGJsb2NrLCBtX2hlYXAsIGNlbGxTaXplKTsK
KyAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFsbG9jYXRpb25DYW5GYWlsKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OmNy
ZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsKKyAgICAKKyAgICBtX2Jsb2Nrcy5hZGQoYmxvY2spOwor
ICAgIAorICAgIHJldHVybiBibG9jazsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJsb2Nr
cyhNYXJrZWRCbG9jayogaGVhZCkKK3sKKyAgICBNYXJrZWRCbG9jayogbmV4dDsKKyAgICBmb3Ig
KE1hcmtlZEJsb2NrKiBibG9jayA9IGhlYWQ7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKKyAgICAg
ICAgbmV4dCA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSk7CisgICAg
ICAgIAorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBibG9jay0+c3dl
ZXAoKTsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2Nr
KTsKKyAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAg
bV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOworICAgIH0KK30KKworY2xhc3MgVGFrZUlm
VW5tYXJrZWQgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFya2VkQmxvY2sqIFJldHVyblR5cGU7
CisgICAgCisgICAgVGFrZUlmVW5tYXJrZWQoTWFya2VkU3BhY2UqKTsKKyAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqKTsKKyAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7CisgICAg
Citwcml2YXRlOgorICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIERvdWJseUxp
bmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fZW1wdGllczsKK307CisKK2lubGluZSBUYWtlSWZVbm1h
cmtlZDo6VGFrZUlmVW5tYXJrZWQoTWFya2VkU3BhY2UqIG5ld1NwYWNlKQorICAgIDogbV9tYXJr
ZWRTcGFjZShuZXdTcGFjZSkKK3sKK30KKworaW5saW5lIHZvaWQgVGFrZUlmVW5tYXJrZWQ6Om9w
ZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQoreworICAgIGlmICghYmxvY2stPm1hcmtDb3Vu
dElzWmVybygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+cmVt
b3ZlQmxvY2soYmxvY2spOworICAgIG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOworfQorCitpbmxp
bmUgVGFrZUlmVW5tYXJrZWQ6OlJldHVyblR5cGUgVGFrZUlmVW5tYXJrZWQ6OnJldHVyblZhbHVl
KCkKK3sKKyAgICByZXR1cm4gbV9lbXB0aWVzLmhlYWQoKTsKK30KKwordm9pZCBNYXJrZWRTcGFj
ZTo6c2hyaW5rKCkKK3sKKyAgICAvLyBXZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0
aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBtX2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCisgICAg
VGFrZUlmVW5tYXJrZWQgdGFrZUlmVW5tYXJrZWQodGhpcyk7CisgICAgZnJlZUJsb2Nrcyhmb3JF
YWNoQmxvY2sodGFrZUlmVW5tYXJrZWQpKTsKK30KKworI2lmIEVOQUJMRShHR0MpCitjbGFzcyBH
YXRoZXJEaXJ0eUNlbGxzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYXRoZXJEaXJ0eUNl
bGxzKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQqIFJldHVyblR5cGU7CisgICAgCisgICAg
ZXhwbGljaXQgR2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yKik7
CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7CisgICAgUmV0dXJuVHlwZSByZXR1
cm5WYWx1ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgTWFya2VkQmxvY2s6
OkRpcnR5Q2VsbFZlY3RvciogbV9kaXJ0eUNlbGxzOworfTsKKworaW5saW5lIEdhdGhlckRpcnR5
Q2VsbHM6OkdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciogZGly
dHlDZWxscykKKyAgICA6IG1fZGlydHlDZWxscyhkaXJ0eUNlbGxzKQoreworfQorCitpbmxpbmUg
dm9pZCBHYXRoZXJEaXJ0eUNlbGxzOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKK3sK
KyAgICBibG9jay0+Z2F0aGVyRGlydHlDZWxscygqbV9kaXJ0eUNlbGxzKTsKK30KKwordm9pZCBN
YXJrZWRTcGFjZTo6Z2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9y
JiBkaXJ0eUNlbGxzKQoreworICAgIEdhdGhlckRpcnR5Q2VsbHMgZ2F0aGVyRGlydHlDZWxscygm
ZGlydHlDZWxscyk7CisgICAgZm9yRWFjaEJsb2NrKGdhdGhlckRpcnR5Q2VsbHMpOworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgKaW5kZXggM2IyYzgyOGY3N2Y1ZDNlM2U0YjRkOGM2NmY1OTU4ZmVlN2ZkYzNjYy4u
MDg1NGVmYzZjYmUxODliZjMzZTc5ZDk2ZTdhNzg3YTY2ODc3Y2RjNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRl
ICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1
ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiUGFnZUFsbG9jYXRpb25BbGlnbmVkLmgi
CiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0
Lmg+CkBAIC02MSwyMiArNjIsMzYgQEAgcHVibGljOgogICAgIE1hcmtlZFNwYWNlKEhlYXAqKTsK
IAogICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CisgICAgdm9pZCogYWxsb2Nh
dGUoc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKICAgICAKICAgICB2
b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKICAgICB2b2lkIGFkZEJsb2NrKFNpemVDbGFzcyYsIE1h
cmtlZEJsb2NrKik7CiAgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOworICAgIE1h
cmtlZEJsb2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Jsb2NrczsgfQogICAgIAogICAgIHZv
aWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogCiAgICAgc2l6ZV90IHdhdGVyTWFy
aygpOwogICAgIHNpemVfdCBudXJzZXJ5V2F0ZXJNYXJrKCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jayhG
dW5jdG9yJik7IC8vIFNhZmUgdG8gcmVtb3ZlIHRoZSBjdXJyZW50IGl0ZW0gd2hpbGUgaXRlcmF0
aW5nLgorICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0
ZXJhdG9yOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwo
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKKyAgICAK
KyAgICB2b2lkIHNocmluaygpOworICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVh
ZCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsK
KyAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Cisg
ICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOworICAgIE1hcmtl
ZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNpemVfdCwgQWxsb2NhdGlvbkVmZm9ydCk7CisKICAgICAv
LyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1h
cmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRv
ZmYgPSAyNTY7CkBAIC05Miw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3dhdGVy
TWFyazsKICAgICBzaXplX3QgbV9udXJzZXJ5V2F0ZXJNYXJrOwogICAgIEhlYXAqIG1faGVhcDsK
KyAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKIH07CiAKIGlubGluZSBzaXplX3QgTWFya2Vk
U3BhY2U6OndhdGVyTWFyaygpCkBAIC0xMDQsNiArMTIwLDIyIEBAIGlubGluZSBzaXplX3QgTWFy
a2VkU3BhY2U6Om51cnNlcnlXYXRlck1hcmsoKQogICAgIHJldHVybiBtX251cnNlcnlXYXRlck1h
cms7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5j
dG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9y
KQoreworICAgIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKworICAgIEJsb2NrSXRl
cmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9y
IGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAo
Kml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFs
dWUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hDZWxsKCkKK3sKKyAgICBGdW5j
dG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOworfQorCiBpbmxp
bmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVDbGFzc0ZvcihzaXpl
X3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5dGVzIDw9IG1heENlbGxTaXplKTsK
QEAgLTExMiwyNSArMTQ0LDE5IEBAIGlubGluZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBNYXJr
ZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKICAgICByZXR1cm4gbV9pbXByZWNp
c2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwogfQogCitpbmxpbmUg
dm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKK3sKKyAgICBTaXplQ2xh
c3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgcmV0dXJuIGFsbG9jYXRl
KHNpemVDbGFzcyk7Cit9CisKIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUoU2l6
ZUNsYXNzJiBzaXplQ2xhc3MpCiB7CisgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdlaWdodCBmYXN0
IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCiAgICAgTWFya2VkQmxvY2s6OkZy
ZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0gICAgaWYg
KCFmaXJzdEZyZWVDZWxsKSB7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9IHNp
emVDbGFzcy5jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJs
b2NrKj4oYmxvY2stPm5leHQoKSkpIHsKLSAgICAgICAgICAgIGZpcnN0RnJlZUNlbGwgPSBibG9j
ay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgICAgICBpZiAo
Zmlyc3RGcmVlQ2VsbCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG1fbnVy
c2VyeVdhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7Ci0gICAg
ICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKLSAgICAgICAgICAgIGJs
b2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZmly
c3RGcmVlQ2VsbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFTU0VSVChm
aXJzdEZyZWVDZWxsKTsKLQorICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCisgICAg
ICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVDbGFzcyk7CisgICAgCiAgICAgc2l6ZUNs
YXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0OwogICAgIHJldHVybiBmaXJz
dEZyZWVDZWxsOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124198</attachid>
            <date>2012-01-26 15:47:17 -0800</date>
            <delta_ts>2012-01-26 16:08:51 -0800</delta_ts>
            <desc>Fixing more build stuff</desc>
            <filename>bug-77116-20120126154716.patch</filename>
            <type>text/plain</type>
            <size>35862</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTg0YjM4M2VlZjdjMTgzZjQxZDZhYjlhOGQ4OTA0MmM3ZTllYWYxLi5hMThjZWY3MDI4ZTY2Zjhl
OTI3MzM3ZTRkYWEzYTY2Y2JiYjZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxMi0wMS0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIE1lcmdlIEFsbG9jYXRpb25TcGFjZSBpbnRvIE1hcmtlZFNwYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzExNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcg
QWxsb2NhdGlvblNwYWNlIGFuZCBNYXJrZWRTcGFjZSBpbiBwcmVwYXJhdGlvbiBmb3IgZnV0dXJl
IHJlZmFjdG9yaW5nL2VuaGFuY2VtZW50IHRvIAorICAgICAgICBNYXJrZWRTcGFjZSBhbGxvY2F0
aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvQnVtcFNw
YWNlLmg6CisgICAgICAgIChCdW1wU3BhY2UpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpvYmplY3RTcGFjZSk6CisgICAgICAgIChIZWFwKToKKyAgICAgICAg
KCk6CisgICAgICAgICogaGVhcC9IZWFwQmxvY2suaDoKKyAgICAgICAgKCk6CisgICAgICAgICog
aGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxv
Y2F0ZUhlbHBlcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVTbG93Q2Fz
ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZyZWVCbG9ja3MpOgorICAgICAgICAoVGFrZUlmVW5tYXJrZWQp
OgorICAgICAgICAoSlNDOjpUYWtlSWZVbm1hcmtlZDo6VGFrZUlmVW5tYXJrZWQpOgorICAgICAg
ICAoSlNDOjpUYWtlSWZVbm1hcmtlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJ
ZlVubWFya2VkOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJp
bmspOgorICAgICAgICAoR2F0aGVyRGlydHlDZWxscyk6CisgICAgICAgIChKU0M6OkdhdGhlckRp
cnR5Q2VsbHM6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpTQzo6R2F0aGVyRGlydHlDZWxsczo6
R2F0aGVyRGlydHlDZWxscyk6CisgICAgICAgIChKU0M6OkdhdGhlckRpcnR5Q2VsbHM6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Z2F0aGVyRGlydHlDZWxscyk6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmxvY2tzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmZvckVhY2hDZWxsKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjphbGxvY2F0ZSk6CisKIDIwMTItMDEtMjYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dpbl0gT25lIG1vcmUgc3BlY3VsYXRpdmUgYnVp
bGRmaXggYWZ0ZXIgcjEwNTk3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4MzE3OTk3NDdiOWIxYTRjZDhkNjJlZTM0MzQ2MDNhMjZhYjQ2ODUyLi5lZWM3NzhhZGRlNzU4
MTlkMDNkYWFlNmFiNjg3ZWJlY2JlYzQwYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC03Myw3ICs3Myw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCiAgICAgZGZnL0RGR1RodW5rcy5jcHAKIAotICAg
IGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcAogICAgIGhlYXAvQnVtcFNwYWNlLmNwcAogICAgIGhl
YXAvREZHQ29kZUJsb2Nrcy5jcHAKICAgICBoZWFwL0hlYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQwN2ZmMzM5ZTAxODI2NWU1NGRkMDBlYmY1
NGNkNGMxZTM3MTg5NzEuLjFmZmY5MDEyN2IxZTM0ZmQ5MWI5MTlhMDliMTVmODJiZmNmMDcxNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNzgsOCAr
MTc4LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwIFwK
LQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcEJsb2NrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0J1bXBTcGFjZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBT
cGFjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDRi
ZjNlZDk4OGExZDI0MmNmZDYyYjFkOGVkOTFiNDk3ZmQ5NDI2ZDcuLjMyMDk2MTViYWIwMzBmNTVh
OTc4OWIzNDEyNTc2YjFjNzg5NGVjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cApAQCAtMTI3LDYgKzEyNyw3IEBAIF9fWk4zSlNDMTFKU0J5dGVBcnJheTNwdXRF
UE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsCiBf
X1pOM0pTQzExSlNCeXRlQXJyYXk2c19pbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5N2Rlc3Ry
b3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQorX19aTjNKU0MxMU1hcmtlZFNwYWNlMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOUzBfOVNpemVDbGFzc0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVy
ZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU18xMFNvdXJj
ZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0ZUVycm9yRVBOU185RXhlY1N0YXRl
RVJLTlNfN1VTdHJpbmdFCkBAIC0xOTAsNyArMTkxLDYgQEAgX19aTjNKU0MxNFRpbWVvdXRDaGVj
a2VyNXJlc2V0RXYKIF9fWk4zSlNDMTRWVGFibGVTcGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUK
IF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTR0aHJv
d1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19aTjNKU0MxNUFsbG9j
YXRpb25TcGFjZTE2YWxsb2NhdGVTbG93Q2FzZUVSTlNfMTFNYXJrZWRTcGFjZTlTaXplQ2xhc3NF
CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VO
U182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTVX
ZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pO
M0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwaQppbmRleCA5YTg3NmMyMDk4ZTMwMGY3YjIyYjQzMzc0ZmNkNDM2ZTljZGYzODNl
Li5iNTliZTM4ZDk3MTJiNDFlYjk1MjZkOTQ4ZjQ1OWY3ZGJiNDRmMThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNyArMjcsNiBAQAogICAgICAg
ICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2RlL09wY29kZS5oJywK
LSAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAgICAgICAgICdoZWFw
L0J1bXBCbG9jay5oJywKICAgICAgICAgICAgICdoZWFwL0J1bXBTcGFjZS5oJywKICAgICAgICAg
ICAgICdoZWFwL0J1bXBTcGFjZUlubGluZU1ldGhvZHMuaCcsCkBAIC0zMzMsNyArMzMyLDYgQEAK
ICAgICAgICAgICAgICdieXRlY29tcGlsZXIvTGFiZWxTY29wZS5oJywKICAgICAgICAgICAgICdi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCcsCiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVy
L1JlZ2lzdGVySUQuaCcsCi0gICAgICAgICAgICAnaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwJywK
ICAgICAgICAgICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCcsCiAgICAgICAgICAgICAn
aGVhcC9IYW5kbGVIZWFwLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9IYW5kbGVTdGFjay5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgppbmRleCA1MDk1ZDVjNmI1ZTI4MTRmODIxMTc4MWUzNTg1MTE0MGZiNDNjNjdhLi4zZjhmZGU3
Y2I5MzgxMWI1NmYxNzg1MWU0ZmU5ZGU1YmY2MjA1MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNjQsNyArNjQsNiBAQCBF
WFBPUlRTCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxA
NEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUds
b2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKICAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNP
YmplY3RASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJASUlAWgotICAgID9hbGxvY2F0ZVNsb3dD
YXNlQEFsbG9jYXRpb25TcGFjZUBKU0NAQEFBRVBBWEFBVVNpemVDbGFzc0BNYXJrZWRTcGFjZUAy
QEBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCRUlAWgogICAgID9hcHBl
bmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQl9XSUBaCiAgICAgP2FzY2lpQFVTdHJpbmdASlND
QEBRQkU/QVZDU3RyaW5nQFdURkBAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggZjRhNTc4NWQ4OTM3NTNhYjFjMWQz
OWI2MWJiMDkyOTU1YzEwY2Q0YS4uZDFlMzRiMGNiM2I2N2IzOGI3Y2RmZTUyNDU1NDVkNGZjNTA4
M2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oKQEAgLTE5OTgsMTQgKzE5OTgsNiBAQAogCQkJTmFtZT0iaGVhcCIKIAkJ
CT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEFsbG9jYXRpb25TcGFj
ZS5jcHAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxG
aWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxGaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQnVtcEJsb2NrLmgiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MDhmZWUzYmRiZWUwZWE5NTk3
MDBhMGVmOWFmNmRmM2Y3OWNjNjM0Li41Y2UyNTRmNTgxYjA2MGQxOWQyZmVjMTcyZGY0MjAzNTVk
NzU3ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc0LDggKzQ3NCw2IEBA
CiAJCUExNzEyQjNGMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1
MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDExMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3
QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUExRDc2NDUyMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc2
NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzA0NTZCMDE0MjdGQjkxMDAzN0RBNjggLyog
QWxsb2NhdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzA0NTZBRjE0MjdGQjE1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTcwNDU2QjEx
NDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyog
QWxsb2NhdGlvblNwYWNlLmNwcCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8q
IEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNw
cCAqLzsgfTsKIAkJQTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAwNzgw
REFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovOyB9OwogCQlBNzI3MDFCOTBE
QURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4
Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKQEAgLTEzMDUsOCArMTMwMyw2IEBACiAJCUExNzEyQjNF
MTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRpb25TcGFjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBB
bGxvY2F0aW9uU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb2Nh
dGlvblNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MTIzNkU0MTE5NUYz
M0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0
ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0
ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzcxLDggKzE3
NjcsNiBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTcwNDU2QUUxNDI3RkIwMzAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi8sCi0JCQkJQTcwNDU2QUYxNDI3RkIxNTAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovLAogCQkJCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2
NSAvKiBCdW1wQmxvY2suaCAqLywKIAkJCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQnVt
cFNwYWNlLmNwcCAqLywKIAkJCQlDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQnVtcFNwYWNl
LmggKi8sCkBAIC0yNjQ2LDcgKzI2NDAsNiBAQAogCQkJZmlsZXMgPSAoCiAJCQkJODYwMTYxRTMw
RjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExRDc2NDUyMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDM0U0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBbHdheXNJbmxp
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElD
YXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjVGNDA4ODEwRTdENTYzMDA5NDczNjEgLyogQVBJ
U2hpbXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzQwNiw3ICszMzk5LDYgQEAKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAotCQkJCUE3MDQ1NkIxMTQyN0ZCOTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFy
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkUxMDdFQzM3NjAwNDI3QTQ4IC8q
IEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1
RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQppbmRleCAzZWY2YWI5Zjc1MWQxMTVhOTdiMTYwNjlhZjkyMDJhMDIzMWVkZDQzLi4zMDdh
OWI3MmQ3NzNjZTg0YWI5NWUyY2Y0ODQ3MjQ5NTk0Mjg4OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQpAQCAtNjUsNyArNjUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBieXRlY29kZS9WYWx1
ZVByb2ZpbGUuY3BwIFwKICAgICBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIFwK
ICAgICBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBcCi0gICAgaGVhcC9BbGxvY2F0aW9u
U3BhY2UuY3BwIFwKICAgICBoZWFwL0J1bXBTcGFjZS5jcHAgXAogICAgIGhlYXAvQ29uc2VydmF0
aXZlUm9vdHMuY3BwIFwKICAgICBoZWFwL0RGR0NvZGVCbG9ja3MuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyOTBmMmEyOGE1ZWYzZWQ3ODQwMGFmMDE0ZWYyMzBlNjEzMGU5YmQ0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUg
IkFsbG9jYXRpb25TcGFjZS5oIgotCi0jaW5jbHVkZSAiSGVhcC5oIgotCi1uYW1lc3BhY2UgSlND
IHsKLQotaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6dHJ5QWxsb2NhdGUoTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblBy
b2dyZXNzID0gQWxsb2NhdGlvbjsKLSAgICB2b2lkKiByZXN1bHQgPSBtX21hcmtlZFNwYWNlLmFs
bG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBO
b09wZXJhdGlvbjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkKiBBbGxvY2F0aW9uU3Bh
Y2U6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQot
ewotI2lmIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTgotICAgIG1faGVhcC0+Y29sbGVjdEFs
bEdhcmJhZ2UoKTsKLSAgICBBU1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
Tm9PcGVyYXRpb24pOwotI2VuZGlmCi0gICAgCi0gICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2Nh
dGUoc2l6ZUNsYXNzKTsKLSAgICAKLSAgICBpZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAgICBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25F
ZmZvcnQ7Ci0gICAgCi0gICAgaWYgKCgKLSNpZiBFTkFCTEUoR0dDKQotICAgICAgICAgbV9tYXJr
ZWRTcGFjZS5udXJzZXJ5V2F0ZXJNYXJrKCkgPCBtX2hlYXAtPm1fbWluQnl0ZXNQZXJDeWNsZQot
I2Vsc2UKLSAgICAgICAgIG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1h
cmsoKQotI2VuZGlmCi0gICAgICAgICApIHx8ICFtX2hlYXAtPm1faXNTYWZlVG9Db2xsZWN0KQot
ICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbk11c3RTdWNjZWVkOwotICAgIGVs
c2UKLSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25DYW5GYWlsOwotICAgIAot
ICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXpl
LCBhbGxvY2F0aW9uRWZmb3J0KTsKLSAgICBpZiAoYmxvY2spIHsKLSAgICAgICAgbV9tYXJrZWRT
cGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGJsb2NrKTsKLSAgICAgICAgdm9pZCogcmVzdWx0ID0g
dHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIG1faGVhcC0+Y29sbGVjdChIZWFwOjpE
b05vdFN3ZWVwKTsKLSAgICAKLSAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwot
ICAgIAotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAg
QVNTRVJUKG1faGVhcC0+d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1hcmsoKSk7Ci0g
ICAgCi0gICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2so
c2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQpKTsKLSAgICAKLSAgICBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIEFTU0VSVChyZXN1bHQpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLU1hcmtlZEJsb2NrKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9j
YXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZv
cnQpCi17Ci0gICAgTWFya2VkQmxvY2sqIGJsb2NrOwotICAgIAotICAgIHsKLSAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgaWYgKG1f
aGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MpIHsKLSAgICAgICAgICAgIGJsb2NrID0gc3RhdGlj
X2Nhc3Q8TWFya2VkQmxvY2sqPihtX2hlYXAtPm1fZnJlZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOwot
ICAgICAgICAgICAgQVNTRVJUKGJsb2NrKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJP
ZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBibG9jayA9IDA7Ci0g
ICAgfQotICAgIGlmIChibG9jaykKLSAgICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6cmVjeWNs
ZShibG9jaywgbV9oZWFwLCBjZWxsU2l6ZSk7Ci0gICAgZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9y
dCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZQotICAg
ICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUobV9oZWFwLCBjZWxsU2l6ZSk7Ci0gICAg
Ci0gICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKLSAgICAKLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0K
LXZvaWQgQWxsb2NhdGlvblNwYWNlOjpmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKQotewot
ICAgIE1hcmtlZEJsb2NrKiBuZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2NrID0gaGVh
ZDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gc3RhdGljX2Nhc3Q8TWFy
a2VkQmxvY2sqPihibG9jay0+bmV4dCgpKTsKLSAgICAgICAgCi0gICAgICAgIG1fYmxvY2tzLnJl
bW92ZShibG9jayk7Ci0gICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBtX2hlYXAtPm1fZnJl
ZUJsb2Nrcy5hcHBlbmQoYmxvY2spOwotICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxv
Y2tzKys7Ci0gICAgfQotfQotCi1jbGFzcyBUYWtlSWZVbm1hcmtlZCB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBNYXJrZWRCbG9jayogUmV0dXJuVHlwZTsKLSAgICAKLSAgICBUYWtlSWZVbm1hcmtl
ZChNYXJrZWRTcGFjZSopOwotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOwotICAg
IFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgTWFya2VkU3Bh
Y2UqIG1fbWFya2VkU3BhY2U7Ci0gICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9l
bXB0aWVzOwotfTsKLQotaW5saW5lIFRha2VJZlVubWFya2VkOjpUYWtlSWZVbm1hcmtlZChNYXJr
ZWRTcGFjZSogbmV3U3BhY2UpCi0gICAgOiBtX21hcmtlZFNwYWNlKG5ld1NwYWNlKQotewotfQot
Ci1pbmxpbmUgdm9pZCBUYWtlSWZVbm1hcmtlZDo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxv
Y2spCi17Ci0gICAgaWYgKCFibG9jay0+bWFya0NvdW50SXNaZXJvKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX21hcmtlZFNwYWNlLT5yZW1vdmVCbG9jayhibG9jayk7Ci0gICAgbV9l
bXB0aWVzLmFwcGVuZChibG9jayk7Ci19Ci0KLWlubGluZSBUYWtlSWZVbm1hcmtlZDo6UmV0dXJu
VHlwZSBUYWtlSWZVbm1hcmtlZDo6cmV0dXJuVmFsdWUoKQotewotICAgIHJldHVybiBtX2VtcHRp
ZXMuaGVhZCgpOwotfQotCi12b2lkIEFsbG9jYXRpb25TcGFjZTo6c2hyaW5rKCkKLXsKLSAgICAv
LyBXZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlmeWlu
ZyBtX2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCi0gICAgVGFrZUlmVW5tYXJrZWQgdGFrZUlm
VW5tYXJrZWQoJm1fbWFya2VkU3BhY2UpOwotICAgIGZyZWVCbG9ja3MoZm9yRWFjaEJsb2NrKHRh
a2VJZlVubWFya2VkKSk7Ci19Ci0KLSNpZiBFTkFCTEUoR0dDKQotY2xhc3MgR2F0aGVyRGlydHlD
ZWxscyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2F0aGVyRGlydHlDZWxscyk7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiB2b2lkKiBSZXR1cm5UeXBlOwotICAgIAotICAgIGV4cGxpY2l0IEdh
dGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciopOwotICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jayopOwotICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSB7
IHJldHVybiAwOyB9Ci0gICAgCi1wcml2YXRlOgotICAgIE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxW
ZWN0b3IqIG1fZGlydHlDZWxsczsKLX07Ci0KLWlubGluZSBHYXRoZXJEaXJ0eUNlbGxzOjpHYXRo
ZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3IqIGRpcnR5Q2VsbHMpCi0g
ICAgOiBtX2RpcnR5Q2VsbHMoZGlydHlDZWxscykKLXsKLX0KLQotaW5saW5lIHZvaWQgR2F0aGVy
RGlydHlDZWxsczo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi17Ci0gICAgYmxvY2st
PmdhdGhlckRpcnR5Q2VsbHMoKm1fZGlydHlDZWxscyk7Ci19Ci0KLXZvaWQgQWxsb2NhdGlvblNw
YWNlOjpnYXRoZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3ImIGRpcnR5
Q2VsbHMpCi17Ci0gICAgR2F0aGVyRGlydHlDZWxscyBnYXRoZXJEaXJ0eUNlbGxzKCZkaXJ0eUNl
bGxzKTsKLSAgICBmb3JFYWNoQmxvY2soZ2F0aGVyRGlydHlDZWxscyk7Ci19Ci0jZW5kaWYKLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVhNmI1YTNlNDE1YjY4MTJmZTYwOTFhMjM3M2Q1ZWU3
NWI0YTk0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBbGxvY2F0aW9uU3BhY2Vf
aAotI2RlZmluZSBBbGxvY2F0aW9uU3BhY2VfaAotCi0jaW5jbHVkZSAiTWFya2VkQmxvY2tTZXQu
aCIKLSNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgotCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEhlYXA7Ci1jbGFzcyBNYXJrZWRCbG9jazsKLQot
Y2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKLXB1YmxpYzoKLSAgICBBbGxvY2F0aW9uU3BhY2UoSGVh
cCogaGVhcCkKLSAgICAgICAgOiBtX2hlYXAoaGVhcCkKLSAgICAgICAgLCBtX21hcmtlZFNwYWNl
KGhlYXApCi0gICAgewotICAgIH0KLSAgICAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8TWFya2VkQmxv
Y2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKLSAgICAKLSAgICBNYXJrZWRCbG9ja1NldCYg
YmxvY2tzKCkgeyByZXR1cm4gbV9ibG9ja3M7IH0KLSAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX21hcmtlZFNwYWNlLnNpemVD
bGFzc0ZvcihieXRlcyk7IH0KLSAgICBzaXplX3Qgd2F0ZXJNYXJrKCkgeyByZXR1cm4gbV9tYXJr
ZWRTcGFjZS53YXRlck1hcmsoKTsgfQotCi0jaWYgRU5BQkxFKEdHQykKLSAgICB2b2lkIGdhdGhl
ckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciYpOwotI2VuZGlmCi0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBl
IGZvckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKCk7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxv
Y2soRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7Ci0gICAgCi0gICAgdm9pZCBjYW5vbmlj
YWxpemVDZWxsTGl2ZW5lc3NEYXRhKCkgeyBtX21hcmtlZFNwYWNlLmNhbm9uaWNhbGl6ZUNlbGxM
aXZlbmVzc0RhdGEoKTsgfQotICAgIHZvaWQgcmVzZXRBbGxvY2F0b3IoKSB7IG1fbWFya2VkU3Bh
Y2UucmVzZXRBbGxvY2F0b3IoKTsgfQotICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
Ci0gICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7Ci0gICAgdm9pZCBzaHJpbmsoKTsK
LSAgICAKLXByaXZhdGU6Ci0gICAgZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbkNh
bkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9OwotCi0gICAgdm9pZCogYWxsb2NhdGUoTWFy
a2VkU3BhY2U6OlNpemVDbGFzcyYpOwotICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dD
YXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKLSAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVC
bG9jayhzaXplX3QgY2VsbFNpemUsIEFsbG9jYXRpb25FZmZvcnQpOwotICAgIAotICAgIEhlYXAq
IG1faGVhcDsKLSAgICBNYXJrZWRTcGFjZSBtX21hcmtlZFNwYWNlOwotICAgIE1hcmtlZEJsb2Nr
U2V0IG1fYmxvY2tzOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5
cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbChG
dW5jdG9yJiBmdW5jdG9yKQotewotICAgIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsK
LQotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgZm9y
IChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAoKml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7Ci0gICAgcmV0dXJuIGZ1
bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNo
Q2VsbCgpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoQ2VsbChm
dW5jdG9yKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3Rv
ciYgZnVuY3RvcikKLXsKLSAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVu
ZCgpOwotICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZnVuY3RvcigqaXQpOwotICAgIHJldHVybiBmdW5j
dG9yLnJldHVyblZhbHVlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaEJs
b2NrKCkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jayhm
dW5jdG9yKTsKLX0KLQotaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6YWxsb2NhdGUoTWFy
a2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotICAgIC8vIFRoaXMgaXMgYSBsaWdo
dC13ZWlnaHQgZmFzdCBwYXRoIHRvIGNvdmVyIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgotICAgIE1h
cmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVD
ZWxsOwotICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCi0gICAgICAgIHJldHVybiBh
bGxvY2F0ZVNsb3dDYXNlKHNpemVDbGFzcyk7Ci0gICAgCi0gICAgc2l6ZUNsYXNzLmZpcnN0RnJl
ZUNlbGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0OwotICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOwot
fQotCi1pbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZShzaXplX3QgYnl0ZXMp
Ci17Ci0gICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9y
KGJ5dGVzKTsKLSAgICByZXR1cm4gYWxsb2NhdGUoc2l6ZUNsYXNzKTsKLX0KLQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBTcGFjZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlLmgKaW5kZXggMWZmY2I0NjgwM2Fj
NzExMDFmODA4NDc4NTU2MDZlZDhhOWE3NjA5Mi4uMzBlNmI3NGZlODliYzNkODk3YWYxODhkZjFm
YTUyOTZhYTEwZWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVt
cFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNwYWNlLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQnVtcFNwYWNlX2gKICNkZWZpbmUgQnVtcFNwYWNlX2gK
IAorI2luY2x1ZGUgIkhlYXBCbG9jay5oIgogI2luY2x1ZGUgIlRpbnlCbG9vbUZpbHRlci5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRCb29sZWFu
Lmg+CkBAIC02Niw4ICs2Nyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQnVtcEJsb2NrKiBibG9j
a0Zvcih2b2lkKik7CiAKIHByaXZhdGU6Ci0gICAgZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxs
b2NhdGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9OwotCiAgICAgQ2hlY2tlZEJv
b2xlYW4gdHJ5QWxsb2NhdGVTbG93Q2FzZShzaXplX3QsIHZvaWQqKik7CiAgICAgQ2hlY2tlZEJv
b2xlYW4gYWRkTmV3QmxvY2soKTsKICAgICBDaGVja2VkQm9vbGVhbiBhbGxvY2F0ZU5ld0Jsb2Nr
KEJ1bXBCbG9jayoqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCA0NGE2Zjg2Mzhj
OGFhYzE1OTQ3N2EyM2M5ZmVhODlhYjNjYjYzYzk2Li40MGE4Mzc2ZjAxNmEzYjUyNTEyZTY2YTNl
NWJkNDhjZGEyODVmODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMiw3ICsy
Miw2IEBACiAjaWZuZGVmIEhlYXBfaAogI2RlZmluZSBIZWFwX2gKIAotI2luY2x1ZGUgIkFsbG9j
YXRpb25TcGFjZS5oIgogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRlICJIYW5k
bGVIZWFwLmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKQEAgLTg2LDcgKzg1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOyAv
LyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KIAogICAg
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERh
dGE7IH0KLSAgICAgICAgQWxsb2NhdGlvblNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2U7IH0KKyAgICAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1
cm4gbV9vYmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVh
ZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CkBAIC0xMzYsOCAr
MTM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVn
aXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9y
OwogICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwpAQCAtMTkxLDcgKzE5MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzaXplX3QgbV9oaWdoV2F0ZXJNYXJrOwogICAgICAgICAK
ICAgICAgICAgT3BlcmF0aW9uSW5Qcm9ncmVzcyBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7Ci0gICAg
ICAgIEFsbG9jYXRpb25TcGFjZSBtX29iamVjdFNwYWNlOworICAgICAgICBNYXJrZWRTcGFjZSBt
X29iamVjdFNwYWNlOwogICAgICAgICBCdW1wU3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAKICAgICAg
ICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+IG1fZnJlZUJsb2NrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcEJsb2NrLmgKaW5kZXggMWQ2NmFhZGU5OTBmNTY4YzNmYjE2MWY2ZjJh
NTI3ZGFkZjdjZWEwMS4uYjBlY2IyMDU5NTZjY2Y3NDNlMmJjZGNmNDA4M2M1NjNlNWQ2NDMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEJsb2NrLmgKQEAgLTMxLDYgKzMxLDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2VudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25D
YW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKKwogY2xhc3MgSGVhcEJsb2NrIDogcHVi
bGljIERvdWJseUxpbmtlZExpc3ROb2RlPEhlYXBCbG9jaz4gewogcHVibGljOgogICAgIEhlYXBC
bG9jayhQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggYzEyZTliYTlkZjI3MDAwMWQxZjEyNzI4
YTdkNTc0M2I3MWJkY2IyMi4uZmNjYTE4OGU0NzE3YTNkZWM1YjUzYmI3YWRmYjc4MzJiYzdlMDg3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcApAQCAtODEs
NCArODEsMTkyIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0Rh
dGEoKQogICAgICAgICBzaXplQ2xhc3NGb3IoY2VsbFNpemUpLnphcEZyZWVMaXN0KCk7CiB9CiAK
K2lubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6dHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6
OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQoreworICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmly
c3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsOworICAgIGlmICghZmlyc3RGcmVl
Q2VsbCkgeworICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBzaXplQ2xhc3MuY3Vy
cmVudEJsb2NrOyBibG9jazsgYmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KGJsb2Nr
LT5uZXh0KCkpKSB7CisgICAgICAgICAgICBmaXJzdEZyZWVDZWxsID0gYmxvY2stPnN3ZWVwKE1h
cmtlZEJsb2NrOjpTd2VlcFRvRnJlZUxpc3QpOworICAgICAgICAgICAgaWYgKGZpcnN0RnJlZUNl
bGwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX251cnNlcnlXYXRlck1h
cmsgKz0gYmxvY2stPmNhcGFjaXR5KCkgLSBibG9jay0+c2l6ZSgpOworICAgICAgICAgICAgbV93
YXRlck1hcmsgKz0gYmxvY2stPmNhcGFjaXR5KCk7CisgICAgICAgICAgICBibG9jay0+ZGlkQ29u
c3VtZUZyZWVMaXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZpcnN0RnJlZUNlbGwp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBU1NFUlQoZmlyc3RGcmVlQ2Vs
bCk7CisgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0Owor
ICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOworfQorCitpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6
OnRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAgICBt
X2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgdm9pZCogcmVz
dWx0ID0gdHJ5QWxsb2NhdGVIZWxwZXIoc2l6ZUNsYXNzKTsKKyAgICBtX2hlYXAtPm1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3Mm
IHNpemVDbGFzcykKK3sKKyNpZiBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04KKyAgICBtX2hl
YXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgQVNTRVJUKG1faGVhcC0+bV9vcGVyYXRpb25J
blByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKKyNlbmRpZgorICAgIAorICAgIHZvaWQqIHJlc3Vs
dCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgCisgICAgaWYgKExJS0VMWShyZXN1bHQg
IT0gMCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgCisgICAgQWxsb2NhdGlvbkVmZm9y
dCBhbGxvY2F0aW9uRWZmb3J0OworICAgIAorICAgIGlmICgoCisjaWYgRU5BQkxFKEdHQykKKyAg
ICAgICAgIG51cnNlcnlXYXRlck1hcmsoKSA8IG1faGVhcC0+bV9taW5CeXRlc1BlckN5Y2xlCisj
ZWxzZQorICAgICAgICAgbV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFy
aygpCisjZW5kaWYKKyAgICAgICAgICkgfHwgIW1faGVhcC0+bV9pc1NhZmVUb0NvbGxlY3QpCisg
ICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQ7CisgICAgZWxz
ZQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNhbkZhaWw7CisgICAgCisg
ICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhzaXplQ2xhc3MuY2VsbFNpemUs
IGFsbG9jYXRpb25FZmZvcnQpOworICAgIGlmIChibG9jaykgeworICAgICAgICBhZGRCbG9jayhz
aXplQ2xhc3MsIGJsb2NrKTsKKyAgICAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6
ZUNsYXNzKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIG1faGVhcC0+Y29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKKyAg
ICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIAorICAgIGlmIChy
ZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgCisgICAgQVNTRVJUKG1faGVhcC0+
d2F0ZXJNYXJrKCkgPCBtX2hlYXAtPmhpZ2hXYXRlck1hcmsoKSk7CisgICAgCisgICAgYWRkQmxv
Y2soc2l6ZUNsYXNzLCBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5jZWxsU2l6ZSwgQWxsb2NhdGlv
bk11c3RTdWNjZWVkKSk7CisgICAgCisgICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNz
KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitNYXJrZWRC
bG9jayogTWFya2VkU3BhY2U6OmFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0
aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQpCit7CisgICAgTWFya2VkQmxvY2sqIGJsb2NrOwor
ICAgIAorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxv
Y2tMb2NrKTsKKyAgICAgICAgaWYgKG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MpIHsKKyAg
ICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihtX2hlYXAtPm1fZnJl
ZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOworICAgICAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAg
ICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBibG9jayA9IDA7CisgICAgfQorICAgIGlmIChibG9jaykKKyAgICAgICAgYmxv
Y2sgPSBNYXJrZWRCbG9jazo6cmVjeWNsZShibG9jaywgbV9oZWFwLCBjZWxsU2l6ZSk7CisgICAg
ZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgZWxzZQorICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUo
bV9oZWFwLCBjZWxsU2l6ZSk7CisgICAgCisgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKKyAgICAK
KyAgICByZXR1cm4gYmxvY2s7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoTWFy
a2VkQmxvY2sqIGhlYWQpCit7CisgICAgTWFya2VkQmxvY2sqIG5leHQ7CisgICAgZm9yIChNYXJr
ZWRCbG9jayogYmxvY2sgPSBoZWFkOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7CisgICAgICAgIG5l
eHQgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrLT5uZXh0KCkpOworICAgICAgICAK
KyAgICAgICAgbV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgYmxvY2stPnN3ZWVwKCk7
CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7Cisg
ICAgICAgIG1faGVhcC0+bV9mcmVlQmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIG1faGVh
cC0+bV9udW1iZXJPZkZyZWVCbG9ja3MrKzsKKyAgICB9Cit9CisKK2NsYXNzIFRha2VJZlVubWFy
a2VkIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOworICAg
IAorICAgIFRha2VJZlVubWFya2VkKE1hcmtlZFNwYWNlKik7CisgICAgdm9pZCBvcGVyYXRvcigp
KE1hcmtlZEJsb2NrKik7CisgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOworICAgIAorcHJp
dmF0ZToKKyAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBEb3VibHlMaW5rZWRM
aXN0PE1hcmtlZEJsb2NrPiBtX2VtcHRpZXM7Cit9OworCitpbmxpbmUgVGFrZUlmVW5tYXJrZWQ6
OlRha2VJZlVubWFya2VkKE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKKyAgICA6IG1fbWFya2VkU3Bh
Y2UobmV3U3BhY2UpCit7Cit9CisKK2lubGluZSB2b2lkIFRha2VJZlVubWFya2VkOjpvcGVyYXRv
cigpKE1hcmtlZEJsb2NrKiBibG9jaykKK3sKKyAgICBpZiAoIWJsb2NrLT5tYXJrQ291bnRJc1pl
cm8oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJs
b2NrKGJsb2NrKTsKKyAgICBtX2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKK30KKworaW5saW5lIFRh
a2VJZlVubWFya2VkOjpSZXR1cm5UeXBlIFRha2VJZlVubWFya2VkOjpyZXR1cm5WYWx1ZSgpCit7
CisgICAgcmV0dXJuIG1fZW1wdGllcy5oZWFkKCk7Cit9CisKK3ZvaWQgTWFya2VkU3BhY2U6OnNo
cmluaygpCit7CisgICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0
byBhdm9pZCBtb2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgorICAgIFRha2VJ
ZlVubWFya2VkIHRha2VJZlVubWFya2VkKHRoaXMpOworICAgIGZyZWVCbG9ja3MoZm9yRWFjaEJs
b2NrKHRha2VJZlVubWFya2VkKSk7Cit9CisKKyNpZiBFTkFCTEUoR0dDKQorY2xhc3MgR2F0aGVy
RGlydHlDZWxscyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR2F0aGVyRGlydHlDZWxscyk7
CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkKiBSZXR1cm5UeXBlOworICAgIAorICAgIGV4cGxp
Y2l0IEdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciopOworICAg
IHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOworICAgIFJldHVyblR5cGUgcmV0dXJuVmFs
dWUoKSB7IHJldHVybiAwOyB9CisgICAgCitwcml2YXRlOgorICAgIE1hcmtlZEJsb2NrOjpEaXJ0
eUNlbGxWZWN0b3IqIG1fZGlydHlDZWxsczsKK307CisKK2lubGluZSBHYXRoZXJEaXJ0eUNlbGxz
OjpHYXRoZXJEaXJ0eUNlbGxzKE1hcmtlZEJsb2NrOjpEaXJ0eUNlbGxWZWN0b3IqIGRpcnR5Q2Vs
bHMpCisgICAgOiBtX2RpcnR5Q2VsbHMoZGlydHlDZWxscykKK3sKK30KKworaW5saW5lIHZvaWQg
R2F0aGVyRGlydHlDZWxsczo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAg
YmxvY2stPmdhdGhlckRpcnR5Q2VsbHMoKm1fZGlydHlDZWxscyk7Cit9CisKK3ZvaWQgTWFya2Vk
U3BhY2U6OmdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciYgZGly
dHlDZWxscykKK3sKKyAgICBHYXRoZXJEaXJ0eUNlbGxzIGdhdGhlckRpcnR5Q2VsbHMoJmRpcnR5
Q2VsbHMpOworICAgIGZvckVhY2hCbG9jayhnYXRoZXJEaXJ0eUNlbGxzKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCmluZGV4IDNiMmM4MjhmNzdmNWQzZTNlNGI0ZDhjNjZmNTk1OGZlZTdmZGMzY2MuLjA4NTRl
ZmM2Y2JlMTg5YmYzM2U3OWQ5NmU3YTc4N2E2Njg3N2NkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiTWFj
aGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJN
YXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIlBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oIgogI2lu
Y2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgpA
QCAtNjEsMjIgKzYyLDM2IEBAIHB1YmxpYzoKICAgICBNYXJrZWRTcGFjZShIZWFwKik7CiAKICAg
ICBTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOworICAgIHZvaWQqIGFsbG9jYXRlKHNp
emVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGUoU2l6ZUNsYXNzJik7CiAgICAgCiAgICAgdm9pZCBy
ZXNldEFsbG9jYXRvcigpOwogCiAgICAgdm9pZCBhZGRCbG9jayhTaXplQ2xhc3MmLCBNYXJrZWRC
bG9jayopOwogICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqKTsKKyAgICBNYXJrZWRC
bG9ja1NldCYgYmxvY2tzKCkgeyByZXR1cm4gbV9ibG9ja3M7IH0KICAgICAKICAgICB2b2lkIGNh
bm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKIAogICAgIHNpemVfdCB3YXRlck1hcmsoKTsK
ICAgICBzaXplX3QgbnVyc2VyeVdhdGVyTWFyaygpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soRnVuY3Rv
ciYpOyAvLyBTYWZlIHRvIHJlbW92ZSB0aGUgY3VycmVudCBpdGVtIHdoaWxlIGl0ZXJhdGluZy4K
KyAgICB0eXBlZGVmIEhhc2hTZXQ8TWFya2VkQmxvY2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRv
cjsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9y
OjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoQmxvY2soRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CisgICAgCisgICAg
dm9pZCBzaHJpbmsoKTsKKyAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOwog
CiBwcml2YXRlOgorICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoU2l6ZUNsYXNzJik7CisgICAg
dm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOworICAgIHZv
aWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKKyAgICBNYXJrZWRCbG9j
ayogYWxsb2NhdGVCbG9jayhzaXplX3QsIEFsbG9jYXRpb25FZmZvcnQpOworCiAgICAgLy8gWyAz
Mi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRC
bG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0g
MjU2OwpAQCAtOTIsNiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV93YXRlck1hcms7
CiAgICAgc2l6ZV90IG1fbnVyc2VyeVdhdGVyTWFyazsKICAgICBIZWFwKiBtX2hlYXA7CisgICAg
TWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7CiB9OwogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNl
Ojp3YXRlck1hcmsoKQpAQCAtMTA0LDYgKzEyMCwyMiBAQCBpbmxpbmUgc2l6ZV90IE1hcmtlZFNw
YWNlOjpudXJzZXJ5V2F0ZXJNYXJrKCkKICAgICByZXR1cm4gbV9udXJzZXJ5V2F0ZXJNYXJrOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6
UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaENlbGwoRnVuY3RvciYgZnVuY3RvcikKK3sK
KyAgICBjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisKKyAgICBCbG9ja0l0ZXJhdG9y
IGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9
IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCkt
PmZvckVhY2hDZWxsKGZ1bmN0b3IpOworICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9y
OjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQ2VsbCgpCit7CisgICAgRnVuY3RvciBm
dW5jdG9yOworICAgIHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKK30KKwogaW5saW5lIE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3MmIE1hcmtlZFNwYWNlOjpzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5
dGVzKQogewogICAgIEFTU0VSVChieXRlcyAmJiBieXRlcyA8PSBtYXhDZWxsU2l6ZSk7CkBAIC0x
MTIsMjUgKzE0NCwxOSBAQCBpbmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3Bh
Y2U6OnNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIG1faW1wcmVjaXNlU2l6
ZUNsYXNzZXNbKGJ5dGVzIC0gMSkgLyBpbXByZWNpc2VTdGVwXTsKIH0KIAoraW5saW5lIHZvaWQq
IE1hcmtlZFNwYWNlOjphbGxvY2F0ZShzaXplX3QgYnl0ZXMpCit7CisgICAgU2l6ZUNsYXNzJiBz
aXplQ2xhc3MgPSBzaXplQ2xhc3NGb3IoYnl0ZXMpOworICAgIHJldHVybiBhbGxvY2F0ZShzaXpl
Q2xhc3MpOworfQorCiBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKFNpemVDbGFz
cyYgc2l6ZUNsYXNzKQogeworICAgIC8vIFRoaXMgaXMgYSBsaWdodC13ZWlnaHQgZmFzdCBwYXRo
IHRvIGNvdmVyIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgogICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2Vs
bCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsOwotICAgIGlmICghZmly
c3RGcmVlQ2VsbCkgewotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBzaXplQ2xh
c3MuY3VycmVudEJsb2NrOyBibG9jazsgYmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+
KGJsb2NrLT5uZXh0KCkpKSB7Ci0gICAgICAgICAgICBmaXJzdEZyZWVDZWxsID0gYmxvY2stPnN3
ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRvRnJlZUxpc3QpOwotICAgICAgICAgICAgaWYgKGZpcnN0
RnJlZUNlbGwpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBtX251cnNlcnlX
YXRlck1hcmsgKz0gYmxvY2stPmNhcGFjaXR5KCkgLSBibG9jay0+c2l6ZSgpOwotICAgICAgICAg
ICAgbV93YXRlck1hcmsgKz0gYmxvY2stPmNhcGFjaXR5KCk7Ci0gICAgICAgICAgICBibG9jay0+
ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWZpcnN0RnJl
ZUNlbGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBU1NFUlQoZmlyc3RG
cmVlQ2VsbCk7Ci0KKyAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwpKQorICAgICAgICBy
ZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3MpOworICAgIAogICAgIHNpemVDbGFzcy5m
aXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKICAgICByZXR1cm4gZmlyc3RGcmVl
Q2VsbDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124204</attachid>
            <date>2012-01-26 16:08:54 -0800</date>
            <delta_ts>2012-01-26 18:30:54 -0800</delta_ts>
            <desc>Hopefully last build fix</desc>
            <filename>bug-77116-20120126160853.patch</filename>
            <type>text/plain</type>
            <size>35927</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTg0YjM4M2VlZjdjMTgzZjQxZDZhYjlhOGQ4OTA0MmM3ZTllYWYxLi5hMThjZWY3MDI4ZTY2Zjhl
OTI3MzM3ZTRkYWEzYTY2Y2JiYjZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxMi0wMS0yNiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIE1lcmdlIEFsbG9jYXRpb25TcGFjZSBpbnRvIE1hcmtlZFNwYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzExNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdpbmcg
QWxsb2NhdGlvblNwYWNlIGFuZCBNYXJrZWRTcGFjZSBpbiBwcmVwYXJhdGlvbiBmb3IgZnV0dXJl
IHJlZmFjdG9yaW5nL2VuaGFuY2VtZW50IHRvIAorICAgICAgICBNYXJrZWRTcGFjZSBhbGxvY2F0
aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZ3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGhlYXAvQnVtcFNw
YWNlLmg6CisgICAgICAgIChCdW1wU3BhY2UpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpvYmplY3RTcGFjZSk6CisgICAgICAgIChIZWFwKToKKyAgICAgICAg
KCk6CisgICAgICAgICogaGVhcC9IZWFwQmxvY2suaDoKKyAgICAgICAgKCk6CisgICAgICAgICog
aGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp0cnlBbGxv
Y2F0ZUhlbHBlcik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVTbG93Q2Fz
ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmZyZWVCbG9ja3MpOgorICAgICAgICAoVGFrZUlmVW5tYXJrZWQp
OgorICAgICAgICAoSlNDOjpUYWtlSWZVbm1hcmtlZDo6VGFrZUlmVW5tYXJrZWQpOgorICAgICAg
ICAoSlNDOjpUYWtlSWZVbm1hcmtlZDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJ
ZlVubWFya2VkOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzaHJp
bmspOgorICAgICAgICAoR2F0aGVyRGlydHlDZWxscyk6CisgICAgICAgIChKU0M6OkdhdGhlckRp
cnR5Q2VsbHM6OnJldHVyblZhbHVlKToKKyAgICAgICAgKEpTQzo6R2F0aGVyRGlydHlDZWxsczo6
R2F0aGVyRGlydHlDZWxscyk6CisgICAgICAgIChKU0M6OkdhdGhlckRpcnR5Q2VsbHM6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Z2F0aGVyRGlydHlDZWxscyk6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmxvY2tzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmZvckVhY2hDZWxsKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjphbGxvY2F0ZSk6CisKIDIwMTItMDEtMjYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dpbl0gT25lIG1vcmUgc3BlY3VsYXRpdmUgYnVp
bGRmaXggYWZ0ZXIgcjEwNTk3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4MzE3OTk3NDdiOWIxYTRjZDhkNjJlZTM0MzQ2MDNhMjZhYjQ2ODUyLi5lZWM3NzhhZGRlNzU4
MTlkMDNkYWFlNmFiNjg3ZWJlY2JlYzQwYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC03Myw3ICs3Myw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCiAgICAgZGZnL0RGR1RodW5rcy5jcHAKIAotICAg
IGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcAogICAgIGhlYXAvQnVtcFNwYWNlLmNwcAogICAgIGhl
YXAvREZHQ29kZUJsb2Nrcy5jcHAKICAgICBoZWFwL0hlYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQwN2ZmMzM5ZTAxODI2NWU1NGRkMDBlYmY1
NGNkNGMxZTM3MTg5NzEuLjFmZmY5MDEyN2IxZTM0ZmQ5MWI5MTlhMDliMTVmODJiZmNmMDcxNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xNzgsOCAr
MTc4LDYgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwIFwK
LQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcEJsb2NrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0J1bXBTcGFjZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0J1bXBT
cGFjZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDRi
ZjNlZDk4OGExZDI0MmNmZDYyYjFkOGVkOTFiNDk3ZmQ5NDI2ZDcuLjMyMDk2MTViYWIwMzBmNTVh
OTc4OWIzNDEyNTc2YjFjNzg5NGVjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cApAQCAtMTI3LDYgKzEyNyw3IEBAIF9fWk4zSlNDMTFKU0J5dGVBcnJheTNwdXRF
UE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsCiBf
X1pOM0pTQzExSlNCeXRlQXJyYXk2c19pbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5N2Rlc3Ry
b3lFUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzExSlNCeXRlQXJyYXlDMUVQTlNfOUV4ZWNTdGF0ZUVQ
TlNfOVN0cnVjdHVyZUVQTjNXVEY5Qnl0ZUFycmF5RQorX19aTjNKU0MxMU1hcmtlZFNwYWNlMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOUzBfOVNpemVDbGFzc0UKIF9fWk4zSlNDMTFQYXJzZXJBcmVuYTVy
ZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU18xMFNvdXJj
ZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0ZUVycm9yRVBOU185RXhlY1N0YXRl
RVJLTlNfN1VTdHJpbmdFCkBAIC0xOTAsNyArMTkxLDYgQEAgX19aTjNKU0MxNFRpbWVvdXRDaGVj
a2VyNXJlc2V0RXYKIF9fWk4zSlNDMTRWVGFibGVTcGVjdHJ1bTVjb3VudEVQTlNfNkpTQ2VsbEUK
IF9fWk4zSlNDMTR0aHJvd1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTR0aHJv
d1R5cGVFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQotX19aTjNKU0MxNUFsbG9j
YXRpb25TcGFjZTE2YWxsb2NhdGVTbG93Q2FzZUVSTlNfMTFNYXJrZWRTcGFjZTlTaXplQ2xhc3NF
CiBfX1pOM0pTQzE1V2Vha0hhbmRsZU93bmVyMjZpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290c0VO
U182SGFuZGxlSU5TXzdVbmtub3duRUVFUHZSTlNfMTFTbG90VmlzaXRvckUKIF9fWk4zSlNDMTVX
ZWFrSGFuZGxlT3duZXI4ZmluYWxpemVFTlNfNkhhbmRsZUlOU183VW5rbm93bkVFRVB2CiBfX1pO
M0pTQzE1V2Vha0hhbmRsZU93bmVyRDJFdgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwaQppbmRleCA5YTg3NmMyMDk4ZTMwMGY3YjIyYjQzMzc0ZmNkNDM2ZTljZGYzODNl
Li5iNTliZTM4ZDk3MTJiNDFlYjk1MjZkOTQ4ZjQ1OWY3ZGJiNDRmMThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNyArMjcsNiBAQAogICAgICAg
ICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2RlL09wY29kZS5oJywK
LSAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAgICAgICAgICdoZWFw
L0J1bXBCbG9jay5oJywKICAgICAgICAgICAgICdoZWFwL0J1bXBTcGFjZS5oJywKICAgICAgICAg
ICAgICdoZWFwL0J1bXBTcGFjZUlubGluZU1ldGhvZHMuaCcsCkBAIC0zMzMsNyArMzMyLDYgQEAK
ICAgICAgICAgICAgICdieXRlY29tcGlsZXIvTGFiZWxTY29wZS5oJywKICAgICAgICAgICAgICdi
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCcsCiAgICAgICAgICAgICAnYnl0ZWNvbXBpbGVy
L1JlZ2lzdGVySUQuaCcsCi0gICAgICAgICAgICAnaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwJywK
ICAgICAgICAgICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCcsCiAgICAgICAgICAgICAn
aGVhcC9IYW5kbGVIZWFwLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9IYW5kbGVTdGFjay5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgppbmRleCA1MDk1ZDVjNmI1ZTI4MTRmODIxMTc4MWUzNTg1MTE0MGZiNDNjNjdhLi4zMmRlNGMx
NGVmODRlYzMxYWIxMjhlMjljZTRiZThhYmY2NjE0ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNjQsNyArNjQsNyBAQCBF
WFBPUlRTCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkpTR2xvYmFsRGF0YUAyQFBBVlN0cmluZ0ltcGxA
NEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxzQEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUds
b2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKICAgICA/YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VASlNP
YmplY3RASlNDQEBRQUVYQUFWSlNHbG9iYWxEYXRhQDJASUlAWgotICAgID9hbGxvY2F0ZVNsb3dD
YXNlQEFsbG9jYXRpb25TcGFjZUBKU0NAQEFBRVBBWEFBVVNpemVDbGFzc0BNYXJrZWRTcGFjZUAy
QEBaCisgICAgP2FsbG9jYXRlU2xvd0Nhc2VATWFya2VkU3BhY2VASlNDQEBBQUVQQVhBQVVTaXpl
Q2xhc3NAMTJAQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYUEJFSUBaCiAg
ICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJQFoKICAgICA/YXNjaWlAVVN0
cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBYWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBmNGE1Nzg1ZDg5Mzc1
M2FiMWMxZDM5YjYxYmIwOTI5NTVjMTBjZDRhLi5kMWUzNGIwY2IzYjY3YjM4YjdjZGZlNTI0NTU0
NWQ0ZmM1MDgzYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtMTk5OCwxNCArMTk5OCw2IEBACiAJCQlOYW1lPSJo
ZWFwIgogCQkJPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQWxsb2Nh
dGlvblNwYWNlLmNwcCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPEZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5cLi5caGVhcFxBbGxvY2F0aW9uU3BhY2UuaCIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxCdW1wQmxvY2suaCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwOGZlZTNiZGJl
ZTBlYTk1OTcwMGEwZWY5YWY2ZGYzZjc5Y2M2MzQuLjVjZTI1NGY1ODFiMDYwZDE5ZDJmZWMxNzJk
ZjQyMDM1NWQ3NTdlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NzQsOCAr
NDc0LDYgQEAKIAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdC
MjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhw
S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcx
MkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8q
IEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3
REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3Bh
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlB
NzA0NTZCMTE0MjdGQjk1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ1NkFFMTQyN0ZCMDMwMDM3
REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuY3BwICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBC
RDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVz
MzJfNjQuY3BwICovOyB9OwogCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RBbk9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzI3MDA3ODBEQUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi87IH07CiAJCUE3
MjcwMUI5MERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4
RDcgLyogRXhjZXB0aW9uSGVscGVycy5oICovOyB9OwpAQCAtMTMwNSw4ICsxMzAzLDYgQEAKIAkJ
QTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExRDc2NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3MDQ1NkFFMTQyN0ZCMDMwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2NhdGlvblNwYWNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTcwNDU2QUYxNDI3RkIxNTAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBbGxvY2F0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxMjM2
RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFi
bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcg
LyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3
NzEsOCArMTc2Nyw2IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBNzA0NTZBRTE0MjdG
QjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLywKLQkJCQlBNzA0NTZBRjE0MjdG
QjE1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi8sCiAJCQkJQzJDOEQwMkUxNEEzQ0VG
QzAwNTc4RTY1IC8qIEJ1bXBCbG9jay5oICovLAogCQkJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2
NCAvKiBCdW1wU3BhY2UuY3BwICovLAogCQkJCUMyRUFBM0Y4MTQ5QTgzMDgwMEZDRTExMiAvKiBC
dW1wU3BhY2UuaCAqLywKQEAgLTI2NDYsNyArMjY0MCw2IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk4
NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTcwNDU2QjAxNDI3RkI5MTAwMzdEQTY4IC8qIEFsbG9jYXRpb25T
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAwQjM0NDYwIC8qIEFs
d2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0NDYw
IC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NUY0MDg4MTBFN0Q1NjMwMDk0NzM2
MSAvKiBBUElTaGltcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDA2LDcgKzMzOTksNiBAQAogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJQTcwNDU2QjExNDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9j
YXRpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdB
NDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0
MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCmluZGV4IDNlZjZhYjlmNzUxZDExNWE5N2IxNjA2OWFmOTIwMmEwMjMxZWRk
NDMuLjMwN2E5YjcyZDc3M2NlODRhYjk1ZTJjZjQ4NDcyNDk1OTQyODg5YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCkBAIC02NSw3ICs2NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGJ5dGVj
b2RlL1ZhbHVlUHJvZmlsZS5jcHAgXAogICAgIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgXAogICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIFwKLSAgICBoZWFwL0Fs
bG9jYXRpb25TcGFjZS5jcHAgXAogICAgIGhlYXAvQnVtcFNwYWNlLmNwcCBcCiAgICAgaGVhcC9D
b25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAvREZHQ29kZUJsb2Nrcy5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MGYyYTI4YTVlZjNlZDc4NDAwYWYwMTRlZjIzMGU2MTMw
ZTliZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCi0KLSNpbmNsdWRlICJIZWFwLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi1pbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjp0cnlBbGxvY2F0ZShN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0gICAgbV9oZWFwLT5tX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIHZvaWQqIHJlc3VsdCA9IG1fbWFya2Vk
U3BhY2UuYWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9IE5vT3BlcmF0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQqIEFsbG9j
YXRpb25TcGFjZTo6YWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXpl
Q2xhc3MpCi17Ci0jaWYgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCi0gICAgbV9oZWFwLT5j
b2xsZWN0QWxsR2FyYmFnZSgpOwotICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBOb09wZXJhdGlvbik7Ci0jZW5kaWYKLSAgICAKLSAgICB2b2lkKiByZXN1bHQgPSB0
cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIAotICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDAp
KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAotICAgIEFsbG9jYXRpb25FZmZvcnQgYWxs
b2NhdGlvbkVmZm9ydDsKLSAgICAKLSAgICBpZiAoKAotI2lmIEVOQUJMRShHR0MpCi0gICAgICAg
ICBtX21hcmtlZFNwYWNlLm51cnNlcnlXYXRlck1hcmsoKSA8IG1faGVhcC0+bV9taW5CeXRlc1Bl
ckN5Y2xlCi0jZWxzZQotICAgICAgICAgbV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGln
aFdhdGVyTWFyaygpCi0jZW5kaWYKLSAgICAgICAgICkgfHwgIW1faGVhcC0+bV9pc1NhZmVUb0Nv
bGxlY3QpCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQ7
Ci0gICAgZWxzZQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNhbkZhaWw7
Ci0gICAgCi0gICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhzaXplQ2xhc3Mu
Y2VsbFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOwotICAgIGlmIChibG9jaykgewotICAgICAgICBt
X21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOwotICAgICAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgCi0gICAgbV9oZWFwLT5jb2xsZWN0
KEhlYXA6OkRvTm90U3dlZXApOwotICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVD
bGFzcyk7Ci0gICAgCi0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAKLSAgICBBU1NFUlQobV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFy
aygpKTsKLSAgICAKLSAgICBtX21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYWxsb2Nh
dGVCbG9jayhzaXplQ2xhc3MuY2VsbFNpemUsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCkpOwotICAg
IAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgQVNTRVJUKHJlc3Vs
dCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTWFya2VkQmxvY2sqIEFsbG9jYXRpb25TcGFj
ZTo6YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUsIEFsbG9jYXRpb25FZmZvcnQgYWxsb2Nh
dGlvbkVmZm9ydCkKLXsKLSAgICBNYXJrZWRCbG9jayogYmxvY2s7Ci0gICAgCi0gICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAg
ICBpZiAobV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcykgewotICAgICAgICAgICAgYmxvY2sg
PSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KG1faGVhcC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhl
YWQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2spOwotICAgICAgICAgICAgbV9oZWFwLT5t
X251bWJlck9mRnJlZUJsb2Nrcy0tOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJsb2Nr
ID0gMDsKLSAgICB9Ci0gICAgaWYgKGJsb2NrKQotICAgICAgICBibG9jayA9IE1hcmtlZEJsb2Nr
OjpyZWN5Y2xlKGJsb2NrLCBtX2hlYXAsIGNlbGxTaXplKTsKLSAgICBlbHNlIGlmIChhbGxvY2F0
aW9uRWZmb3J0ID09IEFsbG9jYXRpb25DYW5GYWlsKQotICAgICAgICByZXR1cm4gMDsKLSAgICBl
bHNlCi0gICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXpl
KTsKLSAgICAKLSAgICBtX2Jsb2Nrcy5hZGQoYmxvY2spOwotICAgIAotICAgIHJldHVybiBibG9j
azsKLX0KLQotdm9pZCBBbGxvY2F0aW9uU3BhY2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhl
YWQpCi17Ci0gICAgTWFya2VkQmxvY2sqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jayogYmxv
Y2sgPSBoZWFkOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBzdGF0aWNf
Y2FzdDxNYXJrZWRCbG9jayo+KGJsb2NrLT5uZXh0KCkpOwotICAgICAgICAKLSAgICAgICAgbV9i
bG9ja3MucmVtb3ZlKGJsb2NrKTsKLSAgICAgICAgYmxvY2stPnN3ZWVwKCk7Ci0gICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIG1faGVh
cC0+bV9mcmVlQmxvY2tzLmFwcGVuZChibG9jayk7Ci0gICAgICAgIG1faGVhcC0+bV9udW1iZXJP
ZkZyZWVCbG9ja3MrKzsKLSAgICB9Ci19Ci0KLWNsYXNzIFRha2VJZlVubWFya2VkIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOwotICAgIAotICAgIFRha2VJ
ZlVubWFya2VkKE1hcmtlZFNwYWNlKik7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
Kik7Ci0gICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOwotICAgIAotcHJpdmF0ZToKLSAgICBN
YXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKLSAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrPiBtX2VtcHRpZXM7Ci19OwotCi1pbmxpbmUgVGFrZUlmVW5tYXJrZWQ6OlRha2VJZlVubWFy
a2VkKE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKLSAgICA6IG1fbWFya2VkU3BhY2UobmV3U3BhY2Up
Ci17Ci19Ci0KLWlubGluZSB2b2lkIFRha2VJZlVubWFya2VkOjpvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKiBibG9jaykKLXsKLSAgICBpZiAoIWJsb2NrLT5tYXJrQ291bnRJc1plcm8oKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJsb2NrKGJsb2NrKTsK
LSAgICBtX2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKLX0KLQotaW5saW5lIFRha2VJZlVubWFya2Vk
OjpSZXR1cm5UeXBlIFRha2VJZlVubWFya2VkOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0dXJu
IG1fZW1wdGllcy5oZWFkKCk7Ci19Ci0KLXZvaWQgQWxsb2NhdGlvblNwYWNlOjpzaHJpbmsoKQot
ewotICAgIC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQg
bW9kaWZ5aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KLSAgICBUYWtlSWZVbm1hcmtl
ZCB0YWtlSWZVbm1hcmtlZCgmbV9tYXJrZWRTcGFjZSk7Ci0gICAgZnJlZUJsb2Nrcyhmb3JFYWNo
QmxvY2sodGFrZUlmVW5tYXJrZWQpKTsKLX0KLQotI2lmIEVOQUJMRShHR0MpCi1jbGFzcyBHYXRo
ZXJEaXJ0eUNlbGxzIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYXRoZXJEaXJ0eUNlbGxz
KTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQqIFJldHVyblR5cGU7Ci0gICAgCi0gICAgZXhw
bGljaXQgR2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yKik7Ci0g
ICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7Ci0gICAgUmV0dXJuVHlwZSByZXR1cm5W
YWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgTWFya2VkQmxvY2s6OkRp
cnR5Q2VsbFZlY3RvciogbV9kaXJ0eUNlbGxzOwotfTsKLQotaW5saW5lIEdhdGhlckRpcnR5Q2Vs
bHM6OkdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3RvciogZGlydHlD
ZWxscykKLSAgICA6IG1fZGlydHlDZWxscyhkaXJ0eUNlbGxzKQotewotfQotCi1pbmxpbmUgdm9p
ZCBHYXRoZXJEaXJ0eUNlbGxzOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKLXsKLSAg
ICBibG9jay0+Z2F0aGVyRGlydHlDZWxscygqbV9kaXJ0eUNlbGxzKTsKLX0KLQotdm9pZCBBbGxv
Y2F0aW9uU3BhY2U6OmdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3Rv
ciYgZGlydHlDZWxscykKLXsKLSAgICBHYXRoZXJEaXJ0eUNlbGxzIGdhdGhlckRpcnR5Q2VsbHMo
JmRpcnR5Q2VsbHMpOwotICAgIGZvckVhY2hCbG9jayhnYXRoZXJEaXJ0eUNlbGxzKTsKLX0KLSNl
bmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWE2YjVhM2U0MTViNjgxMmZlNjA5MWEy
MzczZDVlZTc1YjRhOTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFsbG9jYXRp
b25TcGFjZV9oCi0jZGVmaW5lIEFsbG9jYXRpb25TcGFjZV9oCi0KLSNpbmNsdWRlICJNYXJrZWRC
bG9ja1NldC5oIgotI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCi0KLSNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSGVhcDsKLWNsYXNzIE1hcmtlZEJs
b2NrOwotCi1jbGFzcyBBbGxvY2F0aW9uU3BhY2UgewotcHVibGljOgotICAgIEFsbG9jYXRpb25T
cGFjZShIZWFwKiBoZWFwKQotICAgICAgICA6IG1faGVhcChoZWFwKQotICAgICAgICAsIG1fbWFy
a2VkU3BhY2UoaGVhcCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIHR5cGVkZWYgSGFzaFNldDxN
YXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOwotICAgIAotICAgIE1hcmtlZEJs
b2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Jsb2NrczsgfQotICAgIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fbWFya2VkU3Bh
Y2Uuc2l6ZUNsYXNzRm9yKGJ5dGVzKTsgfQotICAgIHNpemVfdCB3YXRlck1hcmsoKSB7IHJldHVy
biBtX21hcmtlZFNwYWNlLndhdGVyTWFyaygpOyB9Ci0KLSNpZiBFTkFCTEUoR0dDKQotICAgIHZv
aWQgZ2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9yJik7Ci0jZW5k
aWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJl
dHVyblR5cGUgZm9yRWFjaENlbGwoRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZv
ckVhY2hCbG9jayhGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlw
ZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKLSAgICAKLSAgICB2b2lk
IGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKSB7IG1fbWFya2VkU3BhY2UuY2Fub25pY2Fs
aXplQ2VsbExpdmVuZXNzRGF0YSgpOyB9Ci0gICAgdm9pZCByZXNldEFsbG9jYXRvcigpIHsgbV9t
YXJrZWRTcGFjZS5yZXNldEFsbG9jYXRvcigpOyB9Ci0gICAgCi0gICAgdm9pZCogYWxsb2NhdGUo
c2l6ZV90KTsKLSAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIHNo
cmluaygpOwotICAgIAotcHJpdmF0ZToKLSAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxv
Y2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07Ci0KLSAgICB2b2lkKiBhbGxv
Y2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFy
a2VkU3BhY2U6OlNpemVDbGFzcyYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9j
YXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwotICAgIE1hcmtlZEJsb2NrKiBh
bGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgCi0g
ICAgSGVhcCogbV9oZWFwOwotICAgIE1hcmtlZFNwYWNlIG1fbWFya2VkU3BhY2U7Ci0gICAgTWFy
a2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVh
Y2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi17Ci0gICAgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNz
RGF0YSgpOwotCi0gICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsK
LSAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5mb3JFYWNoQ2VsbChmdW5jdG9yKTsKLSAgICBy
ZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6
OmZvckVhY2hDZWxsKCkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVh
Y2hDZWxsKGZ1bmN0b3IpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hCbG9j
ayhGdW5jdG9yJiBmdW5jdG9yKQotewotICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Mu
c2V0KCkuZW5kKCk7Ci0gICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBmdW5jdG9yKCppdCk7Ci0gICAgcmV0
dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpm
b3JFYWNoQmxvY2soKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwotfQotCi1pbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxv
Y2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi17Ci0gICAgLy8gVGhpcyBp
cyBhIGxpZ2h0LXdlaWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2Uu
Ci0gICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZp
cnN0RnJlZUNlbGw7Ci0gICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKLSAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKLSAgICAKLSAgICBzaXplQ2xhc3Mu
Zmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7Ci0gICAgcmV0dXJuIGZpcnN0RnJl
ZUNlbGw7Ci19Ci0KLWlubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlKHNpemVf
dCBieXRlcykKLXsKLSAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBzaXpl
Q2xhc3NGb3IoYnl0ZXMpOwotICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQnVtcFNw
YWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3BhY2UuaAppbmRleCAxZmZj
YjQ2ODAzYWM3MTEwMWY4MDg0Nzg1NTYwNmVkOGE5YTc2MDkyLi4zMGU2Yjc0ZmU4OWJjM2Q4OTdh
ZjE4OGRmMWZhNTI5NmFhMTBlY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CdW1wU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CdW1wU3Bh
Y2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBCdW1wU3BhY2VfaAogI2RlZmluZSBCdW1w
U3BhY2VfaAogCisjaW5jbHVkZSAiSGVhcEJsb2NrLmgiCiAjaW5jbHVkZSAiVGlueUJsb29tRmls
dGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZEJvb2xlYW4uaD4KQEAgLTY2LDggKzY3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBCdW1wQmxv
Y2sqIGJsb2NrRm9yKHZvaWQqKTsKIAogcHJpdmF0ZToKLSAgICBlbnVtIEFsbG9jYXRpb25FZmZv
cnQgeyBBbGxvY2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07Ci0KICAgICBD
aGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCwgdm9pZCoqKTsKICAgICBD
aGVja2VkQm9vbGVhbiBhZGROZXdCbG9jaygpOwogICAgIENoZWNrZWRCb29sZWFuIGFsbG9jYXRl
TmV3QmxvY2soQnVtcEJsb2NrKiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDQ0
YTZmODYzOGM4YWFjMTU5NDc3YTIzYzlmZWE4OWFiM2NiNjNjOTYuLjQwYTgzNzZmMDE2YTNiNTI1
MTJlNjZhM2U1YmQ0OGNkYTI4NWY4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAg
LTIyLDcgKzIyLDYgQEAKICNpZm5kZWYgSGVhcF9oCiAjZGVmaW5lIEhlYXBfaAogCi0jaW5jbHVk
ZSAiQWxsb2NhdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1
ZGUgIkhhbmRsZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgpAQCAtODYsNyArODUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0
cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgp
LgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2xvYmFsRGF0YTsgfQotICAgICAgICBBbGxvY2F0aW9uU3BhY2UmIG9iamVjdFNwYWNlKCkgeyBy
ZXR1cm4gbV9vYmplY3RTcGFjZTsgfQorICAgICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2Uo
KSB7IHJldHVybiBtX29iamVjdFNwYWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNo
aW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7IH0KIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKQEAg
LTEzNiw4ICsxMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2
YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZEJsb2NrOwotICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwog
ICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xv
dFZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CkBAIC0xOTEsNyArMTkw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBtX2hpZ2hXYXRlck1hcms7CiAg
ICAgICAgIAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9uSW5Qcm9ncmVz
czsKLSAgICAgICAgQWxsb2NhdGlvblNwYWNlIG1fb2JqZWN0U3BhY2U7CisgICAgICAgIE1hcmtl
ZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgICAgIEJ1bXBTcGFjZSBtX3N0b3JhZ2VTcGFjZTsK
IAogICAgICAgICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4gbV9mcmVlQmxvY2tzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaAppbmRleCAxZDY2YWFkZTk5MGY1NjhjM2Zi
MTYxZjZmMmE1MjdkYWRmN2NlYTAxLi5iMGVjYjIwNTk1NmNjZjc0M2UyYmNkY2Y0MDgzYzU2M2U1
ZDY0MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaApAQCAtMzEsNiAr
MzEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxs
b2NhdGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9OworCiBjbGFzcyBIZWFwQmxv
Y2sgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8SGVhcEJsb2NrPiB7CiBwdWJsaWM6CiAg
ICAgSGVhcEJsb2NrKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCBjMTJlOWJhOWRmMjcwMDAx
ZDFmMTI3MjhhN2Q1NzQzYjcxYmRjYjIyLi5mY2NhMTg4ZTQ3MTdhM2RlYzViNTNiYjdhZGZiNzgz
MmJjN2UwODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CkBAIC04MSw0ICs4MSwxOTIgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQ2VsbExp
dmVuZXNzRGF0YSgpCiAgICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuemFwRnJlZUxpc3Qo
KTsKIH0KIAoraW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjp0cnlBbGxvY2F0ZUhlbHBlcihNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCit7CisgICAgTWFya2VkQmxvY2s6OkZyZWVD
ZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7CisgICAgaWYgKCFm
aXJzdEZyZWVDZWxsKSB7CisgICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9IHNpemVD
bGFzcy5jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2Nr
Kj4oYmxvY2stPm5leHQoKSkpIHsKKyAgICAgICAgICAgIGZpcnN0RnJlZUNlbGwgPSBibG9jay0+
c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7CisgICAgICAgICAgICBpZiAoZmly
c3RGcmVlQ2VsbCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fbnVyc2Vy
eVdhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7CisgICAgICAg
ICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKKyAgICAgICAgICAgIGJsb2Nr
LT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZmlyc3RG
cmVlQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEFTU0VSVChmaXJz
dEZyZWVDZWxsKTsKKyAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwt
Pm5leHQ7CisgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Cit9CisKK2lubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6dHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQor
eworICAgIG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKKyAgICB2
b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZUhlbHBlcihzaXplQ2xhc3MpOworICAgIG1faGVhcC0+
bV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYgc2l6ZUNsYXNzKQoreworI2lmIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTgor
ICAgIG1faGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICBBU1NFUlQobV9oZWFwLT5tX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworI2VuZGlmCisgICAgCisgICAgdm9p
ZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAKKyAgICBpZiAoTElLRUxZ
KHJlc3VsdCAhPSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKKyAgICBBbGxvY2F0
aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7CisgICAgCisgICAgaWYgKCgKKyNpZiBFTkFCTEUo
R0dDKQorICAgICAgICAgbnVyc2VyeVdhdGVyTWFyaygpIDwgbV9oZWFwLT5tX21pbkJ5dGVzUGVy
Q3ljbGUKKyNlbHNlCisgICAgICAgICBtX2hlYXAtPndhdGVyTWFyaygpIDwgbV9oZWFwLT5oaWdo
V2F0ZXJNYXJrKCkKKyNlbmRpZgorICAgICAgICAgKSB8fCAhbV9oZWFwLT5tX2lzU2FmZVRvQ29s
bGVjdCkKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2VlZDsK
KyAgICBlbHNlCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFpbDsK
KyAgICAKKyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5j
ZWxsU2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7CisgICAgaWYgKGJsb2NrKSB7CisgICAgICAgIGFk
ZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOworICAgICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxv
Y2F0ZShzaXplQ2xhc3MpOworICAgICAgICBBU1NFUlQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgbV9oZWFwLT5jb2xsZWN0KEhlYXA6OkRvTm90U3dl
ZXApOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgCisg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAKKyAgICBBU1NFUlQo
bV9oZWFwLT53YXRlck1hcmsoKSA8IG1faGVhcC0+aGlnaFdhdGVyTWFyaygpKTsKKyAgICAKKyAg
ICBhZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBB
bGxvY2F0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShz
aXplQ2xhc3MpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K01hcmtlZEJsb2NrKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUs
IEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCkKK3sKKyAgICBNYXJrZWRCbG9jayog
YmxvY2s7CisgICAgCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5t
X2ZyZWVCbG9ja0xvY2spOworICAgICAgICBpZiAobV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nr
cykgeworICAgICAgICAgICAgYmxvY2sgPSBzdGF0aWNfY2FzdDxNYXJrZWRCbG9jayo+KG1faGVh
cC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKSk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2sp
OworICAgICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nrcy0tOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGJsb2NrID0gMDsKKyAgICB9CisgICAgaWYgKGJsb2NrKQorICAg
ICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpyZWN5Y2xlKGJsb2NrLCBtX2hlYXAsIGNlbGxTaXpl
KTsKKyAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFsbG9jYXRpb25DYW5GYWlsKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAgIGJsb2NrID0gTWFya2VkQmxvY2s6
OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsKKyAgICAKKyAgICBtX2Jsb2Nrcy5hZGQoYmxvY2sp
OworICAgIAorICAgIHJldHVybiBibG9jazsKK30KKwordm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJs
b2NrcyhNYXJrZWRCbG9jayogaGVhZCkKK3sKKyAgICBNYXJrZWRCbG9jayogbmV4dDsKKyAgICBm
b3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IGhlYWQ7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKKyAg
ICAgICAgbmV4dCA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4oYmxvY2stPm5leHQoKSk7Cisg
ICAgICAgIAorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBibG9jay0+
c3dlZXAoKTsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tM
b2NrKTsKKyAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICAg
ICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOworICAgIH0KK30KKworY2xhc3MgVGFr
ZUlmVW5tYXJrZWQgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFya2VkQmxvY2sqIFJldHVyblR5
cGU7CisgICAgCisgICAgVGFrZUlmVW5tYXJrZWQoTWFya2VkU3BhY2UqKTsKKyAgICB2b2lkIG9w
ZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKKyAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7Cisg
ICAgCitwcml2YXRlOgorICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIERvdWJs
eUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fZW1wdGllczsKK307CisKK2lubGluZSBUYWtlSWZV
bm1hcmtlZDo6VGFrZUlmVW5tYXJrZWQoTWFya2VkU3BhY2UqIG5ld1NwYWNlKQorICAgIDogbV9t
YXJrZWRTcGFjZShuZXdTcGFjZSkKK3sKK30KKworaW5saW5lIHZvaWQgVGFrZUlmVW5tYXJrZWQ6
Om9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQoreworICAgIGlmICghYmxvY2stPm1hcmtD
b3VudElzWmVybygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+
cmVtb3ZlQmxvY2soYmxvY2spOworICAgIG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOworfQorCitp
bmxpbmUgVGFrZUlmVW5tYXJrZWQ6OlJldHVyblR5cGUgVGFrZUlmVW5tYXJrZWQ6OnJldHVyblZh
bHVlKCkKK3sKKyAgICByZXR1cm4gbV9lbXB0aWVzLmhlYWQoKTsKK30KKwordm9pZCBNYXJrZWRT
cGFjZTo6c2hyaW5rKCkKK3sKKyAgICAvLyBXZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBl
bXB0aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBtX2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCisg
ICAgVGFrZUlmVW5tYXJrZWQgdGFrZUlmVW5tYXJrZWQodGhpcyk7CisgICAgZnJlZUJsb2Nrcyhm
b3JFYWNoQmxvY2sodGFrZUlmVW5tYXJrZWQpKTsKK30KKworI2lmIEVOQUJMRShHR0MpCitjbGFz
cyBHYXRoZXJEaXJ0eUNlbGxzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHYXRoZXJEaXJ0
eUNlbGxzKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQqIFJldHVyblR5cGU7CisgICAgCisg
ICAgZXhwbGljaXQgR2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVjdG9y
Kik7CisgICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKik7CisgICAgUmV0dXJuVHlwZSBy
ZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgTWFya2VkQmxv
Y2s6OkRpcnR5Q2VsbFZlY3RvciogbV9kaXJ0eUNlbGxzOworfTsKKworaW5saW5lIEdhdGhlckRp
cnR5Q2VsbHM6OkdhdGhlckRpcnR5Q2VsbHMoTWFya2VkQmxvY2s6OkRpcnR5Q2VsbFZlY3Rvciog
ZGlydHlDZWxscykKKyAgICA6IG1fZGlydHlDZWxscyhkaXJ0eUNlbGxzKQoreworfQorCitpbmxp
bmUgdm9pZCBHYXRoZXJEaXJ0eUNlbGxzOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykK
K3sKKyAgICBibG9jay0+Z2F0aGVyRGlydHlDZWxscygqbV9kaXJ0eUNlbGxzKTsKK30KKwordm9p
ZCBNYXJrZWRTcGFjZTo6Z2F0aGVyRGlydHlDZWxscyhNYXJrZWRCbG9jazo6RGlydHlDZWxsVmVj
dG9yJiBkaXJ0eUNlbGxzKQoreworICAgIEdhdGhlckRpcnR5Q2VsbHMgZ2F0aGVyRGlydHlDZWxs
cygmZGlydHlDZWxscyk7CisgICAgZm9yRWFjaEJsb2NrKGdhdGhlckRpcnR5Q2VsbHMpOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgKaW5kZXggM2IyYzgyOGY3N2Y1ZDNlM2U0YjRkOGM2NmY1OTU4ZmVlN2ZkYzNj
Yy4uMDg1NGVmYzZjYmUxODliZjMzZTc5ZDk2ZTdhNzg3YTY2ODc3Y2RjNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiUGFnZUFsbG9jYXRpb25BbGlnbmVk
LmgiCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRM
aXN0Lmg+CkBAIC02MSwyMiArNjIsMzYgQEAgcHVibGljOgogICAgIE1hcmtlZFNwYWNlKEhlYXAq
KTsKIAogICAgIFNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7CisgICAgdm9pZCogYWxs
b2NhdGUoc2l6ZV90KTsKICAgICB2b2lkKiBhbGxvY2F0ZShTaXplQ2xhc3MmKTsKICAgICAKICAg
ICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKICAgICB2b2lkIGFkZEJsb2NrKFNpemVDbGFzcyYs
IE1hcmtlZEJsb2NrKik7CiAgICAgdm9pZCByZW1vdmVCbG9jayhNYXJrZWRCbG9jayopOworICAg
IE1hcmtlZEJsb2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Jsb2NrczsgfQogICAgIAogICAg
IHZvaWQgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogCiAgICAgc2l6ZV90IHdhdGVy
TWFyaygpOwogICAgIHNpemVfdCBudXJzZXJ5V2F0ZXJNYXJrKCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9j
ayhGdW5jdG9yJik7IC8vIFNhZmUgdG8gcmVtb3ZlIHRoZSBjdXJyZW50IGl0ZW0gd2hpbGUgaXRl
cmF0aW5nLgorICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9j
a0l0ZXJhdG9yOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoRnVuY3RvciYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENl
bGwoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKKyAg
ICAKKyAgICB2b2lkIHNocmluaygpOworICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayog
aGVhZCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3Mm
KTsKKyAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CisgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOworICAgIE1h
cmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNpemVfdCwgQWxsb2NhdGlvbkVmZm9ydCk7CisKICAg
ICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9
IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VD
dXRvZmYgPSAyNTY7CkBAIC05Miw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3dh
dGVyTWFyazsKICAgICBzaXplX3QgbV9udXJzZXJ5V2F0ZXJNYXJrOwogICAgIEhlYXAqIG1faGVh
cDsKKyAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKIH07CiAKIGlubGluZSBzaXplX3QgTWFy
a2VkU3BhY2U6OndhdGVyTWFyaygpCkBAIC0xMDQsNiArMTIwLDIyIEBAIGlubGluZSBzaXplX3Qg
TWFya2VkU3BhY2U6Om51cnNlcnlXYXRlck1hcmsoKQogICAgIHJldHVybiBtX251cnNlcnlXYXRl
ck1hcms7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBG
dW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5j
dG9yKQoreworICAgIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKKworICAgIEJsb2Nr
SXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJh
dG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICAoKml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJu
VmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hDZWxsKCkKK3sKKyAgICBG
dW5jdG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOworfQorCiBp
bmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgTWFya2VkU3BhY2U6OnNpemVDbGFzc0Zvcihz
aXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzICYmIGJ5dGVzIDw9IG1heENlbGxTaXpl
KTsKQEAgLTExMiwyNSArMTQ0LDE5IEBAIGlubGluZSBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBN
YXJrZWRTcGFjZTo6c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKICAgICByZXR1cm4gbV9pbXBy
ZWNpc2VTaXplQ2xhc3Nlc1soYnl0ZXMgLSAxKSAvIGltcHJlY2lzZVN0ZXBdOwogfQogCitpbmxp
bmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKK3sKKyAgICBTaXpl
Q2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgcmV0dXJuIGFsbG9j
YXRlKHNpemVDbGFzcyk7Cit9CisKIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGUo
U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCiB7CisgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdlaWdodCBm
YXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCiAgICAgTWFya2VkQmxvY2s6
OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0gICAg
aWYgKCFmaXJzdEZyZWVDZWxsKSB7Ci0gICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9
IHNpemVDbGFzcy5jdXJyZW50QmxvY2s7IGJsb2NrOyBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtl
ZEJsb2NrKj4oYmxvY2stPm5leHQoKSkpIHsKLSAgICAgICAgICAgIGZpcnN0RnJlZUNlbGwgPSBi
bG9jay0+c3dlZXAoTWFya2VkQmxvY2s6OlN3ZWVwVG9GcmVlTGlzdCk7Ci0gICAgICAgICAgICBp
ZiAoZmlyc3RGcmVlQ2VsbCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG1f
bnVyc2VyeVdhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKSAtIGJsb2NrLT5zaXplKCk7Ci0g
ICAgICAgICAgICBtX3dhdGVyTWFyayArPSBibG9jay0+Y2FwYWNpdHkoKTsKLSAgICAgICAgICAg
IGJsb2NrLT5kaWRDb25zdW1lRnJlZUxpc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
Zmlyc3RGcmVlQ2VsbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEFTU0VS
VChmaXJzdEZyZWVDZWxsKTsKLQorICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCisg
ICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVDbGFzcyk7CisgICAgCiAgICAgc2l6
ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJzdEZyZWVDZWxsLT5uZXh0OwogICAgIHJldHVybiBm
aXJzdEZyZWVDZWxsOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>