<?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>173706</bug_id>
          
          <creation_ts>2017-06-22 02:41:36 -0700</creation_ts>
          <short_desc>Remove unused coordinated graphics C API</short_desc>
          <delta_ts>2017-06-22 04:15:26 -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>WebKit2</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321811</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 02:41:36 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321812</commentid>
    <comment_count>1</comment_count>
      <attachid>313603</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 02:43:03 -0700</bug_when>
    <thetext>Created attachment 313603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321828</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 04:15:26 -0700</bug_when>
    <thetext>Committed r218687: &lt;http://trac.webkit.org/changeset/218687&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313603</attachid>
            <date>2017-06-22 02:43:03 -0700</date>
            <delta_ts>2017-06-22 03:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-coord-graphics-c-api.diff</filename>
            <type>text/plain</type>
            <size>38180</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxNDY0OThiOTQ0My4uYmI3MWZkODY4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxNy0wNi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBjb29yZGluYXRlZCBncmFwaGljcyBD
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nv
b3JkaW5hdGVkU2NlbmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaDogUmVtb3ZlZC4KKworMjAxNy0w
Ni0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAg
ICAgW1dQRV0gQWRkIGluaXRpYWwgd2ViIGV4dGVuc2lvbnMgQVBJCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2NDAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dL
Vmlldy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYjAyYjVlM2I5Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS1ZpZXcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICogQ29weXJpZ2h0IChD
KSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiV0tW
aWV3LmgiCi0KLSNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgotI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYlZpZXcuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgcGFnZUNvbmZpZ3VyYXRpb24pCi17Ci0gICAgYXV0byB3ZWJW
aWV3ID0gV2ViVmlldzo6Y3JlYXRlKCp0b0ltcGwocGFnZUNvbmZpZ3VyYXRpb24pKTsKLSAgICBy
ZXR1cm4gdG9BUEkoJndlYlZpZXcubGVha1JlZigpKTsKLX0KLQotV0tTaXplIFdLVmlld0dldFNp
emUoV0tWaWV3UmVmIHZpZXdSZWYpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbCh2aWV3UmVm
KS0+c2l6ZSgpKTsKLX0KLQotdm9pZCBXS1ZpZXdTZXRTaXplKFdLVmlld1JlZiB2aWV3UmVmLCBX
S1NpemUgc2l6ZSkKLXsKLSAgICB0b0ltcGwodmlld1JlZiktPnNldFNpemUodG9JbnRTaXplKHNp
emUpKTsKLX0KLQotdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBj
b25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5p
bml0aWFsaXplQ2xpZW50KGNsaWVudCk7Ci19Ci0KLWJvb2wgV0tWaWV3SXNBY3RpdmUoV0tWaWV3
UmVmIHZpZXdSZWYpCi17Ci0gICAgcmV0dXJuIHRvSW1wbCh2aWV3UmVmKS0+aXNBY3RpdmUoKTsK
LX0KLQotdm9pZCBXS1ZpZXdTZXRJc0FjdGl2ZShXS1ZpZXdSZWYgdmlld1JlZiwgYm9vbCBpc0Fj
dGl2ZSkKLXsKLSAgICB0b0ltcGwodmlld1JlZiktPnNldEFjdGl2ZShpc0FjdGl2ZSk7Ci19Ci0K
LWJvb2wgV0tWaWV3SXNGb2N1c2VkKFdLVmlld1JlZiB2aWV3UmVmKQotewotICAgIHJldHVybiB0
b0ltcGwodmlld1JlZiktPmlzRm9jdXNlZCgpOwotfQotCi12b2lkIFdLVmlld1NldElzRm9jdXNl
ZChXS1ZpZXdSZWYgdmlld1JlZiwgYm9vbCBpc0ZvY3VzZWQpCi17Ci0gICAgdG9JbXBsKHZpZXdS
ZWYpLT5zZXRGb2N1c2VkKGlzRm9jdXNlZCk7Ci19Ci0KLWJvb2wgV0tWaWV3SXNWaXNpYmxlKFdL
Vmlld1JlZiB2aWV3UmVmKQotewotICAgIHJldHVybiB0b0ltcGwodmlld1JlZiktPmlzVmlzaWJs
ZSgpOwotfQotCi12b2lkIFdLVmlld1NldElzVmlzaWJsZShXS1ZpZXdSZWYgdmlld1JlZiwgYm9v
bCBpc1Zpc2libGUpCi17Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRWaXNpYmxlKGlzVmlzaWJs
ZSk7Ci19Ci0KLWZsb2F0IFdLVmlld0dldENvbnRlbnRTY2FsZUZhY3RvcihXS1ZpZXdSZWYgdmll
d1JlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5jb250ZW50U2NhbGVGYWN0b3Io
KTsKLX0KLQotdm9pZCBXS1ZpZXdTZXRDb250ZW50U2NhbGVGYWN0b3IoV0tWaWV3UmVmIHZpZXdS
ZWYsIGZsb2F0IHNjYWxlKQotewotICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0Q29udGVudFNjYWxl
RmFjdG9yKHNjYWxlKTsKLX0KLQotV0tQb2ludCBXS1ZpZXdHZXRDb250ZW50UG9zaXRpb24oV0tW
aWV3UmVmIHZpZXdSZWYpCi17Ci0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcmVzdWx0
ID0gdG9JbXBsKHZpZXdSZWYpLT5jb250ZW50UG9zaXRpb24oKTsKLSAgICByZXR1cm4gV0tQb2lu
dE1ha2UocmVzdWx0LngoKSwgcmVzdWx0LnkoKSk7Ci19Ci0KLXZvaWQgV0tWaWV3U2V0Q29udGVu
dFBvc2l0aW9uKFdLVmlld1JlZiB2aWV3UmVmLCBXS1BvaW50IHBvc2l0aW9uKQotewotICAgIHRv
SW1wbCh2aWV3UmVmKS0+c2V0Q29udGVudFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQocG9z
aXRpb24ueCwgcG9zaXRpb24ueSkpOwotfQotCi12b2lkIFdLVmlld1NldFVzZXJWaWV3cG9ydFRy
YW5zbGF0aW9uKFdLVmlld1JlZiB2aWV3UmVmLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKLXsKLSAg
ICB0b0ltcGwodmlld1JlZiktPnNldFVzZXJWaWV3cG9ydFRyYW5zbGF0aW9uKHR4LCB0eSk7Ci19
Ci0KLVdLUG9pbnQgV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyhXS1ZpZXdSZWYgdmlld1Jl
ZiwgV0tQb2ludCBwb2ludCkKLXsKLSAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcmVzdWx0
ID0gdG9JbXBsKHZpZXdSZWYpLT51c2VyVmlld3BvcnRUb0NvbnRlbnRzKHRvSW50UG9pbnQocG9p
bnQpKTsKLSAgICByZXR1cm4gV0tQb2ludE1ha2UocmVzdWx0LngoKSwgcmVzdWx0LnkoKSk7Ci19
Ci0KLVdLUG9pbnQgV0tWaWV3VXNlclZpZXdwb3J0VG9TY2VuZShXS1ZpZXdSZWYgdmlld1JlZiwg
V0tQb2ludCBwb2ludCkKLXsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCByZXN1bHQgPSB0b0ltcGwo
dmlld1JlZiktPnVzZXJWaWV3cG9ydFRvU2NlbmUodG9JbnRQb2ludChwb2ludCkpOwotICAgIHJl
dHVybiBXS1BvaW50TWFrZShyZXN1bHQueCgpLCByZXN1bHQueSgpKTsKLX0KLQotV0tQb2ludCBX
S1ZpZXdDb250ZW50c1RvVXNlclZpZXdwb3J0KFdLVmlld1JlZiB2aWV3UmVmLCBXS1BvaW50IHBv
aW50KQotewotICAgIFdlYkNvcmU6OkludFBvaW50IHJlc3VsdCA9IHRvSW1wbCh2aWV3UmVmKS0+
Y29udGVudHNUb1VzZXJWaWV3cG9ydCh0b0ludFBvaW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFdL
UG9pbnRNYWtlKHJlc3VsdC54KCksIHJlc3VsdC55KCkpOwotfQotCi12b2lkIFdLVmlld1BhaW50
VG9DdXJyZW50R0xDb250ZXh0KFdLVmlld1JlZiB2aWV3UmVmKQotewotICAgIHRvSW1wbCh2aWV3
UmVmKS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKLX0KLQotV0tQYWdlUmVmIFdLVmlld0dl
dFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCi17Ci0gICAgcmV0dXJuIHRvSW1wbCh2aWV3UmVmKS0+
cGFnZVJlZigpOwotfQotCi12b2lkIFdLVmlld1NldERyYXdzQmFja2dyb3VuZChXS1ZpZXdSZWYg
dmlld1JlZiwgYm9vbCBmbGFnKQotewotICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0RHJhd3NCYWNr
Z3JvdW5kKGZsYWcpOwotfQotCi1ib29sIFdLVmlld0dldERyYXdzQmFja2dyb3VuZChXS1ZpZXdS
ZWYgdmlld1JlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5kcmF3c0JhY2tncm91
bmQoKTsKLX0KLQotdm9pZCBXS1ZpZXdTZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChXS1Zp
ZXdSZWYgdmlld1JlZiwgYm9vbCBmbGFnKQotewotICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0RHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoZmxhZyk7Ci19Ci0KLWJvb2wgV0tWaWV3R2V0RHJhd3NU
cmFuc3BhcmVudEJhY2tncm91bmQoV0tWaWV3UmVmIHZpZXdSZWYpCi17Ci0gICAgcmV0dXJuIHRv
SW1wbCh2aWV3UmVmKS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKLX0KLQotdm9pZCBX
S1ZpZXdTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoV0tWaWV3UmVmIHZpZXdS
ZWYpCi17Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKTsKLX0KLQotdm9pZCBXS1ZpZXdSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucyhXS1ZpZXdSZWYgdmlld1JlZikKLXsKLSAgICB0b0ltcGwodmlld1JlZiktPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Ci19Ci0KLWJvb2wgV0tWaWV3RXhpdEZ1
bGxTY3JlZW4oV0tWaWV3UmVmIHZpZXdSZWYpCi17Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIHJldHVybiB0b0ltcGwodmlld1JlZiktPnJlcXVlc3RFeGl0RnVsbFNjcmVlbigpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odmlld1JlZik7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLXZvaWQgV0tWaWV3U2V0T3BhY2l0eShXS1ZpZXdSZWYgdmlldywgZG91YmxlIG9w
YWNpdHkpCi17Ci0gICAgdG9JbXBsKHZpZXcpLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwotfQotCi1k
b3VibGUgV0tWaWV3T3BhY2l0eShXS1ZpZXdSZWYgdmlldykKLXsKLSAgICByZXR1cm4gdG9JbXBs
KHZpZXcpLT5vcGFjaXR5KCk7Ci19Ci0KLXZvaWQgV0tWaWV3RmluZFpvb21hYmxlQXJlYUZvclJl
Y3QoV0tWaWV3UmVmLCBXS1JlY3QpCi17Ci19Ci0KLVdLU2l6ZSBXS1ZpZXdHZXRDb250ZW50c1Np
emUoV0tWaWV3UmVmIHZpZXdSZWYpCi17Ci0gICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSA9IHRvSW1wbCh2aWV3UmVmKS0+Y29udGVudHNTaXplKCk7Ci0gICAgcmV0dXJuIFdLU2l6ZU1h
a2Uoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLX0KLQotI2VuZGlmIC8vIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDcyOWIyNmZjM2YyLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXS1ZpZXdfaAotI2RlZmluZSBXS1ZpZXdfaAotCi0j
aW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0dlb21ldHJ5Lmg+
Ci0KLSNpZm5kZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQot
I2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQg
KCpXS1ZpZXdDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwotdHlwZWRlZiB2b2lkICgqV0tWaWV3Vmlld05lZWRzRGlzcGxheUNhbGxiYWNrKShXS1ZpZXdS
ZWYgdmlldywgV0tSZWN0IGFyZWEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2
b2lkICgqV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxiYWNrKShXS1ZpZXdSZWYg
dmlldywgV0tTaXplIHNpemUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tWaWV3V2ViUHJvY2Vzc0NyYXNoZWRDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIFdLVVJM
UmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1ZpZXdQ
YWdlRGlkQ2hhbmdlQ29udGVudHNQb3NpdGlvbkNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tQ
b2ludCBwb3NpdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpX
S1ZpZXdQYWdlRGlkUmVuZGVyRnJhbWVDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIFdLU2l6ZSBj
b250ZW50c1NpemUsIFdLUmVjdCBjb3ZlcmVkUmVjdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
Ci10eXBlZGVmIHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzQ2Fs
bGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlVG9vbHRp
cENhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tTdHJpbmdSZWYgbmV3VG9vbHRpcCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1ZpZXdEaWRGaW5kWm9vbWFibGVB
cmVhQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1BvaW50IHBvaW50LCBXS1JlY3QgYXJlYSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1ZpZXdEb25lV2l0aFRv
dWNoRXZlbnRDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIFdLVG91Y2hFdmVudFJlZiB0b3VjaEV2
ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLXR5
cGVkZWYgc3RydWN0IFdLVmlld0NsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1ZpZXdD
bGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS1ZpZXdDbGllbnRWMCB7Ci0gICAgV0tWaWV3
Q2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0gICAgLy8g
VmVyc2lvbiAwCi0gICAgV0tWaWV3Vmlld05lZWRzRGlzcGxheUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgIHZpZXdOZWVkc0Rpc3BsYXk7Ci0gICAgV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRz
U2l6ZUNhbGxiYWNrICAgICAgICAgIGRpZENoYW5nZUNvbnRlbnRzU2l6ZTsKLSAgICBXS1ZpZXdX
ZWJQcm9jZXNzQ3Jhc2hlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgd2ViUHJvY2Vzc0NyYXNo
ZWQ7Ci0gICAgV0tWaWV3Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdlYlByb2Nlc3NEaWRSZWxhdW5jaDsKLSAgICBXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNQ
b3NpdGlvbkNhbGxiYWNrICAgICAgZGlkQ2hhbmdlQ29udGVudHNQb3NpdGlvbjsKLSAgICBXS1Zp
ZXdQYWdlRGlkUmVuZGVyRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgZGlkUmVuZGVyRnJh
bWU7Ci0gICAgV0tWaWV3Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb247Ci0gICAgV0tWaWV3UGFnZURpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlc0NhbGxiYWNrICAgIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlczsKLSAg
ICBXS1ZpZXdQYWdlRGlkQ2hhbmdlVG9vbHRpcENhbGxiYWNrICAgICAgICAgICAgICAgZGlkQ2hh
bmdlVG9vbHRpcDsKLSAgICBXS1ZpZXdEaWRGaW5kWm9vbWFibGVBcmVhQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgZGlkRmluZFpvb21hYmxlQXJlYTsKLSAgICBXS1ZpZXdEb25lV2l0aFRvdWNoRXZl
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgZG9uZVdpdGhUb3VjaEV2ZW50OwotfSBXS1ZpZXdD
bGllbnRWMDsKLQotV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBwYWdlQ29uZmlndXJhdGlvbik7Ci0KLVdLX0VYUE9SVCBXS1NpemUgV0tWaWV3
R2V0U2l6ZShXS1ZpZXdSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0U2l6ZShXS1ZpZXdS
ZWYsIFdLU2l6ZSBzaXplKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChX
S1ZpZXdSZWYsIGNvbnN0IFdLVmlld0NsaWVudEJhc2UqKTsKLQotV0tfRVhQT1JUIGJvb2wgV0tW
aWV3SXNBY3RpdmUoV0tWaWV3UmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLVmlld1NldElzQWN0aXZl
KFdLVmlld1JlZiwgYm9vbCk7Ci0KLVdLX0VYUE9SVCBib29sIFdLVmlld0lzRm9jdXNlZChXS1Zp
ZXdSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0SXNGb2N1c2VkKFdLVmlld1JlZiwgYm9v
bCk7Ci0KLVdLX0VYUE9SVCBib29sIFdLVmlld0lzVmlzaWJsZShXS1ZpZXdSZWYpOwotV0tfRVhQ
T1JUIHZvaWQgV0tWaWV3U2V0SXNWaXNpYmxlKFdLVmlld1JlZiwgYm9vbCk7Ci0KLVdLX0VYUE9S
VCBmbG9hdCBXS1ZpZXdHZXRDb250ZW50U2NhbGVGYWN0b3IoV0tWaWV3UmVmKTsKLVdLX0VYUE9S
VCB2b2lkIFdLVmlld1NldENvbnRlbnRTY2FsZUZhY3RvcihXS1ZpZXdSZWYsIGZsb2F0KTsKLQot
V0tfRVhQT1JUIFdLUG9pbnQgV0tWaWV3R2V0Q29udGVudFBvc2l0aW9uKFdLVmlld1JlZik7Ci1X
S19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRDb250ZW50UG9zaXRpb24oV0tWaWV3UmVmLCBXS1BvaW50
KTsKLQotV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24oV0tW
aWV3UmVmLCBkb3VibGUgdHgsIGRvdWJsZSB0eSk7Ci1XS19FWFBPUlQgV0tQb2ludCBXS1ZpZXdV
c2VyVmlld3BvcnRUb0NvbnRlbnRzKFdLVmlld1JlZiwgV0tQb2ludCk7Ci1XS19FWFBPUlQgV0tQ
b2ludCBXS1ZpZXdVc2VyVmlld3BvcnRUb1NjZW5lKFdLVmlld1JlZiwgV0tQb2ludCk7Ci1XS19F
WFBPUlQgV0tQb2ludCBXS1ZpZXdDb250ZW50c1RvVXNlclZpZXdwb3J0KFdLVmlld1JlZiwgV0tQ
b2ludCk7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLVmlld1BhaW50VG9DdXJyZW50R0xDb250ZXh0KFdL
Vmlld1JlZik7Ci0KLVdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYp
OwotCi1XS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXREcmF3c0JhY2tncm91bmQoV0tWaWV3UmVmLCBi
b29sKTsKLVdLX0VYUE9SVCBib29sIFdLVmlld0dldERyYXdzQmFja2dyb3VuZChXS1ZpZXdSZWYp
OwotCi1XS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChX
S1ZpZXdSZWYsIGJvb2wpOwotV0tfRVhQT1JUIGJvb2wgV0tWaWV3R2V0RHJhd3NUcmFuc3BhcmVu
dEJhY2tncm91bmQoV0tWaWV3UmVmKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tWaWV3U3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKFdLVmlld1JlZik7Ci1XS19FWFBPUlQgdm9pZCBX
S1ZpZXdSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1ZpZXdSZWYpOwotCi1X
S19FWFBPUlQgYm9vbCBXS1ZpZXdFeGl0RnVsbFNjcmVlbihXS1ZpZXdSZWYpOwotCi1XS19FWFBP
UlQgdm9pZCBXS1ZpZXdTZXRPcGFjaXR5KFdLVmlld1JlZiB2aWV3LCBkb3VibGUgb3BhY2l0eSk7
Ci1XS19FWFBPUlQgZG91YmxlIFdLVmlld09wYWNpdHkoV0tWaWV3UmVmIHZpZXcpOwotCi1XS19F
WFBPUlQgdm9pZCBXS1ZpZXdGaW5kWm9vbWFibGVBcmVhRm9yUmVjdChXS1ZpZXdSZWYsIFdLUmVj
dCk7Ci0KLVdLX0VYUE9SVCBXS1NpemUgV0tWaWV3R2V0Q29udGVudHNTaXplKFdLVmlld1JlZik7
Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS1ZpZXdfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTg1NTExNmYzMWQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
U2NlbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCi0jaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lLmgiCi0KLSNpbmNsdWRl
ICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKLSNpbmNsdWRlICJXS0Nvb3JkaW5hdGVkU2Nl
bmVBUElDYXN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyTGF5ZXIuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRTY2VuZUxh
eWVyIFdLQ29vcmRpbmF0ZWRTY2VuZUZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdLQ29v
cmRpbmF0ZWRTY2VuZSBzY2VuZSwgV0tQb2ludCBwb2ludCkKLXsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKHNjZW5lKS0+ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoV2ViQ29yZTo6Rmxv
YXRQb2ludChwb2ludC54LCBwb2ludC55KSkpOwotfQotCi1XS19FWFBPUlQgdWludDMyX3QgV0tD
b29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBsYXllcikK
LXsKLSAgICByZXR1cm4gdG9JbXBsKGxheWVyKS0+aWQoKTsKLX0KLQotV0tfRVhQT1JUIHZvaWQg
V0tDb29yZGluYXRlZFNjZW5lU2Nyb2xsQnkoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIs
IFdLU2l6ZSBvZmZzZXQpCi17Ci0gICAgdG9JbXBsKGxheWVyKS0+c2Nyb2xsQnkoV2ViQ29yZTo6
RmxvYXRTaXplKG9mZnNldC53aWR0aCwgb2Zmc2V0LmhlaWdodCkpOwotfQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA2MTIxMjg2NTk0Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV0tDb29yZGluYXRlZFNjZW5lX2gKLSNkZWZpbmUgV0tDb29yZGluYXRlZFNj
ZW5lX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0dlb21ldHJ5Lmg+Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLQotdHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwotdHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0dMYXllciogV0tDb29yZGluYXRlZFNjZW5lTGF5ZXI7Ci0KLVdLX0VYUE9SVCBXS0Nvb3Jk
aW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVGaW5kU2Nyb2xsYWJsZUNvbnRlbnRz
TGF5ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUsIFdLUG9pbnQpOwotV0tfRVhQT1JUIHVpbnQzMl90
IFdLQ29vcmRpbmF0ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIpOwot
V0tfRVhQT1JUIHZvaWQgV0tDb29yZGluYXRlZFNjZW5lU2Nyb2xsQnkoV0tDb29yZGluYXRlZFNj
ZW5lTGF5ZXIsIFdLU2l6ZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmIC8vIF9f
Y3BsdXNwbHVzCi0KLSNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwM2IzY2VmMDk1Li5lNTMz
MTliMGVhMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBSZW1vdmUgdW51c2VkIGNvb3JkaW5hdGVkIGdy
YXBoaWNzIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzM3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dL
Vmlld0lzQWN0aXZlU2V0SXNBY3RpdmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld0lzQWN0aXZlU2V0
SXNBY3RpdmVfQnVuZGxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdSZXN0b3JlWm9vbUFuZFNjcm9s
bEJhY2tGb3J3YXJkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRz
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29v
cmRpbmF0ZWRHcmFwaGljcy9iYWNrZm9yd2FyZDEuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9iYWNrZm9yd2Fy
ZDIuaHRtbDogUmVtb3ZlZC4KKworMjAxNy0wNi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgW1dQRV0gQnVpbGQgZ2xpYiBBUEkgdGVzdHMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzcwMgog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2ZVNldElzQWN0aXZlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld0lzQWN0aXZlU2V0
SXNBY3RpdmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjk2MjViOTkwYi4u
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tWaWV3SXNBY3RpdmVTZXRJc0FjdGl2ZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJUZXN0
LmgiCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dL
UGFnZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgPFdlYktp
dC9XS1ZpZXcuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCBk
aWRXZWJQcm9jZXNzQ3Jhc2ggPSBmYWxzZTsKLXN0YXRpYyBib29sIGRpZFdlYlByb2Nlc3NSZWxh
dW5jaCA9IGZhbHNlOwotc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwotCi1zdGF0
aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5
cGVSZWYsIGNvbnN0IHZvaWQqKQotewotICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOwotfQotCi1z
dGF0aWMgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYgdmlldywgV0tVUkxSZWYsIGNv
bnN0IHZvaWQqKQotewotICAgIC8vIFdlYlByb2Nlc3MgY3Jhc2hlZCwgc28gYXQgdGhpcyBwb2lu
dCB0aGUgdmlldyBzaG91bGQgbm90IGJlIGFjdGl2ZS4KLSAgICBBU1NFUlRfRkFMU0UoV0tWaWV3
SXNBY3RpdmUodmlldykpOwotICAgIGRpZFdlYlByb2Nlc3NDcmFzaCA9IHRydWU7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdlYlByb2Nlc3NSZWxhdW5jaGVkKFdLVmlld1JlZiB2aWV3LCBjb25zdCB2b2lk
KikKLXsKLSAgICAvLyBXZWJQcm9jZXNzIGp1c3QgcmVsYXVuY2hlZCwgc28gYXQgdGhpcyBwb2lu
dCB0aGUgdmlldyBzaG91bGQgbm90IGJlIGFjdGl2ZS4KLSAgICBBU1NFUlRfRkFMU0UoV0tWaWV3
SXNBY3RpdmUodmlldykpOwotCi0gICAgZGlkV2ViUHJvY2Vzc1JlbGF1bmNoID0gdHJ1ZTsKLX0K
LQotVEVTVChXZWJLaXQyLCBXS1ZpZXdJc0FjdGl2ZVNldElzQWN0aXZlKQotewotICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkp
OwotICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gdmlldyA9IGFkb3B0V0soV0tWaWV3Q3JlYXRl
KGNvbnRleHQuZ2V0KCksIDApKTsKLQotICAgIFdLVmlld0luaXRpYWxpemUodmlldy5nZXQoKSk7
Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHNob3VsZCBoYXZlIGFuIGFjdGl2ZSB2aWV3Lgot
ICAgIEFTU0VSVF9UUlVFKFdLVmlld0lzQWN0aXZlKHZpZXcuZ2V0KCkpKTsKLQotICAgIC8vIE5v
dyB3ZSBhcmUgZ29pbmcgdG8gcGxheSB3aXRoIGl0cyBhY3RpdmUgc3RhdGUgYSBmZXcgdGltZXMu
Ci0gICAgV0tWaWV3U2V0SXNBY3RpdmUodmlldy5nZXQoKSwgdHJ1ZSk7Ci0gICAgQVNTRVJUX1RS
VUUoV0tWaWV3SXNBY3RpdmUodmlldy5nZXQoKSkpOwotCi0gICAgV0tWaWV3U2V0SXNBY3RpdmUo
dmlldy5nZXQoKSwgZmFsc2UpOwotICAgIEFTU0VSVF9GQUxTRShXS1ZpZXdJc0FjdGl2ZSh2aWV3
LmdldCgpKSk7Ci0KLSAgICBXS1ZpZXdTZXRJc0FjdGl2ZSh2aWV3LmdldCgpLCBmYWxzZSk7Ci0g
ICAgQVNTRVJUX0ZBTFNFKFdLVmlld0lzQWN0aXZlKHZpZXcuZ2V0KCkpKTsKLQotICAgIFdLVmll
d1NldElzQWN0aXZlKHZpZXcuZ2V0KCksIHRydWUpOwotICAgIEFTU0VSVF9UUlVFKFdLVmlld0lz
QWN0aXZlKHZpZXcuZ2V0KCkpKTsKLX0KLQotVEVTVChXZWJLaXQyLCBXS1ZpZXdJc0FjdGl2ZSkK
LXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldLVmlld0lzQWN0aXZlU2V0SXNB
Y3RpdmVUZXN0IikpOwotICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gdmlldyA9IGFkb3B0V0so
V0tWaWV3Q3JlYXRlKGNvbnRleHQuZ2V0KCksIDApKTsKLQotICAgIFdLVmlld0NsaWVudFYwIHZp
ZXdDbGllbnQ7Ci0gICAgbWVtc2V0KCZ2aWV3Q2xpZW50LCAwLCBzaXplb2YoV0tWaWV3Q2xpZW50
VjApKTsKLSAgICB2aWV3Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgdmlld0NsaWVudC53
ZWJQcm9jZXNzQ3Jhc2hlZCA9IHdlYlByb2Nlc3NDcmFzaGVkOwotICAgIHZpZXdDbGllbnQud2Vi
UHJvY2Vzc0RpZFJlbGF1bmNoID0gd2ViUHJvY2Vzc1JlbGF1bmNoZWQ7Ci0gICAgV0tWaWV3U2V0
Vmlld0NsaWVudCh2aWV3LmdldCgpLCAmdmlld0NsaWVudC5iYXNlKTsKLQotICAgIFdLVmlld0lu
aXRpYWxpemUodmlldy5nZXQoKSk7Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHNob3VsZCBo
YXZlIGFuIGFjdGl2ZSB2aWV3LgotICAgIEFTU0VSVF9UUlVFKFdLVmlld0lzQWN0aXZlKHZpZXcu
Z2V0KCkpKTsKLQotICAgIFdLUGFnZUxvYWRlckNsaWVudFYzIHBhZ2VMb2FkZXJDbGllbnQ7Ci0g
ICAgbWVtc2V0KCZwYWdlTG9hZGVyQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVyQ2xpZW50
KSk7Ci0gICAgcGFnZUxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwotICAgIHBhZ2VMb2Fk
ZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOwot
ICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tWaWV3R2V0UGFnZSh2aWV3LmdldCgpKSwg
JnBhZ2VMb2FkZXJDbGllbnQuYmFzZSk7Ci0KLSAgICBjb25zdCBXS1NpemUgc2l6ZSA9IFdLU2l6
ZU1ha2UoMTAwLCAxMDApOwotICAgIFdLVmlld1NldFNpemUodmlldy5nZXQoKSwgc2l6ZSk7Ci0K
LSAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7Ci0gICAgZGlkV2ViUHJvY2Vzc0NyYXNoID0gZmFs
c2U7Ci0gICAgZGlkV2ViUHJvY2Vzc1JlbGF1bmNoID0gZmFsc2U7Ci0KLSAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gc2ltcGxlVXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgiLi4vV2ViS2l0L3NpbXBsZSIsICJodG1sIikpOwotICAgIFdLUGFnZUxvYWRVUkwoV0tWaWV3
R2V0UGFnZSh2aWV3LmdldCgpKSwgc2ltcGxlVXJsLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaExvYWQpOwotICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKLQotICAgIFdLQ29udGV4
dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJD
cmFzaCIpLmdldCgpLCAwKTsKLSAgICBVdGlsOjpydW4oJmRpZFdlYlByb2Nlc3NDcmFzaCk7Ci0g
ICAgQVNTRVJUX1RSVUUoZGlkV2ViUHJvY2Vzc0NyYXNoKTsKLQotICAgIFdLUGFnZUxvYWRVUkwo
V0tWaWV3R2V0UGFnZSh2aWV3LmdldCgpKSwgc2ltcGxlVXJsLmdldCgpKTsKLSAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwotCi0gICAgQVNTRVJUX1RSVUUoZGlkV2ViUHJvY2Vzc1JlbGF1
bmNoKTsKLSAgICBBU1NFUlRfVFJVRShkaWRGaW5pc2hMb2FkKTsKLX0KLQotfSAvLyBUZXN0V2Vi
S2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2ZVNldElzQWN0aXZlX0J1bmRsZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1Zp
ZXdJc0FjdGl2ZVNldElzQWN0aXZlX0J1bmRsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEzY2IxYjZkZWJkLi4wMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXdJc0FjdGl2ZVNldElzQWN0
aXZlX0J1bmRsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVRlc3QuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KLQotI2luY2x1ZGUg
PGNzdGRsaWI+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgV0tWaWV3SXNB
Y3RpdmVTZXRJc0FjdGl2ZVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKLXB1Ymxp
YzoKLSAgICBXS1ZpZXdJc0FjdGl2ZVNldElzQWN0aXZlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
aWRlbnRpZmllcikKLSAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKLSAg
ICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSkKLSAgICB7Ci0gICAgICAgIGlmICghV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNyYXNoIikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGFib3J0KCk7
Ci0gICAgfQotfTsKLQotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8V0tWaWV3
SXNBY3RpdmVTZXRJc0FjdGl2ZVRlc3Q+IHJlZ2lzdHJhcigiV0tWaWV3SXNBY3RpdmVTZXRJc0Fj
dGl2ZVRlc3QiKTsKLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
S1ZpZXdSZXN0b3JlWm9vbUFuZFNjcm9sbEJhY2tGb3J3YXJkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld1Jlc3RvcmVab29t
QW5kU2Nyb2xsQmFja0ZvcndhcmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
YzU1NmVjZWU1NS4uMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3UmVzdG9yZVpvb21BbmRTY3JvbGxCYWNr
Rm9yd2FyZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVk
ZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dC5o
PgotI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgIlRlc3QuaCIKLQot
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgYm9vbCBmaW5pc2hlZExvYWQgPSBm
YWxzZTsKLXN0YXRpYyBib29sIHNjcm9sbCA9IGZhbHNlOwotCi1zdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQotewotICAgIGZpbmlzaGVkTG9hZCA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZENo
YW5nZUNvbnRlbnRzUG9zaXRpb24oV0tWaWV3UmVmLCBXS1BvaW50IHAsIGNvbnN0IHZvaWQqKQot
ewotICAgIHNjcm9sbCA9IHRydWU7Ci19Ci0KLVRFU1QoV2ViS2l0MiwgV0tWaWV3UmVzdG9yZVpv
b21BbmRTY3JvbGxCYWNrRm9yd2FyZCkKLXsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFBsYXRmb3JtV2ViVmll
dyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwotICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gdmll
dyA9IEVXS1ZpZXdHZXRXS1ZpZXcod2ViVmlldy5wbGF0Zm9ybVZpZXcoKSk7Ci0KLSAgICBXS1Bh
Z2VTZXRVc2VGaXhlZExheW91dCh3ZWJWaWV3LnBhZ2UoKSwgdHJ1ZSk7Ci0KLSAgICBXS1BhZ2VM
b2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAs
IHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0g
MDsKLSAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lOwotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCks
ICZsb2FkZXJDbGllbnQuYmFzZSk7Ci0KLSAgICBXS1ZpZXdDbGllbnRWMCB2aWV3Q2xpZW50Owot
ICAgIG1lbXNldCgmdmlld0NsaWVudCwgMCwgc2l6ZW9mKHZpZXdDbGllbnQpKTsKLSAgICB2aWV3
Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgdmlld0NsaWVudC5kaWRDaGFuZ2VDb250ZW50
c1Bvc2l0aW9uID0gZGlkQ2hhbmdlQ29udGVudHNQb3NpdGlvbjsKLSAgICBXS1ZpZXdTZXRWaWV3
Q2xpZW50KHZpZXcuZ2V0KCksICZ2aWV3Q2xpZW50LmJhc2UpOwotCi0gICAgLy8gTG9hZCBmaXJz
dCBwYWdlLgotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgVXRpbDo6Y3Jl
YXRlVVJMRm9yUmVzb3VyY2UoIkNvb3JkaW5hdGVkR3JhcGhpY3MvYmFja2ZvcndhcmQxIiwgImh0
bWwiKSk7Ci0gICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKLSAg
ICBVdGlsOjpydW4oJmZpbmlzaGVkTG9hZCk7Ci0KLSAgICAvLyBDaGFuZ2Ugc2NhbGUgYW5kIHBv
c2l0aW9uIG9uIGZpcnN0IHBhZ2UuCi0gICAgZmxvYXQgZmlyc3RQYWdlU2NhbGUgPSAyLjA7Ci0g
ICAgV0tQb2ludCBmaXJzdFBhZ2VTY3JvbGxQb3NpdGlvbiA9IFdLUG9pbnRNYWtlKDEwLCAzNTAp
OyAvLyBTY3JvbGwgcG9zaXRpb24gb2YgZmlyc3QgcGFnZS4KLSAgICBXS1ZpZXdTZXRDb250ZW50
UG9zaXRpb24odmlldy5nZXQoKSwgZmlyc3RQYWdlU2Nyb2xsUG9zaXRpb24pOwotICAgIFdLVmll
d1NldENvbnRlbnRTY2FsZUZhY3Rvcih2aWV3LmdldCgpLCBmaXJzdFBhZ2VTY2FsZSk7Ci0gICAg
ZmxvYXQgY3VycmVudFBhZ2VTY2FsZSA9IFdLVmlld0dldENvbnRlbnRTY2FsZUZhY3Rvcih2aWV3
LmdldCgpKTsKLSAgICBXS1BvaW50IGN1cnJlbnRQYWdlUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250
ZW50UG9zaXRpb24odmlldy5nZXQoKSk7Ci0gICAgVXRpbDo6cnVuKCZzY3JvbGwpOwotICAgIEVY
UEVDVF9FUShmaXJzdFBhZ2VTY2FsZSwgY3VycmVudFBhZ2VTY2FsZSk7Ci0gICAgRVhQRUNUX0VR
KGZpcnN0UGFnZVNjcm9sbFBvc2l0aW9uLngsIGN1cnJlbnRQYWdlUG9zaXRpb24ueCk7Ci0gICAg
RVhQRUNUX0VRKGZpcnN0UGFnZVNjcm9sbFBvc2l0aW9uLnksIGN1cnJlbnRQYWdlUG9zaXRpb24u
eSk7Ci0KLSAgICAvLyBMb2FkIHNlY29uZCBwYWdlLgotICAgIGZpbmlzaGVkTG9hZCA9IGZhbHNl
OwotICAgIHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoIkNvb3JkaW5h
dGVkR3JhcGhpY3MvYmFja2ZvcndhcmQyIiwgImh0bWwiKSk7Ci0gICAgV0tQYWdlTG9hZFVSTCh3
ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkTG9hZCk7
Ci0KLSAgICAvLyBDaGVjayBpZiBzZWNvbmQgcGFnZSBzY2FsZSBhbmQgcG9zaXRpb24gaXMgY29y
cmVjdC4KLSAgICBjdXJyZW50UGFnZVNjYWxlID0gV0tWaWV3R2V0Q29udGVudFNjYWxlRmFjdG9y
KHZpZXcuZ2V0KCkpOwotICAgIGN1cnJlbnRQYWdlUG9zaXRpb24gPSBXS1ZpZXdHZXRDb250ZW50
UG9zaXRpb24odmlldy5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGN1cnJlbnRQYWdlU2NhbGUp
OwotICAgIEVYUEVDVF9FUSgwLCBjdXJyZW50UGFnZVBvc2l0aW9uLngpOwotICAgIEVYUEVDVF9F
USgwLCBjdXJyZW50UGFnZVBvc2l0aW9uLnkpOwotCi0gICAgLy8gR28gYmFjayBmaXJzdCBwYWdl
LgotICAgIHNjcm9sbCA9IGZhbHNlOwotICAgIGZpbmlzaGVkTG9hZCA9IGZhbHNlOwotICAgIFdL
UGFnZUdvQmFjayh3ZWJWaWV3LnBhZ2UoKSk7Ci0gICAgVXRpbDo6cnVuKCZmaW5pc2hlZExvYWQp
OwotICAgIFV0aWw6OnJ1bigmc2Nyb2xsKTsKLQotICAgIC8vIENoZWNrIGlmIHNjcm9sbCBwb3Np
dGlvbiBhbmQgc2NhbGUgb2YgZmlyc3QgcGFnZSBhcmUgcmVzdG9yZWQgY29ycmVjdGx5LgotICAg
IGN1cnJlbnRQYWdlU2NhbGUgPSBXS1ZpZXdHZXRDb250ZW50U2NhbGVGYWN0b3Iodmlldy5nZXQo
KSk7Ci0gICAgY3VycmVudFBhZ2VQb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQb3NpdGlvbih2
aWV3LmdldCgpKTsKLSAgICBFWFBFQ1RfRVEoZmlyc3RQYWdlU2NhbGUsIGN1cnJlbnRQYWdlU2Nh
bGUpOwotICAgIEVYUEVDVF9FUShmaXJzdFBhZ2VTY3JvbGxQb3NpdGlvbi54LCBjdXJyZW50UGFn
ZVBvc2l0aW9uLngpOwotICAgIEVYUEVDVF9FUShmaXJzdFBhZ2VTY3JvbGxQb3NpdGlvbi55LCBj
dXJyZW50UGFnZVBvc2l0aW9uLnkpOwotCi0gICAgLy8gR28gdG8gc2Vjb25kIHBhZ2UgYWdhaW4u
Ci0gICAgV0tQYWdlR29Gb3J3YXJkKHdlYlZpZXcucGFnZSgpKTsKLSAgICBzY3JvbGwgPSBmYWxz
ZTsKLSAgICBmaW5pc2hlZExvYWQgPSBmYWxzZTsKLSAgICBVdGlsOjpydW4oJmZpbmlzaGVkTG9h
ZCk7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBzY2FsZSBvZiBz
ZWNvbmQgcGFnZSBhcmUgcmVzdG9yZWQgY29ycmVjdGx5LgotICAgIGN1cnJlbnRQYWdlU2NhbGUg
PSBXS1ZpZXdHZXRDb250ZW50U2NhbGVGYWN0b3Iodmlldy5nZXQoKSk7Ci0gICAgY3VycmVudFBh
Z2VQb3NpdGlvbiA9IFdLVmlld0dldENvbnRlbnRQb3NpdGlvbih2aWV3LmdldCgpKTsKLSAgICBF
WFBFQ1RfRVEoMSwgY3VycmVudFBhZ2VTY2FsZSk7Ci0gICAgRVhQRUNUX0VRKDAsIGN1cnJlbnRQ
YWdlUG9zaXRpb24ueCk7Ci0gICAgRVhQRUNUX0VRKDAsIGN1cnJlbnRQYWdlUG9zaXRpb24ueSk7
Ci19Ci0KLX0gLy8gVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3VXNlclZpZXdwb3J0VG9D
b250ZW50cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTY0NjU0ODBjMmMuLjAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL1dLVmlld1VzZXJW
aWV3cG9ydFRvQ29udGVudHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAi
V2ViS2l0L1dLVmlldy5oIgotI2luY2x1ZGUgIldlYktpdC9XS1JldGFpblB0ci5oIgotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLVRFU1QoV2ViS2l0MiwgRElTQUJMRURfV0tWaWV3VXNl
clZpZXdwb3J0VG9Db250ZW50cykKLXsKLSAgICAvLyBUaGlzIHRlc3QgY3JlYXRlcyBhIFdLVmll
dyBhbmQgdXNlcyB0aGUgV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cwotICAgIC8vIGZ1bmN0
aW9uIHRvIGNvbnZlcnQgdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgKHBhZ2UpIGNv
b3JkaW5hdGVzLgotICAgIC8vIEl0IHNjcm9sbHMgYW5kIHNjYWxlcyBhcm91bmQgdGhlIGNvbnRl
bnRzIGFuZCBjaGVjayBpZiB0aGUgY29vcmRpbmF0ZXMKLSAgICAvLyBjb252ZXJzaW9uIG1hdGgg
aXMgcmlnaHQuCi0KLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRX
SywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWY+IGNvbmZpZ3VyYXRpb24oQWRvcHRXSywgV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgp
KTsKLSAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgp
LCBjb250ZXh0LmdldCgpKTsKLQotICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2ViVmlldyhB
ZG9wdFdLLCBXS1ZpZXdDcmVhdGUoY29uZmlndXJhdGlvbi5nZXQoKSkpOwotCi0gICAgV0tWaWV3
U2V0SXNBY3RpdmUod2ViVmlldy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQYWdlU2V0VXNlRml4ZWRM
YXlvdXQoV0tWaWV3R2V0UGFnZSh3ZWJWaWV3LmdldCgpKSwgZmFsc2UpOwotCi0gICAgV0tQb2lu
dCBvdXQ7Ci0KLSAgICAvLyBBdCBzY2FsZSAxLjAgdGhlIHZpZXdwb3J0IGFuZCBjb250ZW50cyBj
b29yZGluYXRlcyBzaG91bGQgbWF0Y2guCi0KLSAgICBXS1ZpZXdTZXRDb250ZW50U2NhbGVGYWN0
b3Iod2ViVmlldy5nZXQoKSwgMS4wKTsKLSAgICBXS1ZpZXdTZXRDb250ZW50UG9zaXRpb24od2Vi
Vmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMCwgMCkpOwotCi0gICAgb3V0ID0gV0tWaWV3VXNlclZp
ZXdwb3J0VG9Db250ZW50cyh3ZWJWaWV3LmdldCgpLCBXS1BvaW50TWFrZSgwLCAwKSk7Ci0gICAg
RVhQRUNUX0VRKG91dC54LCAwKTsKLSAgICBFWFBFQ1RfRVEob3V0LnksIDApOwotCi0gICAgb3V0
ID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3ZWJWaWV3LmdldCgpLCBXS1BvaW50TWFr
ZSgxMCwgMTApKTsKLSAgICBFWFBFQ1RfRVEob3V0LngsIDEwKTsKLSAgICBFWFBFQ1RfRVEob3V0
LnksIDEwKTsKLQotICAgIFdLVmlld1NldENvbnRlbnRQb3NpdGlvbih3ZWJWaWV3LmdldCgpLCBX
S1BvaW50TWFrZSgyMCwgMjApKTsKLQotICAgIG91dCA9IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29u
dGVudHMod2ViVmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMCwgMCkpOwotICAgIEVYUEVDVF9FUShv
dXQueCwgMjApOwotICAgIEVYUEVDVF9FUShvdXQueSwgMjApOwotCi0gICAgb3V0ID0gV0tWaWV3
VXNlclZpZXdwb3J0VG9Db250ZW50cyh3ZWJWaWV3LmdldCgpLCBXS1BvaW50TWFrZSgxMCwgMTAp
KTsKLSAgICBFWFBFQ1RfRVEob3V0LngsIDMwKTsKLSAgICBFWFBFQ1RfRVEob3V0LnksIDMwKTsK
LQotICAgIC8vIEF0IHNjYWxlIDIuMCB0aGUgdmlld3BvcnQgZGlzdGFuY2UgdmFsdWVzIHdpbGwg
YmUgaGFsZgotICAgIC8vIHRoZSBvbmVzIHNlZW0gaW4gdGhlIGNvbnRlbnRzLgotCi0gICAgV0tW
aWV3U2V0Q29udGVudFNjYWxlRmFjdG9yKHdlYlZpZXcuZ2V0KCksIDIuMCk7Ci0gICAgV0tWaWV3
U2V0Q29udGVudFBvc2l0aW9uKHdlYlZpZXcuZ2V0KCksIFdLUG9pbnRNYWtlKDAsIDApKTsKLQot
ICAgIG91dCA9IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVudHMod2ViVmlldy5nZXQoKSwgV0tQ
b2ludE1ha2UoMCwgMCkpOwotICAgIEVYUEVDVF9FUShvdXQueCwgMCk7Ci0gICAgRVhQRUNUX0VR
KG91dC55LCAwKTsKLQotICAgIG91dCA9IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVudHMod2Vi
Vmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMTAsIDEwKSk7Ci0gICAgRVhQRUNUX0VRKG91dC54LCA1
KTsKLSAgICBFWFBFQ1RfRVEob3V0LnksIDUpOwotCi0gICAgV0tWaWV3U2V0Q29udGVudFBvc2l0
aW9uKHdlYlZpZXcuZ2V0KCksIFdLUG9pbnRNYWtlKDIwLCAyMCkpOwotCi0gICAgb3V0ID0gV0tW
aWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3ZWJWaWV3LmdldCgpLCBXS1BvaW50TWFrZSgwLCAw
KSk7Ci0gICAgRVhQRUNUX0VRKG91dC54LCAyMCk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCAyMCk7
Ci0KLSAgICBvdXQgPSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKHdlYlZpZXcuZ2V0KCks
IFdLUG9pbnRNYWtlKDEwLCAxMCkpOwotICAgIEVYUEVDVF9FUShvdXQueCwgMjUpOwotICAgIEVY
UEVDVF9FUShvdXQueSwgMjUpOwotCi0gICAgLy8gQXQgc2NhbGUgMC41IHRoZSB2aWV3cG9ydCBk
aXN0YW5jZSB2YWx1ZXMgd2lsbCBiZSB0d2ljZQotICAgIC8vIHRoZSBvbmVzIHNlZW0gaW4gdGhl
IGNvbnRlbnRzLgotCi0gICAgV0tWaWV3U2V0Q29udGVudFNjYWxlRmFjdG9yKHdlYlZpZXcuZ2V0
KCksIDAuNSk7Ci0gICAgV0tWaWV3U2V0Q29udGVudFBvc2l0aW9uKHdlYlZpZXcuZ2V0KCksIFdL
UG9pbnRNYWtlKDAsIDApKTsKLQotICAgIG91dCA9IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVu
dHMod2ViVmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMCwgMCkpOwotICAgIEVYUEVDVF9FUShvdXQu
eCwgMCk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCAwKTsKLQotICAgIG91dCA9IFdLVmlld1VzZXJW
aWV3cG9ydFRvQ29udGVudHMod2ViVmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMTAsIDEwKSk7Ci0g
ICAgRVhQRUNUX0VRKG91dC54LCAyMCk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCAyMCk7Ci0KLSAg
ICBXS1ZpZXdTZXRDb250ZW50UG9zaXRpb24od2ViVmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMjAs
IDIwKSk7Ci0KLSAgICBvdXQgPSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKHdlYlZpZXcu
Z2V0KCksIFdLUG9pbnRNYWtlKDAsIDApKTsKLSAgICBFWFBFQ1RfRVEob3V0LngsIDIwKTsKLSAg
ICBFWFBFQ1RfRVEob3V0LnksIDIwKTsKLQotICAgIG91dCA9IFdLVmlld1VzZXJWaWV3cG9ydFRv
Q29udGVudHMod2ViVmlldy5nZXQoKSwgV0tQb2ludE1ha2UoMTAsIDEwKSk7Ci0gICAgRVhQRUNU
X0VRKG91dC54LCA0MCk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCA0MCk7Ci0KLSAgICAvLyBMZXQn
cyBhZGQgdHJhbnNsYXRpb24gdG8gdGhlIHZpZXdwb3J0LgotCi0gICAgY29uc3QgaW50IGRlbHRh
ID0gMTA7Ci0gICAgV0tWaWV3U2V0VXNlclZpZXdwb3J0VHJhbnNsYXRpb24od2ViVmlldy5nZXQo
KSwgZGVsdGEsIGRlbHRhKTsKLQotICAgIFdLVmlld1NldENvbnRlbnRQb3NpdGlvbih3ZWJWaWV3
LmdldCgpLCBXS1BvaW50TWFrZSgwLCAwKSk7Ci0KLSAgICBvdXQgPSBXS1ZpZXdVc2VyVmlld3Bv
cnRUb0NvbnRlbnRzKHdlYlZpZXcuZ2V0KCksIFdLUG9pbnRNYWtlKDAsIDApKTsKLSAgICBFWFBF
Q1RfRVEob3V0LngsIDAgLSBkZWx0YSAvIDAuNSk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCAwIC0g
ZGVsdGEgLyAwLjUpOwotCi0gICAgb3V0ID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3
ZWJWaWV3LmdldCgpLCBXS1BvaW50TWFrZSgxMCwgMTApKTsKLSAgICBFWFBFQ1RfRVEob3V0Lngs
IDIwIC0gZGVsdGEgLyAwLjUpOwotICAgIEVYUEVDVF9FUShvdXQueSwgMjAgLSBkZWx0YSAvIDAu
NSk7Ci0KLSAgICBXS1ZpZXdTZXRDb250ZW50UG9zaXRpb24od2ViVmlldy5nZXQoKSwgV0tQb2lu
dE1ha2UoMjAsIDIwKSk7Ci0KLSAgICBvdXQgPSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRz
KHdlYlZpZXcuZ2V0KCksIFdLUG9pbnRNYWtlKDAsIDApKTsKLSAgICBFWFBFQ1RfRVEob3V0Lngs
IDIwIC0gZGVsdGEgLyAwLjUpOwotICAgIEVYUEVDVF9FUShvdXQueSwgMjAgLSBkZWx0YSAvIDAu
NSk7Ci0KLSAgICBvdXQgPSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKHdlYlZpZXcuZ2V0
KCksIFdLUG9pbnRNYWtlKDEwLCAxMCkpOwotICAgIEVYUEVDVF9FUShvdXQueCwgNDAgLSBkZWx0
YSAvIDAuNSk7Ci0gICAgRVhQRUNUX0VRKG91dC55LCA0MCAtIGRlbHRhIC8gMC41KTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvYmFja2ZvcndhcmQxLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvQ29vcmRpbmF0ZWRHcmFwaGljcy9iYWNrZm9yd2FyZDEuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOThjMWMxMDdjZjYuLjAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL2JhY2tmb3J3
YXJkMS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08aHRtbD4KLTxib2R5IHN0
eWxlPSJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJSI+Ci0gICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiA5MDBweDsgaGVpZ2h0OiAxMjAwcHg7
Ij48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9Db29yZGluYXRlZEdyYXBoaWNzL2JhY2tmb3J3YXJkMi5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb3JkaW5hdGVkR3JhcGhpY3MvYmFj
a2ZvcndhcmQyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MDZiOWQzMmVj
Li4wMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ29v
cmRpbmF0ZWRHcmFwaGljcy9iYWNrZm9yd2FyZDIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLTxib2R5IHN0eWxlPSJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJSIvPgo=
</data>
<flag name="review"
          id="334490"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>