<?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>137661</bug_id>
          
          <creation_ts>2014-10-13 10:54:07 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for PlatformCALayer subclasses</short_desc>
          <delta_ts>2014-10-13 13:59:39 -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>Platform</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>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041307</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 10:54:07 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for PlatformCALayer subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041309</commentid>
    <comment_count>1</comment_count>
      <attachid>239734</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-13 11:09:21 -0700</bug_when>
    <thetext>Created attachment 239734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041345</commentid>
    <comment_count>2</comment_count>
      <attachid>239734</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-13 13:59:34 -0700</bug_when>
    <thetext>Comment on attachment 239734
Patch

Clearing flags on attachment: 239734

Committed r174657: &lt;http://trac.webkit.org/changeset/174657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041346</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-13 13:59:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239734</attachid>
            <date>2014-10-13 11:09:21 -0700</date>
            <delta_ts>2014-10-13 13:59:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137661-20141013110925.patch</filename>
            <type>text/plain</type>
            <size>37500</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYjYzYjdlYThkMGI4
YjMyODE0NGEzZTY5MTdmYzY4ZjFkZjU4OS4uOTU1MTBjZDM4NzRhNWI4OTZjMzIxNWVhOTAyMjhi
ZGIzMzQzMTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTEwLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUGxhdGZvcm1DQUxheWVyIHN1YmNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBpczw+KCkgLyBkb3duY2FzdDw+KCkg
Zm9yIFBsYXRmb3JtQ0FMYXllciBzdWJjbGFzc2VzIGFuZCBjbGVhbiB1cAorICAgICAgICB0aGUg
c3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRz
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVSZXBsaWNh
dGVkTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c3dhcEZyb21P
clRvVGlsZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmZldGNo
Q2xvbmVMYXllcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3Zl
cmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ292ZXJhZ2VNYXA6OlRpbGVDb3Zl
cmFnZU1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUdyaWQ6OmVuc3VyZVRpbGVzRm9yUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNsb25lKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXll
ck1hYzo6YXBwZW5kU3VibGF5ZXIpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjppbnNl
cnRTdWJsYXllcik6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OnJlcGxhY2VTdWJsYXll
cik6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OmFkb3B0U3VibGF5ZXJzKToKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllck1hYzo6Y29weUZpbHRlcnNGcm9tKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcldpbjo6Y2xvbmUpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2lu
Ojpyb290TGF5ZXIpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjphcHBlbmRTdWJsYXll
cik6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJXaW46Omluc2VydFN1YmxheWVyKToKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6cmVwbGFjZVN1YmxheWVyKToKKyAgICAgICAgKFBsYXRm
b3JtQ0FMYXllcldpbjo6YWRvcHRTdWJsYXllcnMpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
V2luOjpjb3B5RmlsdGVyc0Zyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWw6Omluc2VydFN1YmxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaDoKKwogMjAxNC0xMC0xMyAg
TWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9u
c10gTWFrZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6Y29tcHV0ZVN0eWxlSW5SZWdpb24gY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCAyNWVhOWU5Mjc0ZDg1OTcwNDA4MDYxZjYzNzNiNzA1ZTA0
YzQ0NTY5Li41NTQzMTRlYjRhOTk2ZDE4Y2Y5ZDQxMTM5ZmJlZWVhNGFkM2RkNzhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBQ
bGF0Zm9ybUNBTGF5ZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUGxhdGZvcm1D
QUxheWVyIHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIAorICAgICAgICB0aGUgc3Vycm91bmRpbmcg
Y29kZS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKwogMjAxNC0x
MC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBpczw+
KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYWJmMjgx
Y2FmOWMwNjNlYTE5ZWU0YzZjMWQyODliZTEyMGNkYmNjLi4xYmY4MmU5Y2I5NDY1ZjczYTdkNDIz
OWY5NDkzZWJiZjI3NmYwODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMTAt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgaXM8Pigp
IC8gZG93bmNhc3Q8PigpIGZvciBQbGF0Zm9ybUNBTGF5ZXIgc3ViY2xhc3NlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NjYxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUGxhdGZvcm1DQUxheWVyIHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIAorICAg
ICAgICB0aGUgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlOjp+UGxhdGZvcm1DQUxheWVyUmVtb3RlKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVDbG9uZWRMYXllclByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1
YmxheWVycyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YXBwZW5k
U3VibGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omluc2Vy
dFN1YmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZXBs
YWNlU3VibGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFk
b3B0U3VibGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb3B5Rmls
dGVyc0Zyb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUNvbnRleHQ6OmJ1aWxkVHJhbnNhY3Rpb24pOgorCiAyMDE0LTEwLTEyICBTZXJnaW8gVmlsbGFy
IFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBbV0syXSBXZWJQ
cm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcyBpbml0aWFsaXphdGlvbiBjbGVhcnMgY2FjaGUgY29u
dGVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDU0NjU5NzMwNGFiZDhkYzVhYzI3ZGMyZjNiNDc0OTFi
ZDRjMjcxNjQuLjk2MDI2MGYwYzExNTE2NDM1MTI0MjRmMDhmNWQyMzZjYmRjYzA4ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcApAQCAtMTY4MCw3ICsxNjgwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVu
c3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCiAgICAg
ICAgICAgICAvLyBJZiBtX2xheWVyIGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCwgaXQgbWVhbnMgaXQn
cyB0aGUgcm9vdCBsYXllciBhbmQKICAgICAgICAgICAgIC8vIGlzIGxpa2VseSBob3N0ZWQgYnkg
c29tZXRoaW5nIHRoYXQgaXMgbm90IGV4cGVjdGluZyB0byBiZSBjaGFuZ2VkCiAgICAgICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmFsTGF5ZXItPnN1cGVybGF5ZXIoKSk7Ci0gICAgICAgICAgICBt
X3N0cnVjdHVyYWxMYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIobV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKCptX3N0cnVjdHVyYWxMYXllciwg
Km1fbGF5ZXIpOwogCiAgICAgICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9ucyhNb3ZlLCBtX3N0
cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CiAKQEAgLTE5NTMsNyArMTk1Myw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1JlY3RzKCkKICAgICAgICAg
ICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXROYW1lKCJDb250ZW50cyBDbGlwcGluZyIp
OwogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92ZUZyb21TdXBlcmxh
eWVyKCk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+YXBwZW5kU3VibGF5
ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGlu
Z0xheWVyLT5hcHBlbmRTdWJsYXllcigqbV9jb250ZW50c0xheWVyKTsKICAgICAgICAgICAgIGdh
aW5lZE9yTG9zdENsaXBwaW5nTGF5ZXIgPSB0cnVlOwogICAgICAgICB9CiAgICAgCkBAIC0yMDMw
LDkgKzIwMzAsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlUmVwbGljYXRlZExheWVy
cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKLSAgICAg
ICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAw
KTsKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1YmxheWVyKCpyZXBsaWNhUm9v
dCwgMCk7CiAgICAgZWxzZQotICAgICAgICBtX2xheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNh
Um9vdC5nZXQoKSwgMCk7CisgICAgICAgIG1fbGF5ZXItPmluc2VydFN1YmxheWVyKCpyZXBsaWNh
Um9vdCwgMCk7CiB9CiAKIC8vIEZvciBub3csIHRoaXMgYXNzdW1lcyB0aGF0IGxheWVycyBvbmx5
IGV2ZXIgaGF2ZSBvbmUgcmVwbGljYSwgc28gcmVwbGljYUluZGljZXMgY29udGFpbnMgb25seSAw
IGFuZCAxLgpAQCAtMjk2OSwxMSArMjk2OSwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3dh
cEZyb21PclRvVGlsZWRMYXllcihib29sIHVzZVRpbGVkTGF5ZXIpCiAKICAgICBtX3VzaW5nVGls
ZWRCYWNraW5nID0gdXNlVGlsZWRMYXllcjsKICAgICAKLSAgICBtX2xheWVyLT5hZG9wdFN1Ymxh
eWVycyhvbGRMYXllci5nZXQoKSk7CisgICAgbV9sYXllci0+YWRvcHRTdWJsYXllcnMoKm9sZExh
eWVyKTsKIAogI2lmZGVmIFZJU0lCTEVfVElMRV9XQVNICiAgICAgaWYgKG1fdmlzaWJsZVRpbGVX
YXNoTGF5ZXIpCi0gICAgICAgIG1fbGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fdmlzaWJsZVRpbGVX
YXNoTGF5ZXIuZ2V0KCkpOworICAgICAgICBtX2xheWVyLT5hcHBlbmRTdWJsYXllcigqbV92aXNp
YmxlVGlsZVdhc2hMYXllcjsKICNlbmRpZgogCiAgICAgaWYgKGlzTWFza0xheWVyKCkpIHsKQEAg
LTI5ODUsNyArMjk4NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxl
ZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcikKICAgICAgICAgLy8gU2tpcCB0aGlzIHN0ZXAgaWYg
d2UgZG9uJ3QgaGF2ZSBhIHN1cGVybGF5ZXIuIFRoaXMgaXMgcHJvYmFibHkgYSBiZW5pZ24KICAg
ICAgICAgLy8gY2FzZSB0aGF0IGhhcHBlbnMgd2hpbGUgcmVzdHJ1Y3R1cmluZyB0aGUgbGF5ZXIg
dHJlZSwgYW5kIGFsc28gb2NjdXJzIHdpdGgKICAgICAgICAgLy8gV2ViS2l0MiBwYWdlIG92ZXJs
YXlzLCB3aGljaCBjYW4gYmVjb21lIHRpbGVkIGJ1dCBhcmUgb3V0LW9mLXRyZWUuCi0gICAgICAg
IG9sZExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihvbGRMYXllci5nZXQoKSwg
bV9sYXllci5nZXQoKSk7CisgICAgICAgIG9sZExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VT
dWJsYXllcigqb2xkTGF5ZXIsICptX2xheWVyKTsKICAgICB9CiAKICAgICBtX3VuY29tbWl0dGVk
Q2hhbmdlcyB8PSBDaGlsZHJlbkNoYW5nZWQKQEAgLTMxNDksMTEgKzMxNDksMTEgQEAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhH
cmFwaGljc0xheWVyKiByZXAKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllci0+aW5z
ZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgICAgICAgICAgc3RydWN0dXJh
bExheWVyLT5pbnNlcnRTdWJsYXllcigqcmVwbGljYVJvb3QsIDApOwogICAgICAgICAgICAgcmV0
dXJuIHN0cnVjdHVyYWxMYXllcjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcHJpbWFy
eUxheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7CisgICAgICAgIHBy
aW1hcnlMYXllci0+aW5zZXJ0U3VibGF5ZXIoKnJlcGxpY2FSb290LCAwKTsKICAgICAgICAgcmV0
dXJuIHByaW1hcnlMYXllcjsKICAgICB9CiAKQEAgLTMxNzEsNyArMzE3MSw3IEBAIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3Jh
cGhpY3NMYXllciogcmVwCiAKICAgICBpZiAoY29udGVudHNDbGlwcGluZ0xheWVyKSB7CiAgICAg
ICAgIEFTU0VSVChjb250ZW50c0xheWVyKTsKLSAgICAgICAgY29udGVudHNDbGlwcGluZ0xheWVy
LT5hcHBlbmRTdWJsYXllcihjb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgY29udGVudHND
bGlwcGluZ0xheWVyLT5hcHBlbmRTdWJsYXllcigqY29udGVudHNMYXllcik7CiAgICAgfQogICAg
IAogICAgIGlmIChyZXBsaWNhTGF5ZXIgfHwgc3RydWN0dXJhbExheWVyIHx8IGNvbnRlbnRzTGF5
ZXIgfHwgY29udGVudHNDbGlwcGluZ0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsK
QEAgLTMyMTYsNyArMzIxNiw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAgICAgICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXll
ciBpcyBwYXJlbnRlZCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGlj
aCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KICAgICAgICAgICAg
IHByaW1hcnlMYXllci0+cmVtb3ZlQWxsU3VibGF5ZXJzKCk7Ci0gICAgICAgICAgICBwcmltYXJ5
TGF5ZXItPmFwcGVuZFN1YmxheWVyKGNvbnRlbnRzQ2xpcHBpbmdMYXllciA/IGNvbnRlbnRzQ2xp
cHBpbmdMYXllci5nZXQoKSA6IGNvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgcHJp
bWFyeUxheWVyLT5hcHBlbmRTdWJsYXllcihjb250ZW50c0NsaXBwaW5nTGF5ZXIgPyAqY29udGVu
dHNDbGlwcGluZ0xheWVyIDogKmNvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
cmVzdWx0ID0gc3RydWN0dXJhbExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCAzMTBlOTAxNjE2N2M4NDk4
NTYwNGE4MGYyNzNkZWYxYWMxOGY2OTIwLi43MGFhMzEwMzNhNTEyYTk2YjYwMzBjYjBkOTQ0ODBj
OWU2ODM4ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTUsMTYgKzExNiwxNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQWxsU3VibGF5ZXJzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRT
dWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciosIHNpemVfdCBpbmRleCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRmb3Jt
Q0FMYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1D
QUxheWVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNB
TGF5ZXImLCBzaXplX3QgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVN1Ymxh
eWVyKFBsYXRmb3JtQ0FMYXllciYgcmVmZXJlbmNlLCBQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CiAK
ICAgICAvLyBBIGxpc3Qgb2Ygc3VibGF5ZXJzIHRoYXQgR3JhcGhpY3NMYXllckNBIHNob3VsZCBt
YWludGFpbiBhcyB0aGUgZmlyc3Qgc3VibGF5ZXJzLgogICAgIHZpcnR1YWwgY29uc3QgUGxhdGZv
cm1DQUxheWVyTGlzdCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3QgPSAwOwogCiAgICAgLy8gVGhp
cyBtZXRob2QgcmVtb3ZlcyB0aGUgc3VibGF5ZXJzIGZyb20gdGhlIHNvdXJjZSBhbmQgcmVwYXJl
bnRzIHRoZW0gdG8gdGhlIGN1cnJlbnQgbGF5ZXIuCiAgICAgLy8gQW55IHN1YmxheWVycyBwcmV2
aW91c2x5IGluIHRoZSBjdXJyZW50IGxheWVyIGFyZSByZW1vdmVkLgotICAgIHZpcnR1YWwgdm9p
ZCBhZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxh
dGZvcm1DQUFuaW1hdGlvbiopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSA9IDA7CkBAIC0xODIsNyArMTgzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhY2l0eShmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGaWx0ZXJz
RnJvbShjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlG
aWx0ZXJzRnJvbShjb25zdCBQbGF0Zm9ybUNBTGF5ZXImKSA9IDA7CiAKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKSA9
IDA7CkBAIC0yNTksOSArMjYwLDExIEBAIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG1fb3duZXI7CiB9OwogCi0jZGVmaW5lIFBMQVRGT1JNX0NBTEFZRVJfVFlQRV9DQVNU
UyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotICAgIFRZUEVfQ0FTVFNfQkFTRShUb1Zh
bHVlVHlwZU5hbWUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciwgb2JqZWN0LCBvYmplY3QtPnBy
ZWRpY2F0ZSwgb2JqZWN0LnByZWRpY2F0ZSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUExBVEZPUk1fQ0FMQVlFUihUb1ZhbHVlVHlw
ZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVl
VHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyJiBsYXllcikgeyByZXR1cm4gbGF5ZXIucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIFBsYXRmb3JtQ0FMYXllcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdl
TWFwLmNwcAppbmRleCBkY2UxNWU2NjZiZTkwNGUwMGM2YjdiMWI2M2U5OTM1YzVmZWJlYjhlLi45
MjZhYTVjNzViYzQxYjU2MjM4MzdmMWY2OGJkM2YzMzRjN2U5MTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgVGlsZUNvdmVyYWdlTWFwOjpUaWxlQ292ZXJhZ2VNYXAoY29uc3Qg
VGlsZUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxh
eWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBtX3Zpc2libGVS
ZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7
CiAKLSAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1YmxheWVyKCZtX3Zpc2libGVSZWN0SW5kaWNh
dG9yTGF5ZXIuZ2V0KCkpOworICAgIG1fbGF5ZXIuZ2V0KCkuYXBwZW5kU3VibGF5ZXIobV92aXNp
YmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpKTsKIAogICAgIHVwZGF0ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCmluZGV4IDQ0
ZDE0NGViYjQzZWJiMzcyZDU4ZWU0MGUxNmIyNzE4YWQzZGVlN2EuLmY1NGZmMDRiMGFlYWZlZjNh
YTIyZWZmNzI0OWQzOWQ5MzU0ODRhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCBJbnRSZWN0IFRp
bGVHcmlkOjplbnN1cmVUaWxlc0ZvclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBDb3ZlcmFn
ZVR5cGUgbmV3VGlsZQogICAgICAgICAgICAgYm9vbCBzaG91bGRQYXJlbnRUaWxlTGF5ZXIgPSAo
IW1fY29udHJvbGxlci51bnBhcmVudHNPZmZzY3JlZW5UaWxlcygpIHx8IG1fY29udHJvbGxlci5p
c0luV2luZG93KCkpICYmICF0aWxlSW5mby5sYXllci0+c3VwZXJsYXllcigpOwogCiAgICAgICAg
ICAgICBpZiAoc2hvdWxkUGFyZW50VGlsZUxheWVyKQotICAgICAgICAgICAgICAgIG1fY29udGFp
bmVyTGF5ZXIuZ2V0KCkuYXBwZW5kU3VibGF5ZXIodGlsZUluZm8ubGF5ZXIuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIG1fY29udGFpbmVyTGF5ZXIuZ2V0KCkuYXBwZW5kU3VibGF5ZXIoKnRpbGVJ
bmZvLmxheWVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
aAppbmRleCA2NTRlYjQ4NTI4NTgxOTgzNjBmNDg5ZDg0NGMxNDliYjlhMzM0MjBkLi45ODZhOTAx
NTVmZmZiYTM0YmMyOTAzZGFjZmVjYmZkOTM1NWNhNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1h
Yy5oCkBAIC01NSwxMSArNTUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVG
cm9tU3VwZXJsYXllcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdWJsYXllcnMo
Y29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBbGxTdWJsYXllcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kU3Vi
bGF5ZXIoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2Vy
dFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciosIHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwg
UGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFN1Ymxh
eWVyKFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRT
dWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImLCBzaXplX3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCByZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiByZWZlcmVuY2UsIFBs
YXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgUGxhdGZvcm1DQUxh
eWVyTGlzdCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0
b21TdWJsYXllcnMuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRvcHRTdWJsYXllcnMoUGxh
dGZvcm1DQUxheWVyKiBzb3VyY2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZG9wdFN1
YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktl
eShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGaWx0ZXJzRnJvbShj
b25zdCBQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weUZp
bHRlcnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxF
KENTU19DT01QT1NJVElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9k
ZSkgb3ZlcnJpZGU7CkBAIC0xNjYsOCArMTY2LDggQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xh
eWVyOjpDdXN0b21CZWhhdmlvciBtX2N1c3RvbUJlaGF2aW9yOwogfTsKIAotUExBVEZPUk1fQ0FM
QVlFUl9UWVBFX0NBU1RTKFBsYXRmb3JtQ0FMYXllck1hYywgaXNQbGF0Zm9ybUNBTGF5ZXJNYWMo
KSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1BM
QVRGT1JNX0NBTEFZRVIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyTWFjLCBpc1BsYXRmb3JtQ0FM
YXllck1hYygpKQorCiAjZW5kaWYgLy8gUGxhdGZvcm1DQUxheWVyTWFjX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUxheWVyTWFjLm1tCmluZGV4IGFhZGM2MTFkMmY5ZjMyNzI4MjViNGIwZThhNTA0YTM0Mjg5Yzhm
OTAuLjk1ZGYzZWU1MjljOWQxYTc5MWQ5NGE5MzUwY2IwZjI3MTQ4MjE0ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FMYXllck1hYy5tbQpAQCAtMzIwLDcgKzMyMCw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duCiAgICAgbmV3TGF5ZXItPnNldE9wYXF1ZShpc09wYXF1ZSgpKTsKICAgICBuZXdMYXllci0+
c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcigpKTsKICAgICBuZXdMYXllci0+c2V0
Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOwotICAgIG5ld0xheWVyLT5jb3B5RmlsdGVy
c0Zyb20odGhpcyk7CisgICAgbmV3TGF5ZXItPmNvcHlGaWx0ZXJzRnJvbSgqdGhpcyk7CiAgICAg
bmV3TGF5ZXItPnVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoY3VzdG9tQXBwZWFyYW5jZSgpKTsKIAog
ICAgIGlmICh0eXBlID09IExheWVyVHlwZUFWUGxheWVyTGF5ZXIpIHsKQEAgLTQyMiwzNCArNDIy
LDM0IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjpyZW1vdmVBbGxTdWJsYXllcnMoKQogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6
OmFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit2b2lkIFBsYXRmb3JtQ0FM
YXllck1hYzo6YXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBsYXllcikKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBBU1NFUlQobV9sYXllciAhPSBsYXllci0+
bV9sYXllcik7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bGF5ZXItPm1fbGF5ZXIu
Z2V0KCldOworICAgIEFTU0VSVChtX2xheWVyICE9IGxheWVyLm1fbGF5ZXIpOworICAgIFttX2xh
eWVyLmdldCgpIGFkZFN1YmxheWVyOmxheWVyLm1fbGF5ZXIuZ2V0KCldOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6Omluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyTWFjOjppbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImIGxheWVyLCBzaXpl
X3QgaW5kZXgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgQVNTRVJU
KG1fbGF5ZXIgIT0gbGF5ZXItPm1fbGF5ZXIpOwotICAgIFttX2xheWVyLmdldCgpIGluc2VydFN1
YmxheWVyOmxheWVyLT5tX2xheWVyLmdldCgpIGF0SW5kZXg6aW5kZXhdOworICAgIEFTU0VSVCht
X2xheWVyICE9IGxheWVyLm1fbGF5ZXIpOworICAgIFttX2xheWVyLmdldCgpIGluc2VydFN1Ymxh
eWVyOmxheWVyLm1fbGF5ZXIuZ2V0KCkgYXRJbmRleDppbmRleF07CiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6cmVwbGFjZVN1Ymxh
eWVyKFBsYXRmb3JtQ0FMYXllciogcmVmZXJlbmNlLCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OnJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIm
IHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyJiBsYXllcikKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICBBU1NFUlQobV9sYXllciAhPSBsYXllci0+bV9sYXllcik7Ci0g
ICAgW21fbGF5ZXIuZ2V0KCkgcmVwbGFjZVN1YmxheWVyOnJlZmVyZW5jZS0+bV9sYXllci5nZXQo
KSB3aXRoOmxheWVyLT5tX2xheWVyLmdldCgpXTsKKyAgICBBU1NFUlQobV9sYXllciAhPSBsYXll
ci5tX2xheWVyKTsKKyAgICBbbV9sYXllci5nZXQoKSByZXBsYWNlU3VibGF5ZXI6cmVmZXJlbmNl
Lm1fbGF5ZXIuZ2V0KCkgd2l0aDpsYXllci5tX2xheWVyLmdldCgpXTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjphZG9wdFN1Ymxh
eWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjph
ZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXllcnM6W3NvdXJj
ZS0+bV9sYXllci5nZXQoKSBzdWJsYXllcnNdXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJs
YXllcnM6W3NvdXJjZS5tX2xheWVyLmdldCgpIHN1YmxheWVyc11dOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtNzEzLDEwICs3MTMsMTAgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJNYWM6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAg
ICBQbGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09uTGF5ZXIocGxhdGZvcm1MYXllcigpLCBm
aWx0ZXJzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNvcHlGaWx0ZXJzRnJvbShj
b25zdCBQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZUxheWVyKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJN
YWM6OmNvcHlGaWx0ZXJzRnJvbShjb25zdCBQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZUxheWVyKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2xheWVyLmdldCgpIHNl
dEZpbHRlcnM6W3NvdXJjZUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgZmlsdGVyc11dOworICAgIFtt
X2xheWVyLmdldCgpIHNldEZpbHRlcnM6W3NvdXJjZUxheWVyLnBsYXRmb3JtTGF5ZXIoKSBmaWx0
ZXJzXV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmNwcAppbmRleCBhMjk5OTRhZTllYWRjZWQzZWE5NjBiMjcwOTk1MGEyYWY4NDNiNDRl
Li5iNzU1OWIwMGJmOWJlNWUzMjg3MzljNzU4M2MzMmNiMzI1YjI1YzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0
OjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogICAgIG1fcm9vdExh
eWVyLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsKICAgICBtX3Jvb3RDaGlsZExheWVyID0gbGF5ZXI7
CiAgICAgaWYgKG1fcm9vdENoaWxkTGF5ZXIpCi0gICAgICAgIG1fcm9vdExheWVyLT5hcHBlbmRT
dWJsYXllcihtX3Jvb3RDaGlsZExheWVyLmdldCgpKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmFw
cGVuZFN1YmxheWVyKCptX3Jvb3RDaGlsZExheWVyKTsKIH0KICAgIAogdm9pZCBDQUNGTGF5ZXJU
cmVlSG9zdDo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
aW5kZXggNDJiMzA5ZmViY2NjODcyODYwOTBkNzc5NjMzOWU5MmNmMWI4MDQwNS4uNzA0M2UyMWE2
YWYyMzY5NGM3MDM0MjVkNWY4Yzc4NjBjNTU2YTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyV2luOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bgogICAgIG5l
d0xheWVyLT5zZXRPcGFxdWUoaXNPcGFxdWUoKSk7CiAgICAgbmV3TGF5ZXItPnNldEJhY2tncm91
bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgbmV3TGF5ZXItPnNldENvbnRlbnRzU2Nh
bGUoY29udGVudHNTY2FsZSgpKTsKLSAgICBuZXdMYXllci0+Y29weUZpbHRlcnNGcm9tKHRoaXMp
OworICAgIG5ld0xheWVyLT5jb3B5RmlsdGVyc0Zyb20oKnRoaXMpOwogCiAgICAgcmV0dXJuIG5l
d0xheWVyOwogfQpAQCAtMTkwLDcgKzE5MCw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duCiBQ
bGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcldpbjo6cm9vdExheWVyKCkgY29uc3QKIHsK
ICAgICBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0KiBob3N0ID0gbGF5ZXJUcmVlSG9zdEZvckxh
eWVyKHRoaXMpOwotICAgIHJldHVybiBob3N0ID8gaG9zdC0+cm9vdExheWVyKCkgOiAwOworICAg
IHJldHVybiBob3N0ID8gaG9zdC0+cm9vdExheWVyKCkgOiBudWxscHRyOwogfQogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllcldpbjo6YW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bktleSwgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQpAQCAtMjcwLDQzICsyNzAsNDAgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnJlbW92ZUFsbFN1YmxheWVycygpCiAgICAgaW50ZXJuKHRo
aXMpLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46
OmFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit2b2lkIFBsYXRmb3JtQ0FM
YXllcldpbjo6YXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBsYXllcikKIHsKICAgICAv
LyBUaGlzIG11c3QgYmUgaW4gdGVybXMgb2YgaW5zZXJ0U3VibGF5ZXIgaW5zdGVhZCBvZiBhIGRp
cmVjdCBjYWxsIHNvIFBsYXRmb3JtQ0FMYXllckludGVybmFsIGNhbiBvdmVycmlkZS4KICAgICBp
bnNlcnRTdWJsYXllcihsYXllciwgaW50ZXJuKHRoaXMpLT5zdWJsYXllckNvdW50KCkpOwogfQog
Ci12b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVy
KiBsYXllciwgc2l6ZV90IGluZGV4KQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46Omluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIsIHNpemVfdCBpbmRleCkKIHsKICAgICBpbnRl
cm4odGhpcyktPmluc2VydFN1YmxheWVyKGxheWVyLCBpbmRleCk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1DQUxheWVyV2luOjpyZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2Us
IFBsYXRmb3JtQ0FMYXllciogbmV3TGF5ZXIpCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6cmVw
bGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciYgcmVmZXJlbmNlLCBQbGF0Zm9ybUNBTGF5ZXIm
IG5ld0xheWVyKQogewogICAgIC8vIFRoaXMgbXVzdCBub3QgdXNlIGRpcmVjdCBjYWxscyB0byBh
bGxvdyBQbGF0Zm9ybUNBTGF5ZXJJbnRlcm5hbCB0byBvdmVycmlkZS4KLSAgICBBU1NFUlRfQVJH
KHJlZmVyZW5jZSwgcmVmZXJlbmNlKTsKLSAgICBBU1NFUlRfQVJHKHJlZmVyZW5jZSwgcmVmZXJl
bmNlLT5zdXBlcmxheWVyKCkgPT0gdGhpcyk7CisgICAgQVNTRVJUX0FSRyhyZWZlcmVuY2UsIHJl
ZmVyZW5jZS5zdXBlcmxheWVyKCkgPT0gdGhpcyk7CiAKLSAgICBpZiAocmVmZXJlbmNlID09IG5l
d0xheWVyKQorICAgIGlmICgmcmVmZXJlbmNlID09ICZuZXdMYXllcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaW50IHJlZmVyZW5jZUluZGV4ID0gaW50ZXJuKHRoaXMpLT5pbmRleE9mU3VibGF5
ZXIocmVmZXJlbmNlKTsKKyAgICBpbnQgcmVmZXJlbmNlSW5kZXggPSBpbnRlcm4odGhpcyktPmlu
ZGV4T2ZTdWJsYXllcigmcmVmZXJlbmNlKTsKICAgICBBU1NFUlQocmVmZXJlbmNlSW5kZXggIT0g
LTEpOwogICAgIGlmIChyZWZlcmVuY2VJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVmZXJlbmNlLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIHJlZmVyZW5jZS5yZW1v
dmVGcm9tU3VwZXJsYXllcigpOwogCi0gICAgaWYgKG5ld0xheWVyKSB7Ci0gICAgICAgIG5ld0xh
eWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBpbnNlcnRTdWJsYXllcihuZXdM
YXllciwgcmVmZXJlbmNlSW5kZXgpOwotICAgIH0KKyAgICBuZXdMYXllci5yZW1vdmVGcm9tU3Vw
ZXJsYXllcigpOworICAgIGluc2VydFN1YmxheWVyKG5ld0xheWVyLCByZWZlcmVuY2VJbmRleCk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNB
TGF5ZXIqIHNvdXJjZSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZG9wdFN1YmxheWVycyhQ
bGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkKIHsKICAgICBQbGF0Zm9ybUNBTGF5ZXJMaXN0IHN1Ymxh
eWVyczsKLSAgICBpbnRlcm4oc291cmNlKS0+Z2V0U3VibGF5ZXJzKHN1YmxheWVycyk7CisgICAg
aW50ZXJuKCZzb3VyY2UpLT5nZXRTdWJsYXllcnMoc3VibGF5ZXJzKTsKIAogICAgIC8vIFVzZSBz
ZXRTdWJsYXllcnMoKSBiZWNhdXNlIGl0IHByb3Blcmx5IG51bGxzIG91dCB0aGUgc3VwZXJsYXll
ciBwb2ludGVycy4KICAgICBzZXRTdWJsYXllcnMoc3VibGF5ZXJzKTsKQEAgLTU0Nyw3ICs1NDQs
NyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJikKIHsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNvcHlGaWx0ZXJzRnJv
bShjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNvcHlG
aWx0ZXJzRnJvbShjb25zdCBQbGF0Zm9ybUNBTGF5ZXImKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmgKaW5kZXggM2JkYThmNTA2NTM3ODI5NmE2NWY3ZDdmZmJhNWI2MjE4NTU5Mzg1ZC4u
NjY4M2MxYzkwNmM2NzI3NTA1MWEyOWZjMTA2NTZhYTE2NjU3MmFkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uaApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3Vi
bGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQWxsU3VibGF5ZXJzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFw
cGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBzaXplX3QgaW5kZXgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZl
cmVuY2UsIFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiwgc2l6ZV90IGluZGV4KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciYgcmVmZXJl
bmNlLCBQbGF0Zm9ybUNBTGF5ZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IFBsYXRm
b3JtQ0FMYXllckxpc3QqIGN1c3RvbVN1YmxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY3VzdG9tU3VibGF5ZXJzLmdldCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkb3B0U3VibGF5
ZXJzKFBsYXRmb3JtQ0FMYXllciogc291cmNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZv
cm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwpAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCBmaWx0ZXJzQ2FuQmVDb21wb3NpdGVk
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBjb3B5RmlsdGVyc0Zyb20oY29uc3QgUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvcHlGaWx0ZXJzRnJvbShjb25zdCBQbGF0Zm9ybUNBTGF5ZXImKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAppbmRleCBl
Nzk1Yzc4MTI4NmQxNTAyMzczYmNkM2ZiM2U0MGVlZWNlYjk1YjI2Li5lYjkxNWRmYzJjNThjMTgy
Y2U2OWRmZmNkMDg3YmU2MWYwNGQyNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAKQEAgLTI1OCwxNiArMjU4LDE2IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWw6OnJlbW92ZUFsbFN1YmxheWVycygpCiAgICAgfQogfQogCi12b2lkIFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsOjppbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxh
eWVyLCBzaXplX3QgaW5kZXgpCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjppbnNl
cnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImIGxheWVyLCBzaXplX3QgaW5kZXgpCiB7CiAgICAg
aW5kZXggPSBtaW4oaW5kZXgsIHN1YmxheWVyQ291bnQoKSk7CiAgICAgaWYgKGxheWVyVHlwZUlz
VGlsZWQobV9vd25lci0+bGF5ZXJUeXBlKCkpKSB7CiAgICAgICAgIC8vIEFkZCAxIHRvIGFjY291
bnQgZm9yIHRoZSB0aWxlIHBhcmVudCBsYXllcgotICAgICAgICBpbmRleCsrOworICAgICAgICAr
K2luZGV4OwogICAgIH0KIAotICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAg
IENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgbGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSwgaW5kZXgpOworICAgIGxheWVyLnJlbW92ZUZyb21TdXBlcmxheWVy
KCk7CisgICAgQ0FDRkxheWVySW5zZXJ0U3VibGF5ZXIob3duZXIoKS0+cGxhdGZvcm1MYXllcigp
LCBsYXllci5wbGF0Zm9ybUxheWVyKCksIGluZGV4KTsKICAgICBvd25lcigpLT5zZXROZWVkc0Nv
bW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oCmluZGV4
IGEzZjVhYjBiNzE4MDQ4ZmVlMzc3ZDU1NGEwNzU3NmY3NjUyZDhjYmIuLjA0NDQ0ZmNhZGQxOTg5
YjgzMjU2OWJmNjNhYTlkMmZhYWNjZDkxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1Ymxh
eWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0Jik7CiAgICAgdm9pZCBnZXRTdWJsYXllcnMo
UGxhdGZvcm1DQUxheWVyTGlzdCYpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlQWxsU3VibGF5ZXJz
KCk7Ci0gICAgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBzaXplX3QpOwor
ICAgIHZvaWQgaW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiwgc2l6ZV90KTsKICAgICBz
aXplX3Qgc3VibGF5ZXJDb3VudCgpIGNvbnN0OwogICAgIGludCBpbmRleE9mU3VibGF5ZXIoY29u
c3QgUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IGRmODU4YmIwNTYyOGU2YzFlNGMw
MmNlNzhhZjJmZjQ3ZmQ0OWViZWIuLjI3MmY1Njc0YTdlZjkwZTczMzhmYzE3Nzc3YTYxNGMxMDky
MGNhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCkBAIC0yODIsNyArMjgyLDggQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjplbnRlckZ1bGxzY3JlZW4oKQogICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxk
TGF5ZXIobV9yb290Q2hpbGQpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRlb0xheWVyID0g
UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIobV92aWRlb0VsZW1lbnQtPnBsYXRmb3Jt
TGF5ZXIoKSk7Ci0gICAgbV9yb290Q2hpbGQtPmFwcGVuZFN1YmxheWVyKHZpZGVvTGF5ZXIpOwor
ICAgIEFTU0VSVCh2aWRlb0xheWVyKTsKKyAgICBtX3Jvb3RDaGlsZC0+YXBwZW5kU3VibGF5ZXIo
KnZpZGVvTGF5ZXIpOwogICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91dCgpOwogICAgIG1f
cm9vdENoaWxkLT5zZXRHZW9tZXRyeUZsaXBwZWQoMSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcAppbmRleCA1NTgzMWYzMDE3MjhjMjJlZmZhYmI0MmI2MzkwYTJiNDdjZDJmMjA1Li41
YTI5ODZkMGRjM2I1Mjc1ZDU0YTc5NTQ0OTNmYzVkMWQ4YjAzZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50
KgogUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCkKIHsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGxheWVyIDogbV9jaGlsZHJlbikKLSAgICAgICAgdG9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUobGF5ZXIuZ2V0KCkpLT5tX3N1cGVybGF5ZXIgPSBudWxscHRyOworICAg
ICAgICBkb3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+KCpsYXllcikubV9zdXBlcmxheWVy
ID0gbnVsbHB0cjsKIAogICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgIG1fY29udGV4dC0+bGF5
ZXJXaWxsQmVEZXN0cm95ZWQoKnRoaXMpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjp1cGRhdGVDbG9uZWRMYXllclByb3BlcnRpZXMoUGxhdGZvcm1DQUxh
eWVyUmVtb3RlJiBjCiAgICAgY2xvbmUuc2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cigpKTsKICAgICBjbG9uZS5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiAgICAg
aWYgKG1fcHJvcGVydGllcy5maWx0ZXJzKQotICAgICAgICBjbG9uZS5jb3B5RmlsdGVyc0Zyb20o
dGhpcyk7CisgICAgICAgIGNsb25lLmNvcHlGaWx0ZXJzRnJvbSgqdGhpcyk7CiAgICAgY2xvbmUu
dXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShjdXN0b21BcHBlYXJhbmNlKCkpOwogfQogCkBAIC0xNjcs
OSArMTY3LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJh
bnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY28KICAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGxhdGZv
cm1DQUxheWVyUmVtb3RlKiBjaGlsZCA9IHRvUGxhdGZvcm1DQUxheWVyUmVtb3RlKG1fY2hpbGRy
ZW5baV0uZ2V0KCkpOwotICAgICAgICBBU1NFUlQoY2hpbGQtPnN1cGVybGF5ZXIoKSA9PSB0aGlz
KTsKLSAgICAgICAgY2hpbGQtPnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oY29udGV4dCwgdHJh
bnNhY3Rpb24pOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIGNoaWxkID0gZG93bmNh
c3Q8UGxhdGZvcm1DQUxheWVyUmVtb3RlPigqbV9jaGlsZHJlbltpXSk7CisgICAgICAgIEFTU0VS
VChjaGlsZC5zdXBlcmxheWVyKCkgPT0gdGhpcyk7CisgICAgICAgIGNoaWxkLnJlY3Vyc2l2ZUJ1
aWxkVHJhbnNhY3Rpb24oY29udGV4dCwgdHJhbnNhY3Rpb24pOwogICAgIH0KIAogICAgIGlmICht
X21hc2tMYXllcikKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmIGxpc3QpCiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGxheWVyIDogbGlzdCkgewogICAgICAgICBsYXllci0+cmVtb3ZlRnJv
bVN1cGVybGF5ZXIoKTsKLSAgICAgICAgdG9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXIuZ2V0
KCkpLT5tX3N1cGVybGF5ZXIgPSB0aGlzOworICAgICAgICBkb3duY2FzdDxQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU+KCpsYXllcikubV9zdXBlcmxheWVyID0gdGhpczsKICAgICB9CiAKICAgICBtX3By
b3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpDaGlsZHJlbkNoYW5nZWQpOwpAQCAtMjcwLDQ3ICsyNzAsNDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnJlbW92ZUFsbFN1YmxheWVycygpCiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQ
cm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2hpbGRyZW5DaGFu
Z2VkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFwcGVuZFN1YmxheWVyKFBs
YXRmb3JtQ0FMYXllciogbGF5ZXIpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YXBwZW5k
U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiBsYXllcikKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBsYXllclByb3RlY3RvcihsYXllcik7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
bGF5ZXJQcm90ZWN0b3IobGF5ZXIpOwogCi0gICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVy
KCk7Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQobGF5ZXIpOwotICAgIHRvUGxhdGZvcm1DQUxheWVy
UmVtb3RlKGxheWVyKS0+bV9zdXBlcmxheWVyID0gdGhpczsKKyAgICBsYXllci5yZW1vdmVGcm9t
U3VwZXJsYXllcigpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKCZsYXllcik7CisgICAgZG93bmNh
c3Q8UGxhdGZvcm1DQUxheWVyUmVtb3RlPihsYXllcikubV9zdXBlcmxheWVyID0gdGhpczsKICAg
ICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllciwgc2l6ZV90IGluZGV4KQor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6Omluc2VydFN1YmxheWVyKFBsYXRmb3JtQ0FMYXll
ciYgbGF5ZXIsIHNpemVfdCBpbmRleCkKIHsKLSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBs
YXllclByb3RlY3RvcihsYXllcik7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXJQcm90
ZWN0b3IobGF5ZXIpOwogCi0gICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7Ci0gICAg
bV9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGxheWVyKTsKLSAgICB0b1BsYXRmb3JtQ0FMYXllclJl
bW90ZShsYXllciktPm1fc3VwZXJsYXllciA9IHRoaXM7CisgICAgbGF5ZXIucmVtb3ZlRnJvbVN1
cGVybGF5ZXIoKTsKKyAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgJmxheWVyKTsKKyAgICBk
b3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+KGxheWVyKS5tX3N1cGVybGF5ZXIgPSB0aGlz
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkNoaWxkcmVuQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpyZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVwbGFjZVN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciYgcmVmZXJlbmNlLCBQbGF0Zm9ybUNBTGF5ZXImIGxheWVy
KQogewotICAgIEFTU0VSVChyZWZlcmVuY2UtPnN1cGVybGF5ZXIoKSA9PSB0aGlzKTsKLSAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllclByb3RlY3RvcihsYXllcik7CisgICAgQVNTRVJU
KHJlZmVyZW5jZS5zdXBlcmxheWVyKCkgPT0gdGhpcyk7CisgICAgUmVmPFBsYXRmb3JtQ0FMYXll
cj4gbGF5ZXJQcm90ZWN0b3IobGF5ZXIpOwogCi0gICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxh
eWVyKCk7Ci0gICAgc2l6ZV90IHJlZmVyZW5jZUluZGV4ID0gbV9jaGlsZHJlbi5maW5kKHJlZmVy
ZW5jZSk7CisgICAgbGF5ZXIucmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICBzaXplX3QgcmVm
ZXJlbmNlSW5kZXggPSBtX2NoaWxkcmVuLmZpbmQoJnJlZmVyZW5jZSk7CiAgICAgaWYgKHJlZmVy
ZW5jZUluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIG1fY2hpbGRyZW5bcmVmZXJlbmNlSW5k
ZXhdLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBtX2NoaWxkcmVuLmluc2VydChy
ZWZlcmVuY2VJbmRleCwgbGF5ZXIpOwotICAgICAgICB0b1BsYXRmb3JtQ0FMYXllclJlbW90ZShs
YXllciktPm1fc3VwZXJsYXllciA9IHRoaXM7CisgICAgICAgIG1fY2hpbGRyZW4uaW5zZXJ0KHJl
ZmVyZW5jZUluZGV4LCAmbGF5ZXIpOworICAgICAgICBkb3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+KGxheWVyKS5tX3N1cGVybGF5ZXIgPSB0aGlzOwogICAgIH0KIAogICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNo
aWxkcmVuQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphZG9wdFN1
YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjphZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkKIHsKLSAgICBQbGF0
Zm9ybUNBTGF5ZXJMaXN0IGxheWVyc1RvTW92ZSA9IHRvUGxhdGZvcm1DQUxheWVyUmVtb3RlKHNv
dXJjZSktPm1fY2hpbGRyZW47CisgICAgUGxhdGZvcm1DQUxheWVyTGlzdCBsYXllcnNUb01vdmUg
PSBkb3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+KHNvdXJjZSkubV9jaGlsZHJlbjsKIAot
ICAgIGlmIChjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21MYXllcnMgPSBzb3VyY2Ut
PmN1c3RvbVN1YmxheWVycygpKSB7CisgICAgaWYgKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3Qq
IGN1c3RvbUxheWVycyA9IHNvdXJjZS5jdXN0b21TdWJsYXllcnMoKSkgewogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGxheWVyIDogKmN1c3RvbUxheWVycykgewogICAgICAgICAgICAgc2l6ZV90
IGxheWVySW5kZXggPSBsYXllcnNUb01vdmUuZmluZChsYXllcik7CiAgICAgICAgICAgICBpZiAo
bGF5ZXJJbmRleCAhPSBub3RGb3VuZCkKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6YW5pbWF0aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBrZXkpCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewog
ICAgIGlmIChsYXllcikgewotICAgICAgICBtX21hc2tMYXllciA9IHRvUGxhdGZvcm1DQUxheWVy
UmVtb3RlKGxheWVyKTsKKyAgICAgICAgbV9tYXNrTGF5ZXIgPSBkb3duY2FzdDxQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU+KGxheWVyKTsKICAgICAgICAgbV9wcm9wZXJ0aWVzLm1hc2tMYXllcklEID0g
bV9tYXNrTGF5ZXItPmxheWVySUQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX21hc2tMYXll
ciA9IG51bGxwdHI7CkBAIC02MDIsOSArNjAyLDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICBtX3By
b3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpGaWx0ZXJzQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb3B5
RmlsdGVyc0Zyb20oY29uc3QgUGxhdGZvcm1DQUxheWVyKiBzb3VyY2VMYXllcikKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpjb3B5RmlsdGVyc0Zyb20oY29uc3QgUGxhdGZvcm1DQUxheWVy
JiBzb3VyY2VMYXllcikKIHsKLSAgICBpZiAoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogZmlsdGVy
cyA9IHRvUGxhdGZvcm1DQUxheWVyUmVtb3RlKHNvdXJjZUxheWVyKS0+bV9wcm9wZXJ0aWVzLmZp
bHRlcnMuZ2V0KCkpCisgICAgaWYgKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIGZpbHRlcnMgPSBk
b3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+KHNvdXJjZUxheWVyKS5tX3Byb3BlcnRpZXMu
ZmlsdGVycy5nZXQoKSkKICAgICAgICAgc2V0RmlsdGVycygqZmlsdGVycyk7CiAgICAgZWxzZSBp
ZiAobV9wcm9wZXJ0aWVzLmZpbHRlcnMpCiAgICAgICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDI1ZGQ3OTQ5YTA0YWRhNjli
MTYxNzBkYjYyZjRmYzYyNjJkNWNlMTYuLjg2ODk1NzZiNzkxMTc4ODJkNzFiNjI5MGE0M2RmNzUx
ZjE1ZDk5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtNjAsMTEgKzYwLDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVN1cGVybGF5ZXIoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckxpc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsU3VibGF5
ZXJzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFN1YmxheWVyKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRTdWJs
YXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqLCBzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlU3VibGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
KiByZWZlcmVuY2UsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRTdWJsYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0U3VibGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyJiwgc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFj
ZVN1YmxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciYgcmVmZXJlbmNlLCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllckxpc3QqIGN1c3RvbVN1YmxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRvcHRTdWJsYXllcnMoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyKiBzb3VyY2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZG9w
dFN1YmxheWVycyhXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBX
ZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CkBAIC0x
MjQsNyArMTI0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29u
c3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOwogICAgIHN0YXRpYyBib29s
IGZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQoY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYp
OwotICAgIHZpcnR1YWwgdm9pZCBjb3B5RmlsdGVyc0Zyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlGaWx0ZXJzRnJvbShj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShD
U1NfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCB2b2lkIHNldEJsZW5kTW9kZShXZWJDb3JlOjpC
bGVuZE1vZGUpIG92ZXJyaWRlOwpAQCAtMTkzLDggKzE5Myw4IEBAIHByaXZhdGU6CiAgICAgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCogbV9jb250ZXh0OwogfTsKIAotUExBVEZPUk1fQ0FMQVlFUl9U
WVBFX0NBU1RTKFBsYXRmb3JtQ0FMYXllclJlbW90ZSwgaXNQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUo
KSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUExB
VEZPUk1fQ0FMQVlFUihXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZSwgaXNQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUoKSkKKwogI2VuZGlmIC8vIFBsYXRmb3JtQ0FMYXllclJlbW90ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCAxZGFhNmUyZGU3YTcwN2MyMWM1
Mzg4ZjNiZWE2MDY4YWI2ZjVjZmNkLi5mYjQxZGMzZWU2NTM4YjliM2U5NzNlYjE5YTIyY2IxZThm
ZTlhMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAgLTYyLDgg
KzYyLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvdmlkZXNDb250ZW50czsKIH07CiAKLVBM
QVRGT1JNX0NBTEFZRVJfVFlQRV9DQVNUUyhQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20sIGlz
UGxhdGZvcm1DQUxheWVyUmVtb3RlKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1BMQVRGT1JNX0NBTEFZRVIoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20sIGlzUGxhdGZvcm1DQUxheWVyUmVtb3RlKCkpCisKICNlbmRpZiAvLyBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b21faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1t
CmluZGV4IDRkYzZiYWUzN2YxMDEyMjI4YzVjM2UxMWYwZTg3OWRlNzQ2OWU3ODcuLjdkMjRlNzYy
NmFkYWFmMGMxZWY3MDlkODg2NDdmZDEwOTI0NzljNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXll
cj4gUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaAogCiB2
b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBQbGF0Zm9ybUNBTGF5ZXImIHJvb3RMYXllcikK
IHsKLSAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIHJvb3RMYXllclJlbW90ZSA9IHRvUGxhdGZv
cm1DQUxheWVyUmVtb3RlKHJvb3RMYXllcik7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBy
b290TGF5ZXJSZW1vdGUgPSBkb3duY2FzdDxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+KHJvb3RMYXll
cik7CiAgICAgdHJhbnNhY3Rpb24uc2V0Um9vdExheWVySUQocm9vdExheWVyUmVtb3RlLmxheWVy
SUQoKSk7CiAKICAgICBtX2N1cnJlbnRUcmFuc2FjdGlvbiA9ICZ0cmFuc2FjdGlvbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>