<?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>66348</bug_id>
          
          <creation_ts>2011-08-16 16:18:30 -0700</creation_ts>
          <short_desc>Switch Accessibility code to new layout types</short_desc>
          <delta_ts>2011-08-17 18:19:15 -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>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>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451957</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-08-16 16:18:30 -0700</bug_when>
    <thetext>Ongoing conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451959</commentid>
    <comment_count>1</comment_count>
      <attachid>104115</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-08-16 16:24:38 -0700</bug_when>
    <thetext>Created attachment 104115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452470</commentid>
    <comment_count>2</comment_count>
      <attachid>104115</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 12:26:56 -0700</bug_when>
    <thetext>Comment on attachment 104115
Patch

Rejecting attachment 104115 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-03&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
svg-fonts-word-spacing.html = IMAGE+TEXT

Regressions: Unexpected image mismatch : (5)
  fast/text/atsui-multiple-renderers.html = IMAGE
  fast/text/international/danda-space.html = IMAGE
  fast/text/international/thai-baht-space.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE

Regressions: Unexpected text diff mismatch : (1)
  editing/selection/collapse-selection-in-bidi.html = TEXT



Full output: http://queues.webkit.org/results/9424016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452783</commentid>
    <comment_count>3</comment_count>
      <attachid>104115</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 18:19:11 -0700</bug_when>
    <thetext>Comment on attachment 104115
Patch

Clearing flags on attachment: 104115

Committed r93272: &lt;http://trac.webkit.org/changeset/93272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452784</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 18:19:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104115</attachid>
            <date>2011-08-16 16:24:38 -0700</date>
            <delta_ts>2011-08-17 18:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66348-20110816162437.patch</filename>
            <type>text/plain</type>
            <size>37770</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMTc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMDgtMTYgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBBY2Nlc3NpYmls
aXR5IGNvZGUgdG8gbmV3IGxheW91dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0aW5nIHJlbWFpbmluZyBBY2Nlc3NpYmlsaXR5IGNv
ZGUgdG8gdGhlIExheW91dFVuaXQgYWJzdHJhY3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eQorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbms6OmVsZW1lbnRSZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlM
aXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uOjplbGVtZW50UmVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdE9wdGlvbjo6ZWxlbWVudFJlY3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OnNpemUpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwOjplbGVtZW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6c2l6ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmNsaWNrUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGVja2JveE9yUmFkaW9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2xpY2tQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JS
YW5nZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0
eUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVs
ZW1lbnRSZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OmVsZW1lbnRSZWN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjplbGVtZW50UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OnNpemUpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbjo6ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpzaXplKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyOjpzaXplKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgor
ICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbl0pOgorICAgICAg
ICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlTaG93Q29udGV4dE1lbnVdKToKKwogMjAxMS0wOC0xNiAgU2NvdHQgQnllciAgPHNjb3R0Ynll
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHNwZWxsaW5nIGVycm9yLgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuY3BwCShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOSwxMSArMTE5LDExIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjp0aXRs
ZSgKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KLSAgICAKLUludFJlY3QgQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluazo6ZWxlbWVudFJlY3QoKSBjb25zdAorCitMYXlvdXRSZWN0IEFjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbms6OmVsZW1lbnRSZWN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbWFw
RWxlbWVudC5nZXQoKSB8fCAhbV9hcmVhRWxlbWVudC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIElu
dFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXI7CiAgICAgaWYgKG1fcGFyZW50ICYmIG1fcGFyZW50LT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBJbnRSZWN0IEFjY2Vzc2liaWxp
dHlJbWFnZU1hcExpbms6OmVsZW1lCiAgICAgICAgIHJlbmRlcmVyID0gbV9tYXBFbGVtZW50LT5y
ZW5kZXJlcigpOwogICAgIAogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAgCiAgICAgcmV0dXJuIG1f
YXJlYUVsZW1lbnQtPmNvbXB1dGVSZWN0KHJlbmRlcmVyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5oCShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBJ
bnRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1l
bnRSZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6ICAgIAogICAgIFJlZlB0cjxIVE1MQXJlYUVsZW1l
bnQ+IG1fYXJlYUVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkocmV2aXNpb24gOTMxNzApCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3g6
OmFjY2Vzc2liaWxpdHkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGludGVybmFsIEhUTUxTZWxlY3RFbGVtZW50
IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3ggb3B0aW9uIGF0IGEgcG9pbnQKICAgICAv
LyBpZ25vcmUgb3B0Z3JvdXAgZWxlbWVudHMuCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJvCiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gMDsKICAgICAKLSAgICBJbnRSZWN0IHBhcmVudFJlY3QgPSBib3VuZGluZ0JveFJl
Y3QoKTsKKyAgICBMYXlvdXRSZWN0IHBhcmVudFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKICAg
ICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uID0gMDsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0gdG9SZW5kZXJMaXN0
Qm94KG1fcmVuZGVyZXIpLT5pdGVtQm91bmRpbmdCb3hSZWN0KHBhcmVudFJlY3QubG9jYXRpb24o
KSwgaSk7CisgICAgICAgIExheW91dFJlY3QgcmVjdCA9IHRvUmVuZGVyTGlzdEJveChtX3JlbmRl
cmVyKS0+aXRlbUJvdW5kaW5nQm94UmVjdChwYXJlbnRSZWN0LmxvY2F0aW9uKCksIGkpOwogICAg
ICAgICAvLyBUaGUgY2FzdCB0byBIVE1MRWxlbWVudCBiZWxvdyBpcyBzYWZlIGJlY2F1c2UgdGhl
IG9ubHkgb3RoZXIgcG9zc2libGUgbGlzdEl0ZW0gdHlwZQogICAgICAgICAvLyB3b3VsZCBiZSBh
IFdNTEVsZW1lbnQsIGJ1dCBXTUwgYnVpbGRzIGRvbid0IHVzZSBhY2Nlc3NpYmlsaXR5IGZlYXR1
cmVzIGF0IGFsbC4KICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMocG9pbnQpKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eC5oCShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOiAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9u
QWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCShyZXZpc2lvbiA5MzE3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw5ICs4Myw5IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb246OmlzU2VsZWMKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQqPihtX29wdGlvbkVsZW1lbnQpLT5zZWxlY3RlZCgpOwogfQogCi1JbnRSZWN0
IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjplbGVtZW50UmVjdCgpIGNvbnN0CitMYXlvdXRS
ZWN0IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjplbGVtZW50UmVjdCgpIGNvbnN0CiB7Ci0g
ICAgSW50UmVjdCByZWN0OworICAgIExheW91dFJlY3QgcmVjdDsKICAgICBpZiAoIW1fb3B0aW9u
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAgICAgCkBAIC05Nyw3ICs5Nyw3IEBAIElu
dFJlY3QgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmVsZW0KICAgICBpZiAoIWxpc3RCb3hS
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIHJlY3Q7CiAgICAgCi0gICAgSW50UmVjdCBwYXJlbnRS
ZWN0ID0gbGlzdEJveFJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKGxpc3RCb3hSZW5kZXJlciktPmJvdW5kaW5nQm94UmVjdCgpOworICAgIExheW91dFJl
Y3QgcGFyZW50UmVjdCA9IGxpc3RCb3hSZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShsaXN0Qm94UmVuZGVyZXIpLT5ib3VuZGluZ0JveFJlY3QoKTsKICAg
ICBpbnQgaW5kZXggPSBsaXN0Qm94T3B0aW9uSW5kZXgoKTsKICAgICBpZiAoaW5kZXggIT0gLTEp
CiAgICAgICAgIHJlY3QgPSB0b1JlbmRlckxpc3RCb3gobGlzdEJveFJlbmRlcmVyKS0+aXRlbUJv
dW5kaW5nQm94UmVjdChwYXJlbnRSZWN0LmxvY2F0aW9uKCksIGluZGV4KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgJKHJldmlzaW9uIDkzMTcwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIEludFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJl
Y3QgZWxlbWVudFJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudE9iamVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAkocmV2
aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNhblNldAogICAgIHJldHVybiBpc0VuYWJs
ZWQoKTsKIH0KIAotSW50UmVjdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmVsZW1lbnRS
ZWN0KCkgY29uc3QKK0xheW91dFJlY3QgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjplbGVt
ZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0KCk7CiAgICAgQVNTRVJUKHBhcmVudC0+aXNNZW51TGlzdFBvcHVwKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbi5oCShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gTWVudUxpc3RPcHRpb25Sb2xlOyB9CiAg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBlbGVtZW50UmVjdCgp
LnNpemUoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
ZWxlbWVudFJlY3QoKS5zaXplKCk7IH0KIAogICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxl
bWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2Jq
ZWN0KCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgbmFtZUZvck1TQUEoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCk7CiAgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFs
dWUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9lbGVtZW50OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDggKzUxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0UG9w
dXAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1
YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gTGF5b3V0U2l6ZSgpOyB9CiAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBNZW51
TGlzdFBvcHVwUm9sZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MywxMCAr
MzkzLDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBQ29udHJvbCgKICAgICB8
fCBhcmlhUm9sZSA9PSBDb21ib0JveFJvbGUgfHwgYXJpYVJvbGUgPT0gU2xpZGVyUm9sZTsgCiB9
CiAKLUludFBvaW50IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsaWNrUG9pbnQoKSBjb25zdAorTGF5
b3V0UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xpY2tQb2ludCgpIGNvbnN0CiB7Ci0gICAg
SW50UmVjdCByZWN0ID0gZWxlbWVudFJlY3QoKTsKLSAgICByZXR1cm4gSW50UG9pbnQocmVjdC54
KCkgKyByZWN0LndpZHRoKCkgLyAyLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgLyAyKTsKKyAg
ICBMYXlvdXRSZWN0IHJlY3QgPSBlbGVtZW50UmVjdCgpOworICAgIHJldHVybiBMYXlvdXRQb2lu
dChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSAv
IDIpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByZXNzKCkgY29uc3QKQEAgLTEx
NDQsNyArMTE0NCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdDoK
IC8vIExhY2tpbmcgY29uY3JldGUgZXZpZGVuY2Ugb2Ygb3JpZW50YXRpb24sIGhvcml6b250YWwg
bWVhbnMgd2lkdGggPiBoZWlnaHQuIHZlcnRpY2FsIGlzIGhlaWdodCA+IHdpZHRoOwogQWNjZXNz
aWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29u
c3QKIHsKLSAgICBJbnRSZWN0IGJvdW5kcyA9IGVsZW1lbnRSZWN0KCk7CisgICAgTGF5b3V0UmVj
dCBib3VuZHMgPSBlbGVtZW50UmVjdCgpOwogICAgIGlmIChib3VuZHMuc2l6ZSgpLndpZHRoKCkg
PiBib3VuZHMuc2l6ZSgpLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uSG9yaXpvbnRhbDsKICAgICBpZiAoYm91bmRzLnNpemUoKS5oZWlnaHQoKSA+IGJv
dW5kcy5zaXplKCkud2lkdGgoKSkKQEAgLTEyODcsMTQgKzEyODcsMTQgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFMaQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2Fz
ZShsaXZlUmVnaW9uLCAicG9saXRlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobGl2ZVJlZ2lvbiwg
ImFzc2VydGl2ZSIpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsgCiAg
ICAgLy8gU2VuZCB0aGUgaGl0IHRlc3QgYmFjayBpbnRvIHRoZSBzdWItZnJhbWUgaWYgbmVjZXNz
YXJ5LgogICAgIGlmIChpc0F0dGFjaG1lbnQoKSkgewogICAgICAgICBXaWRnZXQqIHdpZGdldCA9
IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgcG9p
bnQgZm9yIHRoZSB3aWRnZXQncyBib3VuZHMuCiAgICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0
LT5pc0ZyYW1lVmlldygpKQotICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUod2lkZ2V0KS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9pbnQocG9pbnQgLSB3
aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCktPmFjY2Vzc2liaWxpdHlIaXRUZXN0KHRv
UG9pbnQocG9pbnQgLSB3aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4odGhpcyk7IApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgJKHJldmlzaW9uIDkzMTcwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
Zm5kZWYgQWNjZXNzaWJpbGl0eU9iamVjdF9oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlPYmplY3Rf
aAogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00NTUsOSArNDU1LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mKSB7
IH0KICAgICAKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0IHRvIHJldHVybiB0
aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgLy8gQ2Fs
bGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMgd2hp
Y2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCi0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Q7CiAKQEAg
LTQ5NiwxMCArNDk2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVj
dCogYW5jaG9yRWxlbWVudEZvck5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgRWxlbWVudCogYW5j
aG9yRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFj
dGlvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJv
dW5kaW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwg
SW50UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCkuc2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRQb2ludCBjbGlja1BvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnRSZWN0KCkuc2l6ZSgpOyB9CisgICAgdmly
dHVhbCBMYXlvdXRQb2ludCBjbGlja1BvaW50KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBsYWlu
VGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3QgeyByZXR1cm4gUGxhaW5UZXh0UmFu
Z2UoKTsgfQogICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc2Vs
ZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQpAQCAtNTczLDcgKzU3Myw3IEBAIHB1YmxpYzoKICAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3Q7CiAKICAgICBTdHJpbmcgc3RyaW5nRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEludFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UmKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExh
eW91dFJlY3QgYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KICAgICBpbnQgbGVuZ3Ro
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IHsgfQogCkBAIC02MDQsNyArNjA0LDcgQEAg
cHVibGljOgogICAgIFBsYWluVGV4dFJhbmdlIGRvQVhTdHlsZVJhbmdlRm9ySW5kZXgodW5zaWdu
ZWQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qg
eyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGRvQVhCb3VuZHNG
b3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3Qo
KTsgfQogICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbihOb2RlKiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBkb0FYTGluZUZv
ckluZGV4KHVuc2lnbmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gOTMx
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsNyArNjg0LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1JlYWRPbgogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc09mZlNjcmVlbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyZXIpOwotICAg
IEludFJlY3QgY29udGVudFJlY3QgPSBtX3JlbmRlcmVyLT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxv
d1JlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGNvbnRlbnRSZWN0ID0gbV9yZW5kZXJlci0+YWJzb2x1
dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9yZW5kZXJl
ci0+ZnJhbWUoKS0+dmlldygpOwogICAgIEZsb2F0UmVjdCB2aWV3UmVjdCA9IHZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpOwogICAgIHZpZXdSZWN0LmludGVyc2VjdChjb250ZW50UmVjdCk7CkBA
IC0xNDE0LDEyICsxNDE0LDEyIEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3MKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUludFJlY3QgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKIHsKICAgICBSZW5kZXJP
YmplY3QqIG9iaiA9IG1fcmVuZGVyZXI7CiAgICAgCiAgICAgaWYgKCFvYmopCi0gICAgICAgIHJl
dHVybiBJbnRSZWN0KCk7CisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAgCiAgICAg
aWYgKG9iai0+bm9kZSgpKSAvLyBJZiB3ZSBhcmUgYSBjb250aW51YXRpb24sIHdlIHdhbnQgdG8g
bWFrZSBzdXJlIHRvIHVzZSB0aGUgcHJpbWFyeSByZW5kZXJlci4KICAgICAgICAgb2JqID0gb2Jq
LT5ub2RlKCktPnJlbmRlcmVyKCk7CkBAIC0xNDM1LDExICsxNDM1LDExIEBAIEludFJlY3QgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmQKICAgICAgICAgb2JqLT5hYnNvbHV0ZUZvY3Vz
UmluZ1F1YWRzKHF1YWRzKTsKICAgICBjb25zdCBzaXplX3QgbiA9IHF1YWRzLnNpemUoKTsKICAg
ICBpZiAoIW4pCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CiAKLSAgICBJbnRSZWN0IHJlc3VsdDsKKyAgICBMYXlvdXRSZWN0IHJlc3VsdDsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICBJbnRSZWN0IHIg
PSBxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOworICAgICAgICBMYXlvdXRSZWN0IHIg
PSBxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICBpZiAoIXIuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAg
ICAgICAgICAgICAgICAgb2JqLT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwpA
QCAtMTQ1NCwyMSArMTQ1NCwyMSBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmJvdW5kCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKLUludFJlY3QgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y2hlY2tib3hPclJhZGlvUmVjdCgpIGNvbnN0CitMYXlvdXRSZWN0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1JlY3QoKSBjb25zdAogewog
ICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICAgICAg
cmV0dXJuIExheW91dFJlY3QoKTsKICAgICAKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9
IGxhYmVsRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgp
KSk7CiAgICAgaWYgKCFsYWJlbCB8fCAhbGFiZWwtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biBib3VuZGluZ0JveFJlY3QoKTsKICAgICAKLSAgICBJbnRSZWN0IGxhYmVsUmVjdCA9IGF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUobGFiZWwtPnJlbmRlcmVyKCkpLT5lbGVtZW50UmVjdCgp
OworICAgIExheW91dFJlY3QgbGFiZWxSZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShsYWJlbC0+cmVuZGVyZXIoKSktPmVsZW1lbnRSZWN0KCk7CiAgICAgbGFiZWxSZWN0LnVuaXRl
KGJvdW5kaW5nQm94UmVjdCgpKTsKICAgICByZXR1cm4gbGFiZWxSZWN0OwogfQogCi1JbnRSZWN0
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKK0xheW91dFJl
Y3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogewogICAg
IC8vIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIHNob3VsZCBlbmNvbXBhc3MgaXRzIGxhYmVs
CiAgICAgaWYgKGlzQ2hlY2tib3hPclJhZGlvKCkpCkBAIC0xNDc3LDEzICsxNDc3LDEzIEBAIElu
dFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWUKICAgICByZXR1cm4gYm91bmRp
bmdCb3hSZWN0KCk7CiB9CiAKLUludFNpemUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2l6
ZSgpIGNvbnN0CitMYXlvdXRTaXplIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNpemUoKSBj
b25zdAogewotICAgIEludFJlY3QgcmVjdCA9IGVsZW1lbnRSZWN0KCk7CisgICAgTGF5b3V0UmVj
dCByZWN0ID0gZWxlbWVudFJlY3QoKTsKICAgICByZXR1cm4gcmVjdC5zaXplKCk7CiB9CiAKLUlu
dFBvaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsaWNrUG9pbnQoKSBjb25zdAorTGF5
b3V0UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2xpY2tQb2ludCgpIGNvbnN0CiB7
CiAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IHBvc2l0aW9uIHVubGVzcyB0aGlzIGlzIGFuIGVkaXRh
YmxlIHdlYiBhcmVhLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB0aGUgc2VsZWN0aW9uIGJvdW5kcy4K
ICAgICBpZiAoIWlzV2ViQXJlYSgpIHx8IGlzUmVhZE9ubHkoKSkKQEAgLTE0OTEsMTEgKzE0OTEs
MTEgQEAgSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2xpYwogICAgIAogICAg
IFZpc2libGVTZWxlY3Rpb24gdmlzU2VsZWN0aW9uID0gc2VsZWN0aW9uKCk7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgcmFuZ2UgPSBWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNTZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIHZpc1NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwotICAgIEludFJlY3Qg
Ym91bmRzID0gYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UocmFuZ2UpOworICAgIExheW91
dFJlY3QgYm91bmRzID0gYm91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UocmFuZ2UpOwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBib3VuZHMuc2V0TG9jYXRpb24obV9yZW5kZXJlci0+ZG9jdW1l
bnQoKS0+dmlldygpLT5zY3JlZW5Ub0NvbnRlbnRzKGJvdW5kcy5sb2NhdGlvbigpKSk7CiAjZW5k
aWYgICAgICAgIAotICAgIHJldHVybiBJbnRQb2ludChib3VuZHMueCgpICsgKGJvdW5kcy53aWR0
aCgpIC8gMiksIGJvdW5kcy55KCkgLSAoYm91bmRzLmhlaWdodCgpIC8gMikpOworICAgIHJldHVy
biBMYXlvdXRQb2ludChib3VuZHMueCgpICsgKGJvdW5kcy53aWR0aCgpIC8gMiksIGJvdW5kcy55
KCkgLSAoYm91bmRzLmhlaWdodCgpIC8gMikpOwogfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0
CkBAIC0xODk1LDcgKzE4OTUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liCiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgcmVuZGVy
ZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1lbnNpb25hbCBmaWxlIGltYWdlCiAg
ICAgICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBJ
bnRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemUoaW1hZ2Ut
PnZpZXcoKS0+em9vbUZhY3RvcigpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRTaXplIGltYWdl
U2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemUoaW1hZ2UtPnZpZXcoKS0+em9v
bUZhY3RvcigpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW1hZ2VTaXplLmhlaWdodCgpIDw9
IDEgfHwgaW1hZ2VTaXplLndpZHRoKCkgPD0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjUzNCwxNSArMjUzNCwxNSBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5k
ZXhGb3JWCiAjZW5kaWYKIH0KIAotSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpi
b3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UpIGNvbnN0CitMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblJhbmdlJiB2aXNpYmxlUG9zaXRpb25SYW5nZSkgY29uc3QKIHsKICAgICBpZiAodmlzaWJs
ZVBvc2l0aW9uUmFuZ2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAg
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAgCiAgICAgLy8gQ3JlYXRlIGEgbXV0YWJsZSBW
aXNpYmxlUG9zaXRpb25SYW5nZS4KICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSByYW5nZSh2aXNp
YmxlUG9zaXRpb25SYW5nZSk7Ci0gICAgSW50UmVjdCByZWN0MSA9IHJhbmdlLnN0YXJ0LmFic29s
dXRlQ2FyZXRCb3VuZHMoKTsKLSAgICBJbnRSZWN0IHJlY3QyID0gcmFuZ2UuZW5kLmFic29sdXRl
Q2FyZXRCb3VuZHMoKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QxID0gcmFuZ2Uuc3RhcnQuYWJzb2x1
dGVDYXJldEJvdW5kcygpOworICAgIExheW91dFJlY3QgcmVjdDIgPSByYW5nZS5lbmQuYWJzb2x1
dGVDYXJldEJvdW5kcygpOwogICAgIAogICAgIC8vIHJlYWRqdXN0IGZvciBwb3NpdGlvbiBhdCB0
aGUgZWRnZSBvZiBhIGxpbmUuICBUaGlzIGlzIHRvIGV4Y2x1ZGUgbGluZSByZWN0IHRoYXQgZG9l
c24ndCBuZWVkIHRvIGJlIGFjY291bnRlZCBpbiB0aGUgcmFuZ2UgYm91bmRzCiAgICAgaWYgKHJl
Y3QyLnkoKSAhPSByZWN0MS55KCkpIHsKQEAgLTI1NTcsMTMgKzI1NTcsMTMgQEAgSW50UmVjdCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZAogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIEludFJlY3Qgb3VycmVjdCA9IHJlY3QxOworICAgIExheW91dFJlY3Qgb3VycmVjdCA9IHJl
Y3QxOwogICAgIG91cnJlY3QudW5pdGUocmVjdDIpOwogICAgIAogICAgIC8vIGlmIHRoZSByZWN0
YW5nbGUgc3BhbnMgbGluZXMgYW5kIGNvbnRhaW5zIG11bHRpcGxlIHRleHQgY2hhcnMsIHVzZSB0
aGUgcmFuZ2UncyBib3VuZGluZyBib3ggaW50ZWFkCiAgICAgaWYgKHJlY3QxLm1heFkoKSAhPSBy
ZWN0Mi5tYXhZKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBkYXRhUmFuZ2UgPSBtYWtlUmFu
Z2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7Ci0gICAgICAgIEludFJlY3QgYm91bmRpbmdCb3gg
PSBkYXRhUmFuZ2UtPmJvdW5kaW5nQm94KCk7CisgICAgICAgIExheW91dFJlY3QgYm91bmRpbmdC
b3ggPSBkYXRhUmFuZ2UtPmJvdW5kaW5nQm94KCk7CiAgICAgICAgIFN0cmluZyByYW5nZVN0cmlu
ZyA9IHBsYWluVGV4dChkYXRhUmFuZ2UuZ2V0KCkpOwogICAgICAgICBpZiAocmFuZ2VTdHJpbmcu
bGVuZ3RoKCkgPiAxICYmICFib3VuZGluZ0JveC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBvdXJy
ZWN0ID0gYm91bmRpbmdCb3g7CkBAIC0yNTkwLDcgKzI1OTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNldFNlbGVjCiAgICAgfSAgICAKIH0KIAotVmlzaWJsZVBvc2l0aW9u
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKK1Zpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CkBAIC0yNjExLDkgKzI2MTEsOSBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjCiAgICAgTm9kZSogaW5uZXJOb2RlID0gMDsKICAgICAKICAgICAv
LyBsb2NhdGUgdGhlIG5vZGUgY29udGFpbmluZyB0aGUgcG9pbnQKLSAgICBJbnRQb2ludCBwb2lu
dFJlc3VsdDsKKyAgICBMYXlvdXRQb2ludCBwb2ludFJlc3VsdDsKICAgICB3aGlsZSAoMSkgewot
ICAgICAgICBJbnRQb2ludCBvdXJwb2ludDsKKyAgICAgICAgTGF5b3V0UG9pbnQgb3VycG9pbnQ7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBvdXJwb2ludCA9IGZyYW1lVmlldy0+c2NyZWVu
VG9Db250ZW50cyhwb2ludCk7CiAjZWxzZQpAQCAtMjc1NywxMSArMjc1NywxMSBAQCBTdHJpbmcg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZG9BWFN0CiAvLyBUaGUgYm91bmRpbmcgcmVjdGFu
Z2xlIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxpdHkgb2JqZWN0
IHRoYXQgaXMKIC8vIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcmFuZ2UuIFRoaXMgaXMgdGhlIGJv
dW5kaW5nIHJlY3RhbmdsZSBhIHNpZ2h0ZWQgdXNlciB3b3VsZCBzZWUKIC8vIG9uIHRoZSBkaXNw
bGF5IHNjcmVlbiwgaW4gcGl4ZWxzLgotSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpkb0FYQm91bmRzRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKSBjb25zdAor
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2Uo
Y29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlKSBjb25zdAogewogICAgIGlmIChhbGxvd3NUZXh0
UmFuZ2VzKCkpCiAgICAgICAgIHJldHVybiBib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZSh2
aXNpYmxlUG9zaXRpb25SYW5nZUZvclJhbmdlKHJhbmdlKSk7Ci0gICAgcmV0dXJuIEludFJlY3Qo
KTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhU
TUxBcmVhRWxlbWVudCogYXJlYSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDkzMTcwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNkZWZpbmUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdF9oCiAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjMsMTAg
KzE2NCwxMCBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbWVudUZvck1lbnVC
dXR0b24oKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtZW51QnV0dG9uRm9yTWVu
dSgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZGluZ0JveFJlY3QoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY2xpY2tQb2lu
dCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIExheW91dFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UG9pbnQgY2xp
Y2tQb2ludCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KICAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CkBAIC0yMjks
NyArMjMwLDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5k
c0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNBUklBRmxvd1RvKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKQEAgLTI0MCw3ICsyNDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQVJJQUdyYWJiZWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgCi0g
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2lnbmVkIGluZGV4VmFsdWUs
IGJvb2wgbGFzdEluZGV4T0spIGNvbnN0OyAgICAKICAgICB2aXJ0dWFsIGludCBpbmRleChjb25z
dCBWaXNpYmxlUG9zaXRpb24mKSBjb25zdDsKIApAQCAtMjUxLDcgKzI1Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBj
b25zdDsKICAgICAKICAgICB2aXJ0dWFsIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0Zv
clJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0OwogICAg
IAogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Q7CkBAIC0yODksNyArMjkwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFsdGVyU2xpZGVyVmFsdWUoYm9vbCBpbmNyZWFzZSk7CiAg
ICAgdm9pZCBjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKTsKICAgICBib29sIGlzTmF0
aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7Ci0gICAgSW50UmVjdCBjaGVja2JveE9yUmFkaW9S
ZWN0KCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7
CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCosIGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gOTMxNzApCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShkb2MtPnJlbmRlcmVyKCkpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAg
IGlmICghd2ViQXJlYSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsCiAgICAgcmV0dXJuIHdlYkFyZWEtPmFjY2Vzc2liaWxpdHlIaXRU
ZXN0KHBvaW50KTsKIH0KIAotSW50UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZWxlbWVu
dFJlY3QoKSBjb25zdAorTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZWxlbWVu
dFJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3Njcm9sbFZpZXctPmZyYW1lUmVjdCgpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgTGF5
b3V0UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgY2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5l
Y2Vzc2FyeSgpOwogICAgIAogICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmll
dygpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgCiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3Bw
CShyZXZpc2lvbiA5MzE3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMCBAQCBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI+IEFjY2VzCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKHNjcm9sbGJhcikpOwogfQogICAgIAotSW50
UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyOjplbGVtZW50UmVjdCgpIGNvbnN0CitMYXlvdXRS
ZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXI6OmVsZW1lbnRSZWN0KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fc2Nyb2xsYmFyKQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOworICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdCgpOwogICAgIAogICAgIHJldHVybiBtX3Njcm9sbGJhci0+ZnJhbWVSZWN0
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuaAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJp
bGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxCYXJSb2xlOyB9CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsMTUg
KzE3NCwxNSBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYj4gQWNjCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIoKSk7CiB9CiAgICAg
Ci1JbnRSZWN0IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6ZWxlbWVudFJlY3QoKSBjb25zdAor
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmVsZW1lbnRSZWN0KCkgY29uc3QK
IHsKICAgICBSZW5kZXJPYmplY3QqIHNsaWRlclJlbmRlcmVyID0gbV9wYXJlbnRTbGlkZXItPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFzbGlkZXJSZW5kZXJlciB8fCAhc2xpZGVyUmVuZGVyZXItPmlz
U2xpZGVyKCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CiAgICAgcmV0dXJuIHNsaWRlclRodW1iRWxlbWVudE9mKHNsaWRlclJlbmRlcmVy
LT5ub2RlKCkpLT5nZXRSZWN0KCk7CiB9CiAKLUludFNpemUgQWNjZXNzaWJpbGl0eVNsaWRlclRo
dW1iOjpzaXplKCkgY29uc3QKK0xheW91dFNpemUgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iOjpz
aXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gZWxlbWVudFJlY3QoKS5zaXplKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlk
ZXIuaAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQYXJlbnRPYmplY3QoQWNjZXNzaWJpbGl0eVNsaWRlciogc2xpZGVy
KSB7IG1fcGFyZW50U2xpZGVyID0gc2xpZGVyOyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFNsaWRlcjsgfQog
Ci0gICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
ZWxlbWVudFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgc2l6ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAkocmV2aXNpb24gOTMxNzApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEz
ICs2MywxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6c2V0UGFyZW50CiAgICAg
Y2xlYXJDaGlsZHJlbigpOwogfQogICAgIAotSW50UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW46OmVsZW1lbnRSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uOjplbGVtZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgLy8gdGhpcyB3aWxsIGJlIGZpbGxlZCBp
biB3aGVuIGFkZENoaWxkcmVuIGlzIGNhbGxlZAogICAgIHJldHVybiBtX2NvbHVtblJlY3Q7CiB9
CiAKLUludFNpemUgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpzaXplKCkgY29uc3QKK0xheW91
dFNpemUgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1
cm4gZWxlbWVudFJlY3QoKS5zaXplKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgJKHJldmlzaW9u
IDkzMTcwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEludFNp
emUgc2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOiAgICAKICAgICBBY2Nl
c3NpYmlsaXR5VGFibGUqIG1fcGFyZW50VGFibGU7CiAgICAgaW50IG1fY29sdW1uSW5kZXg7Ci0g
ICAgSW50UmVjdCBtX2NvbHVtblJlY3Q7CisgICAgTGF5b3V0UmVjdCBtX2NvbHVtblJlY3Q7CiAg
ICAgCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5k
ZXJUYWJsZVNlY3Rpb24qLCBib29sIHRoVGFnUmVxdWlyZWQpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUhlYWRlckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDkzMTcwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NiwxOCArNTYsMTggQEAgY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eQogICAgICAgICBhZGRDaGlsZHJlbigpOwogICAgIHJldHVybiBt
X2NoaWxkcmVuOwogfQotICAgCi1JbnRSZWN0IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRh
aW5lcjo6ZWxlbWVudFJlY3QoKSBjb25zdAorCitMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lcjo6ZWxlbWVudFJlY3QoKSBjb25zdAogewogICAgIC8vIHRoaXMgd2ls
bCBiZSBmaWxsZWQgaW4gd2hlbiBhZGRDaGlsZHJlbiBpcyBjYWxsZWQKICAgICByZXR1cm4gbV9o
ZWFkZXJSZWN0OwogfQotICAgIAotSW50U2l6ZSBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250
YWluZXI6OnNpemUoKSBjb25zdAorCitMYXlvdXRTaXplIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRl
ckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnRSZWN0KCkuc2l6
ZSgpOwogfQotICAgIAorCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhcmVudFRhYmxl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCShyZXZpc2lvbiA5MzE3MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVy
Q29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKCk7
CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgCi0gICAgdmlydHVhbCBJbnRT
aXplIHNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3Np
YmlsaXR5VGFibGUqIG1fcGFyZW50VGFibGU7Ci0gICAgSW50UmVjdCBtX2hlYWRlclJlY3Q7Cisg
ICAgTGF5b3V0UmVjdCBtX2hlYWRlclJlY3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKIH07IApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDkzMTcwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEz
NzEsNyArMTM3MSw3IEBAIC0gKGlkKXRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgogCiAtIChO
U1ZhbHVlICopcG9zaXRpb24KIHsKLSAgICBJbnRSZWN0IHJlY3QgPSBtX29iamVjdC0+ZWxlbWVu
dFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX29iamVjdC0+ZWxlbWVudFJlY3QoKTsK
ICAgICBOU1BvaW50IHBvaW50OwogICAgIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9v
YmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CkBAIC0xMzg4LDcgKzEzODgsNyBAQCAtIChOU1Zh
bHVlICopcG9zaXRpb24KICAgICAgICAgCiAgICAgICAgIE5TUG9pbnQgc2Nyb2xsUG9zaXRpb24g
PSBOU01ha2VQb2ludCgwLCAwKTsKICAgICAgICAgaWYgKGZyYW1lVmlldyAmJiAhbV9vYmplY3Qt
PmlzU2Nyb2xsYmFyKCkgJiYgIW1fb2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkgewotICAgICAgICAg
ICAgSW50UG9pbnQgZnJhbWVTY3JvbGxQb3MgPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCk7
CisgICAgICAgICAgICBMYXlvdXRQb2ludCBmcmFtZVNjcm9sbFBvcyA9IGZyYW1lVmlldy0+c2Ny
b2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gTlNNYWtlUG9pbnQo
ZnJhbWVTY3JvbGxQb3MueCgpLCBmcmFtZVNjcm9sbFBvcy55KCkpOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOihOU1N0cgogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBtX29i
amVjdC0+aXNFbmFibGVkKCldOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzogTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgSW50U2l6ZSBz
ID0gbV9vYmplY3QtPnNpemUoKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBzID0gbV9vYmplY3QtPnNp
emUoKTsKICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6IE5TTWFrZVNpemUo
cy53aWR0aCgpLCBzLmhlaWdodCgpKV07CiAgICAgfQogCkBAIC0yNTY1LDcgKzI1NjUsNyBAQCAt
ICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gU2ltdWxhdGUgYSBjbGljayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvYmplY3QuCi0gICAg
SW50UG9pbnQgY2xpY2tQb2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CisgICAgTGF5b3V0
UG9pbnQgY2xpY2tQb2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CiAgICAgCiAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQb2ludCwgUmlnaHRC
dXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
Y3VycmVudFRpbWUoKSk7CiAgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZW5kQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>