<?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>128203</bug_id>
          
          <creation_ts>2014-02-04 12:09:16 -0800</creation_ts>
          <short_desc>Refactor MarkStackArray to allow more than JSCells to be stored</short_desc>
          <delta_ts>2014-02-04 16:03:56 -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>
          
          <blocked>128202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976470</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 12:09:16 -0800</bug_when>
    <thetext>This is in preparation for bug 128202.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976473</commentid>
    <comment_count>1</comment_count>
      <attachid>223151</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 12:27:33 -0800</bug_when>
    <thetext>Created attachment 223151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976486</commentid>
    <comment_count>2</comment_count>
      <attachid>223155</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 13:21:16 -0800</bug_when>
    <thetext>Created attachment 223155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976489</commentid>
    <comment_count>3</comment_count>
      <attachid>223155</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-04 13:31:21 -0800</bug_when>
    <thetext>Comment on attachment 223155
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976565</commentid>
    <comment_count>4</comment_count>
      <attachid>223155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 16:03:52 -0800</bug_when>
    <thetext>Comment on attachment 223155
Patch

Clearing flags on attachment: 223155

Committed r163414: &lt;http://trac.webkit.org/changeset/163414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976566</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-04 16:03:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223151</attachid>
            <date>2014-02-04 12:27:33 -0800</date>
            <delta_ts>2014-02-04 13:21:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128203-20140204122724.patch</filename>
            <type>text/plain</type>
            <size>37155</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE0LTAyLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgTWFya1N0YWNrQXJyYXkgdG8gYWxsb3cgbW9yZSB0aGFuIEpTQ2Vs
bHMgdG8gYmUgc3RvcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgyMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBNYXJrU3RhY2tBcnJheSBpbnRvIGEgc2VwYXJh
dGUgdGVtcGxhdGUgY2xhc3MgbmFtZWQgR0NTZWdtZW50ZWRBcnJheS4KKyAgICAgICAgVGhpcyBj
bGFzcyBhbGxvd3Mgc3ViY2xhc3NpbmcgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdGhhdCBvbmx5IE1h
cmtTdGFja0FycmF5IHdhbnRzLgorICAgICAgICBTaW5jZSBpdCB1c2VzIHRoZSBKU0MgQmxvY2tB
bGxvY2F0b3IgaW5zdGVhZCBvZiBGYXN0TWFsbG9jLCB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGR1
cmluZyAKKyAgICAgICAgY29uc2VydmF0aXZlIHN0YWNrIHNjYW5uaW5nLCB3aGljaCBkaXNhbGxv
d3MgdXNpbmcgRmFzdE1hbGxvYy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9CbG9ja0FsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvR0NT
ZWdtZW50ZWRBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NBcnJheVNlZ21lbnQ6OkdD
QXJyYXlTZWdtZW50KToKKyAgICAgICAgKEpTQzo6R0NBcnJheVNlZ21lbnQ6OmRhdGEpOgorICAg
ICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OkdDU2VnbWVudGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp+R0NTZWdtZW50ZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkdDU2VnbWVudGVkQXJyYXk8VD46OmNsZWFyKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRB
cnJheTxUPjo6ZXhwYW5kKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6cmVm
aWxsKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6ZmlsbFZlY3Rvcik6Cisg
ICAgICAgIChKU0M6OkdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
Q1NlZ21lbnRlZEFycmF5PFQ+Ojpwb3N0SW5jVG9wKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50
ZWRBcnJheTxUPjo6cHJlRGVjVG9wKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxU
Pjo6c2V0VG9wRm9yRnVsbFNlZ21lbnQpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5
PFQ+OjpzZXRUb3BGb3JFbXB0eVNlZ21lbnQpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFy
cmF5PFQ+Ojp0b3ApOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp2YWxpZGF0
ZVByZXZpb3VzKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6YXBwZW5kKToK
KyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6Y2FuUmVtb3ZlTGFzdCk6CisgICAg
ICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OnJlbW92ZUxhc3QpOgorICAgICAgICAoSlND
OjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50
ZWRBcnJheTxUPjo6c2l6ZSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpN
YXJrU3RhY2tBcnJheTo6fk1hcmtTdGFja0FycmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
QXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6
OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAg
ICAgKiBoZWFwL01hcmtTdGFja0lubGluZXMuaDoKKwogMjAxNC0wMi0wNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTdHJpbmc6OmdldENo
YXJhY3RlcnMgdG8gU3RyaW5nOjpjaGFyYWN0ZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYzMzkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUxMiw2ICs1
MTIsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9EZWZlckdDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVm
ZXJHQy5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNj
b3BlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIFwKQEAgLTU1NCw3
ICs1NTYsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGluZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTYzMzkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAwOCw2ICsxMDA4LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGhlYXBcQ29weVdyaXRlQmFycmllci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGVhcFxEZWZlckdDLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XERlbGF5ZWRSZWxlYXNlU2NvcGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NTZWdtZW50ZWRBcnJheS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxHQ0Fzc2VydGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NUaHJlYWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NUaHJl
YWRTaGFyZWREYXRhLmgiIC8+CkBAIC0xMDM0LDcgKzEwMzYsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxNYXJrZWRCbG9ja1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxNYXJrZWRTcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxNYXJrU3RhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBc
TWFya1N0YWNrSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxS
ZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcUmVnaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNsb3RW
aXNpdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NTUsNiArMTY1NSwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVu
dGVkQXJyYXkuaCI+CisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGlu
ZXMuaCI+CisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBc3NlcnRpb25zLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNzMzLDkgKzE3MzksNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrU3RhY2suaCI+CiAgICAgICA8
RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGhlYXBcTWFya1N0YWNrSW5saW5lcy5oIj4KLSAgICAgIDxGaWx0ZXI+aGVhcDwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQwLDYgKzc0MCw4
IEBACiAJCTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5oICovOyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJl
bGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2NvcGUuaCAqLzsg
fTsKKwkJMkEzNDNGNzYxOEExNzQ4QjAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMzQzRjc0MThBMTc0
OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi87IH07CisJCTJBMzQzRjc4MThBMTc0
OUQwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi87IH07CiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2
NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oICovOyB9OwogCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVC
YXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBNEVDOTA5MTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3Bw
ICovOyB9OwogCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkw
QTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMDUsNyArMTMwNyw2IEBACiAJ
CUMyMEJBOTJEMTZCQjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMEJBOTJDMTZC
QjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjExMjJFMTE1REQ5QUIzMDA3
OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkRFMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVh
ZFNoYXJlZERhdGEuY3BwICovOyB9OwogCQlDMjExMjJFMjE1REQ5QUIzMDA3OTBFM0EgLyogR0NU
aHJlYWRTaGFyZWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjExMjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQzIxMTIy
RTMxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkUwMTVERDlBQjMwMDc5MEUzQSAv
KiBNYXJrU3RhY2tJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
QjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMThEMTQwMTY1NUNGRDUw
MDYyQkI4MSAvKiBDb3B5V29ya0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyMThEMTNGMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjIz
OUQxNzE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyMzlEMTIxNjI2MkJERDAwNUFDNUZEIC8q
IENvcHlWaXNpdG9yLmNwcCAqLzsgfTsKQEAgLTIxMjUsNiArMjEyNiw4IEBACiAJCTI2MDBCNUE0
MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTI4MjVDRjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVs
YXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxh
eWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMzQzRjc0
MThBMTc0OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdDU2VnbWVudGVkQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDU2VnbWVudGVkQXJyYXlJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTA5MTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJCdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE2ODI5NUExODc1RjgwNTAwQjZDM0Uy
IC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjczNCw3
ICsyNzM3LDYgQEAKIAkJQzIwQkE5MkMxNkJCMUMxNTAwQjNBRUEyIC8qIFN0cnVjdHVyZVJhcmVE
YXRhSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ1RocmVhZFNoYXJlZERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjExMjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRT
aGFyZWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDVGhyZWFkU2hh
cmVkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjExMjJFMDE1REQ5QUIz
MDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrU3RhY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUNhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxOEQxM0YxNjU1Q0ZENTAwNjJCQjgxIC8qIENvcHlX
b3JrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5V29ya0xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyMzlEMTIxNjI2MkJERDAwNUFDNUZE
IC8qIENvcHlWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvcHlWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNjAsNyAr
MzM2Miw2IEBACiAJCQkJMTREMkYzRDkxMzlGNEJFMjAwNDkxMDMxIC8qIE1hcmtlZFNwYWNlLmgg
Ki8sCiAJCQkJMTQyRDZGMEUxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5jcHAgKi8sCiAJ
CQkJMTQyRDZGMEYxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAotCQkJCUMyMTEy
MkUwMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJbmxpbmVzLmggKi8sCiAJCQkJQzIwQjI1
OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lvbi5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RCQUEw
MDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3
QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCkBAIC0zMzg4LDYgKzMzODksOCBAQAogCQkJCTJBMjgy
NUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi8sCiAJCQkJMkFB
RDk2NDkxODU2OTQxNzAwMUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovLAog
CQkJCTJBNjgyOTVBMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi8sCisJ
CQkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXkuaCAqLywKKwkJ
CQkyQTM0M0Y3NzE4QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gaGVhcDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC00NjY4LDYgKzQ2NzEsNyBAQAogCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9j
a0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2RjVDRDAwQjM0NDYw
IC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QkExNUVBMTgyMzQwQjQw
MEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTJBMzQzRjc2MThBMTc0OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVj
b2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTE3MSw3ICs1MTc1LDYgQEAKIAkJ
CQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIxMzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQzIxMTIyRTMxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTk1MTgyNDc5RUIwMENDMzg0MyAvKiBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTJFNENEMTUy
Mzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBF
MjExODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAq
LywKQEAgLTUyMTUsNiArNTIxOCw3IEBACiAJCQkJMEY5RkM4QzQxNEUxQjYwMDAwRDUyQUUwIC8q
IFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTgyMDYxMTZC
RkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkEzNDNGNzgxOEExNzQ5RDAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MDBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGMzYxODIwMjBENzAwMkM5QjI2IC8qIFByb2Zp
bGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgJ
KHJldmlzaW9uIDE2MzM5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxs
b2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgQmxvY2tBbGxvY2F0b3I7CiBjbGFzcyBDb3BpZWRCbG9jazsKIGNsYXNzIENvcHlX
b3JrTGlzdFNlZ21lbnQ7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR0NBcnJheVNlZ21l
bnQ7CiBjbGFzcyBIYW5kbGVCbG9jazsKK2NsYXNzIEpTQ2VsbDsKIGNsYXNzIFZNOwotY2xhc3Mg
TWFya1N0YWNrU2VnbWVudDsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgV2Vha0Jsb2NrOwog
CkBAIC05NSw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgU3VwZXJSZWdpb24gbV9zdXBlclJlZ2lv
bjsKICAgICBSZWdpb25TZXQgbV9jb3BpZWRSZWdpb25TZXQ7CiAgICAgUmVnaW9uU2V0IG1fbWFy
a2VkUmVnaW9uU2V0OwotICAgIC8vIFdlYWtCbG9ja3MgYW5kIE1hcmtTdGFja1NlZ21lbnRzIHVz
ZSB0aGUgc2FtZSBSZWdpb25TZXQgc2luY2UgdGhleSdyZSB0aGUgc2FtZSBzaXplLgorICAgIC8v
IFdlYWtCbG9ja3MgYW5kIEdDQXJyYXlTZWdtZW50cyB1c2UgdGhlIHNhbWUgUmVnaW9uU2V0IHNp
bmNlIHRoZXkncmUgdGhlIHNhbWUgc2l6ZS4KICAgICBSZWdpb25TZXQgbV9mb3VyS0JCbG9ja1Jl
Z2lvblNldDsKICAgICBSZWdpb25TZXQgbV93b3JrTGlzdFJlZ2lvblNldDsKIApAQCAtMjM1LDcg
KzIzNiw3IEBAIGlubGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0EKIH0KIAog
dGVtcGxhdGUgPD4KLWlubGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9j
YXRvcjo6cmVnaW9uU2V0Rm9yPE1hcmtTdGFja1NlZ21lbnQ+KCkKK2lubGluZSBCbG9ja0FsbG9j
YXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEdDQXJyYXlTZWdt
ZW50PGNvbnN0IEpTQ2VsbCo+PigpCiB7CiAgICAgcmV0dXJuIG1fZm91cktCQmxvY2tSZWdpb25T
ZXQ7CiB9CkBAIC0yNzEsNyArMjcyLDcgQEAgaW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25T
ZXQmIEJsb2NrQQogfQogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdp
b25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8SGVhcEJsb2NrPE1hcmtTdGFja1Nl
Z21lbnQ+PigpCitpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0
b3I6OnJlZ2lvblNldEZvcjxIZWFwQmxvY2s8R0NBcnJheVNlZ21lbnQ8Y29uc3QgSlNDZWxsKj4+
PigpCiB7CiAgICAgcmV0dXJuIG1fZm91cktCQmxvY2tSZWdpb25TZXQ7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHQ1NlZ21l
bnRlZEFycmF5X2gKKyNkZWZpbmUgR0NTZWdtZW50ZWRBcnJheV9oCisKKyNpbmNsdWRlICJIZWFw
QmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBCbG9ja0FsbG9jYXRvcjsKK2NsYXNzIERlYWRCbG9jazsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBHQ0FycmF5U2VnbWVudCA6IHB1YmxpYyBIZWFwQmxvY2s8R0NBcnJheVNl
Z21lbnQ8VD4+IHsKK3B1YmxpYzoKKyAgICBHQ0FycmF5U2VnbWVudChSZWdpb24qIHJlZ2lvbikK
KyAgICAgICAgOiBIZWFwQmxvY2s8R0NBcnJheVNlZ21lbnQ+KHJlZ2lvbikKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgICAgICwgbV90b3AoMCkKKyNlbmRpZgorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgR0NBcnJheVNlZ21lbnQqIGNyZWF0ZShEZWFkQmxvY2sqKTsKKworICAgIFQqIGRh
dGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4odGhpcyArIDEpOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNCAqIEtCOworCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIHNpemVfdCBtX3RvcDsKKyNlbmRpZgorfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBHQ1NlZ21lbnRlZEFycmF5IHsKK3B1YmxpYzoKKyAg
ICBHQ1NlZ21lbnRlZEFycmF5KEJsb2NrQWxsb2NhdG9yJik7CisgICAgfkdDU2VnbWVudGVkQXJy
YXkoKTsKKworICAgIHZvaWQgYXBwZW5kKFQpOworCisgICAgYm9vbCBjYW5SZW1vdmVMYXN0KCk7
CisgICAgY29uc3QgVCByZW1vdmVMYXN0KCk7CisgICAgYm9vbCByZWZpbGwoKTsKKyAgICAKKyAg
ICBzaXplX3Qgc2l6ZSgpOworICAgIGJvb2wgaXNFbXB0eSgpOworCisgICAgdm9pZCBmaWxsVmVj
dG9yKFZlY3RvcjxUPiYpOworICAgIHZvaWQgY2xlYXIoKTsKKworcHJvdGVjdGVkOgorICAgIHRl
bXBsYXRlIDxzaXplX3Qgc2l6ZT4gc3RydWN0IENhcGFjaXR5RnJvbVNpemUgeworICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHZhbHVlID0gKHNpemUgLSBzaXplb2YoR0NBcnJheVNlZ21lbnQ8
VD4pKSAvIHNpemVvZihUKTsKKyAgICB9OworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBl
eHBhbmQoKTsKKyAgICAKKyAgICBzaXplX3QgcG9zdEluY1RvcCgpOworICAgIHNpemVfdCBwcmVE
ZWNUb3AoKTsKKyAgICB2b2lkIHNldFRvcEZvckZ1bGxTZWdtZW50KCk7CisgICAgdm9pZCBzZXRU
b3BGb3JFbXB0eVNlZ21lbnQoKTsKKyAgICBzaXplX3QgdG9wKCk7CisgICAgCisgICAgdm9pZCB2
YWxpZGF0ZVByZXZpb3VzKCk7CisKKyAgICBEb3VibHlMaW5rZWRMaXN0PEdDQXJyYXlTZWdtZW50
PFQ+PiBtX3NlZ21lbnRzOworICAgIEJsb2NrQWxsb2NhdG9yJiBtX2Jsb2NrQWxsb2NhdG9yOwor
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGNvbnN0IHNpemVfdCBzX3NlZ21lbnRDYXBh
Y2l0eSA9IENhcGFjaXR5RnJvbVNpemU8R0NBcnJheVNlZ21lbnQ8VD46OmJsb2NrU2l6ZT46OnZh
bHVlOworICAgIHNpemVfdCBtX3RvcDsKKyAgICBzaXplX3QgbV9udW1iZXJPZlNlZ21lbnRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBHQ1NlZ21lbnRlZEFycmF5X2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRB
cnJheUlubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzX2gKKyNkZWZp
bmUgR0NTZWdtZW50ZWRBcnJheUlubGluZXNfaAorCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3Iu
aCIKKyNpbmNsdWRlICJHQ1NlZ21lbnRlZEFycmF5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0dDU2VnbWVudGVkQXJyYXk8VD46OkdDU2VnbWVudGVkQXJy
YXkoQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKQorICAgIDogbV9ibG9ja0FsbG9jYXRv
cihibG9ja0FsbG9jYXRvcikKKyAgICAsIG1fdG9wKDApCisgICAgLCBtX251bWJlck9mU2VnbWVu
dHMoMCkKK3sKKyAgICBtX3NlZ21lbnRzLnB1c2goR0NBcnJheVNlZ21lbnQ8VD46OmNyZWF0ZSht
X2Jsb2NrQWxsb2NhdG9yLmFsbG9jYXRlPEdDQXJyYXlTZWdtZW50PFQ+PigpKSk7CisgICAgbV9u
dW1iZXJPZlNlZ21lbnRzKys7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorR0NTZWdtZW50
ZWRBcnJheTxUPjo6fkdDU2VnbWVudGVkQXJyYXkoKQoreworICAgIEFTU0VSVChtX251bWJlck9m
U2VnbWVudHMgPT0gMSk7CisgICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOworICAg
IG1fYmxvY2tBbGxvY2F0b3IuZGVhbGxvY2F0ZShHQ0FycmF5U2VnbWVudDxUPjo6ZGVzdHJveSht
X3NlZ21lbnRzLnJlbW92ZUhlYWQoKSkpOworICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOworICAg
IEFTU0VSVCghbV9udW1iZXJPZlNlZ21lbnRzKTsKKyAgICBBU1NFUlQoIW1fc2VnbWVudHMuc2l6
ZSgpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIEdDU2VnbWVudGVkQXJyYXk8
VD46OmNsZWFyKCkKK3sKKyAgICBpZiAoIW1fc2VnbWVudHMuaGVhZCgpKQorICAgICAgICByZXR1
cm47CisgICAgR0NBcnJheVNlZ21lbnQ8VD4qIG5leHQ7CisgICAgZm9yIChHQ0FycmF5U2VnbWVu
dDxUPiogY3VycmVudCA9IG1fc2VnbWVudHMuaGVhZCgpOyBjdXJyZW50LT5uZXh0KCk7IGN1cnJl
bnQgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7CisgICAgICAgIG1f
c2VnbWVudHMucmVtb3ZlKGN1cnJlbnQpOworICAgICAgICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxs
b2NhdGUoR0NBcnJheVNlZ21lbnQ8VD46OmRlc3Ryb3koY3VycmVudCkpOworICAgIH0KKyAgICBt
X3RvcCA9IDA7CisgICAgbV9udW1iZXJPZlNlZ21lbnRzID0gMTsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID0gMDsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6ZXhwYW5kKCkKK3sK
KyAgICBBU1NFUlQobV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID09IHNfc2VnbWVudENhcGFjaXR5
KTsKKyAgICAKKyAgICBHQ0FycmF5U2VnbWVudDxUPiogbmV4dFNlZ21lbnQgPSBHQ0FycmF5U2Vn
bWVudDxUPjo6Y3JlYXRlKG1fYmxvY2tBbGxvY2F0b3IuYWxsb2NhdGU8R0NBcnJheVNlZ21lbnQ8
VD4+KCkpOworICAgIG1fbnVtYmVyT2ZTZWdtZW50cysrOworICAgIAorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBuZXh0U2VnbWVudC0+bV90b3AgPSAwOworI2VuZGlmCisKKyAgICBtX3NlZ21l
bnRzLnB1c2gobmV4dFNlZ21lbnQpOworICAgIHNldFRvcEZvckVtcHR5U2VnbWVudCgpOworICAg
IHZhbGlkYXRlUHJldmlvdXMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIEdD
U2VnbWVudGVkQXJyYXk8VD46OnJlZmlsbCgpCit7CisgICAgdmFsaWRhdGVQcmV2aW91cygpOwor
ICAgIGlmICh0b3AoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgbV9ibG9ja0FsbG9jYXRv
ci5kZWFsbG9jYXRlKEdDQXJyYXlTZWdtZW50PFQ+OjpkZXN0cm95KG1fc2VnbWVudHMucmVtb3Zl
SGVhZCgpKSk7CisgICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA+IDEpOworICAgIG1fbnVt
YmVyT2ZTZWdtZW50cy0tOworICAgIHNldFRvcEZvckZ1bGxTZWdtZW50KCk7CisgICAgdmFsaWRh
dGVQcmV2aW91cygpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6ZmlsbFZlY3RvcihWZWN0b3I8VD4mIHZlY3Rv
cikKK3sKKyAgICBBU1NFUlQodmVjdG9yLnNpemUoKSA9PSBzaXplKCkpOworCisgICAgR0NBcnJh
eVNlZ21lbnQ8VD4qIGN1cnJlbnRTZWdtZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7CisgICAgaWYg
KCFjdXJyZW50U2VnbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgY291bnQg
PSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RvcDsgKytpKSB7CisgICAgICAg
IEFTU0VSVChjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldKTsKKyAgICAgICAgdmVjdG9yW2NvdW50
KytdID0gY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXTsKKyAgICB9CisKKyAgICBjdXJyZW50U2Vn
bWVudCA9IGN1cnJlbnRTZWdtZW50LT5uZXh0KCk7CisgICAgd2hpbGUgKGN1cnJlbnRTZWdtZW50
KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX3NlZ21lbnRDYXBhY2l0eTsg
KytpKSB7CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXSk7Cisg
ICAgICAgICAgICB2ZWN0b3JbY291bnQrK10gPSBjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldOwor
ICAgICAgICB9CisgICAgICAgIGN1cnJlbnRTZWdtZW50ID0gY3VycmVudFNlZ21lbnQtPm5leHQo
KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIEdDQXJyYXlTZWdt
ZW50PFQ+KiBHQ0FycmF5U2VnbWVudDxUPjo6Y3JlYXRlKERlYWRCbG9jayogYmxvY2spCit7Cisg
ICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYmxvY2spIEdDQXJyYXlTZWdtZW50PFQ+KGJsb2NrLT5y
ZWdpb24oKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHNpemVfdCBHQ1Nl
Z21lbnRlZEFycmF5PFQ+Ojpwb3N0SW5jVG9wKCkKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gbV90
b3ArKzsKKyAgICBBU1NFUlQocmVzdWx0ID09IG1fc2VnbWVudHMuaGVhZCgpLT5tX3RvcCsrKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBz
aXplX3QgR0NTZWdtZW50ZWRBcnJheTxUPjo6cHJlRGVjVG9wKCkKK3sKKyAgICBzaXplX3QgcmVz
dWx0ID0gLS1tX3RvcDsKKyAgICBBU1NFUlQocmVzdWx0ID09IC0tbV9zZWdtZW50cy5oZWFkKCkt
Pm1fdG9wKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2lubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnNldFRvcEZvckZ1bGxTZWdtZW50KCkK
K3sKKyAgICBBU1NFUlQobV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID09IHNfc2VnbWVudENhcGFj
aXR5KTsKKyAgICBtX3RvcCA9IHNfc2VnbWVudENhcGFjaXR5OworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnNldFRvcEZvckVtcHR5
U2VnbWVudCgpCit7CisgICAgQVNTRVJUKCFtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3ApOworICAg
IG1fdG9wID0gMDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgc2l6ZV90IEdD
U2VnbWVudGVkQXJyYXk8VD46OnRvcCgpCit7CisgICAgQVNTRVJUKG1fdG9wID09IG1fc2VnbWVu
dHMuaGVhZCgpLT5tX3RvcCk7CisgICAgcmV0dXJuIG1fdG9wOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyNpZiBBU1NFUlRfRElTQUJMRUQKK2lubGluZSB2b2lkIEdDU2VnbWVudGVkQXJy
YXk8VD46OnZhbGlkYXRlUHJldmlvdXMoKSB7IH0KKyNlbHNlCitpbmxpbmUgdm9pZCBHQ1NlZ21l
bnRlZEFycmF5PFQ+Ojp2YWxpZGF0ZVByZXZpb3VzKCkKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9
IDA7CisgICAgZm9yIChHQ0FycmF5U2VnbWVudDxUPiogY3VycmVudCA9IG1fc2VnbWVudHMuaGVh
ZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKQorICAgICAgICBjb3VudCsr
OworICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSBtX251bWJlck9mU2VnbWVudHMpOwor
fQorI2VuZGlmCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgR0NTZWdtZW50
ZWRBcnJheTxUPjo6YXBwZW5kKFQgdmFsdWUpCit7CisgICAgaWYgKG1fdG9wID09IHNfc2VnbWVu
dENhcGFjaXR5KQorICAgICAgICBleHBhbmQoKTsKKyAgICBtX3NlZ21lbnRzLmhlYWQoKS0+ZGF0
YSgpW3Bvc3RJbmNUb3AoKV0gPSB2YWx1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citp
bmxpbmUgYm9vbCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpjYW5SZW1vdmVMYXN0KCkKK3sKKyAgICBy
ZXR1cm4gISFtX3RvcDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgY29uc3Qg
VCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpyZW1vdmVMYXN0KCkKK3sKKyAgICByZXR1cm4gbV9zZWdt
ZW50cy5oZWFkKCktPmRhdGEoKVtwcmVEZWNUb3AoKV07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIGJvb2wgR0NTZWdtZW50ZWRBcnJheTxUPjo6aXNFbXB0eSgpCit7CisgICAg
aWYgKG1fdG9wKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fc2VnbWVudHMuaGVh
ZCgpLT5uZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fc2VnbWVudHMuaGVhZCgpLT5uZXh0KCkt
Pm1fdG9wID09IHNfc2VnbWVudENhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUg
c2l6ZV90IEdDU2VnbWVudGVkQXJyYXk8VD46OnNpemUoKQoreworICAgIHJldHVybiBtX3RvcCAr
IHNfc2VnbWVudENhcGFjaXR5ICogKG1fbnVtYmVyT2ZTZWdtZW50cyAtIDEpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTYz
MzkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsOTAgKzI1LDEyIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJNYXJrU3RhY2suaCIKLSNpbmNsdWRlICJNYXJrU3RhY2tJbmxpbmVzLmgiCi0KLSNpbmNs
dWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgotI2luY2x1ZGUgIkNvcGllZFNwYWNlLmgiCi0jaW5j
bHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUg
IkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgot
Ci0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlLmgi
Ci0jaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCi1DT01QSUxFX0FTU0VSVChNYXJrU3RhY2tTZWdtZW50OjpibG9ja1Np
emUgPT0gV2Vha0Jsb2NrOjpibG9ja1NpemUsIGJsb2NrU2l6ZU1hdGNoKTsKLQogTWFya1N0YWNr
QXJyYXk6Ok1hcmtTdGFja0FycmF5KEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcikKLSAg
ICA6IG1fYmxvY2tBbGxvY2F0b3IoYmxvY2tBbGxvY2F0b3IpCi0gICAgLCBtX3RvcCgwKQotICAg
ICwgbV9udW1iZXJPZlNlZ21lbnRzKDApCi17Ci0gICAgbV9zZWdtZW50cy5wdXNoKE1hcmtTdGFj
a1NlZ21lbnQ6OmNyZWF0ZShtX2Jsb2NrQWxsb2NhdG9yLmFsbG9jYXRlPE1hcmtTdGFja1NlZ21l
bnQ+KCkpKTsKLSAgICBtX251bWJlck9mU2VnbWVudHMrKzsKLX0KLQotTWFya1N0YWNrQXJyYXk6
On5NYXJrU3RhY2tBcnJheSgpCi17Ci0gICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA9PSAx
KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgbV9ibG9ja0FsbG9j
YXRvci5kZWFsbG9jYXRlKE1hcmtTdGFja1NlZ21lbnQ6OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1v
dmVIZWFkKCkpKTsKLSAgICBtX251bWJlck9mU2VnbWVudHMtLTsKLSAgICBBU1NFUlQoIW1fbnVt
YmVyT2ZTZWdtZW50cyk7Ci0gICAgQVNTRVJUKCFtX3NlZ21lbnRzLnNpemUoKSk7Ci19Ci0KLXZv
aWQgTWFya1N0YWNrQXJyYXk6OmNsZWFyKCkKLXsKLSAgICBpZiAoIW1fc2VnbWVudHMuaGVhZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgTWFya1N0YWNrU2VnbWVudCogbmV4dDsKLSAgICBmb3Ig
KE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBtX3NlZ21lbnRzLmhlYWQoKTsgY3VycmVudC0+
bmV4dCgpOyBjdXJyZW50ID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dCgp
OwotICAgICAgICBtX3NlZ21lbnRzLnJlbW92ZShjdXJyZW50KTsKLSAgICAgICAgbV9ibG9ja0Fs
bG9jYXRvci5kZWFsbG9jYXRlKE1hcmtTdGFja1NlZ21lbnQ6OmRlc3Ryb3koY3VycmVudCkpOwot
ICAgIH0KLSAgICBtX3RvcCA9IDA7Ci0gICAgbV9udW1iZXJPZlNlZ21lbnRzID0gMTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID0gMDsKLSNlbmRp
ZgotfQotCi12b2lkIE1hcmtTdGFja0FycmF5OjpleHBhbmQoKQotewotICAgIEFTU0VSVChtX3Nl
Z21lbnRzLmhlYWQoKS0+bV90b3AgPT0gc19zZWdtZW50Q2FwYWNpdHkpOwotICAgIAotICAgIE1h
cmtTdGFja1NlZ21lbnQqIG5leHRTZWdtZW50ID0gTWFya1N0YWNrU2VnbWVudDo6Y3JlYXRlKG1f
YmxvY2tBbGxvY2F0b3IuYWxsb2NhdGU8TWFya1N0YWNrU2VnbWVudD4oKSk7Ci0gICAgbV9udW1i
ZXJPZlNlZ21lbnRzKys7Ci0gICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIG5leHRTZWdt
ZW50LT5tX3RvcCA9IDA7Ci0jZW5kaWYKLQotICAgIG1fc2VnbWVudHMucHVzaChuZXh0U2VnbWVu
dCk7Ci0gICAgc2V0VG9wRm9yRW1wdHlTZWdtZW50KCk7Ci0gICAgdmFsaWRhdGVQcmV2aW91cygp
OwotfQotCi1ib29sIE1hcmtTdGFja0FycmF5OjpyZWZpbGwoKQorICAgIDogR0NTZWdtZW50ZWRB
cnJheTxjb25zdCBKU0NlbGwqPihibG9ja0FsbG9jYXRvcikKIHsKLSAgICB2YWxpZGF0ZVByZXZp
b3VzKCk7Ci0gICAgaWYgKHRvcCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBtX2Jsb2Nr
QWxsb2NhdG9yLmRlYWxsb2NhdGUoTWFya1N0YWNrU2VnbWVudDo6ZGVzdHJveShtX3NlZ21lbnRz
LnJlbW92ZUhlYWQoKSkpOwotICAgIEFTU0VSVChtX251bWJlck9mU2VnbWVudHMgPiAxKTsKLSAg
ICBtX251bWJlck9mU2VnbWVudHMtLTsKLSAgICBzZXRUb3BGb3JGdWxsU2VnbWVudCgpOwotICAg
IHZhbGlkYXRlUHJldmlvdXMoKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBNYXJrU3Rh
Y2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTWFya1N0YWNrQXJyYXkmIG90aGVyKQpAQCAtMTMz
LDExICs1NSwxMSBAQCB2b2lkIE1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHNUbyhNCiAK
ICAgICAvLyBSZW1vdmUgb3VyIGhlYWQgYW5kIHRoZSBoZWFkIG9mIHRoZSBvdGhlciBsaXN0IGJl
Zm9yZSB3ZSBzdGFydCBtb3Zpbmcgc2VnbWVudHMgYXJvdW5kLgogICAgIC8vIFdlJ2xsIGFkZCB0
aGVtIGJhY2sgb24gb25jZSB3ZSdyZSBkb25lIGRvbmF0aW5nLgotICAgIE1hcmtTdGFja1NlZ21l
bnQqIG15SGVhZCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOwotICAgIE1hcmtTdGFja1NlZ21l
bnQqIG90aGVySGVhZCA9IG90aGVyLm1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAgIEdDQXJy
YXlTZWdtZW50PGNvbnN0IEpTQ2VsbCo+KiBteUhlYWQgPSBtX3NlZ21lbnRzLnJlbW92ZUhlYWQo
KTsKKyAgICBHQ0FycmF5U2VnbWVudDxjb25zdCBKU0NlbGwqPiogb3RoZXJIZWFkID0gb3RoZXIu
bV9zZWdtZW50cy5yZW1vdmVIZWFkKCk7CiAKICAgICB3aGlsZSAoc2VnbWVudHNUb0RvbmF0ZS0t
KSB7Ci0gICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBtX3NlZ21lbnRzLnJlbW92
ZUhlYWQoKTsKKyAgICAgICAgR0NBcnJheVNlZ21lbnQ8Y29uc3QgSlNDZWxsKj4qIGN1cnJlbnQg
PSBtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKICAgICAgICAgQVNTRVJUKGN1cnJlbnQpOwogICAg
ICAgICBBU1NFUlQobV9udW1iZXJPZlNlZ21lbnRzID4gMSk7CiAgICAgICAgIG90aGVyLm1fc2Vn
bWVudHMucHVzaChjdXJyZW50KTsKQEAgLTE2NSw4ICs4Nyw4IEBAIHZvaWQgTWFya1N0YWNrQXJy
YXk6OnN0ZWFsU29tZUNlbGxzRnJvbSgKICAgICAvLyBJZiBvdGhlciBoYXMgYW4gZW50aXJlIHNl
Z21lbnQsIHN0ZWFsIGl0IGFuZCByZXR1cm4uCiAgICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZTZWdt
ZW50cyA+IDEpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgaGVhZHMgb2YgdGhlIGxpc3RzIGFzaWRl
LiBXZSdsbCBwdXNoIHRoZW0gYmFjayBvbiBhZnRlci4KLSAgICAgICAgTWFya1N0YWNrU2VnbWVu
dCogb3RoZXJIZWFkID0gb3RoZXIubV9zZWdtZW50cy5yZW1vdmVIZWFkKCk7Ci0gICAgICAgIE1h
cmtTdGFja1NlZ21lbnQqIG15SGVhZCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAgICAg
ICBHQ0FycmF5U2VnbWVudDxjb25zdCBKU0NlbGwqPiogb3RoZXJIZWFkID0gb3RoZXIubV9zZWdt
ZW50cy5yZW1vdmVIZWFkKCk7CisgICAgICAgIEdDQXJyYXlTZWdtZW50PGNvbnN0IEpTQ2VsbCo+
KiBteUhlYWQgPSBtX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKIAogICAgICAgICBBU1NFUlQob3Ro
ZXIubV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID09IHNfc2VnbWVudENhcGFjaXR5KTsKIApAQCAt
MTg4LDI4ICsxMTAsNCBAQCB2b2lkIE1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20o
CiAgICAgICAgIGFwcGVuZChvdGhlci5yZW1vdmVMYXN0KCkpOwogfQogCi12b2lkIE1hcmtTdGFj
a0FycmF5OjpmaWxsVmVjdG9yKFZlY3Rvcjxjb25zdCBKU0NlbGwqPiYgdmVjdG9yKQotewotICAg
IEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IHNpemUoKSk7Ci0KLSAgICBNYXJrU3RhY2tTZWdtZW50
KiBjdXJyZW50U2VnbWVudCA9IG1fc2VnbWVudHMuaGVhZCgpOwotICAgIGlmICghY3VycmVudFNl
Z21lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90b3A7ICsraSkgewotICAgICAgICBBU1NFUlQoY3Vy
cmVudFNlZ21lbnQtPmRhdGEoKVtpXSk7Ci0gICAgICAgIHZlY3Rvcltjb3VudCsrXSA9IGN1cnJl
bnRTZWdtZW50LT5kYXRhKClbaV07Ci0gICAgfQotCi0gICAgY3VycmVudFNlZ21lbnQgPSBjdXJy
ZW50U2VnbWVudC0+bmV4dCgpOwotICAgIHdoaWxlIChjdXJyZW50U2VnbWVudCkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc19zZWdtZW50Q2FwYWNpdHk7ICsraSkgewotICAg
ICAgICAgICAgQVNTRVJUKGN1cnJlbnRTZWdtZW50LT5kYXRhKClbaV0pOwotICAgICAgICAgICAg
dmVjdG9yW2NvdW50KytdID0gY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXTsKLSAgICAgICAgfQot
ICAgICAgICBjdXJyZW50U2VnbWVudCA9IGN1cnJlbnRTZWdtZW50LT5uZXh0KCk7Ci0gICAgfQot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCShyZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTAsODIgKzUwLDE4IEBACiAjZGVmaW5l
IE1BUktfTE9HX0NISUxEKHZpc2l0b3IsIGNoaWxkKSBkbyB7IH0gd2hpbGUgKGZhbHNlKQogI2Vu
ZGlmCiAKLSNpbmNsdWRlICJIZWFwQmxvY2suaCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXlJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBCbG9ja0FsbG9jYXRvcjsKLWNs
YXNzIERlYWRCbG9jazsKIGNsYXNzIEpTQ2VsbDsKIAotY2xhc3MgTWFya1N0YWNrU2VnbWVudCA6
IHB1YmxpYyBIZWFwQmxvY2s8TWFya1N0YWNrU2VnbWVudD4gewotcHVibGljOgotICAgIE1hcmtT
dGFja1NlZ21lbnQoUmVnaW9uKiByZWdpb24pCi0gICAgICAgIDogSGVhcEJsb2NrPE1hcmtTdGFj
a1NlZ21lbnQ+KHJlZ2lvbikKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgICwgbV90b3Ao
MCkKLSNlbmRpZgotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgTWFya1N0YWNrU2VnbWVudCog
Y3JlYXRlKERlYWRCbG9jayopOwotCi0gICAgY29uc3QgSlNDZWxsKiogZGF0YSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNvbnN0IEpTQ2VsbCoqPih0aGlzICsgMSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSA0ICogS0I7Ci0KLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgc2l6ZV90IG1fdG9wOwotI2VuZGlmCi19OwotCi1jbGFz
cyBNYXJrU3RhY2tBcnJheSB7CitjbGFzcyBNYXJrU3RhY2tBcnJheSA6IHB1YmxpYyBHQ1NlZ21l
bnRlZEFycmF5PGNvbnN0IEpTQ2VsbCo+IHsKIHB1YmxpYzoKICAgICBNYXJrU3RhY2tBcnJheShC
bG9ja0FsbG9jYXRvciYpOwotICAgIH5NYXJrU3RhY2tBcnJheSgpOwotCi0gICAgdm9pZCBhcHBl
bmQoY29uc3QgSlNDZWxsKik7CiAKLSAgICBib29sIGNhblJlbW92ZUxhc3QoKTsKLSAgICBjb25z
dCBKU0NlbGwqIHJlbW92ZUxhc3QoKTsKLSAgICBib29sIHJlZmlsbCgpOwotICAgIAogICAgIHZv
aWQgZG9uYXRlU29tZUNlbGxzVG8oTWFya1N0YWNrQXJyYXkmIG90aGVyKTsKICAgICB2b2lkIHN0
ZWFsU29tZUNlbGxzRnJvbShNYXJrU3RhY2tBcnJheSYgb3RoZXIsIHNpemVfdCBpZGxlVGhyZWFk
Q291bnQpOwotCi0gICAgc2l6ZV90IHNpemUoKTsKLSAgICBib29sIGlzRW1wdHkoKTsKLQotICAg
IHZvaWQgZmlsbFZlY3RvcihWZWN0b3I8Y29uc3QgSlNDZWxsKj4mKTsKLSAgICB2b2lkIGNsZWFy
KCk7Ci0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGUgPHNpemVfdCBzaXplPiBzdHJ1Y3QgQ2FwYWNp
dHlGcm9tU2l6ZSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmFsdWUgPSAoc2l6ZSAt
IHNpemVvZihNYXJrU3RhY2tTZWdtZW50KSkgLyBzaXplb2YoY29uc3QgSlNDZWxsKik7Ci0gICAg
fTsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZXhwYW5kKCk7Ci0gICAgCi0gICAgc2l6
ZV90IHBvc3RJbmNUb3AoKTsKLSAgICBzaXplX3QgcHJlRGVjVG9wKCk7Ci0gICAgdm9pZCBzZXRU
b3BGb3JGdWxsU2VnbWVudCgpOwotICAgIHZvaWQgc2V0VG9wRm9yRW1wdHlTZWdtZW50KCk7Ci0g
ICAgc2l6ZV90IHRvcCgpOwotICAgIAotICAgIHZvaWQgdmFsaWRhdGVQcmV2aW91cygpOwotCi0g
ICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrU3RhY2tTZWdtZW50PiBtX3NlZ21lbnRzOwotICAgIEJs
b2NrQWxsb2NhdG9yJiBtX2Jsb2NrQWxsb2NhdG9yOwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGNvbnN0IHNpemVfdCBzX3NlZ21lbnRDYXBhY2l0eSA9IENhcGFjaXR5RnJvbVNpemU8
TWFya1N0YWNrU2VnbWVudDo6YmxvY2tTaXplPjo6dmFsdWU7Ci0gICAgc2l6ZV90IG1fdG9wOwot
ICAgIHNpemVfdCBtX251bWJlck9mU2VnbWVudHM7Ci0gICAKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGlu
ZXMuaAkocmV2aXNpb24gMTYzMzkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWFy
a1N0YWNrSW5saW5lc19oCi0jZGVmaW5lIE1hcmtTdGFja0lubGluZXNfaAotCi0jaW5jbHVkZSAi
R0NUaHJlYWRTaGFyZWREYXRhLmgiCi0jaW5jbHVkZSAiTWFya1N0YWNrLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1pbmxpbmUgTWFya1N0YWNrU2VnbWVudCogTWFya1N0YWNrU2VnbWVudDo6Y3Jl
YXRlKERlYWRCbG9jayogYmxvY2spCi17Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYmxvY2sp
IE1hcmtTdGFja1NlZ21lbnQoYmxvY2stPnJlZ2lvbigpKTsKLX0KLQotaW5saW5lIHNpemVfdCBN
YXJrU3RhY2tBcnJheTo6cG9zdEluY1RvcCgpCi17Ci0gICAgc2l6ZV90IHJlc3VsdCA9IG1fdG9w
Kys7Ci0gICAgQVNTRVJUKHJlc3VsdCA9PSBtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3ArKyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5lIHNpemVfdCBNYXJrU3RhY2tBcnJheTo6cHJl
RGVjVG9wKCkKLXsKLSAgICBzaXplX3QgcmVzdWx0ID0gLS1tX3RvcDsKLSAgICBBU1NFUlQocmVz
dWx0ID09IC0tbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1pbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJheTo6c2V0VG9wRm9yRnVsbFNlZ21lbnQoKQot
ewotICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPT0gc19zZWdtZW50Q2FwYWNp
dHkpOwotICAgIG1fdG9wID0gc19zZWdtZW50Q2FwYWNpdHk7Ci19Ci0KLWlubGluZSB2b2lkIE1h
cmtTdGFja0FycmF5OjpzZXRUb3BGb3JFbXB0eVNlZ21lbnQoKQotewotICAgIEFTU0VSVCghbV9z
ZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKLSAgICBtX3RvcCA9IDA7Ci19Ci0KLWlubGluZSBzaXpl
X3QgTWFya1N0YWNrQXJyYXk6OnRvcCgpCi17Ci0gICAgQVNTRVJUKG1fdG9wID09IG1fc2VnbWVu
dHMuaGVhZCgpLT5tX3RvcCk7Ci0gICAgcmV0dXJuIG1fdG9wOwotfQotCi0jaWYgQVNTRVJUX0RJ
U0FCTEVECi1pbmxpbmUgdm9pZCBNYXJrU3RhY2tBcnJheTo6dmFsaWRhdGVQcmV2aW91cygpIHsg
fQotI2Vsc2UKLWlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5Ojp2YWxpZGF0ZVByZXZpb3VzKCkK
LXsKLSAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgZm9yIChNYXJrU3RhY2tTZWdtZW50KiBj
dXJyZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5u
ZXh0KCkpCi0gICAgICAgIGNvdW50Kys7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09
IG1fbnVtYmVyT2ZTZWdtZW50cyk7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgTWFya1N0YWNr
QXJyYXk6OmFwcGVuZChjb25zdCBKU0NlbGwqIGNlbGwpCi17Ci0gICAgaWYgKG1fdG9wID09IHNf
c2VnbWVudENhcGFjaXR5KQotICAgICAgICBleHBhbmQoKTsKLSAgICBtX3NlZ21lbnRzLmhlYWQo
KS0+ZGF0YSgpW3Bvc3RJbmNUb3AoKV0gPSBjZWxsOwotfQotCi1pbmxpbmUgYm9vbCBNYXJrU3Rh
Y2tBcnJheTo6Y2FuUmVtb3ZlTGFzdCgpCi17Ci0gICAgcmV0dXJuICEhbV90b3A7Ci19Ci0KLWlu
bGluZSBjb25zdCBKU0NlbGwqIE1hcmtTdGFja0FycmF5OjpyZW1vdmVMYXN0KCkKLXsKLSAgICBy
ZXR1cm4gbV9zZWdtZW50cy5oZWFkKCktPmRhdGEoKVtwcmVEZWNUb3AoKV07Ci19Ci0KLWlubGlu
ZSBib29sIE1hcmtTdGFja0FycmF5Ojppc0VtcHR5KCkKLXsKLSAgICBpZiAobV90b3ApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9zZWdtZW50cy5oZWFkKCktPm5leHQoKSkgewot
ICAgICAgICBBU1NFUlQobV9zZWdtZW50cy5oZWFkKCktPm5leHQoKS0+bV90b3AgPT0gc19zZWdt
ZW50Q2FwYWNpdHkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi1pbmxpbmUgc2l6ZV90IE1hcmtTdGFja0FycmF5OjpzaXplKCkKLXsKLSAgICBy
ZXR1cm4gbV90b3AgKyBzX3NlZ21lbnRDYXBhY2l0eSAqIChtX251bWJlck9mU2VnbWVudHMgLSAx
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBNYXJrU3RhY2tJbmxpbmVz
X2gKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCShyZXZp
c2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw5IEBACiAKICNpbmNsdWRlICJDb3B5VG9rZW4u
aCIKICNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgotI2luY2x1ZGUgIk1hcmtTdGFja0lubGluZXMu
aCIKKyNpbmNsdWRlICJNYXJrU3RhY2suaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM3
LDkgKzM4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiBj
bGFzcyBHQ1RocmVhZFNoYXJlZERhdGE7CiBjbGFzcyBIZWFwOwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgSklUV3JpdGVCYXJyaWVyOworY2xhc3MgVW5jb25kaXRpb25hbEZpbmFsaXplcjsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CitjbGFzcyBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEpJVFdyaXRlQmFycmllcjsKIAogY2xhc3MgU2xvdFZp
c2l0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNsb3RWaXNpdG9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223155</attachid>
            <date>2014-02-04 13:21:16 -0800</date>
            <delta_ts>2014-02-04 16:03:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128203-20140204132106.patch</filename>
            <type>text/plain</type>
            <size>36770</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMzk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE0LTAyLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgTWFya1N0YWNrQXJyYXkgdG8gYWxsb3cgbW9yZSB0aGFuIEpTQ2Vs
bHMgdG8gYmUgc3RvcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgyMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBNYXJrU3RhY2tBcnJheSBpbnRvIGEgc2VwYXJh
dGUgdGVtcGxhdGUgY2xhc3MgbmFtZWQgR0NTZWdtZW50ZWRBcnJheS4KKyAgICAgICAgVGhpcyBj
bGFzcyBhbGxvd3Mgc3ViY2xhc3NpbmcgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdGhhdCBvbmx5IE1h
cmtTdGFja0FycmF5IHdhbnRzLgorICAgICAgICBTaW5jZSBpdCB1c2VzIHRoZSBKU0MgQmxvY2tB
bGxvY2F0b3IgaW5zdGVhZCBvZiBGYXN0TWFsbG9jLCB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGR1
cmluZyAKKyAgICAgICAgY29uc2VydmF0aXZlIHN0YWNrIHNjYW5uaW5nLCB3aGljaCBkaXNhbGxv
d3MgdXNpbmcgRmFzdE1hbGxvYy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9CbG9ja0FsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvR0NT
ZWdtZW50ZWRBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6R0NBcnJheVNlZ21lbnQ6OkdD
QXJyYXlTZWdtZW50KToKKyAgICAgICAgKEpTQzo6R0NBcnJheVNlZ21lbnQ6OmRhdGEpOgorICAg
ICAgICAqIGhlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OkdDU2VnbWVudGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp+R0NTZWdtZW50ZWRBcnJheSk6CisgICAgICAgIChKU0M6
OkdDU2VnbWVudGVkQXJyYXk8VD46OmNsZWFyKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRB
cnJheTxUPjo6ZXhwYW5kKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6cmVm
aWxsKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6ZmlsbFZlY3Rvcik6Cisg
ICAgICAgIChKU0M6OkdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpH
Q1NlZ21lbnRlZEFycmF5PFQ+Ojpwb3N0SW5jVG9wKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50
ZWRBcnJheTxUPjo6cHJlRGVjVG9wKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxU
Pjo6c2V0VG9wRm9yRnVsbFNlZ21lbnQpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5
PFQ+OjpzZXRUb3BGb3JFbXB0eVNlZ21lbnQpOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFy
cmF5PFQ+Ojp0b3ApOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp2YWxpZGF0
ZVByZXZpb3VzKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6YXBwZW5kKToK
KyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6Y2FuUmVtb3ZlTGFzdCk6CisgICAg
ICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OnJlbW92ZUxhc3QpOgorICAgICAgICAoSlND
OjpHQ1NlZ21lbnRlZEFycmF5PFQ+Ojppc0VtcHR5KToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50
ZWRBcnJheTxUPjo6c2l6ZSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpN
YXJrU3RhY2tBcnJheTo6fk1hcmtTdGFja0FycmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
QXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6
OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAg
ICAgKiBoZWFwL01hcmtTdGFja0lubGluZXMuaDoKKwogMjAxNC0wMi0wNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTdHJpbmc6OmdldENo
YXJhY3RlcnMgdG8gU3RyaW5nOjpjaGFyYWN0ZXJzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYzMzkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUxMiw2ICs1
MTIsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9EZWZlckdDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVm
ZXJHQy5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNj
b3BlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDSW5jb21pbmdSZWZDb3VudGVkSW5saW5lcy5oIFwKQEAgLTU1NCw3
ICs1NTYsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFja0lubGluZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTYzMzkyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTAwOCw2ICsxMDA4LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGhlYXBcQ29weVdyaXRlQmFycmllci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caGVhcFxEZWZlckdDLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XERlbGF5ZWRSZWxlYXNlU2NvcGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NTZWdtZW50ZWRBcnJheS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxHQ0Fzc2VydGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcR0NUaHJlYWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NUaHJl
YWRTaGFyZWREYXRhLmgiIC8+CkBAIC0xMDM0LDcgKzEwMzYsNiBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxNYXJrZWRCbG9ja1NldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxNYXJrZWRTcGFjZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxNYXJrU3RhY2suaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBc
TWFya1N0YWNrSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxS
ZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcUmVnaW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFNsb3RW
aXNpdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NTUsNiArMTY1NSwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVu
dGVkQXJyYXkuaCI+CisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGlu
ZXMuaCI+CisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBc3NlcnRpb25zLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNzMzLDkgKzE3MzksNiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxNYXJrU3RhY2suaCI+CiAgICAgICA8
RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGhlYXBcTWFya1N0YWNrSW5saW5lcy5oIj4KLSAgICAgIDxGaWx0ZXI+aGVhcDwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVh
cFxSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQwLDYgKzc0MCw4
IEBACiAJCTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5oICovOyB9OwogCQkyQTI4MjVEMDE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJl
bGVhc2VTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkEyODI1Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2NvcGUuaCAqLzsg
fTsKKwkJMkEzNDNGNzYxOEExNzQ4QjAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJyYXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMzQzRjc0MThBMTc0
OEIwMDM5QjA4NSAvKiBHQ1NlZ21lbnRlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkEzNDNGNzgxOEExNzQ5RDAwMzlCMDg1IC8qIEdD
U2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyQTM0M0Y3NzE4QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJh
eUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyQTQ4RDE5MTE3NzIzNjVCMDBDNjVBNUYgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxMUI1NzQxNzZB
MjI0RDAwMEUyQTIzIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJMkE0RUM5MEIx
ODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIg
LyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCAqLzsgfTsKIAkJMkE0RUM5MEMxODYwRDZDMjAwOTRG
NzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE0RUM5MEExODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmll
ckJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMzA1LDcgKzEzMDcsNiBAQAogCQlDMjBCQTkyRDE2QkIxQzE1MDBCM0FFQTIgLyogU3Ry
dWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURh
dGFJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzIxMTIyRTExNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExMjJERTE1
REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLzsgfTsKIAkJQzIxMTIy
RTIxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxMTIyREYxNUREOUFCMzAwNzkwRTNB
IC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUMyMTEyMkUzMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyMTYwRkU3MTVGN0U5NUUw
MDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0I0MDg1MTVDMEEzQzMwMDQ4OTMyQiAvKiBTbG90Vmlz
aXRvcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMjE4RDE0MDE2NTVDRkQ1MDA2MkJCODEgLyogQ29weVdvcmtMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjE4RDEzRjE2NTVDRkQ1
MDA2MkJCODEgLyogQ29weVdvcmtMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIyMzlEMTcxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNp
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
MjM5RDEyMTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvci5jcHAgKi87IH07CkBAIC0yMTI1
LDYgKzIxMjYsOCBAQAogCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdKb2lu
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNTE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEyODI1
Q0YxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsYXllZFJlbGVhc2VTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyQTM0M0Y3NDE4QTE3NDhCMDAzOUIwODUgLyogR0NTZWdtZW50ZWRB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1NlZ21lbnRlZEFycmF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMzQzRjc3MThBMTc0OUQwMDM5QjA4
NSAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyQTRFQzkwOTE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRlQmFycmllckJ1ZmZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNEVDOTBBMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV3JpdGVCYXJyaWVyQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJBNjgyOTVBMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlXcml0ZUJhcnJpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzQsNyArMjczNyw2IEBACiAJCUMyMEJBOTJDMTZCQjFDMTUw
MEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyMTEyMkRFMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJl
ZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NUaHJlYWRT
aGFyZWREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxMTIyREYxNURE
OUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHQ1RocmVhZFNoYXJlZERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQzIxMTIyRTAxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNrSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElD
YWxsYmFja0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMThEMTNG
MTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29weVdvcmtMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMjM5RDEyMTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3B5VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMzYwLDcgKzMzNjIsNiBAQAogCQkJCTE0RDJGM0Q5MTM5RjRCRTIw
MDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oICovLAogCQkJCTE0MkQ2RjBFMTM1MzlBNDEwMEIwMkU4
NiAvKiBNYXJrU3RhY2suY3BwICovLAogCQkJCTE0MkQ2RjBGMTM1MzlBNDEwMEIwMkU4NiAvKiBN
YXJrU3RhY2suaCAqLywKLQkJCQlDMjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNr
SW5saW5lcy5oICovLAogCQkJCUMyMEIyNTk4MTcwNjUzNjIwMEMyMUY0RSAvKiBSZWdpb24uaCAq
LywKIAkJCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovLAog
CQkJCTE0QkE3OEYwMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oICovLApAQCAtMzM4
OCw2ICszMzg5LDggQEAKIAkJCQkyQTI4MjVDRjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJl
bGVhc2VTY29wZS5oICovLAogCQkJCTJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNp
dmVBbGxvY2F0aW9uU2NvcGUuaCAqLywKIAkJCQkyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyog
Q29weVdyaXRlQmFycmllci5oICovLAorCQkJCTJBMzQzRjc0MThBMTc0OEIwMDM5QjA4NSAvKiBH
Q1NlZ21lbnRlZEFycmF5LmggKi8sCisJCQkJMkEzNDNGNzcxOEExNzQ5RDAwMzlCMDg1IC8qIEdD
U2VnbWVudGVkQXJyYXlJbmxpbmVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDYyNyw2ICs0NjMwLDggQEAKIAkJCQk4NkQzQjJD
NDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMkEzNDNGNzYxOEExNzQ4QjAwMzlCMDg1IC8qIEdDU2VnbWVudGVkQXJy
YXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBMzQzRjc4MThBMTc0OUQwMDM5QjA4NSAvKiBHQ1Nl
Z21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2
ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE2ODI5NUIx
ODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtNTE3MSw3ICs1MTc2LDYgQEAKIAkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJB
MUEgLyogTWFya2VkQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDJGM0RCMTM5RjRC
RTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRDZGMTIx
MzUzOUE0MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzIxMTIy
RTMxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1OTQ1NTk1MTgyNDc5RUIwMENDMzg0MyAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4NjAwODQzQjEwIC8qIElu
amVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkocmV2aXNpb24gMTYzMzkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsOSArNDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBCbG9ja0FsbG9jYXRvcjsK
IGNsYXNzIENvcGllZEJsb2NrOwogY2xhc3MgQ29weVdvcmtMaXN0U2VnbWVudDsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBHQ0FycmF5U2VnbWVudDsKIGNsYXNzIEhhbmRsZUJsb2NrOwor
Y2xhc3MgSlNDZWxsOwogY2xhc3MgVk07Ci1jbGFzcyBNYXJrU3RhY2tTZWdtZW50OwogY2xhc3Mg
TWFya2VkQmxvY2s7CiBjbGFzcyBXZWFrQmxvY2s7CiAKQEAgLTk1LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBTdXBlclJlZ2lvbiBtX3N1cGVyUmVnaW9uOwogICAgIFJlZ2lvblNldCBtX2NvcGll
ZFJlZ2lvblNldDsKICAgICBSZWdpb25TZXQgbV9tYXJrZWRSZWdpb25TZXQ7Ci0gICAgLy8gV2Vh
a0Jsb2NrcyBhbmQgTWFya1N0YWNrU2VnbWVudHMgdXNlIHRoZSBzYW1lIFJlZ2lvblNldCBzaW5j
ZSB0aGV5J3JlIHRoZSBzYW1lIHNpemUuCisgICAgLy8gV2Vha0Jsb2NrcyBhbmQgR0NBcnJheVNl
Z21lbnRzIHVzZSB0aGUgc2FtZSBSZWdpb25TZXQgc2luY2UgdGhleSdyZSB0aGUgc2FtZSBzaXpl
LgogICAgIFJlZ2lvblNldCBtX2ZvdXJLQkJsb2NrUmVnaW9uU2V0OwogICAgIFJlZ2lvblNldCBt
X3dvcmtMaXN0UmVnaW9uU2V0OwogCkBAIC0yMzUsNyArMjM2LDcgQEAgaW5saW5lIEJsb2NrQWxs
b2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQQogfQogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIEJsb2Nr
QWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8TWFya1N0
YWNrU2VnbWVudD4oKQoraW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxs
b2NhdG9yOjpyZWdpb25TZXRGb3I8R0NBcnJheVNlZ21lbnQ8Y29uc3QgSlNDZWxsKj4+KCkKIHsK
ICAgICByZXR1cm4gbV9mb3VyS0JCbG9ja1JlZ2lvblNldDsKIH0KQEAgLTI3MSw3ICsyNzIsNyBA
QCBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBCiB9CiAKIHRlbXBsYXRl
IDw+Ci1pbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJl
Z2lvblNldEZvcjxIZWFwQmxvY2s8TWFya1N0YWNrU2VnbWVudD4+KCkKK2lubGluZSBCbG9ja0Fs
bG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhlYXBCbG9j
azxHQ0FycmF5U2VnbWVudDxjb25zdCBKU0NlbGwqPj4+KCkKIHsKICAgICByZXR1cm4gbV9mb3Vy
S0JCbG9ja1JlZ2lvblNldDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
U2VnbWVudGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HQ1NlZ21lbnRlZEFycmF5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdDU2VnbWVudGVkQXJyYXlfaAorI2RlZmluZSBHQ1Nl
Z21lbnRlZEFycmF5X2gKKworI2luY2x1ZGUgIkhlYXBCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJsb2NrQWxsb2NhdG9yOworY2xh
c3MgRGVhZEJsb2NrOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIEdDQXJyYXlTZWdt
ZW50IDogcHVibGljIEhlYXBCbG9jazxHQ0FycmF5U2VnbWVudDxUPj4geworcHVibGljOgorICAg
IEdDQXJyYXlTZWdtZW50KFJlZ2lvbiogcmVnaW9uKQorICAgICAgICA6IEhlYXBCbG9jazxHQ0Fy
cmF5U2VnbWVudD4ocmVnaW9uKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgLCBtX3Rv
cCgwKQorI2VuZGlmCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBHQ0FycmF5U2VnbWVudCog
Y3JlYXRlKERlYWRCbG9jayopOworCisgICAgVCogZGF0YSgpCisgICAgeworICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFQqPih0aGlzICsgMSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBibG9ja1NpemUgPSA0ICogS0I7CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
c2l6ZV90IG1fdG9wOworI2VuZGlmCit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNz
IEdDU2VnbWVudGVkQXJyYXkgeworcHVibGljOgorICAgIEdDU2VnbWVudGVkQXJyYXkoQmxvY2tB
bGxvY2F0b3ImKTsKKyAgICB+R0NTZWdtZW50ZWRBcnJheSgpOworCisgICAgdm9pZCBhcHBlbmQo
VCk7CisKKyAgICBib29sIGNhblJlbW92ZUxhc3QoKTsKKyAgICBjb25zdCBUIHJlbW92ZUxhc3Qo
KTsKKyAgICBib29sIHJlZmlsbCgpOworICAgIAorICAgIHNpemVfdCBzaXplKCk7CisgICAgYm9v
bCBpc0VtcHR5KCk7CisKKyAgICB2b2lkIGZpbGxWZWN0b3IoVmVjdG9yPFQ+Jik7CisgICAgdm9p
ZCBjbGVhcigpOworCitwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGUgPHNpemVfdCBzaXplPiBzdHJ1
Y3QgQ2FwYWNpdHlGcm9tU2l6ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmFsdWUg
PSAoc2l6ZSAtIHNpemVvZihHQ0FycmF5U2VnbWVudDxUPikpIC8gc2l6ZW9mKFQpOworICAgIH07
CisKKyAgICB2b2lkIGV4cGFuZCgpOworICAgIAorICAgIHNpemVfdCBwb3N0SW5jVG9wKCk7Cisg
ICAgc2l6ZV90IHByZURlY1RvcCgpOworICAgIHZvaWQgc2V0VG9wRm9yRnVsbFNlZ21lbnQoKTsK
KyAgICB2b2lkIHNldFRvcEZvckVtcHR5U2VnbWVudCgpOworICAgIHNpemVfdCB0b3AoKTsKKyAg
ICAKKyAgICB2b2lkIHZhbGlkYXRlUHJldmlvdXMoKTsKKworICAgIERvdWJseUxpbmtlZExpc3Q8
R0NBcnJheVNlZ21lbnQ8VD4+IG1fc2VnbWVudHM7CisgICAgQmxvY2tBbGxvY2F0b3ImIG1fYmxv
Y2tBbGxvY2F0b3I7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNfc2VnbWVudENhcGFjaXR5ID0gQ2FwYWNpdHlGcm9tU2l6ZTxHQ0FycmF5U2VnbWVudDxUPjo6
YmxvY2tTaXplPjo6dmFsdWU7CisgICAgc2l6ZV90IG1fdG9wOworICAgIHNpemVfdCBtX251bWJl
ck9mU2VnbWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEdDU2Vn
bWVudGVkQXJyYXlfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50
ZWRBcnJheUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR0NTZWdtZW50ZWRBcnJheUlu
bGluZXNfaAorI2RlZmluZSBHQ1NlZ21lbnRlZEFycmF5SW5saW5lc19oCisKKyNpbmNsdWRlICJC
bG9ja0FsbG9jYXRvci5oIgorI2luY2x1ZGUgIkdDU2VnbWVudGVkQXJyYXkuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorR0NTZWdtZW50ZWRBcnJheTxUPjo6
R0NTZWdtZW50ZWRBcnJheShCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IpCisgICAgOiBt
X2Jsb2NrQWxsb2NhdG9yKGJsb2NrQWxsb2NhdG9yKQorICAgICwgbV90b3AoMCkKKyAgICAsIG1f
bnVtYmVyT2ZTZWdtZW50cygwKQoreworICAgIG1fc2VnbWVudHMucHVzaChHQ0FycmF5U2VnbWVu
dDxUPjo6Y3JlYXRlKG1fYmxvY2tBbGxvY2F0b3IuYWxsb2NhdGU8R0NBcnJheVNlZ21lbnQ8VD4+
KCkpKTsKKyAgICBtX251bWJlck9mU2VnbWVudHMrKzsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp+R0NTZWdtZW50ZWRBcnJheSgpCit7CisgICAgQVNT
RVJUKG1fbnVtYmVyT2ZTZWdtZW50cyA9PSAxKTsKKyAgICBBU1NFUlQobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7CisgICAgbV9ibG9ja0FsbG9jYXRvci5kZWFsbG9jYXRlKEdDQXJyYXlTZWdtZW50
PFQ+OjpkZXN0cm95KG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpKSk7CisgICAgbV9udW1iZXJPZlNl
Z21lbnRzLS07CisgICAgQVNTRVJUKCFtX251bWJlck9mU2VnbWVudHMpOworICAgIEFTU0VSVCgh
bV9zZWdtZW50cy5zaXplKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgR0NT
ZWdtZW50ZWRBcnJheTxUPjo6Y2xlYXIoKQoreworICAgIGlmICghbV9zZWdtZW50cy5oZWFkKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBHQ0FycmF5U2VnbWVudDxUPiogbmV4dDsKKyAgICBmb3Ig
KEdDQXJyYXlTZWdtZW50PFQ+KiBjdXJyZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7IGN1cnJlbnQt
Pm5leHQoKTsgY3VycmVudCA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQo
KTsKKyAgICAgICAgbV9zZWdtZW50cy5yZW1vdmUoY3VycmVudCk7CisgICAgICAgIG1fYmxvY2tB
bGxvY2F0b3IuZGVhbGxvY2F0ZShHQ0FycmF5U2VnbWVudDxUPjo6ZGVzdHJveShjdXJyZW50KSk7
CisgICAgfQorICAgIG1fdG9wID0gMDsKKyAgICBtX251bWJlck9mU2VnbWVudHMgPSAxOworI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICBtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPSAwOworI2Vu
ZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+
OjpleHBhbmQoKQoreworICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPT0gc19z
ZWdtZW50Q2FwYWNpdHkpOworICAgIAorICAgIEdDQXJyYXlTZWdtZW50PFQ+KiBuZXh0U2VnbWVu
dCA9IEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUobV9ibG9ja0FsbG9jYXRvci5hbGxvY2F0ZTxH
Q0FycmF5U2VnbWVudDxUPj4oKSk7CisgICAgbV9udW1iZXJPZlNlZ21lbnRzKys7CisgICAgCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG5leHRTZWdtZW50LT5tX3RvcCA9IDA7CisjZW5kaWYK
KworICAgIG1fc2VnbWVudHMucHVzaChuZXh0U2VnbWVudCk7CisgICAgc2V0VG9wRm9yRW1wdHlT
ZWdtZW50KCk7CisgICAgdmFsaWRhdGVQcmV2aW91cygpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2Jvb2wgR0NTZWdtZW50ZWRBcnJheTxUPjo6cmVmaWxsKCkKK3sKKyAgICB2YWxpZGF0
ZVByZXZpb3VzKCk7CisgICAgaWYgKHRvcCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBt
X2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoR0NBcnJheVNlZ21lbnQ8VD46OmRlc3Ryb3kobV9z
ZWdtZW50cy5yZW1vdmVIZWFkKCkpKTsKKyAgICBBU1NFUlQobV9udW1iZXJPZlNlZ21lbnRzID4g
MSk7CisgICAgbV9udW1iZXJPZlNlZ21lbnRzLS07CisgICAgc2V0VG9wRm9yRnVsbFNlZ21lbnQo
KTsKKyAgICB2YWxpZGF0ZVByZXZpb3VzKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpmaWxsVmVjdG9yKFZl
Y3RvcjxUPiYgdmVjdG9yKQoreworICAgIEFTU0VSVCh2ZWN0b3Iuc2l6ZSgpID09IHNpemUoKSk7
CisKKyAgICBHQ0FycmF5U2VnbWVudDxUPiogY3VycmVudFNlZ21lbnQgPSBtX3NlZ21lbnRzLmhl
YWQoKTsKKyAgICBpZiAoIWN1cnJlbnRTZWdtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICB1
bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdG9wOyAr
K2kpIHsKKyAgICAgICAgQVNTRVJUKGN1cnJlbnRTZWdtZW50LT5kYXRhKClbaV0pOworICAgICAg
ICB2ZWN0b3JbY291bnQrK10gPSBjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldOworICAgIH0KKwor
ICAgIGN1cnJlbnRTZWdtZW50ID0gY3VycmVudFNlZ21lbnQtPm5leHQoKTsKKyAgICB3aGlsZSAo
Y3VycmVudFNlZ21lbnQpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfc2Vn
bWVudENhcGFjaXR5OyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJyZW50U2VnbWVudC0+
ZGF0YSgpW2ldKTsKKyAgICAgICAgICAgIHZlY3Rvcltjb3VudCsrXSA9IGN1cnJlbnRTZWdtZW50
LT5kYXRhKClbaV07CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudFNlZ21lbnQgPSBjdXJyZW50
U2VnbWVudC0+bmV4dCgpOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citpbmxp
bmUgR0NBcnJheVNlZ21lbnQ8VD4qIEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUoRGVhZEJsb2Nr
KiBibG9jaykKK3sKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBibG9jaykgR0NBcnJheVNlZ21l
bnQ8VD4oYmxvY2stPnJlZ2lvbigpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citpbmxp
bmUgc2l6ZV90IEdDU2VnbWVudGVkQXJyYXk8VD46OnBvc3RJbmNUb3AoKQoreworICAgIHNpemVf
dCByZXN1bHQgPSBtX3RvcCsrOworICAgIEFTU0VSVChyZXN1bHQgPT0gbV9zZWdtZW50cy5oZWFk
KCktPm1fdG9wKyspOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgoraW5saW5lIHNpemVfdCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpwcmVEZWNUb3AoKQorewor
ICAgIHNpemVfdCByZXN1bHQgPSAtLW1fdG9wOworICAgIEFTU0VSVChyZXN1bHQgPT0gLS1tX3Nl
Z21lbnRzLmhlYWQoKS0+bV90b3ApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6c2V0VG9wRm9y
RnVsbFNlZ21lbnQoKQoreworICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPT0g
c19zZWdtZW50Q2FwYWNpdHkpOworICAgIG1fdG9wID0gc19zZWdtZW50Q2FwYWNpdHk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6
c2V0VG9wRm9yRW1wdHlTZWdtZW50KCkKK3sKKyAgICBBU1NFUlQoIW1fc2VnbWVudHMuaGVhZCgp
LT5tX3RvcCk7CisgICAgbV90b3AgPSAwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lu
bGluZSBzaXplX3QgR0NTZWdtZW50ZWRBcnJheTxUPjo6dG9wKCkKK3sKKyAgICBBU1NFUlQobV90
b3AgPT0gbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKKyAgICByZXR1cm4gbV90b3A7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorI2lmIEFTU0VSVF9ESVNBQkxFRAoraW5saW5lIHZvaWQg
R0NTZWdtZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQcmV2aW91cygpIHsgfQorI2Vsc2UKK2lubGlu
ZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJldmlvdXMoKQoreworICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKyAgICBmb3IgKEdDQXJyYXlTZWdtZW50PFQ+KiBjdXJyZW50ID0g
bV9zZWdtZW50cy5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpCisg
ICAgICAgIGNvdW50Kys7CisgICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IG1fbnVtYmVy
T2ZTZWdtZW50cyk7Cit9CisjZW5kaWYKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUg
dm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjphcHBlbmQoVCB2YWx1ZSkKK3sKKyAgICBpZiAobV90
b3AgPT0gc19zZWdtZW50Q2FwYWNpdHkpCisgICAgICAgIGV4cGFuZCgpOworICAgIG1fc2VnbWVu
dHMuaGVhZCgpLT5kYXRhKClbcG9zdEluY1RvcCgpXSA9IHZhbHVlOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK2lubGluZSBib29sIEdDU2VnbWVudGVkQXJyYXk8VD46OmNhblJlbW92ZUxh
c3QoKQoreworICAgIHJldHVybiAhIW1fdG9wOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2lubGluZSBjb25zdCBUIEdDU2VnbWVudGVkQXJyYXk8VD46OnJlbW92ZUxhc3QoKQoreworICAg
IHJldHVybiBtX3NlZ21lbnRzLmhlYWQoKS0+ZGF0YSgpW3ByZURlY1RvcCgpXTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9vbCBHQ1NlZ21lbnRlZEFycmF5PFQ+Ojppc0Vt
cHR5KCkKK3sKKyAgICBpZiAobV90b3ApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9zZWdtZW50cy5oZWFkKCktPm5leHQoKSkgeworICAgICAgICBBU1NFUlQobV9zZWdtZW50cy5o
ZWFkKCktPm5leHQoKS0+bV90b3AgPT0gc19zZWdtZW50Q2FwYWNpdHkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK2lubGluZSBzaXplX3QgR0NTZWdtZW50ZWRBcnJheTxUPjo6c2l6ZSgpCit7CisgICAg
cmV0dXJuIG1fdG9wICsgc19zZWdtZW50Q2FwYWNpdHkgKiAobV9udW1iZXJPZlNlZ21lbnRzIC0g
MSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gR0NTZWdtZW50ZWRBcnJh
eUlubGluZXNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CShyZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5MCArMjUsMTIgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1hcmtTdGFjay5oIgotI2luY2x1ZGUgIk1hcmtTdGFja0lubGlu
ZXMuaCIKLQotI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCi0jaW5jbHVkZSAiQ29waWVk
U3BhY2UuaCIKLSNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKLSNpbmNsdWRlICJIZWFw
LmgiCi0jaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKLSNpbmNsdWRlIDx3dGYv
QXRvbWljcy5oPgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLUNPTVBJTEVfQVNTRVJUKE1hcmtTdGFja1Nl
Z21lbnQ6OmJsb2NrU2l6ZSA9PSBXZWFrQmxvY2s6OmJsb2NrU2l6ZSwgYmxvY2tTaXplTWF0Y2gp
OwotCiBNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoQmxvY2tBbGxvY2F0b3ImIGJsb2Nr
QWxsb2NhdG9yKQotICAgIDogbV9ibG9ja0FsbG9jYXRvcihibG9ja0FsbG9jYXRvcikKLSAgICAs
IG1fdG9wKDApCi0gICAgLCBtX251bWJlck9mU2VnbWVudHMoMCkKLXsKLSAgICBtX3NlZ21lbnRz
LnB1c2goTWFya1N0YWNrU2VnbWVudDo6Y3JlYXRlKG1fYmxvY2tBbGxvY2F0b3IuYWxsb2NhdGU8
TWFya1N0YWNrU2VnbWVudD4oKSkpOwotICAgIG1fbnVtYmVyT2ZTZWdtZW50cysrOwotfQotCi1N
YXJrU3RhY2tBcnJheTo6fk1hcmtTdGFja0FycmF5KCkKLXsKLSAgICBBU1NFUlQobV9udW1iZXJP
ZlNlZ21lbnRzID09IDEpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAg
ICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoTWFya1N0YWNrU2VnbWVudDo6ZGVzdHJveSht
X3NlZ21lbnRzLnJlbW92ZUhlYWQoKSkpOwotICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOwotICAg
IEFTU0VSVCghbV9udW1iZXJPZlNlZ21lbnRzKTsKLSAgICBBU1NFUlQoIW1fc2VnbWVudHMuc2l6
ZSgpKTsKLX0KLQotdm9pZCBNYXJrU3RhY2tBcnJheTo6Y2xlYXIoKQotewotICAgIGlmICghbV9z
ZWdtZW50cy5oZWFkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBNYXJrU3RhY2tTZWdtZW50KiBu
ZXh0OwotICAgIGZvciAoTWFya1N0YWNrU2VnbWVudCogY3VycmVudCA9IG1fc2VnbWVudHMuaGVh
ZCgpOyBjdXJyZW50LT5uZXh0KCk7IGN1cnJlbnQgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBj
dXJyZW50LT5uZXh0KCk7Ci0gICAgICAgIG1fc2VnbWVudHMucmVtb3ZlKGN1cnJlbnQpOwotICAg
ICAgICBtX2Jsb2NrQWxsb2NhdG9yLmRlYWxsb2NhdGUoTWFya1N0YWNrU2VnbWVudDo6ZGVzdHJv
eShjdXJyZW50KSk7Ci0gICAgfQotICAgIG1fdG9wID0gMDsKLSAgICBtX251bWJlck9mU2VnbWVu
dHMgPSAxOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBtX3NlZ21lbnRzLmhlYWQoKS0+bV90
b3AgPSAwOwotI2VuZGlmCi19Ci0KLXZvaWQgTWFya1N0YWNrQXJyYXk6OmV4cGFuZCgpCi17Ci0g
ICAgQVNTRVJUKG1fc2VnbWVudHMuaGVhZCgpLT5tX3RvcCA9PSBzX3NlZ21lbnRDYXBhY2l0eSk7
Ci0gICAgCi0gICAgTWFya1N0YWNrU2VnbWVudCogbmV4dFNlZ21lbnQgPSBNYXJrU3RhY2tTZWdt
ZW50OjpjcmVhdGUobV9ibG9ja0FsbG9jYXRvci5hbGxvY2F0ZTxNYXJrU3RhY2tTZWdtZW50Pigp
KTsKLSAgICBtX251bWJlck9mU2VnbWVudHMrKzsKLSAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
Ci0gICAgbmV4dFNlZ21lbnQtPm1fdG9wID0gMDsKLSNlbmRpZgotCi0gICAgbV9zZWdtZW50cy5w
dXNoKG5leHRTZWdtZW50KTsKLSAgICBzZXRUb3BGb3JFbXB0eVNlZ21lbnQoKTsKLSAgICB2YWxp
ZGF0ZVByZXZpb3VzKCk7Ci19Ci0KLWJvb2wgTWFya1N0YWNrQXJyYXk6OnJlZmlsbCgpCisgICAg
OiBHQ1NlZ21lbnRlZEFycmF5PGNvbnN0IEpTQ2VsbCo+KGJsb2NrQWxsb2NhdG9yKQogewotICAg
IHZhbGlkYXRlUHJldmlvdXMoKTsKLSAgICBpZiAodG9wKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIG1fYmxvY2tBbGxvY2F0b3IuZGVhbGxvY2F0ZShNYXJrU3RhY2tTZWdtZW50OjpkZXN0
cm95KG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpKSk7Ci0gICAgQVNTRVJUKG1fbnVtYmVyT2ZTZWdt
ZW50cyA+IDEpOwotICAgIG1fbnVtYmVyT2ZTZWdtZW50cy0tOwotICAgIHNldFRvcEZvckZ1bGxT
ZWdtZW50KCk7Ci0gICAgdmFsaWRhdGVQcmV2aW91cygpOwotICAgIHJldHVybiB0cnVlOwogfQog
CiB2b2lkIE1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHNUbyhNYXJrU3RhY2tBcnJheSYg
b3RoZXIpCkBAIC0xMzMsMTEgKzU1LDExIEBAIHZvaWQgTWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNv
bWVDZWxsc1RvKE0KIAogICAgIC8vIFJlbW92ZSBvdXIgaGVhZCBhbmQgdGhlIGhlYWQgb2YgdGhl
IG90aGVyIGxpc3QgYmVmb3JlIHdlIHN0YXJ0IG1vdmluZyBzZWdtZW50cyBhcm91bmQuCiAgICAg
Ly8gV2UnbGwgYWRkIHRoZW0gYmFjayBvbiBvbmNlIHdlJ3JlIGRvbmUgZG9uYXRpbmcuCi0gICAg
TWFya1N0YWNrU2VnbWVudCogbXlIZWFkID0gbV9zZWdtZW50cy5yZW1vdmVIZWFkKCk7Ci0gICAg
TWFya1N0YWNrU2VnbWVudCogb3RoZXJIZWFkID0gb3RoZXIubV9zZWdtZW50cy5yZW1vdmVIZWFk
KCk7CisgICAgR0NBcnJheVNlZ21lbnQ8Y29uc3QgSlNDZWxsKj4qIG15SGVhZCA9IG1fc2VnbWVu
dHMucmVtb3ZlSGVhZCgpOworICAgIEdDQXJyYXlTZWdtZW50PGNvbnN0IEpTQ2VsbCo+KiBvdGhl
ckhlYWQgPSBvdGhlci5tX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKIAogICAgIHdoaWxlIChzZWdt
ZW50c1RvRG9uYXRlLS0pIHsKLSAgICAgICAgTWFya1N0YWNrU2VnbWVudCogY3VycmVudCA9IG1f
c2VnbWVudHMucmVtb3ZlSGVhZCgpOworICAgICAgICBHQ0FycmF5U2VnbWVudDxjb25zdCBKU0Nl
bGwqPiogY3VycmVudCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOwogICAgICAgICBBU1NFUlQo
Y3VycmVudCk7CiAgICAgICAgIEFTU0VSVChtX251bWJlck9mU2VnbWVudHMgPiAxKTsKICAgICAg
ICAgb3RoZXIubV9zZWdtZW50cy5wdXNoKGN1cnJlbnQpOwpAQCAtMTY1LDggKzg3LDggQEAgdm9p
ZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKAogICAgIC8vIElmIG90aGVyIGhh
cyBhbiBlbnRpcmUgc2VnbWVudCwgc3RlYWwgaXQgYW5kIHJldHVybi4KICAgICBpZiAob3RoZXIu
bV9udW1iZXJPZlNlZ21lbnRzID4gMSkgewogICAgICAgICAvLyBNb3ZlIHRoZSBoZWFkcyBvZiB0
aGUgbGlzdHMgYXNpZGUuIFdlJ2xsIHB1c2ggdGhlbSBiYWNrIG9uIGFmdGVyLgotICAgICAgICBN
YXJrU3RhY2tTZWdtZW50KiBvdGhlckhlYWQgPSBvdGhlci5tX3NlZ21lbnRzLnJlbW92ZUhlYWQo
KTsKLSAgICAgICAgTWFya1N0YWNrU2VnbWVudCogbXlIZWFkID0gbV9zZWdtZW50cy5yZW1vdmVI
ZWFkKCk7CisgICAgICAgIEdDQXJyYXlTZWdtZW50PGNvbnN0IEpTQ2VsbCo+KiBvdGhlckhlYWQg
PSBvdGhlci5tX3NlZ21lbnRzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgR0NBcnJheVNlZ21lbnQ8
Y29uc3QgSlNDZWxsKj4qIG15SGVhZCA9IG1fc2VnbWVudHMucmVtb3ZlSGVhZCgpOwogCiAgICAg
ICAgIEFTU0VSVChvdGhlci5tX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPT0gc19zZWdtZW50Q2Fw
YWNpdHkpOwogCkBAIC0xODgsMjggKzExMCw0IEBAIHZvaWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFs
U29tZUNlbGxzRnJvbSgKICAgICAgICAgYXBwZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7CiB9CiAK
LXZvaWQgTWFya1N0YWNrQXJyYXk6OmZpbGxWZWN0b3IoVmVjdG9yPGNvbnN0IEpTQ2VsbCo+JiB2
ZWN0b3IpCi17Ci0gICAgQVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gc2l6ZSgpKTsKLQotICAgIE1h
cmtTdGFja1NlZ21lbnQqIGN1cnJlbnRTZWdtZW50ID0gbV9zZWdtZW50cy5oZWFkKCk7Ci0gICAg
aWYgKCFjdXJyZW50U2VnbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgY291
bnQgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RvcDsgKytpKSB7Ci0gICAg
ICAgIEFTU0VSVChjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldKTsKLSAgICAgICAgdmVjdG9yW2Nv
dW50KytdID0gY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXTsKLSAgICB9Ci0KLSAgICBjdXJyZW50
U2VnbWVudCA9IGN1cnJlbnRTZWdtZW50LT5uZXh0KCk7Ci0gICAgd2hpbGUgKGN1cnJlbnRTZWdt
ZW50KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzX3NlZ21lbnRDYXBhY2l0
eTsgKytpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoY3VycmVudFNlZ21lbnQtPmRhdGEoKVtpXSk7
Ci0gICAgICAgICAgICB2ZWN0b3JbY291bnQrK10gPSBjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ld
OwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRTZWdtZW50ID0gY3VycmVudFNlZ21lbnQtPm5l
eHQoKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmgJKHJldmlzaW9uIDE2MzM5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4MiArNTAs
MTggQEAKICNkZWZpbmUgTUFSS19MT0dfQ0hJTEQodmlzaXRvciwgY2hpbGQpIGRvIHsgfSB3aGls
ZSAoZmFsc2UpCiAjZW5kaWYKIAotI2luY2x1ZGUgIkhlYXBCbG9jay5oIgotI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiR0NT
ZWdtZW50ZWRBcnJheUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEJsb2Nr
QWxsb2NhdG9yOwotY2xhc3MgRGVhZEJsb2NrOwogY2xhc3MgSlNDZWxsOwogCi1jbGFzcyBNYXJr
U3RhY2tTZWdtZW50IDogcHVibGljIEhlYXBCbG9jazxNYXJrU3RhY2tTZWdtZW50PiB7Ci1wdWJs
aWM6Ci0gICAgTWFya1N0YWNrU2VnbWVudChSZWdpb24qIHJlZ2lvbikKLSAgICAgICAgOiBIZWFw
QmxvY2s8TWFya1N0YWNrU2VnbWVudD4ocmVnaW9uKQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICAgICAgLCBtX3RvcCgwKQotI2VuZGlmCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBNYXJr
U3RhY2tTZWdtZW50KiBjcmVhdGUoRGVhZEJsb2NrKik7Ci0KLSAgICBjb25zdCBKU0NlbGwqKiBk
YXRhKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSlNDZWxsKio+
KHRoaXMgKyAxKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9
IDQgKiBLQjsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzaXplX3QgbV90b3A7Ci0jZW5k
aWYKLX07Ci0KLWNsYXNzIE1hcmtTdGFja0FycmF5IHsKK2NsYXNzIE1hcmtTdGFja0FycmF5IDog
cHVibGljIEdDU2VnbWVudGVkQXJyYXk8Y29uc3QgSlNDZWxsKj4gewogcHVibGljOgogICAgIE1h
cmtTdGFja0FycmF5KEJsb2NrQWxsb2NhdG9yJik7Ci0gICAgfk1hcmtTdGFja0FycmF5KCk7Ci0K
LSAgICB2b2lkIGFwcGVuZChjb25zdCBKU0NlbGwqKTsKIAotICAgIGJvb2wgY2FuUmVtb3ZlTGFz
dCgpOwotICAgIGNvbnN0IEpTQ2VsbCogcmVtb3ZlTGFzdCgpOwotICAgIGJvb2wgcmVmaWxsKCk7
Ci0gICAgCiAgICAgdm9pZCBkb25hdGVTb21lQ2VsbHNUbyhNYXJrU3RhY2tBcnJheSYgb3RoZXIp
OwogICAgIHZvaWQgc3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlciwgc2l6
ZV90IGlkbGVUaHJlYWRDb3VudCk7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpOwotICAgIGJvb2wgaXNF
bXB0eSgpOwotCi0gICAgdm9pZCBmaWxsVmVjdG9yKFZlY3Rvcjxjb25zdCBKU0NlbGwqPiYpOwot
ICAgIHZvaWQgY2xlYXIoKTsKLQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+
IHN0cnVjdCBDYXBhY2l0eUZyb21TaXplIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCB2
YWx1ZSA9IChzaXplIC0gc2l6ZW9mKE1hcmtTdGFja1NlZ21lbnQpKSAvIHNpemVvZihjb25zdCBK
U0NlbGwqKTsKLSAgICB9OwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBleHBhbmQoKTsK
LSAgICAKLSAgICBzaXplX3QgcG9zdEluY1RvcCgpOwotICAgIHNpemVfdCBwcmVEZWNUb3AoKTsK
LSAgICB2b2lkIHNldFRvcEZvckZ1bGxTZWdtZW50KCk7Ci0gICAgdm9pZCBzZXRUb3BGb3JFbXB0
eVNlZ21lbnQoKTsKLSAgICBzaXplX3QgdG9wKCk7Ci0gICAgCi0gICAgdm9pZCB2YWxpZGF0ZVBy
ZXZpb3VzKCk7Ci0KLSAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtTdGFja1NlZ21lbnQ+IG1fc2Vn
bWVudHM7Ci0gICAgQmxvY2tBbGxvY2F0b3ImIG1fYmxvY2tBbGxvY2F0b3I7Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfc2VnbWVudENhcGFjaXR5ID0gQ2Fw
YWNpdHlGcm9tU2l6ZTxNYXJrU3RhY2tTZWdtZW50OjpibG9ja1NpemU+Ojp2YWx1ZTsKLSAgICBz
aXplX3QgbV90b3A7Ci0gICAgc2l6ZV90IG1fbnVtYmVyT2ZTZWdtZW50czsKLSAgIAogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNjMzOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBNYXJrU3RhY2tJbmxpbmVzX2gKLSNkZWZpbmUgTWFya1N0YWNrSW5saW5lc19o
Ci0KLSNpbmNsdWRlICJHQ1RocmVhZFNoYXJlZERhdGEuaCIKLSNpbmNsdWRlICJNYXJrU3RhY2su
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWlubGluZSBNYXJrU3RhY2tTZWdtZW50KiBNYXJrU3Rh
Y2tTZWdtZW50OjpjcmVhdGUoRGVhZEJsb2NrKiBibG9jaykKLXsKLSAgICByZXR1cm4gbmV3IChO
b3ROdWxsLCBibG9jaykgTWFya1N0YWNrU2VnbWVudChibG9jay0+cmVnaW9uKCkpOwotfQotCi1p
bmxpbmUgc2l6ZV90IE1hcmtTdGFja0FycmF5Ojpwb3N0SW5jVG9wKCkKLXsKLSAgICBzaXplX3Qg
cmVzdWx0ID0gbV90b3ArKzsKLSAgICBBU1NFUlQocmVzdWx0ID09IG1fc2VnbWVudHMuaGVhZCgp
LT5tX3RvcCsrKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbmxpbmUgc2l6ZV90IE1hcmtT
dGFja0FycmF5OjpwcmVEZWNUb3AoKQotewotICAgIHNpemVfdCByZXN1bHQgPSAtLW1fdG9wOwot
ICAgIEFTU0VSVChyZXN1bHQgPT0gLS1tX3NlZ21lbnRzLmhlYWQoKS0+bV90b3ApOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5OjpzZXRUb3BGb3JG
dWxsU2VnbWVudCgpCi17Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuaGVhZCgpLT5tX3RvcCA9PSBz
X3NlZ21lbnRDYXBhY2l0eSk7Ci0gICAgbV90b3AgPSBzX3NlZ21lbnRDYXBhY2l0eTsKLX0KLQot
aW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk6OnNldFRvcEZvckVtcHR5U2VnbWVudCgpCi17Ci0g
ICAgQVNTRVJUKCFtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3ApOwotICAgIG1fdG9wID0gMDsKLX0K
LQotaW5saW5lIHNpemVfdCBNYXJrU3RhY2tBcnJheTo6dG9wKCkKLXsKLSAgICBBU1NFUlQobV90
b3AgPT0gbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wKTsKLSAgICByZXR1cm4gbV90b3A7Ci19Ci0K
LSNpZiBBU1NFUlRfRElTQUJMRUQKLWlubGluZSB2b2lkIE1hcmtTdGFja0FycmF5Ojp2YWxpZGF0
ZVByZXZpb3VzKCkgeyB9Ci0jZWxzZQotaW5saW5lIHZvaWQgTWFya1N0YWNrQXJyYXk6OnZhbGlk
YXRlUHJldmlvdXMoKQotewotICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBmb3IgKE1hcmtT
dGFja1NlZ21lbnQqIGN1cnJlbnQgPSBtX3NlZ21lbnRzLmhlYWQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHQoKSkKLSAgICAgICAgY291bnQrKzsKLSAgICBBU1NFUlQobV9zZWdt
ZW50cy5zaXplKCkgPT0gbV9udW1iZXJPZlNlZ21lbnRzKTsKLX0KLSNlbmRpZgotCi1pbmxpbmUg
dm9pZCBNYXJrU3RhY2tBcnJheTo6YXBwZW5kKGNvbnN0IEpTQ2VsbCogY2VsbCkKLXsKLSAgICBp
ZiAobV90b3AgPT0gc19zZWdtZW50Q2FwYWNpdHkpCi0gICAgICAgIGV4cGFuZCgpOwotICAgIG1f
c2VnbWVudHMuaGVhZCgpLT5kYXRhKClbcG9zdEluY1RvcCgpXSA9IGNlbGw7Ci19Ci0KLWlubGlu
ZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5SZW1vdmVMYXN0KCkKLXsKLSAgICByZXR1cm4gISFt
X3RvcDsKLX0KLQotaW5saW5lIGNvbnN0IEpTQ2VsbCogTWFya1N0YWNrQXJyYXk6OnJlbW92ZUxh
c3QoKQotewotICAgIHJldHVybiBtX3NlZ21lbnRzLmhlYWQoKS0+ZGF0YSgpW3ByZURlY1RvcCgp
XTsKLX0KLQotaW5saW5lIGJvb2wgTWFya1N0YWNrQXJyYXk6OmlzRW1wdHkoKQotewotICAgIGlm
IChtX3RvcCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3NlZ21lbnRzLmhlYWQo
KS0+bmV4dCgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3NlZ21lbnRzLmhlYWQoKS0+bmV4dCgpLT5t
X3RvcCA9PSBzX3NlZ21lbnRDYXBhY2l0eSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBzaXplX3QgTWFya1N0YWNrQXJyYXk6OnNp
emUoKQotewotICAgIHJldHVybiBtX3RvcCArIHNfc2VnbWVudENhcGFjaXR5ICogKG1fbnVtYmVy
T2ZTZWdtZW50cyAtIDEpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIE1h
cmtTdGFja0lubGluZXNfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmgJKHJldmlzaW9uIDE2MzM5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDkgQEAKIAogI2luY2x1
ZGUgIkNvcHlUb2tlbi5oIgogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVkZSAiTWFy
a1N0YWNrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtTdGFjay5oIgogCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMzcsOSArMzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBDb25zZXJ2
YXRpdmVSb290czsKIGNsYXNzIEdDVGhyZWFkU2hhcmVkRGF0YTsKIGNsYXNzIEhlYXA7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBKSVRXcml0ZUJhcnJpZXI7CitjbGFzcyBVbmNvbmRpdGlv
bmFsRmluYWxpemVyOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2VhazsKK2NsYXNzIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXcml0ZUJh
cnJpZXJCYXNlOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgSklUV3JpdGVCYXJyaWVyOwog
CiBjbGFzcyBTbG90VmlzaXRvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2xvdFZpc2l0
b3IpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>