<?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>77891</bug_id>
          
          <creation_ts>2012-02-06 11:56:34 -0800</creation_ts>
          <short_desc>Correct usage of LayoutUnits in dom, editing, page, accessibility, inspector, and loader</short_desc>
          <delta_ts>2012-02-06 17:55:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>77920</dependson>
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550170</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-06 11:56:34 -0800</bug_when>
    <thetext>As we worked the bugs out of our sub-pixel positioning change on our branch, some usages of Layout* types were added, while others went back to integers. This brings trunk&apos;s usage in line with our branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550174</commentid>
    <comment_count>1</comment_count>
      <attachid>125682</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-06 12:00:56 -0800</bug_when>
    <thetext>Created attachment 125682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550231</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-06 13:10:44 -0800</bug_when>
    <thetext>Do we have a document somewhere which describes the general usage guidelines for types in WebCore?  I want to know (at a high level) where we plan to use LayoutUnit vs. int vs. float vs. double vs. whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550277</commentid>
    <comment_count>3</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-06 14:19:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Do we have a document somewhere which describes the general usage guidelines for types in WebCore?  I want to know (at a high level) where we plan to use LayoutUnit vs. int vs. float vs. double vs. whatever.

Feel free to ask for clarification and well add it to this doc: https://trac.webkit.org/wiki/LayoutUnit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550374</commentid>
    <comment_count>4</comment_count>
      <attachid>125682</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-06 15:55:36 -0800</bug_when>
    <thetext>Comment on attachment 125682
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550463</commentid>
    <comment_count>5</comment_count>
      <attachid>125682</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 17:36:41 -0800</bug_when>
    <thetext>Comment on attachment 125682
Patch

Clearing flags on attachment: 125682

Committed r106884: &lt;http://trac.webkit.org/changeset/106884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550464</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 17:36:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125682</attachid>
            <date>2012-02-06 12:00:56 -0800</date>
            <delta_ts>2012-02-06 17:36:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77891-20120206120055.patch</filename>
            <type>text/plain</type>
            <size>25017</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTA2ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBDb3JyZWN0IHVzYWdlIG9m
IExheW91dFVuaXRzIGluIGRvbSwgZWRpdGluZywgcGFnZSwgYWNjZXNzaWJpbGl0eSwgaW5zcGVj
dG9yLCBhbmQgbG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Nzg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIHRoZSB1c2FnZSBvZiBMYXlvdXRVbml0cyBpbiB0aGUgZG9tLCBlZGl0
aW5nLCBwYWdlLCBhY2Nlc3NpYmlsaXR5LCBpbnNwZWN0b3IsIGFuZCBsb2FkZXIKKyAgICAgICAg
ZGlyZWN0b3JpZXMgdG8gcHJvcGVybHkgdXNlIExheW91dFVuaXRzIHZzIGludHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBObyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRzRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZG9BWEJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5U2xpZGVyKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNo
b3dDb250ZXh0TWVudV0pOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmg6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmQ6OmRyYWdMb2NhdGlvbik6CisgICAgICAgIChDbGlwYm9hcmQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyOjpyZW5kZXJlZFJlY3RzRm9yTWFya2Vycyk6CisgICAgICAgICogZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcmVlblJlY3QpOgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpmaXJzdFJlY3RGb3JSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246
OmFic29sdXRlUmVjdCk6CisgICAgICAgICogZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QpOgorICAgICAg
ICAoUmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
aDoKKyAgICAgICAgKFZpc2libGVQb3NpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0RPTU5v
ZGVIaWdobGlnaHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KToKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFN1YmZyYW1l
TG9hZGVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAg
ICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpu
b2RlSW1hZ2UpOgorCiAyMDEyLTAyLTA2ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25v
bWUub3JnPgogCiAgICAgICAgIEFkZCBhIG51bGwgY2hlY2sgZm9yIHRoZSBnZGt3aW5kb3csIHRo
YXQgd2lsbCBoYXBwZW4gaWYgdGhlIHdpbmRvdwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwNjQwNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01ODQsNyArNTg0LDcgQEAgcHVibGljOgogICAgIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdDsKIAogICAgIFN0cmluZyBzdHJpbmdGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShj
b25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSYpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBi
b3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQogICAgIGludCBsZW5ndGhGb3JWaXNpYmxlUG9z
aXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJikgY29uc3QgeyB9CiAKQEAgLTYxNSw3ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAg
UGxhaW5UZXh0UmFuZ2UgZG9BWFN0eWxlUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFu
Z2UmKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBk
b0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCB7IHJldHVybiBM
YXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CiAgICAgU3Ry
aW5nIGxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKE5vZGUqLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWdu
ZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMDY0MDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MDksNyArNzA5LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc09mZlNjcgogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKICAgICBMYXlvdXRSZWN0
IGNvbnRlbnRSZWN0ID0gbV9yZW5kZXJlci0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7
CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9yZW5kZXJlci0+ZnJhbWUoKS0+dmlldygpOwotICAg
IEZsb2F0UmVjdCB2aWV3UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAgIElu
dFJlY3Qgdmlld1JlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICB2aWV3UmVj
dC5pbnRlcnNlY3QoY29udGVudFJlY3QpOwogICAgIHJldHVybiB2aWV3UmVjdC5pc0VtcHR5KCk7
CiB9CkBAIC0xNDk5LDcgKzE0OTksNyBAQCBMYXlvdXRTaXplIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnNpCiAgICAgcmV0dXJuIHJlY3Quc2l6ZSgpOwogfQogCi1MYXlvdXRQb2ludCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGlja1BvaW50KCkKK0ludFBvaW50IEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQoKQogewogICAgIC8vIEhlYWRpbmdzIGFyZSB1c3Vh
bGx5IG11Y2ggd2lkZXIgdGhhbiB0aGVpciB0ZXh0dWFsIGNvbnRlbnQuIElmIHRoZSBtaWQgcG9p
bnQgaXMgdXNlZCwgb2Z0ZW4gaXQgY2FuIGJlIHdyb25nLgogICAgIGlmIChpc0hlYWRpbmcoKSAm
JiBjaGlsZHJlbigpLnNpemUoKSA9PSAxKQpAQCAtMTUxMSwxMSArMTUxMSwxMSBAQCBMYXlvdXRQ
b2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjCiAgICAgCiAgICAgVmlzaWJsZVNlbGVj
dGlvbiB2aXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24oKTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSByYW5nZSA9IFZpc2libGVQb3NpdGlvblJhbmdlKHZpc1NlbGVjdGlvbi52aXNpYmxlU3RhcnQo
KSwgdmlzU2VsZWN0aW9uLnZpc2libGVFbmQoKSk7Ci0gICAgTGF5b3V0UmVjdCBib3VuZHMgPSBi
b3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShyYW5nZSk7CisgICAgSW50UmVjdCBib3VuZHMg
PSBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShyYW5nZSk7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGJvdW5kcy5zZXRMb2NhdGlvbihtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT52aWV3KCkt
PnNjcmVlblRvQ29udGVudHMoYm91bmRzLmxvY2F0aW9uKCkpKTsKICNlbmRpZiAgICAgICAgCi0g
ICAgcmV0dXJuIExheW91dFBvaW50KGJvdW5kcy54KCkgKyAoYm91bmRzLndpZHRoKCkgLyAyKSwg
Ym91bmRzLnkoKSAtIChib3VuZHMuaGVpZ2h0KCkgLyAyKSk7CisgICAgcmV0dXJuIEludFBvaW50
KGJvdW5kcy54KCkgKyAoYm91bmRzLndpZHRoKCkgLyAyKSwgYm91bmRzLnkoKSAtIChib3VuZHMu
aGVpZ2h0KCkgLyAyKSk7CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKQEAgLTI1OTQsMTAg
KzI1OTQsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpub2RlSXNUZQogICAg
IHJldHVybiBheE9iamVjdEZvck5vZGUtPmlzVGV4dENvbnRyb2woKTsKIH0KIAotTGF5b3V0UmVj
dCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5n
ZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgdmlzaWJsZVBvc2l0aW9uUmFuZ2UpIGNvbnN0
CitJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3Np
dGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiB2aXNpYmxlUG9zaXRpb25SYW5n
ZSkgY29uc3QKIHsKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uUmFuZ2UuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAgICAg
CiAgICAgLy8gQ3JlYXRlIGEgbXV0YWJsZSBWaXNpYmxlUG9zaXRpb25SYW5nZS4KICAgICBWaXNp
YmxlUG9zaXRpb25SYW5nZSByYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5nZSk7CkBAIC0yODExLDE0
ICsyODExLDE0IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYU3QKIC8v
IFRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
YWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwogLy8gc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBy
YW5nZS4gVGhpcyBpcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIGEgc2lnaHRlZCB1c2VyIHdvdWxk
IHNlZQogLy8gb24gdGhlIGRpc3BsYXkgc2NyZWVuLCBpbiBwaXhlbHMuCi1MYXlvdXRSZWN0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRl
eHRSYW5nZSYgcmFuZ2UpIGNvbnN0CitJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UpIGNvbnN0CiB7
CiAgICAgaWYgKGFsbG93c1RleHRSYW5nZXMoKSkKICAgICAgICAgcmV0dXJuIGJvdW5kc0ZvclZp
c2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UocmFuZ2UpKTsK
LSAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxp
dHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCogYXJlYSwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmICghYXJlYSkKICAgICAg
ICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTA2NDA1KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRh
dGVBY2Nlc3NpYmlsaXR5Um9sZSgpOwogICAgIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgb24g
dGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4KLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CiAgICAgRWxlbWVudCogbW91c2VCdXR0
b25MaXN0ZW5lcigpIGNvbnN0OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIHNpemUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFBvaW50IGNsaWNrUG9pbnQoKTsKKyAgICB2aXJ0
dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKICAgICAKICAgICB2b2lkIHNldFJlbmRlcmVyKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsg
fQpAQCAtMjI4LDcgKzIyOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaWduZWQp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25S
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0OworICAgIHZpcnR1YWwgSW50
UmVjdCBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25S
YW5nZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlv
blJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQUZsb3dUbygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxv
d1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CkBAIC0yNTAs
NyArMjUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdl
Rm9ySW5kZXgodW5zaWduZWQpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIGRvQVhT
dHJpbmdGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4
dFJhbmdlJikgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JN
U0FBKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nUm9sZUZvck1TQUEoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAx
LDcgKzEwMSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjoKICAg
ICByZXR1cm4gZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKIH0KICAgICAKLUFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmIChtX2NoaWxkcmVuLnNpemUo
KSkgewogICAgICAgICBBU1NFUlQobV9jaGlsZHJlbi5zaXplKCkgPT0gMSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAko
cmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVu
dEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNsaWRl
clJvbGU7IH0gICAgCiAgICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9u
IDEwNjQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjA1LDcgKzI2MDUsNyBA
QCAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gU2ltdWxhdGUgYSBjbGljayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvYmplY3QuCi0g
ICAgTGF5b3V0UG9pbnQgY2xpY2tQb2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CisgICAg
SW50UG9pbnQgY2xpY2tQb2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CiAgICAgCiAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQb2ludCwgUmln
aHRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZCwgMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQobW91c2VFdmVudCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2OCw3ICs2NjgsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuCiAgICAgaWYgKCFyZW5kZXJlciB8
fCBzdHlsZS0+dHJhbnNmb3JtKCkub3BlcmF0aW9ucygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAK
LSAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7CisgICAgTGF5b3V0UmVjdCBi
b3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJh
bnNmb3JtOwogICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJveC5zaXplKCks
IFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKQEAgLTIxMTMsNyArMjExMyw3
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOiB7CiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVj
dCBib3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOworICAgICAgICAgICAgICAgIExheW91dFJlY3Qg
Ym94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY01p
blZhbHVlKGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwogICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJz
cGVjdGl2ZU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCks
IGNzc1ZhbHVlUG9vbCkpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQu
aAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSwxMyArNjksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0ID0gMDsKIAotICAgICAg
ICBMYXlvdXRQb2ludCBkcmFnTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdMb2M7IH0K
KyAgICAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnTG9j
OyB9CiAgICAgICAgIENhY2hlZEltYWdlKiBkcmFnSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Ry
YWdJbWFnZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKENhY2hl
ZEltYWdlKiwgY29uc3QgTGF5b3V0UG9pbnQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRQb2ludCYpID0gMDsKICAgICAgICAg
Tm9kZSogZHJhZ0ltYWdlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0ltYWdlRWxlbWVu
dC5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhZ0ltYWdlRWxlbWVudChOb2Rl
KiwgY29uc3QgTGF5b3V0UG9pbnQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXREcmFn
SW1hZ2VFbGVtZW50KE5vZGUqLCBjb25zdCBJbnRQb2ludCYpID0gMDsKICAgICAgICAgCi0gICAg
ICAgIHZpcnR1YWwgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZShMYXlvdXRQb2ludCYgZHJh
Z0xvY2F0aW9uKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZShJbnRQb2ludCYgZHJhZ0xvY2F0aW9uKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICAgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZyYW1lKikg
PSAwOwogI2VuZGlmCkBAIC0xMTcsNyArMTE3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBDbGlwYm9hcmRUeXBlIG1fY2xpcGJvYXJkVHlwZTsKICAgICAgICAgCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBMYXlvdXRQb2ludCBtX2RyYWdMb2M7CisgICAgICAgIEludFBvaW50IG1f
ZHJhZ0xvYzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fZHJh
Z0ltYWdlOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnSW1hZ2VFbGVtZW50OwogICAgIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw5ICszNzcsOSBAQCBWZWN0
b3I8RG9jdW1lbnRNYXJrZXIqPiBEb2N1bWVudE1hcmtlckNvCiAgICAgcmV0dXJuIGZvdW5kTWFy
a2VyczsKIH0KIAotVmVjdG9yPExheW91dFJlY3Q+IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6
cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFya2Vy
VHlwZSkKK1ZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVk
UmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1hcmtlclR5cGUpCiB7
Ci0gICAgVmVjdG9yPExheW91dFJlY3Q+IHJlc3VsdDsKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVz
dWx0OwogCiAgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oCShyZXZpc2lvbiAxMDY0MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNGb3IoTm9kZSos
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJz
KCkpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnNJblJhbmdlKFJhbmdlKiwg
RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+
IG1hcmtlcnNGb3JOb2RlKE5vZGUqKTsKLSAgICBWZWN0b3I8TGF5b3V0UmVjdD4gcmVuZGVyZWRS
ZWN0c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOworICAgIFZlY3RvcjxJ
bnRSZWN0PiByZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSk7CiAgICAgdm9pZCBjbGVhckRlc2NyaXB0aW9uT25NYXJrZXJzSW50ZXJzZWN0aW5nUmFuZ2Uo
UmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOwogCiAjaWZuZGVmIE5ERUJVRwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjYsMTAgKzU2NiwxMCBA
QCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kCiAgICAgcmV0dXJuIENs
aWVudFJlY3Q6OmNyZWF0ZShyZXN1bHQpOwogfQogICAgIAotTGF5b3V0UmVjdCBFbGVtZW50Ojpz
Y3JlZW5SZWN0KCkgY29uc3QKK0ludFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJs
eSByZXNwZWN0IHRyYW5zZm9ybXMKICAgICByZXR1cm4gcmVuZGVyZXIoKS0+dmlldygpLT5mcmFt
ZVZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihyZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2
aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENsaWVudFJl
Y3Q+IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgIAogICAgIC8vIFJldHVybnMgdGhlIGFi
c29sdXRlIGJvdW5kaW5nIGJveCB0cmFuc2xhdGVkIGludG8gc2NyZWVuIGNvb3JkaW5hdGVzOgot
ICAgIExheW91dFJlY3Qgc2NyZWVuUmVjdCgpIGNvbnN0OworICAgIEludFJlY3Qgc2NyZWVuUmVj
dCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1l
KTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCShyZXZpc2lvbiAxMDY0MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTgsNyArMjMxOCw3IEBAIHZvaWQgRWRpdG9yOjpkZWxl
dGVkQXV0b2NvcnJlY3Rpb25BdFBvc2kKICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5kZWxldGVk
QXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKHBvc2l0aW9uLCBvcmlnaW5hbFN0cmluZyk7CiB9CiAK
LVBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgd2luZG93UG9pbnQpCitQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50QXRQb2ludCh3aW5kb3dQb2ludCk7CiAgICAgaWYgKCFkb2N1bWVu
dCkKQEAgLTI2MzMsNyArMjYzMyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dCgpIGNv
bnN0CiAKIEludFJlY3QgRWRpdG9yOjpmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSogcmFuZ2UpIGNv
bnN0CiB7Ci0gICAgaW50IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDA7CisgICAgTGF5b3V0VW5p
dCBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwOwogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250
YWluZXIoKSk7CiAgICAgQVNTRVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAkocmV2aXNpb24gMTA2
NDA1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246
OnBvc2l0aW9uQXRSaWcKICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBy
ZXZMZWFmQ2hpbGQoKS0+cmVuZGVyZXIoKS0+bm9kZSgpLCBwcmV2TGVhZkNoaWxkKCktPmNhcmV0
UmlnaHRtb3N0T2Zmc2V0KCkpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlcmVkUG9zaXRpb246OmFi
c29sdXRlUmVjdChpbnQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFBv
c2l0aW9uIHBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAKICAgICBM
YXlvdXRSZWN0IGFic29sdXRlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlUmVjdCgwKTsg
fQotICAgIExheW91dFJlY3QgYWJzb2x1dGVSZWN0KGludCYgZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZVJlY3QoJmV4dHJhV2lkdGhUb0VuZE9mTGluZSk7IH0K
KyAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdChMYXlvdXRVbml0JiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlUmVjdCgmZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJlZFBvc2l0
aW9uJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGF0TGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1
bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9mUnVuKSBjb25zdDsKICAgICBib29sIGF0UmlnaHRCb3Vu
ZGFyeU9mQmlkaVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWduZWQgY2hhciBiaWRpTGV2
ZWxPZlJ1bikgY29uc3Q7CiAKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdChpbnQqIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZVJlY3QoTGF5
b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdDsKIAogICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJlcjsKICAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCShyZXZpc2lvbiAxMDY0MDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBSZWN0IGlzIGxvY2FsIHRv
IHRoZSByZXR1cm5lZCByZW5kZXJlcgotICAgIEludFJlY3QgbG9jYWxDYXJldFJlY3QoUmVuZGVy
T2JqZWN0KiYpIGNvbnN0OworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoUmVuZGVyT2Jq
ZWN0KiYpIGNvbnN0OwogICAgIC8vIEJvdW5kcyBvZiAocG9zc2libHkgdHJhbnNmb3JtZWQpIGNh
cmV0IGluIGFic29sdXRlIGNvb3JkcwogICAgIEludFJlY3QgYWJzb2x1dGVDYXJldEJvdW5kcygp
IGNvbnN0OwogICAgIC8vIEFicyB4L3kgcG9zaXRpb24gb2YgdGhlIGNhcmV0IGlnbm9yaW5nIHRy
YW5zZm9ybXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCw4ICsyODgs
OCBAQCB2b2lkIGRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgdGl0bGVS
ZWN0LmluZmxhdGUocmVjdEluZmxhdGVQeCk7CiAKICAgICAvLyBUaGUgaW5pdGlhbCBvZmZzZXRz
IG5lZWRlZCB0byBjb21wZW5zYXRlIGZvciBhIDFweC10aGljayBib3JkZXIgc3Ryb2tlICh3aGlj
aCBpcyBub3QgYSBwYXJ0IG9mIHRoZSByZWN0YW5nbGUpLgotICAgIExheW91dFVuaXQgZHggPSAt
Ym9yZGVyV2lkdGhQeDsKLSAgICBMYXlvdXRVbml0IGR5ID0gYm9yZGVyV2lkdGhQeDsKKyAgICBp
bnQgZHggPSAtYm9yZGVyV2lkdGhQeDsKKyAgICBpbnQgZHkgPSBib3JkZXJXaWR0aFB4OwogCiAg
ICAgLy8gSWYgdGhlIHRpcCBzdGlja3MgYmV5b25kIHRoZSByaWdodCBvZiB2aXNpYmxlUmVjdCwg
cmlnaHQtYWxpZ24gdGhlIHRpcCB3aXRoIHRoZSBzYWlkIGJvdW5kYXJ5LgogICAgIGlmICh0aXRs
ZVJlY3QubWF4WCgpICsgZHggPiB2aXNpYmxlUmVjdC5tYXhYKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwNjQwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MSw3ICsxOTEsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmxvYWRNCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiBzaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIGFyZ3MpCitQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBhcmdzKQogewog
ICAgIFN0cmluZyBiYXNlVVJMU3RyaW5nOwogICAgIFN0cmluZyBjb2RlQmFzZVVSTFN0cmluZzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxMDY0
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBTdWJmcmFtZUxvYWRlcl9oCiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBsb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihOb2RlKiwgY29uc3QgS1VSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiYgYXJncyk7CisgICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgTGF5b3V0U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGFyZ3MpOwogCiAgICAgYm9vbCBhbGxv
d1BsdWdpbnMoUmVhc29uRm9yQ2FsbGluZ0FsbG93UGx1Z2lucyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwNjQwNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwMSw3ICsxNDAx
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CiAgICAgLy8gU2F2ZSB0
aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5h
dGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zIAogICAgIC8vIHdoZW4gd2UgZGlzcGF0
Y2ggdGhlIGV2ZW50LgotICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91c2VFdmVudC5wb3NpdGlvbigpKTsKKyAgICBMYXlv
dXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJh
bWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0
LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKIAogICAgIGlmICghdGFyZ2V0Tm9kZShtZXYp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTA2NDA1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgsNyArMTA2OCw3
IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUKICAgICBtX2RvYy0+
dXBkYXRlTGF5b3V0KCk7CiAgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFi
bGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCiAKLSAgICBJbnRSZWN0IHRvcExldmVs
UmVjdDsKKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKICAgICBJbnRSZWN0IHBhaW50aW5n
UmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCk7CiAKICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVj
dC5zaXplKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCShy
ZXZpc2lvbiAxMDY0MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6Om5v
ZGVJbWFnZShOb2RlKiBub2RlCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBJbnRSZWN0IHRvcExldmVsUmVjdDsKKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCk7CiAKICAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>