<?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>102021</bug_id>
          
          <creation_ts>2012-11-12 17:40:07 -0800</creation_ts>
          <short_desc>[chromium] Lazy image decoding without cache</short_desc>
          <delta_ts>2012-11-19 22:34:55 -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>Images</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>
          <dependson>102019</dependson>
    
    <dependson>102734</dependson>
          <blocked>99785</blocked>
    
    <blocked>99790</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Hin-Chung Lam">hclam</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>nick</cc>
    
    <cc>peter+ews</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765036</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-12 17:40:07 -0800</bug_when>
    <thetext>The goal is to make ImageDecodingStore be a simple image cache and does nothing more. 

This is the second step to refactor ImageDecodingStore and ImageFrameGenerator. The change involves moving the code to actually decode and scale an image, the code will be moved from ImageDecodingStore to ImageFrameGenerator. There should be no new code in this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765976</commentid>
    <comment_count>1</comment_count>
      <attachid>173966</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-13 13:15:07 -0800</bug_when>
    <thetext>Created attachment 173966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765978</commentid>
    <comment_count>2</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-13 13:16:53 -0800</bug_when>
    <thetext>This is the second part of refactoring, i.e. to move image decoding from ImageDecodingStore into ImageFrameGenerator. There&apos;s no new logic implemented in this change.

Pending on 102019 to review / land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770534</commentid>
    <comment_count>3</comment_count>
      <attachid>174932</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 03:05:15 -0800</bug_when>
    <thetext>Created attachment 174932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770537</commentid>
    <comment_count>4</comment_count>
      <attachid>174934</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 03:07:55 -0800</bug_when>
    <thetext>Created attachment 174934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770544</commentid>
    <comment_count>5</comment_count>
      <attachid>174934</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 03:16:02 -0800</bug_when>
    <thetext>Comment on attachment 174934
Patch

Attachment 174934 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14916143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770601</commentid>
    <comment_count>6</comment_count>
      <attachid>174934</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-19 04:31:26 -0800</bug_when>
    <thetext>Comment on attachment 174934
Patch

Attachment 174934 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14909184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770895</commentid>
    <comment_count>7</comment_count>
      <attachid>175014</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 11:47:45 -0800</bug_when>
    <thetext>Created attachment 175014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770896</commentid>
    <comment_count>8</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 11:50:02 -0800</bug_when>
    <thetext>This change is to make image decoding completely lazy without any caching. Next change I&apos;m preparing is to make this lazy decoding thread-safe such that nduca@ can proceed impl-side painting and decoding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770921</commentid>
    <comment_count>9</comment_count>
      <attachid>175014</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-19 12:06:15 -0800</bug_when>
    <thetext>Comment on attachment 175014
Patch

Looks good, bots willing.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770997</commentid>
    <comment_count>10</comment_count>
      <attachid>175036</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-11-19 13:36:05 -0800</bug_when>
    <thetext>Created attachment 175036
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771021</commentid>
    <comment_count>11</comment_count>
      <attachid>175036</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:20:47 -0800</bug_when>
    <thetext>Comment on attachment 175036
Patch for landing

Clearing flags on attachment: 175036

Committed r135196: &lt;http://trac.webkit.org/changeset/135196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771022</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:20:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771160</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 16:14:28 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 102734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771529</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-11-19 22:34:55 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Re-opened since this is blocked by bug 102734

Compiler error was fixed in http://trac.webkit.org/changeset/135253</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173966</attachid>
            <date>2012-11-13 13:15:07 -0800</date>
            <delta_ts>2012-11-19 03:05:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102021-20121113131308.patch</filename>
            <type>text/plain</type>
            <size>13506</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkxNWM0YTgyYmJkNGZk
M2FkMTAxM2M0ZTY3NWNkNGJjNmViOGU4MS4uYjMxNzRjOTZiMDM2YmNiMzcyOTU5ZDIwMTRmYjIx
ZWZjZTdiMjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTEzICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZWZhY3Rv
cmluZyB0byBtb3ZlIGxvZ2ljIG9mIGltYWdlIGRlY29kaW5nIGludG8gSW1hZ2VGcmFtZUdlbmVy
YXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
MDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR29h
bCBvZiB0aGlzIGNoYW5nZSBpcyB0byBtYWtlIEltYWdlRGVjb2RpbmdTdG9yZSBwZXJmb3JtIGNh
Y2hlCisgICAgICAgIG1hbmFnZW1lbnQuIFRoZSBsb2dpYyBvZiBpbWFnZSBkZWNvZGluZyBhbmQg
c2NhbGluZyBpcyBtb3ZlZCBpbnRvCisgICAgICAgIEltYWdlRnJhbWVHZW5lcmF0b3IuCisKKyAg
ICAgICAgSW4gcGFydGljdWxhciB0aGVzZSBtZXRob2RzIGFyZSBtb3ZlZDoKKyAgICAgICAgLSBJ
bWFnZURlY29kaW5nU3RvcmU6OmxvY2tQaXhlbHMKKyAgICAgICAgLSBJbWFnZURlY29kaW5nU3Rv
cmU6OnVubG9ja1BpeGVscworCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhlcmUncyBubyBuZXcg
Y29kZSBidXQganVzdCBtb3ZlZCBmcm9tIEltYWdlRGVjb2RpbmdTdG9yZSB0byBJbWFnZUZyYW1l
R2VuZXJhdG9yLgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuIENvZGUgaXMgdGVzdGVk
IHdpdGg6CisgICAgICAgIFVuaXQgdGVzdHM6IHdlYmtpdF91bml0X3Rlc3RzCisgICAgICAgIExh
eW91dCB0ZXN0OiBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2RlZmVycmVkCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGluZ1N0b3JlOjpjYWxsZWRPblZhbGlkVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RpbmdTdG9yZTo6aW5zZXJ0RnJhbWVDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kaW5nU3RvcmU6Omxvb2t1cEZyYW1lQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGluZ1N0b3JlOjpkZWxldGVGcmFtZUNhY2hl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3Rv
cmUuaDoKKyAgICAgICAgKEltYWdlRGVjb2RpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpsb2NrUGl4ZWxzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUdlbmVyYXRvcjo6dW5sb2NrUGl4
ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxhenlEZWNvZGluZ1BpeGVsUmVmOjpvblVubG9ja1BpeGVscyk6CisKIDIwMTIt
MTEtMTIgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFJlZmFjdG9yaW5nIHRvIG1vdmUgbG9naWMgb2YgY3JlYXRpbmcgbGF6eSBkZWNvZGVkIFNr
Qml0bWFwIGludG8gRGVmZXJyZWRJbWFnZURlY29kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3Rv
cmUuY3BwCmluZGV4IDA1YjNlMmI4ZGJkMTY0YTZjNmUzMWYyODk1NzY0OWQ3ZjhlN2UyZWMuLmU1
MzI4NTk0ZTU3N2E1M2U2OTg1ZjFiNTZkMTZhNjM1YjY0YzU5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VE
ZWNvZGluZ1N0b3JlLmNwcApAQCAtMjYsMTMgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKIAotI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgotI2luY2x1ZGUgIkltYWdlRnJhbWVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJTY2FsZWRJ
bWFnZUZyYWdtZW50LmgiCi0jaW5jbHVkZSAiU2tSZWN0LmgiCi0jaW5jbHVkZSAiU2tTaXplLmgi
Ci0KLSNpbmNsdWRlICJza2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zLmgiCiAKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogCkBAIC03NSw2OSArNjksMjIgQEAgdm9pZCBJbWFnZURlY29kaW5n
U3RvcmU6OnNodXRkb3duKCkKICAgICBzZXRJbnN0YW5jZU9uTWFpblRocmVhZCgwKTsKIH0KIAot
dm9pZCogSW1hZ2VEZWNvZGluZ1N0b3JlOjpsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFt
ZUdlbmVyYXRvcj4gZnJhbWVHZW5lcmF0b3IsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUsIGNv
bnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKK2Jvb2wgSW1hZ2VEZWNvZGluZ1N0b3JlOjpjYWxs
ZWRPblZhbGlkVGhyZWFkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY2FsbGVkT25WYWxpZFRocmVh
ZCgpKTsKLSAgICBBU1NFUlQobV9sb2NrZWRTa0JpdG1hcC5pc051bGwoKSk7Ci0KLSAgICBTa0lT
aXplIGZ1bGxTaXplID0gZnJhbWVHZW5lcmF0b3ItPmZ1bGxTaXplKCk7Ci0KLSAgICAvLyBUaGUg
Y2FjaGUgb25seSBzYXZlcyB0aGUgZnVsbCBzaXplIGltYWdlIGF0IHRoZSBtb21lbnQuCi0gICAg
U2NhbGVkSW1hZ2VGcmFnbWVudCogZnJhbWVDYWNoZSA9IGxvb2t1cEZyYW1lQ2FjaGUoZnJhbWVH
ZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUpOwotICAgIFNrQml0bWFwIGJpdG1hcDsKLQot
ICAgIGlmICghZnJhbWVDYWNoZSkgewotICAgICAgICAvLyBGSVhNRTogUGl4ZWxzIGFyZSBvd25l
ZCBieSB0aGUgSW1hZ2VEZWNvZGVyIGluIHRoZSBnZW5lcmF0b3IuIEZpbmQKLSAgICAgICAgLy8g
YSB3YXkgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIG91ciBjYWNoZS4KLSAgICAgICAgSW1hZ2VG
cmFtZSogZnJhbWUgPSBmcmFtZUdlbmVyYXRvci0+ZGVjb2RlcigpLT5mcmFtZUJ1ZmZlckF0SW5k
ZXgoMCk7Ci0KLSAgICAgICAgLy8gU2F2ZXMgdGhlIGZyYW1lIGluIGNhY2hlIGlmIHRoaXMgaXMg
Y29tcGxldGUuCi0gICAgICAgIGlmIChmcmFtZS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJh
bWVDb21wbGV0ZSkgewotICAgICAgICAgICAgbV9mcmFtZUNhY2hlLmFwcGVuZChTY2FsZWRJbWFn
ZUZyYWdtZW50OjpjcmVhdGUoZnJhbWVHZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUsIGZy
YW1lLT5nZXRTa0JpdG1hcCgpLCB0cnVlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZnJhbWUtPnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGlzIGlzIGEgZGVjb2RpbmcgZXJyb3IuIFJlcG9ydCB0aGlzIHRvIEJpdG1hcEltYWdl
LgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBiaXRtYXAgPSBm
cmFtZS0+Z2V0U2tCaXRtYXAoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoZnJhbWVD
YWNoZS0+aXNDb21wbGV0ZSgpKTsKLSAgICAgICAgYml0bWFwID0gZnJhbWVDYWNoZS0+Yml0bWFw
KCk7Ci0gICAgfQotCi0gICAgaWYgKGZ1bGxTaXplICE9IHNjYWxlZFNpemUpIHsKLSAgICAgICAg
Ly8gSW1hZ2Ugc2NhbGluZyBpcyBkb25lIG9uLXRoZS1mbHkgYW5kIHNjYWxlZCBpbWFnZSBpcyBk
ZXN0cm95ZWQKLSAgICAgICAgLy8gYWZ0ZXIgdXNlLgotICAgICAgICAvLyBGSVhNRTogUmVzaXpl
IGp1c3QgdGhlIHJlcXVlc3RlZCBmcmFnbWVudC4KLSAgICAgICAgbV9sb2NrZWRTa0JpdG1hcCA9
IHNraWE6OkltYWdlT3BlcmF0aW9uczo6UmVzaXplKGJpdG1hcCwgc2tpYTo6SW1hZ2VPcGVyYXRp
b25zOjpSRVNJWkVfTEFOQ1pPUzMsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWln
aHQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBiaXRtYXA7Ci0g
ICAgbV9sb2NrZWRTa0JpdG1hcC5sb2NrUGl4ZWxzKCk7Ci0gICAgcmV0dXJuIG1fbG9ja2VkU2tC
aXRtYXAuZ2V0QWRkcihzY2FsZWRTdWJzZXQueCgpLCBzY2FsZWRTdWJzZXQueSgpKTsKKyAgICBy
ZXR1cm4gdGhpcyA9PSBpbnN0YW5jZU9uTWFpblRocmVhZCgpICYmIGlzTWFpblRocmVhZCgpOwog
fQogCi12b2lkIEltYWdlRGVjb2RpbmdTdG9yZTo6dW5sb2NrUGl4ZWxzKCkKK3ZvaWQgSW1hZ2VE
ZWNvZGluZ1N0b3JlOjppbnNlcnRGcmFtZUNhY2hlKFBhc3NPd25QdHI8U2NhbGVkSW1hZ2VGcmFn
bWVudD4gZnJhbWVDYWNoZSkKIHsKICAgICBBU1NFUlQoY2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
IAotICAgIG1fbG9ja2VkU2tCaXRtYXAudW5sb2NrUGl4ZWxzKCk7Ci0gICAgbV9sb2NrZWRTa0Jp
dG1hcC5yZXNldCgpOworICAgIG1fZnJhbWVDYWNoZS5hcHBlbmQoZnJhbWVDYWNoZSk7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGluZ1N0b3JlOjpmcmFtZUdlbmVyYXRvckJlaW5nRGVzdHJveWVkKElt
YWdlRnJhbWVHZW5lcmF0b3IqIGZyYW1lR2VuZXJhdG9yKQorU2NhbGVkSW1hZ2VGcmFnbWVudCog
SW1hZ2VEZWNvZGluZ1N0b3JlOjpsb29rdXBGcmFtZUNhY2hlKGludCBpbWFnZUlkLCBjb25zdCBT
a0lTaXplJiBzY2FsZWRTaXplKSBjb25zdAogewogICAgIEFTU0VSVChjYWxsZWRPblZhbGlkVGhy
ZWFkKCkpOwogCi0gICAgZGVsZXRlRnJhbWVDYWNoZShmcmFtZUdlbmVyYXRvci0+aW1hZ2VJZCgp
KTsKLX0KLQotYm9vbCBJbWFnZURlY29kaW5nU3RvcmU6OmNhbGxlZE9uVmFsaWRUaHJlYWQoKSBj
b25zdAotewotICAgIHJldHVybiB0aGlzID09IGluc3RhbmNlT25NYWluVGhyZWFkKCkgJiYgaXNN
YWluVGhyZWFkKCk7Ci19Ci0KLVNjYWxlZEltYWdlRnJhZ21lbnQqIEltYWdlRGVjb2RpbmdTdG9y
ZTo6bG9va3VwRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6
ZSkgY29uc3QKLXsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVDYWNoZS5zaXpl
KCk7ICsraSkgewogICAgICAgICBpZiAobV9mcmFtZUNhY2hlW2ldLT5pc0VxdWFsKGltYWdlSWQs
IHNjYWxlZFNpemUpKQogICAgICAgICAgICAgcmV0dXJuIG1fZnJhbWVDYWNoZVtpXS5nZXQoKTsK
QEAgLTE0Nyw2ICs5NCw4IEBAIFNjYWxlZEltYWdlRnJhZ21lbnQqIEltYWdlRGVjb2RpbmdTdG9y
ZTo6bG9va3VwRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJCiAKIHZvaWQgSW1hZ2VE
ZWNvZGluZ1N0b3JlOjpkZWxldGVGcmFtZUNhY2hlKGludCBpbWFnZUlkKQogeworICAgIEFTU0VS
VChjYWxsZWRPblZhbGlkVGhyZWFkKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2ZyYW1lQ2FjaGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fZnJhbWVDYWNoZVtpXS0+
aXNFcXVhbChpbWFnZUlkKSkgewogICAgICAgICAgICAgbV9mcmFtZUNhY2hlLnJlbW92ZShpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlRGVjb2RpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKaW5kZXggNmQyYzM4NjM2Y2FjN2Q4OWMyYjQ4YWYw
ZWYyN2ZiZGM4MjY3NzNjZi4uN2I0ZmRmNmQyMTc4OGNlZmMzM2E3N2M5MTFlYWU1ODU0Y2MyMTg3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VEZWNvZGluZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKQEAgLTI2LDE1ICsyNiwxMCBAQAogI2lm
bmRlZiBJbWFnZURlY29kaW5nU3RvcmVfaAogI2RlZmluZSBJbWFnZURlY29kaW5nU3RvcmVfaAog
Ci0jaW5jbHVkZSAiU2tCaXRtYXAuaCIKLSNpbmNsdWRlICJTa1JlY3QuaCIKICNpbmNsdWRlICJT
a1NpemUuaCIKIAotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywyMiArNTIsMTUgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVPbk1haW5UaHJlYWQoKTsKICAgICBzdGF0aWMgdm9pZCBzaHV0ZG93
bigpOwogCi0gICAgLy8gWW91IG1heSBvbmx5IGxvY2sgb25lIHNldCBvZiBwaXhlbHMgYXQgYSB0
aW1lOyBvdmVybGFwcGluZyBsb2NrIGNhbGxzIGFyZSBub3QgYWxsb3dlZC4KLSAgICB2b2lkKiBs
b2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4sIGNvbnN0IFNrSVNpemUm
IHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCk7Ci0gICAgdm9pZCB1bmxv
Y2tQaXhlbHMoKTsKLQotICAgIHZvaWQgZnJhbWVHZW5lcmF0b3JCZWluZ0Rlc3Ryb3llZChJbWFn
ZUZyYW1lR2VuZXJhdG9yKik7CisgICAgdm9pZCBpbnNlcnRGcmFtZUNhY2hlKFBhc3NPd25QdHI8
U2NhbGVkSW1hZ2VGcmFnbWVudD4gZnJhbWVDYWNoZSk7CisgICAgU2NhbGVkSW1hZ2VGcmFnbWVu
dCogbG9va3VwRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6
ZSkgY29uc3Q7CisgICAgdm9pZCBkZWxldGVGcmFtZUNhY2hlKGludCBpbWFnZUlkKTsKIAogcHJp
dmF0ZToKICAgICBJbWFnZURlY29kaW5nU3RvcmUoKTsKICAgICBib29sIGNhbGxlZE9uVmFsaWRU
aHJlYWQoKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZUZyYW1lR2VuZXJhdG9yKFBhc3NPd25QdHI8
SW1hZ2VEZWNvZGVyPik7Ci0gICAgU2NhbGVkSW1hZ2VGcmFnbWVudCogbG9va3VwRnJhbWVDYWNo
ZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6ZSkgY29uc3Q7Ci0gICAgdm9p
ZCBkZWxldGVGcmFtZUNhY2hlKGludCBpbWFnZUlkKTsKIAogICAgIFZlY3RvcjxPd25QdHI8U2Nh
bGVkSW1hZ2VGcmFnbWVudD4gPiBtX2ZyYW1lQ2FjaGU7Ci0KLSAgICBTa0JpdG1hcCBtX2xvY2tl
ZFNrQml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZy
YW1lR2VuZXJhdG9yLmNwcAppbmRleCBlNDk3YWY2ODgyOTFiYjc1ZmRmOTc2M2EwZDk4MGY1NTEx
NzIxOWQyLi5iMTcwOWE3ODFmMDA3ZWM0ZGY2OTM4MzAyYTgxYjljM2Y1NGQyN2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1l
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmNwcApAQCAtMjksOCArMjksMTEgQEAKIAogI2luY2x1
ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9yZS5oIgorI2lu
Y2x1ZGUgIlNjYWxlZEltYWdlRnJhZ21lbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
IAorI2luY2x1ZGUgInNraWEvZXh0L2ltYWdlX29wZXJhdGlvbnMuaCIKKwogbmFtZXNwYWNlIHsK
IAogLy8gQW4gdW5pcXVlIElEIGZvciBhbiBpbWFnZSBmaWxlLgpAQCAtNTIsNyArNTUsNyBAQCBJ
bWFnZUZyYW1lR2VuZXJhdG9yOjpJbWFnZUZyYW1lR2VuZXJhdG9yKFBhc3NPd25QdHI8SW1hZ2VE
ZWNvZGVyPiBkZWNvZGVyLCBQYXNzUgogSW1hZ2VGcmFtZUdlbmVyYXRvcjo6fkltYWdlRnJhbWVH
ZW5lcmF0b3IoKQogewogICAgIGlmIChJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWlu
VGhyZWFkKCkpCi0gICAgICAgIEltYWdlRGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VPbk1haW5UaHJl
YWQoKS0+ZnJhbWVHZW5lcmF0b3JCZWluZ0Rlc3Ryb3llZCh0aGlzKTsKKyAgICAgICAgSW1hZ2VE
ZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT5kZWxldGVGcmFtZUNhY2hlKG1f
aW1hZ2VJZCk7CiB9CiAKIEltYWdlRGVjb2RlciogSW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2Rl
cigpCkBAIC02Nyw0ICs3MCw1MSBAQCB2b2lkIEltYWdlRnJhbWVHZW5lcmF0b3I6OnNldERhdGEo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlYwogICAgICAgICBt
X2RlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCit2
b2lkKiBJbWFnZUZyYW1lR2VuZXJhdG9yOjpsb2NrUGl4ZWxzKGNvbnN0IFNrSVNpemUmIHNjYWxl
ZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKK3sKKyAgICBBU1NFUlQobV9sb2Nr
ZWRTa0JpdG1hcC5pc051bGwoKSk7CisgICAgSW1hZ2VEZWNvZGluZ1N0b3JlKiBpbWFnZURlY29k
aW5nU3RvcmUgPSBJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCk7CisK
KyAgICAvLyBUaGUgY2FjaGUgb25seSBzYXZlcyB0aGUgZnVsbCBzaXplIGltYWdlIGF0IHRoZSBt
b21lbnQuCisgICAgU2NhbGVkSW1hZ2VGcmFnbWVudCogZnJhbWVDYWNoZSA9IGltYWdlRGVjb2Rp
bmdTdG9yZS0+bG9va3VwRnJhbWVDYWNoZShtX2ltYWdlSWQsIG1fZnVsbFNpemUpOworICAgIFNr
Qml0bWFwIGJpdG1hcDsKKworICAgIGlmICghZnJhbWVDYWNoZSkgeworICAgICAgICAvLyBGSVhN
RTogUGl4ZWxzIGFyZSBvd25lZCBieSB0aGUgSW1hZ2VEZWNvZGVyIGluIHRoZSBnZW5lcmF0b3Iu
IEZpbmQKKyAgICAgICAgLy8gYSB3YXkgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIG91ciBjYWNo
ZS4KKyAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWUgPSBkZWNvZGVyKCktPmZyYW1lQnVmZmVyQXRJ
bmRleCgwKTsKKworICAgICAgICAvLyBTYXZlcyB0aGUgZnJhbWUgaW4gY2FjaGUgaWYgdGhpcyBp
cyBjb21wbGV0ZS4KKyAgICAgICAgaWYgKGZyYW1lLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlKSB7CisgICAgICAgICAgICBPd25QdHI8U2NhbGVkSW1hZ2VGcmFnbWVudD4g
bmV3RnJhbWVDYWNoZSA9IFNjYWxlZEltYWdlRnJhZ21lbnQ6OmNyZWF0ZShtX2ltYWdlSWQsIG1f
ZnVsbFNpemUsIGZyYW1lLT5nZXRTa0JpdG1hcCgpLCB0cnVlKTsKKyAgICAgICAgICAgIGZyYW1l
Q2FjaGUgPSBuZXdGcmFtZUNhY2hlLmdldCgpOworICAgICAgICAgICAgaW1hZ2VEZWNvZGluZ1N0
b3JlLT5pbnNlcnRGcmFtZUNhY2hlKG5ld0ZyYW1lQ2FjaGUucmVsZWFzZSgpKTsKKyAgICAgICAg
fSBlbHNlIGlmIChmcmFtZS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBkZWNvZGluZyBlcnJvci4gUmVwb3J0
IHRoaXMgdG8gQml0bWFwSW1hZ2UuCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor
CisgICAgICAgIGJpdG1hcCA9IGZyYW1lLT5nZXRTa0JpdG1hcCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChmcmFtZUNhY2hlLT5pc0NvbXBsZXRlKCkpOworICAgICAgICBiaXRtYXAg
PSBmcmFtZUNhY2hlLT5iaXRtYXAoKTsKKyAgICB9CisKKyAgICBpZiAobV9mdWxsU2l6ZSAhPSBz
Y2FsZWRTaXplKSB7CisgICAgICAgIC8vIEltYWdlIHNjYWxpbmcgaXMgZG9uZSBvbi10aGUtZmx5
IGFuZCBzY2FsZWQgaW1hZ2UgaXMgZGVzdHJveWVkCisgICAgICAgIC8vIGFmdGVyIHVzZS4KKyAg
ICAgICAgLy8gRklYTUU6IFJlc2l6ZSBqdXN0IHRoZSByZXF1ZXN0ZWQgZnJhZ21lbnQuCisgICAg
ICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBza2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJlc2l6ZShiaXRt
YXAsIHNraWE6OkltYWdlT3BlcmF0aW9uczo6UkVTSVpFX0xBTkNaT1MzLCBzY2FsZWRTaXplLndp
ZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2xvY2tl
ZFNrQml0bWFwID0gYml0bWFwOworICAgIG1fbG9ja2VkU2tCaXRtYXAubG9ja1BpeGVscygpOwor
ICAgIHJldHVybiBtX2xvY2tlZFNrQml0bWFwLmdldEFkZHIoc2NhbGVkU3Vic2V0LngoKSwgc2Nh
bGVkU3Vic2V0LnkoKSk7Cit9CisKK3ZvaWQgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6dW5sb2NrUGl4
ZWxzKCkKK3sKKyAgICBtX2xvY2tlZFNrQml0bWFwLnVubG9ja1BpeGVscygpOworICAgIG1fbG9j
a2VkU2tCaXRtYXAucmVzZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFt
ZUdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VGcmFtZUdlbmVyYXRvci5oCmluZGV4IDU4ZmE2ZmIyM2YyNTM2M2Q1YmRlMWIyMWFhOWVl
NDk1MDEzZmI1ZjUuLjc5ZjgyNzZjODc3ZmQxOWNiNDZiNzUzYzc3YWFhODBjNmJmZTk0MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
RnJhbWVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
SW1hZ2VGcmFtZUdlbmVyYXRvcl9oCiAjZGVmaW5lIEltYWdlRnJhbWVHZW5lcmF0b3JfaAogCi0j
aW5jbHVkZSAiU2tUeXBlcy5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tT
aXplLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CkBAIC00OSwxOCArNDksMjIgQEAgcHVibGljOgogICAgIEltYWdlRnJhbWVHZW5lcmF0b3Io
UGFzc093blB0cjxJbWFnZURlY29kZXI+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB+SW1hZ2VGcmFtZUdlbmVyYXRvcigpOwogCi0gICAgLy8g
Q3JlYXRlcyB0aGUgaW1hZ2UgZGVjb2RlciBpZiBuZWVkZWQuCi0gICAgSW1hZ2VEZWNvZGVyKiBk
ZWNvZGVyKCk7Ci0gICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIFlvdSBtYXkgb25seSBsb2NrIG9uZSBzZXQgb2Yg
cGl4ZWxzIGF0IGEgdGltZTsgb3ZlcmxhcHBpbmcgbG9jayBjYWxscyBhcmUgbm90IGFsbG93ZWQu
CisgICAgdm9pZCogbG9ja1BpeGVscyhjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBT
a0lSZWN0JiBzY2FsZWRTdWJzZXQpOworICAgIHZvaWQgdW5sb2NrUGl4ZWxzKCk7CiAKLSAgICBj
b25zdCBTa0lTaXplJiBmdWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNpemU7IH0KLSAg
ICBpbnQgaW1hZ2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VJZDsgfQorICAgIHZvaWQgc2V0
RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKIAog
cHJpdmF0ZToKKyAgICAvLyBDcmVhdGVzIHRoZSBpbWFnZSBkZWNvZGVyIGlmIG5lZWRlZC4KKyAg
ICBJbWFnZURlY29kZXIqIGRlY29kZXIoKTsKKwogICAgIE93blB0cjxJbWFnZURlY29kZXI+IG1f
ZGVjb2RlcjsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU2tJU2l6ZSBt
X2Z1bGxTaXplOwogICAgIGludCBtX2ltYWdlSWQ7CisKKyAgICBTa0JpdG1hcCBtX2xvY2tlZFNr
Qml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29k
aW5nUGl4ZWxSZWYuY3BwCmluZGV4IDU2ZGQwOTFlMGQ5ZjhjMTQwYjdkYmQ3MzFkNzM2MjE4YWQw
ZmI5MzIuLjU5Mjg2MTY3MWRlZTExN2EyMDRhYzUwNDU4ZmRmMWUzOWE2M2NhNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGlu
Z1BpeGVsUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBib29sIExh
enlEZWNvZGluZ1BpeGVsUmVmOjppc0NsaXBwZWQoKSBjb25zdAogdm9pZCogTGF6eURlY29kaW5n
UGl4ZWxSZWY6Om9uTG9ja1BpeGVscyhTa0NvbG9yVGFibGUqKikKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIHJldHVybiBJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25N
YWluVGhyZWFkKCktPmxvY2tQaXhlbHMobV9mcmFtZUdlbmVyYXRvciwgbV9zY2FsZWRTaXplLCBt
X3NjYWxlZFN1YnNldCk7CisgICAgcmV0dXJuIG1fZnJhbWVHZW5lcmF0b3ItPmxvY2tQaXhlbHMo
bV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNldCk7CiB9CiAKIHZvaWQgTGF6eURlY29kaW5nUGl4
ZWxSZWY6Om9uVW5sb2NrUGl4ZWxzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEltYWdlRGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VPbk1haW5UaHJlYWQoKS0+dW5sb2NrUGl4
ZWxzKCk7CisgICAgbV9mcmFtZUdlbmVyYXRvci0+dW5sb2NrUGl4ZWxzKCk7CiB9CiAKIGJvb2wg
TGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1BpeGVsc0FyZVdyaXRhYmxlKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174932</attachid>
            <date>2012-11-19 03:05:15 -0800</date>
            <delta_ts>2012-11-19 03:07:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102021-20121119030306.patch</filename>
            <type>text/plain</type>
            <size>22598</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE4ZmNjZmQ3ZDk1NWFh
YzNkMDhmMTVlNGIyYjE2MDg5NDY2OWRlNC4uMjFkODBlMTI0YTAzODM2MjNhMTcwYTJkNTBmZmI5
MzYzNzQxODNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTExLTE4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGlt
YWdlIGRlY29kaW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBpbWFnZSBk
ZWNvZGluZyBpbiBJbWFnZUZyYW1lR2VuZXJhdG9yCisgICAgICAgIGNvbXBsZXRlbHkgbGF6eSB3
aXRob3V0IGNhY2hpbmcuIEltYWdlIGRlY29kaW5nIGxvZ2ljIGlzIHRoZW4gcmVtb3ZlZAorICAg
ICAgICBmcm9tIEltYWdlRGVjb2RpbmdTdG9yZS4KKworICAgICAgICBJbiBwYXJ0aWN1bGFyIHRo
ZXNlIG1ldGhvZHMgYXJlIHJlbW92ZWQuCisgICAgICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjps
b2NrUGl4ZWxzCisgICAgICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjp1bmxvY2tQaXhlbHMKKwor
ICAgICAgICBJbnN0ZWFkIGltYWdlIGRlY29kaW5nIGFuZCBzY2FsaW5nIGlzIGRvbmUgaW4KKyAg
ICAgICAgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUoKS4KKworICAgICAgICBV
bml0IHRlc3RzIGFyZSB1cGRhdGVkOgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Q6
OmRyYXdJbnRvU2tQaWN0dXJlCisgICAgICAgIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6ZHJh
d1NjYWxlZEludG9Ta1BpY3R1cmUKKworICAgICAgICBBbHNvIGNvdmVyZWQgYnkgbGF5b3V0IHRl
c3RzOgorICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2RlZmVycmVkCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZEltYWdlRGVjb2Rlcjo6Y3JlYXRlTGF6eURlY29k
aW5nQml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURl
Y29kaW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGluZ1N0b3JlOjps
b29rdXBGcmFtZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RpbmdTdG9yZTo6
ZGVsZXRlRnJhbWVDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VEZWNvZGluZ1N0b3JlLmg6CisgICAgICAgIChJbWFnZURlY29kaW5nU3RvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUdlbmVyYXRvcjo6SW1hZ2VGcmFtZUdlbmVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFt
ZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSW1hZ2VGcmFtZUdlbmVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1BpeGVscyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25VbmxvY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmg6CisgICAgICAgIChM
YXp5RGVjb2RpbmdQaXhlbFJlZik6CisKIDIwMTItMTEtMTggIEt1bmloaWtvIFNha2Ftb3RvICA8
a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBtaW4vbWF4L3N0ZXAgc3VwcG9ydCBm
b3IgY2FsZW5kYXIgcGlja2VyIG9uIGRhdGV0aW1lL2RhdGV0aW1lLWxvY2FsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGU0MjI3YjVhNWMzOThjYjQxNDJlOTUxMThiOGJjNjVlZmRjNTIy
NWQuLmY1OTk5OWE5MTI1MTZlNjllZTU0MWM3NDJiMzE1MWQwYzM2ZTA3NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTEtMTkgIEFscGhhIExhbSAg
PGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIExhenkgaW1hZ2UgZGVj
b2Rpbmcgd2l0aG91dCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAyMDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0d28gdGVzdCBjYXNlcyB1c2luZyByZWFsIGltYWdlIGRhdGEu
CisKKyAgICAgICAgVGhlIHRlc3RzIGRlbW9uc3RyYXRlcyB0aGF0IG9yaWdpbmFsIGltYWdlIGRl
Y29kZXIgaXMgbm90IHVzZWQgYW5kCisgICAgICAgIGltYWdlIGlzIGRlY29kZWQgbGF6aWx5IHdp
dGggY29ycmVjdCBwaXhlbCByZXN1bHRzLgorCisgICAgICAgICogdGVzdHMvRGVmZXJyZWRJbWFn
ZURlY29kZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRJbWFnZURlY29kZXJUZXN0OjpTZXRVcCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZl
cnJlZEltYWdlRGVjb2RlclRlc3Q6OmRlY29kZXJCZWluZ0Rlc3Ryb3llZCk6CisgICAgICAgIChE
ZWZlcnJlZEltYWdlRGVjb2RlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVF9GKToKKyAg
ICAgICAgKiB0ZXN0cy9Nb2NrSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChNb2NrSW1hZ2VEZWNv
ZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0lt
YWdlRGVjb2Rlcjo6TW9ja0ltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW1h
Z2VEZWNvZGVyOjp+TW9ja0ltYWdlRGVjb2Rlcik6CisgICAgICAgIChNb2NrSW1hZ2VEZWNvZGVy
KToKKwogMjAxMi0xMS0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTA0Ny4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVy
cmVkSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzM2Q5NDk2MDRkZWViZDZkNTY2ZjM4YThiMDExNDE4
MDAyYjA2ZmJkLi5jNmMyMDQ4MzI2MzRiMjU1YjZlNTY0ODQ5MzEyYWFlNmE5N2RiZGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJl
ZEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRGVmZXJyZWRJbWFnZURlY29kZXIuY3BwCkBAIC0yMDEsNyArMjAxLDkgQEAgU2tC
aXRtYXAgRGVmZXJyZWRJbWFnZURlY29kZXI6OmNyZWF0ZUxhenlEZWNvZGluZ0JpdG1hcCgpCiAg
ICAgU2tCaXRtYXAgYml0bWFwOwogICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCBmdWxsU2l6ZS53aWR0aCgpLCBmdWxsU2l6ZS5oZWlnaHQoKSk7CiAKLSAg
ICBtX2ZyYW1lR2VuZXJhdG9yID0gSW1hZ2VGcmFtZUdlbmVyYXRvcjo6Y3JlYXRlKG1fYWN0dWFs
RGVjb2Rlci5yZWxlYXNlKCksIG1fZGF0YS5yZWxlYXNlKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICBtX2ZyYW1lR2VuZXJhdG9yID0gSW1hZ2VGcmFtZUdlbmVyYXRvcjo6Y3JlYXRlKG1fZGF0
YS5yZWxlYXNlKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBtX2FjdHVhbERlY29kZXIuY2xl
YXIoKTsKKwogICAgIGJpdG1hcC5zZXRQaXhlbFJlZihuZXcgTGF6eURlY29kaW5nUGl4ZWxSZWYo
bV9mcmFtZUdlbmVyYXRvciwgZnVsbFNpemUsIGZ1bGxSZWN0KSktPnVucmVmKCk7CiAKICAgICAv
LyBVc2UgdGhlIFVSSSB0byBpZGVudGlmeSB0aGlzIGFzIGEgbGF6aWx5IGRlY29kZWQgU2tQaXhl
bFJlZiBvZiB0eXBlIExhenlEZWNvZGluZ1BpeGVsUmVmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdT
dG9yZS5jcHAKaW5kZXggMDViM2UyYjhkYmQxNjRhNmM2ZTMxZjI4OTU3NjQ5ZDdmOGU3ZTJlYy4u
ZjVmNjIxZGU4NzYwM2NlMGY3NDM0NzQwNzU1ZThhYzYwNDBjMmI4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZURlY29kaW5nU3RvcmUuY3BwCkBAIC0yNiwxMyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9yZS5oIgogCi0jaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VGcmFtZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlNjYWxl
ZEltYWdlRnJhZ21lbnQuaCIKLSNpbmNsdWRlICJTa1JlY3QuaCIKLSNpbmNsdWRlICJTa1NpemUu
aCIKLQotI2luY2x1ZGUgInNraWEvZXh0L2ltYWdlX29wZXJhdGlvbnMuaCIKIAogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTc1LDYyICs2OSw2IEBAIHZvaWQgSW1hZ2VEZWNvZGlu
Z1N0b3JlOjpzaHV0ZG93bigpCiAgICAgc2V0SW5zdGFuY2VPbk1haW5UaHJlYWQoMCk7CiB9CiAK
LXZvaWQqIEltYWdlRGVjb2RpbmdTdG9yZTo6bG9ja1BpeGVscyhQYXNzUmVmUHRyPEltYWdlRnJh
bWVHZW5lcmF0b3I+IGZyYW1lR2VuZXJhdG9yLCBjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBj
b25zdCBTa0lSZWN0JiBzY2FsZWRTdWJzZXQpCi17Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRU
aHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9ja2VkU2tCaXRtYXAuaXNOdWxsKCkpOwotCi0gICAg
U2tJU2l6ZSBmdWxsU2l6ZSA9IGZyYW1lR2VuZXJhdG9yLT5mdWxsU2l6ZSgpOwotCi0gICAgLy8g
VGhlIGNhY2hlIG9ubHkgc2F2ZXMgdGhlIGZ1bGwgc2l6ZSBpbWFnZSBhdCB0aGUgbW9tZW50Lgot
ICAgIFNjYWxlZEltYWdlRnJhZ21lbnQqIGZyYW1lQ2FjaGUgPSBsb29rdXBGcmFtZUNhY2hlKGZy
YW1lR2VuZXJhdG9yLT5pbWFnZUlkKCksIGZ1bGxTaXplKTsKLSAgICBTa0JpdG1hcCBiaXRtYXA7
Ci0KLSAgICBpZiAoIWZyYW1lQ2FjaGUpIHsKLSAgICAgICAgLy8gRklYTUU6IFBpeGVscyBhcmUg
b3duZWQgYnkgdGhlIEltYWdlRGVjb2RlciBpbiB0aGUgZ2VuZXJhdG9yLiBGaW5kCi0gICAgICAg
IC8vIGEgd2F5IHRvIHRyYW5zZmVyIG93bmVyc2hpcCB0byBvdXIgY2FjaGUuCi0gICAgICAgIElt
YWdlRnJhbWUqIGZyYW1lID0gZnJhbWVHZW5lcmF0b3ItPmRlY29kZXIoKS0+ZnJhbWVCdWZmZXJB
dEluZGV4KDApOwotCi0gICAgICAgIC8vIFNhdmVzIHRoZSBmcmFtZSBpbiBjYWNoZSBpZiB0aGlz
IGlzIGNvbXBsZXRlLgotICAgICAgICBpZiAoZnJhbWUtPnN0YXR1cygpID09IEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpIHsKLSAgICAgICAgICAgIG1fZnJhbWVDYWNoZS5hcHBlbmQoU2NhbGVk
SW1hZ2VGcmFnbWVudDo6Y3JlYXRlKGZyYW1lR2VuZXJhdG9yLT5pbWFnZUlkKCksIGZ1bGxTaXpl
LCBmcmFtZS0+Z2V0U2tCaXRtYXAoKSwgdHJ1ZSkpOwotICAgICAgICB9IGVsc2UgaWYgKGZyYW1l
LT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogSWYgdGhpcyBpcyBhIGRlY29kaW5nIGVycm9yLiBSZXBvcnQgdGhpcyB0byBCaXRtYXBJ
bWFnZS4KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgYml0bWFw
ID0gZnJhbWUtPmdldFNrQml0bWFwKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGZy
YW1lQ2FjaGUtPmlzQ29tcGxldGUoKSk7Ci0gICAgICAgIGJpdG1hcCA9IGZyYW1lQ2FjaGUtPmJp
dG1hcCgpOwotICAgIH0KLQotICAgIGlmIChmdWxsU2l6ZSAhPSBzY2FsZWRTaXplKSB7Ci0gICAg
ICAgIC8vIEltYWdlIHNjYWxpbmcgaXMgZG9uZSBvbi10aGUtZmx5IGFuZCBzY2FsZWQgaW1hZ2Ug
aXMgZGVzdHJveWVkCi0gICAgICAgIC8vIGFmdGVyIHVzZS4KLSAgICAgICAgLy8gRklYTUU6IFJl
c2l6ZSBqdXN0IHRoZSByZXF1ZXN0ZWQgZnJhZ21lbnQuCi0gICAgICAgIG1fbG9ja2VkU2tCaXRt
YXAgPSBza2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJlc2l6ZShiaXRtYXAsIHNraWE6OkltYWdlT3Bl
cmF0aW9uczo6UkVTSVpFX0xBTkNaT1MzLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUu
aGVpZ2h0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2xvY2tlZFNrQml0bWFwID0gYml0bWFw
OwotICAgIG1fbG9ja2VkU2tCaXRtYXAubG9ja1BpeGVscygpOwotICAgIHJldHVybiBtX2xvY2tl
ZFNrQml0bWFwLmdldEFkZHIoc2NhbGVkU3Vic2V0LngoKSwgc2NhbGVkU3Vic2V0LnkoKSk7Ci19
Ci0KLXZvaWQgSW1hZ2VEZWNvZGluZ1N0b3JlOjp1bmxvY2tQaXhlbHMoKQotewotICAgIEFTU0VS
VChjYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotCi0gICAgbV9sb2NrZWRTa0JpdG1hcC51bmxvY2tQ
aXhlbHMoKTsKLSAgICBtX2xvY2tlZFNrQml0bWFwLnJlc2V0KCk7Ci19Ci0KLXZvaWQgSW1hZ2VE
ZWNvZGluZ1N0b3JlOjpmcmFtZUdlbmVyYXRvckJlaW5nRGVzdHJveWVkKEltYWdlRnJhbWVHZW5l
cmF0b3IqIGZyYW1lR2VuZXJhdG9yKQotewotICAgIEFTU0VSVChjYWxsZWRPblZhbGlkVGhyZWFk
KCkpOwotCi0gICAgZGVsZXRlRnJhbWVDYWNoZShmcmFtZUdlbmVyYXRvci0+aW1hZ2VJZCgpKTsK
LX0KLQogYm9vbCBJbWFnZURlY29kaW5nU3RvcmU6OmNhbGxlZE9uVmFsaWRUaHJlYWQoKSBjb25z
dAogewogICAgIHJldHVybiB0aGlzID09IGluc3RhbmNlT25NYWluVGhyZWFkKCkgJiYgaXNNYWlu
VGhyZWFkKCk7CkBAIC0xMzgsNiArNzYsOCBAQCBib29sIEltYWdlRGVjb2RpbmdTdG9yZTo6Y2Fs
bGVkT25WYWxpZFRocmVhZCgpIGNvbnN0CiAKIFNjYWxlZEltYWdlRnJhZ21lbnQqIEltYWdlRGVj
b2RpbmdTdG9yZTo6bG9va3VwRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJU2l6ZSYg
c2NhbGVkU2l6ZSkgY29uc3QKIHsKKyAgICBBU1NFUlQoY2FsbGVkT25WYWxpZFRocmVhZCgpKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZUNhY2hlLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGlmIChtX2ZyYW1lQ2FjaGVbaV0tPmlzRXF1YWwoaW1hZ2VJZCwgc2NhbGVkU2l6
ZSkpCiAgICAgICAgICAgICByZXR1cm4gbV9mcmFtZUNhY2hlW2ldLmdldCgpOwpAQCAtMTQ3LDYg
Kzg3LDggQEAgU2NhbGVkSW1hZ2VGcmFnbWVudCogSW1hZ2VEZWNvZGluZ1N0b3JlOjpsb29rdXBG
cmFtZUNhY2hlKGludCBpbWFnZUlkLCBjb25zdCBTa0kKIAogdm9pZCBJbWFnZURlY29kaW5nU3Rv
cmU6OmRlbGV0ZUZyYW1lQ2FjaGUoaW50IGltYWdlSWQpCiB7CisgICAgQVNTRVJUKGNhbGxlZE9u
VmFsaWRUaHJlYWQoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVDYWNo
ZS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9mcmFtZUNhY2hlW2ldLT5pc0VxdWFsKGlt
YWdlSWQpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lQ2FjaGUucmVtb3ZlKGkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGlu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZURlY29kaW5nU3RvcmUuaAppbmRleCA2ZDJjMzg2MzZjYWM3ZDg5YzJiNDhhZjBlZjI3ZmJkYzgy
Njc3M2NmLi4wY2UzMTczZTlmOTlkYjYyYzgzM2IwOGZmOTMxMTUzNjIyNWI4NDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29k
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZURlY29kaW5nU3RvcmUuaApAQCAtMjYsMTUgKzI2LDEwIEBACiAjaWZuZGVmIEltYWdl
RGVjb2RpbmdTdG9yZV9oCiAjZGVmaW5lIEltYWdlRGVjb2RpbmdTdG9yZV9oCiAKLSNpbmNsdWRl
ICJTa0JpdG1hcC5oIgotI2luY2x1ZGUgIlNrUmVjdC5oIgogI2luY2x1ZGUgIlNrU2l6ZS5oIgog
Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU3LDIyICs1MiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZU9uTWFpblRocmVhZCgpOwogICAgIHN0YXRpYyB2b2lkIHNodXRkb3duKCk7CiAKLSAg
ICAvLyBZb3UgbWF5IG9ubHkgbG9jayBvbmUgc2V0IG9mIHBpeGVscyBhdCBhIHRpbWU7IG92ZXJs
YXBwaW5nIGxvY2sgY2FsbHMgYXJlIG5vdCBhbGxvd2VkLgotICAgIHZvaWQqIGxvY2tQaXhlbHMo
UGFzc1JlZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiwgY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6
ZSwgY29uc3QgU2tJUmVjdCYgc2NhbGVkU3Vic2V0KTsKLSAgICB2b2lkIHVubG9ja1BpeGVscygp
OwotCi0gICAgdm9pZCBmcmFtZUdlbmVyYXRvckJlaW5nRGVzdHJveWVkKEltYWdlRnJhbWVHZW5l
cmF0b3IqKTsKLQogcHJpdmF0ZToKICAgICBJbWFnZURlY29kaW5nU3RvcmUoKTsKICAgICBib29s
IGNhbGxlZE9uVmFsaWRUaHJlYWQoKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZUZyYW1lR2VuZXJh
dG9yKFBhc3NPd25QdHI8SW1hZ2VEZWNvZGVyPik7CiAgICAgU2NhbGVkSW1hZ2VGcmFnbWVudCog
bG9va3VwRnJhbWVDYWNoZShpbnQgaW1hZ2VJZCwgY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6ZSkg
Y29uc3Q7CiAgICAgdm9pZCBkZWxldGVGcmFtZUNhY2hlKGludCBpbWFnZUlkKTsKIAogICAgIFZl
Y3RvcjxPd25QdHI8U2NhbGVkSW1hZ2VGcmFnbWVudD4gPiBtX2ZyYW1lQ2FjaGU7Ci0KLSAgICBT
a0JpdG1hcCBtX2xvY2tlZFNrQml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VGcmFtZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmNwcAppbmRleCBlNDk3YWY2ODgyOTFiYjc1ZmRm
OTc2M2EwZDk4MGY1NTExNzIxOWQyLi4yMzY3ODMzMTUzMzJlZDkwNTFlODMxYzYxZDMwN2VkZmY1
ZWJhMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmNwcApAQCAtMjgsNDMgKzI4
LDQ3IEBACiAjaW5jbHVkZSAiSW1hZ2VGcmFtZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAKLW5hbWVzcGFjZSB7Ci0KLS8vIEFuIHVuaXF1ZSBJRCBmb3IgYW4g
aW1hZ2UgZmlsZS4KLWludCBzX25leHRJbWFnZUlkID0gMDsKLQotfSAvLyBuYW1lc3BhY2UKKyNp
bmNsdWRlICJza2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSW1hZ2VGcmFtZUdlbmVyYXRvcjo6SW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNzT3duUHRy
PEltYWdlRGVjb2Rlcj4gZGVjb2RlciwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQotICAgIDogbV9kZWNvZGVyKGRlY29kZXIpCitJbWFnZUZyYW1l
R2VuZXJhdG9yOjpJbWFnZUZyYW1lR2VuZXJhdG9yKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICA6IG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQogewotICAgIG1fZnVsbFNpemUgPSBTa0lTaXplOjpNYWtlKG1fZGVjb2Rlci0+c2l6ZSgpLndp
ZHRoKCksIG1fZGVjb2Rlci0+c2l6ZSgpLmhlaWdodCgpKTsKLSAgICBtX2ltYWdlSWQgPSBzX25l
eHRJbWFnZUlkKys7Ci0KICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
IEltYWdlRnJhbWVHZW5lcmF0b3I6On5JbWFnZUZyYW1lR2VuZXJhdG9yKCkKIHsKLSAgICBpZiAo
SW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpKQotICAgICAgICBJbWFn
ZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCktPmZyYW1lR2VuZXJhdG9yQmVp
bmdEZXN0cm95ZWQodGhpcyk7CiB9CiAKLUltYWdlRGVjb2RlciogSW1hZ2VGcmFtZUdlbmVyYXRv
cjo6ZGVjb2RlcigpCit2b2lkIEltYWdlRnJhbWVHZW5lcmF0b3I6OnNldERhdGEoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7CisgICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2FsbERhdGFSZWNl
aXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIH0KIAotdm9pZCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpz
ZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKK1NrQml0bWFwIEltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKGNvbnN0IFNr
SVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIGlmIChtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2Rlci0+c2V0
RGF0YShtX2RhdGEuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgT3duUHRyPEltYWdlRGVj
b2Rlcj4gZGVjb2RlcihhZG9wdFB0cihJbWFnZURlY29kZXI6OmNyZWF0ZSgqbV9kYXRhLmdldCgp
LCBJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRD
b2xvclByb2ZpbGVBcHBsaWVkKSkpOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgcmV0dXJu
IFNrQml0bWFwKCk7CisKKyAgICBkZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgbV9hbGxE
YXRhUmVjZWl2ZWQpOworICAgIEltYWdlRnJhbWUqIGZyYW1lID0gZGVjb2Rlci0+ZnJhbWVCdWZm
ZXJBdEluZGV4KDApOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBTa0JpdG1hcCgp
OworCisgICAgU2tCaXRtYXAgYml0bWFwID0gZnJhbWUtPmdldFNrQml0bWFwKCk7CisgICAgU2tJ
U2l6ZSBiaXRtYXBTaXplID0gU2tJU2l6ZTo6TWFrZShiaXRtYXAud2lkdGgoKSwgYml0bWFwLmhl
aWdodCgpKTsKKyAgICBpZiAoYml0bWFwU2l6ZSAhPSBzY2FsZWRTaXplKQorICAgICAgICBiaXRt
YXAgPSBza2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJlc2l6ZShiaXRtYXAsIHNraWE6OkltYWdlT3Bl
cmF0aW9uczo6UkVTSVpFX0xBTkNaT1MzLCBzY2FsZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUu
aGVpZ2h0KCkpOworCisgICAgU2tCaXRtYXAgYml0bWFwU3Vic2V0OworICAgIGJpdG1hcC5leHRy
YWN0U3Vic2V0KCZiaXRtYXBTdWJzZXQsIHNjYWxlZFN1YnNldCk7CisgICAgcmV0dXJuIGJpdG1h
cFN1YnNldDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdl
bmVyYXRvci5oCmluZGV4IDU4ZmE2ZmIyM2YyNTM2M2Q1YmRlMWIyMWFhOWVlNDk1MDEzZmI1ZjUu
LmU2M2Y5YjFmY2M1Y2UwYmMyZWJkYzFkNzAzNWVhNGYzZmJiNmE5YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUZyYW1lR2VuZXJhdG9yLmgKQEAgLTI2LDQxICsyNiwzMyBAQAogI2lmbmRlZiBJbWFnZUZyYW1l
R2VuZXJhdG9yX2gKICNkZWZpbmUgSW1hZ2VGcmFtZUdlbmVyYXRvcl9oCiAKLSNpbmNsdWRlICJT
a1R5cGVzLmgiCisjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKLSNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdl
RGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VGcmFtZUdlbmVyYXRv
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVHZW5lcmF0b3I+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBjcmVhdGUoUGFzc093blB0
cjxJbWFnZURlY29kZXI+IGRlY29kZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUZyYW1lR2Vu
ZXJhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUZyYW1l
R2VuZXJhdG9yKGRlY29kZXIsIGRhdGEsIGFsbERhdGFSZWNlaXZlZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEltYWdlRnJhbWVHZW5lcmF0b3IoZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KSk7CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNzT3duUHRyPEltYWdlRGVj
b2Rlcj4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIEltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CiAgICAgfkltYWdlRnJhbWVHZW5lcmF0b3IoKTsKIAotICAgIC8vIENy
ZWF0ZXMgdGhlIGltYWdlIGRlY29kZXIgaWYgbmVlZGVkLgotICAgIEltYWdlRGVjb2RlciogZGVj
b2RlcigpOwotICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICBTa0JpdG1hcCBkZWNvZGVBbmRTY2FsZShjb25zdCBTa0lT
aXplJiBzY2FsZWRTaXplLCBjb25zdCBTa0lSZWN0JiBzY2FsZWRTdWJzZXQpOwogCi0gICAgY29u
c3QgU2tJU2l6ZSYgZnVsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTaXplOyB9Ci0gICAg
aW50IGltYWdlSWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSWQ7IH0KKyAgICB2b2lkIHNldERh
dGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAKIHBy
aXZhdGU6Ci0gICAgT3duUHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKLSAgICBTa0lTaXplIG1fZnVsbFNpemU7Ci0gICAgaW50IG1f
aW1hZ2VJZDsKKyAgICBib29sIG1fYWxsRGF0YVJlY2VpdmVkOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwCmluZGV4IDU2ZGQw
OTFlMGQ5ZjhjMTQwYjdkYmQ3MzFkNzM2MjE4YWQwZmI5MzIuLmEyNmYzNGI4YjU4YjgzZjgzZjAw
YzgwNTlmMTM3YTU0NGEyY2FjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5j
cHAKQEAgLTU4LDEzICs1OCwxNyBAQCBib29sIExhenlEZWNvZGluZ1BpeGVsUmVmOjppc0NsaXBw
ZWQoKSBjb25zdAogdm9pZCogTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1BpeGVscyhTa0Nv
bG9yVGFibGUqKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBJ
bWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCktPmxvY2tQaXhlbHMobV9m
cmFtZUdlbmVyYXRvciwgbV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNldCk7CisgICAgQVNTRVJU
KG1fbG9ja2VkU2tCaXRtYXAuaXNOdWxsKCkpOworICAgIG1fbG9ja2VkQml0bWFwID0gbV9mcmFt
ZUdlbmVyYXRvci0+ZGVjb2RlQW5kU2NhbGUobV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNldCk7
CisgICAgbV9sb2NrZWRCaXRtYXAubG9ja1BpeGVscygpOworICAgIHJldHVybiBtX2xvY2tlZEJp
dG1hcC5nZXRBZGRyKDAsIDApOwogfQogCiB2b2lkIExhenlEZWNvZGluZ1BpeGVsUmVmOjpvblVu
bG9ja1BpeGVscygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBJbWFnZURl
Y29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCktPnVubG9ja1BpeGVscygpOworICAg
IG1fbG9ja2VkQml0bWFwLnVubG9ja1BpeGVscygpOworICAgIG1fbG9ja2VkQml0bWFwLnJlc2V0
KCk7CiB9CiAKIGJvb2wgTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9ja1BpeGVsc0FyZVdyaXRh
YmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oCmluZGV4IDBhYjljY2M0
Y2IxMTFmMjc2NGY3MjM3MDY3NTFhNWVjZjEzYzc2MzMuLjRmZjg5Y2ZiNDFlNTQxMWMwNjFhZjkx
NWRhZDk4YjM1NmEwNGUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaApAQCAt
NTgsNiArNTgsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBt
X2ZyYW1lR2VuZXJhdG9yOwogICAgIFNrSVNpemUgbV9zY2FsZWRTaXplOwogICAgIFNrSVJlY3Qg
bV9zY2FsZWRTdWJzZXQ7CisKKyAgICBTa0JpdG1hcCBtX2xvY2tlZEJpdG1hcDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAppbmRleCAwOTc3ZTU3MjlhZDY2
ZjJjMzA2Njk5ZmYyZjMyMjA2NjI1NzZkYjEzLi43N2Y5OTRiNTkxMjA3NzIyN2IzZGVkOTExZjIx
YjZhYTFjNzJmZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Rl
ZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0zMCwzMCArMzAsNTEgQEAKICNp
bmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrSW1hZ2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgogI2luY2x1
ZGUgIlNrUGljdHVyZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCisvLyBSYXcgZGF0YSBmb3IgYSBQTkcgZmlsZSB3
aXRoIDF4MSB3aGl0ZSBwaXhlbHMuCitjb25zdCBjaGFyIHdoaXRlUE5HW10gPSB7CisgICAgMHg4
OSwgMHg1MCwgMHg0ZSwgMHg0NywgMHgwZCwgMHgwYSwgMHgxYSwgMHgwYSwgMHgwMCwgMHgwMCwK
KyAgICAweDAwLCAweDBkLCAweDQ5LCAweDQ4LCAweDQ0LCAweDUyLCAweDAwLCAweDAwLCAweDAw
LCAweDAxLAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgsIDB4MDIsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4OTAsCisgICAgMHg3NywgMHg1MywgMHhkZSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMSwgMHg3MywgMHg1MiwgMHg0NywKKyAgICAweDQyLCAweDAwLCAweGFlLCAweGNlLCAweDFj
LCAweGU5LCAweDAwLCAweDAwLCAweDAwLCAweDA5LAorICAgIDB4NzAsIDB4NDgsIDB4NTksIDB4
NzMsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MTMsIDB4MDAsIDB4MDAsCisgICAgMHgwYiwgMHgxMywg
MHgwMSwgMHgwMCwgMHg5YSwgMHg5YywgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAweDBj
LCAweDQ5LCAweDQ0LCAweDQxLCAweDU0LCAweDA4LCAweGQ3LCAweDYzLCAweGY4LCAweGZmLAor
ICAgIDB4ZmYsIDB4M2YsIDB4MDAsIDB4MDUsIDB4ZmUsIDB4MDIsIDB4ZmUsIDB4ZGMsIDB4Y2Ms
IDB4NTksCisgICAgMHhlNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0OSwgMHg0NSwgMHg0
ZSwgMHg0NCwgMHhhZSwKKyAgICAweDQyLCAweDYwLCAweDgyLAorfTsKKwogc3RhdGljIFNrQ2Fu
dmFzKiBjcmVhdGVSYXN0ZXJDYW52YXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIFNr
QXV0b1RVbnJlZjxTa0RldmljZT4gZGV2aWNlKG5ldyBTa0RldmljZShTa0JpdG1hcDo6a0FSR0Jf
ODg4OF9Db25maWcsIHdpZHRoLCBoZWlnaHQpKTsKICAgICByZXR1cm4gbmV3IFNrQ2FudmFzKGRl
dmljZSk7CiB9CiAKLWNsYXNzIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgeworY2xhc3MgRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCwgcHVibGljIE1vY2tJbWFnZURlY29kZXJDbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewogICAgICAgICBJbWFnZURlY29kaW5nU3Rv
cmU6OmluaXRpYWxpemVPbk1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9hY3R1YWxEZWNvZGVyID0g
bmV3IE1vY2tJbWFnZURlY29kZXIoKTsKLSAgICAgICAgbV9hY3R1YWxEZWNvZGVyLT5zZXRTaXpl
KDYwMCwgNjEzKTsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUod2hpdGVQ
TkcsIHNpemVvZih3aGl0ZVBORykpOworICAgICAgICBtX2FjdHVhbERlY29kZXIgPSBuZXcgTW9j
a0ltYWdlRGVjb2Rlcih0aGlzKTsKKyAgICAgICAgbV9hY3R1YWxEZWNvZGVyLT5zZXRTaXplKDEs
IDEpOwogICAgICAgICBtX2xhenlEZWNvZGVyID0gRGVmZXJyZWRJbWFnZURlY29kZXI6OmNyZWF0
ZUZvclRlc3RpbmcoYWRvcHRQdHIobV9hY3R1YWxEZWNvZGVyKSk7CisgICAgICAgIG1fbGF6eURl
Y29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCB0cnVlKTsKICAgICAgICAgbV9jYW52YXMucmVz
ZXQoY3JlYXRlUmFzdGVyQ2FudmFzKDEwMCwgMTAwKSk7CisgICAgICAgIG1fZnJhbWVCdWZmZXJS
ZXF1ZXN0Q291bnQgPSAwOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCkBA
IC02MSwyOSArODIsNDMgQEAgcHVibGljOgogICAgICAgICBJbWFnZURlY29kaW5nU3RvcmU6OnNo
dXRkb3duKCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRlY29kZXJCZWluZ0Rlc3Ryb3ll
ZCgpCisgICAgeworICAgICAgICBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50ID0gbV9hY3R1YWxE
ZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpOworICAgICAgICBtX2FjdHVhbERlY29k
ZXIgPSAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIC8vIERvbid0IG93biB0aGlzIGJ1dCBz
YXZlcyB0aGUgcG9pbnRlciB0byBxdWVyeSBzdGF0ZXMuCiAgICAgTW9ja0ltYWdlRGVjb2Rlciog
bV9hY3R1YWxEZWNvZGVyOwogICAgIE93blB0cjxEZWZlcnJlZEltYWdlRGVjb2Rlcj4gbV9sYXp5
RGVjb2RlcjsKICAgICBTa1BpY3R1cmUgbV9waWN0dXJlOwogICAgIFNrQXV0b1RVbnJlZjxTa0Nh
bnZhcz4gbV9jYW52YXM7CisgICAgaW50IG1fZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIAogVEVTVF9GKERlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdCwgZHJhd0ludG9Ta1BpY3R1cmUpCiB7CiAgICAgT3duUHRyPE5hdGl2ZUltYWdl
U2tpYT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDAp
LT5hc05ld05hdGl2ZUltYWdlKCkpKTsKLSAgICBFWFBFQ1RfRVEobV9hY3R1YWxEZWNvZGVyLT5z
aXplKCkud2lkdGgoKSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwotICAgIEVYUEVDVF9FUSht
X2FjdHVhbERlY29kZXItPnNpemUoKS5oZWlnaHQoKSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOworICAgIEVYUEVD
VF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9GQUxTRShpbWFn
ZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKGltYWdlLT5iaXRtYXAoKS5p
c0ltbXV0YWJsZSgpKTsKIAogICAgIFNrQ2FudmFzKiB0ZW1wQ2FudmFzID0gbV9waWN0dXJlLmJl
Z2luUmVjb3JkaW5nKDEwMCwgMTAwKTsKICAgICB0ZW1wQ2FudmFzLT5kcmF3Qml0bWFwKGltYWdl
LT5iaXRtYXAoKSwgMCwgMCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwotICAgIEVY
UEVDVF9FUSgwLCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKIAogICAgIG1fY2Fu
dmFzLT5kcmF3UGljdHVyZShtX3BpY3R1cmUpOwotICAgIEVYUEVDVF9FUSgxLCBtX2FjdHVhbERl
Y29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2Zy
YW1lQnVmZmVyUmVxdWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNhbnZhc0JpdG1hcDsKKyAg
ICBjYW52YXNCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAw
LCAxMDApOworICAgIEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4ZWxzKCZjYW52YXNCaXRt
YXAsIDAsIDApKTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2NrKGNhbnZhc0JpdG1hcCk7
CisgICAgRVhQRUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAyNTUsIDI1NSksIGNhbnZh
c0JpdG1hcC5nZXRDb2xvcigwLCAwKSk7CiB9CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QsIGRyYXdTY2FsZWRJbnRvU2tQaWN0dXJlKQpAQCAtOTQsMTUgKzEyOSwyMSBAQCBURVNU
X0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1NrUGljdHVyZSkKICAg
ICBFWFBFQ1RfVFJVRShzY2FsZWRCaXRtYXAuaXNJbW11dGFibGUoKSk7CiAgICAgRVhQRUNUX0VR
KDUwLCBzY2FsZWRCaXRtYXAud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VRKDUxLCBzY2FsZWRCaXRt
YXAuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9FUSgwLCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVm
ZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVz
dENvdW50KTsKIAogICAgIFNrQ2FudmFzKiB0ZW1wQ2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVj
b3JkaW5nKDEwMCwgMTAwKTsKICAgICB0ZW1wQ2FudmFzLT5kcmF3Qml0bWFwKHNjYWxlZEJpdG1h
cCwgMCwgMCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwotICAgIEVYUEVDVF9FUSgw
LCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVD
VF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKIAogICAgIG1fY2FudmFzLT5kcmF3
UGljdHVyZShtX3BpY3R1cmUpOwotICAgIEVYUEVDVF9FUSgxLCBtX2FjdHVhbERlY29kZXItPmZy
YW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVy
UmVxdWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNhbnZhc0JpdG1hcDsKKyAgICBjYW52YXNC
aXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAwLCAxMDApOwor
ICAgIEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4ZWxzKCZjYW52YXNCaXRtYXAsIDAsIDAp
KTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2NrKGNhbnZhc0JpdG1hcCk7CisgICAgRVhQ
RUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAyNTUsIDI1NSksIGNhbnZhc0JpdG1hcC5n
ZXRDb2xvcigwLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oCmluZGV4IDVjZjIzNzQ0ZTUxZmRlNDNj
MTY0YjMxMTAxZDA1YjMzMDczMmMyZmQuLmM5YzBkMDFkNmQ4MzgyMDkyYjA3NGI5NGU0ZGQ5ZmQ3
YWUxYzg2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0lt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ltYWdl
RGVjb2Rlci5oCkBAIC0yOSwxMyArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVjb2RlckJlaW5nRGVzdHJveWVkKCkgPSAwOworfTsKKwogY2xhc3MgTW9ja0ltYWdlRGVjb2Rl
ciA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIE1vY2tJbWFnZURlY29kZXIo
KQorICAgIE1vY2tJbWFnZURlY29kZXIoTW9ja0ltYWdlRGVjb2RlckNsaWVudCogY2xpZW50KQog
ICAgICAgICA6IEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVkLCBJ
bWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKQogICAgICAgICAsIG1fZnJh
bWVCdWZmZXJSZXF1ZXN0Q291bnQoMCkKKyAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAg
eyB9CiAKKyAgICB+TW9ja0ltYWdlRGVjb2RlcigpCisgICAgeworICAgICAgICBtX2NsaWVudC0+
ZGVjb2RlckJlaW5nRGVzdHJveWVkKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJtb2NrIjsKQEAg
LTU0LDYgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGludCBtX2ZyYW1lQnVmZmVy
UmVxdWVzdENvdW50OworICAgIE1vY2tJbWFnZURlY29kZXJDbGllbnQqIG1fY2xpZW50OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174934</attachid>
            <date>2012-11-19 03:07:55 -0800</date>
            <delta_ts>2012-11-19 11:47:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102021-20121119030546.patch</filename>
            <type>text/plain</type>
            <size>21699</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE4ZmNjZmQ3ZDk1NWFh
YzNkMDhmMTVlNGIyYjE2MDg5NDY2OWRlNC4uMDNmNzFkMWVmMjE1MTJhMDZkNTQ0MTczNzgxNzU4
Nzk5ZjQ1ZjQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTE4ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGlt
YWdlIGRlY29kaW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBpbWFnZSBk
ZWNvZGluZyBpbiBJbWFnZUZyYW1lR2VuZXJhdG9yCisgICAgICAgIGNvbXBsZXRlbHkgbGF6eSB3
aXRob3V0IGNhY2hpbmcuIEltYWdlIGRlY29kaW5nIGxvZ2ljIGlzIHRoZW4gcmVtb3ZlZAorICAg
ICAgICBmcm9tIEltYWdlRGVjb2RpbmdTdG9yZS4KKworICAgICAgICBJbiBwYXJ0aWN1bGFyIHRo
ZXNlIG1ldGhvZHMgYXJlIHJlbW92ZWQuCisgICAgICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjps
b2NrUGl4ZWxzCisgICAgICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjp1bmxvY2tQaXhlbHMKKwor
ICAgICAgICBJbnN0ZWFkIGltYWdlIGRlY29kaW5nIGFuZCBzY2FsaW5nIGlzIGRvbmUgaW4KKyAg
ICAgICAgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUoKS4KKworICAgICAgICBV
bml0IHRlc3RzIGFyZSB1cGRhdGVkOgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Q6
OmRyYXdJbnRvU2tQaWN0dXJlCisgICAgICAgIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6ZHJh
d1NjYWxlZEludG9Ta1BpY3R1cmUKKworICAgICAgICBBbHNvIGNvdmVyZWQgYnkgbGF5b3V0IHRl
c3RzOgorICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2RlZmVycmVkCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZEltYWdlRGVjb2Rlcjo6Y3JlYXRlTGF6eURlY29k
aW5nQml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURl
Y29kaW5nU3RvcmUuaDoKKyAgICAgICAgKEltYWdlRGVjb2RpbmdTdG9yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpJbWFnZUZyYW1lR2VuZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6On5JbWFnZUZyYW1lR2VuZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXp5
RGVjb2RpbmdQaXhlbFJlZjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxhenlE
ZWNvZGluZ1BpeGVsUmVmOjpvblVubG9ja1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaDoKKyAgICAgICAgKExhenlEZWNv
ZGluZ1BpeGVsUmVmKToKKwogMjAxMi0xMS0xOCAgS3VuaWhpa28gU2FrYW1vdG8gIDxrc2FrYW1v
dG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG1pbi9tYXgvc3RlcCBzdXBwb3J0IGZvciBjYWxl
bmRhciBwaWNrZXIgb24gZGF0ZXRpbWUvZGF0ZXRpbWUtbG9jYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggZTQyMjdiNWE1YzM5OGNiNDE0MmU5NTExOGI4YmM2NWVmZGM1MjI1ZC4uZjU5
OTk5YTkxMjUxNmU2OWVlNTQxYzc0MmIzMTUxZDBjMzZlMDc0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMS0xOSAgQWxwaGEgTGFtICA8aGNsYW1A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTGF6eSBpbWFnZSBkZWNvZGluZyB3
aXRob3V0IGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGVkIHR3byB0ZXN0IGNhc2VzIHVzaW5nIHJlYWwgaW1hZ2UgZGF0YS4KKworICAg
ICAgICBUaGUgdGVzdHMgZGVtb25zdHJhdGVzIHRoYXQgb3JpZ2luYWwgaW1hZ2UgZGVjb2RlciBp
cyBub3QgdXNlZCBhbmQKKyAgICAgICAgaW1hZ2UgaXMgZGVjb2RlZCBsYXppbHkgd2l0aCBjb3Jy
ZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAgICAgKiB0ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2Rl
clRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJl
ZEltYWdlRGVjb2RlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkSW1h
Z2VEZWNvZGVyVGVzdDo6ZGVjb2RlckJlaW5nRGVzdHJveWVkKToKKyAgICAgICAgKERlZmVycmVk
SW1hZ2VEZWNvZGVyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorICAgICAgICAq
IHRlc3RzL01vY2tJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKE1vY2tJbWFnZURlY29kZXJDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW1hZ2VEZWNv
ZGVyOjpNb2NrSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbWFnZURlY29k
ZXI6On5Nb2NrSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKE1vY2tJbWFnZURlY29kZXIpOgorCiAy
MDEyLTExLTE4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1MDQ3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDMzZDk0OTYwNGRlZWJkNmQ1NjZmMzhhOGIwMTE0MTgwMDJiMDZm
YmQuLmM2YzIwNDgzMjYzNGIyNTViNmU1NjQ4NDkzMTJhYWU2YTk3ZGJkYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHAKQEAgLTIwMSw3ICsyMDEsOSBAQCBTa0JpdG1hcCBE
ZWZlcnJlZEltYWdlRGVjb2Rlcjo6Y3JlYXRlTGF6eURlY29kaW5nQml0bWFwKCkKICAgICBTa0Jp
dG1hcCBiaXRtYXA7CiAgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIGZ1bGxTaXplLndpZHRoKCksIGZ1bGxTaXplLmhlaWdodCgpKTsKIAotICAgIG1fZnJh
bWVHZW5lcmF0b3IgPSBJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9hY3R1YWxEZWNvZGVy
LnJlbGVhc2UoKSwgbV9kYXRhLnJlbGVhc2UoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOworICAgIG1f
ZnJhbWVHZW5lcmF0b3IgPSBJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9kYXRhLnJlbGVh
c2UoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOworICAgIG1fYWN0dWFsRGVjb2Rlci5jbGVhcigpOwor
CiAgICAgYml0bWFwLnNldFBpeGVsUmVmKG5ldyBMYXp5RGVjb2RpbmdQaXhlbFJlZihtX2ZyYW1l
R2VuZXJhdG9yLCBmdWxsU2l6ZSwgZnVsbFJlY3QpKS0+dW5yZWYoKTsKIAogICAgIC8vIFVzZSB0
aGUgVVJJIHRvIGlkZW50aWZ5IHRoaXMgYXMgYSBsYXppbHkgZGVjb2RlZCBTa1BpeGVsUmVmIG9m
IHR5cGUgTGF6eURlY29kaW5nUGl4ZWxSZWYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmNw
cAppbmRleCAwNWIzZTJiOGRiZDE2NGE2YzZlMzFmMjg5NTc2NDlkN2Y4ZTdlMmVjLi40NDllNDUy
NTRlODk1YzAzMzI2YjRkNTdhMDViYmQxMTE5YmIzOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2Rp
bmdTdG9yZS5jcHAKQEAgLTI2LDEzICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIK
LSNpbmNsdWRlICJJbWFnZUZyYW1lR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2NhbGVkSW1hZ2VG
cmFnbWVudC5oIgotI2luY2x1ZGUgIlNrUmVjdC5oIgotI2luY2x1ZGUgIlNrU2l6ZS5oIgotCi0j
aW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgogCiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KIApAQCAtNzUsNjIgKzY5LDYgQEAgdm9pZCBJbWFnZURlY29kaW5nU3RvcmU6
OnNodXRkb3duKCkKICAgICBzZXRJbnN0YW5jZU9uTWFpblRocmVhZCgwKTsKIH0KIAotdm9pZCog
SW1hZ2VEZWNvZGluZ1N0b3JlOjpsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVy
YXRvcj4gZnJhbWVHZW5lcmF0b3IsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNr
SVJlY3QmIHNjYWxlZFN1YnNldCkKLXsKLSAgICBBU1NFUlQoY2FsbGVkT25WYWxpZFRocmVhZCgp
KTsKLSAgICBBU1NFUlQobV9sb2NrZWRTa0JpdG1hcC5pc051bGwoKSk7Ci0KLSAgICBTa0lTaXpl
IGZ1bGxTaXplID0gZnJhbWVHZW5lcmF0b3ItPmZ1bGxTaXplKCk7Ci0KLSAgICAvLyBUaGUgY2Fj
aGUgb25seSBzYXZlcyB0aGUgZnVsbCBzaXplIGltYWdlIGF0IHRoZSBtb21lbnQuCi0gICAgU2Nh
bGVkSW1hZ2VGcmFnbWVudCogZnJhbWVDYWNoZSA9IGxvb2t1cEZyYW1lQ2FjaGUoZnJhbWVHZW5l
cmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUpOwotICAgIFNrQml0bWFwIGJpdG1hcDsKLQotICAg
IGlmICghZnJhbWVDYWNoZSkgewotICAgICAgICAvLyBGSVhNRTogUGl4ZWxzIGFyZSBvd25lZCBi
eSB0aGUgSW1hZ2VEZWNvZGVyIGluIHRoZSBnZW5lcmF0b3IuIEZpbmQKLSAgICAgICAgLy8gYSB3
YXkgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIG91ciBjYWNoZS4KLSAgICAgICAgSW1hZ2VGcmFt
ZSogZnJhbWUgPSBmcmFtZUdlbmVyYXRvci0+ZGVjb2RlcigpLT5mcmFtZUJ1ZmZlckF0SW5kZXgo
MCk7Ci0KLSAgICAgICAgLy8gU2F2ZXMgdGhlIGZyYW1lIGluIGNhY2hlIGlmIHRoaXMgaXMgY29t
cGxldGUuCi0gICAgICAgIGlmIChmcmFtZS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVD
b21wbGV0ZSkgewotICAgICAgICAgICAgbV9mcmFtZUNhY2hlLmFwcGVuZChTY2FsZWRJbWFnZUZy
YWdtZW50OjpjcmVhdGUoZnJhbWVHZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUsIGZyYW1l
LT5nZXRTa0JpdG1hcCgpLCB0cnVlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZnJhbWUtPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB0aGlzIGlzIGEgZGVjb2RpbmcgZXJyb3IuIFJlcG9ydCB0aGlzIHRvIEJpdG1hcEltYWdlLgot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBiaXRtYXAgPSBmcmFt
ZS0+Z2V0U2tCaXRtYXAoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoZnJhbWVDYWNo
ZS0+aXNDb21wbGV0ZSgpKTsKLSAgICAgICAgYml0bWFwID0gZnJhbWVDYWNoZS0+Yml0bWFwKCk7
Ci0gICAgfQotCi0gICAgaWYgKGZ1bGxTaXplICE9IHNjYWxlZFNpemUpIHsKLSAgICAgICAgLy8g
SW1hZ2Ugc2NhbGluZyBpcyBkb25lIG9uLXRoZS1mbHkgYW5kIHNjYWxlZCBpbWFnZSBpcyBkZXN0
cm95ZWQKLSAgICAgICAgLy8gYWZ0ZXIgdXNlLgotICAgICAgICAvLyBGSVhNRTogUmVzaXplIGp1
c3QgdGhlIHJlcXVlc3RlZCBmcmFnbWVudC4KLSAgICAgICAgbV9sb2NrZWRTa0JpdG1hcCA9IHNr
aWE6OkltYWdlT3BlcmF0aW9uczo6UmVzaXplKGJpdG1hcCwgc2tpYTo6SW1hZ2VPcGVyYXRpb25z
OjpSRVNJWkVfTEFOQ1pPUzMsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBiaXRtYXA7Ci0gICAg
bV9sb2NrZWRTa0JpdG1hcC5sb2NrUGl4ZWxzKCk7Ci0gICAgcmV0dXJuIG1fbG9ja2VkU2tCaXRt
YXAuZ2V0QWRkcihzY2FsZWRTdWJzZXQueCgpLCBzY2FsZWRTdWJzZXQueSgpKTsKLX0KLQotdm9p
ZCBJbWFnZURlY29kaW5nU3RvcmU6OnVubG9ja1BpeGVscygpCi17Ci0gICAgQVNTRVJUKGNhbGxl
ZE9uVmFsaWRUaHJlYWQoKSk7Ci0KLSAgICBtX2xvY2tlZFNrQml0bWFwLnVubG9ja1BpeGVscygp
OwotICAgIG1fbG9ja2VkU2tCaXRtYXAucmVzZXQoKTsKLX0KLQotdm9pZCBJbWFnZURlY29kaW5n
U3RvcmU6OmZyYW1lR2VuZXJhdG9yQmVpbmdEZXN0cm95ZWQoSW1hZ2VGcmFtZUdlbmVyYXRvciog
ZnJhbWVHZW5lcmF0b3IpCi17Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0K
LSAgICBkZWxldGVGcmFtZUNhY2hlKGZyYW1lR2VuZXJhdG9yLT5pbWFnZUlkKCkpOwotfQotCiBi
b29sIEltYWdlRGVjb2RpbmdTdG9yZTo6Y2FsbGVkT25WYWxpZFRocmVhZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHRoaXMgPT0gaW5zdGFuY2VPbk1haW5UaHJlYWQoKSAmJiBpc01haW5UaHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlRGVjb2RpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKaW5kZXggNmQyYzM4NjM2Y2FjN2Q4OWMyYjQ4
YWYwZWYyN2ZiZGM4MjY3NzNjZi4uMGNlMzE3M2U5Zjk5ZGI2MmM4MzNiMDhmZjkzMTE1MzYyMjVi
ODQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKQEAgLTI2LDE1ICsyNiwxMCBAQAog
I2lmbmRlZiBJbWFnZURlY29kaW5nU3RvcmVfaAogI2RlZmluZSBJbWFnZURlY29kaW5nU3RvcmVf
aAogCi0jaW5jbHVkZSAiU2tCaXRtYXAuaCIKLSNpbmNsdWRlICJTa1JlY3QuaCIKICNpbmNsdWRl
ICJTa1NpemUuaCIKIAotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywyMiArNTIsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVPbk1haW5UaHJlYWQoKTsKICAgICBzdGF0aWMgdm9pZCBzaHV0
ZG93bigpOwogCi0gICAgLy8gWW91IG1heSBvbmx5IGxvY2sgb25lIHNldCBvZiBwaXhlbHMgYXQg
YSB0aW1lOyBvdmVybGFwcGluZyBsb2NrIGNhbGxzIGFyZSBub3QgYWxsb3dlZC4KLSAgICB2b2lk
KiBsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4sIGNvbnN0IFNrSVNp
emUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCk7Ci0gICAgdm9pZCB1
bmxvY2tQaXhlbHMoKTsKLQotICAgIHZvaWQgZnJhbWVHZW5lcmF0b3JCZWluZ0Rlc3Ryb3llZChJ
bWFnZUZyYW1lR2VuZXJhdG9yKik7Ci0KIHByaXZhdGU6CiAgICAgSW1hZ2VEZWNvZGluZ1N0b3Jl
KCk7CiAgICAgYm9vbCBjYWxsZWRPblZhbGlkVGhyZWFkKCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVh
dGVGcmFtZUdlbmVyYXRvcihQYXNzT3duUHRyPEltYWdlRGVjb2Rlcj4pOwogICAgIFNjYWxlZElt
YWdlRnJhZ21lbnQqIGxvb2t1cEZyYW1lQ2FjaGUoaW50IGltYWdlSWQsIGNvbnN0IFNrSVNpemUm
IHNjYWxlZFNpemUpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlRnJhbWVDYWNoZShpbnQgaW1hZ2VJ
ZCk7CiAKICAgICBWZWN0b3I8T3duUHRyPFNjYWxlZEltYWdlRnJhZ21lbnQ+ID4gbV9mcmFtZUNh
Y2hlOwotCi0gICAgU2tCaXRtYXAgbV9sb2NrZWRTa0JpdG1hcDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKaW5kZXggZTQ5N2Fm
Njg4MjkxYmI3NWZkZjk3NjNhMGQ5ODBmNTUxMTcyMTlkMi4uMjM2NzgzMzE1MzMyZWQ5MDUxZTgz
MWM2MWQzMDdlZGZmNWViYTM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAK
QEAgLTI4LDQzICsyOCw0NyBAQAogI2luY2x1ZGUgIkltYWdlRnJhbWVHZW5lcmF0b3IuaCIKIAog
I2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9yZS5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi1uYW1lc3BhY2UgewotCi0vLyBBbiB1bmlx
dWUgSUQgZm9yIGFuIGltYWdlIGZpbGUuCi1pbnQgc19uZXh0SW1hZ2VJZCA9IDA7Ci0KLX0gLy8g
bmFtZXNwYWNlCisjaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUltYWdlRnJhbWVHZW5lcmF0b3I6OkltYWdlRnJhbWVHZW5lcmF0
b3IoUGFzc093blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLSAgICA6IG1fZGVjb2RlcihkZWNvZGVy
KQorSW1hZ2VGcmFtZUdlbmVyYXRvcjo6SW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAgOiBtX2FsbERhdGFS
ZWNlaXZlZChmYWxzZSkKIHsKLSAgICBtX2Z1bGxTaXplID0gU2tJU2l6ZTo6TWFrZShtX2RlY29k
ZXItPnNpemUoKS53aWR0aCgpLCBtX2RlY29kZXItPnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgbV9p
bWFnZUlkID0gc19uZXh0SW1hZ2VJZCsrOwotCiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogfQogCiBJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcigp
CiB7Ci0gICAgaWYgKEltYWdlRGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VPbk1haW5UaHJlYWQoKSkK
LSAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT5mcmFt
ZUdlbmVyYXRvckJlaW5nRGVzdHJveWVkKHRoaXMpOwogfQogCi1JbWFnZURlY29kZXIqIEltYWdl
RnJhbWVHZW5lcmF0b3I6OmRlY29kZXIoKQordm9pZCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXRE
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
IHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmdldCgpOworICAgIG1fZGF0YSA9IGRhdGE7CisgICAg
bV9hbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiB9CiAKLXZvaWQgSW1hZ2VGcmFt
ZUdlbmVyYXRvcjo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCitTa0JpdG1hcCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpkZWNvZGVBbmRT
Y2FsZShjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBTa0lSZWN0JiBzY2FsZWRTdWJz
ZXQpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBpZiAobV9kZWNvZGVyKQotICAgICAgICBt
X2RlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIE93
blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIoSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
Km1fZGF0YS5nZXQoKSwgSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCwgSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCkpKTsKKyAgICBpZiAoIWRlY29kZXIpCisg
ICAgICAgIHJldHVybiBTa0JpdG1hcCgpOworCisgICAgZGVjb2Rlci0+c2V0RGF0YShtX2RhdGEu
Z2V0KCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBJbWFnZUZyYW1lKiBmcmFtZSA9IGRlY29k
ZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gU2tCaXRtYXAoKTsKKworICAgIFNrQml0bWFwIGJpdG1hcCA9IGZyYW1lLT5nZXRTa0JpdG1h
cCgpOworICAgIFNrSVNpemUgYml0bWFwU2l6ZSA9IFNrSVNpemU6Ok1ha2UoYml0bWFwLndpZHRo
KCksIGJpdG1hcC5oZWlnaHQoKSk7CisgICAgaWYgKGJpdG1hcFNpemUgIT0gc2NhbGVkU2l6ZSkK
KyAgICAgICAgYml0bWFwID0gc2tpYTo6SW1hZ2VPcGVyYXRpb25zOjpSZXNpemUoYml0bWFwLCBz
a2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJFU0laRV9MQU5DWk9TMywgc2NhbGVkU2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpKTsKKworICAgIFNrQml0bWFwIGJpdG1hcFN1YnNldDsKKyAg
ICBiaXRtYXAuZXh0cmFjdFN1YnNldCgmYml0bWFwU3Vic2V0LCBzY2FsZWRTdWJzZXQpOworICAg
IHJldHVybiBiaXRtYXBTdWJzZXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJh
bWVHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlRnJhbWVHZW5lcmF0b3IuaAppbmRleCA1OGZhNmZiMjNmMjUzNjNkNWJkZTFiMjFhYTll
ZTQ5NTAxM2ZiNWY1Li5lNjNmOWIxZmNjNWNlMGJjMmViZGMxZDcwMzVlYTRmM2ZiYjZhOWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUZyYW1lR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oCkBAIC0yNiw0MSArMjYsMzMgQEAKICNpZm5k
ZWYgSW1hZ2VGcmFtZUdlbmVyYXRvcl9oCiAjZGVmaW5lIEltYWdlRnJhbWVHZW5lcmF0b3JfaAog
Ci0jaW5jbHVkZSAiU2tUeXBlcy5oIgorI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAi
U2tTaXplLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBJbWFnZURlY29kZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdl
RnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUZyYW1lR2VuZXJhdG9yPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gY3Jl
YXRlKFBhc3NPd25QdHI8SW1hZ2VEZWNvZGVyPiBkZWNvZGVyLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW1hZ2VGcmFtZUdlbmVyYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW1hZ2VGcmFtZUdlbmVyYXRvcihkZWNvZGVyLCBkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUZyYW1lR2VuZXJhdG9yKGRhdGEsIGFs
bERhdGFSZWNlaXZlZCkpOwogICAgIH0KIAotICAgIEltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc093
blB0cjxJbWFnZURlY29kZXI+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICBJbWFnZUZyYW1lR2VuZXJhdG9yKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIH5JbWFnZUZyYW1lR2VuZXJhdG9yKCk7
CiAKLSAgICAvLyBDcmVhdGVzIHRoZSBpbWFnZSBkZWNvZGVyIGlmIG5lZWRlZC4KLSAgICBJbWFn
ZURlY29kZXIqIGRlY29kZXIoKTsKLSAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgU2tCaXRtYXAgZGVjb2RlQW5kU2Nh
bGUoY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6ZSwgY29uc3QgU2tJUmVjdCYgc2NhbGVkU3Vic2V0
KTsKIAotICAgIGNvbnN0IFNrSVNpemUmIGZ1bGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9mdWxs
U2l6ZTsgfQotICAgIGludCBpbWFnZUlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUlkOyB9Cisg
ICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwogCiBwcml2YXRlOgotICAgIE93blB0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7Ci0gICAgU2tJU2l6ZSBtX2Z1bGxTaXpl
OwotICAgIGludCBtX2ltYWdlSWQ7CisgICAgYm9vbCBtX2FsbERhdGFSZWNlaXZlZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNw
cAppbmRleCA1NmRkMDkxZTBkOWY4YzE0MGI3ZGJkNzMxZDczNjIxOGFkMGZiOTMyLi5hMjZmMzRi
OGI1OGI4M2Y4M2YwMGM4MDU5ZjEzN2E1NDRhMmNhYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29k
aW5nUGl4ZWxSZWYuY3BwCkBAIC01OCwxMyArNTgsMTcgQEAgYm9vbCBMYXp5RGVjb2RpbmdQaXhl
bFJlZjo6aXNDbGlwcGVkKCkgY29uc3QKIHZvaWQqIExhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxv
Y2tQaXhlbHMoU2tDb2xvclRhYmxlKiopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICByZXR1cm4gSW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT5s
b2NrUGl4ZWxzKG1fZnJhbWVHZW5lcmF0b3IsIG1fc2NhbGVkU2l6ZSwgbV9zY2FsZWRTdWJzZXQp
OworICAgIEFTU0VSVChtX2xvY2tlZFNrQml0bWFwLmlzTnVsbCgpKTsKKyAgICBtX2xvY2tlZEJp
dG1hcCA9IG1fZnJhbWVHZW5lcmF0b3ItPmRlY29kZUFuZFNjYWxlKG1fc2NhbGVkU2l6ZSwgbV9z
Y2FsZWRTdWJzZXQpOworICAgIG1fbG9ja2VkQml0bWFwLmxvY2tQaXhlbHMoKTsKKyAgICByZXR1
cm4gbV9sb2NrZWRCaXRtYXAuZ2V0QWRkcigwLCAwKTsKIH0KIAogdm9pZCBMYXp5RGVjb2RpbmdQ
aXhlbFJlZjo6b25VbmxvY2tQaXhlbHMoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT51bmxvY2tQ
aXhlbHMoKTsKKyAgICBtX2xvY2tlZEJpdG1hcC51bmxvY2tQaXhlbHMoKTsKKyAgICBtX2xvY2tl
ZEJpdG1hcC5yZXNldCgpOwogfQogCiBib29sIExhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxvY2tQ
aXhlbHNBcmVXcml0YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuaApp
bmRleCAwYWI5Y2NjNGNiMTExZjI3NjRmNzIzNzA2NzUxYTVlY2YxM2M3NjMzLi40ZmY4OWNmYjQx
ZTU0MTFjMDYxYWY5MTVkYWQ5OGIzNTZhMDRlMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1Bp
eGVsUmVmLmgKQEAgLTU4LDYgKzU4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW1hZ2VGcmFt
ZUdlbmVyYXRvcj4gbV9mcmFtZUdlbmVyYXRvcjsKICAgICBTa0lTaXplIG1fc2NhbGVkU2l6ZTsK
ICAgICBTa0lSZWN0IG1fc2NhbGVkU3Vic2V0OworCisgICAgU2tCaXRtYXAgbV9sb2NrZWRCaXRt
YXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKaW5kZXgg
MDk3N2U1NzI5YWQ2NmYyYzMwNjY5OWZmMmYzMjIwNjYyNTc2ZGIxMy4uNzdmOTk0YjU5MTIwNzcy
MjdiM2RlZDkxMWYyMWI2YWExYzcyZmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcApAQCAtMzAsMzAg
KzMwLDUxIEBACiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAjaW5jbHVkZSAiTW9j
a0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZp
Y2UuaCIKICNpbmNsdWRlICJTa1BpY3R1cmUuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAorLy8gUmF3IGRhdGEgZm9y
IGEgUE5HIGZpbGUgd2l0aCAxeDEgd2hpdGUgcGl4ZWxzLgorY29uc3QgY2hhciB3aGl0ZVBOR1td
ID0geworICAgIDB4ODksIDB4NTAsIDB4NGUsIDB4NDcsIDB4MGQsIDB4MGEsIDB4MWEsIDB4MGEs
IDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwZCwgMHg0OSwgMHg0OCwgMHg0NCwgMHg1MiwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA4LCAw
eDAyLCAweDAwLCAweDAwLCAweDAwLCAweDkwLAorICAgIDB4NzcsIDB4NTMsIDB4ZGUsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDEsIDB4NzMsIDB4NTIsIDB4NDcsCisgICAgMHg0MiwgMHgwMCwgMHhh
ZSwgMHhjZSwgMHgxYywgMHhlOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOSwKKyAgICAweDcwLCAw
eDQ4LCAweDU5LCAweDczLCAweDAwLCAweDAwLCAweDBiLCAweDEzLCAweDAwLCAweDAwLAorICAg
IDB4MGIsIDB4MTMsIDB4MDEsIDB4MDAsIDB4OWEsIDB4OWMsIDB4MTgsIDB4MDAsIDB4MDAsIDB4
MDAsCisgICAgMHgwYywgMHg0OSwgMHg0NCwgMHg0MSwgMHg1NCwgMHgwOCwgMHhkNywgMHg2Mywg
MHhmOCwgMHhmZiwKKyAgICAweGZmLCAweDNmLCAweDAwLCAweDA1LCAweGZlLCAweDAyLCAweGZl
LCAweGRjLCAweGNjLCAweDU5LAorICAgIDB4ZTcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
NDksIDB4NDUsIDB4NGUsIDB4NDQsIDB4YWUsCisgICAgMHg0MiwgMHg2MCwgMHg4MiwKK307CisK
IHN0YXRpYyBTa0NhbnZhcyogY3JlYXRlUmFzdGVyQ2FudmFzKGludCB3aWR0aCwgaW50IGhlaWdo
dCkKIHsKICAgICBTa0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRldmljZShuZXcgU2tEZXZpY2UoU2tC
aXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgcmV0dXJuIG5l
dyBTa0NhbnZhcyhkZXZpY2UpOwogfQogCi1jbGFzcyBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgSW1h
Z2VEZWNvZGluZ1N0b3JlOjppbml0aWFsaXplT25NYWluVGhyZWFkKCk7Ci0gICAgICAgIG1fYWN0
dWFsRGVjb2RlciA9IG5ldyBNb2NrSW1hZ2VEZWNvZGVyKCk7Ci0gICAgICAgIG1fYWN0dWFsRGVj
b2Rlci0+c2V0U2l6ZSg2MDAsIDYxMyk7CisgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHdoaXRlUE5HLCBzaXplb2Yod2hpdGVQTkcpKTsKKyAgICAgICAgbV9hY3R1YWxEZWNv
ZGVyID0gbmV3IE1vY2tJbWFnZURlY29kZXIodGhpcyk7CisgICAgICAgIG1fYWN0dWFsRGVjb2Rl
ci0+c2V0U2l6ZSgxLCAxKTsKICAgICAgICAgbV9sYXp5RGVjb2RlciA9IERlZmVycmVkSW1hZ2VE
ZWNvZGVyOjpjcmVhdGVGb3JUZXN0aW5nKGFkb3B0UHRyKG1fYWN0dWFsRGVjb2RlcikpOworICAg
ICAgICBtX2xhenlEZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgdHJ1ZSk7CiAgICAgICAg
IG1fY2FudmFzLnJlc2V0KGNyZWF0ZVJhc3RlckNhbnZhcygxMDAsIDEwMCkpOworICAgICAgICBt
X2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50ID0gMDsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQpAQCAtNjEsMjkgKzgyLDQzIEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VEZWNv
ZGluZ1N0b3JlOjpzaHV0ZG93bigpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVy
QmVpbmdEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3Vu
dCA9IG1fYWN0dWFsRGVjb2Rlci0+ZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAg
bV9hY3R1YWxEZWNvZGVyID0gMDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICAvLyBEb24ndCBv
d24gdGhpcyBidXQgc2F2ZXMgdGhlIHBvaW50ZXIgdG8gcXVlcnkgc3RhdGVzLgogICAgIE1vY2tJ
bWFnZURlY29kZXIqIG1fYWN0dWFsRGVjb2RlcjsKICAgICBPd25QdHI8RGVmZXJyZWRJbWFnZURl
Y29kZXI+IG1fbGF6eURlY29kZXI7CiAgICAgU2tQaWN0dXJlIG1fcGljdHVyZTsKICAgICBTa0F1
dG9UVW5yZWY8U2tDYW52YXM+IG1fY2FudmFzOworICAgIGludCBtX2ZyYW1lQnVmZmVyUmVxdWVz
dENvdW50OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIH07CiAKIFRFU1RfRihE
ZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQaWN0dXJlKQogewogICAgIE93blB0
cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1fbGF6eURlY29kZXItPmZyYW1lQnVm
ZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7Ci0gICAgRVhQRUNUX0VRKG1fYWN0
dWFsRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKLSAg
ICBFWFBFQ1RfRVEobV9hY3R1YWxEZWNvZGVyLT5zaXplKCkuaGVpZ2h0KCksIGltYWdlLT5iaXRt
YXAoKS5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDEsIGltYWdlLT5iaXRtYXAoKS53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpKTsKICAgICBFWFBF
Q1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsKICAgICBFWFBFQ1RfVFJVRShpbWFn
ZS0+Yml0bWFwKCkuaXNJbW11dGFibGUoKSk7CiAKICAgICBTa0NhbnZhcyogdGVtcENhbnZhcyA9
IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7CiAgICAgdGVtcENhbnZhcy0+ZHJh
d0JpdG1hcChpbWFnZS0+Yml0bWFwKCksIDAsIDApOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRp
bmcoKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVl
c3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7
CiAKICAgICBtX2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKLSAgICBFWFBFQ1RfRVEo
MSwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICBTa0JpdG1hcCBjYW52
YXNCaXRtYXA7CisgICAgY2FudmFzQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4
OF9Db25maWcsIDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJVRShtX2NhbnZhcy0+cmVhZFBpeGVs
cygmY2FudmFzQml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRvTG9ja1BpeGVscyBhdXRvTG9jayhj
YW52YXNCaXRtYXApOworICAgIEVYUEVDVF9FUShTa0NvbG9yU2V0QVJHQigyNTUsIDI1NSwgMjU1
LCAyNTUpLCBjYW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkpOwogfQogCiBURVNUX0YoRGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1NrUGljdHVyZSkKQEAgLTk0LDE1ICsx
MjksMjEgQEAgVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCwgZHJhd1NjYWxlZEludG9T
a1BpY3R1cmUpCiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0bWFwLmlzSW1tdXRhYmxlKCkpOwog
ICAgIEVYUEVDVF9FUSg1MCwgc2NhbGVkQml0bWFwLndpZHRoKCkpOwogICAgIEVYUEVDVF9FUSg1
MSwgc2NhbGVkQml0bWFwLmhlaWdodCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNv
ZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFt
ZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBTa0NhbnZhcyogdGVtcENhbnZhcyA9IG1fcGlj
dHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7CiAgICAgdGVtcENhbnZhcy0+ZHJhd0JpdG1h
cChzY2FsZWRCaXRtYXAsIDAsIDApOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBt
X2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9hY3R1
YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
bV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICBTa0JpdG1hcCBjYW52YXNCaXRtYXA7
CisgICAgY2FudmFzQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcs
IDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJVRShtX2NhbnZhcy0+cmVhZFBpeGVscygmY2FudmFz
Qml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRvTG9ja1BpeGVscyBhdXRvTG9jayhjYW52YXNCaXRt
YXApOworICAgIEVYUEVDVF9FUShTa0NvbG9yU2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBj
YW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tJbWFnZURlY29kZXIuaAppbmRleCA1Y2Yy
Mzc0NGU1MWZkZTQzYzE2NGIzMTEwMWQwNWIzMzA3MzJjMmZkLi5jOWMwZDAxZDZkODM4MjA5MmIw
NzRiOTRlNGRkOWZkN2FlMWM4NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL01vY2tJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01vY2tJbWFnZURlY29kZXIuaApAQCAtMjksMTMgKzI5LDI0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgTW9ja0ltYWdlRGVjb2RlckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGRlY29kZXJCZWluZ0Rlc3Ryb3llZCgpID0gMDsKK307CisKIGNsYXNzIE1v
Y2tJbWFnZURlY29kZXIgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBNb2Nr
SW1hZ2VEZWNvZGVyKCkKKyAgICBNb2NrSW1hZ2VEZWNvZGVyKE1vY2tJbWFnZURlY29kZXJDbGll
bnQqIGNsaWVudCkKICAgICAgICAgOiBJbWFnZURlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhUHJl
bXVsdGlwbGllZCwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCkKICAg
ICAgICAgLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KDApCisgICAgICAgICwgbV9jbGllbnQo
Y2xpZW50KQogICAgIHsgfQogCisgICAgfk1vY2tJbWFnZURlY29kZXIoKQorICAgIHsKKyAgICAg
ICAgbV9jbGllbnQtPmRlY29kZXJCZWluZ0Rlc3Ryb3llZCgpOworICAgIH0KKwogICAgIHZpcnR1
YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAibW9jayI7CkBAIC01NCw2ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBpbnQg
bV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudDsKKyAgICBNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50KiBt
X2NsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175014</attachid>
            <date>2012-11-19 11:47:45 -0800</date>
            <delta_ts>2012-11-19 13:36:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102021-20121119114535.patch</filename>
            <type>text/plain</type>
            <size>21727</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdjY2RkNmYwMmI5ZTA0
NjJkMTQ1ZGNkZjUzZjEzN2U5ZmIwOWYwZi4uZGY3NGMzNGRjMGZjNTczYzhkOTU3YjhhN2ZlZjAz
OTg0NDBhOWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTE5ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGlt
YWdlIGRlY29kaW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMgdG8gbWFrZSBpbWFnZSBk
ZWNvZGluZyBpbiBJbWFnZUZyYW1lR2VuZXJhdG9yCisgICAgICAgIGNvbXBsZXRlbHkgbGF6eSB3
aXRob3V0IGNhY2hpbmcuIEltYWdlIGRlY29kaW5nIGxvZ2ljIGlzIHRoZW4gcmVtb3ZlZAorICAg
ICAgICBmcm9tIEltYWdlRGVjb2RpbmdTdG9yZS4KKworICAgICAgICBUaGVzZSBtZXRob2RzIGFy
ZSByZW1vdmVkLgorICAgICAgICAtIEltYWdlRGVjb2RpbmdTdG9yZTo6bG9ja1BpeGVscworICAg
ICAgICAtIEltYWdlRGVjb2RpbmdTdG9yZTo6dW5sb2NrUGl4ZWxzCisKKyAgICAgICAgSW5zdGVh
ZCBpbWFnZSBkZWNvZGluZyBhbmQgc2NhbGluZyBpcyBkb25lIGluCisgICAgICAgIEltYWdlRnJh
bWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKCkuCisKKyAgICAgICAgVW5pdCB0ZXN0cyBhcmUg
dXBkYXRlZDoKKyAgICAgICAgRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0OjpkcmF3SW50b1NrUGlj
dHVyZQorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Q6OmRyYXdTY2FsZWRJbnRvU2tQ
aWN0dXJlCisKKyAgICAgICAgQWxzbyBjb3ZlcmVkIGJ5IGxheW91dCB0ZXN0czoKKyAgICAgICAg
cGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9kZWZlcnJlZAorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRJbWFnZURlY29kZXI6OmNyZWF0ZUxhenlEZWNvZGluZ0JpdG1hcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmg6
CisgICAgICAgIChJbWFnZURlY29kaW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZUdlbmVyYXRvcjo6SW1hZ2VGcmFtZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdlbmVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZUFuZFNjYWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSW1hZ2VGcmFt
ZUdlbmVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURl
Y29kaW5nUGl4ZWxSZWYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF6eURlY29kaW5nUGl4ZWxS
ZWY6Om9uTG9ja1BpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJl
Zjo6b25VbmxvY2tQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xhenlEZWNvZGluZ1BpeGVsUmVmLmg6CisgICAgICAgIChMYXp5RGVjb2RpbmdQaXhlbFJlZik6
CisKIDIwMTItMTEtMTkgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEluZGV4ZWREQjogc2ltcGxpZnkgUmVjb3JkSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA5ZjYzZjQ2NzQwNjNlNDQzYTVmMzNjNmIzY2Y5NWNjNjRiYWJmYmQ1
Li40ZmY3YmJiZjQ1Zjk2NDQ2N2NjNzQ4NjU4N2Q5OWJlOGUzZTY1OGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTE5ICBBbHBoYSBMYW0gIDxo
Y2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGltYWdlIGRlY29k
aW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVwZGF0ZWQgdHdvIHRlc3QgY2FzZXMgdXNpbmcgcmVhbCBpbWFnZSBkYXRhLgor
CisgICAgICAgIFRoZSB0ZXN0cyBkZW1vbnN0cmF0ZXMgdGhhdCBvcmlnaW5hbCBpbWFnZSBkZWNv
ZGVyIGlzIG5vdCB1c2VkIGFuZAorICAgICAgICBpbWFnZSBpcyBkZWNvZGVkIGxhemlseSB3aXRo
IGNvcnJlY3QgcGl4ZWwgcmVzdWx0cy4KKworICAgICAgICAqIHRlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRJbWFnZURlY29kZXJUZXN0OjpkZWNvZGVyQmVpbmdEZXN0cm95ZWQpOgorICAgICAgICAoRGVm
ZXJyZWRJbWFnZURlY29kZXJUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisgICAg
ICAgICogdGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAoTW9ja0ltYWdlRGVjb2Rl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbWFn
ZURlY29kZXI6Ok1vY2tJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0ltYWdl
RGVjb2Rlcjo6fk1vY2tJbWFnZURlY29kZXIpOgorICAgICAgICAoTW9ja0ltYWdlRGVjb2Rlcik6
CisKIDIwMTItMTEtMTkgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEluZGV4ZWREQjogc2ltcGxpZnkgUmVjb3JkSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVmZXJyZWRJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVm
ZXJyZWRJbWFnZURlY29kZXIuY3BwCmluZGV4IDMzZDk0OTYwNGRlZWJkNmQ1NjZmMzhhOGIwMTE0
MTgwMDJiMDZmYmQuLmM2YzIwNDgzMjYzNGIyNTViNmU1NjQ4NDkzMTJhYWU2YTk3ZGJkYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVy
cmVkSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHAKQEAgLTIwMSw3ICsyMDEsOSBAQCBT
a0JpdG1hcCBEZWZlcnJlZEltYWdlRGVjb2Rlcjo6Y3JlYXRlTGF6eURlY29kaW5nQml0bWFwKCkK
ICAgICBTa0JpdG1hcCBiaXRtYXA7CiAgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FS
R0JfODg4OF9Db25maWcsIGZ1bGxTaXplLndpZHRoKCksIGZ1bGxTaXplLmhlaWdodCgpKTsKIAot
ICAgIG1fZnJhbWVHZW5lcmF0b3IgPSBJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9hY3R1
YWxEZWNvZGVyLnJlbGVhc2UoKSwgbV9kYXRhLnJlbGVhc2UoKSwgbV9hbGxEYXRhUmVjZWl2ZWQp
OworICAgIG1fZnJhbWVHZW5lcmF0b3IgPSBJbWFnZUZyYW1lR2VuZXJhdG9yOjpjcmVhdGUobV9k
YXRhLnJlbGVhc2UoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOworICAgIG1fYWN0dWFsRGVjb2Rlci5j
bGVhcigpOworCiAgICAgYml0bWFwLnNldFBpeGVsUmVmKG5ldyBMYXp5RGVjb2RpbmdQaXhlbFJl
ZihtX2ZyYW1lR2VuZXJhdG9yLCBmdWxsU2l6ZSwgZnVsbFJlY3QpKS0+dW5yZWYoKTsKIAogICAg
IC8vIFVzZSB0aGUgVVJJIHRvIGlkZW50aWZ5IHRoaXMgYXMgYSBsYXppbHkgZGVjb2RlZCBTa1Bp
eGVsUmVmIG9mIHR5cGUgTGF6eURlY29kaW5nUGl4ZWxSZWYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGlu
Z1N0b3JlLmNwcAppbmRleCAwNWIzZTJiOGRiZDE2NGE2YzZlMzFmMjg5NTc2NDlkN2Y4ZTdlMmVj
Li40NDllNDUyNTRlODk1YzAzMzI2YjRkNTdhMDViYmQxMTE5YmIzOWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlRGVjb2RpbmdTdG9yZS5jcHAKQEAgLTI2LDEzICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0b3JlLmgiCiAKLSNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKLSNpbmNsdWRlICJJbWFnZUZyYW1lR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2Nh
bGVkSW1hZ2VGcmFnbWVudC5oIgotI2luY2x1ZGUgIlNrUmVjdC5oIgotI2luY2x1ZGUgIlNrU2l6
ZS5oIgotCi0jaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgogCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNzUsNjIgKzY5LDYgQEAgdm9pZCBJbWFnZURlY29k
aW5nU3RvcmU6OnNodXRkb3duKCkKICAgICBzZXRJbnN0YW5jZU9uTWFpblRocmVhZCgwKTsKIH0K
IAotdm9pZCogSW1hZ2VEZWNvZGluZ1N0b3JlOjpsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VG
cmFtZUdlbmVyYXRvcj4gZnJhbWVHZW5lcmF0b3IsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNpemUs
IGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKLXsKLSAgICBBU1NFUlQoY2FsbGVkT25WYWxp
ZFRocmVhZCgpKTsKLSAgICBBU1NFUlQobV9sb2NrZWRTa0JpdG1hcC5pc051bGwoKSk7Ci0KLSAg
ICBTa0lTaXplIGZ1bGxTaXplID0gZnJhbWVHZW5lcmF0b3ItPmZ1bGxTaXplKCk7Ci0KLSAgICAv
LyBUaGUgY2FjaGUgb25seSBzYXZlcyB0aGUgZnVsbCBzaXplIGltYWdlIGF0IHRoZSBtb21lbnQu
Ci0gICAgU2NhbGVkSW1hZ2VGcmFnbWVudCogZnJhbWVDYWNoZSA9IGxvb2t1cEZyYW1lQ2FjaGUo
ZnJhbWVHZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNpemUpOwotICAgIFNrQml0bWFwIGJpdG1h
cDsKLQotICAgIGlmICghZnJhbWVDYWNoZSkgewotICAgICAgICAvLyBGSVhNRTogUGl4ZWxzIGFy
ZSBvd25lZCBieSB0aGUgSW1hZ2VEZWNvZGVyIGluIHRoZSBnZW5lcmF0b3IuIEZpbmQKLSAgICAg
ICAgLy8gYSB3YXkgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIG91ciBjYWNoZS4KLSAgICAgICAg
SW1hZ2VGcmFtZSogZnJhbWUgPSBmcmFtZUdlbmVyYXRvci0+ZGVjb2RlcigpLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoMCk7Ci0KLSAgICAgICAgLy8gU2F2ZXMgdGhlIGZyYW1lIGluIGNhY2hlIGlmIHRo
aXMgaXMgY29tcGxldGUuCi0gICAgICAgIGlmIChmcmFtZS0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFt
ZTo6RnJhbWVDb21wbGV0ZSkgewotICAgICAgICAgICAgbV9mcmFtZUNhY2hlLmFwcGVuZChTY2Fs
ZWRJbWFnZUZyYWdtZW50OjpjcmVhdGUoZnJhbWVHZW5lcmF0b3ItPmltYWdlSWQoKSwgZnVsbFNp
emUsIGZyYW1lLT5nZXRTa0JpdG1hcCgpLCB0cnVlKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZnJh
bWUtPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBJZiB0aGlzIGlzIGEgZGVjb2RpbmcgZXJyb3IuIFJlcG9ydCB0aGlzIHRvIEJpdG1h
cEltYWdlLgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBiaXRt
YXAgPSBmcmFtZS0+Z2V0U2tCaXRtYXAoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQo
ZnJhbWVDYWNoZS0+aXNDb21wbGV0ZSgpKTsKLSAgICAgICAgYml0bWFwID0gZnJhbWVDYWNoZS0+
Yml0bWFwKCk7Ci0gICAgfQotCi0gICAgaWYgKGZ1bGxTaXplICE9IHNjYWxlZFNpemUpIHsKLSAg
ICAgICAgLy8gSW1hZ2Ugc2NhbGluZyBpcyBkb25lIG9uLXRoZS1mbHkgYW5kIHNjYWxlZCBpbWFn
ZSBpcyBkZXN0cm95ZWQKLSAgICAgICAgLy8gYWZ0ZXIgdXNlLgotICAgICAgICAvLyBGSVhNRTog
UmVzaXplIGp1c3QgdGhlIHJlcXVlc3RlZCBmcmFnbWVudC4KLSAgICAgICAgbV9sb2NrZWRTa0Jp
dG1hcCA9IHNraWE6OkltYWdlT3BlcmF0aW9uczo6UmVzaXplKGJpdG1hcCwgc2tpYTo6SW1hZ2VP
cGVyYXRpb25zOjpSRVNJWkVfTEFOQ1pPUzMsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6
ZS5oZWlnaHQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBiaXRt
YXA7Ci0gICAgbV9sb2NrZWRTa0JpdG1hcC5sb2NrUGl4ZWxzKCk7Ci0gICAgcmV0dXJuIG1fbG9j
a2VkU2tCaXRtYXAuZ2V0QWRkcihzY2FsZWRTdWJzZXQueCgpLCBzY2FsZWRTdWJzZXQueSgpKTsK
LX0KLQotdm9pZCBJbWFnZURlY29kaW5nU3RvcmU6OnVubG9ja1BpeGVscygpCi17Ci0gICAgQVNT
RVJUKGNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0KLSAgICBtX2xvY2tlZFNrQml0bWFwLnVubG9j
a1BpeGVscygpOwotICAgIG1fbG9ja2VkU2tCaXRtYXAucmVzZXQoKTsKLX0KLQotdm9pZCBJbWFn
ZURlY29kaW5nU3RvcmU6OmZyYW1lR2VuZXJhdG9yQmVpbmdEZXN0cm95ZWQoSW1hZ2VGcmFtZUdl
bmVyYXRvciogZnJhbWVHZW5lcmF0b3IpCi17Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRUaHJl
YWQoKSk7Ci0KLSAgICBkZWxldGVGcmFtZUNhY2hlKGZyYW1lR2VuZXJhdG9yLT5pbWFnZUlkKCkp
OwotfQotCiBib29sIEltYWdlRGVjb2RpbmdTdG9yZTo6Y2FsbGVkT25WYWxpZFRocmVhZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHRoaXMgPT0gaW5zdGFuY2VPbk1haW5UaHJlYWQoKSAmJiBpc01h
aW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKaW5kZXggNmQyYzM4NjM2Y2Fj
N2Q4OWMyYjQ4YWYwZWYyN2ZiZGM4MjY3NzNjZi4uMGNlMzE3M2U5Zjk5ZGI2MmM4MzNiMDhmZjkz
MTE1MzYyMjViODQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmgKQEAgLTI2LDE1ICsy
NiwxMCBAQAogI2lmbmRlZiBJbWFnZURlY29kaW5nU3RvcmVfaAogI2RlZmluZSBJbWFnZURlY29k
aW5nU3RvcmVfaAogCi0jaW5jbHVkZSAiU2tCaXRtYXAuaCIKLSNpbmNsdWRlICJTa1JlY3QuaCIK
ICNpbmNsdWRlICJTa1NpemUuaCIKIAotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywyMiArNTIsMTMgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPbk1haW5UaHJlYWQoKTsKICAgICBzdGF0aWMg
dm9pZCBzaHV0ZG93bigpOwogCi0gICAgLy8gWW91IG1heSBvbmx5IGxvY2sgb25lIHNldCBvZiBw
aXhlbHMgYXQgYSB0aW1lOyBvdmVybGFwcGluZyBsb2NrIGNhbGxzIGFyZSBub3QgYWxsb3dlZC4K
LSAgICB2b2lkKiBsb2NrUGl4ZWxzKFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4sIGNv
bnN0IFNrSVNpemUmIHNjYWxlZFNpemUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCk7Ci0g
ICAgdm9pZCB1bmxvY2tQaXhlbHMoKTsKLQotICAgIHZvaWQgZnJhbWVHZW5lcmF0b3JCZWluZ0Rl
c3Ryb3llZChJbWFnZUZyYW1lR2VuZXJhdG9yKik7Ci0KIHByaXZhdGU6CiAgICAgSW1hZ2VEZWNv
ZGluZ1N0b3JlKCk7CiAgICAgYm9vbCBjYWxsZWRPblZhbGlkVGhyZWFkKCkgY29uc3Q7Ci0gICAg
dm9pZCBjcmVhdGVGcmFtZUdlbmVyYXRvcihQYXNzT3duUHRyPEltYWdlRGVjb2Rlcj4pOwogICAg
IFNjYWxlZEltYWdlRnJhZ21lbnQqIGxvb2t1cEZyYW1lQ2FjaGUoaW50IGltYWdlSWQsIGNvbnN0
IFNrSVNpemUmIHNjYWxlZFNpemUpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlRnJhbWVDYWNoZShp
bnQgaW1hZ2VJZCk7CiAKICAgICBWZWN0b3I8T3duUHRyPFNjYWxlZEltYWdlRnJhZ21lbnQ+ID4g
bV9mcmFtZUNhY2hlOwotCi0gICAgU2tCaXRtYXAgbV9sb2NrZWRTa0JpdG1hcDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKaW5k
ZXggZTQ5N2FmNjg4MjkxYmI3NWZkZjk3NjNhMGQ5ODBmNTUxMTcyMTlkMi4uMjM2NzgzMzE1MzMy
ZWQ5MDUxZTgzMWM2MWQzMDdlZGZmNWViYTM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVy
YXRvci5jcHAKQEAgLTI4LDQzICsyOCw0NyBAQAogI2luY2x1ZGUgIkltYWdlRnJhbWVHZW5lcmF0
b3IuaCIKIAogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2Rp
bmdTdG9yZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi1uYW1lc3BhY2UgewotCi0v
LyBBbiB1bmlxdWUgSUQgZm9yIGFuIGltYWdlIGZpbGUuCi1pbnQgc19uZXh0SW1hZ2VJZCA9IDA7
Ci0KLX0gLy8gbmFtZXNwYWNlCisjaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdlRnJhbWVHZW5lcmF0b3I6OkltYWdlRnJh
bWVHZW5lcmF0b3IoUGFzc093blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIsIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKLSAgICA6IG1fZGVjb2Rl
cihkZWNvZGVyKQorSW1hZ2VGcmFtZUdlbmVyYXRvcjo6SW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCisgICAgOiBt
X2FsbERhdGFSZWNlaXZlZChmYWxzZSkKIHsKLSAgICBtX2Z1bGxTaXplID0gU2tJU2l6ZTo6TWFr
ZShtX2RlY29kZXItPnNpemUoKS53aWR0aCgpLCBtX2RlY29kZXItPnNpemUoKS5oZWlnaHQoKSk7
Ci0gICAgbV9pbWFnZUlkID0gc19uZXh0SW1hZ2VJZCsrOwotCiAgICAgc2V0RGF0YShkYXRhLCBh
bGxEYXRhUmVjZWl2ZWQpOwogfQogCiBJbWFnZUZyYW1lR2VuZXJhdG9yOjp+SW1hZ2VGcmFtZUdl
bmVyYXRvcigpCiB7Ci0gICAgaWYgKEltYWdlRGVjb2RpbmdTdG9yZTo6aW5zdGFuY2VPbk1haW5U
aHJlYWQoKSkKLSAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9uTWFpblRocmVh
ZCgpLT5mcmFtZUdlbmVyYXRvckJlaW5nRGVzdHJveWVkKHRoaXMpOwogfQogCi1JbWFnZURlY29k
ZXIqIEltYWdlRnJhbWVHZW5lcmF0b3I6OmRlY29kZXIoKQordm9pZCBJbWFnZUZyYW1lR2VuZXJh
dG9yOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmdldCgpOworICAgIG1fZGF0YSA9IGRh
dGE7CisgICAgbV9hbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiB9CiAKLXZvaWQg
SW1hZ2VGcmFtZUdlbmVyYXRvcjo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitTa0JpdG1hcCBJbWFnZUZyYW1lR2VuZXJhdG9yOjpk
ZWNvZGVBbmRTY2FsZShjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBTa0lSZWN0JiBz
Y2FsZWRTdWJzZXQpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBpZiAobV9kZWNvZGVyKQot
ICAgICAgICBtX2RlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIE93blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIoSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoKm1fZGF0YS5nZXQoKSwgSW1hZ2VTb3VyY2U6OkFscGhhUHJlbXVsdGlwbGllZCwg
SW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCkpKTsKKyAgICBpZiAoIWRl
Y29kZXIpCisgICAgICAgIHJldHVybiBTa0JpdG1hcCgpOworCisgICAgZGVjb2Rlci0+c2V0RGF0
YShtX2RhdGEuZ2V0KCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBJbWFnZUZyYW1lKiBmcmFt
ZSA9IGRlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gU2tCaXRtYXAoKTsKKworICAgIFNrQml0bWFwIGJpdG1hcCA9IGZyYW1lLT5n
ZXRTa0JpdG1hcCgpOworICAgIFNrSVNpemUgYml0bWFwU2l6ZSA9IFNrSVNpemU6Ok1ha2UoYml0
bWFwLndpZHRoKCksIGJpdG1hcC5oZWlnaHQoKSk7CisgICAgaWYgKGJpdG1hcFNpemUgIT0gc2Nh
bGVkU2l6ZSkKKyAgICAgICAgYml0bWFwID0gc2tpYTo6SW1hZ2VPcGVyYXRpb25zOjpSZXNpemUo
Yml0bWFwLCBza2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJFU0laRV9MQU5DWk9TMywgc2NhbGVkU2l6
ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpKTsKKworICAgIFNrQml0bWFwIGJpdG1hcFN1
YnNldDsKKyAgICBiaXRtYXAuZXh0cmFjdFN1YnNldCgmYml0bWFwU3Vic2V0LCBzY2FsZWRTdWJz
ZXQpOworICAgIHJldHVybiBiaXRtYXBTdWJzZXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlRnJhbWVHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuaAppbmRleCA1OGZhNmZiMjNmMjUzNjNkNWJk
ZTFiMjFhYTllZTQ5NTAxM2ZiNWY1Li4xYzVkNmNmNmVlYmQwMGU4NjlkNWZhYzgyMTM5MjczMWM0
OGIzMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oCkBAIC0yNiw5ICsyNiw4IEBA
CiAjaWZuZGVmIEltYWdlRnJhbWVHZW5lcmF0b3JfaAogI2RlZmluZSBJbWFnZUZyYW1lR2VuZXJh
dG9yX2gKIAotI2luY2x1ZGUgIlNrVHlwZXMuaCIKKyNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2lu
Y2x1ZGUgIlNrU2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTM2LDMxICszNSwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEltYWdlRGVjb2RlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1h
Z2VGcmFtZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVHZW5lcmF0b3I+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBj
cmVhdGUoUGFzc093blB0cjxJbWFnZURlY29kZXI+IGRlY29kZXIsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbWFnZUZyYW1lR2VuZXJhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbWFnZUZyYW1lR2VuZXJhdG9yKGRlY29kZXIsIGRhdGEsIGFsbERhdGFSZWNlaXZlZCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRnJhbWVHZW5lcmF0b3IoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKSk7CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZUdlbmVyYXRvcihQYXNz
T3duUHRyPEltYWdlRGVjb2Rlcj4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworICAgIEltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgfkltYWdlRnJhbWVHZW5lcmF0b3Io
KTsKIAotICAgIC8vIENyZWF0ZXMgdGhlIGltYWdlIGRlY29kZXIgaWYgbmVlZGVkLgotICAgIElt
YWdlRGVjb2RlciogZGVjb2RlcigpOwotICAgIHZvaWQgc2V0RGF0YShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBTa0JpdG1hcCBkZWNvZGVBbmRT
Y2FsZShjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBTa0lSZWN0JiBzY2FsZWRTdWJz
ZXQpOwogCi0gICAgY29uc3QgU2tJU2l6ZSYgZnVsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2Z1
bGxTaXplOyB9Ci0gICAgaW50IGltYWdlSWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSWQ7IH0K
KyAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNvZGVy
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKLSAgICBTa0lTaXplIG1fZnVsbFNp
emU7Ci0gICAgaW50IG1faW1hZ2VJZDsKKyAgICBib29sIG1fYWxsRGF0YVJlY2VpdmVkOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYu
Y3BwCmluZGV4IDU2ZGQwOTFlMGQ5ZjhjMTQwYjdkYmQ3MzFkNzM2MjE4YWQwZmI5MzIuLmEyNmYz
NGI4YjU4YjgzZjgzZjAwYzgwNTlmMTM3YTU0NGEyY2FjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVj
b2RpbmdQaXhlbFJlZi5jcHAKQEAgLTU4LDEzICs1OCwxNyBAQCBib29sIExhenlEZWNvZGluZ1Bp
eGVsUmVmOjppc0NsaXBwZWQoKSBjb25zdAogdm9pZCogTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9u
TG9ja1BpeGVscyhTa0NvbG9yVGFibGUqKikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIHJldHVybiBJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCkt
PmxvY2tQaXhlbHMobV9mcmFtZUdlbmVyYXRvciwgbV9zY2FsZWRTaXplLCBtX3NjYWxlZFN1YnNl
dCk7CisgICAgQVNTRVJUKG1fbG9ja2VkU2tCaXRtYXAuaXNOdWxsKCkpOworICAgIG1fbG9ja2Vk
Qml0bWFwID0gbV9mcmFtZUdlbmVyYXRvci0+ZGVjb2RlQW5kU2NhbGUobV9zY2FsZWRTaXplLCBt
X3NjYWxlZFN1YnNldCk7CisgICAgbV9sb2NrZWRCaXRtYXAubG9ja1BpeGVscygpOworICAgIHJl
dHVybiBtX2xvY2tlZEJpdG1hcC5nZXRBZGRyKDAsIDApOwogfQogCiB2b2lkIExhenlEZWNvZGlu
Z1BpeGVsUmVmOjpvblVubG9ja1BpeGVscygpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBJbWFnZURlY29kaW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCktPnVubG9j
a1BpeGVscygpOworICAgIG1fbG9ja2VkQml0bWFwLnVubG9ja1BpeGVscygpOworICAgIG1fbG9j
a2VkQml0bWFwLnJlc2V0KCk7CiB9CiAKIGJvb2wgTGF6eURlY29kaW5nUGl4ZWxSZWY6Om9uTG9j
a1BpeGVsc0FyZVdyaXRhYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5o
CmluZGV4IDBhYjljY2M0Y2IxMTFmMjc2NGY3MjM3MDY3NTFhNWVjZjEzYzc2MzMuLjRmZjg5Y2Zi
NDFlNTQxMWMwNjFhZjkxNWRhZDk4YjM1NmEwNGUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5n
UGl4ZWxSZWYuaApAQCAtNTgsNiArNTgsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbWFnZUZy
YW1lR2VuZXJhdG9yPiBtX2ZyYW1lR2VuZXJhdG9yOwogICAgIFNrSVNpemUgbV9zY2FsZWRTaXpl
OwogICAgIFNrSVJlY3QgbV9zY2FsZWRTdWJzZXQ7CisKKyAgICBTa0JpdG1hcCBtX2xvY2tlZEJp
dG1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LmNwcAppbmRl
eCAwOTc3ZTU3MjlhZDY2ZjJjMzA2Njk5ZmYyZjMyMjA2NjI1NzZkYjEzLi41MDY3ZDIxOWM0NGNh
ZjQxODkzMjcyNGE5NmNiN2ZlYjE0NWY4ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3QuY3BwCkBAIC0zMCwz
MCArMzAsNTEgQEAKICNpbmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRlICJN
b2NrSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0Rl
dmljZS5oIgogI2luY2x1ZGUgIlNrUGljdHVyZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCisvLyBSYXcgZGF0YSBm
b3IgYSBQTkcgZmlsZSB3aXRoIDF4MSB3aGl0ZSBwaXhlbHMuCitjb25zdCBjaGFyIHdoaXRlUE5H
W10gPSB7CisgICAgMHg4OSwgMHg1MCwgMHg0ZSwgMHg0NywgMHgwZCwgMHgwYSwgMHgxYSwgMHgw
YSwgMHgwMCwgMHgwMCwKKyAgICAweDAwLCAweDBkLCAweDQ5LCAweDQ4LCAweDQ0LCAweDUyLCAw
eDAwLCAweDAwLCAweDAwLCAweDAxLAorICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDgs
IDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTAsCisgICAgMHg3NywgMHg1MywgMHhkZSwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg3MywgMHg1MiwgMHg0NywKKyAgICAweDQyLCAweDAwLCAw
eGFlLCAweGNlLCAweDFjLCAweGU5LCAweDAwLCAweDAwLCAweDAwLCAweDA5LAorICAgIDB4NzAs
IDB4NDgsIDB4NTksIDB4NzMsIDB4MDAsIDB4MDAsIDB4MGIsIDB4MTMsIDB4MDAsIDB4MDAsCisg
ICAgMHgwYiwgMHgxMywgMHgwMSwgMHgwMCwgMHg5YSwgMHg5YywgMHgxOCwgMHgwMCwgMHgwMCwg
MHgwMCwKKyAgICAweDBjLCAweDQ5LCAweDQ0LCAweDQxLCAweDU0LCAweDA4LCAweGQ3LCAweDYz
LCAweGY4LCAweGZmLAorICAgIDB4ZmYsIDB4M2YsIDB4MDAsIDB4MDUsIDB4ZmUsIDB4MDIsIDB4
ZmUsIDB4ZGMsIDB4Y2MsIDB4NTksCisgICAgMHhlNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHg0OSwgMHg0NSwgMHg0ZSwgMHg0NCwgMHhhZSwKKyAgICAweDQyLCAweDYwLCAweDgyLAorfTsK
Kwogc3RhdGljIFNrQ2FudmFzKiBjcmVhdGVSYXN0ZXJDYW52YXMoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogewogICAgIFNrQXV0b1RVbnJlZjxTa0RldmljZT4gZGV2aWNlKG5ldyBTa0RldmljZShT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHdpZHRoLCBoZWlnaHQpKTsKICAgICByZXR1cm4g
bmV3IFNrQ2FudmFzKGRldmljZSk7CiB9CiAKLWNsYXNzIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRGVmZXJyZWRJbWFnZURlY29kZXJU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCwgcHVibGljIE1vY2tJbWFnZURlY29kZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewogICAgICAgICBJ
bWFnZURlY29kaW5nU3RvcmU6OmluaXRpYWxpemVPbk1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9h
Y3R1YWxEZWNvZGVyID0gbmV3IE1vY2tJbWFnZURlY29kZXIoKTsKLSAgICAgICAgbV9hY3R1YWxE
ZWNvZGVyLT5zZXRTaXplKDYwMCwgNjEzKTsKKyAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUod2hpdGVQTkcsIHNpemVvZih3aGl0ZVBORykpOworICAgICAgICBtX2FjdHVhbERl
Y29kZXIgPSBuZXcgTW9ja0ltYWdlRGVjb2Rlcih0aGlzKTsKKyAgICAgICAgbV9hY3R1YWxEZWNv
ZGVyLT5zZXRTaXplKDEsIDEpOwogICAgICAgICBtX2xhenlEZWNvZGVyID0gRGVmZXJyZWRJbWFn
ZURlY29kZXI6OmNyZWF0ZUZvclRlc3RpbmcoYWRvcHRQdHIobV9hY3R1YWxEZWNvZGVyKSk7Cisg
ICAgICAgIG1fbGF6eURlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCB0cnVlKTsKICAgICAg
ICAgbV9jYW52YXMucmVzZXQoY3JlYXRlUmFzdGVyQ2FudmFzKDEwMCwgMTAwKSk7CisgICAgICAg
IG1fZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQgPSAwOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpCkBAIC02MSwyOSArODIsNDMgQEAgcHVibGljOgogICAgICAgICBJbWFnZURl
Y29kaW5nU3RvcmU6OnNodXRkb3duKCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRlY29k
ZXJCZWluZ0Rlc3Ryb3llZCgpCisgICAgeworICAgICAgICBtX2ZyYW1lQnVmZmVyUmVxdWVzdENv
dW50ID0gbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpOworICAgICAg
ICBtX2FjdHVhbERlY29kZXIgPSAwOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIC8vIERvbid0
IG93biB0aGlzIGJ1dCBzYXZlcyB0aGUgcG9pbnRlciB0byBxdWVyeSBzdGF0ZXMuCiAgICAgTW9j
a0ltYWdlRGVjb2RlciogbV9hY3R1YWxEZWNvZGVyOwogICAgIE93blB0cjxEZWZlcnJlZEltYWdl
RGVjb2Rlcj4gbV9sYXp5RGVjb2RlcjsKICAgICBTa1BpY3R1cmUgbV9waWN0dXJlOwogICAgIFNr
QXV0b1RVbnJlZjxTa0NhbnZhcz4gbV9jYW52YXM7CisgICAgaW50IG1fZnJhbWVCdWZmZXJSZXF1
ZXN0Q291bnQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsKIAogVEVTVF9G
KERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCwgZHJhd0ludG9Ta1BpY3R1cmUpCiB7CiAgICAgT3du
UHRyPE5hdGl2ZUltYWdlU2tpYT4gaW1hZ2UoYWRvcHRQdHIobV9sYXp5RGVjb2Rlci0+ZnJhbWVC
dWZmZXJBdEluZGV4KDApLT5hc05ld05hdGl2ZUltYWdlKCkpKTsKLSAgICBFWFBFQ1RfRVEobV9h
Y3R1YWxEZWNvZGVyLT5zaXplKCkud2lkdGgoKSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRoKCkpOwot
ICAgIEVYUEVDVF9FUShtX2FjdHVhbERlY29kZXItPnNpemUoKS5oZWlnaHQoKSwgaW1hZ2UtPmJp
dG1hcCgpLmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgpLndpZHRo
KCkpOworICAgIEVYUEVDVF9FUSgxLCBpbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkpOwogICAgIEVY
UEVDVF9GQUxTRShpbWFnZS0+Yml0bWFwKCkuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKGlt
YWdlLT5iaXRtYXAoKS5pc0ltbXV0YWJsZSgpKTsKIAogICAgIFNrQ2FudmFzKiB0ZW1wQ2FudmFz
ID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKDEwMCwgMTAwKTsKICAgICB0ZW1wQ2FudmFzLT5k
cmF3Qml0bWFwKGltYWdlLT5iaXRtYXAoKSwgMCwgMCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29y
ZGluZygpOwotICAgIEVYUEVDVF9FUSgwLCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVx
dWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50
KTsKIAogICAgIG1fY2FudmFzLT5kcmF3UGljdHVyZShtX3BpY3R1cmUpOwotICAgIEVYUEVDVF9F
USgxLCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVY
UEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNh
bnZhc0JpdG1hcDsKKyAgICBjYW52YXNCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84
ODg4X0NvbmZpZywgMTAwLCAxMDApOworICAgIEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4
ZWxzKCZjYW52YXNCaXRtYXAsIDAsIDApKTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2Nr
KGNhbnZhc0JpdG1hcCk7CisgICAgRVhQRUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAy
NTUsIDI1NSksIGNhbnZhc0JpdG1hcC5nZXRDb2xvcigwLCAwKSk7CiB9CiAKIFRFU1RfRihEZWZl
cnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdTY2FsZWRJbnRvU2tQaWN0dXJlKQpAQCAtOTQsMTUg
KzEyOSwyMiBAQCBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50
b1NrUGljdHVyZSkKICAgICBFWFBFQ1RfVFJVRShzY2FsZWRCaXRtYXAuaXNJbW11dGFibGUoKSk7
CiAgICAgRVhQRUNUX0VRKDUwLCBzY2FsZWRCaXRtYXAud2lkdGgoKSk7CiAgICAgRVhQRUNUX0VR
KDUxLCBzY2FsZWRCaXRtYXAuaGVpZ2h0KCkpOwotICAgIEVYUEVDVF9FUSgwLCBtX2FjdHVhbERl
Y29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2Zy
YW1lQnVmZmVyUmVxdWVzdENvdW50KTsKIAogICAgIFNrQ2FudmFzKiB0ZW1wQ2FudmFzID0gbV9w
aWN0dXJlLmJlZ2luUmVjb3JkaW5nKDEwMCwgMTAwKTsKICAgICB0ZW1wQ2FudmFzLT5kcmF3Qml0
bWFwKHNjYWxlZEJpdG1hcCwgMCwgMCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwot
ICAgIEVYUEVDVF9FUSgwLCBtX2FjdHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50
KCkpOworICAgIEVYUEVDVF9FUSgwLCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKIAogICAg
IG1fY2FudmFzLT5kcmF3UGljdHVyZShtX3BpY3R1cmUpOwotICAgIEVYUEVDVF9FUSgxLCBtX2Fj
dHVhbERlY29kZXItPmZyYW1lQnVmZmVyUmVxdWVzdENvdW50KCkpOworICAgIEVYUEVDVF9FUSgw
LCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50KTsKKworICAgIFNrQml0bWFwIGNhbnZhc0JpdG1h
cDsKKyAgICBjYW52YXNCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgMTAwLCAxMDApOworICAgIEFTU0VSVF9UUlVFKG1fY2FudmFzLT5yZWFkUGl4ZWxzKCZjYW52
YXNCaXRtYXAsIDAsIDApKTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGF1dG9Mb2NrKGNhbnZhc0Jp
dG1hcCk7CisgICAgRVhQRUNUX0VRKFNrQ29sb3JTZXRBUkdCKDI1NSwgMjU1LCAyNTUsIDI1NSks
IGNhbnZhc0JpdG1hcC5nZXRDb2xvcigwLCAwKSk7CisgICAgRVhQRUNUX0VRKFNrQ29sb3JTZXRB
UkdCKDI1NSwgMjU1LCAyNTUsIDI1NSksIGNhbnZhc0JpdG1hcC5nZXRDb2xvcig0OSwgNTApKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9N
b2NrSW1hZ2VEZWNvZGVyLmgKaW5kZXggNWNmMjM3NDRlNTFmZGU0M2MxNjRiMzExMDFkMDViMzMw
NzMyYzJmZC4uYzljMGQwMWQ2ZDgzODIwOTJiMDc0Yjk0ZTRkZDlmZDdhZTFjODY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrSW1hZ2VEZWNvZGVyLmgKQEAgLTI5
LDEzICsyOSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1vY2tJbWFnZURl
Y29kZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVyQmVpbmdEZXN0
cm95ZWQoKSA9IDA7Cit9OworCiBjbGFzcyBNb2NrSW1hZ2VEZWNvZGVyIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgTW9ja0ltYWdlRGVjb2RlcigpCisgICAgTW9ja0ltYWdl
RGVjb2RlcihNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIDogSW1hZ2VE
ZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpCiAgICAgICAgICwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RD
b3VudCgwKQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICB7IH0KIAorICAgIH5Nb2Nr
SW1hZ2VEZWNvZGVyKCkKKyAgICB7CisgICAgICAgIG1fY2xpZW50LT5kZWNvZGVyQmVpbmdEZXN0
cm95ZWQoKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIm1vY2siOwpAQCAtNTQsNiArNjUsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgaW50IG1fZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQ7Cisg
ICAgTW9ja0ltYWdlRGVjb2RlckNsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175036</attachid>
            <date>2012-11-19 13:36:05 -0800</date>
            <delta_ts>2012-11-19 14:20:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102021-20121119133355.patch</filename>
            <type>text/plain</type>
            <size>22316</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdjY2RkNmYwMmI5ZTA0
NjJkMTQ1ZGNkZjUzZjEzN2U5ZmIwOWYwZi4uOTBhMzUwMjMyNTdhN2ZjMWI3NTEwYmVlZDI4OTQ0
NGU0MzY0NTEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTExLTE5ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBMYXp5IGlt
YWdlIGRlY29kaW5nIHdpdGhvdXQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4g
V2hpdGUuCisKKyAgICAgICAgR29hbCBvZiB0aGlzIGNoYW5nZSBpcyB0byBtYWtlIGltYWdlIGRl
Y29kaW5nIGluIEltYWdlRnJhbWVHZW5lcmF0b3IKKyAgICAgICAgY29tcGxldGVseSBsYXp5IHdp
dGhvdXQgY2FjaGluZy4gSW1hZ2UgZGVjb2RpbmcgbG9naWMgaXMgdGhlbiByZW1vdmVkCisgICAg
ICAgIGZyb20gSW1hZ2VEZWNvZGluZ1N0b3JlLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJl
IHJlbW92ZWQuCisgICAgICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjpsb2NrUGl4ZWxzCisgICAg
ICAgIC0gSW1hZ2VEZWNvZGluZ1N0b3JlOjp1bmxvY2tQaXhlbHMKKworICAgICAgICBJbnN0ZWFk
IGltYWdlIGRlY29kaW5nIGFuZCBzY2FsaW5nIGlzIGRvbmUgaW4KKyAgICAgICAgSW1hZ2VGcmFt
ZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUoKS4KKworICAgICAgICBVbml0IHRlc3RzIGFyZSB1
cGRhdGVkOgorICAgICAgICBEZWZlcnJlZEltYWdlRGVjb2RlclRlc3Q6OmRyYXdJbnRvU2tQaWN0
dXJlCisgICAgICAgIERlZmVycmVkSW1hZ2VEZWNvZGVyVGVzdDo6ZHJhd1NjYWxlZEludG9Ta1Bp
Y3R1cmUKKworICAgICAgICBBbHNvIGNvdmVyZWQgYnkgbGF5b3V0IHRlc3RzOgorICAgICAgICBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2RlZmVycmVkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EZWZlcnJlZEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZEltYWdlRGVjb2Rlcjo6Y3JlYXRlTGF6eURlY29kaW5nQml0bWFwKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuaDoK
KyAgICAgICAgKEltYWdlRGVjb2RpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lR2VuZXJhdG9yOjpJbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6On5JbWFnZUZyYW1lR2VuZXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChJbWFnZUZyYW1l
R2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVj
b2RpbmdQaXhlbFJlZi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXp5RGVjb2RpbmdQaXhlbFJl
Zjo6b25Mb2NrUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxhenlEZWNvZGluZ1BpeGVsUmVm
OjpvblVubG9ja1BpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF6eURlY29kaW5nUGl4ZWxSZWYuaDoKKyAgICAgICAgKExhenlEZWNvZGluZ1BpeGVsUmVmKToK
KwogMjAxMi0xMS0xOSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgSW5kZXhlZERCOiBzaW1wbGlmeSBSZWNvcmRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDlmNjNmNDY3NDA2M2U0NDNhNWYzM2M2YjNjZjk1Y2M2NGJhYmZiZDUu
Ljk4MjU2OGNiYzQzOTdmMTQxY2MzZDE0MzVjNTBhMmY2ODcwOTEwZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTEtMTkgIEFscGhhIExhbSAgPGhj
bGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIExhenkgaW1hZ2UgZGVjb2Rp
bmcgd2l0aG91dCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyMDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKwor
ICAgICAgICBVcGRhdGVkIHR3byB0ZXN0IGNhc2VzIHVzaW5nIHJlYWwgaW1hZ2UgZGF0YS4KKwor
ICAgICAgICBUaGUgdGVzdHMgZGVtb25zdHJhdGVzIHRoYXQgb3JpZ2luYWwgaW1hZ2UgZGVjb2Rl
ciBpcyBub3QgdXNlZCBhbmQKKyAgICAgICAgaW1hZ2UgaXMgZGVjb2RlZCBsYXppbHkgd2l0aCBj
b3JyZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAgICAgKiB0ZXN0cy9EZWZlcnJlZEltYWdlRGVj
b2RlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZl
cnJlZEltYWdlRGVjb2RlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
SW1hZ2VEZWNvZGVyVGVzdDo6ZGVjb2RlckJlaW5nRGVzdHJveWVkKToKKyAgICAgICAgKERlZmVy
cmVkSW1hZ2VEZWNvZGVyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL01vY2tJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKE1vY2tJbWFnZURlY29kZXJD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW1hZ2VE
ZWNvZGVyOjpNb2NrSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJbWFnZURl
Y29kZXI6On5Nb2NrSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKE1vY2tJbWFnZURlY29kZXIpOgor
CiAyMDEyLTExLTE5ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBJbmRleGVkREI6IHNpbXBsaWZ5IFJlY29yZElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlZmVy
cmVkSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzM2Q5NDk2MDRkZWViZDZkNTY2ZjM4YThiMDExNDE4
MDAyYjA2ZmJkLi4xNGRlNjk0ZTgzM2NhZTA3OTA5MDE5Mjc4NGQ4MDQ5MGIzNDE4YWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWZlcnJl
ZEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRGVmZXJyZWRJbWFnZURlY29kZXIuY3BwCkBAIC03NCw3ICs3NCw2IEBAIGJvb2wg
RGVmZXJyZWRJbWFnZURlY29kZXI6OmlzTGF6eURlY29kZWQoY29uc3QgU2tCaXRtYXAmIGJpdG1h
cCkKIFNrQml0bWFwIERlZmVycmVkSW1hZ2VEZWNvZGVyOjpjcmVhdGVSZXNpemVkTGF6eURlY29k
aW5nQml0bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGNvbnN0IFNrSVNpemUmIHNjYWxlZFNp
emUsIGNvbnN0IFNrSVJlY3QmIHNjYWxlZFN1YnNldCkKIHsKICAgICBMYXp5RGVjb2RpbmdQaXhl
bFJlZiogcGl4ZWxSZWYgPSBzdGF0aWNfY2FzdDxMYXp5RGVjb2RpbmdQaXhlbFJlZio+KGJpdG1h
cC5waXhlbFJlZigpKTsKLSAgICBBU1NFUlQoIXBpeGVsUmVmLT5pc1NjYWxlZChwaXhlbFJlZi0+
ZnJhbWVHZW5lcmF0b3IoKS0+ZnVsbFNpemUoKSkgJiYgIXBpeGVsUmVmLT5pc0NsaXBwZWQoKSk7
CiAKICAgICBpbnQgcm93Qnl0ZXMgPSAwOwogICAgIHJvd0J5dGVzID0gU2tCaXRtYXA6OkNvbXB1
dGVSb3dCeXRlcyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHNjYWxlZFNpemUud2lkdGgo
KSk7CkBAIC0yMDEsNyArMjAwLDkgQEAgU2tCaXRtYXAgRGVmZXJyZWRJbWFnZURlY29kZXI6OmNy
ZWF0ZUxhenlEZWNvZGluZ0JpdG1hcCgpCiAgICAgU2tCaXRtYXAgYml0bWFwOwogICAgIGJpdG1h
cC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBmdWxsU2l6ZS53aWR0aCgp
LCBmdWxsU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2ZyYW1lR2VuZXJhdG9yID0gSW1hZ2VGcmFt
ZUdlbmVyYXRvcjo6Y3JlYXRlKG1fYWN0dWFsRGVjb2Rlci5yZWxlYXNlKCksIG1fZGF0YS5yZWxl
YXNlKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBtX2ZyYW1lR2VuZXJhdG9yID0gSW1hZ2VG
cmFtZUdlbmVyYXRvcjo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlKCksIG1fYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICBtX2FjdHVhbERlY29kZXIuY2xlYXIoKTsKKwogICAgIGJpdG1hcC5zZXRQaXhlbFJl
ZihuZXcgTGF6eURlY29kaW5nUGl4ZWxSZWYobV9mcmFtZUdlbmVyYXRvciwgZnVsbFNpemUsIGZ1
bGxSZWN0KSktPnVucmVmKCk7CiAKICAgICAvLyBVc2UgdGhlIFVSSSB0byBpZGVudGlmeSB0aGlz
IGFzIGEgbGF6aWx5IGRlY29kZWQgU2tQaXhlbFJlZiBvZiB0eXBlIExhenlEZWNvZGluZ1BpeGVs
UmVmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5jcHAKaW5kZXggMDViM2UyYjhkYmQxNjRh
NmM2ZTMxZjI4OTU3NjQ5ZDdmOGU3ZTJlYy4uNDQ5ZTQ1MjU0ZTg5NWMwMzMyNmI0ZDU3YTA1YmJk
MTExOWJiMzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VEZWNvZGluZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuY3BwCkBAIC0yNiwxMyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlRGVjb2RpbmdTdG9y
ZS5oIgogCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VGcmFtZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIlNjYWxlZEltYWdlRnJhZ21lbnQuaCIKLSNpbmNsdWRlICJT
a1JlY3QuaCIKLSNpbmNsdWRlICJTa1NpemUuaCIKLQotI2luY2x1ZGUgInNraWEvZXh0L2ltYWdl
X29wZXJhdGlvbnMuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTc1LDYy
ICs2OSw2IEBAIHZvaWQgSW1hZ2VEZWNvZGluZ1N0b3JlOjpzaHV0ZG93bigpCiAgICAgc2V0SW5z
dGFuY2VPbk1haW5UaHJlYWQoMCk7CiB9CiAKLXZvaWQqIEltYWdlRGVjb2RpbmdTdG9yZTo6bG9j
a1BpeGVscyhQYXNzUmVmUHRyPEltYWdlRnJhbWVHZW5lcmF0b3I+IGZyYW1lR2VuZXJhdG9yLCBj
b25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBTa0lSZWN0JiBzY2FsZWRTdWJzZXQpCi17
Ci0gICAgQVNTRVJUKGNhbGxlZE9uVmFsaWRUaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9ja2Vk
U2tCaXRtYXAuaXNOdWxsKCkpOwotCi0gICAgU2tJU2l6ZSBmdWxsU2l6ZSA9IGZyYW1lR2VuZXJh
dG9yLT5mdWxsU2l6ZSgpOwotCi0gICAgLy8gVGhlIGNhY2hlIG9ubHkgc2F2ZXMgdGhlIGZ1bGwg
c2l6ZSBpbWFnZSBhdCB0aGUgbW9tZW50LgotICAgIFNjYWxlZEltYWdlRnJhZ21lbnQqIGZyYW1l
Q2FjaGUgPSBsb29rdXBGcmFtZUNhY2hlKGZyYW1lR2VuZXJhdG9yLT5pbWFnZUlkKCksIGZ1bGxT
aXplKTsKLSAgICBTa0JpdG1hcCBiaXRtYXA7Ci0KLSAgICBpZiAoIWZyYW1lQ2FjaGUpIHsKLSAg
ICAgICAgLy8gRklYTUU6IFBpeGVscyBhcmUgb3duZWQgYnkgdGhlIEltYWdlRGVjb2RlciBpbiB0
aGUgZ2VuZXJhdG9yLiBGaW5kCi0gICAgICAgIC8vIGEgd2F5IHRvIHRyYW5zZmVyIG93bmVyc2hp
cCB0byBvdXIgY2FjaGUuCi0gICAgICAgIEltYWdlRnJhbWUqIGZyYW1lID0gZnJhbWVHZW5lcmF0
b3ItPmRlY29kZXIoKS0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOwotCi0gICAgICAgIC8vIFNhdmVz
IHRoZSBmcmFtZSBpbiBjYWNoZSBpZiB0aGlzIGlzIGNvbXBsZXRlLgotICAgICAgICBpZiAoZnJh
bWUtPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpIHsKLSAgICAgICAgICAg
IG1fZnJhbWVDYWNoZS5hcHBlbmQoU2NhbGVkSW1hZ2VGcmFnbWVudDo6Y3JlYXRlKGZyYW1lR2Vu
ZXJhdG9yLT5pbWFnZUlkKCksIGZ1bGxTaXplLCBmcmFtZS0+Z2V0U2tCaXRtYXAoKSwgdHJ1ZSkp
OwotICAgICAgICB9IGVsc2UgaWYgKGZyYW1lLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFt
ZUVtcHR5KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIGRlY29kaW5nIGVy
cm9yLiBSZXBvcnQgdGhpcyB0byBCaXRtYXBJbWFnZS4KLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYml0bWFwID0gZnJhbWUtPmdldFNrQml0bWFwKCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGZyYW1lQ2FjaGUtPmlzQ29tcGxldGUoKSk7Ci0gICAg
ICAgIGJpdG1hcCA9IGZyYW1lQ2FjaGUtPmJpdG1hcCgpOwotICAgIH0KLQotICAgIGlmIChmdWxs
U2l6ZSAhPSBzY2FsZWRTaXplKSB7Ci0gICAgICAgIC8vIEltYWdlIHNjYWxpbmcgaXMgZG9uZSBv
bi10aGUtZmx5IGFuZCBzY2FsZWQgaW1hZ2UgaXMgZGVzdHJveWVkCi0gICAgICAgIC8vIGFmdGVy
IHVzZS4KLSAgICAgICAgLy8gRklYTUU6IFJlc2l6ZSBqdXN0IHRoZSByZXF1ZXN0ZWQgZnJhZ21l
bnQuCi0gICAgICAgIG1fbG9ja2VkU2tCaXRtYXAgPSBza2lhOjpJbWFnZU9wZXJhdGlvbnM6OlJl
c2l6ZShiaXRtYXAsIHNraWE6OkltYWdlT3BlcmF0aW9uczo6UkVTSVpFX0xBTkNaT1MzLCBzY2Fs
ZWRTaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkpOwotICAgIH0gZWxzZQotICAgICAg
ICBtX2xvY2tlZFNrQml0bWFwID0gYml0bWFwOwotICAgIG1fbG9ja2VkU2tCaXRtYXAubG9ja1Bp
eGVscygpOwotICAgIHJldHVybiBtX2xvY2tlZFNrQml0bWFwLmdldEFkZHIoc2NhbGVkU3Vic2V0
LngoKSwgc2NhbGVkU3Vic2V0LnkoKSk7Ci19Ci0KLXZvaWQgSW1hZ2VEZWNvZGluZ1N0b3JlOjp1
bmxvY2tQaXhlbHMoKQotewotICAgIEFTU0VSVChjYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotCi0g
ICAgbV9sb2NrZWRTa0JpdG1hcC51bmxvY2tQaXhlbHMoKTsKLSAgICBtX2xvY2tlZFNrQml0bWFw
LnJlc2V0KCk7Ci19Ci0KLXZvaWQgSW1hZ2VEZWNvZGluZ1N0b3JlOjpmcmFtZUdlbmVyYXRvckJl
aW5nRGVzdHJveWVkKEltYWdlRnJhbWVHZW5lcmF0b3IqIGZyYW1lR2VuZXJhdG9yKQotewotICAg
IEFTU0VSVChjYWxsZWRPblZhbGlkVGhyZWFkKCkpOwotCi0gICAgZGVsZXRlRnJhbWVDYWNoZShm
cmFtZUdlbmVyYXRvci0+aW1hZ2VJZCgpKTsKLX0KLQogYm9vbCBJbWFnZURlY29kaW5nU3RvcmU6
OmNhbGxlZE9uVmFsaWRUaHJlYWQoKSBjb25zdAogewogICAgIHJldHVybiB0aGlzID09IGluc3Rh
bmNlT25NYWluVGhyZWFkKCkgJiYgaXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZURlY29kaW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdT
dG9yZS5oCmluZGV4IDZkMmMzODYzNmNhYzdkODljMmI0OGFmMGVmMjdmYmRjODI2NzczY2YuLjBj
ZTMxNzNlOWY5OWRiNjJjODMzYjA4ZmY5MzExNTM2MjI1Yjg0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVjb2RpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRGVj
b2RpbmdTdG9yZS5oCkBAIC0yNiwxNSArMjYsMTAgQEAKICNpZm5kZWYgSW1hZ2VEZWNvZGluZ1N0
b3JlX2gKICNkZWZpbmUgSW1hZ2VEZWNvZGluZ1N0b3JlX2gKIAotI2luY2x1ZGUgIlNrQml0bWFw
LmgiCi0jaW5jbHVkZSAiU2tSZWN0LmgiCiAjaW5jbHVkZSAiU2tTaXplLmgiCiAKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTcsMjIgKzUyLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplT25N
YWluVGhyZWFkKCk7CiAgICAgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKIAotICAgIC8vIFlvdSBt
YXkgb25seSBsb2NrIG9uZSBzZXQgb2YgcGl4ZWxzIGF0IGEgdGltZTsgb3ZlcmxhcHBpbmcgbG9j
ayBjYWxscyBhcmUgbm90IGFsbG93ZWQuCi0gICAgdm9pZCogbG9ja1BpeGVscyhQYXNzUmVmUHRy
PEltYWdlRnJhbWVHZW5lcmF0b3I+LCBjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplLCBjb25zdCBT
a0lSZWN0JiBzY2FsZWRTdWJzZXQpOwotICAgIHZvaWQgdW5sb2NrUGl4ZWxzKCk7Ci0KLSAgICB2
b2lkIGZyYW1lR2VuZXJhdG9yQmVpbmdEZXN0cm95ZWQoSW1hZ2VGcmFtZUdlbmVyYXRvciopOwot
CiBwcml2YXRlOgogICAgIEltYWdlRGVjb2RpbmdTdG9yZSgpOwogICAgIGJvb2wgY2FsbGVkT25W
YWxpZFRocmVhZCgpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlRnJhbWVHZW5lcmF0b3IoUGFzc093
blB0cjxJbWFnZURlY29kZXI+KTsKICAgICBTY2FsZWRJbWFnZUZyYWdtZW50KiBsb29rdXBGcmFt
ZUNhY2hlKGludCBpbWFnZUlkLCBjb25zdCBTa0lTaXplJiBzY2FsZWRTaXplKSBjb25zdDsKICAg
ICB2b2lkIGRlbGV0ZUZyYW1lQ2FjaGUoaW50IGltYWdlSWQpOwogCiAgICAgVmVjdG9yPE93blB0
cjxTY2FsZWRJbWFnZUZyYWdtZW50PiA+IG1fZnJhbWVDYWNoZTsKLQotICAgIFNrQml0bWFwIG1f
bG9ja2VkU2tCaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlRnJhbWVHZW5lcmF0b3IuY3BwCmluZGV4IGU0OTdhZjY4ODI5MWJiNzVmZGY5NzYzYTBkOTgw
ZjU1MTE3MjE5ZDIuLjIzNjc4MzMxNTMzMmVkOTA1MWU4MzFjNjFkMzA3ZWRmZjVlYmEzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
RnJhbWVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlRnJhbWVHZW5lcmF0b3IuY3BwCkBAIC0yOCw0MyArMjgsNDcgQEAKICNp
bmNsdWRlICJJbWFnZUZyYW1lR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKLSNpbmNsdWRlICJJbWFnZURlY29kaW5nU3RvcmUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKIAotbmFtZXNwYWNlIHsKLQotLy8gQW4gdW5pcXVlIElEIGZvciBhbiBpbWFnZSBmaWxl
LgotaW50IHNfbmV4dEltYWdlSWQgPSAwOwotCi19IC8vIG5hbWVzcGFjZQorI2luY2x1ZGUgInNr
aWEvZXh0L2ltYWdlX29wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFn
ZUZyYW1lR2VuZXJhdG9yOjpJbWFnZUZyYW1lR2VuZXJhdG9yKFBhc3NPd25QdHI8SW1hZ2VEZWNv
ZGVyPiBkZWNvZGVyLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCi0gICAgOiBtX2RlY29kZXIoZGVjb2RlcikKK0ltYWdlRnJhbWVHZW5lcmF0b3I6
OkltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQorICAgIDogbV9hbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCiB7Ci0gICAg
bV9mdWxsU2l6ZSA9IFNrSVNpemU6Ok1ha2UobV9kZWNvZGVyLT5zaXplKCkud2lkdGgoKSwgbV9k
ZWNvZGVyLT5zaXplKCkuaGVpZ2h0KCkpOwotICAgIG1faW1hZ2VJZCA9IHNfbmV4dEltYWdlSWQr
KzsKLQogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAogSW1hZ2VGcmFt
ZUdlbmVyYXRvcjo6fkltYWdlRnJhbWVHZW5lcmF0b3IoKQogewotICAgIGlmIChJbWFnZURlY29k
aW5nU3RvcmU6Omluc3RhbmNlT25NYWluVGhyZWFkKCkpCi0gICAgICAgIEltYWdlRGVjb2RpbmdT
dG9yZTo6aW5zdGFuY2VPbk1haW5UaHJlYWQoKS0+ZnJhbWVHZW5lcmF0b3JCZWluZ0Rlc3Ryb3ll
ZCh0aGlzKTsKIH0KIAotSW1hZ2VEZWNvZGVyKiBJbWFnZUZyYW1lR2VuZXJhdG9yOjpkZWNvZGVy
KCkKK3ZvaWQgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6c2V0RGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsKKyAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fYWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwogfQogCi12b2lkIEltYWdlRnJhbWVHZW5lcmF0b3I6OnNldERhdGEoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorU2tCaXRt
YXAgSW1hZ2VGcmFtZUdlbmVyYXRvcjo6ZGVjb2RlQW5kU2NhbGUoY29uc3QgU2tJU2l6ZSYgc2Nh
bGVkU2l6ZSwgY29uc3QgU2tJUmVjdCYgc2NhbGVkU3Vic2V0KQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgaWYgKG1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyLT5zZXREYXRhKG1fZGF0
YS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBPd25QdHI8SW1hZ2VEZWNvZGVyPiBkZWNv
ZGVyKGFkb3B0UHRyKEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCptX2RhdGEuZ2V0KCksIEltYWdlU291
cmNlOjpBbHBoYVByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmls
ZUFwcGxpZWQpKSk7CisgICAgaWYgKCFkZWNvZGVyKQorICAgICAgICByZXR1cm4gU2tCaXRtYXAo
KTsKKworICAgIGRlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBtX2FsbERhdGFSZWNlaXZl
ZCk7CisgICAgSW1hZ2VGcmFtZSogZnJhbWUgPSBkZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgo
MCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFNrQml0bWFwKCk7CisKKyAgICBT
a0JpdG1hcCBiaXRtYXAgPSBmcmFtZS0+Z2V0U2tCaXRtYXAoKTsKKyAgICBTa0lTaXplIGJpdG1h
cFNpemUgPSBTa0lTaXplOjpNYWtlKGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOwor
ICAgIGlmIChiaXRtYXBTaXplICE9IHNjYWxlZFNpemUpCisgICAgICAgIGJpdG1hcCA9IHNraWE6
OkltYWdlT3BlcmF0aW9uczo6UmVzaXplKGJpdG1hcCwgc2tpYTo6SW1hZ2VPcGVyYXRpb25zOjpS
RVNJWkVfTEFOQ1pPUzMsIHNjYWxlZFNpemUud2lkdGgoKSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSk7
CisKKyAgICBTa0JpdG1hcCBiaXRtYXBTdWJzZXQ7CisgICAgYml0bWFwLmV4dHJhY3RTdWJzZXQo
JmJpdG1hcFN1YnNldCwgc2NhbGVkU3Vic2V0KTsKKyAgICByZXR1cm4gYml0bWFwU3Vic2V0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUZyYW1lR2VuZXJhdG9yLmgK
aW5kZXggNThmYTZmYjIzZjI1MzYzZDViZGUxYjIxYWE5ZWU0OTUwMTNmYjVmNS4uMWM1ZDZjZjZl
ZWJkMDBlODY5ZDVmYWM4MjEzOTI3MzFjNDhiMzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VGcmFtZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlRnJhbWVHZW5l
cmF0b3IuaApAQCAtMjYsOSArMjYsOCBAQAogI2lmbmRlZiBJbWFnZUZyYW1lR2VuZXJhdG9yX2gK
ICNkZWZpbmUgSW1hZ2VGcmFtZUdlbmVyYXRvcl9oCiAKLSNpbmNsdWRlICJTa1R5cGVzLmgiCisj
aW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa1NpemUuaCIKLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNiwzMSArMzUsMjUg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZURlY29kZXI7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlRnJhbWVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbWFnZUZyYW1lR2VuZXJhdG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gY3JlYXRlKFBhc3NPd25QdHI8SW1hZ2VEZWNvZGVyPiBk
ZWNvZGVyLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gY3JlYXRlKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VGcmFtZUdlbmVyYXRvcihkZWNvZGVy
LCBkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bWFnZUZyYW1lR2VuZXJhdG9yKGRhdGEsIGFsbERhdGFSZWNlaXZlZCkpOwogICAgIH0KIAotICAg
IEltYWdlRnJhbWVHZW5lcmF0b3IoUGFzc093blB0cjxJbWFnZURlY29kZXI+LCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBJbWFnZUZyYW1lR2Vu
ZXJhdG9yKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIH5JbWFnZUZyYW1lR2VuZXJhdG9yKCk7CiAKLSAgICAvLyBDcmVhdGVzIHRoZSBpbWFnZSBk
ZWNvZGVyIGlmIG5lZWRlZC4KLSAgICBJbWFnZURlY29kZXIqIGRlY29kZXIoKTsKLSAgICB2b2lk
IHNldERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgU2tCaXRtYXAgZGVjb2RlQW5kU2NhbGUoY29uc3QgU2tJU2l6ZSYgc2NhbGVkU2l6ZSwg
Y29uc3QgU2tJUmVjdCYgc2NhbGVkU3Vic2V0KTsKIAotICAgIGNvbnN0IFNrSVNpemUmIGZ1bGxT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2l6ZTsgfQotICAgIGludCBpbWFnZUlkKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZUlkOyB9CisgICAgdm9pZCBzZXREYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogCiBwcml2YXRlOgotICAgIE93blB0
cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7Ci0gICAgU2tJU2l6ZSBtX2Z1bGxTaXplOwotICAgIGludCBtX2ltYWdlSWQ7CisgICAgYm9v
bCBtX2FsbERhdGFSZWNlaXZlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xhenlEZWNv
ZGluZ1BpeGVsUmVmLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmNwcAppbmRleCA1NmRkMDkxZTBkOWY4YzE0MGI3ZGJk
NzMxZDczNjIxOGFkMGZiOTMyLi5kZjQ0NWRmNDA0Nzk3NzlkNWQwNjJjMzFkNzczMjZjMjljYWYy
ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXp5RGVjb2RpbmdQaXhlbFJlZi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF6eURlY29kaW5nUGl4ZWxSZWYuY3BwCkBAIC01OCwxMyArNTgs
MTkgQEAgYm9vbCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6aXNDbGlwcGVkKCkgY29uc3QKIHZvaWQq
IExhenlEZWNvZGluZ1BpeGVsUmVmOjpvbkxvY2tQaXhlbHMoU2tDb2xvclRhYmxlKiopCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1cm4gSW1hZ2VEZWNvZGluZ1N0b3Jl
OjppbnN0YW5jZU9uTWFpblRocmVhZCgpLT5sb2NrUGl4ZWxzKG1fZnJhbWVHZW5lcmF0b3IsIG1f
c2NhbGVkU2l6ZSwgbV9zY2FsZWRTdWJzZXQpOworICAgIEFTU0VSVChtX2xvY2tlZEJpdG1hcC5p
c051bGwoKSk7CisgICAgbV9sb2NrZWRCaXRtYXAgPSBtX2ZyYW1lR2VuZXJhdG9yLT5kZWNvZGVB
bmRTY2FsZShtX3NjYWxlZFNpemUsIG1fc2NhbGVkU3Vic2V0KTsKKyAgICBpZiAobV9sb2NrZWRC
aXRtYXAuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworICAgIG1fbG9ja2VkQml0bWFwLmxv
Y2tQaXhlbHMoKTsKKyAgICByZXR1cm4gbV9sb2NrZWRCaXRtYXAuZ2V0QWRkcigwLCAwKTsKIH0K
IAogdm9pZCBMYXp5RGVjb2RpbmdQaXhlbFJlZjo6b25VbmxvY2tQaXhlbHMoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbnN0YW5jZU9u
TWFpblRocmVhZCgpLT51bmxvY2tQaXhlbHMoKTsKKyAgICBtX2xvY2tlZEJpdG1hcC51bmxvY2tQ
aXhlbHMoKTsKKyAgICBtX2xvY2tlZEJpdG1hcC5yZXNldCgpOwogfQogCiBib29sIExhenlEZWNv
ZGluZ1BpeGVsUmVmOjpvbkxvY2tQaXhlbHNBcmVXcml0YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVjb2RpbmdQ
aXhlbFJlZi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF6
eURlY29kaW5nUGl4ZWxSZWYuaAppbmRleCAwYWI5Y2NjNGNiMTExZjI3NjRmNzIzNzA2NzUxYTVl
Y2YxM2M3NjMzLi40ZmY4OWNmYjQxZTU0MTFjMDYxYWY5MTVkYWQ5OGIzNTZhMDRlMzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXp5RGVj
b2RpbmdQaXhlbFJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xhenlEZWNvZGluZ1BpeGVsUmVmLmgKQEAgLTU4LDYgKzU4LDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SW1hZ2VGcmFtZUdlbmVyYXRvcj4gbV9mcmFtZUdlbmVyYXRvcjsKICAgICBT
a0lTaXplIG1fc2NhbGVkU2l6ZTsKICAgICBTa0lSZWN0IG1fc2NhbGVkU3Vic2V0OworCisgICAg
U2tCaXRtYXAgbV9sb2NrZWRCaXRtYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VEZWNv
ZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0RlZmVycmVkSW1hZ2VE
ZWNvZGVyVGVzdC5jcHAKaW5kZXggMDk3N2U1NzI5YWQ2NmYyYzMwNjY5OWZmMmYzMjIwNjYyNTc2
ZGIxMy4uNTA2N2QyMTljNDRjYWY0MTg5MzI3MjRhOTZjYjdmZWIxNDVmOGQ2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9EZWZlcnJlZEltYWdlRGVjb2RlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVmZXJyZWRJbWFnZURlY29k
ZXJUZXN0LmNwcApAQCAtMzAsMzAgKzMwLDUxIEBACiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGluZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiTW9ja0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlU2tpYS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNrQ2FudmFz
LmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKICNpbmNsdWRlICJTa1BpY3R1cmUuaCIKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IHsKIAorLy8gUmF3IGRhdGEgZm9yIGEgUE5HIGZpbGUgd2l0aCAxeDEgd2hpdGUgcGl4ZWxzLgor
Y29uc3QgY2hhciB3aGl0ZVBOR1tdID0geworICAgIDB4ODksIDB4NTAsIDB4NGUsIDB4NDcsIDB4
MGQsIDB4MGEsIDB4MWEsIDB4MGEsIDB4MDAsIDB4MDAsCisgICAgMHgwMCwgMHgwZCwgMHg0OSwg
MHg0OCwgMHg0NCwgMHg1MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwKKyAgICAweDAwLCAweDAw
LCAweDAwLCAweDAxLCAweDA4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDkwLAorICAgIDB4
NzcsIDB4NTMsIDB4ZGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NzMsIDB4NTIsIDB4NDcs
CisgICAgMHg0MiwgMHgwMCwgMHhhZSwgMHhjZSwgMHgxYywgMHhlOSwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwOSwKKyAgICAweDcwLCAweDQ4LCAweDU5LCAweDczLCAweDAwLCAweDAwLCAweDBiLCAw
eDEzLCAweDAwLCAweDAwLAorICAgIDB4MGIsIDB4MTMsIDB4MDEsIDB4MDAsIDB4OWEsIDB4OWMs
IDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCisgICAgMHgwYywgMHg0OSwgMHg0NCwgMHg0MSwgMHg1
NCwgMHgwOCwgMHhkNywgMHg2MywgMHhmOCwgMHhmZiwKKyAgICAweGZmLCAweDNmLCAweDAwLCAw
eDA1LCAweGZlLCAweDAyLCAweGZlLCAweGRjLCAweGNjLCAweDU5LAorICAgIDB4ZTcsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4NDksIDB4NDUsIDB4NGUsIDB4NDQsIDB4YWUsCisgICAgMHg0
MiwgMHg2MCwgMHg4MiwKK307CisKIHN0YXRpYyBTa0NhbnZhcyogY3JlYXRlUmFzdGVyQ2FudmFz
KGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBTa0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRl
dmljZShuZXcgU2tEZXZpY2UoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVp
Z2h0KSk7CiAgICAgcmV0dXJuIG5ldyBTa0NhbnZhcyhkZXZpY2UpOwogfQogCi1jbGFzcyBEZWZl
cnJlZEltYWdlRGVjb2RlclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIERl
ZmVycmVkSW1hZ2VEZWNvZGVyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBN
b2NrSW1hZ2VEZWNvZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KQogICAgIHsKICAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjppbml0aWFsaXplT25NYWluVGhy
ZWFkKCk7Ci0gICAgICAgIG1fYWN0dWFsRGVjb2RlciA9IG5ldyBNb2NrSW1hZ2VEZWNvZGVyKCk7
Ci0gICAgICAgIG1fYWN0dWFsRGVjb2Rlci0+c2V0U2l6ZSg2MDAsIDYxMyk7CisgICAgICAgIG1f
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHdoaXRlUE5HLCBzaXplb2Yod2hpdGVQTkcpKTsK
KyAgICAgICAgbV9hY3R1YWxEZWNvZGVyID0gbmV3IE1vY2tJbWFnZURlY29kZXIodGhpcyk7Cisg
ICAgICAgIG1fYWN0dWFsRGVjb2Rlci0+c2V0U2l6ZSgxLCAxKTsKICAgICAgICAgbV9sYXp5RGVj
b2RlciA9IERlZmVycmVkSW1hZ2VEZWNvZGVyOjpjcmVhdGVGb3JUZXN0aW5nKGFkb3B0UHRyKG1f
YWN0dWFsRGVjb2RlcikpOworICAgICAgICBtX2xhenlEZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5n
ZXQoKSwgdHJ1ZSk7CiAgICAgICAgIG1fY2FudmFzLnJlc2V0KGNyZWF0ZVJhc3RlckNhbnZhcygx
MDAsIDEwMCkpOworICAgICAgICBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50ID0gMDsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQpAQCAtNjEsMjkgKzgyLDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgSW1hZ2VEZWNvZGluZ1N0b3JlOjpzaHV0ZG93bigpOwogICAgIH0KIAorICAg
IHZpcnR1YWwgdm9pZCBkZWNvZGVyQmVpbmdEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9m
cmFtZUJ1ZmZlclJlcXVlc3RDb3VudCA9IG1fYWN0dWFsRGVjb2Rlci0+ZnJhbWVCdWZmZXJSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgbV9hY3R1YWxEZWNvZGVyID0gMDsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICAvLyBEb24ndCBvd24gdGhpcyBidXQgc2F2ZXMgdGhlIHBvaW50ZXIgdG8gcXVl
cnkgc3RhdGVzLgogICAgIE1vY2tJbWFnZURlY29kZXIqIG1fYWN0dWFsRGVjb2RlcjsKICAgICBP
d25QdHI8RGVmZXJyZWRJbWFnZURlY29kZXI+IG1fbGF6eURlY29kZXI7CiAgICAgU2tQaWN0dXJl
IG1fcGljdHVyZTsKICAgICBTa0F1dG9UVW5yZWY8U2tDYW52YXM+IG1fY2FudmFzOworICAgIGlu
dCBtX2ZyYW1lQnVmZmVyUmVxdWVzdENvdW50OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKIH07CiAKIFRFU1RfRihEZWZlcnJlZEltYWdlRGVjb2RlclRlc3QsIGRyYXdJbnRvU2tQ
aWN0dXJlKQogewogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGltYWdlKGFkb3B0UHRyKG1f
bGF6eURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKS0+YXNOZXdOYXRpdmVJbWFnZSgpKSk7
Ci0gICAgRVhQRUNUX0VRKG1fYWN0dWFsRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5i
aXRtYXAoKS53aWR0aCgpKTsKLSAgICBFWFBFQ1RfRVEobV9hY3R1YWxEZWNvZGVyLT5zaXplKCku
aGVpZ2h0KCksIGltYWdlLT5iaXRtYXAoKS5oZWlnaHQoKSk7CisgICAgRVhQRUNUX0VRKDEsIGlt
YWdlLT5iaXRtYXAoKS53aWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgaW1hZ2UtPmJpdG1hcCgp
LmhlaWdodCgpKTsKICAgICBFWFBFQ1RfRkFMU0UoaW1hZ2UtPmJpdG1hcCgpLmlzTnVsbCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShpbWFnZS0+Yml0bWFwKCkuaXNJbW11dGFibGUoKSk7CiAKICAgICBT
a0NhbnZhcyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7
CiAgICAgdGVtcENhbnZhcy0+ZHJhd0JpdG1hcChpbWFnZS0+Yml0bWFwKCksIDAsIDApOwogICAg
IG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNv
ZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFt
ZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBtX2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0
dXJlKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVl
c3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7
CisKKyAgICBTa0JpdG1hcCBjYW52YXNCaXRtYXA7CisgICAgY2FudmFzQml0bWFwLnNldENvbmZp
ZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJV
RShtX2NhbnZhcy0+cmVhZFBpeGVscygmY2FudmFzQml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRv
TG9ja1BpeGVscyBhdXRvTG9jayhjYW52YXNCaXRtYXApOworICAgIEVYUEVDVF9FUShTa0NvbG9y
U2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkp
OwogfQogCiBURVNUX0YoRGVmZXJyZWRJbWFnZURlY29kZXJUZXN0LCBkcmF3U2NhbGVkSW50b1Nr
UGljdHVyZSkKQEAgLTk0LDE1ICsxMjksMjIgQEAgVEVTVF9GKERlZmVycmVkSW1hZ2VEZWNvZGVy
VGVzdCwgZHJhd1NjYWxlZEludG9Ta1BpY3R1cmUpCiAgICAgRVhQRUNUX1RSVUUoc2NhbGVkQml0
bWFwLmlzSW1tdXRhYmxlKCkpOwogICAgIEVYUEVDVF9FUSg1MCwgc2NhbGVkQml0bWFwLndpZHRo
KCkpOwogICAgIEVYUEVDVF9FUSg1MSwgc2NhbGVkQml0bWFwLmhlaWdodCgpKTsKLSAgICBFWFBF
Q1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CiAKICAgICBTa0NhbnZh
cyogdGVtcENhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZygxMDAsIDEwMCk7CiAgICAg
dGVtcENhbnZhcy0+ZHJhd0JpdG1hcChzY2FsZWRCaXRtYXAsIDAsIDApOwogICAgIG1fcGljdHVy
ZS5lbmRSZWNvcmRpbmcoKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9hY3R1YWxEZWNvZGVyLT5mcmFt
ZUJ1ZmZlclJlcXVlc3RDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJl
cXVlc3RDb3VudCk7CiAKICAgICBtX2NhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgbV9hY3R1YWxEZWNvZGVyLT5mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9mcmFtZUJ1ZmZlclJlcXVlc3RDb3VudCk7CisKKyAgICBT
a0JpdG1hcCBjYW52YXNCaXRtYXA7CisgICAgY2FudmFzQml0bWFwLnNldENvbmZpZyhTa0JpdG1h
cDo6a0FSR0JfODg4OF9Db25maWcsIDEwMCwgMTAwKTsKKyAgICBBU1NFUlRfVFJVRShtX2NhbnZh
cy0+cmVhZFBpeGVscygmY2FudmFzQml0bWFwLCAwLCAwKSk7CisgICAgU2tBdXRvTG9ja1BpeGVs
cyBhdXRvTG9jayhjYW52YXNCaXRtYXApOworICAgIEVYUEVDVF9FUShTa0NvbG9yU2V0QVJHQigy
NTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAuZ2V0Q29sb3IoMCwgMCkpOworICAgIEVY
UEVDVF9FUShTa0NvbG9yU2V0QVJHQigyNTUsIDI1NSwgMjU1LCAyNTUpLCBjYW52YXNCaXRtYXAu
Z2V0Q29sb3IoNDksIDUwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja0ltYWdlRGVjb2Rlci5oCmluZGV4IDVjZjIzNzQ0ZTUxZmRl
NDNjMTY0YjMxMTAxZDA1YjMzMDczMmMyZmQuLmM5YzBkMDFkNmQ4MzgyMDkyYjA3NGI5NGU0ZGQ5
ZmQ3YWUxYzg2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9j
a0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0lt
YWdlRGVjb2Rlci5oCkBAIC0yOSwxMyArMjksMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNb2NrSW1hZ2VEZWNvZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgZGVjb2RlckJlaW5nRGVzdHJveWVkKCkgPSAwOworfTsKKwogY2xhc3MgTW9ja0ltYWdlRGVj
b2RlciA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIE1vY2tJbWFnZURlY29k
ZXIoKQorICAgIE1vY2tJbWFnZURlY29kZXIoTW9ja0ltYWdlRGVjb2RlckNsaWVudCogY2xpZW50
KQogICAgICAgICA6IEltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFQcmVtdWx0aXBsaWVk
LCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKQogICAgICAgICAsIG1f
ZnJhbWVCdWZmZXJSZXF1ZXN0Q291bnQoMCkKKyAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCiAg
ICAgeyB9CiAKKyAgICB+TW9ja0ltYWdlRGVjb2RlcigpCisgICAgeworICAgICAgICBtX2NsaWVu
dC0+ZGVjb2RlckJlaW5nRGVzdHJveWVkKCk7CisgICAgfQorCiAgICAgdmlydHVhbCBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICJtb2NrIjsK
QEAgLTU0LDYgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGludCBtX2ZyYW1lQnVm
ZmVyUmVxdWVzdENvdW50OworICAgIE1vY2tJbWFnZURlY29kZXJDbGllbnQqIG1fY2xpZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>