<?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>100472</bug_id>
          
          <creation_ts>2012-10-26 00:00:55 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add Ewk_Color_Picker API</short_desc>
          <delta_ts>2012-10-26 04:32:47 -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>WebKit EFL</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>100226</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751616</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 00:00:55 -0700</bug_when>
    <thetext>We should move the color picker code out of EwkView and into a new Ewk_Color_Picker class to avoid cluttering the view code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751764</commentid>
    <comment_count>1</comment_count>
      <attachid>170865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 03:11:17 -0700</bug_when>
    <thetext>Created attachment 170865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751770</commentid>
    <comment_count>2</comment_count>
      <attachid>170865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 03:18:45 -0700</bug_when>
    <thetext>Comment on attachment 170865
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170865&amp;action=review

&gt; Source/WebKit2/UIProcess/API/efl/ewk_color_picker.h:61
&gt; +EAPI Eina_Bool ewk_color_picker_color_get(Ewk_Color_Picker *color_picker, int *r, int *g, int *b, int *a);

Oops, argument should be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751777</commentid>
    <comment_count>3</comment_count>
      <attachid>170867</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 03:23:19 -0700</bug_when>
    <thetext>Created attachment 170867
Patch for landing

Marked the getter argument as const, as per WebKitEFL coding style. Sorry about that.

Could someone please cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751781</commentid>
    <comment_count>4</comment_count>
      <attachid>170867</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 03:25:49 -0700</bug_when>
    <thetext>Comment on attachment 170867
Patch for landing

Rejecting attachment 170867 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
I/efl/ewk_color_picker_private.h
patching file Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
patching file Source/WebKit2/UIProcess/API/efl/ewk_view.h
patching file Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_color_picker.cpp
patching file Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp
patching file Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14566995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751792</commentid>
    <comment_count>5</comment_count>
      <attachid>170872</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-26 03:32:19 -0700</bug_when>
    <thetext>Created attachment 170872
Patch for landing

Rebased on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751853</commentid>
    <comment_count>6</comment_count>
      <attachid>170872</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 04:32:40 -0700</bug_when>
    <thetext>Comment on attachment 170872
Patch for landing

Clearing flags on attachment: 170872

Committed r132617: &lt;http://trac.webkit.org/changeset/132617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751854</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 04:32:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170865</attachid>
            <date>2012-10-26 03:11:17 -0700</date>
            <delta_ts>2012-10-26 03:23:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100472_color_picker_api.patch</filename>
            <type>text/plain</type>
            <size>29363</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjOWYxNGIxLi5mN2NmOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTItMTAtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQ29sb3JfUGlja2VyIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDcyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgY29s
b3IgcGlja2VyIGNvZGUgb3V0IG9mIEV3a1ZpZXdJbXBsIGFuZCBpbnRvCisgICAgICAgIGEgbmV3
IEV3a19Db2xvcl9QaWNrZXIgY2xhc3MgdG8gYXZvaWQgY2x1dHRlcmluZyB0aGUKKyAgICAgICAg
dmlldyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVxdWVzdENvbG9yUGlja2Vy
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChFd2tWaWV3SW1wbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHA6IEFkZGVk
LgorICAgICAgICAoRXdrX0NvbG9yX1BpY2tlcjo6RXdrX0NvbG9yX1BpY2tlcik6CisgICAgICAg
IChFd2tfQ29sb3JfUGlja2VyOjpzZXRDb2xvcik6CisgICAgICAgIChFd2tfQ29sb3JfUGlja2Vy
Ojpjb2xvcik6CisgICAgICAgIChld2tfY29sb3JfcGlja2VyX2NvbG9yX3NldCk6CisgICAgICAg
IChld2tfY29sb3JfcGlja2VyX2NvbG9yX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbG9yX3BpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChFd2tfQ29sb3Jf
UGlja2VyKToKKyAgICAgICAgKEV3a19Db2xvcl9QaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbG9yX3BpY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAob25Db2xvclBpY2tlckRvbmUp
OgorICAgICAgICAoc2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChzaG93Q29sb3JQaWNr
ZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tl
ckJ5UmVtb3ZpbmdFbGVtZW50KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVVJQ2xpZW50
RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorCiAyMDEyLTEwLTI2ICBKYWVodW4gTGltICA8bGphZWh1
bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHtnZXQsc2V0fUZsb2F0VmFs
dWVGb3JLZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODJhMTRhMS4uZjcwZWRhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ0LDYgKzQ0LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcAorICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCkBAIC0yNDAsNiAr
MjQxLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIgogICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0Lmgi
CiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIgogICAgICIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVf
bWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgpAQCAtMzQwLDYgKzM0Miw3IEBAIFRBUkdFVF9MSU5L
X0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNfTElCUkFSSUVTfSkK
ICMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUuCiBT
RVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dAorICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJfY29udGV4dAogICAg
IHRlc3RfZXdrMl9jb250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzCiAgICAgdGVzdF9ld2syX2Nvb2tp
ZV9tYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaApp
bmRleCBhNTJmYzZmLi43ZmRhNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgImV3a19iYWNrX2Zv
cndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCisj
aW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAj
aW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pv
Yi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
Y3BwCmluZGV4IDA3MjdjODEuLjMzZTJlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMxLDExICszMSwxMSBAQAogI2luY2x1
ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgiCi0j
aW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQ
cm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRl
eHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKQEAgLTM2MywyMCArMzYz
LDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KHNk
LT5pbWFnZSwgaW1hZ2VEYXRhKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQot
Ym9vbCBFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IpCi17Ci0gICAgaWYgKCFtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjb2xvclN0
cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5zZXJpYWxp
emVkKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNl
dENvbG9yKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29sb3JTdHJpbmcuZ2V0
KCkpOwotICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqIGluZm9ybXMgbG9h
ZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KQEAgLTgwNCwxNCArNzkwLDIwIEBAIGJv
b2wgRXdrVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAgKiBAaW50
ZXJuYWwKICAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgogICovCi12
b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwg
aW50IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3ZvaWQgRXdr
Vmlld0ltcGw6OnJlcXVlc3RDb2xvclBpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsKICAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsKIAotICAgIG1fY29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgIGlmICghc2QtPmFwaS0+aW5w
dXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Nv
bG9yUGlja2VyKQorICAgICAgICBkaXNtaXNzQ29sb3JQaWNrZXIoKTsKIAotICAgIHNkLT5hcGkt
PmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKKyAgICBtX2NvbG9y
UGlja2VyID0gRXdrX0NvbG9yX1BpY2tlcjo6Y3JlYXRlKGxpc3RlbmVyLCBjb2xvcik7CisKKyAg
ICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdChzZCwgbV9jb2xvclBpY2tlci5n
ZXQoKSk7CiB9CiAKIC8qKgpAQCAtODIwLDEyICs4MTIsMTYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6
cmVxdWVzdENvbG9yUGlja2VyKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0NvbG9yUGlj
a2VyUmUKICAqLwogdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKCkKIHsKKyAg
ICBpZiAoIW1fY29sb3JQaWNrZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOwogCi0gICAgbV9jb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CisgICAgaWYgKHNkLT5hcGktPmlucHV0X3BpY2tl
cl9jb2xvcl9kaXNtaXNzKQorICAgICAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlz
bWlzcyhzZCk7CiAKLSAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyhzZCk7
CisgICAgbV9jb2xvclBpY2tlci5jbGVhcigpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IDYxYTNiZGEuLjU5ZjUz
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aApAQCAtODMsNiArODMsNyBAQCBjbGFzcyBJbnRTaXplOwogfQogCiBjbGFzcyBFd2tfQmFja19G
b3J3YXJkX0xpc3Q7CitjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwogY2xhc3MgRXdrX0NvbnRleHQ7
CiBjbGFzcyBFd2tfRG93bmxvYWRfSm9iOwogY2xhc3MgRXdrX0Vycm9yOwpAQCAtMTM2LDEwICsx
MzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdSZWdpb24oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotICAgIGJvb2wgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgdm9pZCBhZGRUb1BhZ2VWaWV3TWFwKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVGcm9tUGFnZVZpZXdN
YXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogICAgIHN0YXRpYyBjb25zdCBFdmFzX09i
amVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1BhZ2VSZWYpOwpAQCAtMTU2LDcgKzE1
Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgdm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEsIFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisgICAgdm9pZCByZXF1ZXN0
Q29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgZGlzbWlzc0NvbG9yUGlja2VyKCk7CiAjZW5k
aWYKIApAQCAtMjcwLDEwICsyNjcsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYKLSAgICBXS1JldGFp
blB0cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+IG1fY29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lcjsKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9kaXNwbGF5VGltZXI7
CiAgICAgV1RGOjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlSZWN0czsKICAgICBP
d25QdHI8RXdrX1BvcHVwX01lbnU+IG1fcG9wdXBNZW51OworICAgIE93blB0cjxFd2tfQ29sb3Jf
UGlja2VyPiBtX2NvbG9yUGlja2VyOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdLUGFnZVJlZiwg
Y29uc3QgRXZhc19PYmplY3QqPiBQYWdlVmlld01hcDsKICAgICBzdGF0aWMgUGFnZVZpZXdNYXAg
cGFnZVZpZXdNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29sb3JfcGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb2xvcl9waWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQxMWJjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICAgQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgorCisjaW5jbHVkZSAiV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRl
ICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQorRXdrX0NvbG9yX1BpY2tlcjo6RXdrX0NvbG9yX1BpY2tlcihXS0NvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJSZWYgY29sb3JQaWNrZXJMaXN0ZW5lciwgY29uc3QgQ29sb3ImIGlu
aXRpYWxDb2xvcikKKyAgICA6IG1fY29sb3JQaWNrZXJMaXN0ZW5lcihjb2xvclBpY2tlckxpc3Rl
bmVyKQorICAgICwgbV9jb2xvcihpbml0aWFsQ29sb3IpCit7Cit9CisKK3ZvaWQgRXdrX0NvbG9y
X1BpY2tlcjo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBjb2xvclN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhjb2xvci5zZXJpYWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOworICAgIFdLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKG1fY29sb3JQaWNrZXJMaXN0ZW5lci5nZXQoKSwg
Y29sb3JTdHJpbmcuZ2V0KCkpOworfQorCitjb25zdCBDb2xvciYgRXdrX0NvbG9yX1BpY2tlcjo6
Y29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbG9yOworfQorI2VuZGlmCisKK0VpbmFf
Qm9vbCBld2tfY29sb3JfcGlja2VyX2NvbG9yX3NldChFd2tfQ29sb3JfUGlja2VyKiBjb2xvclBp
Y2tlciwgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbG9yUGlja2Vy
LCBmYWxzZSk7CisKKyAgICBjb2xvclBpY2tlci0+c2V0Q29sb3IoQ29sb3IociwgZywgYiwgYSkp
OworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCitFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xvcl9nZXQoRXdrX0NvbG9yX1BpY2tl
ciogY29sb3JQaWNrZXIsIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKK3sKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY29sb3JQaWNrZXIsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwociwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChnLCBmYWxz
ZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGIsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYSwgZmFsc2UpOworCisgICAgY29uc3QgQ29s
b3ImIGNvbG9yID0gY29sb3JQaWNrZXItPmNvbG9yKCk7CisgICAgKnIgPSBjb2xvci5yZWQoKTsK
KyAgICAqZyA9IGNvbG9yLmdyZWVuKCk7CisgICAgKmIgPSBjb2xvci5ibHVlKCk7CisgICAgKmEg
PSBjb2xvci5hbHBoYSgpOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbG9yX3BpY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjcwZTJhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29sb3JfcGlja2VyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAgIENvcHlyaWdo
dCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfY29s
b3JfcGlja2VyX2gKKyNkZWZpbmUgZXdrX2NvbG9yX3BpY2tlcl9oCisKKyNpbmNsdWRlIDxFdmFz
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENy
ZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19Db2xvcl9QaWNrZXIuICovCit0eXBlZGVmIHN0
cnVjdCBFd2tfQ29sb3JfUGlja2VyIEV3a19Db2xvcl9QaWNrZXI7CisKKy8qKgorICogU2V0cyB0
aGUgc2VsZWN0ZWQgY29sb3IuCisgKgorICogVGhlIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCB3aGVuIGEgY29sb3IgaGFzIGJlZW4gcmVxdWVzdGVkIGJ5IHRoZSBkb2N1bWVudC4KKyAq
IElmIGNhbGxlZCB3aGVuIHRoaXMgaXMgbm90IHRoZSBjYXNlIG9yIHdoZW4gdGhlIGlucHV0IHBp
Y2tlciBoYXMgYmVlbiBkaXNtaXNzZWQsIHRoaXMKKyAqIGZ1bmN0aW9uIHdpbGwgZmFpbCBhbmQg
cmV0dXJuIEVJTkFfRkFMU0UuCisgKgorICogQHBhcmFtIGNvbG9yX3BpY2tlciBjb2xvciBwaWNr
ZXIgb2JqZWN0CisgKiBAcGFyYW0gciByZWQgY2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQKKyAqIEBw
YXJhbSBnIGdyZWVuIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0CisgKiBAcGFyYW0gYiBibHVlIGNo
YW5uZWwgdmFsdWUgdG8gYmUgc2V0CisgKiBAcGFyYW0gYSBhbHBoYSBjaGFubmVsIHZhbHVlIHRv
IGJlIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xv
cl9zZXQoRXdrX0NvbG9yX1BpY2tlciAqY29sb3JfcGlja2VyLCBpbnQgciwgaW50IGcsIGludCBi
LCBpbnQgYSk7CisKKy8qKgorICogR2V0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLgor
ICoKKyAqIEBwYXJhbSBjb2xvcl9waWNrZXIgY29sb3IgcGlja2VyIG9iamVjdAorICogQHBhcmFt
IHIgcmVkIGNoYW5uZWwgdmFsdWUgdG8gYmUgZ2V0CisgKiBAcGFyYW0gZyBncmVlbiBjaGFubmVs
IHZhbHVlIHRvIGJlIGdldAorICogQHBhcmFtIGIgYmx1ZSBjaGFubmVsIHZhbHVlIHRvIGJlIGdl
dAorICogQHBhcmFtIGEgYWxwaGEgY2hhbm5lbCB2YWx1ZSB0byBiZSBnZXQKKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a19jb2xvcl9waWNrZXJfY29sb3JfZ2V0KEV3a19Db2xvcl9QaWNr
ZXIgKmNvbG9yX3BpY2tlciwgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW50ICphKTsKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19jb2xvcl9waWNrZXJf
aCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bG9yX3BpY2tlcl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yNzMxNDBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBld2tfY29sb3JfcGlja2VyX3ByaXZhdGVfaAorI2RlZmluZSBld2tfY29sb3JfcGlja2Vy
X3ByaXZhdGVfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNpbmNsdWRlICJX
S1JldGFpblB0ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCitjbGFzcyBFd2tfQ29sb3JfUGlja2VyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxFd2tfQ29sb3JfUGlja2VyPiBjcmVhdGUoV0tDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUmVmIGNvbG9yUGlja2VyTGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbml0aWFsQ29sb3IpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a19D
b2xvcl9QaWNrZXIoY29sb3JQaWNrZXJMaXN0ZW5lciwgaW5pdGlhbENvbG9yKSk7CisgICAgfQor
CisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBzZXRD
b2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitwcml2YXRlOgorICAgIEV3a19Db2xvcl9Q
aWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9yUGlja2VyTGlzdGVuZXIs
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpOworCisgICAgV0tSZXRhaW5QdHI8
V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmPiBtX2NvbG9yUGlja2VyTGlzdGVuZXI7Cisg
ICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKworI2VuZGlmIC8vIGV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggYWU1YzE0
Ny4uNWFmZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcApAQCAtOTg5LDE4ICs5ODksNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZl
bnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVybiBp
bXBsLT5tb3VzZUV2ZW50c0VuYWJsZWQoKTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2NvbG9y
X3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCByLCBpbnQgZywgaW50
IGIsIGludCBhKQotewotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwotCi0gICAgcmV0
dXJuIGltcGwtPnNldENvbG9yUGlja2VyQ29sb3IoV2ViQ29yZTo6Q29sb3IociwgZywgYiwgYSkp
OwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogRWluYV9Cb29sIGV3a192
aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9FdmVu
dF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVy
KiBtb2RpZmllcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGFjZDQzODkuLmVkZmFkMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtNzUsNiAr
NzUsNyBAQAogI2RlZmluZSBld2tfdmlld19oCiAKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJk
X2xpc3QuaCIKKyNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Nv
bnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vy
cm9yLmgiCkBAIC0xMzAsNyArMTMxLDcgQEAgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsK
IAogICAgIC8vIGNvbG9yIHBpY2tlcjoKICAgICAvLyAgIC0gU2hvd3MgYW5kIGhpZGVzIGNvbG9y
IHBpY2tlci4KLSAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCkoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKKyAgICBF
aW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCkoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QsIEV3a19Db2xvcl9QaWNrZXIgKmNvbG9yX3BpY2tlcik7CiAgICAgRWluYV9Cb29sICgq
aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKTsKIAog
ICAgIC8vIHN0b3JhZ2U6CkBAIC03MTEsMjMgKzcxMiw2IEBAIEVBUEkgRWluYV9Cb29sIGV3a192
aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVu
YWJsCiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dl
dChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKLS8qCi0gKiBTZXRzIHRoZSB1c2VyIGNob3NlbiBj
b2xvci4gVG8gYmUgdXNlZCB3aGVuIGltcGxlbWVudGluZyBhIGNvbG9yIHBpY2tlci4KLSAqCi0g
KiBUaGUgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYSBjb2xvciBoYXMgYmVl
biByZXF1ZXN0ZWQgYnkgdGhlIGRvY3VtZW50LgotICogSWYgY2FsbGVkIHdoZW4gdGhpcyBpcyBu
b3QgdGhlIGNhc2Ugb3Igd2hlbiB0aGUgaW5wdXQgcGlja2VyIGhhcyBiZWVuIGRpc21pc3NlZCwg
dGhpcwotICogZnVuY3Rpb24gd2lsbCBmYWlsIGFuZCByZXR1cm4gRUlOQV9GQUxTRS4KLSAqCi0g
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBjb2xvciBwaWNrZXIKLSAqIEBwYXJhbSBy
IHJlZCBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAotICogQHBhcmFtIGcgZ3JlZW4gY2hhbm5lbCB2
YWx1ZSB0byBiZSBzZXQKLSAqIEBwYXJhbSBiIGJsdWUgY2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQK
LSAqIEBwYXJhbSBhIGFscGhhIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0Ci0gKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1F
QVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0
ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Ci0KIC8qKgogICogRmVlZHMgdGhlIHRv
dWNoIGV2ZW50IHRvIHRoZSB2aWV3LgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb2xvcl9waWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbG9yX3BpY2tlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y1OWMzMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml9jb2xvcl9waWNrZXIuY3BwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdO
VQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVz
dEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVudmlyb25tZW50
LmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29yZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQq
IGVudmlyb25tZW50OworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitzdGF0aWMgY29u
c3QgaW50IGluaXRpYWxSZWQgPSAweDEyOworc3RhdGljIGNvbnN0IGludCBpbml0aWFsR3JlZW4g
PSAweDM0Oworc3RhdGljIGNvbnN0IGludCBpbml0aWFsQmx1ZSA9IDB4NTY7CitzdGF0aWMgY29u
c3QgaW50IGluaXRpYWxBbHBoYSA9IDB4ZmY7CitzdGF0aWMgY29uc3QgaW50IGNoYW5nZWRSZWQg
PSAweDk4Oworc3RhdGljIGNvbnN0IGludCBjaGFuZ2VkR3JlZW4gPSAweDc2Oworc3RhdGljIGNv
bnN0IGludCBjaGFuZ2VkQmx1ZSA9IDB4NTQ7CitzdGF0aWMgY29uc3QgaW50IGNoYW5nZWRBbHBo
YSA9IDB4ZmY7CisKK3N0YXRpYyBib29sIHNfaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7Citz
dGF0aWMgRXdrX0NvbG9yX1BpY2tlciogc19jb2xvclBpY2tlciA9IDA7CisKKworc3RhdGljIHZv
aWQgb25Db2xvclBpY2tlckRvbmUodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCop
Cit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSk7CisK
KyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNldENvbG9y
UGlja2VyQ29sb3Iodm9pZCogZGF0YSkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisKKyAgICAv
LyA0LiBDaGFuZ2UgY29sb3IgdG8gY2hhbmdlZCBjb2xvci4KKyAgICBFWFBFQ1RfVFJVRShld2tf
Y29sb3JfcGlja2VyX2NvbG9yX3NldChzX2NvbG9yUGlja2VyLCBjaGFuZ2VkUmVkLCBjaGFuZ2Vk
R3JlZW4sIGNoYW5nZWRCbHVlLCBjaGFuZ2VkQWxwaGEpKTsKKworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1
ZXN0IiwgMCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29s
b3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFd2tfQ29sb3JfUGlja2Vy
KiBjb2xvclBpY2tlcikKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0UnVuID0gdHJ1ZTsKKwor
ICAgIHNfY29sb3JQaWNrZXIgPSBjb2xvclBpY2tlcjsKKyAgICBzX2lzQ29sb3JQaWNrZXJTaG93
biA9IHRydWU7CisKKyAgICBpbnQgciwgZywgYiwgYTsKKyAgICBFWFBFQ1RfVFJVRShld2tfY29s
b3JfcGlja2VyX2NvbG9yX2dldChjb2xvclBpY2tlciwgJnIsICZnLCAmYiwgJmEpKTsKKworICAg
IGlmIChpc0ZpcnN0UnVuKSB7CisgICAgICAgIC8vIDIuIENoZWNrIGluaXRpYWwgdmFsdWUgZnJv
bSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9FUShpbml0aWFsUmVkLCByKTsKKyAgICAgICAg
RVhQRUNUX0VRKGluaXRpYWxHcmVlbiwgZyk7CisgICAgICAgIEVYUEVDVF9FUShpbml0aWFsQmx1
ZSwgYik7CisgICAgICAgIEVYUEVDVF9FUShpbml0aWFsQWxwaGEsIGEpOworCisgICAgICAgIGlz
Rmlyc3RSdW4gPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyA3LiBJbnB1dCB2YWx1
ZXMgc2hvdWxkIGJlIHNhbWUgYXMgY2hhbmdlZCBjb2xvci4KKyAgICAgICAgRVhQRUNUX0VRKGNo
YW5nZWRSZWQsIHIpOworICAgICAgICBFWFBFQ1RfRVEoY2hhbmdlZEdyZWVuLCBnKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGNoYW5nZWRCbHVlLCBiKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRB
bHBoYSwgYSk7CisKKyAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFy
dERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAwKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMy4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9y
IHBpY2tlci4KKyAgICBlY29yZV90aW1lcl9hZGQoMC4wLCBzZXRDb2xvclBpY2tlckNvbG9yLCBz
bWFydERhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVD
b2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKikKK3sKKyAgICAvLyA1LiBUZXN0IGNvbG9y
IHBpY2tlciBpcyBzaG93bi4KKyAgICBFWFBFQ1RfVFJVRShzX2lzQ29sb3JQaWNrZXJTaG93bik7
CisgICAgc19pc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKK30KKworc3RhdGljIEVpbmFfQm9v
bCBoaWRlQ29sb3JQaWNrZXJCeVJlbW92aW5nRWxlbWVudChFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEpCit7CisgICAgLy8gOS4gaW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MoKSBpcyBj
YWxsZWQgaWYgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZC4KKyAgICBFWFBFQ1RfVFJVRShzX2lzQ29s
b3JQaWNrZXJTaG93bik7CisgICAgc19pc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5
cGUsY29sb3IscmVxdWVzdCIsIDApOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdr
X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFw
aSA9IGV3a1ZpZXdDbGFzcygpOworICAgIGFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3Qg
PSBzaG93Q29sb3JQaWNrZXI7CisgICAgYXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyA9
IGhpZGVDb2xvclBpY2tlcjsKKworICAgIGNvbnN0IGNoYXIgY29sb3JQaWNrZXJIVE1MW10gPQor
ICAgICAgICAiPCFET0NUWVBFIGh0bWw+IgorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiPGhl
YWQ+IgorICAgICAgICAiPHNjcmlwdD5mdW5jdGlvbiByZW1vdmVJbnB1dEVsZW1lbnQoKXsiCisg
ICAgICAgICJ2YXIgcGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJl
bnQnKTsiCisgICAgICAgICJ2YXIgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbG9yJyk7IgorICAgICAgICAicGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChpbnB1dEVs
ZW1lbnQpOyIKKyAgICAgICAgIn08L3NjcmlwdD4iCisgICAgICAgICI8L2hlYWQ+IgorICAgICAg
ICAiPGJvZHk+IgorICAgICAgICAiPGRpdiBpZD0ncGFyZW50Jz4iCisgICAgICAgICI8aW5wdXQg
dHlwZT0nY29sb3InIHZhbHVlPScjMTIzNDU2JyBpZD0nY29sb3InPiIKKyAgICAgICAgIjxidXR0
b24gb25jbGljaz0ncmVtb3ZlSW5wdXRFbGVtZW50KCk7Jz5SZW1vdmUgRWxlbWVudDwvYnV0dG9u
PiIKKyAgICAgICAgIjwvZGl2PiIKKyAgICAgICAgIjwvYm9keT4iCisgICAgICAgICI8L2h0bWw+
IjsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb2xvclBpY2tl
ckhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgLy8gMS4g
Q2xpY2sgaW5wdXQgZWxlbWVudCB0byBzaG93IGNvbG9yIHBpY2tlci4KKyAgICBtb3VzZUNsaWNr
KDMwLCAyMCk7CisKKyAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0Iiwg
b25Db2xvclBpY2tlckRvbmUsICZoYW5kbGVkKTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAg
ICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisKKyAgICAvLyA2LiBDbGljayBpbnB1dCBl
bGVtZW50IHRvIHNob3cgY29sb3IgcGlja2VyIGFnYWluLgorICAgIG1vdXNlQ2xpY2soMzAsIDIw
KTsKKworICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAg
IGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisKKyAgICAvLyA4LiBDbGljayBidXR0b24gdG8g
cmVtb3ZlIGlucHV0IGVsZW1lbnQgZHVybG5nIGNvbG9yIHBpY2tlciBpcyBzaG93bi4KKyAgICBh
cGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzID0gaGlkZUNvbG9yUGlja2VyQnlSZW1vdmlu
Z0VsZW1lbnQ7CisgICAgbW91c2VDbGljayg4MCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNl
OworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUo
KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQs
dHlwZSxjb2xvcixyZXF1ZXN0Iiwgb25Db2xvclBpY2tlckRvbmUpOworfQorI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCmluZGV4IDI3NmJlMGEuLjgw
MjQwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTU1MCwxMzUgKzU1MCw2IEBAIFRFU1RfRihF
V0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2YXNjcmlwdF9wcm9tcHQpCiAgICAgRVhQ
RUNUX0ZBTFNFKHByb21wdENhbGxiYWNrRGF0YS5jYWxsZWQpOwogfQogCi0jaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi1zdGF0aWMgY29uc3QgaW50IGluaXRpYWxSZWQgPSAweDEyOwotc3Rh
dGljIGNvbnN0IGludCBpbml0aWFsR3JlZW4gPSAweDM0Owotc3RhdGljIGNvbnN0IGludCBpbml0
aWFsQmx1ZSA9IDB4NTY7Ci1zdGF0aWMgY29uc3QgaW50IGluaXRpYWxBbHBoYSA9IDB4ZmY7Ci1z
dGF0aWMgY29uc3QgaW50IGNoYW5nZWRSZWQgPSAweDk4Owotc3RhdGljIGNvbnN0IGludCBjaGFu
Z2VkR3JlZW4gPSAweDc2Owotc3RhdGljIGNvbnN0IGludCBjaGFuZ2VkQmx1ZSA9IDB4NTQ7Ci1z
dGF0aWMgY29uc3QgaW50IGNoYW5nZWRBbHBoYSA9IDB4ZmY7Ci0KLXN0YXRpYyBib29sIGlzQ29s
b3JQaWNrZXJTaG93biA9IGZhbHNlOwotCi1zdGF0aWMgdm9pZCBvbkNvbG9yUGlja2VyRG9uZSh2
b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKLXsKLSAgICBib29sKiBoYW5kbGVk
ID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsKLQotICAgICpoYW5kbGVkID0gdHJ1ZTsK
LX0KLQotc3RhdGljIHVuc2lnbmVkIGNoYXIgc2V0Q29sb3JQaWNrZXJDb2xvcih2b2lkKiBkYXRh
KQotewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLQotICAgIC8vIDQuIENoYW5nZSBjb2xvciB0byBj
aGFuZ2VkIGNvbG9yLgotICAgIEVYUEVDVF9UUlVFKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xv
cl9zZXQoc21hcnREYXRhLT5zZWxmLCBjaGFuZ2VkUmVkLCBjaGFuZ2VkR3JlZW4sIGNoYW5nZWRC
bHVlLCBjaGFuZ2VkQWxwaGEpKTsKLQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7Ci0KLSAg
ICByZXR1cm4gMDsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBzaG93Q29sb3JQaWNrZXIoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsK
LSAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0UnVuID0gdHJ1ZTsKLQotICAgIGlzQ29sb3JQaWNrZXJT
aG93biA9IHRydWU7Ci0KLSAgICBpZiAoaXNGaXJzdFJ1bikgewotICAgICAgICAvLyAyLiBDaGVj
ayBpbml0aWFsIHZhbHVlIGZyb20gaHRtbCBmaWxlLgotICAgICAgICBFWFBFQ1RfRVEoaW5pdGlh
bFJlZCwgcik7Ci0gICAgICAgIEVYUEVDVF9FUShpbml0aWFsR3JlZW4sIGcpOwotICAgICAgICBF
WFBFQ1RfRVEoaW5pdGlhbEJsdWUsIGIpOwotICAgICAgICBFWFBFQ1RfRVEoaW5pdGlhbEFscGhh
LCBhKTsKLQotICAgICAgICBpc0ZpcnN0UnVuID0gZmFsc2U7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gNy4gSW5wdXQgdmFsdWVzIHNob3VsZCBiZSBzYW1lIGFzIGNoYW5nZWQgY29sb3IuCi0g
ICAgICAgIEVYUEVDVF9FUShjaGFuZ2VkUmVkLCByKTsKLSAgICAgICAgRVhQRUNUX0VRKGNoYW5n
ZWRHcmVlbiwgZyk7Ci0gICAgICAgIEVYUEVDVF9FUShjaGFuZ2VkQmx1ZSwgYik7Ci0gICAgICAg
IEVYUEVDVF9FUShjaGFuZ2VkQWxwaGEsIGEpOwotCi0gICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0
IiwgMCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIDMuIFJldHVybiBh
ZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCi0gICAgZWNvcmVfdGltZXJfYWRkKDAuMCwgc2V0
Q29sb3JQaWNrZXJDb2xvciwgc21hcnREYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rh
dGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSopCi17Ci0g
ICAgLy8gNS4gVGVzdCBjb2xvciBwaWNrZXIgaXMgc2hvd24uCi0gICAgRVhQRUNUX1RSVUUoaXND
b2xvclBpY2tlclNob3duKTsKLSAgICBpc0NvbG9yUGlja2VyU2hvd24gPSBmYWxzZTsKLX0KLQot
c3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXJCeVJlbW92aW5nRWxlbWVudChFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgLy8gOS4gaW5wdXRfcGlja2VyX2NvbG9y
X2Rpc21pc3MoKSBpcyBjYWxsZWQgaWYgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZC4KLSAgICBFWFBF
Q1RfVFJVRShpc0NvbG9yUGlja2VyU2hvd24pOwotICAgIGlzQ29sb3JQaWNrZXJTaG93biA9IGZh
bHNlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxm
LCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRl
c3RCYXNlLCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KQotewotICAgIEV3a19WaWV3
X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xhc3MoKTsKLSAgICBhcGktPmlucHV0X3BpY2tl
cl9jb2xvcl9yZXF1ZXN0ID0gc2hvd0NvbG9yUGlja2VyOwotICAgIGFwaS0+aW5wdXRfcGlja2Vy
X2NvbG9yX2Rpc21pc3MgPSBoaWRlQ29sb3JQaWNrZXI7Ci0KLSAgICBjb25zdCBjaGFyIGNvbG9y
UGlja2VySFRNTFtdID0KLSAgICAgICAgIjwhRE9DVFlQRSBodG1sPiIKLSAgICAgICAgIjxodG1s
PiIKLSAgICAgICAgIjxoZWFkPiIKLSAgICAgICAgIjxzY3JpcHQ+ZnVuY3Rpb24gcmVtb3ZlSW5w
dXRFbGVtZW50KCl7IgotICAgICAgICAidmFyIHBhcmVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGFyZW50Jyk7IgotICAgICAgICAidmFyIGlucHV0RWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb2xvcicpOyIKLSAgICAgICAgInBhcmVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQoaW5wdXRFbGVtZW50KTsiCi0gICAgICAgICJ9PC9zY3JpcHQ+IgotICAgICAgICAi
PC9oZWFkPiIKLSAgICAgICAgIjxib2R5PiIKLSAgICAgICAgIjxkaXYgaWQ9J3BhcmVudCc+Igot
ICAgICAgICAiPGlucHV0IHR5cGU9J2NvbG9yJyB2YWx1ZT0nIzEyMzQ1NicgaWQ9J2NvbG9yJz4i
Ci0gICAgICAgICI8YnV0dG9uIG9uY2xpY2s9J3JlbW92ZUlucHV0RWxlbWVudCgpOyc+UmVtb3Zl
IEVsZW1lbnQ8L2J1dHRvbj4iCi0gICAgICAgICI8L2Rpdj4iCi0gICAgICAgICI8L2JvZHk+Igot
ICAgICAgICAiPC9odG1sPiI7Ci0KLSAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKHdlYlZp
ZXcoKSwgY29sb3JQaWNrZXJIVE1MLCAwLCAwKTsKLSAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKLQotICAgIC8vIDEuIENsaWNrIGlucHV0IGVsZW1lbnQgdG8gc2hvdyBjb2xvciBwaWNrZXIu
Ci0gICAgbW91c2VDbGljaygzMCwgMjApOwotCi0gICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0g
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImlucHV0LHR5cGUs
Y29sb3IscmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25lLCAmaGFuZGxlZCk7Ci0gICAgd2hpbGUg
KCFoYW5kbGVkKQotICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwotCi0gICAgLy8g
Ni4gQ2xpY2sgaW5wdXQgZWxlbWVudCB0byBzaG93IGNvbG9yIHBpY2tlciBhZ2Fpbi4KLSAgICBt
b3VzZUNsaWNrKDMwLCAyMCk7Ci0KLSAgICBoYW5kbGVkID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFo
YW5kbGVkKQotICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwotCi0gICAgLy8gOC4g
Q2xpY2sgYnV0dG9uIHRvIHJlbW92ZSBpbnB1dCBlbGVtZW50IGR1cmxuZyBjb2xvciBwaWNrZXIg
aXMgc2hvd24uCi0gICAgYXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyA9IGhpZGVDb2xv
clBpY2tlckJ5UmVtb3ZpbmdFbGVtZW50OwotICAgIG1vdXNlQ2xpY2soODAsIDIwKTsKLQotICAg
IGhhbmRsZWQgPSBmYWxzZTsKLSAgICB3aGlsZSAoIWhhbmRsZWQpCi0gICAgICAgIGVjb3JlX21h
aW5fbG9vcF9pdGVyYXRlKCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdl
YlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25lKTsK
LX0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLQogVEVTVF9GKEVXSzJVbml0
VGVzdEJhc2UsIGV3a192aWV3X2NvbnRleHRfZ2V0KQogewogICAgIEV3a19Db250ZXh0KiBjb250
ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAppbmRleCA0YTRjYmZjLi41MDAw
ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpzaG93Q29sb3JQ
aWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sCiB7CiAgICAg
UGFnZVVJQ2xpZW50RWZsKiBwYWdlVUlDbGllbnQgPSB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJ
bmZvKTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKFdlYktpdDo6
dG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSk7Ci0gICAgcGFnZVVJQ2xpZW50LT5tX3ZpZXdJbXBs
LT5yZXF1ZXN0Q29sb3JQaWNrZXIoY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJs
dWUoKSwgY29sb3IuYWxwaGEoKSwgbGlzdGVuZXIpOworICAgIHBhZ2VVSUNsaWVudC0+bV92aWV3
SW1wbC0+cmVxdWVzdENvbG9yUGlja2VyKGxpc3RlbmVyLCBjb2xvcik7CiB9CiAKIHZvaWQgUGFn
ZVVJQ2xpZW50RWZsOjpoaWRlQ29sb3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQo=
</data>
<flag name="review"
          id="184619"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="184620"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170867</attachid>
            <date>2012-10-26 03:23:19 -0700</date>
            <delta_ts>2012-10-26 03:32:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>100472_color_picker_api.patch</filename>
            <type>text/plain</type>
            <size>29387</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjOWYxNGIxLi44NmQ1ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTItMTAtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQ29sb3JfUGlja2VyIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDcyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
TW92ZSB0aGUgY29sb3IgcGlja2VyIGNvZGUgb3V0IG9mIEV3a1ZpZXdJbXBsIGFuZCBpbnRvCisg
ICAgICAgIGEgbmV3IEV3a19Db2xvcl9QaWNrZXIgY2xhc3MgdG8gYXZvaWQgY2x1dHRlcmluZyB0
aGUKKyAgICAgICAgdmlldyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVxdWVz
dENvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChF
d2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbG9yX1BpY2tlcjo6RXdrX0NvbG9yX1BpY2tl
cik6CisgICAgICAgIChFd2tfQ29sb3JfUGlja2VyOjpzZXRDb2xvcik6CisgICAgICAgIChFd2tf
Q29sb3JfUGlja2VyOjpjb2xvcik6CisgICAgICAgIChld2tfY29sb3JfcGlja2VyX2NvbG9yX3Nl
dCk6CisgICAgICAgIChld2tfY29sb3JfcGlja2VyX2NvbG9yX2dldCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29sb3JfUGlja2VyKToKKyAgICAgICAgKEV3a19Db2xvcl9QaWNrZXI6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2NvbG9yX3BpY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAob25Db2xv
clBpY2tlckRvbmUpOgorICAgICAgICAoc2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGhp
ZGVDb2xvclBpY2tlckJ5UmVtb3ZpbmdFbGVtZW50KToKKyAgICAgICAgKFRFU1RfRik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZVVJQ2xpZW50RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorCiAyMDEyLTEwLTI2ICBKYWVodW4g
TGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHtnZXQs
c2V0fUZsb2F0VmFsdWVGb3JLZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODJhMTRh
MS4uZjcwZWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ0LDYgKzQ0LDcgQEAg
TElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcAor
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3Bw
CkBAIC0yNDAsNiArMjQxLDcgQEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9y
d2FyZF9saXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgorICAgICIke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIgogICAg
ICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHQuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb29raWVfbWFuYWdlci5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oIgpAQCAtMzQwLDYgKzM0Miw3IEBA
IFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNf
TElCUkFSSUVTfSkKICMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRl
c3Qgc3VpdGUuCiBTRVQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9iYWNr
X2ZvcndhcmRfbGlzdAorICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJf
Y29udGV4dAogICAgIHRlc3RfZXdrMl9jb250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzCiAgICAgdGVz
dF9ld2syX2Nvb2tpZV9tYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaAppbmRleCBhNTJmYzZmLi43ZmRhNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
ImV3a19iYWNrX2ZvcndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdr
X2Rvd25sb2FkX2pvYi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuY3BwCmluZGV4IDA3MjdjODEuLjMzZTJlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMxLDExICszMSwx
MSBAQAogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xp
ZW50RWZsLmgiCi0jaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVk
ZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNl
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKQEAg
LTM2MywyMCArMzYzLDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGlt
YWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRh
X2NvcHlfc2V0KHNkLT5pbWFnZSwgaW1hZ2VEYXRhKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotYm9vbCBFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKCFtX2NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBjb2xvclN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhj
b2xvci5zZXJpYWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lclNldENvbG9yKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29s
b3JTdHJpbmcuZ2V0KCkpOwotICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAq
IGluZm9ybXMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KQEAgLTgwNCwxNCAr
NzkwLDIwIEBAIGJvb2wgRXdrVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpCiAgKiBAaW50ZXJuYWwKICAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlj
a2VyLgogICovCi12b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGlu
dCBnLCBpbnQgYiwgaW50IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
cikKK3ZvaWQgRXdrVmlld0ltcGw6OnJlcXVlc3RDb2xvclBpY2tlcihXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsK
ICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsK
IAotICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgIGlmICgh
c2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2NvbG9yUGlja2VyKQorICAgICAgICBkaXNtaXNzQ29sb3JQaWNrZXIoKTsKIAot
ICAgIHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsK
KyAgICBtX2NvbG9yUGlja2VyID0gRXdrX0NvbG9yX1BpY2tlcjo6Y3JlYXRlKGxpc3RlbmVyLCBj
b2xvcik7CisKKyAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdChzZCwgbV9j
b2xvclBpY2tlci5nZXQoKSk7CiB9CiAKIC8qKgpAQCAtODIwLDEyICs4MTIsMTYgQEAgdm9pZCBF
d2tWaWV3SW1wbDo6cmVxdWVzdENvbG9yUGlja2VyKGludCByLCBpbnQgZywgaW50IGIsIGludCBh
LCBXS0NvbG9yUGlja2VyUmUKICAqLwogdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlj
a2VyKCkKIHsKKyAgICBpZiAoIW1fY29sb3JQaWNrZXIpCisgICAgICAgIHJldHVybjsKKwogICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOwogCi0g
ICAgbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CisgICAgaWYgKHNkLT5hcGkt
PmlucHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzKQorICAgICAgICBzZC0+YXBpLT5pbnB1dF9waWNr
ZXJfY29sb3JfZGlzbWlzcyhzZCk7CiAKLSAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3Jf
ZGlzbWlzcyhzZCk7CisgICAgbV9jb2xvclBpY2tlci5jbGVhcigpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IDYx
YTNiZGEuLjU5ZjUzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaApAQCAtODMsNiArODMsNyBAQCBjbGFzcyBJbnRTaXplOwogfQogCiBjbGFz
cyBFd2tfQmFja19Gb3J3YXJkX0xpc3Q7CitjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwogY2xhc3Mg
RXdrX0NvbnRleHQ7CiBjbGFzcyBFd2tfRG93bmxvYWRfSm9iOwogY2xhc3MgRXdrX0Vycm9yOwpA
QCAtMTM2LDEwICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdSZWdpb24oY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEodm9pZCogaW1h
Z2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIGJvb2wgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgdm9pZCBhZGRUb1BhZ2VWaWV3
TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVG
cm9tUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogICAgIHN0YXRpYyBj
b25zdCBFdmFzX09iamVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1BhZ2VSZWYpOwpA
QCAtMTU2LDcgKzE1Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi0gICAgdm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisgICAg
dm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxp
c3RlbmVyLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgZGlzbWlzc0NvbG9yUGlj
a2VyKCk7CiAjZW5kaWYKIApAQCAtMjcwLDEwICsyNjcsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYK
LSAgICBXS1JldGFpblB0cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+IG1fY29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lcjsKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9k
aXNwbGF5VGltZXI7CiAgICAgV1RGOjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlS
ZWN0czsKICAgICBPd25QdHI8RXdrX1BvcHVwX01lbnU+IG1fcG9wdXBNZW51OworICAgIE93blB0
cjxFd2tfQ29sb3JfUGlja2VyPiBtX2NvbG9yUGlja2VyOwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFdLUGFnZVJlZiwgY29uc3QgRXZhc19PYmplY3QqPiBQYWdlVmlld01hcDsKICAgICBzdGF0aWMg
UGFnZVZpZXdNYXAgcGFnZVZpZXdNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjI0YmQwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcApAQCAtMCwwICsxLDg0IEBACisv
KgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgorCisjaW5j
bHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcu
aCIKKyNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorRXdrX0NvbG9yX1BpY2tlcjo6RXdrX0NvbG9yX1BpY2tl
cihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgY29sb3JQaWNrZXJMaXN0ZW5lciwgY29u
c3QgQ29sb3ImIGluaXRpYWxDb2xvcikKKyAgICA6IG1fY29sb3JQaWNrZXJMaXN0ZW5lcihjb2xv
clBpY2tlckxpc3RlbmVyKQorICAgICwgbV9jb2xvcihpbml0aWFsQ29sb3IpCit7Cit9CisKK3Zv
aWQgRXdrX0NvbG9yX1BpY2tlcjo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjb2xvclN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5zZXJpYWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKG1fY29sb3JQaWNrZXJMaXN0
ZW5lci5nZXQoKSwgY29sb3JTdHJpbmcuZ2V0KCkpOworfQorCitjb25zdCBDb2xvciYgRXdrX0Nv
bG9yX1BpY2tlcjo6Y29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbG9yOworfQorI2Vu
ZGlmCisKK0VpbmFfQm9vbCBld2tfY29sb3JfcGlja2VyX2NvbG9yX3NldChFd2tfQ29sb3JfUGlj
a2VyKiBjb2xvclBpY2tlciwgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCit7CisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGNvbG9yUGlja2VyLCBmYWxzZSk7CisKKyAgICBjb2xvclBpY2tlci0+c2V0Q29sb3IoQ29sb3Io
ciwgZywgYiwgYSkpOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xvcl9nZXQoY29u
c3QgRXdrX0NvbG9yX1BpY2tlciogY29sb3JQaWNrZXIsIGludCogciwgaW50KiBnLCBpbnQqIGIs
IGludCogYSkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY29sb3JQaWNrZXIsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwociwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChnLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGIsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoYSwgZmFsc2Up
OworCisgICAgY29uc3QgQ29sb3ImIGNvbG9yID0gY29sb3JQaWNrZXItPmNvbG9yKCk7CisgICAg
KnIgPSBjb2xvci5yZWQoKTsKKyAgICAqZyA9IGNvbG9yLmdyZWVuKCk7CisgICAgKmIgPSBjb2xv
ci5ibHVlKCk7CisgICAgKmEgPSBjb2xvci5hbHBoYSgpOworCisgICAgcmV0dXJuIHRydWU7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmUxM2MzN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBld2tfY29sb3JfcGlja2VyX2gKKyNkZWZpbmUgZXdrX2NvbG9yX3BpY2tlcl9o
CisKKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEBhIEV3a19Db2xvcl9QaWNr
ZXIuICovCit0eXBlZGVmIHN0cnVjdCBFd2tfQ29sb3JfUGlja2VyIEV3a19Db2xvcl9QaWNrZXI7
CisKKy8qKgorICogU2V0cyB0aGUgc2VsZWN0ZWQgY29sb3IuCisgKgorICogVGhlIGZ1bmN0aW9u
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGEgY29sb3IgaGFzIGJlZW4gcmVxdWVzdGVkIGJ5
IHRoZSBkb2N1bWVudC4KKyAqIElmIGNhbGxlZCB3aGVuIHRoaXMgaXMgbm90IHRoZSBjYXNlIG9y
IHdoZW4gdGhlIGlucHV0IHBpY2tlciBoYXMgYmVlbiBkaXNtaXNzZWQsIHRoaXMKKyAqIGZ1bmN0
aW9uIHdpbGwgZmFpbCBhbmQgcmV0dXJuIEVJTkFfRkFMU0UuCisgKgorICogQHBhcmFtIGNvbG9y
X3BpY2tlciBjb2xvciBwaWNrZXIgb2JqZWN0CisgKiBAcGFyYW0gciByZWQgY2hhbm5lbCB2YWx1
ZSB0byBiZSBzZXQKKyAqIEBwYXJhbSBnIGdyZWVuIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0Cisg
KiBAcGFyYW0gYiBibHVlIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0CisgKiBAcGFyYW0gYSBhbHBo
YSBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3MgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdr
X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXdrX0NvbG9yX1BpY2tlciAqY29sb3JfcGlja2VyLCBp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CisKKy8qKgorICogR2V0cyB0aGUgY3VycmVudGx5
IHNlbGVjdGVkIGNvbG9yLgorICoKKyAqIEBwYXJhbSBjb2xvcl9waWNrZXIgY29sb3IgcGlja2Vy
IG9iamVjdAorICogQHBhcmFtIHIgcmVkIGNoYW5uZWwgdmFsdWUgdG8gYmUgZ2V0CisgKiBAcGFy
YW0gZyBncmVlbiBjaGFubmVsIHZhbHVlIHRvIGJlIGdldAorICogQHBhcmFtIGIgYmx1ZSBjaGFu
bmVsIHZhbHVlIHRvIGJlIGdldAorICogQHBhcmFtIGEgYWxwaGEgY2hhbm5lbCB2YWx1ZSB0byBi
ZSBnZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19jb2xvcl9waWNrZXJfY29sb3Jf
Z2V0KGNvbnN0IEV3a19Db2xvcl9QaWNrZXIgKmNvbG9yX3BpY2tlciwgaW50ICpyLCBpbnQgKmcs
IGludCAqYiwgaW50ICphKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIGV3a19jb2xvcl9waWNrZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzMxNDBiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRl
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfY29sb3JfcGlja2VyX3ByaXZhdGVfaAor
I2RlZmluZSBld2tfY29sb3JfcGlja2VyX3ByaXZhdGVfaAorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3IuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBFd2tfQ29sb3Jf
UGlja2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tfQ29sb3JfUGlja2Vy
PiBjcmVhdGUoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9yUGlja2VyTGlzdGVu
ZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV3a19Db2xvcl9QaWNrZXIoY29sb3JQaWNrZXJMaXN0ZW5lciwg
aW5pdGlhbENvbG9yKSk7CisgICAgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitw
cml2YXRlOgorICAgIEV3a19Db2xvcl9QaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
UmVmIGNvbG9yUGlja2VyTGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IpOworCisgICAgV0tSZXRhaW5QdHI8V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmPiBt
X2NvbG9yUGlja2VyTGlzdGVuZXI7CisgICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKK307CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2VuZGlmIC8vIGV3a19jb2xv
cl9waWNrZXJfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKaW5kZXggYWU1YzE0Ny4uNWFmZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtOTg5LDE4ICs5ODksNiBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogICAgIHJldHVybiBpbXBsLT5tb3VzZUV2ZW50c0VuYWJsZWQoKTsKIH0KIAot
RWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQotewotI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCBmYWxzZSk7Ci0gICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
aW1wbCwgZmFsc2UpOwotCi0gICAgcmV0dXJuIGltcGwtPnNldENvbG9yUGlja2VyQ29sb3IoV2Vi
Q29yZTo6Q29sb3IociwgZywgYiwgYSkpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYKLX0KLQogRWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9p
bnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmlu
ZGV4IGFjZDQzODkuLmVkZmFkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtNzUsNiArNzUsNyBAQAogI2RlZmluZSBld2tfdmlld19oCiAKICNp
bmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKKyNpbmNsdWRlICJld2tfY29sb3JfcGlj
a2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRf
am9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCkBAIC0xMzAsNyArMTMxLDcgQEAgc3RydWN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzIHsKIAogICAgIC8vIGNvbG9yIHBpY2tlcjoKICAgICAvLyAg
IC0gU2hvd3MgYW5kIGhpZGVzIGNvbG9yIHBpY2tlci4KLSAgICBFaW5hX0Jvb2wgKCppbnB1dF9w
aWNrZXJfY29sb3JfcmVxdWVzdCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKKyAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfY29sb3JfcmVx
dWVzdCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIEV3a19Db2xvcl9QaWNrZXIgKmNvbG9yX3Bp
Y2tlcik7CiAgICAgRWluYV9Cb29sICgqaW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnNkKTsKIAogICAgIC8vIHN0b3JhZ2U6CkBAIC03MTEsMjMgKzcxMiw2
IEBAIEVBUEkgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIGVuYWJsCiAgKi8KIEVBUEkgRWluYV9Cb29sIGV3a192aWV3
X21vdXNlX2V2ZW50c19lbmFibGVkX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiAKLS8qCi0g
KiBTZXRzIHRoZSB1c2VyIGNob3NlbiBjb2xvci4gVG8gYmUgdXNlZCB3aGVuIGltcGxlbWVudGlu
ZyBhIGNvbG9yIHBpY2tlci4KLSAqCi0gKiBUaGUgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIHdoZW4gYSBjb2xvciBoYXMgYmVlbiByZXF1ZXN0ZWQgYnkgdGhlIGRvY3VtZW50LgotICog
SWYgY2FsbGVkIHdoZW4gdGhpcyBpcyBub3QgdGhlIGNhc2Ugb3Igd2hlbiB0aGUgaW5wdXQgcGlj
a2VyIGhhcyBiZWVuIGRpc21pc3NlZCwgdGhpcwotICogZnVuY3Rpb24gd2lsbCBmYWlsIGFuZCBy
ZXR1cm4gRUlOQV9GQUxTRS4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IG9iamVjdCBjb250YWlucyBj
b2xvciBwaWNrZXIKLSAqIEBwYXJhbSByIHJlZCBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAotICog
QHBhcmFtIGcgZ3JlZW4gY2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQKLSAqIEBwYXJhbSBiIGJsdWUg
Y2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQKLSAqIEBwYXJhbSBhIGFscGhhIGNoYW5uZWwgdmFsdWUg
dG8gYmUgc2V0Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBAYyBFSU5B
X0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNr
ZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0ICpvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7
Ci0KIC8qKgogICogRmVlZHMgdGhlIHRvdWNoIGV2ZW50IHRvIHRoZSB2aWV3LgogICoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9j
b2xvcl9waWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX2NvbG9yX3BpY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2Y1OWMzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb2xvcl9waWNrZXIuY3BwCkBAIC0wLDAgKzEsMTY0
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAg
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLAorICAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B
IDAyMTExLTEzMDcgVVNBCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJV
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEVudmlyb25tZW50LmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNs
dWRlIDxFY29yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4g
RVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25tZW50OworCisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCitzdGF0aWMgY29uc3QgaW50IGluaXRpYWxSZWQgPSAweDEyOworc3RhdGlj
IGNvbnN0IGludCBpbml0aWFsR3JlZW4gPSAweDM0Oworc3RhdGljIGNvbnN0IGludCBpbml0aWFs
Qmx1ZSA9IDB4NTY7CitzdGF0aWMgY29uc3QgaW50IGluaXRpYWxBbHBoYSA9IDB4ZmY7CitzdGF0
aWMgY29uc3QgaW50IGNoYW5nZWRSZWQgPSAweDk4Oworc3RhdGljIGNvbnN0IGludCBjaGFuZ2Vk
R3JlZW4gPSAweDc2Oworc3RhdGljIGNvbnN0IGludCBjaGFuZ2VkQmx1ZSA9IDB4NTQ7CitzdGF0
aWMgY29uc3QgaW50IGNoYW5nZWRBbHBoYSA9IDB4ZmY7CisKK3N0YXRpYyBib29sIHNfaXNDb2xv
clBpY2tlclNob3duID0gZmFsc2U7CitzdGF0aWMgRXdrX0NvbG9yX1BpY2tlciogc19jb2xvclBp
Y2tlciA9IDA7CisKKworc3RhdGljIHZvaWQgb25Db2xvclBpY2tlckRvbmUodm9pZCogdXNlckRh
dGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19j
YXN0PGJvb2wqPih1c2VyRGF0YSk7CisKKyAgICAqaGFuZGxlZCA9IHRydWU7Cit9CisKK3N0YXRp
YyB1bnNpZ25lZCBjaGFyIHNldENvbG9yUGlja2VyQ29sb3Iodm9pZCogZGF0YSkKK3sKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFy
dF9EYXRhKj4oZGF0YSk7CisKKyAgICAvLyA0LiBDaGFuZ2UgY29sb3IgdG8gY2hhbmdlZCBjb2xv
ci4KKyAgICBFWFBFQ1RfVFJVRShld2tfY29sb3JfcGlja2VyX2NvbG9yX3NldChzX2NvbG9yUGlj
a2VyLCBjaGFuZ2VkUmVkLCBjaGFuZ2VkR3JlZW4sIGNoYW5nZWRCbHVlLCBjaGFuZ2VkQWxwaGEp
KTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxm
LCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBzaG93Q29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhLCBFd2tfQ29sb3JfUGlja2VyKiBjb2xvclBpY2tlcikKK3sKKyAgICBzdGF0aWMgYm9v
bCBpc0ZpcnN0UnVuID0gdHJ1ZTsKKworICAgIHNfY29sb3JQaWNrZXIgPSBjb2xvclBpY2tlcjsK
KyAgICBzX2lzQ29sb3JQaWNrZXJTaG93biA9IHRydWU7CisKKyAgICBpbnQgciwgZywgYiwgYTsK
KyAgICBFWFBFQ1RfVFJVRShld2tfY29sb3JfcGlja2VyX2NvbG9yX2dldChjb2xvclBpY2tlciwg
JnIsICZnLCAmYiwgJmEpKTsKKworICAgIGlmIChpc0ZpcnN0UnVuKSB7CisgICAgICAgIC8vIDIu
IENoZWNrIGluaXRpYWwgdmFsdWUgZnJvbSBodG1sIGZpbGUuCisgICAgICAgIEVYUEVDVF9FUShp
bml0aWFsUmVkLCByKTsKKyAgICAgICAgRVhQRUNUX0VRKGluaXRpYWxHcmVlbiwgZyk7CisgICAg
ICAgIEVYUEVDVF9FUShpbml0aWFsQmx1ZSwgYik7CisgICAgICAgIEVYUEVDVF9FUShpbml0aWFs
QWxwaGEsIGEpOworCisgICAgICAgIGlzRmlyc3RSdW4gPSBmYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyA3LiBJbnB1dCB2YWx1ZXMgc2hvdWxkIGJlIHNhbWUgYXMgY2hhbmdlZCBjb2xv
ci4KKyAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRSZWQsIHIpOworICAgICAgICBFWFBFQ1RfRVEo
Y2hhbmdlZEdyZWVuLCBnKTsKKyAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRCbHVlLCBiKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGNoYW5nZWRBbHBoYSwgYSk7CisKKyAgICAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJl
cXVlc3QiLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gMy4gUmV0
dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBpY2tlci4KKyAgICBlY29yZV90aW1lcl9hZGQoMC4w
LCBzZXRDb2xvclBpY2tlckNvbG9yLCBzbWFydERhdGEpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKikK
K3sKKyAgICAvLyA1LiBUZXN0IGNvbG9yIHBpY2tlciBpcyBzaG93bi4KKyAgICBFWFBFQ1RfVFJV
RShzX2lzQ29sb3JQaWNrZXJTaG93bik7CisgICAgc19pc0NvbG9yUGlja2VyU2hvd24gPSBmYWxz
ZTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXJCeVJlbW92aW5nRWxlbWVu
dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgLy8gOS4gaW5wdXRfcGlj
a2VyX2NvbG9yX2Rpc21pc3MoKSBpcyBjYWxsZWQgaWYgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZC4K
KyAgICBFWFBFQ1RfVFJVRShzX2lzQ29sb3JQaWNrZXJTaG93bik7CisgICAgc19pc0NvbG9yUGlj
a2VyU2hvd24gPSBmYWxzZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKHNt
YXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIDApOworfQorCitURVNU
X0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpCit7CisgICAg
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IGV3a1ZpZXdDbGFzcygpOworICAgIGFwaS0+aW5w
dXRfcGlja2VyX2NvbG9yX3JlcXVlc3QgPSBzaG93Q29sb3JQaWNrZXI7CisgICAgYXBpLT5pbnB1
dF9waWNrZXJfY29sb3JfZGlzbWlzcyA9IGhpZGVDb2xvclBpY2tlcjsKKworICAgIGNvbnN0IGNo
YXIgY29sb3JQaWNrZXJIVE1MW10gPQorICAgICAgICAiPCFET0NUWVBFIGh0bWw+IgorICAgICAg
ICAiPGh0bWw+IgorICAgICAgICAiPGhlYWQ+IgorICAgICAgICAiPHNjcmlwdD5mdW5jdGlvbiBy
ZW1vdmVJbnB1dEVsZW1lbnQoKXsiCisgICAgICAgICJ2YXIgcGFyZW50RWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsiCisgICAgICAgICJ2YXIgaW5wdXRFbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbG9yJyk7IgorICAgICAgICAicGFyZW50RWxl
bWVudC5yZW1vdmVDaGlsZChpbnB1dEVsZW1lbnQpOyIKKyAgICAgICAgIn08L3NjcmlwdD4iCisg
ICAgICAgICI8L2hlYWQ+IgorICAgICAgICAiPGJvZHk+IgorICAgICAgICAiPGRpdiBpZD0ncGFy
ZW50Jz4iCisgICAgICAgICI8aW5wdXQgdHlwZT0nY29sb3InIHZhbHVlPScjMTIzNDU2JyBpZD0n
Y29sb3InPiIKKyAgICAgICAgIjxidXR0b24gb25jbGljaz0ncmVtb3ZlSW5wdXRFbGVtZW50KCk7
Jz5SZW1vdmUgRWxlbWVudDwvYnV0dG9uPiIKKyAgICAgICAgIjwvZGl2PiIKKyAgICAgICAgIjwv
Ym9keT4iCisgICAgICAgICI8L2h0bWw+IjsKKworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQod2ViVmlldygpLCBjb2xvclBpY2tlckhUTUwsIDAsIDApOworICAgIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworCisgICAgLy8gMS4gQ2xpY2sgaW5wdXQgZWxlbWVudCB0byBzaG93IGNvbG9y
IHBpY2tlci4KKyAgICBtb3VzZUNsaWNrKDMwLCAyMCk7CisKKyAgICBib29sIGhhbmRsZWQgPSBm
YWxzZTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiaW5w
dXQsdHlwZSxjb2xvcixyZXF1ZXN0Iiwgb25Db2xvclBpY2tlckRvbmUsICZoYW5kbGVkKTsKKyAg
ICB3aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisK
KyAgICAvLyA2LiBDbGljayBpbnB1dCBlbGVtZW50IHRvIHNob3cgY29sb3IgcGlja2VyIGFnYWlu
LgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGhhbmRsZWQgPSBmYWxzZTsKKyAgICB3
aGlsZSAoIWhhbmRsZWQpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisKKyAg
ICAvLyA4LiBDbGljayBidXR0b24gdG8gcmVtb3ZlIGlucHV0IGVsZW1lbnQgZHVybG5nIGNvbG9y
IHBpY2tlciBpcyBzaG93bi4KKyAgICBhcGktPmlucHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzID0g
aGlkZUNvbG9yUGlja2VyQnlSZW1vdmluZ0VsZW1lbnQ7CisgICAgbW91c2VDbGljayg4MCwgMjAp
OworCisgICAgaGFuZGxlZCA9IGZhbHNlOworICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAg
ZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19kZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0Iiwgb25Db2xvclBpY2tl
ckRvbmUpOworfQorI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Zp
ZXcuY3BwCmluZGV4IDI3NmJlMGEuLjgwMjQwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKQEAgLTU1
MCwxMzUgKzU1MCw2IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19ydW5famF2
YXNjcmlwdF9wcm9tcHQpCiAgICAgRVhQRUNUX0ZBTFNFKHByb21wdENhbGxiYWNrRGF0YS5jYWxs
ZWQpOwogfQogCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1zdGF0aWMgY29uc3QgaW50
IGluaXRpYWxSZWQgPSAweDEyOwotc3RhdGljIGNvbnN0IGludCBpbml0aWFsR3JlZW4gPSAweDM0
Owotc3RhdGljIGNvbnN0IGludCBpbml0aWFsQmx1ZSA9IDB4NTY7Ci1zdGF0aWMgY29uc3QgaW50
IGluaXRpYWxBbHBoYSA9IDB4ZmY7Ci1zdGF0aWMgY29uc3QgaW50IGNoYW5nZWRSZWQgPSAweDk4
Owotc3RhdGljIGNvbnN0IGludCBjaGFuZ2VkR3JlZW4gPSAweDc2Owotc3RhdGljIGNvbnN0IGlu
dCBjaGFuZ2VkQmx1ZSA9IDB4NTQ7Ci1zdGF0aWMgY29uc3QgaW50IGNoYW5nZWRBbHBoYSA9IDB4
ZmY7Ci0KLXN0YXRpYyBib29sIGlzQ29sb3JQaWNrZXJTaG93biA9IGZhbHNlOwotCi1zdGF0aWMg
dm9pZCBvbkNvbG9yUGlja2VyRG9uZSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lk
KikKLXsKLSAgICBib29sKiBoYW5kbGVkID0gc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsK
LQotICAgICpoYW5kbGVkID0gdHJ1ZTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGNoYXIgc2V0Q29s
b3JQaWNrZXJDb2xvcih2b2lkKiBkYXRhKQotewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLQotICAg
IC8vIDQuIENoYW5nZSBjb2xvciB0byBjaGFuZ2VkIGNvbG9yLgotICAgIEVYUEVDVF9UUlVFKGV3
a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoc21hcnREYXRhLT5zZWxmLCBjaGFuZ2VkUmVk
LCBjaGFuZ2VkR3JlZW4sIGNoYW5nZWRCbHVlLCBjaGFuZ2VkQWxwaGEpKTsKLQotICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxj
b2xvcixyZXF1ZXN0IiwgMCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIEVpbmFfQm9v
bCBzaG93Q29sb3JQaWNrZXIoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBpbnQgciwg
aW50IGcsIGludCBiLCBpbnQgYSkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0UnVuID0gdHJ1
ZTsKLQotICAgIGlzQ29sb3JQaWNrZXJTaG93biA9IHRydWU7Ci0KLSAgICBpZiAoaXNGaXJzdFJ1
bikgewotICAgICAgICAvLyAyLiBDaGVjayBpbml0aWFsIHZhbHVlIGZyb20gaHRtbCBmaWxlLgot
ICAgICAgICBFWFBFQ1RfRVEoaW5pdGlhbFJlZCwgcik7Ci0gICAgICAgIEVYUEVDVF9FUShpbml0
aWFsR3JlZW4sIGcpOwotICAgICAgICBFWFBFQ1RfRVEoaW5pdGlhbEJsdWUsIGIpOwotICAgICAg
ICBFWFBFQ1RfRVEoaW5pdGlhbEFscGhhLCBhKTsKLQotICAgICAgICBpc0ZpcnN0UnVuID0gZmFs
c2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gNy4gSW5wdXQgdmFsdWVzIHNob3VsZCBiZSBz
YW1lIGFzIGNoYW5nZWQgY29sb3IuCi0gICAgICAgIEVYUEVDVF9FUShjaGFuZ2VkUmVkLCByKTsK
LSAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRHcmVlbiwgZyk7Ci0gICAgICAgIEVYUEVDVF9FUShj
aGFuZ2VkQmx1ZSwgYik7Ci0gICAgICAgIEVYUEVDVF9FUShjaGFuZ2VkQWxwaGEsIGEpOwotCi0g
ICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAi
aW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIC8vIDMuIFJldHVybiBhZnRlciBtYWtpbmcgYSBjb2xvciBwaWNrZXIuCi0gICAg
ZWNvcmVfdGltZXJfYWRkKDAuMCwgc2V0Q29sb3JQaWNrZXJDb2xvciwgc21hcnREYXRhKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXIoRXdr
X1ZpZXdfU21hcnRfRGF0YSopCi17Ci0gICAgLy8gNS4gVGVzdCBjb2xvciBwaWNrZXIgaXMgc2hv
d24uCi0gICAgRVhQRUNUX1RSVUUoaXNDb2xvclBpY2tlclNob3duKTsKLSAgICBpc0NvbG9yUGlj
a2VyU2hvd24gPSBmYWxzZTsKLX0KLQotc3RhdGljIEVpbmFfQm9vbCBoaWRlQ29sb3JQaWNrZXJC
eVJlbW92aW5nRWxlbWVudChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAg
Ly8gOS4gaW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MoKSBpcyBjYWxsZWQgaWYgdGhlIGVsZW1l
bnQgaXMgcmVtb3ZlZC4KLSAgICBFWFBFQ1RfVFJVRShpc0NvbG9yUGlja2VyU2hvd24pOwotICAg
IGlzQ29sb3JQaWNrZXJTaG93biA9IGZhbHNlOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoc21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7
Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19jb2xvcl9waWNrZXJfY29s
b3Jfc2V0KQotewotICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSBld2tWaWV3Q2xhc3Mo
KTsKLSAgICBhcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0ID0gc2hvd0NvbG9yUGlja2Vy
OwotICAgIGFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MgPSBoaWRlQ29sb3JQaWNrZXI7
Ci0KLSAgICBjb25zdCBjaGFyIGNvbG9yUGlja2VySFRNTFtdID0KLSAgICAgICAgIjwhRE9DVFlQ
RSBodG1sPiIKLSAgICAgICAgIjxodG1sPiIKLSAgICAgICAgIjxoZWFkPiIKLSAgICAgICAgIjxz
Y3JpcHQ+ZnVuY3Rpb24gcmVtb3ZlSW5wdXRFbGVtZW50KCl7IgotICAgICAgICAidmFyIHBhcmVu
dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7IgotICAgICAgICAi
dmFyIGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2xvcicpOyIKLSAg
ICAgICAgInBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoaW5wdXRFbGVtZW50KTsiCi0gICAgICAg
ICJ9PC9zY3JpcHQ+IgotICAgICAgICAiPC9oZWFkPiIKLSAgICAgICAgIjxib2R5PiIKLSAgICAg
ICAgIjxkaXYgaWQ9J3BhcmVudCc+IgotICAgICAgICAiPGlucHV0IHR5cGU9J2NvbG9yJyB2YWx1
ZT0nIzEyMzQ1NicgaWQ9J2NvbG9yJz4iCi0gICAgICAgICI8YnV0dG9uIG9uY2xpY2s9J3JlbW92
ZUlucHV0RWxlbWVudCgpOyc+UmVtb3ZlIEVsZW1lbnQ8L2J1dHRvbj4iCi0gICAgICAgICI8L2Rp
dj4iCi0gICAgICAgICI8L2JvZHk+IgotICAgICAgICAiPC9odG1sPiI7Ci0KLSAgICBld2tfdmll
d19odG1sX3N0cmluZ19sb2FkKHdlYlZpZXcoKSwgY29sb3JQaWNrZXJIVE1MLCAwLCAwKTsKLSAg
ICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLQotICAgIC8vIDEuIENsaWNrIGlucHV0IGVsZW1l
bnQgdG8gc2hvdyBjb2xvciBwaWNrZXIuCi0gICAgbW91c2VDbGljaygzMCwgMjApOwotCi0gICAg
Ym9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVzdCIsIG9uQ29sb3JQaWNrZXJEb25l
LCAmaGFuZGxlZCk7Ci0gICAgd2hpbGUgKCFoYW5kbGVkKQotICAgICAgICBlY29yZV9tYWluX2xv
b3BfaXRlcmF0ZSgpOwotCi0gICAgLy8gNi4gQ2xpY2sgaW5wdXQgZWxlbWVudCB0byBzaG93IGNv
bG9yIHBpY2tlciBhZ2Fpbi4KLSAgICBtb3VzZUNsaWNrKDMwLCAyMCk7Ci0KLSAgICBoYW5kbGVk
ID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFoYW5kbGVkKQotICAgICAgICBlY29yZV9tYWluX2xvb3Bf
aXRlcmF0ZSgpOwotCi0gICAgLy8gOC4gQ2xpY2sgYnV0dG9uIHRvIHJlbW92ZSBpbnB1dCBlbGVt
ZW50IGR1cmxuZyBjb2xvciBwaWNrZXIgaXMgc2hvd24uCi0gICAgYXBpLT5pbnB1dF9waWNrZXJf
Y29sb3JfZGlzbWlzcyA9IGhpZGVDb2xvclBpY2tlckJ5UmVtb3ZpbmdFbGVtZW50OwotICAgIG1v
dXNlQ2xpY2soODAsIDIwKTsKLQotICAgIGhhbmRsZWQgPSBmYWxzZTsKLSAgICB3aGlsZSAoIWhh
bmRsZWQpCi0gICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgImlucHV0LHR5cGUsY29sb3IscmVxdWVz
dCIsIG9uQ29sb3JQaWNrZXJEb25lKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLQogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2NvbnRleHRfZ2V0KQog
ewogICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmll
dygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xp
ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZs
LmNwcAppbmRleCA0YTRjYmZjLi41MDAwZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUGFn
ZVVJQ2xpZW50RWZsOjpzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0
aWFsQ29sb3IsIFdLQ29sCiB7CiAgICAgUGFnZVVJQ2xpZW50RWZsKiBwYWdlVUlDbGllbnQgPSB0
b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKTsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9
IFdlYkNvcmU6OkNvbG9yKFdlYktpdDo6dG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSk7Ci0gICAg
cGFnZVVJQ2xpZW50LT5tX3ZpZXdJbXBsLT5yZXF1ZXN0Q29sb3JQaWNrZXIoY29sb3IucmVkKCks
IGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSwgbGlzdGVuZXIpOwor
ICAgIHBhZ2VVSUNsaWVudC0+bV92aWV3SW1wbC0+cmVxdWVzdENvbG9yUGlja2VyKGxpc3RlbmVy
LCBjb2xvcik7CiB9CiAKIHZvaWQgUGFnZVVJQ2xpZW50RWZsOjpoaWRlQ29sb3JQaWNrZXIoV0tQ
YWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQo=
</data>
<flag name="commit-queue"
          id="184621"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170872</attachid>
            <date>2012-10-26 03:32:19 -0700</date>
            <delta_ts>2012-10-26 04:32:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>100472_color_picker_api.patch</filename>
            <type>text/plain</type>
            <size>29446</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2MTY2NWQ3Li44YWRlZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTItMTAtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQ29sb3JfUGlja2VyIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDcyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
TW92ZSB0aGUgY29sb3IgcGlja2VyIGNvZGUgb3V0IG9mIEV3a1ZpZXdJbXBsIGFuZCBpbnRvCisg
ICAgICAgIGEgbmV3IEV3a19Db2xvcl9QaWNrZXIgY2xhc3MgdG8gYXZvaWQgY2x1dHRlcmluZyB0
aGUKKyAgICAgICAgdmlldyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVxdWVz
dENvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChF
d2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0NvbG9yX1BpY2tlcjo6RXdrX0NvbG9yX1BpY2tl
cik6CisgICAgICAgIChFd2tfQ29sb3JfUGlja2VyOjpzZXRDb2xvcik6CisgICAgICAgIChFd2tf
Q29sb3JfUGlja2VyOjpjb2xvcik6CisgICAgICAgIChld2tfY29sb3JfcGlja2VyX2NvbG9yX3Nl
dCk6CisgICAgICAgIChld2tfY29sb3JfcGlja2VyX2NvbG9yX2dldCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAg
IChFd2tfQ29sb3JfUGlja2VyKToKKyAgICAgICAgKEV3a19Db2xvcl9QaWNrZXI6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvdGVzdF9ld2syX2NvbG9yX3BpY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAob25Db2xv
clBpY2tlckRvbmUpOgorICAgICAgICAoc2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChz
aG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGhp
ZGVDb2xvclBpY2tlckJ5UmVtb3ZpbmdFbGVtZW50KToKKyAgICAgICAgKFRFU1RfRik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZVVJQ2xpZW50RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorCiAyMDEyLTEwLTI2ICBSZWdpbmEg
Q2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJd
IEVuYWJsZSBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA5ZWM0MGJmLi5iYThh
MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDQsNiArNDQsNyBAQCBMSVNUKEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFn
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKQEAgLTI0
MSw2ICsyNDIsNyBAQCBTRVQgKEVXZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgiCiAgICAgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xp
c3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmgiCiAgICAgIiR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIgog
ICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgiCkBAIC0zNDEsNiArMzQzLDcgQEAgVEFSR0VU
X0xJTktfTElCUkFSSUVTKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJ
RVN9KQogIyB3aWxsIGNsYXNoIHdpdGggdGVzdHMgZnJvbSB0aGUgV2ViS2l0IDEgdGVzdCBzdWl0
ZS4KIFNFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2JhY2tfZm9yd2Fy
ZF9saXN0CisgICAgdGVzdF9ld2syX2NvbG9yX3BpY2tlcgogICAgIHRlc3RfZXdrMl9jb250ZXh0
CiAgICAgdGVzdF9ld2syX2NvbnRleHRfaGlzdG9yeV9jYWxsYmFja3MKICAgICB0ZXN0X2V3azJf
Y29va2llX21hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0
Mi5oCmluZGV4IGE1MmZjNmYuLjdmZGE3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0u
aCIKKyNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfZG93bmxv
YWRfam9iLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKaW5kZXggMDRhMDhlNjkuLjY2M2I0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMyLDExICszMiwxMSBAQAog
I2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xpZW50RWZs
LmgiCi0jaW5jbHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRl
LmgiCisjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaCIKQEAgLTMxMSwy
MCArMzExLDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0
YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlf
c2V0KHNkLT5pbWFnZSwgaW1hZ2VEYXRhKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotYm9vbCBFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKCFtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBj
b2xvclN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5z
ZXJpYWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lclNldENvbG9yKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29sb3JTdHJp
bmcuZ2V0KCkpOwotICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqIGluZm9y
bXMgbG9hZCBmYWlsZWQgd2l0aCBlcnJvciBpbmZvcm1hdGlvbi4KQEAgLTc1NiwxNCArNzQyLDIw
IEBAIGJvb2wgRXdrVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAg
KiBAaW50ZXJuYWwKICAqIFJlcXVlc3RzIHRvIHNob3cgZXh0ZXJuYWwgY29sb3IgcGlja2VyLgog
ICovCi12b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBp
bnQgYiwgaW50IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3Zv
aWQgRXdrVmlld0ltcGw6OnJlcXVlc3RDb2xvclBpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlz
dGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsKICAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsKIAotICAg
IG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgIGlmICghc2QtPmFw
aS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2NvbG9yUGlja2VyKQorICAgICAgICBkaXNtaXNzQ29sb3JQaWNrZXIoKTsKIAotICAgIHNk
LT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKKyAgICBt
X2NvbG9yUGlja2VyID0gRXdrX0NvbG9yX1BpY2tlcjo6Y3JlYXRlKGxpc3RlbmVyLCBjb2xvcik7
CisKKyAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdChzZCwgbV9jb2xvclBp
Y2tlci5nZXQoKSk7CiB9CiAKIC8qKgpAQCAtNzcyLDEyICs3NjQsMTYgQEAgdm9pZCBFd2tWaWV3
SW1wbDo6cmVxdWVzdENvbG9yUGlja2VyKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0Nv
bG9yUGlja2VyUmUKICAqLwogdm9pZCBFd2tWaWV3SW1wbDo6ZGlzbWlzc0NvbG9yUGlja2VyKCkK
IHsKKyAgICBpZiAoIW1fY29sb3JQaWNrZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOwogCi0gICAgbV9j
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CisgICAgaWYgKHNkLT5hcGktPmlucHV0
X3BpY2tlcl9jb2xvcl9kaXNtaXNzKQorICAgICAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29s
b3JfZGlzbWlzcyhzZCk7CiAKLSAgICBzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlz
cyhzZCk7CisgICAgbV9jb2xvclBpY2tlci5jbGVhcigpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IGQ0MDMyODcu
LmVjNDMxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBJbnRTaXplOwogfQogCiBjbGFzcyBFd2tf
QmFja19Gb3J3YXJkX0xpc3Q7CitjbGFzcyBFd2tfQ29sb3JfUGlja2VyOwogY2xhc3MgRXdrX0Nv
bnRleHQ7CiBjbGFzcyBFd2tfRG93bmxvYWRfSm9iOwogY2xhc3MgRXdrX0Vycm9yOwpAQCAtMTM1
LDEwICsxMzYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRyYXdSZWdpb24oY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRh
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAotI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotICAgIGJvb2wgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgdm9pZCBhZGRUb1BhZ2VWaWV3TWFwKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVGcm9tUGFn
ZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogICAgIHN0YXRpYyBjb25zdCBF
dmFzX09iamVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1BhZ2VSZWYpOwpAQCAtMTU1
LDcgKzE1Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCi0gICAgdm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBpbnQgYiwgaW50
IGEsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisgICAgdm9pZCBy
ZXF1ZXN0Q29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogICAgIHZvaWQgZGlzbWlzc0NvbG9yUGlja2VyKCk7
CiAjZW5kaWYKIApAQCAtMjYzLDExICsyNjAsMTEgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5kaWYKLSAgICBX
S1JldGFpblB0cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+IG1fY29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lcjsKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9kaXNwbGF5
VGltZXI7CiAgICAgV1RGOjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlSZWN0czsK
ICAgICBPd25QdHI8RXdrX1BvcHVwX01lbnU+IG1fcG9wdXBNZW51OwogICAgIE93blB0cjxXZWJL
aXQ6OklucHV0TWV0aG9kQ29udGV4dEVmbD4gbV9pbnB1dE1ldGhvZENvbnRleHQ7CisgICAgT3du
UHRyPEV3a19Db2xvcl9QaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8V0tQYWdlUmVmLCBjb25zdCBFdmFzX09iamVjdCo+IFBhZ2VWaWV3TWFwOwogICAgIHN0YXRp
YyBQYWdlVmlld01hcCBwYWdlVmlld01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjRiZDBlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfY29sb3JfcGlja2VyLmgiCisKKyNp
bmNsdWRlICJXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXS1N0cmlu
Zy5oIgorI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitFd2tfQ29sb3JfUGlja2VyOjpFd2tfQ29sb3JfUGlj
a2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tlckxpc3RlbmVyLCBj
b25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQorICAgIDogbV9jb2xvclBpY2tlckxpc3RlbmVyKGNv
bG9yUGlja2VyTGlzdGVuZXIpCisgICAgLCBtX2NvbG9yKGluaXRpYWxDb2xvcikKK3sKK30KKwor
dm9pZCBFd2tfQ29sb3JfUGlja2VyOjpzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbG9yU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNlcmlhbGl6ZWQoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0Q29sb3IobV9jb2xvclBpY2tlckxp
c3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQoKSk7Cit9CisKK2NvbnN0IENvbG9yJiBFd2tf
Q29sb3JfUGlja2VyOjpjb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29sb3I7Cit9Cisj
ZW5kaWYKKworRWluYV9Cb29sIGV3a19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV3a19Db2xvcl9Q
aWNrZXIqIGNvbG9yUGlja2VyLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoY29sb3JQaWNrZXIsIGZhbHNlKTsKKworICAgIGNvbG9yUGlja2VyLT5zZXRDb2xvcihDb2xv
cihyLCBnLCBiLCBhKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKK0VpbmFfQm9vbCBld2tfY29sb3JfcGlja2VyX2NvbG9yX2dldChj
b25zdCBFd2tfQ29sb3JfUGlja2VyKiBjb2xvclBpY2tlciwgaW50KiByLCBpbnQqIGcsIGludCog
YiwgaW50KiBhKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChjb2xvclBpY2tlciwgZmFsc2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGcsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoYiwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhLCBmYWxz
ZSk7CisKKyAgICBjb25zdCBDb2xvciYgY29sb3IgPSBjb2xvclBpY2tlci0+Y29sb3IoKTsKKyAg
ICAqciA9IGNvbG9yLnJlZCgpOworICAgICpnID0gY29sb3IuZ3JlZW4oKTsKKyAgICAqYiA9IGNv
bG9yLmJsdWUoKTsKKyAgICAqYSA9IGNvbG9yLmFscGhhKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTEzYzM3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaWZuZGVmIGV3a19jb2xvcl9waWNrZXJfaAorI2RlZmluZSBld2tfY29sb3JfcGlja2Vy
X2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgQGEgRXdrX0NvbG9yX1Bp
Y2tlci4gKi8KK3R5cGVkZWYgc3RydWN0IEV3a19Db2xvcl9QaWNrZXIgRXdrX0NvbG9yX1BpY2tl
cjsKKworLyoqCisgKiBTZXRzIHRoZSBzZWxlY3RlZCBjb2xvci4KKyAqCisgKiBUaGUgZnVuY3Rp
b24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYSBjb2xvciBoYXMgYmVlbiByZXF1ZXN0ZWQg
YnkgdGhlIGRvY3VtZW50LgorICogSWYgY2FsbGVkIHdoZW4gdGhpcyBpcyBub3QgdGhlIGNhc2Ug
b3Igd2hlbiB0aGUgaW5wdXQgcGlja2VyIGhhcyBiZWVuIGRpc21pc3NlZCwgdGhpcworICogZnVu
Y3Rpb24gd2lsbCBmYWlsIGFuZCByZXR1cm4gRUlOQV9GQUxTRS4KKyAqCisgKiBAcGFyYW0gY29s
b3JfcGlja2VyIGNvbG9yIHBpY2tlciBvYmplY3QKKyAqIEBwYXJhbSByIHJlZCBjaGFubmVsIHZh
bHVlIHRvIGJlIHNldAorICogQHBhcmFtIGcgZ3JlZW4gY2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQK
KyAqIEBwYXJhbSBiIGJsdWUgY2hhbm5lbCB2YWx1ZSB0byBiZSBzZXQKKyAqIEBwYXJhbSBhIGFs
cGhhIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBl
d2tfY29sb3JfcGlja2VyX2NvbG9yX3NldChFd2tfQ29sb3JfUGlja2VyICpjb2xvcl9waWNrZXIs
IGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKKworLyoqCisgKiBHZXRzIHRoZSBjdXJyZW50
bHkgc2VsZWN0ZWQgY29sb3IuCisgKgorICogQHBhcmFtIGNvbG9yX3BpY2tlciBjb2xvciBwaWNr
ZXIgb2JqZWN0CisgKiBAcGFyYW0gciByZWQgY2hhbm5lbCB2YWx1ZSB0byBiZSBnZXQKKyAqIEBw
YXJhbSBnIGdyZWVuIGNoYW5uZWwgdmFsdWUgdG8gYmUgZ2V0CisgKiBAcGFyYW0gYiBibHVlIGNo
YW5uZWwgdmFsdWUgdG8gYmUgZ2V0CisgKiBAcGFyYW0gYSBhbHBoYSBjaGFubmVsIHZhbHVlIHRv
IGJlIGdldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MgQGMgRUlOQV9G
QUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xv
cl9nZXQoY29uc3QgRXdrX0NvbG9yX1BpY2tlciAqY29sb3JfcGlja2VyLCBpbnQgKnIsIGludCAq
ZywgaW50ICpiLCBpbnQgKmEpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisj
ZW5kaWYgLyogZXdrX2NvbG9yX3BpY2tlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MzE0MGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyX3ByaXZh
dGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19jb2xvcl9waWNrZXJfcHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKworI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a19Db2xv
cl9QaWNrZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a19Db2xvcl9QaWNr
ZXI+IGNyZWF0ZShXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgY29sb3JQaWNrZXJMaXN0
ZW5lciwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRXdrX0NvbG9yX1BpY2tlcihjb2xvclBpY2tlckxpc3RlbmVy
LCBpbml0aWFsQ29sb3IpKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisK
K3ByaXZhdGU6CisgICAgRXdrX0NvbG9yX1BpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXJSZWYgY29sb3JQaWNrZXJMaXN0ZW5lciwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxD
b2xvcik7CisKKyAgICBXS1JldGFpblB0cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+
IG1fY29sb3JQaWNrZXJMaXN0ZW5lcjsKKyAgICBXZWJDb3JlOjpDb2xvciBtX2NvbG9yOworfTsK
KworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gZXdrX2Nv
bG9yX3BpY2tlcl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAppbmRleCBiMzFkM2IyLi45NjM1MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC05ODksMTggKzk4OSw2IEBAIEVp
bmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGltcGwtPm1vdXNlRXZlbnRzRW5hYmxlZCgpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi17Ci0jaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCi0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKLSAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsLCBmYWxzZSk7Ci0KLSAgICByZXR1cm4gaW1wbC0+c2V0Q29sb3JQaWNrZXJDb2xvcihX
ZWJDb3JlOjpDb2xvcihyLCBnLCBiLCBhKSk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudChFdmFzX09iamVj
dCogZXdrVmlldywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBw
b2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycykKIHsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
aW5kZXggYWNkNDM4OS4uZWRmYWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCkBAIC03NSw2ICs3NSw3IEBACiAjZGVmaW5lIGV3a192aWV3X2gKIAog
I2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdC5oIgorI2luY2x1ZGUgImV3a19jb2xvcl9w
aWNrZXIuaCIKICNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19kb3dubG9h
ZF9qb2IuaCIKICNpbmNsdWRlICJld2tfZXJyb3IuaCIKQEAgLTEzMCw3ICsxMzEsNyBAQCBzdHJ1
Y3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgewogCiAgICAgLy8gY29sb3IgcGlja2VyOgogICAgIC8v
ICAgLSBTaG93cyBhbmQgaGlkZXMgY29sb3IgcGlja2VyLgotICAgIEVpbmFfQm9vbCAoKmlucHV0
X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgaW50IHIsIGlu
dCBnLCBpbnQgYiwgaW50IGEpOworICAgIEVpbmFfQm9vbCAoKmlucHV0X3BpY2tlcl9jb2xvcl9y
ZXF1ZXN0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXdrX0NvbG9yX1BpY2tlciAqY29sb3Jf
cGlja2VyKTsKICAgICBFaW5hX0Jvb2wgKCppbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcykoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QpOwogCiAgICAgLy8gc3RvcmFnZToKQEAgLTcxMSwyMyArNzEy
LDYgQEAgRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgZW5hYmwKICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAotLyoK
LSAqIFNldHMgdGhlIHVzZXIgY2hvc2VuIGNvbG9yLiBUbyBiZSB1c2VkIHdoZW4gaW1wbGVtZW50
aW5nIGEgY29sb3IgcGlja2VyLgotICoKLSAqIFRoZSBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBj
YWxsZWQgd2hlbiBhIGNvbG9yIGhhcyBiZWVuIHJlcXVlc3RlZCBieSB0aGUgZG9jdW1lbnQuCi0g
KiBJZiBjYWxsZWQgd2hlbiB0aGlzIGlzIG5vdCB0aGUgY2FzZSBvciB3aGVuIHRoZSBpbnB1dCBw
aWNrZXIgaGFzIGJlZW4gZGlzbWlzc2VkLCB0aGlzCi0gKiBmdW5jdGlvbiB3aWxsIGZhaWwgYW5k
IHJldHVybiBFSU5BX0ZBTFNFLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IGNvbnRhaW5z
IGNvbG9yIHBpY2tlcgotICogQHBhcmFtIHIgcmVkIGNoYW5uZWwgdmFsdWUgdG8gYmUgc2V0Ci0g
KiBAcGFyYW0gZyBncmVlbiBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAotICogQHBhcmFtIGIgYmx1
ZSBjaGFubmVsIHZhbHVlIHRvIGJlIHNldAotICogQHBhcmFtIGEgYWxwaGEgY2hhbm5lbCB2YWx1
ZSB0byBiZSBzZXQKLSAqCi0gKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8KLUVBUEkgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3Bp
Y2tlcl9jb2xvcl9zZXQoRXZhc19PYmplY3QgKm8sIGludCByLCBpbnQgZywgaW50IGIsIGludCBh
KTsKLQogLyoqCiAgKiBGZWVkcyB0aGUgdG91Y2ggZXZlbnQgdG8gdGhlIHZpZXcuCiAgKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2sy
X2NvbG9yX3BpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29sb3JfcGlja2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ZjU5YzMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbG9yX3BpY2tlci5jcHAKQEAgLTAsMCArMSwx
NjQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sCisgICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNyBVU0EKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRp
bHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2lu
Y2x1ZGUgPEVjb3JlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVy
biBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKK3N0YXRpYyBjb25zdCBpbnQgaW5pdGlhbFJlZCA9IDB4MTI7CitzdGF0
aWMgY29uc3QgaW50IGluaXRpYWxHcmVlbiA9IDB4MzQ7CitzdGF0aWMgY29uc3QgaW50IGluaXRp
YWxCbHVlID0gMHg1NjsKK3N0YXRpYyBjb25zdCBpbnQgaW5pdGlhbEFscGhhID0gMHhmZjsKK3N0
YXRpYyBjb25zdCBpbnQgY2hhbmdlZFJlZCA9IDB4OTg7CitzdGF0aWMgY29uc3QgaW50IGNoYW5n
ZWRHcmVlbiA9IDB4NzY7CitzdGF0aWMgY29uc3QgaW50IGNoYW5nZWRCbHVlID0gMHg1NDsKK3N0
YXRpYyBjb25zdCBpbnQgY2hhbmdlZEFscGhhID0gMHhmZjsKKworc3RhdGljIGJvb2wgc19pc0Nv
bG9yUGlja2VyU2hvd24gPSBmYWxzZTsKK3N0YXRpYyBFd2tfQ29sb3JfUGlja2VyKiBzX2NvbG9y
UGlja2VyID0gMDsKKworCitzdGF0aWMgdm9pZCBvbkNvbG9yUGlja2VyRG9uZSh2b2lkKiB1c2Vy
RGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKikKK3sKKyAgICBib29sKiBoYW5kbGVkID0gc3RhdGlj
X2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKTsKKworICAgICpoYW5kbGVkID0gdHJ1ZTsKK30KKworc3Rh
dGljIHVuc2lnbmVkIGNoYXIgc2V0Q29sb3JQaWNrZXJDb2xvcih2b2lkKiBkYXRhKQoreworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1Nt
YXJ0X0RhdGEqPihkYXRhKTsKKworICAgIC8vIDQuIENoYW5nZSBjb2xvciB0byBjaGFuZ2VkIGNv
bG9yLgorICAgIEVYUEVDVF9UUlVFKGV3a19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KHNfY29sb3JQ
aWNrZXIsIGNoYW5nZWRSZWQsIGNoYW5nZWRHcmVlbiwgY2hhbmdlZEJsdWUsIGNoYW5nZWRBbHBo
YSkpOworCisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNl
bGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAwKTsKKworICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgRWluYV9Cb29sIHNob3dDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEsIEV3a19Db2xvcl9QaWNrZXIqIGNvbG9yUGlja2VyKQoreworICAgIHN0YXRpYyBi
b29sIGlzRmlyc3RSdW4gPSB0cnVlOworCisgICAgc19jb2xvclBpY2tlciA9IGNvbG9yUGlja2Vy
OworICAgIHNfaXNDb2xvclBpY2tlclNob3duID0gdHJ1ZTsKKworICAgIGludCByLCBnLCBiLCBh
OworICAgIEVYUEVDVF9UUlVFKGV3a19jb2xvcl9waWNrZXJfY29sb3JfZ2V0KGNvbG9yUGlja2Vy
LCAmciwgJmcsICZiLCAmYSkpOworCisgICAgaWYgKGlzRmlyc3RSdW4pIHsKKyAgICAgICAgLy8g
Mi4gQ2hlY2sgaW5pdGlhbCB2YWx1ZSBmcm9tIGh0bWwgZmlsZS4KKyAgICAgICAgRVhQRUNUX0VR
KGluaXRpYWxSZWQsIHIpOworICAgICAgICBFWFBFQ1RfRVEoaW5pdGlhbEdyZWVuLCBnKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGluaXRpYWxCbHVlLCBiKTsKKyAgICAgICAgRVhQRUNUX0VRKGluaXRp
YWxBbHBoYSwgYSk7CisKKyAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNlOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIDcuIElucHV0IHZhbHVlcyBzaG91bGQgYmUgc2FtZSBhcyBjaGFuZ2VkIGNv
bG9yLgorICAgICAgICBFWFBFQ1RfRVEoY2hhbmdlZFJlZCwgcik7CisgICAgICAgIEVYUEVDVF9F
UShjaGFuZ2VkR3JlZW4sIGcpOworICAgICAgICBFWFBFQ1RfRVEoY2hhbmdlZEJsdWUsIGIpOwor
ICAgICAgICBFWFBFQ1RfRVEoY2hhbmdlZEFscGhhLCBhKTsKKworICAgICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKHNtYXJ0RGF0YS0+c2VsZiwgImlucHV0LHR5cGUsY29sb3Is
cmVxdWVzdCIsIDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyAzLiBS
ZXR1cm4gYWZ0ZXIgbWFraW5nIGEgY29sb3IgcGlja2VyLgorICAgIGVjb3JlX3RpbWVyX2FkZCgw
LjAsIHNldENvbG9yUGlja2VyQ29sb3IsIHNtYXJ0RGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBFaW5hX0Jvb2wgaGlkZUNvbG9yUGlja2VyKEV3a19WaWV3X1NtYXJ0X0RhdGEq
KQoreworICAgIC8vIDUuIFRlc3QgY29sb3IgcGlja2VyIGlzIHNob3duLgorICAgIEVYUEVDVF9U
UlVFKHNfaXNDb2xvclBpY2tlclNob3duKTsKKyAgICBzX2lzQ29sb3JQaWNrZXJTaG93biA9IGZh
bHNlOworfQorCitzdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlckJ5UmVtb3ZpbmdFbGVt
ZW50KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICAvLyA5LiBpbnB1dF9w
aWNrZXJfY29sb3JfZGlzbWlzcygpIGlzIGNhbGxlZCBpZiB0aGUgZWxlbWVudCBpcyByZW1vdmVk
LgorICAgIEVYUEVDVF9UUlVFKHNfaXNDb2xvclBpY2tlclNob3duKTsKKyAgICBzX2lzQ29sb3JQ
aWNrZXJTaG93biA9IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
c21hcnREYXRhLT5zZWxmLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0IiwgMCk7Cit9CisKK1RF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29sb3JfcGlja2VyX2NvbG9yX3NldCkKK3sKKyAg
ICBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gZXdrVmlld0NsYXNzKCk7CisgICAgYXBpLT5p
bnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCA9IHNob3dDb2xvclBpY2tlcjsKKyAgICBhcGktPmlu
cHV0X3BpY2tlcl9jb2xvcl9kaXNtaXNzID0gaGlkZUNvbG9yUGlja2VyOworCisgICAgY29uc3Qg
Y2hhciBjb2xvclBpY2tlckhUTUxbXSA9CisgICAgICAgICI8IURPQ1RZUEUgaHRtbD4iCisgICAg
ICAgICI8aHRtbD4iCisgICAgICAgICI8aGVhZD4iCisgICAgICAgICI8c2NyaXB0PmZ1bmN0aW9u
IHJlbW92ZUlucHV0RWxlbWVudCgpeyIKKyAgICAgICAgInZhciBwYXJlbnRFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudCcpOyIKKyAgICAgICAgInZhciBpbnB1dEVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sb3InKTsiCisgICAgICAgICJwYXJlbnRF
bGVtZW50LnJlbW92ZUNoaWxkKGlucHV0RWxlbWVudCk7IgorICAgICAgICAifTwvc2NyaXB0PiIK
KyAgICAgICAgIjwvaGVhZD4iCisgICAgICAgICI8Ym9keT4iCisgICAgICAgICI8ZGl2IGlkPSdw
YXJlbnQnPiIKKyAgICAgICAgIjxpbnB1dCB0eXBlPSdjb2xvcicgdmFsdWU9JyMxMjM0NTYnIGlk
PSdjb2xvcic+IgorICAgICAgICAiPGJ1dHRvbiBvbmNsaWNrPSdyZW1vdmVJbnB1dEVsZW1lbnQo
KTsnPlJlbW92ZSBFbGVtZW50PC9idXR0b24+IgorICAgICAgICAiPC9kaXY+IgorICAgICAgICAi
PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdf
bG9hZCh3ZWJWaWV3KCksIGNvbG9yUGlja2VySFRNTCwgMCwgMCk7CisgICAgd2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CisKKyAgICAvLyAxLiBDbGljayBpbnB1dCBlbGVtZW50IHRvIHNob3cgY29s
b3IgcGlja2VyLgorICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKKworICAgIGJvb2wgaGFuZGxlZCA9
IGZhbHNlOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJp
bnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBvbkNvbG9yUGlja2VyRG9uZSwgJmhhbmRsZWQpOwor
ICAgIHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsK
KworICAgIC8vIDYuIENsaWNrIGlucHV0IGVsZW1lbnQgdG8gc2hvdyBjb2xvciBwaWNrZXIgYWdh
aW4uCisgICAgbW91c2VDbGljaygzMCwgMjApOworCisgICAgaGFuZGxlZCA9IGZhbHNlOworICAg
IHdoaWxlICghaGFuZGxlZCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKwor
ICAgIC8vIDguIENsaWNrIGJ1dHRvbiB0byByZW1vdmUgaW5wdXQgZWxlbWVudCBkdXJsbmcgY29s
b3IgcGlja2VyIGlzIHNob3duLgorICAgIGFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3Mg
PSBoaWRlQ29sb3JQaWNrZXJCeVJlbW92aW5nRWxlbWVudDsKKyAgICBtb3VzZUNsaWNrKDgwLCAy
MCk7CisKKyAgICBoYW5kbGVkID0gZmFsc2U7CisgICAgd2hpbGUgKCFoYW5kbGVkKQorICAgICAg
ICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2RlbCh3ZWJWaWV3KCksICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCBvbkNvbG9yUGlj
a2VyRG9uZSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKaW5kZXggMjc2YmUwYS4uODAyNDBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcApAQCAt
NTUwLDEzNSArNTUwLDYgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X3J1bl9q
YXZhc2NyaXB0X3Byb21wdCkKICAgICBFWFBFQ1RfRkFMU0UocHJvbXB0Q2FsbGJhY2tEYXRhLmNh
bGxlZCk7CiB9CiAKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLXN0YXRpYyBjb25zdCBp
bnQgaW5pdGlhbFJlZCA9IDB4MTI7Ci1zdGF0aWMgY29uc3QgaW50IGluaXRpYWxHcmVlbiA9IDB4
MzQ7Ci1zdGF0aWMgY29uc3QgaW50IGluaXRpYWxCbHVlID0gMHg1NjsKLXN0YXRpYyBjb25zdCBp
bnQgaW5pdGlhbEFscGhhID0gMHhmZjsKLXN0YXRpYyBjb25zdCBpbnQgY2hhbmdlZFJlZCA9IDB4
OTg7Ci1zdGF0aWMgY29uc3QgaW50IGNoYW5nZWRHcmVlbiA9IDB4NzY7Ci1zdGF0aWMgY29uc3Qg
aW50IGNoYW5nZWRCbHVlID0gMHg1NDsKLXN0YXRpYyBjb25zdCBpbnQgY2hhbmdlZEFscGhhID0g
MHhmZjsKLQotc3RhdGljIGJvb2wgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7Ci0KLXN0YXRp
YyB2b2lkIG9uQ29sb3JQaWNrZXJEb25lKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCosIHZv
aWQqKQotewotICAgIGJvb2wqIGhhbmRsZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
OwotCi0gICAgKmhhbmRsZWQgPSB0cnVlOwotfQotCi1zdGF0aWMgdW5zaWduZWQgY2hhciBzZXRD
b2xvclBpY2tlckNvbG9yKHZvaWQqIGRhdGEpCi17Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotCi0g
ICAgLy8gNC4gQ2hhbmdlIGNvbG9yIHRvIGNoYW5nZWQgY29sb3IuCi0gICAgRVhQRUNUX1RSVUUo
ZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChzbWFydERhdGEtPnNlbGYsIGNoYW5nZWRS
ZWQsIGNoYW5nZWRHcmVlbiwgY2hhbmdlZEJsdWUsIGNoYW5nZWRBbHBoYSkpOwotCi0gICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBl
LGNvbG9yLHJlcXVlc3QiLCAwKTsKLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgRWluYV9C
b29sIHNob3dDb2xvclBpY2tlcihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGludCBy
LCBpbnQgZywgaW50IGIsIGludCBhKQotewotICAgIHN0YXRpYyBib29sIGlzRmlyc3RSdW4gPSB0
cnVlOwotCi0gICAgaXNDb2xvclBpY2tlclNob3duID0gdHJ1ZTsKLQotICAgIGlmIChpc0ZpcnN0
UnVuKSB7Ci0gICAgICAgIC8vIDIuIENoZWNrIGluaXRpYWwgdmFsdWUgZnJvbSBodG1sIGZpbGUu
Ci0gICAgICAgIEVYUEVDVF9FUShpbml0aWFsUmVkLCByKTsKLSAgICAgICAgRVhQRUNUX0VRKGlu
aXRpYWxHcmVlbiwgZyk7Ci0gICAgICAgIEVYUEVDVF9FUShpbml0aWFsQmx1ZSwgYik7Ci0gICAg
ICAgIEVYUEVDVF9FUShpbml0aWFsQWxwaGEsIGEpOwotCi0gICAgICAgIGlzRmlyc3RSdW4gPSBm
YWxzZTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyA3LiBJbnB1dCB2YWx1ZXMgc2hvdWxkIGJl
IHNhbWUgYXMgY2hhbmdlZCBjb2xvci4KLSAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRSZWQsIHIp
OwotICAgICAgICBFWFBFQ1RfRVEoY2hhbmdlZEdyZWVuLCBnKTsKLSAgICAgICAgRVhQRUNUX0VR
KGNoYW5nZWRCbHVlLCBiKTsKLSAgICAgICAgRVhQRUNUX0VRKGNoYW5nZWRBbHBoYSwgYSk7Ci0K
LSAgICAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYs
ICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgLy8gMy4gUmV0dXJuIGFmdGVyIG1ha2luZyBhIGNvbG9yIHBpY2tlci4KLSAg
ICBlY29yZV90aW1lcl9hZGQoMC4wLCBzZXRDb2xvclBpY2tlckNvbG9yLCBzbWFydERhdGEpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tlcihF
d2tfVmlld19TbWFydF9EYXRhKikKLXsKLSAgICAvLyA1LiBUZXN0IGNvbG9yIHBpY2tlciBpcyBz
aG93bi4KLSAgICBFWFBFQ1RfVFJVRShpc0NvbG9yUGlja2VyU2hvd24pOwotICAgIGlzQ29sb3JQ
aWNrZXJTaG93biA9IGZhbHNlOwotfQotCi1zdGF0aWMgRWluYV9Cb29sIGhpZGVDb2xvclBpY2tl
ckJ5UmVtb3ZpbmdFbGVtZW50KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKLXsKLSAg
ICAvLyA5LiBpbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcygpIGlzIGNhbGxlZCBpZiB0aGUgZWxl
bWVudCBpcyByZW1vdmVkLgotICAgIEVYUEVDVF9UUlVFKGlzQ29sb3JQaWNrZXJTaG93bik7Ci0g
ICAgaXNDb2xvclBpY2tlclNob3duID0gZmFsc2U7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChzbWFydERhdGEtPnNlbGYsICJpbnB1dCx0eXBlLGNvbG9yLHJlcXVlc3QiLCAw
KTsKLX0KLQotVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a192aWV3X2NvbG9yX3BpY2tlcl9j
b2xvcl9zZXQpCi17Ci0gICAgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IGV3a1ZpZXdDbGFz
cygpOwotICAgIGFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QgPSBzaG93Q29sb3JQaWNr
ZXI7Ci0gICAgYXBpLT5pbnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyA9IGhpZGVDb2xvclBpY2tl
cjsKLQotICAgIGNvbnN0IGNoYXIgY29sb3JQaWNrZXJIVE1MW10gPQotICAgICAgICAiPCFET0NU
WVBFIGh0bWw+IgotICAgICAgICAiPGh0bWw+IgotICAgICAgICAiPGhlYWQ+IgotICAgICAgICAi
PHNjcmlwdD5mdW5jdGlvbiByZW1vdmVJbnB1dEVsZW1lbnQoKXsiCi0gICAgICAgICJ2YXIgcGFy
ZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsiCi0gICAgICAg
ICJ2YXIgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbG9yJyk7Igot
ICAgICAgICAicGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChpbnB1dEVsZW1lbnQpOyIKLSAgICAg
ICAgIn08L3NjcmlwdD4iCi0gICAgICAgICI8L2hlYWQ+IgotICAgICAgICAiPGJvZHk+IgotICAg
ICAgICAiPGRpdiBpZD0ncGFyZW50Jz4iCi0gICAgICAgICI8aW5wdXQgdHlwZT0nY29sb3InIHZh
bHVlPScjMTIzNDU2JyBpZD0nY29sb3InPiIKLSAgICAgICAgIjxidXR0b24gb25jbGljaz0ncmVt
b3ZlSW5wdXRFbGVtZW50KCk7Jz5SZW1vdmUgRWxlbWVudDwvYnV0dG9uPiIKLSAgICAgICAgIjwv
ZGl2PiIKLSAgICAgICAgIjwvYm9keT4iCi0gICAgICAgICI8L2h0bWw+IjsKLQotICAgIGV3a192
aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldygpLCBjb2xvclBpY2tlckhUTUwsIDAsIDApOwot
ICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotCi0gICAgLy8gMS4gQ2xpY2sgaW5wdXQgZWxl
bWVudCB0byBzaG93IGNvbG9yIHBpY2tlci4KLSAgICBtb3VzZUNsaWNrKDMwLCAyMCk7Ci0KLSAg
ICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1ZXN0Iiwgb25Db2xvclBpY2tlckRv
bmUsICZoYW5kbGVkKTsKLSAgICB3aGlsZSAoIWhhbmRsZWQpCi0gICAgICAgIGVjb3JlX21haW5f
bG9vcF9pdGVyYXRlKCk7Ci0KLSAgICAvLyA2LiBDbGljayBpbnB1dCBlbGVtZW50IHRvIHNob3cg
Y29sb3IgcGlja2VyIGFnYWluLgotICAgIG1vdXNlQ2xpY2soMzAsIDIwKTsKLQotICAgIGhhbmRs
ZWQgPSBmYWxzZTsKLSAgICB3aGlsZSAoIWhhbmRsZWQpCi0gICAgICAgIGVjb3JlX21haW5fbG9v
cF9pdGVyYXRlKCk7Ci0KLSAgICAvLyA4LiBDbGljayBidXR0b24gdG8gcmVtb3ZlIGlucHV0IGVs
ZW1lbnQgZHVybG5nIGNvbG9yIHBpY2tlciBpcyBzaG93bi4KLSAgICBhcGktPmlucHV0X3BpY2tl
cl9jb2xvcl9kaXNtaXNzID0gaGlkZUNvbG9yUGlja2VyQnlSZW1vdmluZ0VsZW1lbnQ7Ci0gICAg
bW91c2VDbGljayg4MCwgMjApOwotCi0gICAgaGFuZGxlZCA9IGZhbHNlOwotICAgIHdoaWxlICgh
aGFuZGxlZCkKLSAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKLSAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiaW5wdXQsdHlwZSxjb2xvcixyZXF1
ZXN0Iiwgb25Db2xvclBpY2tlckRvbmUpOwotfQotI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotCiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3ZpZXdfY29udGV4dF9nZXQp
CiB7CiAgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldCh3ZWJW
aWV3KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRF
ZmwuY3BwCmluZGV4IDRhNGNiZmMuLjUwMDBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBQ
YWdlVUlDbGllbnRFZmw6OnNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGlu
aXRpYWxDb2xvciwgV0tDb2wKIHsKICAgICBQYWdlVUlDbGllbnRFZmwqIHBhZ2VVSUNsaWVudCA9
IHRvUGFnZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pOwogICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9y
ID0gV2ViQ29yZTo6Q29sb3IoV2ViS2l0Ojp0b1dURlN0cmluZyhpbml0aWFsQ29sb3IpKTsKLSAg
ICBwYWdlVUlDbGllbnQtPm1fdmlld0ltcGwtPnJlcXVlc3RDb2xvclBpY2tlcihjb2xvci5yZWQo
KSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpLCBsaXN0ZW5lcik7
CisgICAgcGFnZVVJQ2xpZW50LT5tX3ZpZXdJbXBsLT5yZXF1ZXN0Q29sb3JQaWNrZXIobGlzdGVu
ZXIsIGNvbG9yKTsKIH0KIAogdm9pZCBQYWdlVUlDbGllbnRFZmw6OmhpZGVDb2xvclBpY2tlcihX
S1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>