<?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>92294</bug_id>
          
          <creation_ts>2012-07-25 14:01:35 -0700</creation_ts>
          <short_desc>[chromium] Move ephemeral data for a single frame in LayerRendererChromium into a structure with a scoped lifetime equal to the frame</short_desc>
          <delta_ts>2012-07-25 17:58:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>91885</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678438</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 14:01:35 -0700</bug_when>
    <thetext>[chromium] Move ephemeral data for a single frame in LayerRendererChromium into a structure with a scoped lifetime equal to the frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678441</commentid>
    <comment_count>1</comment_count>
      <attachid>154438</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 14:05:18 -0700</bug_when>
    <thetext>Created attachment 154438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678518</commentid>
    <comment_count>2</comment_count>
      <attachid>154457</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 15:13:38 -0700</bug_when>
    <thetext>Created attachment 154457
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678540</commentid>
    <comment_count>3</comment_count>
      <attachid>154457</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 15:43:32 -0700</bug_when>
    <thetext>Comment on attachment 154457
Patch

R=me.  The plumbing may be a little bit wordier, but things like viewportChanged() are way better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678677</commentid>
    <comment_count>4</comment_count>
      <attachid>154457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 17:58:13 -0700</bug_when>
    <thetext>Comment on attachment 154457
Patch

Clearing flags on attachment: 154457

Committed r123686: &lt;http://trac.webkit.org/changeset/123686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678678</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 17:58:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154438</attachid>
            <date>2012-07-25 14:05:18 -0700</date>
            <delta_ts>2012-07-25 15:13:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92294-20120725170508.patch</filename>
            <type>text/plain</type>
            <size>40670</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODljMDUxZmJmMzIxMWEy
NDY3YzdkNTU1MmMwYTY5NjhlYmU3YmUxZi4uNTMwN2Y0MzA1YzExZTNhYWNiNzU0YjVmZjkyMTYx
MTI4YjE4ZjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA3LTI1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTW92
ZSBlcGhlbWVyYWwgZGF0YSBmb3IgYSBzaW5nbGUgZnJhbWUgaW4gTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGludG8gYSBzdHJ1Y3R1cmUgd2l0aCBhIHNjb3BlZCBsaWZldGltZSBlcXVhbCB0byB0aGUg
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IExheWVyUmVuZGVyZXJDaHJvbWl1bSBjbGFzcyBoYXMgYSBudW1iZXIgb2YgbWVtYmVyIHZhcmlh
YmxlcyB0aGF0IGFyZSB1c2VkCisgICAgICAgIHdoaWxlIGRyYXdpbmcgYSBzaW5nbGUgZnJhbWUu
IEJlY2F1c2UgdGhleSBhcmUgbWVtYmVyIHZhcmlhYmxlcywgdGhlaXIgbGlmZXRpbWVzCisgICAg
ICAgIGFyZSBub3QgY2xlYXIsIGFuZCBzb21lIGFyZSBldmVuIHVwZGF0ZWQgYmV0d2VlbiBmcmFt
ZXMsIHdoaWNoIGlzIG5vdCBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY3JlYXRlcyBh
IExSQzo6RHJhd2luZ0ZyYW1lIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBkYXRhIHVzZWQKKyAg
ICAgICAgd2hpbGUgZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZSwgYW5kIGFuIGluc3RhbmNlIG9m
IHRoaXMgc3RydWN0dXJlIGlzIGhlbGQKKyAgICAgICAgYW5kIHBhc3NlZCBhcm91bmQgdG8gZnVu
Y3Rpb25zIGluIExheWVyUmVuZGVyZXJDaHJvbWl1bSwgbW92aW5nIGFsbCBvZiB0aGUKKyAgICAg
ICAgZGF0YSBvdXQgZnJvbSBiZWluZyBtZW1iZXIgdmFyaWFibGVzIG9uIHRoZSBjbGFzcyB0byBi
ZWluZyBmdW5jdGlvbgorICAgICAgICBhcmd1bWVudHMgb24gdGhlIHJlbGV2YW50IG1ldGhvZHMu
CisKKyAgICAgICAgVGhlIHByb2plY3Rpb24gYW5kIHdpbmRvdyBtYXRyaWNlcyBhcmUgYSBwYXJ0
IG9mIHRoaXMgZnJhbWUgZGF0YSwgYW5kIGFyZSBub3QKKyAgICAgICAgdXNlZCBleHRlcm5hbGx5
LCBzbyB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIENDUmVuZGVyZXIgaW50ZXJmYWNlIGFuZCBp
bmNsdWRlZAorICAgICAgICB3aXRoaW4gdGhlIERyYXdpbmdGcmFtZSBzdHJ1Y3R1cmUuCisKKyAg
ICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBp
bnRlbmRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNsZWFyRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1NvbGlkQ29s
b3JRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lV
VlZpZGVvUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdTdHJlYW1WaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3VGV4dHVyZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJQYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVi
dWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5nRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpEcmF3aW5nRnJh
bWU6OkRyYXdpbmdGcmFtZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAg
ICAgKENDUmVuZGVyZXIpOgorCiAyMDEyLTA3LTI0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVHVybiB0aGUgZGVidWcgSFVEIGludG8g
YSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBhIFdlYkNvbXBvc2l0b3JRdWFkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA2ODBiMTBlZGFmZTU2OGE2
ODRiNGE0ZGYzZDk5MDI3ZWE2OTdjZDI1Li5lYmQ2MTAyMWQ0ZGYwNTA4ZWFiNDE3NzUyOWM4ZjFj
MWRhNDc1NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTE2
NiwxMyArMTY2LDEwIEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxv
YWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGll
bnQpCi0gICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNzKDApCi0gICAgLCBtX2N1cnJlbnRUZXh0dXJl
KDApCiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fc2hhcmVkR2Vv
bWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQogICAgICwgbV9y
ZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCiAgICAgLCBtX2NvbnRleHQocmVzb3Vy
Y2VQcm92aWRlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSkKLSAgICAsIG1fZGVmYXVsdFJlbmRlclBh
c3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2lzRnJhbWVi
dWZmZXJEaXNjYXJkZWQoZmFsc2UpCiAgICAgLCBtX2lzVXNpbmdCaW5kVW5pZm9ybShmYWxzZSkK
QEAgLTI4OSwzMSArMjg2LDI3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNl
UmVuZGVyUGFzc1RleHR1cmVzKCkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp2aWV3cG9y
dENoYW5nZWQoKQogewogICAgIG1faXNWaWV3cG9ydENoYW5nZWQgPSB0cnVlOwotCi0gICAgLy8g
UmVzZXQgdGhlIGN1cnJlbnQgUmVuZGVyUGFzcyB0byBmb3JjZSBhbiB1cGRhdGUgb2YgdGhlIHZp
ZXdwb3J0IGFuZAotICAgIC8vIHByb2plY3Rpb24gbWF0cml4IG5leHQgdGltZSB1c2VSZW5kZXJQ
YXNzIGlzIGNhbGxlZC4KLSAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gMDsKIH0KIAotdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3Mq
IHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KQordm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyRnJhbWVidWZmZXIoRHJhd2luZ0ZyYW1lJiBm
cmFtZSwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7CiAgICAgLy8g
T24gREVCVUcgYnVpbGRzLCBvcGFxdWUgcmVuZGVyIHBhc3NlcyBhcmUgY2xlYXJlZCB0byBibHVl
IHRvIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdlcmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4u
IElmIHdlCiAgICAgLy8gYXJlIHVzaW5nIHBhcnRpYWwgc3dhcCAvIHNjaXNzb3Igb3B0aW1pemF0
aW9uLCB0aGVuIHRoZSBzdXJmYWNlIHNob3VsZCBvbmx5CiAgICAgLy8gY2xlYXIgdGhlIGRhbWFn
ZWQgcmVnaW9uLCBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseSBjbGVhciB1bi1jaGFuZ2Vk
IHBvcnRpb25zCiAgICAgLy8gb2YgdGhlIHNjcmVlbi4KIAotICAgIGlmIChyZW5kZXJQYXNzLT5o
YXNUcmFuc3BhcmVudEJhY2tncm91bmQoKSkKKyAgICBpZiAoZnJhbWUuY3VycmVudFJlbmRlclBh
c3MtPmhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCgpKQogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCkpOwogICAgIGVsc2UKICAgICAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDEsIDEpKTsKIAogICAgIGlm
IChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKQotICAgICAgICBzZXRTY2lzc29yVG9S
ZWN0KGVuY2xvc2luZ0ludFJlY3QoZnJhbWVidWZmZXJEYW1hZ2VSZWN0KSk7CisgICAgICAgIHNl
dFNjaXNzb3JUb1JlY3QoZnJhbWUsIGVuY2xvc2luZ0ludFJlY3QoZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KSk7CiAgICAgZWxzZQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2Fi
bGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogCiAjaWYgZGVmaW5lZChOREVC
VUcpCi0gICAgaWYgKHJlbmRlclBhc3MtPmhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCgpKQorICAg
IGlmIChmcmFtZS5jdXJyZW50UmVuZGVyUGFzcy0+aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkp
CiAjZW5kaWYKICAgICAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQlVGRkVSX0JJVCk7CiAKQEAgLTM3OSw4ICszNzIsOSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0lu
RHJhdwogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MgPSByZW5kZXJQYXNz
ZXNJbkRyYXdPcmRlci5sYXN0KCk7CiAgICAgQVNTRVJUKHJvb3RSZW5kZXJQYXNzKTsKIAotICAg
IG1fZGVmYXVsdFJlbmRlclBhc3MgPSByb290UmVuZGVyUGFzczsKLSAgICBtX3JlbmRlclBhc3Nl
c0J5SWQgPSAmcmVuZGVyUGFzc2VzQnlJZDsKKyAgICBEcmF3aW5nRnJhbWUgZnJhbWU7CisgICAg
ZnJhbWUucmVuZGVyUGFzc2VzQnlJZCA9ICZyZW5kZXJQYXNzZXNCeUlkOworICAgIGZyYW1lLnJv
b3RSZW5kZXJQYXNzID0gcm9vdFJlbmRlclBhc3M7CiAKICAgICBiZWdpbkRyYXdpbmdGcmFtZSgp
OwogCkBAIC0zODgsMTMgKzM4MiwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhdwogICAgICAg
ICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSByZW5kZXJQYXNzZXNJbkRyYXdPcmRl
cltpXTsKIAogICAgICAgICBGbG9hdFJlY3Qgcm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFj
ZSA9IHJlbmRlclBhc3MtPnRhcmdldFN1cmZhY2UoKS0+Y29tcHV0ZVJvb3RTY2lzc29yUmVjdElu
Q3VycmVudFN1cmZhY2Uocm9vdFNjaXNzb3JSZWN0KTsKLSAgICAgICAgZHJhd1JlbmRlclBhc3Mo
cmVuZGVyUGFzcywgcm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZSk7CisgICAgICAgIGRy
YXdSZW5kZXJQYXNzKGZyYW1lLCByZW5kZXJQYXNzLCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRT
dXJmYWNlKTsKICAgICB9CiAKICAgICBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKLQotICAgIG1fZGVm
YXVsdFJlbmRlclBhc3MgPSAwOwotICAgIG1fcmVuZGVyUGFzc2VzQnlJZCA9IDA7CiB9CiAKIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpiZWdpbkRyYXdpbmdGcmFtZSgpCkBAIC00MzEsMTkg
KzQyMiwxOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZG9Ob09wKCkKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmZsdXNoKCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBj
b25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkKK3ZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3UmVuZGVyUGFzcyhEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1Jl
bmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VS
ZWN0KQogewotICAgIGlmICghdXNlUmVuZGVyUGFzcyhyZW5kZXJQYXNzKSkKKyAgICBpZiAoIXVz
ZVJlbmRlclBhc3MoZnJhbWUsIHJlbmRlclBhc3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
bGVhclJlbmRlclBhc3MocmVuZGVyUGFzcywgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKKyAgICBj
bGVhckZyYW1lYnVmZmVyKGZyYW1lLCBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOwogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QgPSByZW5kZXJQYXNzLT5xdWFkTGlzdCgpOwogICAgIGZv
ciAoQ0NRdWFkTGlzdDo6Y29uc3RCYWNrVG9Gcm9udEl0ZXJhdG9yIGl0ID0gcXVhZExpc3QuYmFj
a1RvRnJvbnRCZWdpbigpOyBpdCAhPSBxdWFkTGlzdC5iYWNrVG9Gcm9udEVuZCgpOyArK2l0KQot
ICAgICAgICBkcmF3UXVhZChpdC0+Z2V0KCkpOworICAgICAgICBkcmF3UXVhZChmcmFtZSwgaXQt
PmdldCgpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZCogcXVhZCkKIHsKICAgICBJbnRSZWN0IHNjaXNzb3JSZWN0ID0gcXVhZC0+c2Np
c3NvclJlY3QoKTsKIApAQCAtNDUxLDcgKzQ0Miw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFkKQogICAg
IGlmIChzY2lzc29yUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNj
aXNzb3JUb1JlY3Qoc2Npc3NvclJlY3QpOworICAgIHNldFNjaXNzb3JUb1JlY3QoZnJhbWUsIHNj
aXNzb3JSZWN0KTsKIAogICAgIGlmIChxdWFkLT5uZWVkc0JsZW5kaW5nKCkpCiAgICAgICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkp
OwpAQCAtNDYzLDM2ICs0NTQsMzYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdR
dWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQ6OkNoZWNrZXJib2FyZDoKLSAgICAgICAgZHJhd0NoZWNrZXJib2FyZFF1YWQo
Q0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKKyAgICAgICAgZHJh
d0NoZWNrZXJib2FyZFF1YWQoZnJhbWUsIENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6Om1hdGVyaWFs
Q2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3Np
dG9yUXVhZDo6RGVidWdCb3JkZXI6Ci0gICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoQ0NEZWJ1
Z0JvcmRlckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOworICAgICAgICBkcmF3RGVidWdC
b3JkZXJRdWFkKGZyYW1lLCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFk
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6
SU9TdXJmYWNlQ29udGVudDoKLSAgICAgICAgZHJhd0lPU3VyZmFjZVF1YWQoQ0NJT1N1cmZhY2VE
cmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKKyAgICAgICAgZHJhd0lPU3VyZmFjZVF1YWQo
ZnJhbWUsIENDSU9TdXJmYWNlRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6UmVuZGVyUGFzczoK
LSAgICAgICAgZHJhd1JlbmRlclBhc3NRdWFkKENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlh
bENhc3QocXVhZCkpOworICAgICAgICBkcmF3UmVuZGVyUGFzc1F1YWQoZnJhbWUsIENDUmVuZGVy
UGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlNvbGlkQ29sb3I6Ci0gICAgICAgIGRyYXdT
b2xpZENvbG9yUXVhZChXZWJLaXQ6OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJp
YWxDYXN0KHF1YWQpKTsKKyAgICAgICAgZHJhd1NvbGlkQ29sb3JRdWFkKGZyYW1lLCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTb2xpZENvbG9yUXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpTdHJlYW1WaWRl
b0NvbnRlbnQ6Ci0gICAgICAgIGRyYXdTdHJlYW1WaWRlb1F1YWQoQ0NTdHJlYW1WaWRlb0RyYXdR
dWFkOjptYXRlcmlhbENhc3QocXVhZCkpOworICAgICAgICBkcmF3U3RyZWFtVmlkZW9RdWFkKGZy
YW1lLCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRl
bnQ6Ci0gICAgICAgIGRyYXdUZXh0dXJlUXVhZChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKKyAgICAgICAgZHJhd1RleHR1cmVRdWFkKGZyYW1l
LCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUaWxl
ZENvbnRlbnQ6Ci0gICAgICAgIGRyYXdUaWxlUXVhZChDQ1RpbGVEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpKTsKKyAgICAgICAgZHJhd1RpbGVRdWFkKGZyYW1lLCBDQ1RpbGVEcmF3UXVhZDo6
bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JRdWFkOjpZVVZWaWRlb0NvbnRlbnQ6Ci0gICAgICAgIGRyYXdZVVZWaWRlb1F1
YWQoQ0NZVVZWaWRlb0RyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOworICAgICAgICBkcmF3
WVVWVmlkZW9RdWFkKGZyYW1lLCBDQ1lVVlZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFk
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHF1
YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZFF1YWQoRHJh
d2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogcXVhZCkKIHsK
ICAgICBjb25zdCBUaWxlQ2hlY2tlcmJvYXJkUHJvZ3JhbSogcHJvZ3JhbSA9IHRpbGVDaGVja2Vy
Ym9hcmRQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSk7CkBAIC01MTQsMTMgKzUwNSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogcQogICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuZnJlcXVlbmN5TG9jYXRpb24oKSwgZnJlcXVlbmN5KSk7CiAKICAgICBmbG9hdCBvcGFj
aXR5ID0gcXVhZC0+b3BhY2l0eSgpOwotICAgIGRyYXdUZXh0dXJlZFF1YWQodGlsZVRyYW5zZm9y
bSwKKyAgICBkcmF3VGV4dHVyZWRRdWFkKGZyYW1lLCB0aWxlVHJhbnNmb3JtLAogICAgICAgICAg
ICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHks
IEZsb2F0UXVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkubWF0cml4TG9jYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCAtMSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVh
ZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFk
KERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogcXVhZCkK
IHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwogICAgIGNvbnN0IFNvbGlkQ29sb3JQ
cm9ncmFtKiBwcm9ncmFtID0gc29saWRDb2xvclByb2dyYW0oKTsKQEAgLTUzMSw3ICs1MjIsNyBA
QCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBD
Q0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1YQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJl
bmRlck1hdHJpeCA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKICAgICByZW5kZXJNYXRyaXgudHJh
bnNsYXRlKDAuNSAqIGxheWVyUmVjdC53aWR0aCgpICsgbGF5ZXJSZWN0LngoKSwgMC41ICogbGF5
ZXJSZWN0LmhlaWdodCgpICsgbGF5ZXJSZWN0LnkoKSk7CiAgICAgcmVuZGVyTWF0cml4LnNjYWxl
Tm9uVW5pZm9ybShsYXllclJlY3Qud2lkdGgoKSwgbGF5ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBwcm9qZWN0aW9u
TWF0cml4KCkgKiByZW5kZXJNYXRyaXgpOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dG9H
TE1hdHJpeCgmZ2xNYXRyaXhbMF0sIGZyYW1lLnByb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRy
aXgpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybU1hdHJpeDRmdihwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCAxLCBmYWxzZSwgJmdsTWF0cml4
WzBdKSk7CiAKICAgICBTa0NvbG9yIGNvbG9yID0gcXVhZC0+Y29sb3IoKTsKQEAgLTU2MSw3ICs1
NTIsNyBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAot
UGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0Jh
Y2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBX
ZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBjb250ZW50c0RldmljZVRyYW5zZm9ybSkKK1Bhc3NPd25QdHI8Q0NTY29wZWRU
ZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhEcmF3
aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCwgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgY29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCiB7CiAgICAgLy8gVGhpcyBtZXRo
b2QgZHJhd3MgYSBiYWNrZ3JvdW5kIGZpbHRlciwgd2hpY2ggYXBwbGllcyBhIGZpbHRlciB0byBh
bnkgcGl4ZWxzIGJlaGluZCB0aGUgcXVhZCBhbmQgc2VlbiB0aHJvdWdoIGl0cyBiYWNrZ3JvdW5k
LgogICAgIC8vIFRoZSBhbGdvcml0aG0gd29ya3MgYXMgZm9sbG93czoKQEAgLTU4NCw5ICs1NzUs
OSBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogCiAgICAgLy8gRklYTUU6IFdlIG9ubHkgYWxs
b3cgYmFja2dyb3VuZCBmaWx0ZXJzIG9uIGFuIG9wYXF1ZSByZW5kZXIgc3VyZmFjZSBiZWNhdXNl
IG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCiAgICAgLy8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBh
bmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFuc2x1Y2VudCBwaXhlbHMgd291bGRuJ3Qg
aGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCi0gICAgaWYgKG1fY3VycmVudFJlbmRlclBhc3MtPmhh
c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpKQorICAgIGlmIChmcmFtZS5jdXJyZW50UmVuZGVyUGFz
cy0+aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZSk7CisgICAgQVNTRVJUKCFmcmFtZS5jdXJyZW50
VGV4dHVyZSk7CiAKICAgICAvLyBGSVhNRTogRG8gYSBzaW5nbGUgcmVhZGJhY2sgZm9yIGJvdGgg
dGhlIHN1cmZhY2UgYW5kIHJlcGxpY2EgYW5kIGNhY2hlIHRoZSBmaWx0ZXJlZCByZXN1bHRzIChv
bmNlIGZpbHRlciB0ZXh0dXJlcyBhcmUgbm90IHJldXNlZCkuCiAgICAgSW50UmVjdCBkZXZpY2VS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChjb250ZW50
c0RldmljZVRyYW5zZm9ybSwgc2hhcmVkR2VvbWV0cnlRdWFkKCkuYm91bmRpbmdCb3goKSkpOwpA
QCAtNTk2LDcgKzU4Nyw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAgICAgZGV2aWNlUmVj
dC5tb3ZlKC1sZWZ0LCAtdG9wKTsKICAgICBkZXZpY2VSZWN0LmV4cGFuZChsZWZ0ICsgcmlnaHQs
IHRvcCArIGJvdHRvbSk7CiAKLSAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5k
ZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CisgICAgZGV2aWNlUmVjdC5pbnRlcnNl
Y3QoZnJhbWUuY3VycmVudFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKIAog
ICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gQ0NT
Y29wZWRUZXh0dXJlOjpjcmVhdGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICBpZiAoIWdldEZy
YW1lYnVmZmVyVGV4dHVyZShkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNlUmVj
dCkpCkBAIC02MTMsOCArNjA0LDggQEAgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEMKICAgICBpZiAo
IWJhY2tncm91bmRUZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgcXVhZC0+
cXVhZFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJv
dmlkZXI6OlRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHRhcmdldFJlbmRlclBhc3MgPSBtX2N1cnJlbnRS
ZW5kZXJQYXNzOwotICAgIGJvb2wgdXNpbmdCYWNrZ3JvdW5kVGV4dHVyZSA9IHVzZVNjb3BlZFRl
eHR1cmUoYmFja2dyb3VuZFRleHR1cmUuZ2V0KCksIHF1YWQtPnF1YWRSZWN0KCkpOworICAgIGNv
bnN0IENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IGZyYW1lLmN1cnJlbnRSZW5kZXJQ
YXNzOworICAgIGJvb2wgdXNpbmdCYWNrZ3JvdW5kVGV4dHVyZSA9IHVzZVNjb3BlZFRleHR1cmUo
ZnJhbWUsIGJhY2tncm91bmRUZXh0dXJlLmdldCgpLCBxdWFkLT5xdWFkUmVjdCgpKTsKIAogICAg
IGlmICh1c2luZ0JhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIC8vIENvcHkgdGhlIHJlYWRi
YWNrIHBpeGVscyBmcm9tIGRldmljZSB0byB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGZvciB0aGUg
c3VyZmFjZS4KQEAgLTYyNSwyMyArNjE2LDIzIEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJl
PiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAg
ICAgICAgIGRldmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3Qu
d2lkdGgoKSAvIDIuMCwgZGV2aWNlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CiAgICAgICAgIGRldmlj
ZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgpLCBkZXZpY2VS
ZWN0LnkoKSk7CiAKLSAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGZpbHRlcmVkRGV2
aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdC5zaXplKCksIGRldmljZVRvRnJhbWVi
dWZmZXJUcmFuc2Zvcm0pOworICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZnJhbWUs
IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdC5zaXplKCksIGRl
dmljZVRvRnJhbWVidWZmZXJUcmFuc2Zvcm0pOwogICAgIH0KIAotICAgIHVzZVJlbmRlclBhc3Mo
dGFyZ2V0UmVuZGVyUGFzcyk7CisgICAgdXNlUmVuZGVyUGFzcyhmcmFtZSwgdGFyZ2V0UmVuZGVy
UGFzcyk7CiAKICAgICBpZiAoIXVzaW5nQmFja2dyb3VuZFRleHR1cmUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBiYWNrZ3JvdW5kVGV4dHVyZS5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZGVyUGFzc0Ry
YXdRdWFkKiBxdWFkKQogewogICAgIENhY2hlZFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSA9IG1f
cmVuZGVyUGFzc1RleHR1cmVzLmdldChxdWFkLT5yZW5kZXJQYXNzSWQoKSk7CiAgICAgaWYgKCFj
b250ZW50c1RleHR1cmUgfHwgIWNvbnRlbnRzVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzID0gbV9yZW5kZXJQYXNzZXNC
eUlkLT5nZXQocXVhZC0+cmVuZGVyUGFzc0lkKCkpOworICAgIGNvbnN0IENDUmVuZGVyUGFzcyog
cmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQtPmdldChxdWFkLT5yZW5kZXJQYXNz
SWQoKSk7CiAgICAgQVNTRVJUKHJlbmRlclBhc3MpOwogICAgIGlmICghcmVuZGVyUGFzcykKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUwLDEzICs2NDEsMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCkKICAgICByZW5kZXJNYXRyaXgudHJhbnNsYXRlKDAuNSAqIHF1YWQtPnF1YWRSZWN0KCkud2lk
dGgoKSArIHF1YWQtPnF1YWRSZWN0KCkueCgpLCAwLjUgKiBxdWFkLT5xdWFkUmVjdCgpLmhlaWdo
dCgpICsgcXVhZC0+cXVhZFJlY3QoKS55KCkpOwogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IGRldmljZU1hdHJpeCA9IHJlbmRlck1hdHJpeDsKICAgICBkZXZpY2VNYXRyaXguc2NhbGVOb25V
bmlmb3JtKHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQo
KSk7Ci0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0g
PSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCh3aW5kb3dNYXRyaXgoKSAqIHByb2plY3Rpb25NYXRy
aXgoKSAqIGRldmljZU1hdHJpeCkudG8yZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtID0gV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoZnJhbWUud2luZG93TWF0cml4ICogZnJhbWUucHJvamVjdGlvbk1hdHJpeCAqIGRldmljZU1h
dHJpeCkudG8yZFRyYW5zZm9ybSgpOwogCiAgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlm
IGRldmljZSBtYXRyaXggaXMgaW52ZXJ0aWJsZS4KICAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJh
bnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8Q0NT
Y29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVyZSA9IGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhx
dWFkLCByZW5kZXJQYXNzLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBjb250ZW50c0RldmljZVRyYW5z
Zm9ybSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gYmFja2dyb3VuZFRleHR1cmUgPSBk
cmF3QmFja2dyb3VuZEZpbHRlcnMoZnJhbWUsIHF1YWQsIHJlbmRlclBhc3MtPmJhY2tncm91bmRG
aWx0ZXJzKCksIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKTsKIAogICAgIC8vIEZJWE1FOiBDYWNo
ZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUg
c3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29u
dGVudHMgdGV4dHVyZS4KQEAgLTY3NSw3ICs2NjYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFk
KQogICAgIGlmIChiYWNrZ3JvdW5kVGV4dHVyZSkgewogICAgICAgICBBU1NFUlQoYmFja2dyb3Vu
ZFRleHR1cmUtPnNpemUoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSk7CiAgICAgICAgIEND
U2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgYmFja2dy
b3VuZFRleHR1cmUtPmlkKCkpOwotICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobG9j
ay50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHJlbmRlck1hdHJpeCk7Cisg
ICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFtZSwgbG9jay50ZXh0dXJlSWQoKSwg
cXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHJlbmRlck1hdHJpeCk7CiAgICAgfQogCiAgICAgYm9v
bCBjbGlwcGVkID0gZmFsc2U7CkBAIC03NjIsMTEgKzc1MywxMSBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBxdWFkKQogICAgIEZsb2F0UXVhZCBzdXJmYWNlUXVhZCA9IENDTWF0aFV0aWw6Om1hcFF1YWQo
Y29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgpLCBkZXZpY2VMYXllckVkZ2VzLmZsb2F0
UXVhZCgpLCBjbGlwcGVkKTsKICAgICBBU1NFUlQoIWNsaXBwZWQpOwogCi0gICAgZHJhd1RleHR1
cmVkUXVhZChyZW5kZXJNYXRyaXgsIHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVh
ZFJlY3QoKS5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzdXJmYWNlUXVhZCwKKyAgICBkcmF3
VGV4dHVyZWRRdWFkKGZyYW1lLCByZW5kZXJNYXRyaXgsIHF1YWQtPnF1YWRSZWN0KCkud2lkdGgo
KSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzdXJmYWNlUXVh
ZCwKICAgICAgICAgICAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uLCBzaGFkZXJBbHBo
YUxvY2F0aW9uLCBzaGFkZXJRdWFkTG9jYXRpb24pOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKiBx
dWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZChEcmF3
aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZCkKIHsKICAg
ICBjb25zdCBTb2xpZENvbG9yUHJvZ3JhbSogcHJvZ3JhbSA9IHNvbGlkQ29sb3JQcm9ncmFtKCk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dy
YW0oKSkpOwpAQCAtNzgyLDcgKzc3Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3U29saWRDb2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHF1YWQpCiAKICAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm00Zihwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmNvbG9yTG9jYXRpb24oKSwgKFNrQ29sb3JHZXRSKGNvbG9yKSAvIDI1NS4wKSAqIGFs
cGhhLCAoU2tDb2xvckdldEcoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIChTa0NvbG9yR2V0Qihj
b2xvcikgLyAyNTUuMCkgKiBhbHBoYSwgYWxwaGEpKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQo
dGlsZVRyYW5zZm9ybSwKKyAgICBkcmF3VGV4dHVyZWRRdWFkKGZyYW1lLCB0aWxlVHJhbnNmb3Jt
LAogICAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0
KCksIDEuMCwgRmxvYXRRdWFkKCksCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgLTEsIC0x
KTsKQEAgLTgxMyw3ICs4MDQsNyBAQCBzdGF0aWMgdm9pZCB0aWxlVW5pZm9ybUxvY2F0aW9uKFQg
cHJvZ3JhbSwgVGlsZVByb2dyYW1Vbmlmb3JtcyYgdW5pZm9ybXMpCiAgICAgdW5pZm9ybXMuZWRn
ZUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKTsKIH0K
IAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVE
cmF3UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQo
RHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAg
Y29uc3QgSW50UmVjdCYgdGlsZVJlY3QgPSBxdWFkLT5xdWFkVmlzaWJsZVJlY3QoKTsKIApAQCAt
ODQ5LDcgKzg0MCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQo
Y29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAKIAogICAgIEZsb2F0UXVhZCBsb2NhbFF1YWQ7
Ci0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0gV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgod2luZG93TWF0cml4KCkgKiBwcm9qZWN0aW9uTWF0cml4KCkgKiBxdWFk
LT5xdWFkVHJhbnNmb3JtKCkpLnRvMmRUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChmcmFtZS53
aW5kb3dNYXRyaXggKiBmcmFtZS5wcm9qZWN0aW9uTWF0cml4ICogcXVhZC0+cXVhZFRyYW5zZm9y
bSgpKS50bzJkVHJhbnNmb3JtKCk7CiAgICAgaWYgKCFkZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRp
YmxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTY1LDEwICs5NTYsMTAgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVh
ZCkKICAgICAvLyBOb3JtYWxpemUgdG8gdGlsZVJlY3QuCiAgICAgbG9jYWxRdWFkLnNjYWxlKDEu
MGYgLyB0aWxlUmVjdC53aWR0aCgpLCAxLjBmIC8gdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAg
ZHJhd1RleHR1cmVkUXVhZChxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHRpbGVSZWN0LndpZHRoKCks
IHRpbGVSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIGxvY2FsUXVhZCwgdW5pZm9ybXMu
bWF0cml4TG9jYXRpb24sIHVuaWZvcm1zLmFscGhhTG9jYXRpb24sIHVuaWZvcm1zLnBvaW50TG9j
YXRpb24pOworICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KSwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwg
bG9jYWxRdWFkLCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbiwgdW5pZm9ybXMuYWxwaGFMb2NhdGlv
biwgdW5pZm9ybXMucG9pbnRMb2NhdGlvbik7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKK3Zv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKERyYXdpbmdGcmFtZSYg
ZnJhbWUsIGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKIHsKICAgICBjb25zdCBWaWRl
b1lVVlByb2dyYW0qIHByb2dyYW0gPSB2aWRlb1lVVlByb2dyYW0oKTsKICAgICBBU1NFUlQocHJv
Z3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKQEAgLTEwMjUsMTQgKzEwMTYsMTQgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoY29uc3QgQ0NZVVZW
aWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVj
dCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0LngoKSArIHF1YWRSZWN0
LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0LmhlaWdodCgpIC8gMi4wKTsK
IAotICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwg
cXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgRmxvYXRRdWFkKCksCisgICAgZHJh
d1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwgcXVh
ZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgRmxvYXRRdWFkKCksCiAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgLTEpOwogCiAgICAgLy8gUmVz
ZXQgYWN0aXZlIHRleHR1cmUgYmFjayB0byB0ZXh0dXJlIDAuCiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwog
fQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVhbVZpZGVvUXVhZChjb25z
dCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1N0cmVhbVZpZGVvUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1N0cmVh
bVZpZGVvRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsK
IApAQCAtMTA1Myw3ICsxMDQ0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdT
dHJlYW1WaWRlb1F1YWQoY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKiBxdWEKICAgICBJbnRS
ZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKICAgICBxdWFkVHJhbnNmb3JtLnRyYW5z
bGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgpIC8gMi4wLCBxdWFkUmVjdC55KCkg
KyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKHF1YWRU
cmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFj
aXR5KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUs
IHF1YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFk
LT5vcGFjaXR5KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLAogICAgICAgICAgICAgICAgICAgICAg
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIC0xKTsKIH0KIApAQCAtMTA4MSw3ICsxMDcyLDcg
QEAgc3RydWN0IFRleFRyYW5zZm9ybVRleHR1cmVQcm9ncmFtQmluZGluZyA6IFRleHR1cmVQcm9n
cmFtQmluZGluZyB7CiAgICAgaW50IHRleFRyYW5zZm9ybUxvY2F0aW9uOwogfTsKIAotdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZChjb25zdCBDQ1RleHR1cmVEcmF3
UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQo
RHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIApAQCAtMTEyMiwxMyArMTExMywx
MyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKGNvbnN0IEND
VGV4dHVyZURyYXdRdWFkKiBxdWFkKQogICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFkLT5xdWFk
UmVjdCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0LngoKSArIHF1YWRS
ZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0LmhlaWdodCgpIC8gMi4w
KTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgo
KSwgcXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFk
KCksIGJpbmRpbmcubWF0cml4TG9jYXRpb24sIGJpbmRpbmcuYWxwaGFMb2NhdGlvbiwgLTEpOwor
ICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHF1YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRo
KCksIHF1YWRSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIHNoYXJlZEdlb21ldHJ5UXVh
ZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0aW9uLCBiaW5kaW5nLmFscGhhTG9jYXRpb24sIC0xKTsK
IAogICAgIGlmICghcXVhZC0+cHJlbXVsdGlwbGllZEFscGhhKCkpCiAgICAgICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBo
aWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFk
KiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKERy
YXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBUZXhUcmFuc2Zvcm1UZXh0
dXJlUHJvZ3JhbUJpbmRpbmcgYmluZGluZzsKQEAgLTExNDgsMTQgKzExMzksMTMgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNl
RHJhd1F1YWQqIHF1YWQpCiAgICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7
CiAgICAgcXVhZFRyYW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgpICsgcXVhZFJlY3Qud2lk
dGgoKSAvIDIuMCwgcXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0KCkgLyAyLjApOwogCi0g
ICAgZHJhd1RleHR1cmVkUXVhZChxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFk
UmVjdC5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwgYmlu
ZGluZy5tYXRyaXhMb2NhdGlvbiwgYmluZGluZy5hbHBoYUxvY2F0aW9uLCAtMSk7CisgICAgZHJh
d1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwgcXVh
ZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIGJp
bmRpbmcubWF0cml4TG9jYXRpb24sIGJpbmRpbmcuYWxwaGFMb2NhdGlvbiwgLTEpOwogCiAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6OlRFWFRV
UkVfUkVDVEFOR0xFX0FSQiwgMCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKLSAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2suY2xl
YXIoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250
ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlz
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIH0KQEAgLTExODAsNyArMTE3MCw3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVuZWQs
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uCiAgICAgZmxhdHRlbmVkWzE1XSA9IG0ubTQ0KCk7CiB9
CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdUZXh0dXJlZFF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBp
bnQgcXVhZExvY2F0aW9uKQogewpAQCAtMTE5Miw3ICsxMTgyLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXcKICAgICByZW5kZXJNYXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKIAog
ICAgIC8vIEFwcGx5IHRoZSBwcm9qZWN0aW9uIG1hdHJpeCBiZWZvcmUgc2VuZGluZyB0aGUgdHJh
bnNmb3JtIG92ZXIgdG8gdGhlIHNoYWRlci4KLSAgICB0b0dMTWF0cml4KCZnbE1hdHJpeFswXSwg
bV9wcm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4KTsKKyAgICB0b0dMTWF0cml4KCZnbE1h
dHJpeFswXSwgZnJhbWUucHJvamVjdGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7CiAKICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobWF0cml4TG9jYXRpb24s
IDEsIGZhbHNlLCAmZ2xNYXRyaXhbMF0pKTsKIApAQCAtMTIxNSw3ICsxMjA1LDcgQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRyYXcKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRyYXdFbGVt
ZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfU0hPUlQsIDApKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNv
cHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3Vu
ZHMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KQordm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihEcmF3aW5nRnJhbWUm
IGZyYW1lLCBpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KQogewogICAgIGNvbnN0IFJlbmRlclBhc3NQ
cm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW0oKTsKIApAQCAtMTIyOCw3ICsxMjE4
LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZl
cihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXoKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJM
b2NhdGlvbigpLCAwKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZChkcmF3TWF0cml4LCBib3VuZHMu
d2lkdGgoKSwgYm91bmRzLmhlaWdodCgpLCAxLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwKKyAgICBk
cmF3VGV4dHVyZWRRdWFkKGZyYW1lLCBkcmF3TWF0cml4LCBib3VuZHMud2lkdGgoKSwgYm91bmRz
LmhlaWdodCgpLCAxLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmFscGhhTG9jYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0xKTsKQEAgLTE0MDAsMjAgKzEzOTAsMjAgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnMK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3Vy
cmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQorYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFt
ZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogewotICAgIHJldHVybiBtX2N1cnJl
bnRSZW5kZXJQYXNzID09IHJlbmRlclBhc3MgJiYgIW1fY3VycmVudFRleHR1cmU7CisgICAgcmV0
dXJuIGZyYW1lLmN1cnJlbnRSZW5kZXJQYXNzID09IHJlbmRlclBhc3MgJiYgIWZyYW1lLmN1cnJl
bnRUZXh0dXJlOwogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFz
cyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCitib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXNlUmVuZGVyUGFzcyhEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmRlclBh
c3MqIHJlbmRlclBhc3MpCiB7Ci0gICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7
Ci0gICAgbV9jdXJyZW50VGV4dHVyZSA9IDA7CisgICAgZnJhbWUuY3VycmVudFJlbmRlclBhc3Mg
PSByZW5kZXJQYXNzOworICAgIGZyYW1lLmN1cnJlbnRUZXh0dXJlID0gMDsKIAotICAgIGlmIChy
ZW5kZXJQYXNzID09IG1fZGVmYXVsdFJlbmRlclBhc3MpIHsKLSAgICAgICAgbV9jdXJyZW50RnJh
bWVidWZmZXJMb2NrLmNsZWFyKCk7CisgICAgaWYgKHJlbmRlclBhc3MgPT0gZnJhbWUucm9vdFJl
bmRlclBhc3MpIHsKKyAgICAgICAgZnJhbWUuY3VycmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigp
OwogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd0ZyYW1lYnVm
ZmVyUmVjdChyZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7CisgICAg
ICAgIHNldERyYXdGcmFtZWJ1ZmZlclJlY3QoZnJhbWUsIHJlbmRlclBhc3MtPmZyYW1lYnVmZmVy
T3V0cHV0UmVjdCgpLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0x
NDI1LDI1ICsxNDE1LDI2IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQ
YXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKICAgICBpZiAoIXRleHR1cmUtPmlk
KCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCByZW5kZXJQYXNz
VGV4dHVyZVNpemUocmVuZGVyUGFzcyksIHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBh
c3MpLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSh0
ZXh0dXJlLCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CisgICAgcmV0dXJu
IGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShmcmFtZSwgdGV4dHVyZSwgcmVuZGVyUGFzcy0+ZnJh
bWVidWZmZXJPdXRwdXRSZWN0KCkpOwogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dXNlU2NvcGVkVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHZpZXdwb3J0UmVjdCkKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VTY29w
ZWRUZXh0dXJlKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KQogewogICAgIEFTU0VSVCh0ZXh0dXJl
LT5pZCgpKTsKLSAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gMDsKLSAgICBtX2N1cnJlbnRUZXh0
dXJlID0gdGV4dHVyZTsKKyAgICBmcmFtZS5jdXJyZW50UmVuZGVyUGFzcyA9IDA7CisgICAgZnJh
bWUuY3VycmVudFRleHR1cmUgPSB0ZXh0dXJlOwogCi0gICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZl
clRvVGV4dHVyZSh0ZXh0dXJlLCB2aWV3cG9ydFJlY3QpOworICAgIHJldHVybiBiaW5kRnJhbWVi
dWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7CiB9CiAKLWJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29uc3QgQ0NT
Y29wZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBmcmFtZWJ1ZmZlclJlY3QpCiti
b29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKERyYXdp
bmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYgZnJhbWVidWZmZXJSZWN0KQogewogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgbV9j
dXJyZW50RnJhbWVidWZmZXJMb2NrID0gYWRvcHRQdHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yV3JpdGUobV9yZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlLT5pZCgpKSk7Ci0gICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay0+dGV4
dHVyZUlkKCksIDApKTsKKyAgICBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrID0gYWRvcHRQ
dHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUobV9yZXNvdXJjZVByb3ZpZGVyLCB0
ZXh0dXJlLT5pZCgpKSk7CisgICAgdW5zaWduZWQgdGV4dHVyZUlkID0gZnJhbWUuY3VycmVudEZy
YW1lYnVmZmVyTG9jay0+dGV4dHVyZUlkKCk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHRleHR1cmVJZCwgMCkpOwogCiAjaWYgIWRlZmluZWQgKCBOREVCVUcgKQogICAg
IGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKQEAgLTE0NTIsMTYgKzE0NDMsMTYgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJp
bmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIHRleHQKICAgICB9
CiAjZW5kaWYKIAotICAgIHNldERyYXdGcmFtZWJ1ZmZlclJlY3QoZnJhbWVidWZmZXJSZWN0LCBm
YWxzZSk7CisgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChmcmFtZSwgZnJhbWVidWZmZXJSZWN0
LCBmYWxzZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gU2V0cyB0aGUgc2Npc3NvciBy
ZWdpb24gdG8gdGhlIGdpdmVuIHJlY3RhbmdsZS4gVGhlIGNvb3JkaW5hdGUgc3lzdGVtIGZvciB0
aGUKIC8vIHNjaXNzb3JSZWN0IGhhcyBpdHMgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdCBjb3JuZXIg
b2YgdGhlIGN1cnJlbnQgdmlzaWJsZSByZWN0Lgotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdChEcmF3aW5nRnJhbWUmIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKIHsKLSAgICBJbnRSZWN0IGZyYW1lYnVmZmVyT3V0
cHV0UmVjdCA9IChtX2N1cnJlbnRSZW5kZXJQYXNzID8gbV9jdXJyZW50UmVuZGVyUGFzcy0+ZnJh
bWVidWZmZXJPdXRwdXRSZWN0KCkgOiBtX2RlZmF1bHRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91
dHB1dFJlY3QoKSk7CisgICAgSW50UmVjdCBmcmFtZWJ1ZmZlck91dHB1dFJlY3QgPSBmcmFtZS5j
dXJyZW50UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCk7CiAKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNU
KSk7CiAKQEAgLTE0NzIsNyArMTQ2Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpz
ZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQogICAgIC8vIG9mIHRo
ZSBHTCBzY2lzc29yIGlzIHRoZSBib3R0b20gb2Ygb3VyIGxheWVyLgogICAgIC8vIEJ1dCwgaWYg
cmVuZGVyaW5nIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLCB3ZSByZXZlcnNlIG91ciBzZW5zZSBvZiAn
dXBzaWRlIGRvd24nLgogICAgIGludCBzY2lzc29yWTsKLSAgICBpZiAoaXNDdXJyZW50UmVuZGVy
UGFzcyhtX2RlZmF1bHRSZW5kZXJQYXNzKSkKKyAgICBpZiAoaXNDdXJyZW50UmVuZGVyUGFzcyhm
cmFtZSwgZnJhbWUucm9vdFJlbmRlclBhc3MpKQogICAgICAgICBzY2lzc29yWSA9IGZyYW1lYnVm
ZmVyT3V0cHV0UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBmcmFtZWJ1ZmZl
ck91dHB1dFJlY3QueSgpKTsKICAgICBlbHNlCiAgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJl
Y3QueSgpIC0gZnJhbWVidWZmZXJPdXRwdXRSZWN0LnkoKTsKQEAgLTE0ODcsMTQgKzE0NzgsMTQg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Om1ha2VDb250ZXh0Q3VycmVudCgpCiAvLyBT
ZXRzIHRoZSBjb29yZGluYXRlIHJhbmdlIG9mIGNvbnRlbnQgdGhhdCBlbmRzIGJlaW5nIGRyYXdu
IG9udG8gdGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZS4KIC8vIFRoZSB0YXJnZXQgcmVuZGVyIHN1
cmZhY2UgaXMgYXNzdW1lZCB0byBoYXZlIGFuIG9yaWdpbiBhdCAwLCAwIGFuZCB0aGUgd2lkdGgg
YW5kIGhlaWdodCBvZgogLy8gb2YgdGhlIGRyYXdSZWN0Lgotdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNldERyYXdGcmFtZWJ1ZmZlclJlY3QoY29uc3QgSW50UmVjdCYgZHJhd1JlY3QsIGJv
b2wgZmxpcFkpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVy
UmVjdChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBm
bGlwWSkKIHsKICAgICBpZiAoZmxpcFkpCi0gICAgICAgIG1fcHJvamVjdGlvbk1hdHJpeCA9IG9y
dGhvTWF0cml4KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC5tYXhZKCks
IGRyYXdSZWN0LnkoKSk7CisgICAgICAgIGZyYW1lLnByb2plY3Rpb25NYXRyaXggPSBvcnRob01h
dHJpeChkcmF3UmVjdC54KCksIGRyYXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QubWF4WSgpLCBkcmF3
UmVjdC55KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9N
YXRyaXgoZHJhd1JlY3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0LnkoKSwgZHJhd1Jl
Y3QubWF4WSgpKTsKKyAgICAgICAgZnJhbWUucHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4
KGRyYXdSZWN0LngoKSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC55KCksIGRyYXdSZWN0Lm1h
eFkoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBkcmF3
UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5oZWlnaHQoKSkpOwotICAgIG1fd2luZG93TWF0cml4ID0g
c2NyZWVuTWF0cml4KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRyYXdSZWN0LmhlaWdodCgpKTsK
KyAgICBmcmFtZS53aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwgMCwgZHJhd1JlY3Qud2lk
dGgoKSwgZHJhd1JlY3QuaGVpZ2h0KCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmgKaW5kZXggOGY1OWQ0ZTlhZjI4N2UzYzdkMzM3ZWFkYTViZDczNWZlYWEzNjEwMC4u
ODA3MTBjMWVmMzdhMTAzY2E2MTEzZWY5NDRjYTBmY2M3ZWVlNTRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwMywxMCArMTAzLDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJN
YXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGludCBxdWFkTG9j
YXRpb24pOwotICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0dXJlSWQs
IGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd01hdHJpeCk7CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyOyB9CiAKIHByb3RlY3RlZDoK
QEAgLTExOSwzNiArMTE1LDU4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJQ
YXNzVGV4dHVyZXMoKTsKIAogcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRHJhd2luZ0ZyYW1lIHsKKyAg
ICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzSWRIYXNoTWFwKiByZW5kZXJQYXNzZXNCeUlkOworICAg
ICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzOworICAgICAgICBjb25zdCBD
Q1JlbmRlclBhc3MqIGN1cnJlbnRSZW5kZXJQYXNzOworICAgICAgICBjb25zdCBDQ1Njb3BlZFRl
eHR1cmUqIGN1cnJlbnRUZXh0dXJlOworICAgICAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JXcml0ZT4gY3VycmVudEZyYW1lYnVmZmVyTG9jazsKKworICAgICAgICBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHByb2plY3Rpb25NYXRyaXg7CisgICAgICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggd2luZG93TWF0cml4OworCisgICAgICAgIERyYXdpbmdG
cmFtZSgpCisgICAgICAgICAgICA6IHJvb3RSZW5kZXJQYXNzKDApCisgICAgICAgICAgICAsIGN1
cnJlbnRSZW5kZXJQYXNzKDApCisgICAgICAgICAgICAsIGN1cnJlbnRUZXh0dXJlKDApCisgICAg
ICAgIHsgfQorICAgIH07CisKICAgICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZsb2F0KiwgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCiAgICAgdm9pZCBiZWdpbkRy
YXdpbmdGcmFtZSgpOwotICAgIHZvaWQgZHJhd1JlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNz
KiwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOworICAgIHZvaWQgZHJh
d1JlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxv
YXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOwogICAgIHZvaWQgZmluaXNoRHJhd2luZ0Zy
YW1lKCk7CiAKLSAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqKTsKLSAgICB2b2lk
IGRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqKTsKLSAg
ICB2b2lkIGRyYXdEZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKik7
Ci0gICAgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhj
b25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCosIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5z
Zm9ybSk7Ci0gICAgdm9pZCBkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJh
d1F1YWQqKTsKLSAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JE
cmF3UXVhZCopOwotICAgIHZvaWQgZHJhd1N0cmVhbVZpZGVvUXVhZChjb25zdCBDQ1N0cmVhbVZp
ZGVvRHJhd1F1YWQqKTsKLSAgICB2b2lkIGRyYXdUZXh0dXJlUXVhZChjb25zdCBDQ1RleHR1cmVE
cmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0lPU3VyZmFjZVF1YWQoY29uc3QgQ0NJT1N1cmZhY2VE
cmF3UXVhZCopOwotICAgIHZvaWQgZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKik7
Ci0gICAgdm9pZCBkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCopOwor
ICAgIHZvaWQgZHJhd1F1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NEcmF3UXVhZCopOworICAg
IHZvaWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZCopOworICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyUXVhZChEcmF3aW5nRnJh
bWUmLCBjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKKyAgICBQYXNzT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gZHJhd0JhY2tncm91bmRGaWx0ZXJzKERyYXdpbmdGcmFtZSYsIGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsK
KyAgICB2b2lkIGRyYXdSZW5kZXJQYXNzUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCopOworICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKERyYXdpbmdGcmFt
ZSYsIGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3U3RyZWFtVmlk
ZW9RdWFkKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCopOworICAg
IHZvaWQgZHJhd1RleHR1cmVRdWFkKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDVGV4dHVyZURyYXdR
dWFkKik7CisgICAgdm9pZCBkcmF3SU9TdXJmYWNlUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBD
Q0lPU3VyZmFjZURyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3VGlsZVF1YWQoRHJhd2luZ0ZyYW1l
JiwgY29uc3QgQ0NUaWxlRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdZVVZWaWRlb1F1YWQoRHJh
d2luZ0ZyYW1lJiwgY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKik7CisKKyAgICB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRp
b24sIGludCBxdWFkTG9jYXRpb24pOworICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVy
KERyYXdpbmdGcmFtZSYsIGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7CiAKLSAgICB2
b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgc2V0U2Npc3Nv
clRvUmVjdChEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2b2lkIHNldERy
YXdGcmFtZWJ1ZmZlclJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOworICAgIHZvaWQg
c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9v
bCBmbGlwWSk7CiAKICAgICAvLyBUaGUgY3VycmVudCBkcmF3aW5nIHRhcmdldCBpcyBlaXRoZXIg
YSBSZW5kZXJQYXNzIG9yIFNjb3BlZFRleHR1cmUuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gc3dp
dGNoIHRvIGEgbmV3IGRyYXdpbmcgdGFyZ2V0LgotICAgIGJvb2wgdXNlUmVuZGVyUGFzcyhjb25z
dCBDQ1JlbmRlclBhc3MqKTsKLSAgICBib29sIHVzZVNjb3BlZFRleHR1cmUoY29uc3QgQ0NTY29w
ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKLSAgICBib29sIGlzQ3Vy
cmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7CisgICAgYm9vbCB1c2VSZW5kZXJQ
YXNzKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDUmVuZGVyUGFzcyopOworICAgIGJvb2wgdXNlU2Nv
cGVkVGV4dHVyZShEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1Njb3BlZFRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiB2aWV3cG9ydFJlY3QpOworICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyUGFzcyhEcmF3
aW5nRnJhbWUmLCBjb25zdCBDQ1JlbmRlclBhc3MqKTsKIAotICAgIGJvb2wgYmluZEZyYW1lYnVm
ZmVyVG9UZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHZpZXdw
b3J0UmVjdCk7CisgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoRHJhd2luZ0ZyYW1l
JiwgY29uc3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsK
IAotICAgIHZvaWQgY2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZs
b2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIGNsZWFyRnJhbWVidWZm
ZXIoRHJhd2luZ0ZyYW1lJiwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3Qp
OwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIApAQCAtMTcyLDkgKzE5MCw2IEBA
IHByaXZhdGU6CiAKICAgICBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzIG1fY2FwYWJpbGl0aWVz
OwogCi0gICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX2N1cnJlbnRSZW5kZXJQYXNzOwotICAgIGNv
bnN0IENDU2NvcGVkVGV4dHVyZSogbV9jdXJyZW50VGV4dHVyZTsKLSAgICBPd25QdHI8Q0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZT4gbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrOwogICAgIHVu
c2lnbmVkIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZDsKIAogICAgIE93blB0cjxHZW9tZXRyeUJp
bmRpbmc+IG1fc2hhcmVkR2VvbWV0cnk7CkBAIC0yNjMsOSArMjc4LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKIAotICAgIGNvbnN0
IENDUmVuZGVyUGFzcyogbV9kZWZhdWx0UmVuZGVyUGFzczsKLSAgICBjb25zdCBDQ1JlbmRlclBh
c3NJZEhhc2hNYXAqIG1fcmVuZGVyUGFzc2VzQnlJZDsKLQogICAgIGJvb2wgbV9pc1ZpZXdwb3J0
Q2hhbmdlZDsKICAgICBib29sIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsKICAgICBib29sIG1f
aXNVc2luZ0JpbmRVbmlmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IDUxYjg5NDIxZGI1ZjMz
ZmEzNmE5OGU4YmMwMDdkMTVmMDVjYmJlNTAuLjkwODA1NjRjMGI1MTM2NjIzYmIxY2FkMjJkN2Y1
NjhiNDI1ODE1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTc0LDkgKzc0LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0Q2hhbmdlZCgpIHsgfQogCi0gICAgY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93
TWF0cml4OyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25z
Rm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBo
YXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIApAQCAtMTA1LDggKzEwMiw2IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBDQ1Jl
bmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fd2luZG93TWF0cml4OwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154457</attachid>
            <date>2012-07-25 15:13:38 -0700</date>
            <delta_ts>2012-07-25 17:58:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92294-20120725181327.patch</filename>
            <type>text/plain</type>
            <size>40711</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNmZDgwYzAyYTEyNzEx
MTBiYjdjMzIzNTZiZDMzZjZjNDY0OGIyMC4uMzcwNzM3MjlhYzFiNjgyYWQzYzk0NGMxZDliMDkw
NmFhMTQ3ODNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBACiAyMDEyLTA3LTI1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gTW92
ZSBlcGhlbWVyYWwgZGF0YSBmb3IgYSBzaW5nbGUgZnJhbWUgaW4gTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGludG8gYSBzdHJ1Y3R1cmUgd2l0aCBhIHNjb3BlZCBsaWZldGltZSBlcXVhbCB0byB0aGUg
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IExheWVyUmVuZGVyZXJDaHJvbWl1bSBjbGFzcyBoYXMgYSBudW1iZXIgb2YgbWVtYmVyIHZhcmlh
YmxlcyB0aGF0IGFyZSB1c2VkCisgICAgICAgIHdoaWxlIGRyYXdpbmcgYSBzaW5nbGUgZnJhbWUu
IEJlY2F1c2UgdGhleSBhcmUgbWVtYmVyIHZhcmlhYmxlcywgdGhlaXIgbGlmZXRpbWVzCisgICAg
ICAgIGFyZSBub3QgY2xlYXIsIGFuZCBzb21lIGFyZSBldmVuIHVwZGF0ZWQgYmV0d2VlbiBmcmFt
ZXMsIHdoaWNoIGlzIG5vdCBuZWVkZWQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY3JlYXRlcyBh
IExSQzo6RHJhd2luZ0ZyYW1lIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBkYXRhIHVzZWQKKyAg
ICAgICAgd2hpbGUgZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZSwgYW5kIGFuIGluc3RhbmNlIG9m
IHRoaXMgc3RydWN0dXJlIGlzIGhlbGQKKyAgICAgICAgYW5kIHBhc3NlZCBhcm91bmQgdG8gZnVu
Y3Rpb25zIGluIExheWVyUmVuZGVyZXJDaHJvbWl1bSwgbW92aW5nIGFsbCBvZiB0aGUKKyAgICAg
ICAgZGF0YSBvdXQgZnJvbSBiZWluZyBtZW1iZXIgdmFyaWFibGVzIG9uIHRoZSBjbGFzcyB0byBi
ZWluZyBmdW5jdGlvbgorICAgICAgICBhcmd1bWVudHMgb24gdGhlIHJlbGV2YW50IG1ldGhvZHMu
CisKKyAgICAgICAgVGhlIHByb2plY3Rpb24gYW5kIHdpbmRvdyBtYXRyaWNlcyBhcmUgYSBwYXJ0
IG9mIHRoaXMgZnJhbWUgZGF0YSwgYW5kIGFyZSBub3QKKyAgICAgICAgdXNlZCBleHRlcm5hbGx5
LCBzbyB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIENDUmVuZGVyZXIgaW50ZXJmYWNlIGFuZCBp
bmNsdWRlZAorICAgICAgICB3aXRoaW4gdGhlIERyYXdpbmdGcmFtZSBzdHJ1Y3R1cmUuCisKKyAg
ICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ciBp
bnRlbmRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNsZWFyRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJib2FyZFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1NvbGlkQ29s
b3JRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lV
VlZpZGVvUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdTdHJlYW1WaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3VGV4dHVyZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJQYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVi
dWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgIChEcmF3aW5nRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpEcmF3aW5nRnJh
bWU6OkRyYXdpbmdGcmFtZSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAg
ICAgKENDUmVuZGVyZXIpOgorCisyMDEyLTA3LTI1ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBXZWJGaWx0ZXJPcGVyYXRpb25z
IGZyb20gUmVuZGVyUGFzc0RyYXdRdWFkIHRvIFJlbmRlclBhc3MKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODg1CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDY4MGIxMGVkYWZlNTY4YTY4NGI0YTRkZjNkOTkwMjdl
YTY5N2NkMjUuLmViZDYxMDIxZDRkZjA1MDhlYWI0MTc3NTI5YzhmMWMxZGE0NzU3MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMTY2LDEzICsxNjYsMTAgQEAg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNs
aWVudCogY2xpZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1
cmVVcGxvYWRlclNldHRpbmcpCiAgICAgOiBDQ1JlbmRlcmVyKGNsaWVudCkKLSAgICAsIG1fY3Vy
cmVudFJlbmRlclBhc3MoMCkKLSAgICAsIG1fY3VycmVudFRleHR1cmUoMCkKICAgICAsIG1fb2Zm
c2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxvYXRS
ZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCiAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIo
cmVzb3VyY2VQcm92aWRlcikKICAgICAsIG1fY29udGV4dChyZXNvdXJjZVByb3ZpZGVyLT5ncmFw
aGljc0NvbnRleHQzRCgpKQotICAgICwgbV9kZWZhdWx0UmVuZGVyUGFzcygwKQogICAgICwgbV9p
c1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChm
YWxzZSkKICAgICAsIG1faXNVc2luZ0JpbmRVbmlmb3JtKGZhbHNlKQpAQCAtMjg5LDMxICsyODYs
MjcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbGVhc2VSZW5kZXJQYXNzVGV4dHVy
ZXMoKQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZXdwb3J0Q2hhbmdlZCgpCiB7CiAg
ICAgbV9pc1ZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7Ci0KLSAgICAvLyBSZXNldCB0aGUgY3VycmVu
dCBSZW5kZXJQYXNzIHRvIGZvcmNlIGFuIHVwZGF0ZSBvZiB0aGUgdmlld3BvcnQgYW5kCi0gICAg
Ly8gcHJvamVjdGlvbiBtYXRyaXggbmV4dCB0aW1lIHVzZVJlbmRlclBhc3MgaXMgY2FsbGVkLgot
ICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSAwOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgY29u
c3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y2xlYXJGcmFtZWJ1ZmZlcihEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBGbG9h
dFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCkKIHsKICAgICAvLyBPbiBERUJVRyBidWlsZHMs
IG9wYXF1ZSByZW5kZXIgcGFzc2VzIGFyZSBjbGVhcmVkIHRvIGJsdWUgdG8gZWFzaWx5IHNlZSBy
ZWdpb25zIHRoYXQgd2VyZSBub3QgZHJhd24gb24gdGhlIHNjcmVlbi4gSWYgd2UKICAgICAvLyBh
cmUgdXNpbmcgcGFydGlhbCBzd2FwIC8gc2Npc3NvciBvcHRpbWl6YXRpb24sIHRoZW4gdGhlIHN1
cmZhY2Ugc2hvdWxkIG9ubHkKICAgICAvLyBjbGVhciB0aGUgZGFtYWdlZCByZWdpb24sIHNvIHRo
YXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGNsZWFyIHVuLWNoYW5nZWQgcG9ydGlvbnMKICAgICAv
LyBvZiB0aGUgc2NyZWVuLgogCi0gICAgaWYgKHJlbmRlclBhc3MtPmhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZCgpKQorICAgIGlmIChmcmFtZS5jdXJyZW50UmVuZGVyUGFzcy0+aGFzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCkpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXJD
b2xvcigwLCAwLCAwLCAwKSk7CiAgICAgZWxzZQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMSwgMSkpOwogCiAgICAgaWYgKG1fY2FwYWJpbGl0aWVz
LnVzaW5nUGFydGlhbFN3YXApCi0gICAgICAgIHNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50
UmVjdChmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpKTsKKyAgICAgICAgc2V0U2Npc3NvclRvUmVjdChm
cmFtZSwgZW5jbG9zaW5nSW50UmVjdChmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpKTsKICAgICBlbHNl
CiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6U0NJU1NPUl9URVNUKSk7CiAKICNpZiBkZWZpbmVkKE5ERUJVRykKLSAgICBpZiAocmVu
ZGVyUGFzcy0+aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkpCisgICAgaWYgKGZyYW1lLmN1cnJl
bnRSZW5kZXJQYXNzLT5oYXNUcmFuc3BhcmVudEJhY2tncm91bmQoKSkKICNlbmRpZgogICAgICAg
ICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsK
IApAQCAtMzc5LDggKzM3Miw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJh
bWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3CiAgICAgY29uc3Qg
Q0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcyA9IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLmxh
c3QoKTsKICAgICBBU1NFUlQocm9vdFJlbmRlclBhc3MpOwogCi0gICAgbV9kZWZhdWx0UmVuZGVy
UGFzcyA9IHJvb3RSZW5kZXJQYXNzOwotICAgIG1fcmVuZGVyUGFzc2VzQnlJZCA9ICZyZW5kZXJQ
YXNzZXNCeUlkOworICAgIERyYXdpbmdGcmFtZSBmcmFtZTsKKyAgICBmcmFtZS5yZW5kZXJQYXNz
ZXNCeUlkID0gJnJlbmRlclBhc3Nlc0J5SWQ7CisgICAgZnJhbWUucm9vdFJlbmRlclBhc3MgPSBy
b290UmVuZGVyUGFzczsKIAogICAgIGJlZ2luRHJhd2luZ0ZyYW1lKCk7CiAKQEAgLTM4OCwxMyAr
MzgyLDEwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NS
ZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3CiAgICAgICAgIGNvbnN0IENDUmVuZGVy
UGFzcyogcmVuZGVyUGFzcyA9IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldOwogCiAgICAgICAg
IEZsb2F0UmVjdCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlID0gcmVuZGVyUGFzcy0+
dGFyZ2V0U3VyZmFjZSgpLT5jb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShy
b290U2Npc3NvclJlY3QpOwotICAgICAgICBkcmF3UmVuZGVyUGFzcyhyZW5kZXJQYXNzLCByb290
U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKTsKKyAgICAgICAgZHJhd1JlbmRlclBhc3MoZnJh
bWUsIHJlbmRlclBhc3MsIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpOwogICAgIH0K
IAogICAgIGZpbmlzaERyYXdpbmdGcmFtZSgpOwotCi0gICAgbV9kZWZhdWx0UmVuZGVyUGFzcyA9
IDA7Ci0gICAgbV9yZW5kZXJQYXNzZXNCeUlkID0gMDsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKCkKQEAgLTQzMSwxOSArNDIyLDE5IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkb05vT3AoKQogICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+Zmx1c2goKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGNvbnN0IEZsb2F0UmVjdCYg
ZnJhbWVidWZmZXJEYW1hZ2VSZWN0KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdS
ZW5kZXJQYXNzKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVy
UGFzcywgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpCiB7Ci0gICAgaWYg
KCF1c2VSZW5kZXJQYXNzKHJlbmRlclBhc3MpKQorICAgIGlmICghdXNlUmVuZGVyUGFzcyhmcmFt
ZSwgcmVuZGVyUGFzcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNsZWFyUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzLCBmcmFtZWJ1ZmZlckRhbWFnZVJlY3QpOworICAgIGNsZWFyRnJhbWVidWZmZXIo
ZnJhbWUsIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBx
dWFkTGlzdCA9IHJlbmRlclBhc3MtPnF1YWRMaXN0KCk7CiAgICAgZm9yIChDQ1F1YWRMaXN0Ojpj
b25zdEJhY2tUb0Zyb250SXRlcmF0b3IgaXQgPSBxdWFkTGlzdC5iYWNrVG9Gcm9udEJlZ2luKCk7
IGl0ICE9IHF1YWRMaXN0LmJhY2tUb0Zyb250RW5kKCk7ICsraXQpCi0gICAgICAgIGRyYXdRdWFk
KGl0LT5nZXQoKSk7CisgICAgICAgIGRyYXdRdWFkKGZyYW1lLCBpdC0+Z2V0KCkpOwogfQogCi12
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yUXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKiBxdWFk
KQogewogICAgIEludFJlY3Qgc2Npc3NvclJlY3QgPSBxdWFkLT5zY2lzc29yUmVjdCgpOwogCkBA
IC00NTEsNyArNDQyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqIHF1YWQpCiAgICAgaWYgKHNjaXNzb3JSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0U2Npc3NvclRvUmVjdChzY2lz
c29yUmVjdCk7CisgICAgc2V0U2Npc3NvclRvUmVjdChmcmFtZSwgc2Npc3NvclJlY3QpOwogCiAg
ICAgaWYgKHF1YWQtPm5lZWRzQmxlbmRpbmcoKSkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CkBAIC00NjMsMzYgKzQ1
NCwzNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQoY29uc3QgV2ViS2l0
OjpXZWJDb21wb3NpdG9yUXVhZCogcXVhZCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDo6Q2hl
Y2tlcmJvYXJkOgotICAgICAgICBkcmF3Q2hlY2tlcmJvYXJkUXVhZChDQ0NoZWNrZXJib2FyZERy
YXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOworICAgICAgICBkcmF3Q2hlY2tlcmJvYXJkUXVh
ZChmcmFtZSwgQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpEZWJ1Z0Jv
cmRlcjoKLSAgICAgICAgZHJhd0RlYnVnQm9yZGVyUXVhZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6
Om1hdGVyaWFsQ2FzdChxdWFkKSk7CisgICAgICAgIGRyYXdEZWJ1Z0JvcmRlclF1YWQoZnJhbWUs
IENDRGVidWdCb3JkZXJEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpJT1N1cmZhY2VDb250ZW50
OgotICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChDQ0lPU3VyZmFjZURyYXdRdWFkOjptYXRlcmlh
bENhc3QocXVhZCkpOworICAgICAgICBkcmF3SU9TdXJmYWNlUXVhZChmcmFtZSwgQ0NJT1N1cmZh
Y2VEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpSZW5kZXJQYXNzOgotICAgICAgICBkcmF3UmVu
ZGVyUGFzc1F1YWQoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7Cisg
ICAgICAgIGRyYXdSZW5kZXJQYXNzUXVhZChmcmFtZSwgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1h
dGVyaWFsQ2FzdChxdWFkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViS2l0OjpXZWJD
b21wb3NpdG9yUXVhZDo6U29saWRDb2xvcjoKLSAgICAgICAgZHJhd1NvbGlkQ29sb3JRdWFkKFdl
YktpdDo6V2ViQ29tcG9zaXRvclNvbGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwor
ICAgICAgICBkcmF3U29saWRDb2xvclF1YWQoZnJhbWUsIFdlYktpdDo6V2ViQ29tcG9zaXRvclNv
bGlkQ29sb3JRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlN0cmVhbVZpZGVvQ29udGVudDoKLSAgICAg
ICAgZHJhd1N0cmVhbVZpZGVvUXVhZChDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChxdWFkKSk7CisgICAgICAgIGRyYXdTdHJlYW1WaWRlb1F1YWQoZnJhbWUsIENDU3RyZWFtVmlk
ZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOjpUZXh0dXJlQ29udGVudDoKLSAgICAgICAgZHJh
d1RleHR1cmVRdWFkKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjptYXRlcmlhbENh
c3QocXVhZCkpOworICAgICAgICBkcmF3VGV4dHVyZVF1YWQoZnJhbWUsIFdlYktpdDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6OlRpbGVkQ29udGVudDoKLSAgICAg
ICAgZHJhd1RpbGVRdWFkKENDVGlsZURyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZCkpOworICAg
ICAgICBkcmF3VGlsZVF1YWQoZnJhbWUsIENDVGlsZURyYXdRdWFkOjptYXRlcmlhbENhc3QocXVh
ZCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ6
OllVVlZpZGVvQ29udGVudDoKLSAgICAgICAgZHJhd1lVVlZpZGVvUXVhZChDQ1lVVlZpZGVvRHJh
d1F1YWQ6Om1hdGVyaWFsQ2FzdChxdWFkKSk7CisgICAgICAgIGRyYXdZVVZWaWRlb1F1YWQoZnJh
bWUsIENDWVVWVmlkZW9EcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NoZWNrZXJi
b2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJkUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1l
LCBjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IFRpbGVD
aGVja2VyYm9hcmRQcm9ncmFtKiBwcm9ncmFtID0gdGlsZUNoZWNrZXJib2FyZFByb2dyYW0oKTsK
ICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0aWFsaXplZCgpKTsKQEAgLTUxNCwx
MyArNTA1LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2hlY2tlcmJvYXJk
UXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKiBxCiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtMWYocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmVxdWVuY3lM
b2NhdGlvbigpLCBmcmVxdWVuY3kpKTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBxdWFkLT5vcGFj
aXR5KCk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAorICAgIGRyYXdUZXh0
dXJlZFF1YWQoZnJhbWUsIHRpbGVUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICB0aWxl
UmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgRmxvYXRRdWFkKCksCiAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpLAogICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBo
YUxvY2F0aW9uKCksIC0xKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdE
ZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBxdWFkKQordm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlclF1YWQoRHJhd2luZ0ZyYW1lJiBm
cmFtZSwgY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBxdWFkKQogewogICAgIHN0YXRpYyBm
bG9hdCBnbE1hdHJpeFsxNl07CiAgICAgY29uc3QgU29saWRDb2xvclByb2dyYW0qIHByb2dyYW0g
PSBzb2xpZENvbG9yUHJvZ3JhbSgpOwpAQCAtNTMxLDcgKzUyMiw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3
UXVhZCogcXVhCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gcXVh
ZC0+cXVhZFRyYW5zZm9ybSgpOwogICAgIHJlbmRlck1hdHJpeC50cmFuc2xhdGUoMC41ICogbGF5
ZXJSZWN0LndpZHRoKCkgKyBsYXllclJlY3QueCgpLCAwLjUgKiBsYXllclJlY3QuaGVpZ2h0KCkg
KyBsYXllclJlY3QueSgpKTsKICAgICByZW5kZXJNYXRyaXguc2NhbGVOb25Vbmlmb3JtKGxheWVy
UmVjdC53aWR0aCgpLCBsYXllclJlY3QuaGVpZ2h0KCkpOwotICAgIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIHByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRl
ck1hdHJpeCk7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KCZnbE1hdHJp
eFswXSwgZnJhbWUucHJvamVjdGlvbk1hdHJpeCAqIHJlbmRlck1hdHJpeCk7CiAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtTWF0cml4NGZ2KHByb2dyYW0tPnZlcnRleFNoYWRl
cigpLm1hdHJpeExvY2F0aW9uKCksIDEsIGZhbHNlLCAmZ2xNYXRyaXhbMF0pKTsKIAogICAgIFNr
Q29sb3IgY29sb3IgPSBxdWFkLT5jb2xvcigpOwpAQCAtNTYxLDcgKzU1Miw3IEBAIHN0YXRpYyBp
bmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlciwgY29uc3QKICAgICByZXR1cm4gc291cmNlOwogfQogCi1QYXNzT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtKQorUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKERyYXdpbmdGcmFtZSYgZnJhbWUs
IGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250
ZW50c0RldmljZVRyYW5zZm9ybSkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBkcmF3cyBhIGJhY2tn
cm91bmQgZmlsdGVyLCB3aGljaCBhcHBsaWVzIGEgZmlsdGVyIHRvIGFueSBwaXhlbHMgYmVoaW5k
IHRoZSBxdWFkIGFuZCBzZWVuIHRocm91Z2ggaXRzIGJhY2tncm91bmQuCiAgICAgLy8gVGhlIGFs
Z29yaXRobSB3b3JrcyBhcyBmb2xsb3dzOgpAQCAtNTg0LDkgKzU3NSw5IEBAIFBhc3NPd25QdHI8
Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmls
dGVycyhjb25zdCBDCiAKICAgICAvLyBGSVhNRTogV2Ugb25seSBhbGxvdyBiYWNrZ3JvdW5kIGZp
bHRlcnMgb24gYW4gb3BhcXVlIHJlbmRlciBzdXJmYWNlIGJlY2F1c2Ugb3RoZXIgc3VyZmFjZXMg
bWF5IGNvbnRhaW4KICAgICAvLyB0cmFuc2x1Y2VudCBwaXhlbHMsIGFuZCB0aGUgY29udGVudHMg
YmVoaW5kIHRob3NlIHRyYW5zbHVjZW50IHBpeGVscyB3b3VsZG4ndCBoYXZlIHRoZSBmaWx0ZXIg
YXBwbGllZC4KLSAgICBpZiAobV9jdXJyZW50UmVuZGVyUGFzcy0+aGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKCkpCisgICAgaWYgKGZyYW1lLmN1cnJlbnRSZW5kZXJQYXNzLT5oYXNUcmFuc3BhcmVu
dEJhY2tncm91bmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQVNTRVJUKCFtX2N1
cnJlbnRUZXh0dXJlKTsKKyAgICBBU1NFUlQoIWZyYW1lLmN1cnJlbnRUZXh0dXJlKTsKIAogICAg
IC8vIEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQg
cmVwbGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1
cmVzIGFyZSBub3QgcmV1c2VkKS4KICAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNvbnRlbnRzRGV2aWNlVHJhbnNmb3Jt
LCBzaGFyZWRHZW9tZXRyeVF1YWQoKS5ib3VuZGluZ0JveCgpKSk7CkBAIC01OTYsNyArNTg3LDcg
QEAgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEMKICAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10
b3ApOwogICAgIGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsK
IAotICAgIGRldmljZVJlY3QuaW50ZXJzZWN0KG1fY3VycmVudFJlbmRlclBhc3MtPmZyYW1lYnVm
ZmVyT3V0cHV0UmVjdCgpKTsKKyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChmcmFtZS5jdXJyZW50
UmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkpOwogCiAgICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNy
ZWF0ZShtX3Jlc291cmNlUHJvdmlkZXIpOwogICAgIGlmICghZ2V0RnJhbWVidWZmZXJUZXh0dXJl
KGRldmljZUJhY2tncm91bmRUZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkKQEAgLTYxMyw4ICs2
MDQsOCBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogICAgIGlmICghYmFja2dyb3VuZFRleHR1
cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVz
YWdlRnJhbWVidWZmZXIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNvbnN0IEND
UmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IG1fY3VycmVudFJlbmRlclBhc3M7Ci0gICAg
Ym9vbCB1c2luZ0JhY2tncm91bmRUZXh0dXJlID0gdXNlU2NvcGVkVGV4dHVyZShiYWNrZ3JvdW5k
VGV4dHVyZS5nZXQoKSwgcXVhZC0+cXVhZFJlY3QoKSk7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNz
KiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUuY3VycmVudFJlbmRlclBhc3M7CisgICAgYm9vbCB1
c2luZ0JhY2tncm91bmRUZXh0dXJlID0gdXNlU2NvcGVkVGV4dHVyZShmcmFtZSwgYmFja2dyb3Vu
ZFRleHR1cmUuZ2V0KCksIHF1YWQtPnF1YWRSZWN0KCkpOwogCiAgICAgaWYgKHVzaW5nQmFja2dy
b3VuZFRleHR1cmUpIHsKICAgICAgICAgLy8gQ29weSB0aGUgcmVhZGJhY2sgcGl4ZWxzIGZyb20g
ZGV2aWNlIHRvIHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlLgpAQCAtNjI1
LDIzICs2MTYsMjMgQEAgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEMKICAgICAgICAgZGV2aWNlVG9G
cmFtZWJ1ZmZlclRyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC53aWR0aCgpIC8gMi4wLCBk
ZXZpY2VSZWN0LmhlaWdodCgpIC8gMi4wKTsKICAgICAgICAgZGV2aWNlVG9GcmFtZWJ1ZmZlclRy
YW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpKTsKIAotICAg
ICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4
dHVyZUlkLCBkZXZpY2VSZWN0LnNpemUoKSwgZGV2aWNlVG9GcmFtZWJ1ZmZlclRyYW5zZm9ybSk7
CisgICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihmcmFtZSwgZmlsdGVyZWREZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LnNpemUoKSwgZGV2aWNlVG9GcmFtZWJ1ZmZl
clRyYW5zZm9ybSk7CiAgICAgfQogCi0gICAgdXNlUmVuZGVyUGFzcyh0YXJnZXRSZW5kZXJQYXNz
KTsKKyAgICB1c2VSZW5kZXJQYXNzKGZyYW1lLCB0YXJnZXRSZW5kZXJQYXNzKTsKIAogICAgIGlm
ICghdXNpbmdCYWNrZ3JvdW5kVGV4dHVyZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIGJhY2tncm91bmRUZXh0dXJlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQo
RHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiB7
CiAgICAgQ2FjaGVkVGV4dHVyZSogY29udGVudHNUZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVy
ZXMuZ2V0KHF1YWQtPnJlbmRlclBhc3NJZCgpKTsKICAgICBpZiAoIWNvbnRlbnRzVGV4dHVyZSB8
fCAhY29udGVudHNUZXh0dXJlLT5pZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBD
Q1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBtX3JlbmRlclBhc3Nlc0J5SWQtPmdldChxdWFkLT5y
ZW5kZXJQYXNzSWQoKSk7CisgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzID0gZnJh
bWUucmVuZGVyUGFzc2VzQnlJZC0+Z2V0KHF1YWQtPnJlbmRlclBhc3NJZCgpKTsKICAgICBBU1NF
UlQocmVuZGVyUGFzcyk7CiAgICAgaWYgKCFyZW5kZXJQYXNzKQogICAgICAgICByZXR1cm47CkBA
IC02NTAsMTMgKzY0MSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRl
clBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIHJlbmRlck1h
dHJpeC50cmFuc2xhdGUoMC41ICogcXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpICsgcXVhZC0+cXVh
ZFJlY3QoKS54KCksIDAuNSAqIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCkgKyBxdWFkLT5xdWFk
UmVjdCgpLnkoKSk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlTWF0cml4ID0g
cmVuZGVyTWF0cml4OwogICAgIGRldmljZU1hdHJpeC5zY2FsZU5vblVuaWZvcm0ocXVhZC0+cXVh
ZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpKTsKLSAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KHdpbmRvd01hdHJpeCgpICogcHJvamVjdGlvbk1hdHJpeCgpICogZGV2aWNlTWF0
cml4KS50bzJkVHJhbnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVu
dHNEZXZpY2VUcmFuc2Zvcm0gPSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChmcmFtZS53aW5kb3dN
YXRyaXggKiBmcmFtZS5wcm9qZWN0aW9uTWF0cml4ICogZGV2aWNlTWF0cml4KS50bzJkVHJhbnNm
b3JtKCk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBp
cyBpbnZlcnRpYmxlLgogICAgIGlmICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRp
YmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IGJh
Y2tncm91bmRUZXh0dXJlID0gZHJhd0JhY2tncm91bmRGaWx0ZXJzKHF1YWQsIHJlbmRlclBhc3Mt
PmJhY2tncm91bmRGaWx0ZXJzKCksIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKTsKKyAgICBPd25Q
dHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVyZSA9IGRyYXdCYWNrZ3JvdW5kRmls
dGVycyhmcmFtZSwgcXVhZCwgcmVuZGVyUGFzcy0+YmFja2dyb3VuZEZpbHRlcnMoKSwgY29udGVu
dHNEZXZpY2VUcmFuc2Zvcm0pOwogCiAgICAgLy8gRklYTUU6IENhY2hlIHRoaXMgdmFsdWUgc28g
dGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZvciBib3RoIHRoZSBzdXJmYWNlIGFuZCBpdHMg
cmVwbGljYS4KICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgpA
QCAtNjc1LDcgKzY2Niw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
UGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgaWYgKGJhY2tn
cm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+c2l6ZSgp
ID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKICAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQo
KSk7Ci0gICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsb2NrLnRleHR1cmVJZCgpLCBx
dWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcmVuZGVyTWF0cml4KTsKKyAgICAgICAgY29weVRleHR1
cmVUb0ZyYW1lYnVmZmVyKGZyYW1lLCBsb2NrLnRleHR1cmVJZCgpLCBxdWFkLT5xdWFkUmVjdCgp
LnNpemUoKSwgcmVuZGVyTWF0cml4KTsKICAgICB9CiAKICAgICBib29sIGNsaXBwZWQgPSBmYWxz
ZTsKQEAgLTc2MiwxMSArNzUzLDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgRmxv
YXRRdWFkIHN1cmZhY2VRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZChjb250ZW50c0RldmljZVRy
YW5zZm9ybS5pbnZlcnNlKCksIGRldmljZUxheWVyRWRnZXMuZmxvYXRRdWFkKCksIGNsaXBwZWQp
OwogICAgIEFTU0VSVCghY2xpcHBlZCk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFkKHJlbmRlck1h
dHJpeCwgcXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgp
LCBxdWFkLT5vcGFjaXR5KCksIHN1cmZhY2VRdWFkLAorICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJh
bWUsIHJlbmRlck1hdHJpeCwgcXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVj
dCgpLmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIHN1cmZhY2VRdWFkLAogICAgICAgICAgICAg
ICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24sIHNoYWRlckFscGhhTG9jYXRpb24sIHNoYWRl
clF1YWRMb2NhdGlvbik7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29s
aWRDb2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1NvbGlkQ29sb3JRdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUs
IGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IFNvbGlkQ29s
b3JQcm9ncmFtKiBwcm9ncmFtID0gc29saWRDb2xvclByb2dyYW0oKTsKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CkBAIC03ODIs
NyArNzczLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVh
ZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZCkKIAogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+dW5pZm9ybTRmKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuY29sb3JMb2Nh
dGlvbigpLCAoU2tDb2xvckdldFIoY29sb3IpIC8gMjU1LjApICogYWxwaGEsIChTa0NvbG9yR2V0
Ryhjb2xvcikgLyAyNTUuMCkgKiBhbHBoYSwgKFNrQ29sb3JHZXRCKGNvbG9yKSAvIDI1NS4wKSAq
IGFscGhhLCBhbHBoYSkpOwogCi0gICAgZHJhd1RleHR1cmVkUXVhZCh0aWxlVHJhbnNmb3JtLAor
ICAgIGRyYXdUZXh0dXJlZFF1YWQoZnJhbWUsIHRpbGVUcmFuc2Zvcm0sCiAgICAgICAgICAgICAg
ICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgMS4wLCBGbG9hdFF1
YWQoKSwKICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEpOwpAQCAtODEzLDcgKzgw
NCw3IEBAIHN0YXRpYyB2b2lkIHRpbGVVbmlmb3JtTG9jYXRpb24oVCBwcm9ncmFtLCBUaWxlUHJv
Z3JhbVVuaWZvcm1zJiB1bmlmb3JtcykKICAgICB1bmlmb3Jtcy5lZGdlTG9jYXRpb24gPSBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpOwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQor
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChEcmF3aW5nRnJhbWUmIGZy
YW1lLCBjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKIHsKICAgICBjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCA9IHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpOwogCkBAIC04NDksNyArODQwLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3
UXVhZCogcXVhZCkKIAogCiAgICAgRmxvYXRRdWFkIGxvY2FsUXVhZDsKLSAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCh3
aW5kb3dNYXRyaXgoKSAqIHByb2plY3Rpb25NYXRyaXgoKSAqIHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KSkudG8yZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZVRy
YW5zZm9ybSA9IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGZyYW1lLndpbmRvd01hdHJpeCAqIGZy
YW1lLnByb2plY3Rpb25NYXRyaXggKiBxdWFkLT5xdWFkVHJhbnNmb3JtKCkpLnRvMmRUcmFuc2Zv
cm0oKTsKICAgICBpZiAoIWRldmljZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC05NjUsMTAgKzk1NiwxMCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogICAgIC8vIE5vcm1h
bGl6ZSB0byB0aWxlUmVjdC4KICAgICBsb2NhbFF1YWQuc2NhbGUoMS4wZiAvIHRpbGVSZWN0Lndp
ZHRoKCksIDEuMGYgLyB0aWxlUmVjdC5oZWlnaHQoKSk7CiAKLSAgICBkcmF3VGV4dHVyZWRRdWFk
KHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0
KCksIHF1YWQtPm9wYWNpdHkoKSwgbG9jYWxRdWFkLCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbiwg
dW5pZm9ybXMuYWxwaGFMb2NhdGlvbiwgdW5pZm9ybXMucG9pbnRMb2NhdGlvbik7CisgICAgZHJh
d1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZC0+cXVhZFRyYW5zZm9ybSgpLCB0aWxlUmVjdC53aWR0
aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBsb2NhbFF1YWQsIHVuaWZv
cm1zLm1hdHJpeExvY2F0aW9uLCB1bmlmb3Jtcy5hbHBoYUxvY2F0aW9uLCB1bmlmb3Jtcy5wb2lu
dExvY2F0aW9uKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRl
b1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NZ
VVZWaWRlb0RyYXdRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IFZpZGVvWVVWUHJvZ3JhbSogcHJv
Z3JhbSA9IHZpZGVvWVVWUHJvZ3JhbSgpOwogICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0t
PmluaXRpYWxpemVkKCkpOwpAQCAtMTAyNSwxNCArMTAxNiwxNCBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZChjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIHF1
YWQpCiAgICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7CiAgICAgcXVhZFRy
YW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgpICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIuMCwg
cXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0KCkgLyAyLjApOwogCi0gICAgZHJhd1RleHR1
cmVkUXVhZChxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWlnaHQo
KSwgcXVhZC0+b3BhY2l0eSgpLCBGbG9hdFF1YWQoKSwKKyAgICBkcmF3VGV4dHVyZWRRdWFkKGZy
YW1lLCBxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWlnaHQoKSwg
cXVhZC0+b3BhY2l0eSgpLCBGbG9hdFF1YWQoKSwKICAgICAgICAgICAgICAgICAgICAgIHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuYWxwaGFMb2NhdGlvbigpLCAtMSk7CiAKICAgICAvLyBSZXNldCBhY3RpdmUgdGV4dHVy
ZSBiYWNrIHRvIHRleHR1cmUgMC4KICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiB9CiAKLXZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKGNvbnN0IENDU3RyZWFtVmlkZW9E
cmF3UXVhZCogcXVhZCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U3RyZWFtVmlk
ZW9RdWFkKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCog
cXVhZCkKIHsKICAgICBzdGF0aWMgZmxvYXQgZ2xNYXRyaXhbMTZdOwogCkBAIC0xMDUzLDcgKzEw
NDQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1N0cmVhbVZpZGVvUXVhZChj
b25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHF1YQogICAgIEludFJlY3QgcXVhZFJlY3QgPSBx
dWFkLT5xdWFkUmVjdCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0Lngo
KSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0LmhlaWdo
dCgpIC8gMi4wKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZFRyYW5zZm9ybSwgcXVhZFJl
Y3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2Vv
bWV0cnlRdWFkKCksCisgICAgZHJhd1RleHR1cmVkUXVhZChmcmFtZSwgcXVhZFRyYW5zZm9ybSwg
cXVhZFJlY3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVpZ2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hh
cmVkR2VvbWV0cnlRdWFkKCksCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhh
TG9jYXRpb24oKSwgLTEpOwogfQogCkBAIC0xMDgxLDcgKzEwNzIsNyBAQCBzdHJ1Y3QgVGV4VHJh
bnNmb3JtVGV4dHVyZVByb2dyYW1CaW5kaW5nIDogVGV4dHVyZVByb2dyYW1CaW5kaW5nIHsKICAg
ICBpbnQgdGV4VHJhbnNmb3JtTG9jYXRpb247CiB9OwogCi12b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBxdWFkKQordm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZChEcmF3aW5nRnJhbWUmIGZy
YW1lLCBjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCogcXVhZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogCkBAIC0xMTIyLDEzICsxMTEzLDEzIEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQq
IHF1YWQpCiAgICAgSW50UmVjdCBxdWFkUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7CiAgICAgcXVh
ZFRyYW5zZm9ybS50cmFuc2xhdGUocXVhZFJlY3QueCgpICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIu
MCwgcXVhZFJlY3QueSgpICsgcXVhZFJlY3QuaGVpZ2h0KCkgLyAyLjApOwogCi0gICAgZHJhd1Rl
eHR1cmVkUXVhZChxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWln
aHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwgYmluZGluZy5tYXRy
aXhMb2NhdGlvbiwgYmluZGluZy5hbHBoYUxvY2F0aW9uLCAtMSk7CisgICAgZHJhd1RleHR1cmVk
UXVhZChmcmFtZSwgcXVhZFRyYW5zZm9ybSwgcXVhZFJlY3Qud2lkdGgoKSwgcXVhZFJlY3QuaGVp
Z2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIGJpbmRpbmcubWF0
cml4TG9jYXRpb24sIGJpbmRpbmcuYWxwaGFMb2NhdGlvbiwgLTEpOwogCiAgICAgaWYgKCFxdWFk
LT5wcmVtdWx0aXBsaWVkQWxwaGEoKSkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9O
RV9NSU5VU19TUkNfQUxQSEEpKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQpCit2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQoRHJhd2luZ0ZyYW1lJiBmcmFt
ZSwgY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogcXVhZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFRleFRyYW5zZm9ybVRleHR1cmVQcm9ncmFtQmluZGlu
ZyBiaW5kaW5nOwpAQCAtMTE0OCwxNCArMTEzOSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQoY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogcXVhZCkK
ICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKICAgICBxdWFkVHJhbnNm
b3JtLnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgpIC8gMi4wLCBxdWFk
UmVjdC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7CiAKLSAgICBkcmF3VGV4dHVyZWRR
dWFkKHF1YWRUcmFuc2Zvcm0sIHF1YWRSZWN0LndpZHRoKCksIHF1YWRSZWN0LmhlaWdodCgpLCBx
dWFkLT5vcGFjaXR5KCksIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBiaW5kaW5nLm1hdHJpeExvY2F0
aW9uLCBiaW5kaW5nLmFscGhhTG9jYXRpb24sIC0xKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkKGZy
YW1lLCBxdWFkVHJhbnNmb3JtLCBxdWFkUmVjdC53aWR0aCgpLCBxdWFkUmVjdC5oZWlnaHQoKSwg
cXVhZC0+b3BhY2l0eSgpLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwgYmluZGluZy5tYXRyaXhMb2Nh
dGlvbiwgYmluZGluZy5hbHBoYUxvY2F0aW9uLCAtMSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJC
LCAwKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJh
bWUoKQogewotICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigpOwogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29u
dGV4dDNEOjpCTEVORCkpOwogfQpAQCAtMTE4MCw3ICsxMTcwLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb24KICAgICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKIH0KIAotdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdNYXRyaXgsCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1
cmVkUXVhZChEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd01hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0
UXVhZCYgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGludCBxdWFkTG9jYXRpb24p
CiB7CkBAIC0xMTkyLDcgKzExODIsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1RleHR1cmVkUXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhdwogICAgIHJl
bmRlck1hdHJpeC5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDEpOwogCiAgICAgLy8gQXBwbHkgdGhl
IHByb2plY3Rpb24gbWF0cml4IGJlZm9yZSBzZW5kaW5nIHRoZSB0cmFuc2Zvcm0gb3ZlciB0byB0
aGUgc2hhZGVyLgotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBtX3Byb2plY3Rpb25NYXRy
aXggKiByZW5kZXJNYXRyaXgpOworICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBmcmFtZS5w
cm9qZWN0aW9uTWF0cml4ICogcmVuZGVyTWF0cml4KTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihtYXRyaXhMb2NhdGlvbiwgMSwgZmFsc2UsICZnbE1h
dHJpeFswXSkpOwogCkBAIC0xMjE1LDcgKzEyMDUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
dwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29u
dGV4dDNEOjpUUklBTkdMRVMsIDYsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwg
MCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1l
YnVmZmVyKGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKERyYXdpbmdGcmFtZSYgZnJhbWUsIGludCB0ZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdNYXRyaXgpCiB7CiAgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW0qIHByb2dyYW0g
PSByZW5kZXJQYXNzUHJvZ3JhbSgpOwogCkBAIC0xMjI4LDcgKzEyMTgsNyBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGludCB0ZXh0dXJlSWQs
IGNvbnN0IEludFNpegogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
LSAgICBkcmF3VGV4dHVyZWRRdWFkKGRyYXdNYXRyaXgsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMu
aGVpZ2h0KCksIDEsIHNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgIGRyYXdUZXh0dXJlZFF1YWQo
ZnJhbWUsIGRyYXdNYXRyaXgsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIHNo
YXJlZEdlb21ldHJ5UXVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOwpAQCAtMTQw
MCwyMCArMTM5MCwyMCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZm
ZXJUZXh0dXJlKENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29ucwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDdXJyZW50UmVuZGVyUGFzcyhj
b25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aXNDdXJyZW50UmVuZGVyUGFzcyhEcmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1JlbmRl
clBhc3MqIHJlbmRlclBhc3MpCiB7Ci0gICAgcmV0dXJuIG1fY3VycmVudFJlbmRlclBhc3MgPT0g
cmVuZGVyUGFzcyAmJiAhbV9jdXJyZW50VGV4dHVyZTsKKyAgICByZXR1cm4gZnJhbWUuY3VycmVu
dFJlbmRlclBhc3MgPT0gcmVuZGVyUGFzcyAmJiAhZnJhbWUuY3VycmVudFRleHR1cmU7CiB9CiAK
LWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVy
UGFzcyogcmVuZGVyUGFzcykKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQ
YXNzKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykK
IHsKLSAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gcmVuZGVyUGFzczsKLSAgICBtX2N1cnJlbnRU
ZXh0dXJlID0gMDsKKyAgICBmcmFtZS5jdXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7Cisg
ICAgZnJhbWUuY3VycmVudFRleHR1cmUgPSAwOwogCi0gICAgaWYgKHJlbmRlclBhc3MgPT0gbV9k
ZWZhdWx0UmVuZGVyUGFzcykgewotICAgICAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2suY2xl
YXIoKTsKKyAgICBpZiAocmVuZGVyUGFzcyA9PSBmcmFtZS5yb290UmVuZGVyUGFzcykgeworICAg
ICAgICBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrLmNsZWFyKCk7CiAgICAgICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgMCkpOwotICAgICAgICBzZXREcmF3RnJhbWVidWZmZXJSZWN0KHJlbmRlclBh
c3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpLCB0cnVlKTsKKyAgICAgICAgc2V0RHJhd0ZyYW1l
YnVmZmVyUmVjdChmcmFtZSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCksIHRy
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE0MjUsMjUgKzE0MTUsMjYg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5k
ZXJQYXNzKiByZW5kZXJQYXNzKQogICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+
YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5k
ZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcyksIENDUmVzb3VyY2VQ
cm92aWRlcjo6VGV4dHVyZVVzYWdlRnJhbWVidWZmZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1cmUsIHJlbmRlclBh
c3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKGZyYW1lLCB0ZXh0dXJlLCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJl
Y3QoKSk7CiB9CiAKLWJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VTY29wZWRUZXh0dXJl
KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRS
ZWN0KQorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUoRHJhd2lu
Z0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiB2aWV3cG9ydFJlY3QpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwotICAgIG1f
Y3VycmVudFJlbmRlclBhc3MgPSAwOwotICAgIG1fY3VycmVudFRleHR1cmUgPSB0ZXh0dXJlOwor
ICAgIGZyYW1lLmN1cnJlbnRSZW5kZXJQYXNzID0gMDsKKyAgICBmcmFtZS5jdXJyZW50VGV4dHVy
ZSA9IHRleHR1cmU7CiAKLSAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1
cmUsIHZpZXdwb3J0UmVjdCk7CisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShm
cmFtZSwgdGV4dHVyZSwgdmlld3BvcnRSZWN0KTsKIH0KIAotYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIGZyYW1lYnVmZmVyUmVjdCkKK2Jvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoRHJhd2luZ0ZyYW1lJiBmcmFtZSwg
Y29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBmcmFtZWJ1ZmZl
clJlY3QpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKLSAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZl
ckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZShtX3Jlc291
cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50ZXh0dXJlSWQoKSwgMCkpOwor
ICAgIGZyYW1lLmN1cnJlbnRGcmFtZWJ1ZmZlckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRM
b2NrUmVzb3VyY2VGb3JXcml0ZShtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpKTsK
KyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBmcmFtZS5jdXJyZW50RnJhbWVidWZmZXJMb2NrLT50
ZXh0dXJlSWQoKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVy
ZUlkLCAwKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTQ1MiwxNiAr
MTQ0MywxNiBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9U
ZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dAogICAgIH0KICNlbmRpZgogCi0gICAg
c2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChmcmFtZWJ1ZmZlclJlY3QsIGZhbHNlKTsKKyAgICBzZXRE
cmF3RnJhbWVidWZmZXJSZWN0KGZyYW1lLCBmcmFtZWJ1ZmZlclJlY3QsIGZhbHNlKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCiAvLyBTZXRzIHRoZSBzY2lzc29yIHJlZ2lvbiB0byB0aGUgZ2l2
ZW4gcmVjdGFuZ2xlLiBUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gZm9yIHRoZQogLy8gc2Npc3NvclJl
Y3QgaGFzIGl0cyBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCB2
aXNpYmxlIHJlY3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0U2Npc3NvclRvUmVj
dChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIHNj
aXNzb3JSZWN0KQogewotICAgIEludFJlY3QgZnJhbWVidWZmZXJPdXRwdXRSZWN0ID0gKG1fY3Vy
cmVudFJlbmRlclBhc3MgPyBtX2N1cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJl
Y3QoKSA6IG1fZGVmYXVsdFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKKyAg
ICBJbnRSZWN0IGZyYW1lYnVmZmVyT3V0cHV0UmVjdCA9IGZyYW1lLmN1cnJlbnRSZW5kZXJQYXNz
LT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIApAQCAtMTQ3Miw3
ICsxNDYzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3Qo
Y29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiAgICAgLy8gb2YgdGhlIEdMIHNjaXNzb3IgaXMg
dGhlIGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBpZiByZW5kZXJpbmcgdG8gb2Zm
c2NyZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9mICd1cHNpZGUgZG93bicuCiAg
ICAgaW50IHNjaXNzb3JZOwotICAgIGlmIChpc0N1cnJlbnRSZW5kZXJQYXNzKG1fZGVmYXVsdFJl
bmRlclBhc3MpKQorICAgIGlmIChpc0N1cnJlbnRSZW5kZXJQYXNzKGZyYW1lLCBmcmFtZS5yb290
UmVuZGVyUGFzcykpCiAgICAgICAgIHNjaXNzb3JZID0gZnJhbWVidWZmZXJPdXRwdXRSZWN0Lmhl
aWdodCgpIC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIGZyYW1lYnVmZmVyT3V0cHV0UmVjdC55KCkp
OwogICAgIGVsc2UKICAgICAgICAgc2Npc3NvclkgPSBzY2lzc29yUmVjdC55KCkgLSBmcmFtZWJ1
ZmZlck91dHB1dFJlY3QueSgpOwpAQCAtMTQ4NywxNCArMTQ3OCwxNCBAQCBib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIC8vIFNldHMgdGhlIGNvb3JkaW5h
dGUgcmFuZ2Ugb2YgY29udGVudCB0aGF0IGVuZHMgYmVpbmcgZHJhd24gb250byB0aGUgdGFyZ2V0
IHJlbmRlciBzdXJmYWNlLgogLy8gVGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZSBpcyBhc3N1bWVk
IHRvIGhhdmUgYW4gb3JpZ2luIGF0IDAsIDAgYW5kIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mCiAv
LyBvZiB0aGUgZHJhd1JlY3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0RHJhd0Zy
YW1lYnVmZmVyUmVjdChjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSkKK3ZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXREcmF3RnJhbWVidWZmZXJSZWN0KERyYXdpbmdGcmFt
ZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGRyYXdSZWN0LCBib29sIGZsaXBZKQogewogICAgIGlm
IChmbGlwWSkKLSAgICAgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1Jl
Y3QueCgpLCBkcmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0Lm1heFkoKSwgZHJhd1JlY3QueSgpKTsK
KyAgICAgICAgZnJhbWUucHJvamVjdGlvbk1hdHJpeCA9IG9ydGhvTWF0cml4KGRyYXdSZWN0Lngo
KSwgZHJhd1JlY3QubWF4WCgpLCBkcmF3UmVjdC5tYXhZKCksIGRyYXdSZWN0LnkoKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3Byb2plY3Rpb25NYXRyaXggPSBvcnRob01hdHJpeChkcmF3UmVjdC54
KCksIGRyYXdSZWN0Lm1heFgoKSwgZHJhd1JlY3QueSgpLCBkcmF3UmVjdC5tYXhZKCkpOworICAg
ICAgICBmcmFtZS5wcm9qZWN0aW9uTWF0cml4ID0gb3J0aG9NYXRyaXgoZHJhd1JlY3QueCgpLCBk
cmF3UmVjdC5tYXhYKCksIGRyYXdSZWN0LnkoKSwgZHJhd1JlY3QubWF4WSgpKTsKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGRyYXdSZWN0LndpZHRoKCksIGRy
YXdSZWN0LmhlaWdodCgpKSk7Ci0gICAgbV93aW5kb3dNYXRyaXggPSBzY3JlZW5NYXRyaXgoMCwg
MCwgZHJhd1JlY3Qud2lkdGgoKSwgZHJhd1JlY3QuaGVpZ2h0KCkpOworICAgIGZyYW1lLndpbmRv
d01hdHJpeCA9IHNjcmVlbk1hdHJpeCgwLCAwLCBkcmF3UmVjdC53aWR0aCgpLCBkcmF3UmVjdC5o
ZWlnaHQoKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA4
ZjU5ZDRlOWFmMjg3ZTNjN2QzMzdlYWRhNWJkNzM1ZmVhYTM2MTAwLi44MDcxMGMxZWYzN2ExMDNj
YTYxMTNlZjk0NGNhMGZjYzdlZWU1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaApAQCAtMTAzLDEwICsxMDMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlzaWJsZShib29sKSBPVkVSUklERTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllck1hdHJpeCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgRmxvYXRRdWFkJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJp
eExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2NhdGlvbik7Ci0gICAgdm9p
ZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4
KTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlUHJvdmlkZXI7IH0KIAogcHJvdGVjdGVkOgpAQCAtMTE5LDM2ICsxMTUs
NTggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVsZWFzZVJlbmRlclBhc3NUZXh0dXJlcygpOwog
CiBwcml2YXRlOgorICAgIHN0cnVjdCBEcmF3aW5nRnJhbWUgeworICAgICAgICBjb25zdCBDQ1Jl
bmRlclBhc3NJZEhhc2hNYXAqIHJlbmRlclBhc3Nlc0J5SWQ7CisgICAgICAgIGNvbnN0IENDUmVu
ZGVyUGFzcyogcm9vdFJlbmRlclBhc3M7CisgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogY3Vy
cmVudFJlbmRlclBhc3M7CisgICAgICAgIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogY3VycmVudFRl
eHR1cmU7CisgICAgICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlPiBjdXJy
ZW50RnJhbWVidWZmZXJMb2NrOworCisgICAgICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggcHJvamVjdGlvbk1hdHJpeDsKKyAgICAgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB3aW5kb3dNYXRyaXg7CisKKyAgICAgICAgRHJhd2luZ0ZyYW1lKCkKKyAgICAgICAg
ICAgIDogcm9vdFJlbmRlclBhc3MoMCkKKyAgICAgICAgICAgICwgY3VycmVudFJlbmRlclBhc3Mo
MCkKKyAgICAgICAgICAgICwgY3VycmVudFRleHR1cmUoMCkKKyAgICAgICAgeyB9CisgICAgfTsK
KwogICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKICAgICB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKCk7Ci0g
ICAgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJl
Y3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CisgICAgdm9pZCBkcmF3UmVuZGVyUGFzcyhEcmF3
aW5nRnJhbWUmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lYnVm
ZmVyRGFtYWdlUmVjdCk7CiAgICAgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKIAotICAgIHZv
aWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0NoZWNrZXJib2Fy
ZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0RlYnVn
Qm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKLSAgICBQYXNzT3duUHRy
PENDU2NvcGVkVGV4dHVyZT4gZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyUGFz
c0RyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsKLSAgICB2b2lk
IGRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCopOwotICAgIHZv
aWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7Ci0gICAg
dm9pZCBkcmF3U3RyZWFtVmlkZW9RdWFkKGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCopOwot
ICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKik7Ci0gICAg
dm9pZCBkcmF3SU9TdXJmYWNlUXVhZChjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKik7Ci0gICAg
dm9pZCBkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqKTsKLSAgICB2b2lkIGRyYXdZ
VVZWaWRlb1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3UXVh
ZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3Q2hlY2tl
cmJvYXJkUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7
CisgICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDRGVi
dWdCb3JkZXJEcmF3UXVhZCopOworICAgIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBkcmF3
QmFja2dyb3VuZEZpbHRlcnMoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1
YWQqLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pOworICAgIHZvaWQgZHJhd1Jl
bmRlclBhc3NRdWFkKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKik7
CisgICAgdm9pZCBkcmF3U29saWRDb2xvclF1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NTb2xp
ZENvbG9yRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdTdHJlYW1WaWRlb1F1YWQoRHJhd2luZ0Zy
YW1lJiwgY29uc3QgQ0NTdHJlYW1WaWRlb0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3VGV4dHVy
ZVF1YWQoRHJhd2luZ0ZyYW1lJiwgY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqKTsKKyAgICB2b2lk
IGRyYXdJT1N1cmZhY2VRdWFkKERyYXdpbmdGcmFtZSYsIGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1
YWQqKTsKKyAgICB2b2lkIGRyYXdUaWxlUXVhZChEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1RpbGVE
cmF3UXVhZCopOworICAgIHZvaWQgZHJhd1lVVlZpZGVvUXVhZChEcmF3aW5nRnJhbWUmLCBjb25z
dCBDQ1lVVlZpZGVvRHJhd1F1YWQqKTsKKworICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChEcmF3
aW5nRnJhbWUmLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllck1h
dHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRRdWFkJiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwgaW50IHF1YWRMb2Nh
dGlvbik7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoRHJhd2luZ0ZyYW1lJiwg
aW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKIAotICAgIHZvaWQgc2V0U2Npc3NvclRv
UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBzZXRTY2lzc29yVG9SZWN0KERyYXdpbmdG
cmFtZSYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZvaWQgc2V0RHJhd0ZyYW1lYnVmZmVyUmVj
dChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CisgICAgdm9pZCBzZXREcmF3RnJhbWVidWZm
ZXJSZWN0KERyYXdpbmdGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBib29sIGZsaXBZKTsKIAogICAg
IC8vIFRoZSBjdXJyZW50IGRyYXdpbmcgdGFyZ2V0IGlzIGVpdGhlciBhIFJlbmRlclBhc3Mgb3Ig
U2NvcGVkVGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJh
d2luZyB0YXJnZXQuCi0gICAgYm9vbCB1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyop
OwotICAgIGJvb2wgdXNlU2NvcGVkVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOwotICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyUGFzcyhj
b25zdCBDQ1JlbmRlclBhc3MqKTsKKyAgICBib29sIHVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1l
JiwgY29uc3QgQ0NSZW5kZXJQYXNzKik7CisgICAgYm9vbCB1c2VTY29wZWRUZXh0dXJlKERyYXdp
bmdGcmFtZSYsIGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0
UmVjdCk7CisgICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJQYXNzKERyYXdpbmdGcmFtZSYsIGNvbnN0
IENDUmVuZGVyUGFzcyopOwogCi0gICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29u
c3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKKyAgICBi
b29sIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShEcmF3aW5nRnJhbWUmLCBjb25zdCBDQ1Njb3Bl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOwogCi0gICAgdm9pZCBjbGVh
clJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiwgY29uc3QgRmxvYXRSZWN0JiBmcmFtZWJ1
ZmZlckRhbWFnZVJlY3QpOworICAgIHZvaWQgY2xlYXJGcmFtZWJ1ZmZlcihEcmF3aW5nRnJhbWUm
LCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CiAKICAgICBib29sIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0xNzIsOSArMTkwLDYgQEAgcHJpdmF0ZToKIAogICAg
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMgbV9jYXBhYmlsaXRpZXM7CiAKLSAgICBjb25zdCBD
Q1JlbmRlclBhc3MqIG1fY3VycmVudFJlbmRlclBhc3M7Ci0gICAgY29uc3QgQ0NTY29wZWRUZXh0
dXJlKiBtX2N1cnJlbnRUZXh0dXJlOwotICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
cldyaXRlPiBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2s7CiAgICAgdW5zaWduZWQgbV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkOwogCiAgICAgT3duUHRyPEdlb21ldHJ5QmluZGluZz4gbV9zaGFyZWRH
ZW9tZXRyeTsKQEAgLTI2Myw5ICsyNzgsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogCi0gICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBt
X2RlZmF1bHRSZW5kZXJQYXNzOwotICAgIGNvbnN0IENDUmVuZGVyUGFzc0lkSGFzaE1hcCogbV9y
ZW5kZXJQYXNzZXNCeUlkOwotCiAgICAgYm9vbCBtX2lzVmlld3BvcnRDaGFuZ2VkOwogICAgIGJv
b2wgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkOwogICAgIGJvb2wgbV9pc1VzaW5nQmluZFVuaWZv
cm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggNTFiODk0MjFkYjVmMzNmYTM2YTk4ZThiYzAwN2Qx
NWYwNWNiYmU1MC4uOTA4MDU2NGMwYjUxMzY2MjNiYjFjYWQyMmQ3ZjU2OGI0MjU4MTVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyZXIuaApAQCAtNzQsOSArNzQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgdmlld3BvcnRDaGFuZ2VkKCkgeyB9CiAKLSAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9wcm9q
ZWN0aW9uTWF0cml4OyB9Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgd2luZG93TWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dNYXRyaXg7IH0KLQogICAg
IHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBD
Q1JlbmRlclBhc3NMaXN0JikgeyB9CiAgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJj
ZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0xMDUs
OCArMTAyLDYgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIENDUmVuZGVyZXJDbGllbnQqIG1f
Y2xpZW50OwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9wcm9qZWN0aW9u
TWF0cml4OwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRy
aXg7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>