<?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>106803</bug_id>
          
          <creation_ts>2013-01-14 09:51:14 -0800</creation_ts>
          <short_desc>[Chromium] Move AudioDestinationChromium into WebCore</short_desc>
          <delta_ts>2013-01-14 14:45: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>WebKit Misc.</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>106829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806432</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-14 09:51:14 -0800</bug_when>
    <thetext>[Chromium] Move AudioDestinationChromium into WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806433</commentid>
    <comment_count>1</comment_count>
      <attachid>182594</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-14 09:52:51 -0800</bug_when>
    <thetext>Created attachment 182594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806442</commentid>
    <comment_count>2</comment_count>
      <attachid>182594</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-14 10:12:59 -0800</bug_when>
    <thetext>Comment on attachment 182594
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=182594&amp;action=review

&gt; Source/WebCore/platform/audio/chromium/AudioDestinationChromium.cpp:31
&gt; +#if ENABLE(WEB_AUDIO)

We usually put a blank line after this line.

&gt; Source/WebCore/platform/audio/chromium/AudioDestinationChromium.cpp:38
&gt; +using namespace WebKit;

Can we skip this using directive?  In WebCore, it&apos;s nice to be able to see what&apos;s used from the API.

&gt; Source/WebCore/platform/audio/chromium/AudioDestinationChromium.cpp:45
&gt; +// Size of the FIFO

There are lots of style errors in this file, but I guess I won&apos;t point them out since you&apos;re just moving this code.

&gt; Source/WebCore/platform/audio/chromium/AudioDestinationChromium.h:39
&gt; +namespace WebKit { class WebAudioDevice; }

You probably don&apos;t need to forward declare this class given that you #include public/WebAudioDevice.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806521</commentid>
    <comment_count>3</comment_count>
      <attachid>182610</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-14 12:28:35 -0800</bug_when>
    <thetext>Created attachment 182610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806522</commentid>
    <comment_count>4</comment_count>
      <attachid>182610</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-14 12:29:08 -0800</bug_when>
    <thetext>Comment on attachment 182610
Patch

Nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806549</commentid>
    <comment_count>5</comment_count>
      <attachid>182610</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 13:23:04 -0800</bug_when>
    <thetext>Comment on attachment 182610
Patch

Clearing flags on attachment: 182610

Committed r139652: &lt;http://trac.webkit.org/changeset/139652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806550</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 13:23:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182594</attachid>
            <date>2013-01-14 09:52:51 -0800</date>
            <delta_ts>2013-01-14 12:28:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106803-20130114124844.patch</filename>
            <type>text/plain</type>
            <size>23881</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTE0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIGludG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IHJlYWxseSBiZWxvbmcg
aW4gV2ViS2l0L2Nocm9taXVtL3NyYyBzaW5jZSBpdCBkZWZpbmVzCisgICAgICAgIHRoaW5ncyBk
aXJlY3RseSBpbiB0aGUgV2ViQ29yZSBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06On5BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6cmVuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6cHJvdmlkZUlucHV0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OmlzUGxh
eWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnNhbXBs
ZVJhdGUpOgorCiAyMDEzLTAxLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbVjhdIE1ha2UgYW4gSXNvbGF0ZSBwYXJhbWV0ZXIgbWFuZGF0b3J5IGlu
IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzYxNiw2ICszNjE2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rl
c3RpbmF0aW9uQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvQnVzTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hy
b21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21p
dW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQXVkaW9GSUZP
LmgiCisjaW5jbHVkZSAiQXVkaW9QdWxsRklGTy5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8vIEJ1ZmZlciBzaXplIGF0IHdoaWNoIHRoZSB3ZWIgYXVkaW8gZW5naW5lIHdpbGwgcmVuZGVy
LgorY29uc3QgdW5zaWduZWQgcmVuZGVyQnVmZmVyU2l6ZSA9IDEyODsKKworLy8gU2l6ZSBvZiB0
aGUgRklGTworY29uc3Qgc2l6ZV90IGZpZm9TaXplID0gODE5MjsKKworLy8gRmFjdG9yeSBtZXRo
b2Q6IENocm9taXVtLWltcGxlbWVudGF0aW9uCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+
IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rl
c3RpbmF0aW9uQ2hyb21pdW0oY2FsbGJhY2ssIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOworfQorCitBdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNr
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQor
ICAgICwgbV9udW1iZXJPZk91dHB1dENoYW5uZWxzKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCisg
ICAgLCBtX2lucHV0QnVzKG51bWJlck9mSW5wdXRDaGFubmVscywgcmVuZGVyQnVmZmVyU2l6ZSkK
KyAgICAsIG1fcmVuZGVyQnVzKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHJlbmRlckJ1ZmZlclNp
emUsIGZhbHNlKQorICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgLCBtX2lzUGxh
eWluZyhmYWxzZSkKK3sKKyAgICAvLyBVc2UgdGhlIG9wdGltYWwgYnVmZmVyIHNpemUgcmVjb21t
ZW5kZWQgYnkgdGhlIGF1ZGlvIGJhY2tlbmQuCisgICAgbV9jYWxsYmFja0J1ZmZlclNpemUgPSBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmF1ZGlvSGFyZHdhcmVCdWZmZXJTaXplKCk7CisK
KyAgICAvLyBRdWljayBleGl0IGlmIHRoZSByZXF1ZXN0ZWQgc2l6ZSBpcyB0b28gbGFyZ2UuCisg
ICAgQVNTRVJUKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA8PSBmaWZv
U2l6ZSk7CisgICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJTaXplICsgcmVuZGVyQnVmZmVyU2l6ZSA+
IGZpZm9TaXplKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogc3dpdGNoIHRvIG5l
dyBBUEkgKHdpdGggaW5wdXQgY2hhbm5lbHMpIG9uY2UgY2hyb21pdW0gc3VwcG9ydHMgaXQuCisg
ICAgbV9hdWRpb0RldmljZSA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
Y3JlYXRlQXVkaW9EZXZpY2UobV9jYWxsYmFja0J1ZmZlclNpemUsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUsIHRoaXMpKTsKKyAgICBBU1NFUlQobV9hdWRpb0RldmljZSk7CisK
KyAgICAvLyBDcmVhdGUgYSBGSUZPIHRvIGhhbmRsZSB0aGUgcG9zc2liaWxpdHkgb2YgdGhlIGNh
bGxiYWNrIHNpemUKKyAgICAvLyBub3QgYmVpbmcgYSBtdWx0aXBsZSBvZiB0aGUgcmVuZGVyIHNp
emUuIElmIHRoZSBGSUZPIGFscmVhZHkKKyAgICAvLyBjb250YWlucyBlbm91Z2ggZGF0YSwgdGhl
IGRhdGEgd2lsbCBiZSBwcm92aWRlZCBkaXJlY3RseS4KKyAgICAvLyBPdGhlcndpc2UsIHRoZSBG
SUZPIHdpbGwgY2FsbCB0aGUgcHJvdmlkZXIgZW5vdWdoIHRpbWVzIHRvCisgICAgLy8gc2F0aXNm
eSB0aGUgcmVxdWVzdCBmb3IgZGF0YS4KKyAgICBtX2ZpZm8gPSBhZG9wdFB0cihuZXcgQXVkaW9Q
dWxsRklGTygqdGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmlmb1NpemUsIHJlbmRlckJ1
ZmZlclNpemUpKTsKKworICAgIC8vIElucHV0IGJ1ZmZlcmluZy4KKyAgICBtX2lucHV0RmlmbyA9
IGFkb3B0UHRyKG5ldyBBdWRpb0ZJRk8obnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBmaWZvU2l6ZSkp
OworCisgICAgLy8gSWYgdGhlIGNhbGxiYWNrIHNpemUgZG9lcyBub3QgbWF0Y2ggdGhlIHJlbmRl
ciBzaXplLCB0aGVuIHdlIG5lZWQgdG8gYnVmZmVyIHNvbWUKKyAgICAvLyBleHRyYSBzaWxlbmNl
IGZvciB0aGUgaW5wdXQuIE90aGVyd2lzZSwgd2UgY2FuIG92ZXItY29uc3VtZSB0aGUgaW5wdXQg
RklGTy4KKyAgICBpZiAobV9jYWxsYmFja0J1ZmZlclNpemUgIT0gcmVuZGVyQnVmZmVyU2l6ZSkg
eworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG11bHRpLWNoYW5uZWwgaW5wdXQgYW5kIGRvbid0
IGhhcmQtY29kZSB0byBzdGVyZW8uCisgICAgICAgIEF1ZGlvQnVzIHNpbGVuY2UoMiwgcmVuZGVy
QnVmZmVyU2l6ZSk7CisgICAgICAgIG1faW5wdXRGaWZvLT5wdXNoKCZzaWxlbmNlKTsKKyAgICB9
Cit9CisKK0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6fkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1
bSgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
c3RhcnQoKQoreworICAgIGlmICghbV9pc1BsYXlpbmcgJiYgbV9hdWRpb0RldmljZSkgeworICAg
ICAgICBtX2F1ZGlvRGV2aWNlLT5zdGFydCgpOworICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7
CisgICAgfQorfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6c3RvcCgpCit7Cisg
ICAgaWYgKG1faXNQbGF5aW5nICYmIG1fYXVkaW9EZXZpY2UpIHsKKyAgICAgICAgbV9hdWRpb0Rl
dmljZS0+c3RvcCgpOworICAgICAgICBtX2lzUGxheWluZyA9IGZhbHNlOworICAgIH0KK30KKwor
ZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+YXVkaW9I
YXJkd2FyZVNhbXBsZVJhdGUoKSk7Cit9CisKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
OjpyZW5kZXIoY29uc3QgV2ViVmVjdG9yPGZsb2F0Kj4mIHNvdXJjZURhdGEsIGNvbnN0IFdlYlZl
Y3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBi
b29sIGlzTnVtYmVyT2ZDaGFubmVsc0dvb2QgPSBhdWRpb0RhdGEuc2l6ZSgpID09IG1fbnVtYmVy
T2ZPdXRwdXRDaGFubmVsczsKKyAgICBpZiAoIWlzTnVtYmVyT2ZDaGFubmVsc0dvb2QpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBib29sIGlzQnVmZmVyU2l6ZUdvb2QgPSBudW1iZXJPZkZyYW1lcyA9PSBtX2NhbGxiYWNrQnVm
ZmVyU2l6ZTsKKyAgICBpZiAoIWlzQnVmZmVyU2l6ZUdvb2QpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBCdWZmZXIgb3B0
aW9uYWwgbGl2ZSBpbnB1dC4KKyAgICBpZiAoc291cmNlRGF0YS5zaXplKCkgPj0gMikgeworICAg
ICAgICAvLyBGSVhNRTogaGFuZGxlIG11bHRpLWNoYW5uZWwgaW5wdXQgYW5kIGRvbid0IGhhcmQt
Y29kZSB0byBzdGVyZW8uCisgICAgICAgIEF1ZGlvQnVzIHdyYXBwZXJCdXMoMiwgbnVtYmVyT2ZG
cmFtZXMsIGZhbHNlKTsKKyAgICAgICAgd3JhcHBlckJ1cy5zZXRDaGFubmVsTWVtb3J5KDAsIHNv
dXJjZURhdGFbMF0sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgd3JhcHBlckJ1cy5zZXRDaGFu
bmVsTWVtb3J5KDEsIHNvdXJjZURhdGFbMV0sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgbV9p
bnB1dEZpZm8tPnB1c2goJndyYXBwZXJCdXMpOworICAgIH0KKworICAgIG1fcmVuZGVyQnVzLnNl
dENoYW5uZWxNZW1vcnkoMCwgYXVkaW9EYXRhWzBdLCBudW1iZXJPZkZyYW1lcyk7CisgICAgbV9y
ZW5kZXJCdXMuc2V0Q2hhbm5lbE1lbW9yeSgxLCBhdWRpb0RhdGFbMV0sIG51bWJlck9mRnJhbWVz
KTsKKworICAgIG1fZmlmby0+Y29uc3VtZSgmbV9yZW5kZXJCdXMsIG51bWJlck9mRnJhbWVzKTsK
K30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnByb3ZpZGVJbnB1dChBdWRpb0J1
cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBzb3VyY2VC
dXMgPSAwOworICAgIGlmIChtX2lucHV0Rmlmby0+ZnJhbWVzSW5GaWZvKCkgPj0gZnJhbWVzVG9Q
cm9jZXNzKSB7CisgICAgICAgIG1faW5wdXRGaWZvLT5jb25zdW1lKCZtX2lucHV0QnVzLCBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgICAgICBzb3VyY2VCdXMgPSAmbV9pbnB1dEJ1czsKKyAgICB9CisK
KyAgICBtX2NhbGxiYWNrLnJlbmRlcihzb3VyY2VCdXMsIGJ1cywgZnJhbWVzVG9Qcm9jZXNzKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlv
bkNocm9taXVtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bV9oCisjZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bV9o
CisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIK
KyNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkF1ZGlvRGV2aWNlLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViQXVkaW9EZXZp
Y2U7IH0KKworbmFtZXNwYWNlIFdlYkNvcmUgeyAKKworY2xhc3MgQXVkaW9GSUZPOworY2xhc3Mg
QXVkaW9QdWxsRklGTzsKKworLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDaHJvbWl1bSdz
IGF1ZGlvIHN5c3RlbQorCitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0gOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIFdlYktpdDo6V2ViQXVkaW9EZXZpY2U6OlJlbmRlckNh
bGxiYWNrLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CitwdWJsaWM6CisgICAgQXVkaW9E
ZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSk7CisgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIGJvb2wg
aXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KKworICAgIGZsb2F0IHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKworICAgIC8vIFdlYktpdDo6V2Vi
QXVkaW9EZXZpY2U6OlJlbmRlckNhbGxiYWNrCisgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25z
dCBXZWJLaXQ6OldlYlZlY3RvcjxmbG9hdCo+JiBzb3VyY2VEYXRhLCBjb25zdCBXZWJLaXQ6Oldl
YlZlY3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisKKyAg
ICAvLyBXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyCisgICAgdmlydHVhbCB2b2lkIHByb3Zp
ZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworCitwcml2YXRlOgor
ICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKKyAgICB1bnNpZ25lZCBtX251bWJlck9m
T3V0cHV0Q2hhbm5lbHM7CisgICAgQXVkaW9CdXMgbV9pbnB1dEJ1czsKKyAgICBBdWRpb0J1cyBt
X3JlbmRlckJ1czsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgYm9vbCBtX2lzUGxheWlu
ZzsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJBdWRpb0RldmljZT4gbV9hdWRpb0RldmljZTsKKyAg
ICBzaXplX3QgbV9jYWxsYmFja0J1ZmZlclNpemU7CisKKyAgICBPd25QdHI8QXVkaW9GSUZPPiBt
X2lucHV0RmlmbzsKKyAgICBPd25QdHI8QXVkaW9QdWxsRklGTz4gbV9maWZvOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzk2MjIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDEzLTAxLTE0ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIGludG8g
V2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2ODAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBkb2Vzbid0IHJlYWxseSBiZWxvbmcgaW4gV2ViS2l0L2Nocm9taXVtL3NyYyBzaW5jZSBp
dCBkZWZpbmVzCisgICAgICAgIHRoaW5ncyBkaXJlY3RseSBpbiB0aGUgV2ViQ29yZSBuYW1lc3Bh
Y2UuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9BdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9BdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW0uaDogUmVtb3ZlZC4KKwogMjAxMy0wMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNYWtlIGFuIElzb2xhdGUgcGFyYW1ldGVy
IG1hbmRhdG9yeSBpbiBTY3JpcHREZWJ1Z1NlcnZlcjo6aW50ZXJydXB0QW5kUnVuKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDggKzM1MCw2
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oJywKLSAgICAgICAgICAgICAg
ICAnc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgICAgICdz
cmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQXV0
b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0F1dG9maWxs
UG9wdXBNZW51Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdzcmMvQmFja0ZvcndhcmRMaXN0
Q2hyb21pdW0uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAkocmV2aXNpb24gMTM5NjIyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwxNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJfQVVESU8pCi0jaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
LmgiCi0jaW5jbHVkZSAiQXVkaW9GSUZPLmgiCi0jaW5jbHVkZSAiQXVkaW9QdWxsRklGTy5oIgot
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0Owot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEJ1ZmZlciBzaXplIGF0IHdoaWNoIHRoZSB3ZWIg
YXVkaW8gZW5naW5lIHdpbGwgcmVuZGVyLgotY29uc3QgdW5zaWduZWQgcmVuZGVyQnVmZmVyU2l6
ZSA9IDEyODsKLQotLy8gU2l6ZSBvZiB0aGUgRklGTwotY29uc3Qgc2l6ZV90IGZpZm9TaXplID0g
ODE5MjsKLQotLy8gRmFjdG9yeSBtZXRob2Q6IENocm9taXVtLWltcGxlbWVudGF0aW9uCi1QYXNz
T3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oY2FsbGJhY2ssIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpOwot
fQotCi1BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQotICAgICwgbV9udW1iZXJPZk91dHB1dENoYW5uZWxzKG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpCi0gICAgLCBtX2lucHV0QnVzKG51bWJlck9mSW5wdXRDaGFu
bmVscywgcmVuZGVyQnVmZmVyU2l6ZSkKLSAgICAsIG1fcmVuZGVyQnVzKG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIHJlbmRlckJ1ZmZlclNpemUsIGZhbHNlKQotICAgICwgbV9zYW1wbGVSYXRlKHNh
bXBsZVJhdGUpCi0gICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLXsKLSAgICAvLyBVc2UgdGhlIG9w
dGltYWwgYnVmZmVyIHNpemUgcmVjb21tZW5kZWQgYnkgdGhlIGF1ZGlvIGJhY2tlbmQuCi0gICAg
bV9jYWxsYmFja0J1ZmZlclNpemUgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmF1ZGlv
SGFyZHdhcmVCdWZmZXJTaXplKCk7Ci0KLSAgICAvLyBRdWljayBleGl0IGlmIHRoZSByZXF1ZXN0
ZWQgc2l6ZSBpcyB0b28gbGFyZ2UuCi0gICAgQVNTRVJUKG1fY2FsbGJhY2tCdWZmZXJTaXplICsg
cmVuZGVyQnVmZmVyU2l6ZSA8PSBmaWZvU2l6ZSk7Ci0gICAgaWYgKG1fY2FsbGJhY2tCdWZmZXJT
aXplICsgcmVuZGVyQnVmZmVyU2l6ZSA+IGZpZm9TaXplKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBGSVhNRTogc3dpdGNoIHRvIG5ldyBBUEkgKHdpdGggaW5wdXQgY2hhbm5lbHMpIG9uY2Ug
Y2hyb21pdW0gc3VwcG9ydHMgaXQuCi0gICAgbV9hdWRpb0RldmljZSA9IGFkb3B0UHRyKFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlQXVkaW9EZXZpY2UobV9jYWxsYmFja0J1ZmZl
clNpemUsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUsIHRoaXMpKTsKLSAgICBB
U1NFUlQobV9hdWRpb0RldmljZSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBGSUZPIHRvIGhhbmRsZSB0
aGUgcG9zc2liaWxpdHkgb2YgdGhlIGNhbGxiYWNrIHNpemUKLSAgICAvLyBub3QgYmVpbmcgYSBt
dWx0aXBsZSBvZiB0aGUgcmVuZGVyIHNpemUuIElmIHRoZSBGSUZPIGFscmVhZHkKLSAgICAvLyBj
b250YWlucyBlbm91Z2ggZGF0YSwgdGhlIGRhdGEgd2lsbCBiZSBwcm92aWRlZCBkaXJlY3RseS4K
LSAgICAvLyBPdGhlcndpc2UsIHRoZSBGSUZPIHdpbGwgY2FsbCB0aGUgcHJvdmlkZXIgZW5vdWdo
IHRpbWVzIHRvCi0gICAgLy8gc2F0aXNmeSB0aGUgcmVxdWVzdCBmb3IgZGF0YS4KLSAgICBtX2Zp
Zm8gPSBhZG9wdFB0cihuZXcgQXVkaW9QdWxsRklGTygqdGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgZmlmb1NpemUsIHJlbmRlckJ1ZmZlclNpemUpKTsKLQotICAgIC8vIElucHV0IGJ1ZmZl
cmluZy4KLSAgICBtX2lucHV0RmlmbyA9IGFkb3B0UHRyKG5ldyBBdWRpb0ZJRk8obnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCBmaWZvU2l6ZSkpOwotCi0gICAgLy8gSWYgdGhlIGNhbGxiYWNrIHNpemUg
ZG9lcyBub3QgbWF0Y2ggdGhlIHJlbmRlciBzaXplLCB0aGVuIHdlIG5lZWQgdG8gYnVmZmVyIHNv
bWUKLSAgICAvLyBleHRyYSBzaWxlbmNlIGZvciB0aGUgaW5wdXQuIE90aGVyd2lzZSwgd2UgY2Fu
IG92ZXItY29uc3VtZSB0aGUgaW5wdXQgRklGTy4KLSAgICBpZiAobV9jYWxsYmFja0J1ZmZlclNp
emUgIT0gcmVuZGVyQnVmZmVyU2l6ZSkgewotICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG11bHRp
LWNoYW5uZWwgaW5wdXQgYW5kIGRvbid0IGhhcmQtY29kZSB0byBzdGVyZW8uCi0gICAgICAgIEF1
ZGlvQnVzIHNpbGVuY2UoMiwgcmVuZGVyQnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1faW5wdXRGaWZv
LT5wdXNoKCZzaWxlbmNlKTsKLSAgICB9Ci19Ci0KLUF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
fkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi12b2lkIEF1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6c3RhcnQoKQotewotICAgIGlmICghbV9pc1BsYXlpbmcg
JiYgbV9hdWRpb0RldmljZSkgewotICAgICAgICBtX2F1ZGlvRGV2aWNlLT5zdGFydCgpOwotICAg
ICAgICBtX2lzUGxheWluZyA9IHRydWU7Ci0gICAgfQotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bTo6c3RvcCgpCi17Ci0gICAgaWYgKG1faXNQbGF5aW5nICYmIG1fYXVkaW9EZXZp
Y2UpIHsKLSAgICAgICAgbV9hdWRpb0RldmljZS0+c3RvcCgpOwotICAgICAgICBtX2lzUGxheWlu
ZyA9IGZhbHNlOwotICAgIH0KLX0KLQotZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVT
YW1wbGVSYXRlKCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+YXVkaW9IYXJkd2FyZVNhbXBsZVJhdGUoKSk7Ci19Ci0KLXZvaWQg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpyZW5kZXIoY29uc3QgV2ViVmVjdG9yPGZsb2F0Kj4m
IHNvdXJjZURhdGEsIGNvbnN0IFdlYlZlY3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcykKLXsKLSAgICBib29sIGlzTnVtYmVyT2ZDaGFubmVsc0dvb2QgPSBhdWRp
b0RhdGEuc2l6ZSgpID09IG1fbnVtYmVyT2ZPdXRwdXRDaGFubmVsczsKLSAgICBpZiAoIWlzTnVt
YmVyT2ZDaGFubmVsc0dvb2QpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGlzQnVmZmVyU2l6ZUdvb2QgPSBudW1iZXJP
ZkZyYW1lcyA9PSBtX2NhbGxiYWNrQnVmZmVyU2l6ZTsKLSAgICBpZiAoIWlzQnVmZmVyU2l6ZUdv
b2QpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBCdWZmZXIgb3B0aW9uYWwgbGl2ZSBpbnB1dC4KLSAgICBpZiAoc291cmNl
RGF0YS5zaXplKCkgPj0gMikgewotICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG11bHRpLWNoYW5u
ZWwgaW5wdXQgYW5kIGRvbid0IGhhcmQtY29kZSB0byBzdGVyZW8uCi0gICAgICAgIEF1ZGlvQnVz
IHdyYXBwZXJCdXMoMiwgbnVtYmVyT2ZGcmFtZXMsIGZhbHNlKTsKLSAgICAgICAgd3JhcHBlckJ1
cy5zZXRDaGFubmVsTWVtb3J5KDAsIHNvdXJjZURhdGFbMF0sIG51bWJlck9mRnJhbWVzKTsKLSAg
ICAgICAgd3JhcHBlckJ1cy5zZXRDaGFubmVsTWVtb3J5KDEsIHNvdXJjZURhdGFbMV0sIG51bWJl
ck9mRnJhbWVzKTsKLSAgICAgICAgbV9pbnB1dEZpZm8tPnB1c2goJndyYXBwZXJCdXMpOwotICAg
IH0KLQotICAgIG1fcmVuZGVyQnVzLnNldENoYW5uZWxNZW1vcnkoMCwgYXVkaW9EYXRhWzBdLCBu
dW1iZXJPZkZyYW1lcyk7Ci0gICAgbV9yZW5kZXJCdXMuc2V0Q2hhbm5lbE1lbW9yeSgxLCBhdWRp
b0RhdGFbMV0sIG51bWJlck9mRnJhbWVzKTsKLQotICAgIG1fZmlmby0+Y29uc3VtZSgmbV9yZW5k
ZXJCdXMsIG51bWJlck9mRnJhbWVzKTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW06OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQot
ewotICAgIEF1ZGlvQnVzKiBzb3VyY2VCdXMgPSAwOwotICAgIGlmIChtX2lucHV0Rmlmby0+ZnJh
bWVzSW5GaWZvKCkgPj0gZnJhbWVzVG9Qcm9jZXNzKSB7Ci0gICAgICAgIG1faW5wdXRGaWZvLT5j
b25zdW1lKCZtX2lucHV0QnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICBzb3VyY2VCdXMg
PSAmbV9pbnB1dEJ1czsKLSAgICB9Ci0KLSAgICBtX2NhbGxiYWNrLnJlbmRlcihzb3VyY2VCdXMs
IGJ1cywgZnJhbWVzVG9Qcm9jZXNzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCShyZXZpc2lvbiAxMzk2
MjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW1faAotI2RlZmluZSBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW1faAotCi0j
aW5jbHVkZSAiQXVkaW9CdXMuaCIKLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0jaW5j
bHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5o
IgotI2luY2x1ZGUgPHB1YmxpYy9XZWJBdWRpb0RldmljZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJWZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYkF1ZGlvRGV2aWNlOyB9
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgCi0KLWNsYXNzIEF1ZGlvRklGTzsKLWNsYXNzIEF1ZGlv
UHVsbEZJRk87Ci0KLS8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ2hyb21pdW0ncyBhdWRp
byBzeXN0ZW0KLQotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIDogcHVibGljIEF1ZGlv
RGVzdGluYXRpb24sIHB1YmxpYyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFj
aywgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgewotcHVibGljOgotICAgIEF1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bShBdWRpb0lPQ2FsbGJhY2smLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUp
OwotICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSgpOwotCi0gICAgdmlydHVh
bCB2b2lkIHN0YXJ0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLSAgICBib29sIGlzUGxh
eWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0KLSAgICAvLyBXZWJLaXQ6OldlYkF1ZGlv
RGV2aWNlOjpSZW5kZXJDYWxsYmFjawotICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoY29uc3QgV2Vi
S2l0OjpXZWJWZWN0b3I8ZmxvYXQqPiYgc291cmNlRGF0YSwgY29uc3QgV2ViS2l0OjpXZWJWZWN0
b3I8ZmxvYXQqPiYgYXVkaW9EYXRhLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgLy8g
V2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlcgotICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlSW5w
dXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLQotcHJpdmF0ZToKLSAgICBB
dWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7Ci0gICAgdW5zaWduZWQgbV9udW1iZXJPZk91dHB1
dENoYW5uZWxzOwotICAgIEF1ZGlvQnVzIG1faW5wdXRCdXM7Ci0gICAgQXVkaW9CdXMgbV9yZW5k
ZXJCdXM7Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlOwotICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0g
ICAgT3duUHRyPFdlYktpdDo6V2ViQXVkaW9EZXZpY2U+IG1fYXVkaW9EZXZpY2U7Ci0gICAgc2l6
ZV90IG1fY2FsbGJhY2tCdWZmZXJTaXplOwotCi0gICAgT3duUHRyPEF1ZGlvRklGTz4gbV9pbnB1
dEZpZm87Ci0gICAgT3duUHRyPEF1ZGlvUHVsbEZJRk8+IG1fZmlmbzsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182610</attachid>
            <date>2013-01-14 12:28:35 -0800</date>
            <delta_ts>2013-01-14 13:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106803-20130114152428.patch</filename>
            <type>text/plain</type>
            <size>23826</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTE0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIGludG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IHJlYWxseSBiZWxvbmcg
aW4gV2ViS2l0L2Nocm9taXVtL3NyYyBzaW5jZSBpdCBkZWZpbmVzCisgICAgICAgIHRoaW5ncyBk
aXJlY3RseSBpbiB0aGUgV2ViQ29yZSBuYW1lc3BhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06On5BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6cmVuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6cHJvdmlkZUlucHV0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OmlzUGxh
eWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnNhbXBs
ZVJhdGUpOgorCiAyMDEzLTAxLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbVjhdIE1ha2UgYW4gSXNvbGF0ZSBwYXJhbWV0ZXIgbWFuZGF0b3J5IGlu
IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEzOTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzYxNiw2ICszNjE2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rl
c3RpbmF0aW9uQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvQnVzTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hy
b21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21p
dW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisj
aW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgiCisKKyNpbmNsdWRlICJBdWRpb0ZJ
Rk8uaCIKKyNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQnVmZmVyIHNpemUgYXQgd2hpY2gg
dGhlIHdlYiBhdWRpbyBlbmdpbmUgd2lsbCByZW5kZXIuCitjb25zdCB1bnNpZ25lZCByZW5kZXJC
dWZmZXJTaXplID0gMTI4OworCisvLyBTaXplIG9mIHRoZSBGSUZPCitjb25zdCBzaXplX3QgZmlm
b1NpemUgPSA4MTkyOworCisvLyBGYWN0b3J5IG1ldGhvZDogQ2hyb21pdW0taW1wbGVtZW50YXRp
b24KK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRl
KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxsYmFj
aywgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVS
YXRlKSk7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX251bWJlck9mT3V0cHV0Q2hh
bm5lbHMobnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAsIG1faW5wdXRCdXMobnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCByZW5kZXJCdWZmZXJTaXplKQorICAgICwgbV9yZW5kZXJCdXMobnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgcmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpCisgICAgLCBtX3NhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSkKKyAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQoreworICAgIC8vIFVz
ZSB0aGUgb3B0aW1hbCBidWZmZXIgc2l6ZSByZWNvbW1lbmRlZCBieSB0aGUgYXVkaW8gYmFja2Vu
ZC4KKyAgICBtX2NhbGxiYWNrQnVmZmVyU2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+YXVkaW9IYXJkd2FyZUJ1ZmZlclNpemUoKTsKKworICAgIC8vIFF1aWNrIGV4aXQgaWYgdGhl
IHJlcXVlc3RlZCBzaXplIGlzIHRvbyBsYXJnZS4KKyAgICBBU1NFUlQobV9jYWxsYmFja0J1ZmZl
clNpemUgKyByZW5kZXJCdWZmZXJTaXplIDw9IGZpZm9TaXplKTsKKyAgICBpZiAobV9jYWxsYmFj
a0J1ZmZlclNpemUgKyByZW5kZXJCdWZmZXJTaXplID4gZmlmb1NpemUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBzd2l0Y2ggdG8gbmV3IEFQSSAod2l0aCBpbnB1dCBjaGFubmVs
cykgb25jZSBjaHJvbWl1bSBzdXBwb3J0cyBpdC4KKyAgICBtX2F1ZGlvRGV2aWNlID0gYWRvcHRQ
dHIoV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVBdWRpb0RldmljZShtX2NhbGxi
YWNrQnVmZmVyU2l6ZSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcykp
OworICAgIEFTU0VSVChtX2F1ZGlvRGV2aWNlKTsKKworICAgIC8vIENyZWF0ZSBhIEZJRk8gdG8g
aGFuZGxlIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgY2FsbGJhY2sgc2l6ZQorICAgIC8vIG5vdCBi
ZWluZyBhIG11bHRpcGxlIG9mIHRoZSByZW5kZXIgc2l6ZS4gSWYgdGhlIEZJRk8gYWxyZWFkeQor
ICAgIC8vIGNvbnRhaW5zIGVub3VnaCBkYXRhLCB0aGUgZGF0YSB3aWxsIGJlIHByb3ZpZGVkIGRp
cmVjdGx5LgorICAgIC8vIE90aGVyd2lzZSwgdGhlIEZJRk8gd2lsbCBjYWxsIHRoZSBwcm92aWRl
ciBlbm91Z2ggdGltZXMgdG8KKyAgICAvLyBzYXRpc2Z5IHRoZSByZXF1ZXN0IGZvciBkYXRhLgor
ICAgIG1fZmlmbyA9IGFkb3B0UHRyKG5ldyBBdWRpb1B1bGxGSUZPKCp0aGlzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmaWZvU2l6ZSwgcmVuZGVyQnVmZmVyU2l6ZSkpOworCisgICAgLy8gSW5w
dXQgYnVmZmVyaW5nLgorICAgIG1faW5wdXRGaWZvID0gYWRvcHRQdHIobmV3IEF1ZGlvRklGTyhu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIGZpZm9TaXplKSk7CisKKyAgICAvLyBJZiB0aGUgY2FsbGJh
Y2sgc2l6ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVuZGVyIHNpemUsIHRoZW4gd2UgbmVlZCB0byBi
dWZmZXIgc29tZQorICAgIC8vIGV4dHJhIHNpbGVuY2UgZm9yIHRoZSBpbnB1dC4gT3RoZXJ3aXNl
LCB3ZSBjYW4gb3Zlci1jb25zdW1lIHRoZSBpbnB1dCBGSUZPLgorICAgIGlmIChtX2NhbGxiYWNr
QnVmZmVyU2l6ZSAhPSByZW5kZXJCdWZmZXJTaXplKSB7CisgICAgICAgIC8vIEZJWE1FOiBoYW5k
bGUgbXVsdGktY2hhbm5lbCBpbnB1dCBhbmQgZG9uJ3QgaGFyZC1jb2RlIHRvIHN0ZXJlby4KKyAg
ICAgICAgQXVkaW9CdXMgc2lsZW5jZSgyLCByZW5kZXJCdWZmZXJTaXplKTsKKyAgICAgICAgbV9p
bnB1dEZpZm8tPnB1c2goJnNpbGVuY2UpOworICAgIH0KK30KKworQXVkaW9EZXN0aW5hdGlvbkNo
cm9taXVtOjp+QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCkKK3sKKyAgICBzdG9wKCk7Cit9CisK
K3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpzdGFydCgpCit7CisgICAgaWYgKCFtX2lz
UGxheWluZyAmJiBtX2F1ZGlvRGV2aWNlKSB7CisgICAgICAgIG1fYXVkaW9EZXZpY2UtPnN0YXJ0
KCk7CisgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9E
ZXN0aW5hdGlvbkNocm9taXVtOjpzdG9wKCkKK3sKKyAgICBpZiAobV9pc1BsYXlpbmcgJiYgbV9h
dWRpb0RldmljZSkgeworICAgICAgICBtX2F1ZGlvRGV2aWNlLT5zdG9wKCk7CisgICAgICAgIG1f
aXNQbGF5aW5nID0gZmFsc2U7CisgICAgfQorfQorCitmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5hdWRpb0hhcmR3YXJlU2FtcGxlUmF0ZSgpKTsKK30K
Kwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnJlbmRlcihjb25zdCBXZWJLaXQ6Oldl
YlZlY3RvcjxmbG9hdCo+JiBzb3VyY2VEYXRhLCBjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxmbG9h
dCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKK3sKKyAgICBib29sIGlzTnVt
YmVyT2ZDaGFubmVsc0dvb2QgPSBhdWRpb0RhdGEuc2l6ZSgpID09IG1fbnVtYmVyT2ZPdXRwdXRD
aGFubmVsczsKKyAgICBpZiAoIWlzTnVtYmVyT2ZDaGFubmVsc0dvb2QpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGlz
QnVmZmVyU2l6ZUdvb2QgPSBudW1iZXJPZkZyYW1lcyA9PSBtX2NhbGxiYWNrQnVmZmVyU2l6ZTsK
KyAgICBpZiAoIWlzQnVmZmVyU2l6ZUdvb2QpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBCdWZmZXIgb3B0aW9uYWwgbGl2
ZSBpbnB1dC4KKyAgICBpZiAoc291cmNlRGF0YS5zaXplKCkgPj0gMikgeworICAgICAgICAvLyBG
SVhNRTogaGFuZGxlIG11bHRpLWNoYW5uZWwgaW5wdXQgYW5kIGRvbid0IGhhcmQtY29kZSB0byBz
dGVyZW8uCisgICAgICAgIEF1ZGlvQnVzIHdyYXBwZXJCdXMoMiwgbnVtYmVyT2ZGcmFtZXMsIGZh
bHNlKTsKKyAgICAgICAgd3JhcHBlckJ1cy5zZXRDaGFubmVsTWVtb3J5KDAsIHNvdXJjZURhdGFb
MF0sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgd3JhcHBlckJ1cy5zZXRDaGFubmVsTWVtb3J5
KDEsIHNvdXJjZURhdGFbMV0sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgbV9pbnB1dEZpZm8t
PnB1c2goJndyYXBwZXJCdXMpOworICAgIH0KKworICAgIG1fcmVuZGVyQnVzLnNldENoYW5uZWxN
ZW1vcnkoMCwgYXVkaW9EYXRhWzBdLCBudW1iZXJPZkZyYW1lcyk7CisgICAgbV9yZW5kZXJCdXMu
c2V0Q2hhbm5lbE1lbW9yeSgxLCBhdWRpb0RhdGFbMV0sIG51bWJlck9mRnJhbWVzKTsKKworICAg
IG1fZmlmby0+Y29uc3VtZSgmbV9yZW5kZXJCdXMsIG51bWJlck9mRnJhbWVzKTsKK30KKwordm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBzb3VyY2VCdXMgPSAwOwor
ICAgIGlmIChtX2lucHV0Rmlmby0+ZnJhbWVzSW5GaWZvKCkgPj0gZnJhbWVzVG9Qcm9jZXNzKSB7
CisgICAgICAgIG1faW5wdXRGaWZvLT5jb25zdW1lKCZtX2lucHV0QnVzLCBmcmFtZXNUb1Byb2Nl
c3MpOworICAgICAgICBzb3VyY2VCdXMgPSAmbV9pbnB1dEJ1czsKKyAgICB9CisKKyAgICBtX2Nh
bGxiYWNrLnJlbmRlcihzb3VyY2VCdXMsIGJ1cywgZnJhbWVzVG9Qcm9jZXNzKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlvRGVzdGluYXRpb25D
aHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2No
cm9taXVtL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bV9oCisjZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bV9oCisKKyNpbmNs
dWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKyNpbmNsdWRl
ICJBdWRpb0lPQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYkF1ZGlvRGV2aWNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlZl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IAorCitjbGFzcyBBdWRpb0ZJRk87CitjbGFz
cyBBdWRpb1B1bGxGSUZPOworCisvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENocm9taXVt
J3MgYXVkaW8gc3lzdGVtCisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bSA6IHB1Ymxp
YyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgV2ViS2l0OjpXZWJBdWRpb0RldmljZTo6UmVuZGVy
Q2FsbGJhY2ssIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBBdWRp
b0Rlc3RpbmF0aW9uQ2hyb21pdW0oQXVkaW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0oKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgYm9v
bCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQorCisgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorCisgICAgLy8gV2ViS2l0OjpX
ZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2sKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyKGNv
bnN0IFdlYktpdDo6V2ViVmVjdG9yPGZsb2F0Kj4mIHNvdXJjZURhdGEsIGNvbnN0IFdlYktpdDo6
V2ViVmVjdG9yPGZsb2F0Kj4mIGF1ZGlvRGF0YSwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKKwor
ICAgIC8vIFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXIKKyAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlkZUlucHV0KEF1ZGlvQnVzKiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKK3ByaXZhdGU6
CisgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOworICAgIHVuc2lnbmVkIG1fbnVtYmVy
T2ZPdXRwdXRDaGFubmVsczsKKyAgICBBdWRpb0J1cyBtX2lucHV0QnVzOworICAgIEF1ZGlvQnVz
IG1fcmVuZGVyQnVzOworICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5
aW5nOworICAgIE93blB0cjxXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlPiBtX2F1ZGlvRGV2aWNlOwor
ICAgIHNpemVfdCBtX2NhbGxiYWNrQnVmZmVyU2l6ZTsKKworICAgIE93blB0cjxBdWRpb0ZJRk8+
IG1faW5wdXRGaWZvOworICAgIE93blB0cjxBdWRpb1B1bGxGSUZPPiBtX2ZpZm87Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW1faApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTYyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTMtMDEtMTQgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0gaW50
byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDY4MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBpbiBXZWJLaXQvY2hyb21pdW0vc3JjIHNpbmNl
IGl0IGRlZmluZXMKKyAgICAgICAgdGhpbmdzIGRpcmVjdGx5IGluIHRoZSBXZWJDb3JlIG5hbWVz
cGFjZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0F1ZGlvRGVzdGlu
YXRpb25DaHJvbWl1bS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL0F1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bS5oOiBSZW1vdmVkLgorCiAyMDEzLTAxLTE0ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIE1ha2UgYW4gSXNvbGF0ZSBwYXJhbWV0
ZXIgbWFuZGF0b3J5IGluIFNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1cHRBbmRSdW4oKQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTM5NjIyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsOCArMzUw
LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgnLAotICAgICAgICAgICAg
ICAgICdzcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9B
dXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQXV0b2Zp
bGxQb3B1cE1lbnVDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9CYWNrRm9yd2FyZExp
c3RDaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9E
ZXN0aW5hdGlvbkNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzk2MjIpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uaCIKLSNpbmNsdWRlICJBdWRpb0ZJRk8uaCIKLSNpbmNsdWRlICJBdWRpb1B1bGxGSUZPLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQnVmZmVyIHNpemUgYXQgd2hpY2ggdGhlIHdl
YiBhdWRpbyBlbmdpbmUgd2lsbCByZW5kZXIuCi1jb25zdCB1bnNpZ25lZCByZW5kZXJCdWZmZXJT
aXplID0gMTI4OwotCi0vLyBTaXplIG9mIHRoZSBGSUZPCi1jb25zdCBzaXplX3QgZmlmb1NpemUg
PSA4MTkyOwotCi0vLyBGYWN0b3J5IG1ldGhvZDogQ2hyb21pdW0taW1wbGVtZW50YXRpb24KLVBh
c3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bShjYWxsYmFjaywgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSk7
Ci19Ci0KLUF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVs
cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKLSAg
ICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCi0gICAgLCBtX251bWJlck9mT3V0cHV0Q2hhbm5lbHMo
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKLSAgICAsIG1faW5wdXRCdXMobnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCByZW5kZXJCdWZmZXJTaXplKQotICAgICwgbV9yZW5kZXJCdXMobnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgcmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpCi0gICAgLCBtX3NhbXBsZVJhdGUo
c2FtcGxlUmF0ZSkKLSAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQotewotICAgIC8vIFVzZSB0aGUg
b3B0aW1hbCBidWZmZXIgc2l6ZSByZWNvbW1lbmRlZCBieSB0aGUgYXVkaW8gYmFja2VuZC4KLSAg
ICBtX2NhbGxiYWNrQnVmZmVyU2l6ZSA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+YXVk
aW9IYXJkd2FyZUJ1ZmZlclNpemUoKTsKLQotICAgIC8vIFF1aWNrIGV4aXQgaWYgdGhlIHJlcXVl
c3RlZCBzaXplIGlzIHRvbyBsYXJnZS4KLSAgICBBU1NFUlQobV9jYWxsYmFja0J1ZmZlclNpemUg
KyByZW5kZXJCdWZmZXJTaXplIDw9IGZpZm9TaXplKTsKLSAgICBpZiAobV9jYWxsYmFja0J1ZmZl
clNpemUgKyByZW5kZXJCdWZmZXJTaXplID4gZmlmb1NpemUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIEZJWE1FOiBzd2l0Y2ggdG8gbmV3IEFQSSAod2l0aCBpbnB1dCBjaGFubmVscykgb25j
ZSBjaHJvbWl1bSBzdXBwb3J0cyBpdC4KLSAgICBtX2F1ZGlvRGV2aWNlID0gYWRvcHRQdHIoV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVBdWRpb0RldmljZShtX2NhbGxiYWNrQnVm
ZmVyU2l6ZSwgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgdGhpcykpOwotICAg
IEFTU0VSVChtX2F1ZGlvRGV2aWNlKTsKLQotICAgIC8vIENyZWF0ZSBhIEZJRk8gdG8gaGFuZGxl
IHRoZSBwb3NzaWJpbGl0eSBvZiB0aGUgY2FsbGJhY2sgc2l6ZQotICAgIC8vIG5vdCBiZWluZyBh
IG11bHRpcGxlIG9mIHRoZSByZW5kZXIgc2l6ZS4gSWYgdGhlIEZJRk8gYWxyZWFkeQotICAgIC8v
IGNvbnRhaW5zIGVub3VnaCBkYXRhLCB0aGUgZGF0YSB3aWxsIGJlIHByb3ZpZGVkIGRpcmVjdGx5
LgotICAgIC8vIE90aGVyd2lzZSwgdGhlIEZJRk8gd2lsbCBjYWxsIHRoZSBwcm92aWRlciBlbm91
Z2ggdGltZXMgdG8KLSAgICAvLyBzYXRpc2Z5IHRoZSByZXF1ZXN0IGZvciBkYXRhLgotICAgIG1f
ZmlmbyA9IGFkb3B0UHRyKG5ldyBBdWRpb1B1bGxGSUZPKCp0aGlzLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmaWZvU2l6ZSwgcmVuZGVyQnVmZmVyU2l6ZSkpOwotCi0gICAgLy8gSW5wdXQgYnVm
ZmVyaW5nLgotICAgIG1faW5wdXRGaWZvID0gYWRvcHRQdHIobmV3IEF1ZGlvRklGTyhudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIGZpZm9TaXplKSk7Ci0KLSAgICAvLyBJZiB0aGUgY2FsbGJhY2sgc2l6
ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVuZGVyIHNpemUsIHRoZW4gd2UgbmVlZCB0byBidWZmZXIg
c29tZQotICAgIC8vIGV4dHJhIHNpbGVuY2UgZm9yIHRoZSBpbnB1dC4gT3RoZXJ3aXNlLCB3ZSBj
YW4gb3Zlci1jb25zdW1lIHRoZSBpbnB1dCBGSUZPLgotICAgIGlmIChtX2NhbGxiYWNrQnVmZmVy
U2l6ZSAhPSByZW5kZXJCdWZmZXJTaXplKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgbXVs
dGktY2hhbm5lbCBpbnB1dCBhbmQgZG9uJ3QgaGFyZC1jb2RlIHRvIHN0ZXJlby4KLSAgICAgICAg
QXVkaW9CdXMgc2lsZW5jZSgyLCByZW5kZXJCdWZmZXJTaXplKTsKLSAgICAgICAgbV9pbnB1dEZp
Zm8tPnB1c2goJnNpbGVuY2UpOwotICAgIH0KLX0KLQotQXVkaW9EZXN0aW5hdGlvbkNocm9taXVt
Ojp+QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQg
QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpzdGFydCgpCi17Ci0gICAgaWYgKCFtX2lzUGxheWlu
ZyAmJiBtX2F1ZGlvRGV2aWNlKSB7Ci0gICAgICAgIG1fYXVkaW9EZXZpY2UtPnN0YXJ0KCk7Ci0g
ICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtOjpzdG9wKCkKLXsKLSAgICBpZiAobV9pc1BsYXlpbmcgJiYgbV9hdWRpb0Rl
dmljZSkgewotICAgICAgICBtX2F1ZGlvRGV2aWNlLT5zdG9wKCk7Ci0gICAgICAgIG1faXNQbGF5
aW5nID0gZmFsc2U7Ci0gICAgfQotfQotCi1mbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2Fy
ZVNhbXBsZVJhdGUoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5hdWRpb0hhcmR3YXJlU2FtcGxlUmF0ZSgpKTsKLX0KLQotdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnJlbmRlcihjb25zdCBXZWJWZWN0b3I8ZmxvYXQq
PiYgc291cmNlRGF0YSwgY29uc3QgV2ViVmVjdG9yPGZsb2F0Kj4mIGF1ZGlvRGF0YSwgc2l6ZV90
IG51bWJlck9mRnJhbWVzKQotewotICAgIGJvb2wgaXNOdW1iZXJPZkNoYW5uZWxzR29vZCA9IGF1
ZGlvRGF0YS5zaXplKCkgPT0gbV9udW1iZXJPZk91dHB1dENoYW5uZWxzOwotICAgIGlmICghaXNO
dW1iZXJPZkNoYW5uZWxzR29vZCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgaXNCdWZmZXJTaXplR29vZCA9IG51bWJl
ck9mRnJhbWVzID09IG1fY2FsbGJhY2tCdWZmZXJTaXplOwotICAgIGlmICghaXNCdWZmZXJTaXpl
R29vZCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIEJ1ZmZlciBvcHRpb25hbCBsaXZlIGlucHV0LgotICAgIGlmIChzb3Vy
Y2VEYXRhLnNpemUoKSA+PSAyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgbXVsdGktY2hh
bm5lbCBpbnB1dCBhbmQgZG9uJ3QgaGFyZC1jb2RlIHRvIHN0ZXJlby4KLSAgICAgICAgQXVkaW9C
dXMgd3JhcHBlckJ1cygyLCBudW1iZXJPZkZyYW1lcywgZmFsc2UpOwotICAgICAgICB3cmFwcGVy
QnVzLnNldENoYW5uZWxNZW1vcnkoMCwgc291cmNlRGF0YVswXSwgbnVtYmVyT2ZGcmFtZXMpOwot
ICAgICAgICB3cmFwcGVyQnVzLnNldENoYW5uZWxNZW1vcnkoMSwgc291cmNlRGF0YVsxXSwgbnVt
YmVyT2ZGcmFtZXMpOwotICAgICAgICBtX2lucHV0Rmlmby0+cHVzaCgmd3JhcHBlckJ1cyk7Ci0g
ICAgfQotCi0gICAgbV9yZW5kZXJCdXMuc2V0Q2hhbm5lbE1lbW9yeSgwLCBhdWRpb0RhdGFbMF0s
IG51bWJlck9mRnJhbWVzKTsKLSAgICBtX3JlbmRlckJ1cy5zZXRDaGFubmVsTWVtb3J5KDEsIGF1
ZGlvRGF0YVsxXSwgbnVtYmVyT2ZGcmFtZXMpOwotCi0gICAgbV9maWZvLT5jb25zdW1lKCZtX3Jl
bmRlckJ1cywgbnVtYmVyT2ZGcmFtZXMpOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bTo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
Ci17Ci0gICAgQXVkaW9CdXMqIHNvdXJjZUJ1cyA9IDA7Ci0gICAgaWYgKG1faW5wdXRGaWZvLT5m
cmFtZXNJbkZpZm8oKSA+PSBmcmFtZXNUb1Byb2Nlc3MpIHsKLSAgICAgICAgbV9pbnB1dEZpZm8t
PmNvbnN1bWUoJm1faW5wdXRCdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIHNvdXJjZUJ1
cyA9ICZtX2lucHV0QnVzOwotICAgIH0KLQotICAgIG1fY2FsbGJhY2sucmVuZGVyKHNvdXJjZUJ1
cywgYnVzLCBmcmFtZXNUb1Byb2Nlc3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmgJKHJldmlzaW9uIDEz
OTYyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEF1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bV9oCi0jZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bV9oCi0K
LSNpbmNsdWRlICJBdWRpb0J1cy5oIgotI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKLSNp
bmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVy
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkF1ZGlvRGV2aWNlLmg+Ci0jaW5jbHVkZSA8cHVibGlj
L1dlYlZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViQXVkaW9EZXZpY2U7
IH0KLQotbmFtZXNwYWNlIFdlYkNvcmUgeyAKLQotY2xhc3MgQXVkaW9GSUZPOwotY2xhc3MgQXVk
aW9QdWxsRklGTzsKLQotLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDaHJvbWl1bSdzIGF1
ZGlvIHN5c3RlbQotCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0gOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbiwgcHVibGljIFdlYktpdDo6V2ViQXVkaW9EZXZpY2U6OlJlbmRlckNhbGxi
YWNrLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7Ci1wdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSk7Ci0gICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKCk7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwotICAgIGJvb2wgaXNQ
bGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLQotICAgIGZsb2F0IHNhbXBsZVJhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLQotICAgIC8vIFdlYktpdDo6V2ViQXVk
aW9EZXZpY2U6OlJlbmRlckNhbGxiYWNrCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25zdCBX
ZWJLaXQ6OldlYlZlY3RvcjxmbG9hdCo+JiBzb3VyY2VEYXRhLCBjb25zdCBXZWJLaXQ6OldlYlZl
Y3RvcjxmbG9hdCo+JiBhdWRpb0RhdGEsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7Ci0KLSAgICAv
LyBXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVJ
bnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotCi1wcml2YXRlOgotICAg
IEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKLSAgICB1bnNpZ25lZCBtX251bWJlck9mT3V0
cHV0Q2hhbm5lbHM7Ci0gICAgQXVkaW9CdXMgbV9pbnB1dEJ1czsKLSAgICBBdWRpb0J1cyBtX3Jl
bmRlckJ1czsKLSAgICBmbG9hdCBtX3NhbXBsZVJhdGU7Ci0gICAgYm9vbCBtX2lzUGxheWluZzsK
LSAgICBPd25QdHI8V2ViS2l0OjpXZWJBdWRpb0RldmljZT4gbV9hdWRpb0RldmljZTsKLSAgICBz
aXplX3QgbV9jYWxsYmFja0J1ZmZlclNpemU7Ci0KLSAgICBPd25QdHI8QXVkaW9GSUZPPiBtX2lu
cHV0RmlmbzsKLSAgICBPd25QdHI8QXVkaW9QdWxsRklGTz4gbV9maWZvOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>