<?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>199350</bug_id>
          
          <creation_ts>2019-06-30 20:17:12 -0700</creation_ts>
          <short_desc>macOS: &lt;datalist&gt; dropdown shadow is cropped, looks nothing like NSComboBox</short_desc>
          <delta_ts>2019-09-23 15:43:18 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>javan</cc>
    
    <cc>mjs</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1549127</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-06-30 20:17:12 -0700</bug_when>
    <thetext>macOS: &lt;datalist&gt; dropdown shadow is cropped, looks nothing like NSComboBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549128</commentid>
    <comment_count>1</comment_count>
      <attachid>373204</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-06-30 20:18:26 -0700</bug_when>
    <thetext>Created attachment 373204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549129</commentid>
    <comment_count>2</comment_count>
      <attachid>373205</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-06-30 20:20:12 -0700</bug_when>
    <thetext>Created attachment 373205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554125</commentid>
    <comment_count>3</comment_count>
      <attachid>373205</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2019-07-18 21:58:11 -0700</bug_when>
    <thetext>Comment on attachment 373205
Patch

How testable is datalist? Is there a way to make a test case for these improvements? (Everything mentioned in the ChangeLog sounds great though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554141</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-07-18 23:44:08 -0700</bug_when>
    <thetext>(In reply to Maciej Stachowiak from comment #3)
&gt; Comment on attachment 373205 [details]
&gt; Patch
&gt; 
&gt; How testable is datalist? Is there a way to make a test case for these
&gt; improvements? (Everything mentioned in the ChangeLog sounds great though.)

I believe (will have to check) that there is some testing support for basic datalist functionality, but I don’t have a great plan for the testing of the UI layout of the dropdown (which is native UI, in a separate window, in the UI process).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554142</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-07-18 23:45:25 -0700</bug_when>
    <thetext>maybe we should give WKTR a mode where it dumps the geometry of subwindows (that would help with TextIndicator testing too). The UI inside the pop up, though... I dunno.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560253</commentid>
    <comment_count>6</comment_count>
      <attachid>373205</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2019-08-10 14:30:13 -0700</bug_when>
    <thetext>Comment on attachment 373205
Patch

Given the difficulty of testing and the values of the improvement it&apos;s fine to land without a test. I read every line and did not see any problems, but I&apos;m not very familiar with the details of AppKit stuff used here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560254</commentid>
    <comment_count>7</comment_count>
      <attachid>373205</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2019-08-10 14:31:10 -0700</bug_when>
    <thetext>Comment on attachment 373205
Patch

I&apos;m just going to r+ this and leave it to the patch author&apos;s judgment whether further review is merited,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569047</commentid>
    <comment_count>8</comment_count>
      <attachid>378344</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-08 19:05:37 -0700</bug_when>
    <thetext>Created attachment 378344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569048</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-09-08 19:05:55 -0700</bug_when>
    <thetext>rebased on master. also mjs did not actually hit the r+ button, if someone else wants to :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573445</commentid>
    <comment_count>10</comment_count>
      <attachid>378344</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-23 15:42:28 -0700</bug_when>
    <thetext>Comment on attachment 378344
Patch

Clearing flags on attachment: 378344

Committed r250260: &lt;https://trac.webkit.org/changeset/250260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573446</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-23 15:42:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573447</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-23 15:43:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55640428&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373204</attachid>
            <date>2019-06-30 20:18:26 -0700</date>
            <delta_ts>2019-06-30 20:20:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199350-20190630201825.patch</filename>
            <type>text/plain</type>
            <size>22751</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA2ZDcxMjA0NjZkN2UzOTdj
ZWYzZGU4ZTFlYzE5OTRlOTUyNzE5YTUuLmQ2OGEwOGE4OTUxYjFkYmI2NGFhNjk4NWE4NmJiZWFl
YWMwZDFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDYtMzAgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgbWFjT1M6IDxkYXRhbGlz
dD4gZHJvcGRvd24gc2hhZG93IGlzIGNyb3BwZWQsIGxvb2tzIG5vdGhpbmcgbGlrZSBOU0NvbWJv
Qm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkz
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBy
b3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBtYWNPUyA8ZGF0YWxpc3Q+IGRyb3Bkb3duLCBhZG9w
dGluZyB0aGUKKyAgICAgICAgcm91bmRseS1jb3JuZXJlZCBhbmQgYmFja2Ryb3AtZnVsIGFwcGVh
cmFuY2Ugb2YgdGhlIGN1cnJlbnQgTlNDb21ib0JveCBzdHlsZS4KKworICAgICAgICBVc2UgdGhl
IHByb3BlciB3aW5kb3cgc2hhZG93IGluc3RlYWQgb2Ygb3VyIG93biBpbnNpZGUgdGhlIHdpbmRv
dywgYm90aAorICAgICAgICBzbyB0aGF0IHdlIG1hdGNoIHRoZSBzeXN0ZW0gYW5kIHNvIHRoYXQg
aXQgZG9lc24ndCBnZXQgY2xpcHBlZC4KKworICAgICAgICBBbGxvdyB2ZXJ0aWNhbCBydWJiZXIt
YmFuZGluZywgYmVjYXVzZSBOU0NvbWJvQm94IGRvZXMuCisKKyAgICAgICAgRG9uJ3QgaGlnaGxp
Z2h0IG9uIGhvdmVyLCBiZWNhdXNlIE5TQ29tYm9Cb3ggZG9lc24ndC4gRG8gdXNlIE5TVGFibGVW
aWV3J3MKKyAgICAgICAgc2VsZWN0aW9uIG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHJvbGxpbmcgb3Vy
IG93biBmb3IgaGlnaGxpZ2h0cyBkcml2ZW4gYnkKKyAgICAgICAga2V5Ym9hcmQtYmFzZWQgbmF2
aWdhdGlvbi4KKworICAgICAgICBNYWtlIHVzZSBvZiBOU1RhYmxlQ2VsbFZpZXcsIHNpbmNlIGl0
IGhhcyBzb21lIHNtYXJ0cyBhcm91bmQgcGl4ZWwgYWxpZ25tZW50CisgICAgICAgIHRoYXQgd2Ug
ZG9uJ3QgbmVlZCB0byBkdXBsaWNhdGUgKGFuZCB0aGluZ3MgYXJlIGJsdXJyeSBvbiAxeCBkaXNw
bGF5cyB3aXRob3V0KS4KKworICAgICAgICBBbHNvIHJlbmFtZSBzb21lIGNsYXNzZXMgdG8gbWFr
ZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQncyBnb2luZyBvbjoKKyAgICAgICAgV0tEYXRhTGlz
dFN1Z2dlc3Rpb25DZWxsIC0+IFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyAoaXQncyBhIE5TVmll
dywgbm90IGFuIE5TQ2VsbCkKKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyAtPiBX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIChpdCdzIG5vdCBhIHZpZXcgYXQgYWxsKQor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL21hYy9BcHBLaXRTUEkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHls
ZU1hc2s6YmFja2luZzpkZWZlcjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25X
aW5kb3cgY2FuQmVjb21lS2V5V2luZG93XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0
aW9uV2luZG93IGhhc0tleUFwcGVhcmFuY2VdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25XaW5kb3cgc2hhZG93T3B0aW9uc10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldFRleHQ6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBz
ZXRCYWNrZ3JvdW5kU3R5bGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFi
bGVSb3dWaWV3IGRyYXdTZWxlY3Rpb25JblJlY3Q6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uVGFibGVWaWV3IGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6CisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGxheW91dF0pOgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvblRhYmxlVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBjdXJyZW50U2VsZWN0ZWRTdHJp
bmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB1cGRhdGVX
aXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNDb250cm9sbGVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDpdKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBzaG93U3VnZ2VzdGlvbnNE
cm9wZG93bjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0
YWJsZVZpZXc6cm93Vmlld0ZvclJvdzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGluaXRXaXRoRnJhbWU6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBzZXRUZXh0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgc2V0QWN0aXZlOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgZHJhd1JlY3Q6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUVudGVyZWQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUV4
aXRlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGFj
Y2VwdHNGaXJzdFJlc3BvbmRlcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvblRhYmxlIGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgc2V0VmlzaWJsZVJlY3Q6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgY3VycmVudEFjdGl2ZVJvd10pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIHNldEFjdGl2ZVJv
dzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSByZWxv
YWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSBhY2Nl
cHRzRmlyc3RSZXNwb25kZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25UYWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgcmVtb3ZlRnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5n
RGlzcGxheV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNWaWV3IGN1cnJlbnRTZWxlY3RlZFN0cmluZ10pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHVwZGF0ZVdpdGhJbmZvcm1hdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBtb3Zl
U2VsZWN0aW9uQnlEaXJlY3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1ZpZXcgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNWaWV3IGRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHNob3dTdWdnZXN0aW9uc0Ry
b3Bkb3duOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IHNlbGVjdGVkUm93Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNWaWV3IG51bWJlck9mUm93c0luVGFibGVWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHRhYmxlVmlldzpoZWlnaHRPZlJvdzpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyB0YWJsZVZpZXc6dmlld0Zv
clRhYmxlQ29sdW1uOnJvdzpdKTogRGVsZXRlZC4KKwogMjAxOS0wNi0yNyAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBXUEUgYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FwcEtpdFNQ
SS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FwcEtpdFNQSS5oCmluZGV4IGYz
MDVkNTE1NDEyMDAwNDNhNmQ3ZGUyNTkyZWYyMDQxYjk0ZjA0OTkuLjQzNGIxMTBmMGMzYzY2NGZl
ZmQ0YzRjNTQ2ODM2YzQ1MzY4MjNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL21hYy9BcHBLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9t
YWMvQXBwS2l0U1BJLmgKQEAgLTQyLDE3ICs0MiwyMiBAQAogQHByb3RvY29sIE5TVGV4dElucHV0
Q2xpZW50X0FzeW5jCiBAZW5kCiAKLUBpbnRlcmZhY2UgTlNXaW5kb3cgKE5TSW5zcGVjdG9yQmFy
U3VwcG9ydCkKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBOU1dpbmRvd1NoYWRvd09w
dGlvbnMpIHsKKyAgICBOU1dpbmRvd1NoYWRvd1NlY29uZGFyeVdpbmRvdyA9IDB4MiwKK307CisK
K0BpbnRlcmZhY2UgTlNXaW5kb3cgKCkKIC0gKE5TSW5zcGVjdG9yQmFyICopaW5zcGVjdG9yQmFy
OwogLSAodm9pZClzZXRJbnNwZWN0b3JCYXI6KE5TSW5zcGVjdG9yQmFyICopYmFyOwotQGVuZAor
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1dpbmRvd1NoYWRvd09wdGlvbnMgc2hhZG93T3B0aW9u
czsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0MDAKLUBpbnRl
cmZhY2UgTlNXaW5kb3cgKEZ1bGxTY3JlZW5TdXBwb3J0KQogQHByb3BlcnR5IENHRmxvYXQgdGl0
bGViYXJBbHBoYVZhbHVlOwotQGVuZAogI2VuZGlmCiAKK0BlbmQKKwogI2VuZGlmCiAKIEBpbnRl
cmZhY2UgTlNJbnNwZWN0b3JCYXIgKElQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
CmluZGV4IDFjMjczZTNjZTE3Y2Q2NzAzYzI1NWFiN2UyMTY5ODk0NDMxYjU3YjAuLjU1MzQ3Mzg5
MjEzYzYyZDYyMWQ4MDQ3MzliMzRlOGZiOTNlNTRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5tbQpAQCAtMjgsNTEgKzI4LDMwIEBACiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkgJiYgVVNFKEFQUEtJVCkKIAorI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0NvbG9yU1BJLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3du
VG9wTWFyZ2luID0gMjsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duVG9wTWFyZ2luID0g
MzsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duVmVydGljYWxQYWRkaW5nID0gNDsKIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duUm93SGVpZ2h0ID0gMjA7Ci1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCBkcm9wZG93blNoYWRvd0hlaWdodCA9IDU7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCBk
cm9wZG93blNoYWRvd0JsdXJSYWRpdXMgPSAzOwogc3RhdGljIGNvbnN0IHNpemVfdCBkcm9wZG93
bk1heFN1Z2dlc3Rpb25zID0gNjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25D
ZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwiOworc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qgc3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0
YUxpc3RTdWdnZXN0aW9uVmlldyI7CiAKIEBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25X
aW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCi1AaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9u
Q2VsbCA6IE5TVmlldyB7Ci0gICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOwot
ICAgIEJPT0wgX21vdXNlSXNPdmVyOwotICAgIEJPT0wgX2FjdGl2ZTsKLX0KLQotQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBhY3RpdmU7Ci0KLS0gKHZvaWQpc2V0VGV4dDooTlNT
dHJpbmcgKil0ZXh0OworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgOiBOU1Rh
YmxlQ2VsbFZpZXcKIEBlbmQKIAotQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxl
IDogTlNUYWJsZVZpZXcgewotICAgIFJldGFpblB0cjxOU1Njcm9sbFZpZXc+IF9lbmNsb3NpbmdT
Y3JvbGxWaWV3OwotICAgIE9wdGlvbmFsPHNpemVfdD4gX2FjdGl2ZVJvdzsKLX0KK0BpbnRlcmZh
Y2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVJvd1ZpZXcgOiBOU1RhYmxlUm93VmlldworQGVu
ZAogCi0tIChpZClpbml0V2l0aEVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jily
ZWN0OwotLSAodm9pZClzZXRWaXNpYmxlUmVjdDooTlNSZWN0KXJlY3Q7Ci0tICh2b2lkKXNldEFj
dGl2ZVJvdzooc2l6ZV90KXJvdzsKLS0gKE9wdGlvbmFsPHNpemVfdD4pY3VycmVudEFjdGl2ZVJv
dzsKLS0gKHZvaWQpcmVsb2FkOworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxl
VmlldyA6IE5TVGFibGVWaWV3CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zVmlldyA6IE5TT2JqZWN0PE5TVGFibGVWaWV3RGF0YVNvdXJjZSwgTlNUYWJsZVZpZXdEZWxl
Z2F0ZT4gewotQHByaXZhdGUKLSAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJs
ZT4gX3RhYmxlOwotICAgIFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFj
KiBfZHJvcGRvd247Ci0gICAgVmVjdG9yPFN0cmluZz4gX3N1Z2dlc3Rpb25zOwotICAgIE5TVmll
dyAqX3ZpZXc7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiBfZW5jbG9zaW5nV2luZG93OwotfQor
QGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIDogTlNPYmplY3Q8TlNU
YWJsZVZpZXdEYXRhU291cmNlLCBOU1RhYmxlVmlld0RlbGVnYXRlPgogCiAtIChpZClpbml0V2l0
aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWlu
Zm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopdmlldzsKIC0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25z
RHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjKilkcm9w
ZG93bjsKQEAgLTgxLDYgKzYwLDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc3VnZ2VzdGlv
bkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0YUxpc3RTdWdnZXN0aW9uQ2UKIC0gKHZvaWQp
aW52YWxpZGF0ZTsKIAogLSAoU3RyaW5nKWN1cnJlbnRTZWxlY3RlZFN0cmluZzsKKwogQGVuZAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNSw3ICs4NSw3IEBAIHZvaWQgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Ryb3Bkb3duVUkgPSBhZG9w
dE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBhbGxvY10gaW5pdFdpdGhJbmZvcm1hdGlv
bjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV92aWV3XSk7CisgICAgbV9kcm9wZG93blVJ
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3Om1fdmlld10pOwogICAg
IFttX2Ryb3Bkb3duVUkgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246dGhpc107CiB9CiAKQEAgLTE0
Nyw3OCArMTI3LDc4IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpj
bG9zZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1AaW1wbGVtZW50YXRpb24gV0tEYXRh
TGlzdFN1Z2dlc3Rpb25XaW5kb3cKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RT
dWdnZXN0aW9uQ2VsbAotCi1Ac3ludGhlc2l6ZSBhY3RpdmU9X2FjdGl2ZTsKK0BpbXBsZW1lbnRh
dGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdyB7CisgICAgUmV0YWluUHRyPE5TVmlzdWFs
RWZmZWN0Vmlldz4gX2JhY2tkcm9wVmlldzsKK30KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lUmVjdAorLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRS
ZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilzdHlsZU1hc2sgYmFja2luZzooTlNCYWNraW5nU3Rv
cmVUeXBlKWJhY2tpbmdTdG9yZVR5cGUgZGVmZXI6KEJPT0wpZGVmZXIKIHsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSkpCi0gICAgICAgIHJldHVybiBz
ZWxmOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBz
dHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tpbmc6YmFja2luZ1N0b3JlVHlwZSBkZWZlcjpkZWZlcl07
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRGaWVsZCA9
IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0pOwotICAgIFtfdGV4dEZpZWxkIHNl
dEVkaXRhYmxlOk5PXTsKLSAgICBbX3RleHRGaWVsZCBzZXRCZXplbGVkOk5PXTsKLSAgICBbX3Rl
eHRGaWVsZCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtz
ZWxmIGFkZFN1YnZpZXc6X3RleHRGaWVsZC5nZXQoKV07CisgICAgc2VsZi5oYXNTaGFkb3cgPSBZ
RVM7CiAKLSAgICBbc2VsZiBzZXRJZGVudGlmaWVyOkAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxs
Il07CisgICAgX2JhY2tkcm9wVmlldyA9IFtbTlNWaXN1YWxFZmZlY3RWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvbnRlbnRSZWN0XTsKKyAgICBbX2JhY2tkcm9wVmlldyBzZXRBdXRvcmVzaXpp
bmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOworICAgIFtf
YmFja2Ryb3BWaWV3IHNldE1hdGVyaWFsOk5TVmlzdWFsRWZmZWN0TWF0ZXJpYWxNZW51XTsKKyAg
ICBbX2JhY2tkcm9wVmlldyBzZXRTdGF0ZTpOU1Zpc3VhbEVmZmVjdFN0YXRlQWN0aXZlXTsKKyAg
ICBbX2JhY2tkcm9wVmlldyBzZXRCbGVuZGluZ01vZGU6TlNWaXN1YWxFZmZlY3RCbGVuZGluZ01v
ZGVCZWhpbmRXaW5kb3ddOwogCi0gICAgW3NlbGYgYWRkVHJhY2tpbmdSZWN0OnNlbGYuYm91bmRz
IG93bmVyOnNlbGYgdXNlckRhdGE6bmlsIGFzc3VtZUluc2lkZTpOT107CisgICAgW3NlbGYgc2V0
Q29udGVudFZpZXc6X2JhY2tkcm9wVmlldy5nZXQoKV07CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
IAotLSAodm9pZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKKy0gKEJPT0wpY2FuQmVjb21lS2V5
V2luZG93CiB7Ci0gICAgW190ZXh0RmllbGQgc2V0U3RyaW5nVmFsdWU6dGV4dF07Ci0gICAgW190
ZXh0RmllbGQgc2l6ZVRvRml0XTsKLQotICAgIE5TUmVjdCB0ZXh0RmllbGRGcmFtZSA9IFtfdGV4
dEZpZWxkIGZyYW1lXTsKLSAgICBbX3RleHRGaWVsZCBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIChO
U0hlaWdodChzZWxmLmZyYW1lKSAtIE5TSGVpZ2h0KHRleHRGaWVsZEZyYW1lKSkgLyAyLCBOU1dp
ZHRoKHRleHRGaWVsZEZyYW1lKSwgTlNIZWlnaHQodGV4dEZpZWxkRnJhbWUpKV07CisgICAgcmV0
dXJuIE5POworfQogCi0gICAgX21vdXNlSXNPdmVyID0gTk87Ci0gICAgc2VsZi5hY3RpdmUgPSBO
TzsKKy0gKEJPT0wpaGFzS2V5QXBwZWFyYW5jZQoreworICAgIHJldHVybiBZRVM7CiB9CiAKLS0g
KHZvaWQpc2V0QWN0aXZlOihCT09MKXNob3VsZEFjdGl2YXRlCistIChOU1dpbmRvd1NoYWRvd09w
dGlvbnMpc2hhZG93T3B0aW9ucwogewotICAgIF9hY3RpdmUgPSBzaG91bGRBY3RpdmF0ZTsKLSAg
ICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICByZXR1cm4gTlNXaW5kb3dTaGFkb3dT
ZWNvbmRhcnlXaW5kb3c7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RT
dWdnZXN0aW9uVmlldyB7CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOwog
fQogCi0tICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpZGlydHlSZWN0CistIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWVSZWN0CiB7Ci0gICAgaWYgKHNlbGYuYWN0aXZlKSB7Ci0gICAgICAg
IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0gc2V0RmlsbF07Ci0gICAg
ICAgIFtfdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENv
bnRyb2xUZXh0Q29sb3JdXTsKLSAgICB9IGVsc2UgaWYgKF9tb3VzZUlzT3ZlcikgewotICAgICAg
ICBbW05TQ29sb3IgcXVhdGVybmFyeUxhYmVsQ29sb3JdIHNldEZpbGxdOwotICAgICAgICBbX3Rl
eHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4dENvbG9yXV07Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgW1tOU0NvbG9yIGNvbnRyb2xCYWNrZ3JvdW5kQ29sb3JdIHNldEZpbGxdOwotICAg
ICAgICBbX3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4dENvbG9yXV07Ci0gICAg
fQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKSkKKyAg
ICAgICAgcmV0dXJuIHNlbGY7CiAKLSAgICBOU1JlY3RGaWxsKGRpcnR5UmVjdCk7Ci0gICAgW3N1
cGVyIGRyYXdSZWN0OmRpcnR5UmVjdF07CisgICAgX3RleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1Rl
eHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKTsKKyAgICBzZWxmLnRleHRG
aWVsZCA9IF90ZXh0RmllbGQuZ2V0KCk7CisKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OnNlbGYudGV4
dEZpZWxkXTsKKworICAgIHNlbGYuaWRlbnRpZmllciA9IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVu
dGlmaWVyOworICAgIHNlbGYudGV4dEZpZWxkLmVkaXRhYmxlID0gTk87CisgICAgc2VsZi50ZXh0
RmllbGQuYmV6ZWxlZCA9IE5POworICAgIHNlbGYudGV4dEZpZWxkLmZvbnQgPSBbTlNGb250IG1l
bnVGb250T2ZTaXplOjBdOworICAgIHNlbGYudGV4dEZpZWxkLmRyYXdzQmFja2dyb3VuZCA9IE5P
OworCisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50
ICopZXZlbnQKKy0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgW3N1cGVy
IG1vdXNlRW50ZXJlZDpldmVudF07Ci0gICAgX21vdXNlSXNPdmVyID0gWUVTOwotICAgIFtzZWxm
IHNldE5lZWRzRGlzcGxheTpZRVNdOworICAgIHNlbGYudGV4dEZpZWxkLnN0cmluZ1ZhbHVlID0g
dGV4dDsKIH0KIAotLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAqKWV2ZW50CistICh2b2lk
KXNldEJhY2tncm91bmRTdHlsZTooTlNCYWNrZ3JvdW5kU3R5bGUpYmFja2dyb3VuZFN0eWxlCiB7
Ci0gICAgW3N1cGVyIG1vdXNlRXhpdGVkOmV2ZW50XTsKLSAgICBfbW91c2VJc092ZXIgPSBOTzsK
LSAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICBbc3VwZXIgc2V0QmFja2dyb3Vu
ZFN0eWxlOmJhY2tncm91bmRTdHlsZV07CisgICAgc2VsZi50ZXh0RmllbGQudGV4dENvbG9yID0g
YmFja2dyb3VuZFN0eWxlID09IE5TQmFja2dyb3VuZFN0eWxlTGlnaHQgPyBbTlNDb2xvciB0ZXh0
Q29sb3JdIDogW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXTsKIH0K
IAogLSAoQk9PTClhY2NlcHRzRmlyc3RSZXNwb25kZXIKQEAgLTIyOCwxNiArMjA4LDI4IEBAIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgpCiAKIEBlbmQKIAot
QGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUKK0BpbXBsZW1lbnRhdGlv
biBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldworCistICh2b2lkKWRyYXdTZWxlY3Rp
b25JblJlY3Q6KE5TUmVjdClkaXJ0eVJlY3QKK3sKKyAgICBbc2VsZiBzZXRFbXBoYXNpemVkOllF
U107CisgICAgW3N1cGVyIGRyYXdTZWxlY3Rpb25JblJlY3Q6ZGlydHlSZWN0XTsKK30KKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgeworICAg
IFJldGFpblB0cjxOU1Njcm9sbFZpZXc+IF9lbmNsb3NpbmdTY3JvbGxWaWV3OworfQogCiAtIChp
ZClpbml0V2l0aEVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JilyZWN0CiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgcmVj
dC53aWR0aCgpLCAwKV0pKQogICAgICAgICByZXR1cm4gc2VsZjsKIAotICAgIFtzZWxmIHNldElu
dGVyY2VsbFNwYWNpbmc6TlNaZXJvU2l6ZV07CiAgICAgW3NlbGYgc2V0SGVhZGVyVmlldzpuaWxd
OwotICAgIFtzZWxmIHNldFNlbGVjdGlvbkhpZ2hsaWdodFN0eWxlOk5TVGFibGVWaWV3U2VsZWN0
aW9uSGlnaGxpZ2h0U3R5bGVOb25lXTsKKyAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05T
Q29sb3IgY2xlYXJDb2xvcl1dOworICAgIFtzZWxmIHNldEludGVyY2VsbFNwYWNpbmc6TlNNYWtl
U2l6ZSgwLCBzZWxmLmludGVyY2VsbFNwYWNpbmcuaGVpZ2h0KV07CiAKICAgICBhdXRvIGNvbHVt
biA9IGFkb3B0TlMoW1tOU1RhYmxlQ29sdW1uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbHVtbiBz
ZXRXaWR0aDpyZWN0LndpZHRoKCldOwpAQCAtMjQ1LDQ4ICsyMzcsMjQgQEAgdm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKIAogICAgIF9lbmNsb3NpbmdTY3Jv
bGxWaWV3ID0gYWRvcHROUyhbW05TU2Nyb2xsVmlldyBhbGxvY10gaW5pdF0pOwogICAgIFtfZW5j
bG9zaW5nU2Nyb2xsVmlldyBzZXRIYXNWZXJ0aWNhbFNjcm9sbGVyOllFU107Ci0gICAgW19lbmNs
b3NpbmdTY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0
aWNpdHlOb25lXTsKKyAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxF
bGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWRdOwogICAgIFtfZW5jbG9zaW5nU2Ny
b2xsVmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlO
b25lXTsKICAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0RG9jdW1lbnRWaWV3OnNlbGZdOwot
Ci0gICAgYXV0byBkcm9wU2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7
Ci0gICAgW2Ryb3BTaGFkb3cgc2V0U2hhZG93Q29sb3I6W05TQ29sb3Igc3lzdGVtR3JheUNvbG9y
XV07Ci0gICAgW2Ryb3BTaGFkb3cgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoMCwgZHJvcGRv
d25TaGFkb3dIZWlnaHQpXTsKLSAgICBbZHJvcFNoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOmRy
b3Bkb3duU2hhZG93Qmx1clJhZGl1c107Ci0gICAgW19lbmNsb3NpbmdTY3JvbGxWaWV3IHNldFdh
bnRzTGF5ZXI6WUVTXTsKLSAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0U2hhZG93OmRyb3BT
aGFkb3cuZ2V0KCldOworICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91
bmQ6Tk9dOworICAgIFtbX2VuY2xvc2luZ1Njcm9sbFZpZXcgY29udGVudFZpZXddIHNldEF1dG9t
YXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0czpOT107CisgICAgW1tfZW5jbG9zaW5nU2Nyb2xs
VmlldyBjb250ZW50Vmlld10gc2V0Q29udGVudEluc2V0czpOU0VkZ2VJbnNldHNNYWtlKGRyb3Bk
b3duVmVydGljYWxQYWRkaW5nLCAwLCBkcm9wZG93blZlcnRpY2FsUGFkZGluZywgMCldOworICAg
IFtbX2VuY2xvc2luZ1Njcm9sbFZpZXcgY29udGVudFZpZXddIHNjcm9sbFRvUG9pbnQ6TlNNYWtl
UG9pbnQoMCwgLWRyb3Bkb3duVmVydGljYWxQYWRkaW5nKV07CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAodm9pZClzZXRWaXNpYmxlUmVjdDooTlNSZWN0KXJlY3QKLXsKLSAgICBbc2VsZiBz
ZXRGcmFtZTpOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgocmVjdCkgLSBkcm9wZG93blNoYWRvd0hl
aWdodCAqIDIsIDApXTsKLSAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0RnJhbWU6TlNNYWtl
UmVjdChkcm9wZG93blNoYWRvd0hlaWdodCwgZHJvcGRvd25TaGFkb3dIZWlnaHQsIE5TV2lkdGgo
cmVjdCkgLSBkcm9wZG93blNoYWRvd0hlaWdodCAqIDIsIE5TSGVpZ2h0KHJlY3QpIC0gZHJvcGRv
d25TaGFkb3dIZWlnaHQpXTsKLX0KLQotLSAoT3B0aW9uYWw8c2l6ZV90PiljdXJyZW50QWN0aXZl
Um93Ci17Ci0gICAgcmV0dXJuIF9hY3RpdmVSb3c7Ci19Ci0KLS0gKHZvaWQpc2V0QWN0aXZlUm93
OihzaXplX3Qpcm93CistICh2b2lkKWxheW91dAogewotICAgIGlmIChfYWN0aXZlUm93KSB7Ci0g
ICAgICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCAqb2xkQ2VsbCA9IChXS0RhdGFMaXN0U3Vn
Z2VzdGlvbkNlbGwgKilbc2VsZiB2aWV3QXRDb2x1bW46MCByb3c6X2FjdGl2ZVJvdy52YWx1ZSgp
IG1ha2VJZk5lY2Vzc2FyeTpOT107Ci0gICAgICAgIG9sZENlbGwuYWN0aXZlID0gTk87Ci0gICAg
fQotCi0gICAgW3NlbGYgc2Nyb2xsUm93VG9WaXNpYmxlOnJvd107Ci0gICAgV0tEYXRhTGlzdFN1
Z2dlc3Rpb25DZWxsICpuZXdDZWxsID0gKFdLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCAqKVtzZWxm
IHZpZXdBdENvbHVtbjowIHJvdzpyb3cgbWFrZUlmTmVjZXNzYXJ5Ok5PXTsKLSAgICBuZXdDZWxs
LmFjdGl2ZSA9IFlFUzsKLQotICAgIF9hY3RpdmVSb3cgPSByb3c7CisgICAgW19lbmNsb3NpbmdT
Y3JvbGxWaWV3IHNldEZyYW1lOltfZW5jbG9zaW5nU2Nyb2xsVmlldyBzdXBlcnZpZXddLmJvdW5k
c107CiB9CiAKIC0gKHZvaWQpcmVsb2FkCiB7Ci0gICAgX2FjdGl2ZVJvdyA9IFdURjo6bnVsbG9w
dDsKICAgICBbc2VsZiByZWxvYWREYXRhXTsKIH0KIApAQCAtMzA4LDI0ICsyNzYsMzMgQEAgdm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKIAogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldworQGltcGxlbWVudGF0aW9u
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgeworICAgIFdlYktpdDo6V2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjKiBfZHJvcGRvd247CisgICAgVmVjdG9yPFN0cmluZz4g
X3N1Z2dlc3Rpb25zOworICAgIE5TVmlldyAqX3ByZXNlbnRpbmdWaWV3OworCisgICAgUmV0YWlu
UHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93PiBfZW5jbG9zaW5nV2luZG93OworICAgIFJl
dGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlVmlldz4gX3RhYmxlOworfQogCi0tIChp
ZClpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopdmlldworLSAoaWQpaW5pdFdpdGhJ
bmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZv
cm1hdGlvbiBpblZpZXc6KE5TVmlldyAqKXByZXNlbnRpbmdWaWV3CiB7CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBzZWxmOwogCi0gICAgX3ZpZXcgPSB2
aWV3OworICAgIF9wcmVzZW50aW5nVmlldyA9IHByZXNlbnRpbmdWaWV3OwogICAgIF9zdWdnZXN0
aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOwotICAgIF90YWJsZSA9IGFk
b3B0TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRS
ZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CisgICAgX3RhYmxlID0gYWRvcHROUyhbW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGFsbG9jXSBpbml0V2l0aEVsZW1lbnRSZWN0Omlu
Zm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CiAKLSAgICBfZW5jbG9zaW5nV2luZG93ID0gYWRvcHRO
UyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5n
Ok5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfZW5jbG9zaW5nV2luZG93
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1RpdGxlZCB8
IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldykgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0UmVsZWFz
ZWRXaGVuQ2xvc2VkOk5PXTsKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBk
cm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxh
eTpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldFRpdGxlVmlzaWJpbGl0eTpOU1dpbmRv
d1RpdGxlSGlkZGVuXTsKKyAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRUaXRsZWJhckFwcGVhcnNU
cmFuc3BhcmVudDpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldE1vdmFibGU6Tk9dOwog
ICAgIFtfZW5jbG9zaW5nV2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNv
bG9yXV07CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0T3BhcXVlOk5PXTsKIAotICAgIFtfdGFi
bGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdXaW5kb3cgZnJhbWVdXTsKICAgICBbX3RhYmxl
IHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtfdGFibGUgc2V0RGF0YVNvdXJjZTpzZWxmXTsKICAg
ICBbX3RhYmxlIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2VsZWN0ZWRSb3c6KV07CkBAIC0zMzYsOSAr
MzEzLDEwIEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgp
CiAKIC0gKFN0cmluZyljdXJyZW50U2VsZWN0ZWRTdHJpbmcKIHsKLSAgICBPcHRpb25hbDxzaXpl
X3Q+IHNlbGVjdGVkUm93ID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93XTsKLSAgICBpZiAoc2Vs
ZWN0ZWRSb3cgJiYgc2VsZWN0ZWRSb3cudmFsdWUoKSA8IF9zdWdnZXN0aW9ucy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0ZWRSb3cudmFsdWUoKSk7CisgICAg
TlNJbnRlZ2VyIHNlbGVjdGVkUm93ID0gW190YWJsZSBzZWxlY3RlZFJvd107CisKKyAgICBpZiAo
c2VsZWN0ZWRSb3cgPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkUm93KSA8IF9z
dWdnZXN0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0
ZWRSb3cpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtMzQ5LDI1ICszMjcsMjMgQEAg
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKICAgICBbX3Rh
YmxlIHJlbG9hZF07CiAKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBkcm9w
ZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxheTpZ
RVNdOwotICAgIFtfdGFibGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdXaW5kb3cgZnJhbWVd
XTsKIH0KIAogLSAodm9pZCltb3ZlU2VsZWN0aW9uQnlEaXJlY3Rpb246KGNvbnN0IFN0cmluZyYp
ZGlyZWN0aW9uCiB7CiAgICAgc2l6ZV90IHNpemUgPSBfc3VnZ2VzdGlvbnMuc2l6ZSgpOwotICAg
IE9wdGlvbmFsPHNpemVfdD4gb2xkU2VsZWN0aW9uID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93
XTsKKyAgICBOU0ludGVnZXIgb2xkU2VsZWN0aW9uID0gW190YWJsZSBzZWxlY3RlZFJvd107CiAK
ICAgICBzaXplX3QgbmV3U2VsZWN0aW9uOwotICAgIGlmIChvbGRTZWxlY3Rpb24pIHsKLSAgICAg
ICAgc2l6ZV90IG9sZFZhbHVlID0gb2xkU2VsZWN0aW9uLnZhbHVlKCk7CisgICAgaWYgKG9sZFNl
bGVjdGlvbiAhPSAtMSkgewogICAgICAgICBpZiAoZGlyZWN0aW9uID09ICJVcCIpCi0gICAgICAg
ICAgICBuZXdTZWxlY3Rpb24gPSBvbGRWYWx1ZSA/IChvbGRWYWx1ZSAtIDEpIDogKHNpemUgLSAx
KTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IG9sZFNlbGVjdGlvbiA/IChvbGRTZWxlY3Rp
b24gLSAxKSA6IChzaXplIC0gMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1NlbGVj
dGlvbiA9IChvbGRWYWx1ZSArIDEpICUgc2l6ZTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9
IChvbGRTZWxlY3Rpb24gKyAxKSAlIHNpemU7CiAgICAgfSBlbHNlCiAgICAgICAgIG5ld1NlbGVj
dGlvbiA9IChkaXJlY3Rpb24gPT0gIlVwIikgPyAoc2l6ZSAtIDEpIDogMDsKIAotICAgIFtfdGFi
bGUgc2V0QWN0aXZlUm93Om5ld1NlbGVjdGlvbl07CisgICAgW190YWJsZSBzZWxlY3RSb3dJbmRl
eGVzOltOU0luZGV4U2V0IGluZGV4U2V0V2l0aEluZGV4Om5ld1NlbGVjdGlvbl0gYnlFeHRlbmRp
bmdTZWxlY3Rpb246Tk9dOwogfQogCiAtICh2b2lkKWludmFsaWRhdGUKQEAgLTM4MCwxNiArMzU2
LDE3IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgpCiAK
ICAgICBfdGFibGUgPSBuaWw7CiAKLSAgICBbW192aWV3IHdpbmRvd10gcmVtb3ZlQ2hpbGRXaW5k
b3c6X2VuY2xvc2luZ1dpbmRvdy5nZXQoKV07CisgICAgW1tfcHJlc2VudGluZ1ZpZXcgd2luZG93
XSByZW1vdmVDaGlsZFdpbmRvdzpfZW5jbG9zaW5nV2luZG93LmdldCgpXTsKICAgICBbX2VuY2xv
c2luZ1dpbmRvdyBjbG9zZV07CiAgICAgX2VuY2xvc2luZ1dpbmRvdyA9IG5pbDsKIH0KIAogLSAo
TlNSZWN0KWRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JilyZWN0CiB7Ci0gICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBbW192aWV3IHdpbmRvd10gY29udmVy
dFJlY3RUb1NjcmVlbjpbX3ZpZXcgY29udmVydFJlY3Q6cmVjdCB0b1ZpZXc6bmlsXV07Ci0gICAg
Q0dGbG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihfc3VnZ2VzdGlvbnMuc2l6ZSgpLCBkcm9wZG93bk1h
eFN1Z2dlc3Rpb25zKSAqIGRyb3Bkb3duUm93SGVpZ2h0OwotICAgIHJldHVybiBOU01ha2VSZWN0
KE5TTWluWCh3aW5kb3dSZWN0KSAtIGRyb3Bkb3duU2hhZG93SGVpZ2h0LCBOU01pblkod2luZG93
UmVjdCkgLSBoZWlnaHQgLSBkcm9wZG93blNoYWRvd0hlaWdodCAtIGRyb3Bkb3duVG9wTWFyZ2lu
LCByZWN0LndpZHRoKCkgKyBkcm9wZG93blNoYWRvd0hlaWdodCAqIDIsIGhlaWdodCArIGRyb3Bk
b3duU2hhZG93SGVpZ2h0KTsKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbX3ByZXNlbnRpbmdW
aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbX3ByZXNlbnRpbmdWaWV3IGNvbnZlcnRS
ZWN0OnJlY3QgdG9WaWV3Om5pbF1dOworICAgIGF1dG8gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCA9
IHN0ZDo6bWluKF9zdWdnZXN0aW9ucy5zaXplKCksIGRyb3Bkb3duTWF4U3VnZ2VzdGlvbnMpOwor
ICAgIENHRmxvYXQgaGVpZ2h0ID0gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCAqIChkcm9wZG93blJv
d0hlaWdodCArIFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0KSArIChkcm9wZG93blZl
cnRpY2FsUGFkZGluZyAqIDIpOworICAgIHJldHVybiBOU01ha2VSZWN0KE5TTWluWCh3aW5kb3dS
ZWN0KSwgTlNNaW5ZKHdpbmRvd1JlY3QpIC0gaGVpZ2h0IC0gZHJvcGRvd25Ub3BNYXJnaW4sIHJl
Y3Qud2lkdGgoKSwgaGVpZ2h0KTsKIH0KIAogLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMqKWRyb3Bkb3duCkBA
IC0zOTcsNyArMzc0LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6
OmNsb3NlKCkKICAgICBfZHJvcGRvd24gPSBkcm9wZG93bjsKICAgICBbW19lbmNsb3NpbmdXaW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6W190YWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3XV07
CiAgICAgW190YWJsZSByZWxvYWRdOwotICAgIFtbX3ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRv
dzpfZW5jbG9zaW5nV2luZG93LmdldCgpIG9yZGVyZWQ6TlNXaW5kb3dBYm92ZV07CisgICAgW1tf
cHJlc2VudGluZ1ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRvdzpfZW5jbG9zaW5nV2luZG93Lmdl
dCgpIG9yZGVyZWQ6TlNXaW5kb3dBYm92ZV07CiAgICAgW1tfdGFibGUgZW5jbG9zaW5nU2Nyb2xs
Vmlld10gZmxhc2hTY3JvbGxlcnNdOwogfQogCkBAIC00MTYsMjAgKzM5MywyMSBAQCB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYzo6Y2xvc2UoKQogICAgIHJldHVybiBkcm9w
ZG93blJvd0hlaWdodDsKIH0KIAorLSAoTlNUYWJsZVJvd1ZpZXcgKil0YWJsZVZpZXc6KE5TVGFi
bGVWaWV3ICopdGFibGVWaWV3IHJvd1ZpZXdGb3JSb3c6KE5TSW50ZWdlcilyb3cKK3sKKyAgICBy
ZXR1cm4gW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldyBhbGxvY10gaW5pdF07Cit9
CisKIC0gKE5TVmlldyAqKXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgdmlld0Zv
clRhYmxlQ29sdW1uOihOU1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4gcm93OihOU0ludGVnZXIp
cm93CiB7Ci0gICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsICpyZXN1bHQgPSBbdGFibGVWaWV3
IG1ha2VWaWV3V2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgb3du
ZXI6c2VsZl07CisgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3ICpyZXN1bHQgPSBbdGFibGVW
aWV3IG1ha2VWaWV3V2l0aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIg
b3duZXI6c2VsZl07CiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tX
S0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCB0YWJsZVZpZXcuZnJhbWUuc2l6ZS53aWR0aCwgZHJvcGRvd25Sb3dIZWlnaHQpXSBhdXRv
cmVsZWFzZV07CisgICAgICAgIHJlc3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIHRhYmxlVmlldy5mcmFtZS5zaXpl
LndpZHRoLCBkcm9wZG93blJvd0hlaWdodCldIGF1dG9yZWxlYXNlXTsKICAgICAgICAgW3Jlc3Vs
dCBzZXRJZGVudGlmaWVyOnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKICAgICB9CiAK
LSAgICBbcmVzdWx0IHNldFRleHQ6X3N1Z2dlc3Rpb25zLmF0KHJvdyldOwotCi0gICAgT3B0aW9u
YWw8c2l6ZV90PiBjdXJyZW50QWN0aXZlUm93ID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93XTsK
LSAgICBpZiAoY3VycmVudEFjdGl2ZVJvdyAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJvdykgPT0g
Y3VycmVudEFjdGl2ZVJvdy52YWx1ZSgpKQotICAgICAgICByZXN1bHQuYWN0aXZlID0gWUVTOwor
ICAgIHJlc3VsdC50ZXh0ID0gX3N1Z2dlc3Rpb25zLmF0KHJvdyk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373205</attachid>
            <date>2019-06-30 20:20:12 -0700</date>
            <delta_ts>2019-09-08 19:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199350-20190630202012.patch</filename>
            <type>text/plain</type>
            <size>22765</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA2ZDcxMjA0NjZkN2UzOTdj
ZWYzZGU4ZTFlYzE5OTRlOTUyNzE5YTUuLmQ2OGEwOGE4OTUxYjFkYmI2NGFhNjk4NWE4NmJiZWFl
YWMwZDFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDYtMzAgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgbWFjT1M6IDxkYXRhbGlz
dD4gZHJvcGRvd24gc2hhZG93IGlzIGNyb3BwZWQsIGxvb2tzIG5vdGhpbmcgbGlrZSBOU0NvbWJv
Qm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkz
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBy
b3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBtYWNPUyA8ZGF0YWxpc3Q+IGRyb3Bkb3duLCBhZG9w
dGluZyB0aGUKKyAgICAgICAgcm91bmRseS1jb3JuZXJlZCBhbmQgYmFja2Ryb3AtZnVsIGFwcGVh
cmFuY2Ugb2YgdGhlIGN1cnJlbnQgTlNDb21ib0JveCBzdHlsZS4KKworICAgICAgICBVc2UgdGhl
IHByb3BlciB3aW5kb3cgc2hhZG93IGluc3RlYWQgb2Ygb3VyIG93biBpbnNpZGUgdGhlIHdpbmRv
dywgYm90aAorICAgICAgICBzbyB0aGF0IHdlIG1hdGNoIHRoZSBzeXN0ZW0gYW5kIHNvIHRoYXQg
aXQgZG9lc24ndCBnZXQgY2xpcHBlZC4KKworICAgICAgICBBbGxvdyB2ZXJ0aWNhbCBydWJiZXIt
YmFuZGluZywgYmVjYXVzZSBOU0NvbWJvQm94IGRvZXMuCisKKyAgICAgICAgRG9uJ3QgaGlnaGxp
Z2h0IG9uIGhvdmVyLCBiZWNhdXNlIE5TQ29tYm9Cb3ggZG9lc24ndC4gRG8gdXNlIE5TVGFibGVW
aWV3J3MKKyAgICAgICAgc2VsZWN0aW9uIG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHJvbGxpbmcgb3Vy
IG93biBmb3IgaGlnaGxpZ2h0cyBkcml2ZW4gYnkKKyAgICAgICAga2V5Ym9hcmQtYmFzZWQgbmF2
aWdhdGlvbi4KKworICAgICAgICBNYWtlIHVzZSBvZiBOU1RhYmxlQ2VsbFZpZXcsIHNpbmNlIGl0
IGhhcyBzb21lIHNtYXJ0cyBhcm91bmQgcGl4ZWwgYWxpZ25tZW50CisgICAgICAgIHRoYXQgd2Ug
ZG9uJ3QgbmVlZCB0byBkdXBsaWNhdGUgKGFuZCB0aGluZ3MgYXJlIGJsdXJyeSBvbiAxeCBkaXNw
bGF5cyB3aXRob3V0KS4KKworICAgICAgICBBbHNvIHJlbmFtZSBzb21lIGNsYXNzZXMgdG8gbWFr
ZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQncyBnb2luZyBvbjoKKyAgICAgICAgV0tEYXRhTGlz
dFN1Z2dlc3Rpb25DZWxsIC0+IFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyAoaXQncyBhIE5TVmll
dywgbm90IGFuIE5TQ2VsbCkKKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyAtPiBX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIChpdCdzIG5vdCBhIHZpZXcgYXQgYWxsKQor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL21hYy9BcHBLaXRTUEkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHls
ZU1hc2s6YmFja2luZzpkZWZlcjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25X
aW5kb3cgY2FuQmVjb21lS2V5V2luZG93XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0
aW9uV2luZG93IGhhc0tleUFwcGVhcmFuY2VdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25XaW5kb3cgc2hhZG93T3B0aW9uc10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldFRleHQ6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBz
ZXRCYWNrZ3JvdW5kU3R5bGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFi
bGVSb3dWaWV3IGRyYXdTZWxlY3Rpb25JblJlY3Q6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uVGFibGVWaWV3IGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6CisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGxheW91dF0pOgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvblRhYmxlVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBjdXJyZW50U2VsZWN0ZWRTdHJp
bmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB1cGRhdGVX
aXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNDb250cm9sbGVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDpdKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBzaG93U3VnZ2VzdGlvbnNE
cm9wZG93bjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0
YWJsZVZpZXc6cm93Vmlld0ZvclJvdzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGluaXRXaXRoRnJhbWU6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBzZXRUZXh0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgc2V0QWN0aXZlOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgZHJhd1JlY3Q6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUVudGVyZWQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUV4
aXRlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGFj
Y2VwdHNGaXJzdFJlc3BvbmRlcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvblRhYmxlIGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgc2V0VmlzaWJsZVJlY3Q6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgY3VycmVudEFjdGl2ZVJvd10pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIHNldEFjdGl2ZVJv
dzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSByZWxv
YWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSBhY2Nl
cHRzRmlyc3RSZXNwb25kZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25UYWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgcmVtb3ZlRnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5n
RGlzcGxheV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNWaWV3IGN1cnJlbnRTZWxlY3RlZFN0cmluZ10pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHVwZGF0ZVdpdGhJbmZvcm1hdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBtb3Zl
U2VsZWN0aW9uQnlEaXJlY3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1ZpZXcgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNWaWV3IGRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHNob3dTdWdnZXN0aW9uc0Ry
b3Bkb3duOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IHNlbGVjdGVkUm93Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNWaWV3IG51bWJlck9mUm93c0luVGFibGVWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHRhYmxlVmlldzpoZWlnaHRPZlJvdzpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyB0YWJsZVZpZXc6dmlld0Zv
clRhYmxlQ29sdW1uOnJvdzpdKTogRGVsZXRlZC4KKwogMjAxOS0wNi0yNyAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBXUEUgYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FwcEtpdFNQ
SS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvbWFjL0FwcEtpdFNQSS5oCmluZGV4IGYz
MDVkNTE1NDEyMDAwNDNhNmQ3ZGUyNTkyZWYyMDQxYjk0ZjA0OTkuLjQzNGIxMTBmMGMzYzY2NGZl
ZmQ0YzRjNTQ2ODM2YzQ1MzY4MjNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL21hYy9BcHBLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9t
YWMvQXBwS2l0U1BJLmgKQEAgLTQyLDE3ICs0MiwyMiBAQAogQHByb3RvY29sIE5TVGV4dElucHV0
Q2xpZW50X0FzeW5jCiBAZW5kCiAKLUBpbnRlcmZhY2UgTlNXaW5kb3cgKE5TSW5zcGVjdG9yQmFy
U3VwcG9ydCkKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBOU1dpbmRvd1NoYWRvd09w
dGlvbnMpIHsKKyAgICBOU1dpbmRvd1NoYWRvd1NlY29uZGFyeVdpbmRvdyA9IDB4MiwKK307CisK
K0BpbnRlcmZhY2UgTlNXaW5kb3cgKCkKIC0gKE5TSW5zcGVjdG9yQmFyICopaW5zcGVjdG9yQmFy
OwogLSAodm9pZClzZXRJbnNwZWN0b3JCYXI6KE5TSW5zcGVjdG9yQmFyICopYmFyOwotQGVuZAor
CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1dpbmRvd1NoYWRvd09wdGlvbnMgc2hhZG93T3B0aW9u
czsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDE0MDAKLUBpbnRl
cmZhY2UgTlNXaW5kb3cgKEZ1bGxTY3JlZW5TdXBwb3J0KQogQHByb3BlcnR5IENHRmxvYXQgdGl0
bGViYXJBbHBoYVZhbHVlOwotQGVuZAogI2VuZGlmCiAKK0BlbmQKKwogI2VuZGlmCiAKIEBpbnRl
cmZhY2UgTlNJbnNwZWN0b3JCYXIgKElQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjLm1t
CmluZGV4IDFjMjczZTNjZTE3Y2Q2NzAzYzI1NWFiN2UyMTY5ODk0NDMxYjU3YjAuLjBjZGZiYWY0
Y2E1NjMyY2EzNjAxZTcyZjU1NzZiZThlOTQyM2IwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYy5tbQpAQCAtMjgsNTEgKzI4LDMwIEBACiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkgJiYgVVNFKEFQUEtJVCkKIAorI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0NvbG9yU1BJLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3du
VG9wTWFyZ2luID0gMjsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duVG9wTWFyZ2luID0g
MzsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duVmVydGljYWxQYWRkaW5nID0gNDsKIHN0
YXRpYyBjb25zdCBDR0Zsb2F0IGRyb3Bkb3duUm93SGVpZ2h0ID0gMjA7Ci1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCBkcm9wZG93blNoYWRvd0hlaWdodCA9IDU7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCBk
cm9wZG93blNoYWRvd0JsdXJSYWRpdXMgPSAzOwogc3RhdGljIGNvbnN0IHNpemVfdCBkcm9wZG93
bk1heFN1Z2dlc3Rpb25zID0gNjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHN1Z2dlc3Rpb25D
ZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwiOworc3RhdGlj
IE5TU3RyaW5nICogY29uc3Qgc3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0
YUxpc3RTdWdnZXN0aW9uVmlldyI7CiAKIEBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25X
aW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCi1AaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9u
Q2VsbCA6IE5TVmlldyB7Ci0gICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOwot
ICAgIEJPT0wgX21vdXNlSXNPdmVyOwotICAgIEJPT0wgX2FjdGl2ZTsKLX0KLQotQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgQk9PTCBhY3RpdmU7Ci0KLS0gKHZvaWQpc2V0VGV4dDooTlNT
dHJpbmcgKil0ZXh0OworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgOiBOU1Rh
YmxlQ2VsbFZpZXcKIEBlbmQKIAotQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxl
IDogTlNUYWJsZVZpZXcgewotICAgIFJldGFpblB0cjxOU1Njcm9sbFZpZXc+IF9lbmNsb3NpbmdT
Y3JvbGxWaWV3OwotICAgIE9wdGlvbmFsPHNpemVfdD4gX2FjdGl2ZVJvdzsKLX0KK0BpbnRlcmZh
Y2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVJvd1ZpZXcgOiBOU1RhYmxlUm93VmlldworQGVu
ZAogCi0tIChpZClpbml0V2l0aEVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jily
ZWN0OwotLSAodm9pZClzZXRWaXNpYmxlUmVjdDooTlNSZWN0KXJlY3Q7Ci0tICh2b2lkKXNldEFj
dGl2ZVJvdzooc2l6ZV90KXJvdzsKLS0gKE9wdGlvbmFsPHNpemVfdD4pY3VycmVudEFjdGl2ZVJv
dzsKLS0gKHZvaWQpcmVsb2FkOworQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxl
VmlldyA6IE5TVGFibGVWaWV3CiBAZW5kCiAKLUBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zVmlldyA6IE5TT2JqZWN0PE5TVGFibGVWaWV3RGF0YVNvdXJjZSwgTlNUYWJsZVZpZXdEZWxl
Z2F0ZT4gewotQHByaXZhdGUKLSAgICBSZXRhaW5QdHI8V0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJs
ZT4gX3RhYmxlOwotICAgIFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFj
KiBfZHJvcGRvd247Ci0gICAgVmVjdG9yPFN0cmluZz4gX3N1Z2dlc3Rpb25zOwotICAgIE5TVmll
dyAqX3ZpZXc7Ci0gICAgUmV0YWluUHRyPE5TV2luZG93PiBfZW5jbG9zaW5nV2luZG93OwotfQor
QGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIDogTlNPYmplY3Q8TlNU
YWJsZVZpZXdEYXRhU291cmNlLCBOU1RhYmxlVmlld0RlbGVnYXRlPgogCiAtIChpZClpbml0V2l0
aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiYmKWlu
Zm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopdmlldzsKIC0gKHZvaWQpc2hvd1N1Z2dlc3Rpb25z
RHJvcGRvd246KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjKilkcm9w
ZG93bjsKQEAgLTgxLDYgKzYwLDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qgc3VnZ2VzdGlv
bkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldLRGF0YUxpc3RTdWdnZXN0aW9uQ2UKIC0gKHZvaWQp
aW52YWxpZGF0ZTsKIAogLSAoU3RyaW5nKWN1cnJlbnRTZWxlY3RlZFN0cmluZzsKKwogQGVuZAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNSw3ICs4NSw3IEBAIHZvaWQgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Ryb3Bkb3duVUkgPSBhZG9w
dE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBhbGxvY10gaW5pdFdpdGhJbmZvcm1hdGlv
bjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV92aWV3XSk7CisgICAgbV9kcm9wZG93blVJ
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3Om1fdmlld10pOwogICAg
IFttX2Ryb3Bkb3duVUkgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246dGhpc107CiB9CiAKQEAgLTE0
Nyw3OCArMTI3LDc4IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpj
bG9zZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1AaW1wbGVtZW50YXRpb24gV0tEYXRh
TGlzdFN1Z2dlc3Rpb25XaW5kb3cKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RT
dWdnZXN0aW9uQ2VsbAotCi1Ac3ludGhlc2l6ZSBhY3RpdmU9X2FjdGl2ZTsKK0BpbXBsZW1lbnRh
dGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdyB7CisgICAgUmV0YWluUHRyPE5TVmlzdWFs
RWZmZWN0Vmlldz4gX2JhY2tkcm9wVmlldzsKK30KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lUmVjdAorLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbnRS
ZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilzdHlsZU1hc2sgYmFja2luZzooTlNCYWNraW5nU3Rv
cmVUeXBlKWJhY2tpbmdTdG9yZVR5cGUgZGVmZXI6KEJPT0wpZGVmZXIKIHsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSkpCi0gICAgICAgIHJldHVybiBz
ZWxmOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBz
dHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tpbmc6YmFja2luZ1N0b3JlVHlwZSBkZWZlcjpkZWZlcl07
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRGaWVsZCA9
IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0pOwotICAgIFtfdGV4dEZpZWxkIHNl
dEVkaXRhYmxlOk5PXTsKLSAgICBbX3RleHRGaWVsZCBzZXRCZXplbGVkOk5PXTsKLSAgICBbX3Rl
eHRGaWVsZCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJDb2xvcl1dOwotICAgIFtz
ZWxmIGFkZFN1YnZpZXc6X3RleHRGaWVsZC5nZXQoKV07CisgICAgc2VsZi5oYXNTaGFkb3cgPSBZ
RVM7CiAKLSAgICBbc2VsZiBzZXRJZGVudGlmaWVyOkAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxs
Il07CisgICAgX2JhY2tkcm9wVmlldyA9IFtbTlNWaXN1YWxFZmZlY3RWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOmNvbnRlbnRSZWN0XTsKKyAgICBbX2JhY2tkcm9wVmlldyBzZXRBdXRvcmVzaXpp
bmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOworICAgIFtf
YmFja2Ryb3BWaWV3IHNldE1hdGVyaWFsOk5TVmlzdWFsRWZmZWN0TWF0ZXJpYWxNZW51XTsKKyAg
ICBbX2JhY2tkcm9wVmlldyBzZXRTdGF0ZTpOU1Zpc3VhbEVmZmVjdFN0YXRlQWN0aXZlXTsKKyAg
ICBbX2JhY2tkcm9wVmlldyBzZXRCbGVuZGluZ01vZGU6TlNWaXN1YWxFZmZlY3RCbGVuZGluZ01v
ZGVCZWhpbmRXaW5kb3ddOwogCi0gICAgW3NlbGYgYWRkVHJhY2tpbmdSZWN0OnNlbGYuYm91bmRz
IG93bmVyOnNlbGYgdXNlckRhdGE6bmlsIGFzc3VtZUluc2lkZTpOT107CisgICAgW3NlbGYgc2V0
Q29udGVudFZpZXc6X2JhY2tkcm9wVmlldy5nZXQoKV07CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
IAotLSAodm9pZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKKy0gKEJPT0wpY2FuQmVjb21lS2V5
V2luZG93CiB7Ci0gICAgW190ZXh0RmllbGQgc2V0U3RyaW5nVmFsdWU6dGV4dF07Ci0gICAgW190
ZXh0RmllbGQgc2l6ZVRvRml0XTsKLQotICAgIE5TUmVjdCB0ZXh0RmllbGRGcmFtZSA9IFtfdGV4
dEZpZWxkIGZyYW1lXTsKLSAgICBbX3RleHRGaWVsZCBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIChO
U0hlaWdodChzZWxmLmZyYW1lKSAtIE5TSGVpZ2h0KHRleHRGaWVsZEZyYW1lKSkgLyAyLCBOU1dp
ZHRoKHRleHRGaWVsZEZyYW1lKSwgTlNIZWlnaHQodGV4dEZpZWxkRnJhbWUpKV07CisgICAgcmV0
dXJuIE5POworfQogCi0gICAgX21vdXNlSXNPdmVyID0gTk87Ci0gICAgc2VsZi5hY3RpdmUgPSBO
TzsKKy0gKEJPT0wpaGFzS2V5QXBwZWFyYW5jZQoreworICAgIHJldHVybiBZRVM7CiB9CiAKLS0g
KHZvaWQpc2V0QWN0aXZlOihCT09MKXNob3VsZEFjdGl2YXRlCistIChOU1dpbmRvd1NoYWRvd09w
dGlvbnMpc2hhZG93T3B0aW9ucwogewotICAgIF9hY3RpdmUgPSBzaG91bGRBY3RpdmF0ZTsKLSAg
ICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICByZXR1cm4gTlNXaW5kb3dTaGFkb3dT
ZWNvbmRhcnlXaW5kb3c7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RT
dWdnZXN0aW9uVmlldyB7CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOwog
fQogCi0tICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpZGlydHlSZWN0CistIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWVSZWN0CiB7Ci0gICAgaWYgKHNlbGYuYWN0aXZlKSB7Ci0gICAgICAg
IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0gc2V0RmlsbF07Ci0gICAg
ICAgIFtfdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENv
bnRyb2xUZXh0Q29sb3JdXTsKLSAgICB9IGVsc2UgaWYgKF9tb3VzZUlzT3ZlcikgewotICAgICAg
ICBbW05TQ29sb3IgcXVhdGVybmFyeUxhYmVsQ29sb3JdIHNldEZpbGxdOwotICAgICAgICBbX3Rl
eHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4dENvbG9yXV07Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgW1tOU0NvbG9yIGNvbnRyb2xCYWNrZ3JvdW5kQ29sb3JdIHNldEZpbGxdOwotICAg
ICAgICBbX3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4dENvbG9yXV07Ci0gICAg
fQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKSkKKyAg
ICAgICAgcmV0dXJuIHNlbGY7CiAKLSAgICBOU1JlY3RGaWxsKGRpcnR5UmVjdCk7Ci0gICAgW3N1
cGVyIGRyYXdSZWN0OmRpcnR5UmVjdF07CisgICAgX3RleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1Rl
eHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKTsKKyAgICBzZWxmLnRleHRG
aWVsZCA9IF90ZXh0RmllbGQuZ2V0KCk7CisKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OnNlbGYudGV4
dEZpZWxkXTsKKworICAgIHNlbGYuaWRlbnRpZmllciA9IHN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVu
dGlmaWVyOworICAgIHNlbGYudGV4dEZpZWxkLmVkaXRhYmxlID0gTk87CisgICAgc2VsZi50ZXh0
RmllbGQuYmV6ZWxlZCA9IE5POworICAgIHNlbGYudGV4dEZpZWxkLmZvbnQgPSBbTlNGb250IG1l
bnVGb250T2ZTaXplOjBdOworICAgIHNlbGYudGV4dEZpZWxkLmRyYXdzQmFja2dyb3VuZCA9IE5P
OworCisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpbW91c2VFbnRlcmVkOihOU0V2ZW50
ICopZXZlbnQKKy0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgW3N1cGVy
IG1vdXNlRW50ZXJlZDpldmVudF07Ci0gICAgX21vdXNlSXNPdmVyID0gWUVTOwotICAgIFtzZWxm
IHNldE5lZWRzRGlzcGxheTpZRVNdOworICAgIHNlbGYudGV4dEZpZWxkLnN0cmluZ1ZhbHVlID0g
dGV4dDsKIH0KIAotLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAqKWV2ZW50CistICh2b2lk
KXNldEJhY2tncm91bmRTdHlsZTooTlNCYWNrZ3JvdW5kU3R5bGUpYmFja2dyb3VuZFN0eWxlCiB7
Ci0gICAgW3N1cGVyIG1vdXNlRXhpdGVkOmV2ZW50XTsKLSAgICBfbW91c2VJc092ZXIgPSBOTzsK
LSAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICBbc3VwZXIgc2V0QmFja2dyb3Vu
ZFN0eWxlOmJhY2tncm91bmRTdHlsZV07CisgICAgc2VsZi50ZXh0RmllbGQudGV4dENvbG9yID0g
YmFja2dyb3VuZFN0eWxlID09IE5TQmFja2dyb3VuZFN0eWxlTGlnaHQgPyBbTlNDb2xvciB0ZXh0
Q29sb3JdIDogW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sVGV4dENvbG9yXTsKIH0K
IAogLSAoQk9PTClhY2NlcHRzRmlyc3RSZXNwb25kZXIKQEAgLTIyOCwxNiArMjA4LDI4IEBAIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgpCiAKIEBlbmQKIAot
QGltcGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUKK0BpbXBsZW1lbnRhdGlv
biBXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldworCistICh2b2lkKWRyYXdTZWxlY3Rp
b25JblJlY3Q6KE5TUmVjdClkaXJ0eVJlY3QKK3sKKyAgICBbc2VsZiBzZXRFbXBoYXNpemVkOllF
U107CisgICAgW3N1cGVyIGRyYXdTZWxlY3Rpb25JblJlY3Q6ZGlydHlSZWN0XTsKK30KKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgeworICAg
IFJldGFpblB0cjxOU1Njcm9sbFZpZXc+IF9lbmNsb3NpbmdTY3JvbGxWaWV3OworfQogCiAtIChp
ZClpbml0V2l0aEVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JilyZWN0CiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgcmVj
dC53aWR0aCgpLCAwKV0pKQogICAgICAgICByZXR1cm4gc2VsZjsKIAotICAgIFtzZWxmIHNldElu
dGVyY2VsbFNwYWNpbmc6TlNaZXJvU2l6ZV07CiAgICAgW3NlbGYgc2V0SGVhZGVyVmlldzpuaWxd
OwotICAgIFtzZWxmIHNldFNlbGVjdGlvbkhpZ2hsaWdodFN0eWxlOk5TVGFibGVWaWV3U2VsZWN0
aW9uSGlnaGxpZ2h0U3R5bGVOb25lXTsKKyAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05T
Q29sb3IgY2xlYXJDb2xvcl1dOworICAgIFtzZWxmIHNldEludGVyY2VsbFNwYWNpbmc6TlNNYWtl
U2l6ZSgwLCBzZWxmLmludGVyY2VsbFNwYWNpbmcuaGVpZ2h0KV07CiAKICAgICBhdXRvIGNvbHVt
biA9IGFkb3B0TlMoW1tOU1RhYmxlQ29sdW1uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbHVtbiBz
ZXRXaWR0aDpyZWN0LndpZHRoKCldOwpAQCAtMjQ1LDQ4ICsyMzcsMjQgQEAgdm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKIAogICAgIF9lbmNsb3NpbmdTY3Jv
bGxWaWV3ID0gYWRvcHROUyhbW05TU2Nyb2xsVmlldyBhbGxvY10gaW5pdF0pOwogICAgIFtfZW5j
bG9zaW5nU2Nyb2xsVmlldyBzZXRIYXNWZXJ0aWNhbFNjcm9sbGVyOllFU107Ci0gICAgW19lbmNs
b3NpbmdTY3JvbGxWaWV3IHNldFZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0
aWNpdHlOb25lXTsKKyAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxF
bGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3RpY2l0eUFsbG93ZWRdOwogICAgIFtfZW5jbG9zaW5nU2Ny
b2xsVmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eTpOU1Njcm9sbEVsYXN0aWNpdHlO
b25lXTsKICAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0RG9jdW1lbnRWaWV3OnNlbGZdOwot
Ci0gICAgYXV0byBkcm9wU2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7
Ci0gICAgW2Ryb3BTaGFkb3cgc2V0U2hhZG93Q29sb3I6W05TQ29sb3Igc3lzdGVtR3JheUNvbG9y
XV07Ci0gICAgW2Ryb3BTaGFkb3cgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoMCwgZHJvcGRv
d25TaGFkb3dIZWlnaHQpXTsKLSAgICBbZHJvcFNoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOmRy
b3Bkb3duU2hhZG93Qmx1clJhZGl1c107Ci0gICAgW19lbmNsb3NpbmdTY3JvbGxWaWV3IHNldFdh
bnRzTGF5ZXI6WUVTXTsKLSAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0U2hhZG93OmRyb3BT
aGFkb3cuZ2V0KCldOworICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXREcmF3c0JhY2tncm91
bmQ6Tk9dOworICAgIFtbX2VuY2xvc2luZ1Njcm9sbFZpZXcgY29udGVudFZpZXddIHNldEF1dG9t
YXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0czpOT107CisgICAgW1tfZW5jbG9zaW5nU2Nyb2xs
VmlldyBjb250ZW50Vmlld10gc2V0Q29udGVudEluc2V0czpOU0VkZ2VJbnNldHNNYWtlKGRyb3Bk
b3duVmVydGljYWxQYWRkaW5nLCAwLCBkcm9wZG93blZlcnRpY2FsUGFkZGluZywgMCldOworICAg
IFtbX2VuY2xvc2luZ1Njcm9sbFZpZXcgY29udGVudFZpZXddIHNjcm9sbFRvUG9pbnQ6TlNNYWtl
UG9pbnQoMCwgLWRyb3Bkb3duVmVydGljYWxQYWRkaW5nKV07CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAodm9pZClzZXRWaXNpYmxlUmVjdDooTlNSZWN0KXJlY3QKLXsKLSAgICBbc2VsZiBz
ZXRGcmFtZTpOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgocmVjdCkgLSBkcm9wZG93blNoYWRvd0hl
aWdodCAqIDIsIDApXTsKLSAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0RnJhbWU6TlNNYWtl
UmVjdChkcm9wZG93blNoYWRvd0hlaWdodCwgZHJvcGRvd25TaGFkb3dIZWlnaHQsIE5TV2lkdGgo
cmVjdCkgLSBkcm9wZG93blNoYWRvd0hlaWdodCAqIDIsIE5TSGVpZ2h0KHJlY3QpIC0gZHJvcGRv
d25TaGFkb3dIZWlnaHQpXTsKLX0KLQotLSAoT3B0aW9uYWw8c2l6ZV90PiljdXJyZW50QWN0aXZl
Um93Ci17Ci0gICAgcmV0dXJuIF9hY3RpdmVSb3c7Ci19Ci0KLS0gKHZvaWQpc2V0QWN0aXZlUm93
OihzaXplX3Qpcm93CistICh2b2lkKWxheW91dAogewotICAgIGlmIChfYWN0aXZlUm93KSB7Ci0g
ICAgICAgIFdLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCAqb2xkQ2VsbCA9IChXS0RhdGFMaXN0U3Vn
Z2VzdGlvbkNlbGwgKilbc2VsZiB2aWV3QXRDb2x1bW46MCByb3c6X2FjdGl2ZVJvdy52YWx1ZSgp
IG1ha2VJZk5lY2Vzc2FyeTpOT107Ci0gICAgICAgIG9sZENlbGwuYWN0aXZlID0gTk87Ci0gICAg
fQotCi0gICAgW3NlbGYgc2Nyb2xsUm93VG9WaXNpYmxlOnJvd107Ci0gICAgV0tEYXRhTGlzdFN1
Z2dlc3Rpb25DZWxsICpuZXdDZWxsID0gKFdLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCAqKVtzZWxm
IHZpZXdBdENvbHVtbjowIHJvdzpyb3cgbWFrZUlmTmVjZXNzYXJ5Ok5PXTsKLSAgICBuZXdDZWxs
LmFjdGl2ZSA9IFlFUzsKLQotICAgIF9hY3RpdmVSb3cgPSByb3c7CisgICAgW19lbmNsb3NpbmdT
Y3JvbGxWaWV3IHNldEZyYW1lOltfZW5jbG9zaW5nU2Nyb2xsVmlldyBzdXBlcnZpZXddLmJvdW5k
c107CiB9CiAKIC0gKHZvaWQpcmVsb2FkCiB7Ci0gICAgX2FjdGl2ZVJvdyA9IFdURjo6bnVsbG9w
dDsKICAgICBbc2VsZiByZWxvYWREYXRhXTsKIH0KIApAQCAtMzA4LDI0ICsyNzYsMzMgQEAgdm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKIAogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldworQGltcGxlbWVudGF0aW9u
IFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgeworICAgIFdlYktpdDo6V2ViRGF0YUxp
c3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjKiBfZHJvcGRvd247CisgICAgVmVjdG9yPFN0cmluZz4g
X3N1Z2dlc3Rpb25zOworICAgIE5TVmlldyAqX3ByZXNlbnRpbmdWaWV3OworCisgICAgUmV0YWlu
UHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93PiBfZW5jbG9zaW5nV2luZG93OworICAgIFJl
dGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlVmlldz4gX3RhYmxlOworfQogCi0tIChp
ZClpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1h
dGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopdmlldworLSAoaWQpaW5pdFdpdGhJ
bmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZv
cm1hdGlvbiBpblZpZXc6KE5TVmlldyAqKXByZXNlbnRpbmdWaWV3CiB7CiAgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBzZWxmOwogCi0gICAgX3ZpZXcgPSB2
aWV3OworICAgIF9wcmVzZW50aW5nVmlldyA9IHByZXNlbnRpbmdWaWV3OwogICAgIF9zdWdnZXN0
aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOwotICAgIF90YWJsZSA9IGFk
b3B0TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIGFsbG9jXSBpbml0V2l0aEVsZW1lbnRS
ZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CisgICAgX3RhYmxlID0gYWRvcHROUyhbW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGFsbG9jXSBpbml0V2l0aEVsZW1lbnRSZWN0Omlu
Zm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CiAKLSAgICBfZW5jbG9zaW5nV2luZG93ID0gYWRvcHRO
UyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5n
Ok5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfZW5jbG9zaW5nV2luZG93
ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0V2l0aENv
bnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1RpdGxlZCB8
IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldykgYmFja2luZzpOU0JhY2tpbmdT
dG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0UmVsZWFz
ZWRXaGVuQ2xvc2VkOk5PXTsKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBk
cm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxh
eTpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldFRpdGxlVmlzaWJpbGl0eTpOU1dpbmRv
d1RpdGxlSGlkZGVuXTsKKyAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRUaXRsZWJhckFwcGVhcnNU
cmFuc3BhcmVudDpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldE1vdmFibGU6Tk9dOwog
ICAgIFtfZW5jbG9zaW5nV2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBjbGVhckNv
bG9yXV07CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0T3BhcXVlOk5PXTsKIAotICAgIFtfdGFi
bGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdXaW5kb3cgZnJhbWVdXTsKICAgICBbX3RhYmxl
IHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtfdGFibGUgc2V0RGF0YVNvdXJjZTpzZWxmXTsKICAg
ICBbX3RhYmxlIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2VsZWN0ZWRSb3c6KV07CkBAIC0zMzYsOSAr
MzEzLDEwIEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgp
CiAKIC0gKFN0cmluZyljdXJyZW50U2VsZWN0ZWRTdHJpbmcKIHsKLSAgICBPcHRpb25hbDxzaXpl
X3Q+IHNlbGVjdGVkUm93ID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93XTsKLSAgICBpZiAoc2Vs
ZWN0ZWRSb3cgJiYgc2VsZWN0ZWRSb3cudmFsdWUoKSA8IF9zdWdnZXN0aW9ucy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0ZWRSb3cudmFsdWUoKSk7CisgICAg
TlNJbnRlZ2VyIHNlbGVjdGVkUm93ID0gW190YWJsZSBzZWxlY3RlZFJvd107CisKKyAgICBpZiAo
c2VsZWN0ZWRSb3cgPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkUm93KSA8IF9z
dWdnZXN0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybiBfc3VnZ2VzdGlvbnMuYXQoc2VsZWN0
ZWRSb3cpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtMzQ5LDI1ICszMjcsMjMgQEAg
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6OmNsb3NlKCkKICAgICBbX3Rh
YmxlIHJlbG9hZF07CiAKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpbc2VsZiBkcm9w
ZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0gZGlzcGxheTpZ
RVNdOwotICAgIFtfdGFibGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdXaW5kb3cgZnJhbWVd
XTsKIH0KIAogLSAodm9pZCltb3ZlU2VsZWN0aW9uQnlEaXJlY3Rpb246KGNvbnN0IFN0cmluZyYp
ZGlyZWN0aW9uCiB7CiAgICAgc2l6ZV90IHNpemUgPSBfc3VnZ2VzdGlvbnMuc2l6ZSgpOwotICAg
IE9wdGlvbmFsPHNpemVfdD4gb2xkU2VsZWN0aW9uID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93
XTsKKyAgICBOU0ludGVnZXIgb2xkU2VsZWN0aW9uID0gW190YWJsZSBzZWxlY3RlZFJvd107CiAK
ICAgICBzaXplX3QgbmV3U2VsZWN0aW9uOwotICAgIGlmIChvbGRTZWxlY3Rpb24pIHsKLSAgICAg
ICAgc2l6ZV90IG9sZFZhbHVlID0gb2xkU2VsZWN0aW9uLnZhbHVlKCk7CisgICAgaWYgKG9sZFNl
bGVjdGlvbiAhPSAtMSkgewogICAgICAgICBpZiAoZGlyZWN0aW9uID09ICJVcCIpCi0gICAgICAg
ICAgICBuZXdTZWxlY3Rpb24gPSBvbGRWYWx1ZSA/IChvbGRWYWx1ZSAtIDEpIDogKHNpemUgLSAx
KTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IG9sZFNlbGVjdGlvbiA/IChvbGRTZWxlY3Rp
b24gLSAxKSA6IChzaXplIC0gMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1NlbGVj
dGlvbiA9IChvbGRWYWx1ZSArIDEpICUgc2l6ZTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9
IChvbGRTZWxlY3Rpb24gKyAxKSAlIHNpemU7CiAgICAgfSBlbHNlCiAgICAgICAgIG5ld1NlbGVj
dGlvbiA9IChkaXJlY3Rpb24gPT0gIlVwIikgPyAoc2l6ZSAtIDEpIDogMDsKIAotICAgIFtfdGFi
bGUgc2V0QWN0aXZlUm93Om5ld1NlbGVjdGlvbl07CisgICAgW190YWJsZSBzZWxlY3RSb3dJbmRl
eGVzOltOU0luZGV4U2V0IGluZGV4U2V0V2l0aEluZGV4Om5ld1NlbGVjdGlvbl0gYnlFeHRlbmRp
bmdTZWxlY3Rpb246Tk9dOwogfQogCiAtICh2b2lkKWludmFsaWRhdGUKQEAgLTM4MCwxNiArMzU2
LDE3IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpjbG9zZSgpCiAK
ICAgICBfdGFibGUgPSBuaWw7CiAKLSAgICBbW192aWV3IHdpbmRvd10gcmVtb3ZlQ2hpbGRXaW5k
b3c6X2VuY2xvc2luZ1dpbmRvdy5nZXQoKV07CisgICAgW1tfcHJlc2VudGluZ1ZpZXcgd2luZG93
XSByZW1vdmVDaGlsZFdpbmRvdzpfZW5jbG9zaW5nV2luZG93LmdldCgpXTsKICAgICBbX2VuY2xv
c2luZ1dpbmRvdyBjbG9zZV07CiAgICAgX2VuY2xvc2luZ1dpbmRvdyA9IG5pbDsKIH0KIAogLSAo
TlNSZWN0KWRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JilyZWN0CiB7Ci0gICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBbW192aWV3IHdpbmRvd10gY29udmVy
dFJlY3RUb1NjcmVlbjpbX3ZpZXcgY29udmVydFJlY3Q6cmVjdCB0b1ZpZXc6bmlsXV07Ci0gICAg
Q0dGbG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihfc3VnZ2VzdGlvbnMuc2l6ZSgpLCBkcm9wZG93bk1h
eFN1Z2dlc3Rpb25zKSAqIGRyb3Bkb3duUm93SGVpZ2h0OwotICAgIHJldHVybiBOU01ha2VSZWN0
KE5TTWluWCh3aW5kb3dSZWN0KSAtIGRyb3Bkb3duU2hhZG93SGVpZ2h0LCBOU01pblkod2luZG93
UmVjdCkgLSBoZWlnaHQgLSBkcm9wZG93blNoYWRvd0hlaWdodCAtIGRyb3Bkb3duVG9wTWFyZ2lu
LCByZWN0LndpZHRoKCkgKyBkcm9wZG93blNoYWRvd0hlaWdodCAqIDIsIGhlaWdodCArIGRyb3Bk
b3duU2hhZG93SGVpZ2h0KTsKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtbX3ByZXNlbnRpbmdW
aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbX3ByZXNlbnRpbmdWaWV3IGNvbnZlcnRS
ZWN0OnJlY3QgdG9WaWV3Om5pbF1dOworICAgIGF1dG8gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCA9
IHN0ZDo6bWluKF9zdWdnZXN0aW9ucy5zaXplKCksIGRyb3Bkb3duTWF4U3VnZ2VzdGlvbnMpOwor
ICAgIENHRmxvYXQgaGVpZ2h0ID0gdmlzaWJsZVN1Z2dlc3Rpb25Db3VudCAqIChkcm9wZG93blJv
d0hlaWdodCArIFtfdGFibGUgaW50ZXJjZWxsU3BhY2luZ10uaGVpZ2h0KSArIChkcm9wZG93blZl
cnRpY2FsUGFkZGluZyAqIDIpOworICAgIHJldHVybiBOU01ha2VSZWN0KE5TTWluWCh3aW5kb3dS
ZWN0KSwgTlNNaW5ZKHdpbmRvd1JlY3QpIC0gaGVpZ2h0IC0gZHJvcGRvd25Ub3BNYXJnaW4sIHJl
Y3Qud2lkdGgoKSwgaGVpZ2h0KTsKIH0KIAogLSAodm9pZClzaG93U3VnZ2VzdGlvbnNEcm9wZG93
bjooV2ViS2l0OjpXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMqKWRyb3Bkb3duCkBA
IC0zOTcsNyArMzc0LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWM6
OmNsb3NlKCkKICAgICBfZHJvcGRvd24gPSBkcm9wZG93bjsKICAgICBbW19lbmNsb3NpbmdXaW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6W190YWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3XV07
CiAgICAgW190YWJsZSByZWxvYWRdOwotICAgIFtbX3ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRv
dzpfZW5jbG9zaW5nV2luZG93LmdldCgpIG9yZGVyZWQ6TlNXaW5kb3dBYm92ZV07CisgICAgW1tf
cHJlc2VudGluZ1ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRvdzpfZW5jbG9zaW5nV2luZG93Lmdl
dCgpIG9yZGVyZWQ6TlNXaW5kb3dBYm92ZV07CiAgICAgW1tfdGFibGUgZW5jbG9zaW5nU2Nyb2xs
Vmlld10gZmxhc2hTY3JvbGxlcnNdOwogfQogCkBAIC00MTYsMjAgKzM5MywyMSBAQCB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYzo6Y2xvc2UoKQogICAgIHJldHVybiBkcm9w
ZG93blJvd0hlaWdodDsKIH0KIAorLSAoTlNUYWJsZVJvd1ZpZXcgKil0YWJsZVZpZXc6KE5TVGFi
bGVWaWV3ICopdGFibGVWaWV3IHJvd1ZpZXdGb3JSb3c6KE5TSW50ZWdlcilyb3cKK3sKKyAgICBy
ZXR1cm4gW1tbV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVJvd1ZpZXcgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXTsKK30KKwogLSAoTlNWaWV3ICopdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRh
YmxlVmlldyB2aWV3Rm9yVGFibGVDb2x1bW46KE5TVGFibGVDb2x1bW4gKil0YWJsZUNvbHVtbiBy
b3c6KE5TSW50ZWdlcilyb3cKIHsKLSAgICBXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgKnJlc3Vs
dCA9IFt0YWJsZVZpZXcgbWFrZVZpZXdXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJldXNl
SWRlbnRpZmllciBvd25lcjpzZWxmXTsKKyAgICBXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXcgKnJl
c3VsdCA9IFt0YWJsZVZpZXcgbWFrZVZpZXdXaXRoSWRlbnRpZmllcjpzdWdnZXN0aW9uQ2VsbFJl
dXNlSWRlbnRpZmllciBvd25lcjpzZWxmXTsKIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAg
IHJlc3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIHRhYmxlVmlldy5mcmFtZS5zaXplLndpZHRoLCBkcm9wZG93blJv
d0hlaWdodCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVzdWx0ID0gW1tbV0tEYXRhTGlzdFN1
Z2dlc3Rpb25WaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgdGFibGVW
aWV3LmZyYW1lLnNpemUud2lkdGgsIGRyb3Bkb3duUm93SGVpZ2h0KV0gYXV0b3JlbGVhc2VdOwog
ICAgICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZp
ZXJdOwogICAgIH0KIAotICAgIFtyZXN1bHQgc2V0VGV4dDpfc3VnZ2VzdGlvbnMuYXQocm93KV07
Ci0KLSAgICBPcHRpb25hbDxzaXplX3Q+IGN1cnJlbnRBY3RpdmVSb3cgPSBbX3RhYmxlIGN1cnJl
bnRBY3RpdmVSb3ddOwotICAgIGlmIChjdXJyZW50QWN0aXZlUm93ICYmIHN0YXRpY19jYXN0PHNp
emVfdD4ocm93KSA9PSBjdXJyZW50QWN0aXZlUm93LnZhbHVlKCkpCi0gICAgICAgIHJlc3VsdC5h
Y3RpdmUgPSBZRVM7CisgICAgcmVzdWx0LnRleHQgPSBfc3VnZ2VzdGlvbnMuYXQocm93KTsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378344</attachid>
            <date>2019-09-08 19:05:37 -0700</date>
            <delta_ts>2019-09-23 15:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199350-20190908190537.patch</filename>
            <type>text/plain</type>
            <size>23192</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg1ZmZlMTc5OWNmODdlYzkw
MDZhYTRiMzRkOGU2NmI5ZmRkZTFlYTQuLjQ3MWFkMzY2N2FiZWRlZWQ0YzdlNjkyYmU4N2Y4OGJl
OWE4ZTI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTktMDktMDggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgbWFjT1M6IDxkYXRhbGlz
dD4gZHJvcGRvd24gc2hhZG93IGlzIGNyb3BwZWQsIGxvb2tzIG5vdGhpbmcgbGlrZSBOU0NvbWJv
Qm94CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTkz
NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBy
b3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBtYWNPUyA8ZGF0YWxpc3Q+IGRyb3Bkb3duLCBhZG9w
dGluZyB0aGUKKyAgICAgICAgcm91bmRseS1jb3JuZXJlZCBhbmQgYmFja2Ryb3AtZnVsIGFwcGVh
cmFuY2Ugb2YgdGhlIGN1cnJlbnQgTlNDb21ib0JveCBzdHlsZS4KKworICAgICAgICBVc2UgdGhl
IHByb3BlciB3aW5kb3cgc2hhZG93IGluc3RlYWQgb2Ygb3VyIG93biBpbnNpZGUgdGhlIHdpbmRv
dywgYm90aAorICAgICAgICBzbyB0aGF0IHdlIG1hdGNoIHRoZSBzeXN0ZW0gYW5kIHNvIHRoYXQg
aXQgZG9lc24ndCBnZXQgY2xpcHBlZC4KKworICAgICAgICBBbGxvdyB2ZXJ0aWNhbCBydWJiZXIt
YmFuZGluZywgYmVjYXVzZSBOU0NvbWJvQm94IGRvZXMuCisKKyAgICAgICAgRG9uJ3QgaGlnaGxp
Z2h0IG9uIGhvdmVyLCBiZWNhdXNlIE5TQ29tYm9Cb3ggZG9lc24ndC4gRG8gdXNlIE5TVGFibGVW
aWV3J3MKKyAgICAgICAgc2VsZWN0aW9uIG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHJvbGxpbmcgb3Vy
IG93biBmb3IgaGlnaGxpZ2h0cyBkcml2ZW4gYnkKKyAgICAgICAga2V5Ym9hcmQtYmFzZWQgbmF2
aWdhdGlvbi4KKworICAgICAgICBNYWtlIHVzZSBvZiBOU1RhYmxlQ2VsbFZpZXcsIHNpbmNlIGl0
IGhhcyBzb21lIHNtYXJ0cyBhcm91bmQgcGl4ZWwgYWxpZ25tZW50CisgICAgICAgIHRoYXQgd2Ug
ZG9uJ3QgbmVlZCB0byBkdXBsaWNhdGUgKGFuZCB0aGluZ3MgYXJlIGJsdXJyeSBvbiAxeCBkaXNw
bGF5cyB3aXRob3V0KS4KKworICAgICAgICBBbHNvIHJlbmFtZSBzb21lIGNsYXNzZXMgdG8gbWFr
ZSBpdCBhIGJpdCBtb3JlIGNsZWFyIHdoYXQncyBnb2luZyBvbjoKKyAgICAgICAgV0tEYXRhTGlz
dFN1Z2dlc3Rpb25DZWxsIC0+IFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyAoaXQncyBhIE5TVmll
dywgbm90IGFuIE5TQ2VsbCkKKyAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyAtPiBX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNDb250cm9sbGVyIChpdCdzIG5vdCBhIHZpZXcgYXQgYWxsKQor
CisgICAgICAgICogUGxhdGZvcm0vc3BpL21hYy9BcHBLaXRTUEkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cgaW5pdFdpdGhDb250ZW50UmVjdDpzdHls
ZU1hc2s6YmFja2luZzpkZWZlcjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25X
aW5kb3cgY2FuQmVjb21lS2V5V2luZG93XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0
aW9uV2luZG93IGhhc0tleUFwcGVhcmFuY2VdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25XaW5kb3cgc2hhZG93T3B0aW9uc10pOgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2Vz
dGlvblZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25WaWV3IHNldFRleHQ6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBz
ZXRCYWNrZ3JvdW5kU3R5bGU6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFi
bGVSb3dWaWV3IGRyYXdTZWxlY3Rpb25JblJlY3Q6XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uVGFibGVWaWV3IGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6CisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGxheW91dF0pOgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvblRhYmxlVmlldyByZWxvYWRdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1
Z2dlc3Rpb25zQ29udHJvbGxlciBpbml0V2l0aEluZm9ybWF0aW9uOmluVmlldzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBjdXJyZW50U2VsZWN0ZWRTdHJp
bmddKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB1cGRhdGVX
aXRoSW5mb3JtYXRpb246XSk6CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRy
b2xsZXIgbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXS0RhdGFMaXN0
U3VnZ2VzdGlvbnNDb250cm9sbGVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDpdKToKKyAg
ICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciBzaG93U3VnZ2VzdGlvbnNE
cm9wZG93bjpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zQ29udHJvbGxlciB0
YWJsZVZpZXc6cm93Vmlld0ZvclJvdzpdKToKKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rp
b25zQ29udHJvbGxlciB0YWJsZVZpZXc6dmlld0ZvclRhYmxlQ29sdW1uOnJvdzpdKToKKyAgICAg
ICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGluaXRXaXRoRnJhbWU6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBzZXRUZXh0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgc2V0QWN0aXZlOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgZHJhd1JlY3Q6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUVudGVyZWQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbCBtb3VzZUV4
aXRlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIGFj
Y2VwdHNGaXJzdFJlc3BvbmRlcl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3Vn
Z2VzdGlvblRhYmxlIGluaXRXaXRoRWxlbWVudFJlY3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgc2V0VmlzaWJsZVJlY3Q6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgY3VycmVudEFjdGl2ZVJvd10pOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIHNldEFjdGl2ZVJv
dzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSByZWxv
YWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSBhY2Nl
cHRzRmlyc3RSZXNwb25kZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dl
c3Rpb25UYWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
RGF0YUxpc3RTdWdnZXN0aW9uVGFibGUgcmVtb3ZlRnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5n
RGlzcGxheV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IGluaXRXaXRoSW5mb3JtYXRpb246aW5WaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0Rh
dGFMaXN0U3VnZ2VzdGlvbnNWaWV3IGN1cnJlbnRTZWxlY3RlZFN0cmluZ10pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHVwZGF0ZVdpdGhJbmZvcm1hdGlv
bjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBtb3Zl
U2VsZWN0aW9uQnlEaXJlY3Rpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLRGF0YUxpc3RT
dWdnZXN0aW9uc1ZpZXcgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFM
aXN0U3VnZ2VzdGlvbnNWaWV3IGRyb3Bkb3duUmVjdEZvckVsZW1lbnRSZWN0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHNob3dTdWdnZXN0aW9uc0Ry
b3Bkb3duOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3
IHNlbGVjdGVkUm93Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0RhdGFMaXN0U3VnZ2VzdGlv
bnNWaWV3IG51bWJlck9mUm93c0luVGFibGVWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0RhdGFMaXN0U3VnZ2VzdGlvbnNWaWV3IHRhYmxlVmlldzpoZWlnaHRPZlJvdzpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyB0YWJsZVZpZXc6dmlld0Zv
clRhYmxlQ29sdW1uOnJvdzpdKTogRGVsZXRlZC4KKwogMjAxOS0wOS0wNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvQXBwS2l0U1BJ
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9tYWMvQXBwS2l0U1BJLmgKaW5kZXggZjMw
NWQ1MTU0MTIwMDA0M2E2ZDdkZTI1OTJlZjIwNDFiOTRmMDQ5OS4uNDM0YjExMGYwYzNjNjY0ZmVm
ZDRjNGM1NDY4MzZjNDUzNjgyM2M4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvbWFjL0FwcEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL21h
Yy9BcHBLaXRTUEkuaApAQCAtNDIsMTcgKzQyLDIyIEBACiBAcHJvdG9jb2wgTlNUZXh0SW5wdXRD
bGllbnRfQXN5bmMKIEBlbmQKIAotQGludGVyZmFjZSBOU1dpbmRvdyAoTlNJbnNwZWN0b3JCYXJT
dXBwb3J0KQordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIE5TV2luZG93U2hhZG93T3B0
aW9ucykgeworICAgIE5TV2luZG93U2hhZG93U2Vjb25kYXJ5V2luZG93ID0gMHgyLAorfTsKKwor
QGludGVyZmFjZSBOU1dpbmRvdyAoKQogLSAoTlNJbnNwZWN0b3JCYXIgKilpbnNwZWN0b3JCYXI7
CiAtICh2b2lkKXNldEluc3BlY3RvckJhcjooTlNJbnNwZWN0b3JCYXIgKiliYXI7Ci1AZW5kCisK
K0Bwcm9wZXJ0eSAocmVhZG9ubHkpIE5TV2luZG93U2hhZG93T3B0aW9ucyBzaGFkb3dPcHRpb25z
OwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTQwMAotQGludGVy
ZmFjZSBOU1dpbmRvdyAoRnVsbFNjcmVlblN1cHBvcnQpCiBAcHJvcGVydHkgQ0dGbG9hdCB0aXRs
ZWJhckFscGhhVmFsdWU7Ci1AZW5kCiAjZW5kaWYKIAorQGVuZAorCiAjZW5kaWYKIAogQGludGVy
ZmFjZSBOU0luc3BlY3RvckJhciAoSVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd25NYWMubW0K
aW5kZXggYmVkZDE2NGY3MWI2ODM1NzdlNTlhNGM0Yzg5NjNiNzM3ZTkwMzZjYy4uNWQwMmU0YjUy
NjliMmVkMGNjNjdhODIzOWMyMTI4YTlhNDdjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duTWFjLm1tCkBAIC0yOCw1MiArMjgsMzEgQEAKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKSAmJiBVU0UoQVBQS0lUKQogCisjaW1wb3J0ICJBcHBLaXRTUEkuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNDb2xvclNQ
SS5oPgogCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9IDI7CitzdGF0
aWMgY29uc3QgQ0dGbG9hdCBkcm9wZG93blRvcE1hcmdpbiA9IDM7CitzdGF0aWMgY29uc3QgQ0dG
bG9hdCBkcm9wZG93blZlcnRpY2FsUGFkZGluZyA9IDQ7CiBzdGF0aWMgY29uc3QgQ0dGbG9hdCBk
cm9wZG93blJvd0hlaWdodCA9IDIwOwotc3RhdGljIGNvbnN0IENHRmxvYXQgZHJvcGRvd25TaGFk
b3dIZWlnaHQgPSA1Owotc3RhdGljIGNvbnN0IENHRmxvYXQgZHJvcGRvd25TaGFkb3dCbHVyUmFk
aXVzID0gMzsKIHN0YXRpYyBjb25zdCBzaXplX3QgZHJvcGRvd25NYXhTdWdnZXN0aW9ucyA9IDY7
Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBzdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9
IEAiV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHN1
Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyID0gQCJXS0RhdGFMaXN0U3VnZ2VzdGlvblZpZXci
OwogCiBAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IDogTlNXaW5kb3cKIEBl
bmQKIAotQGludGVyZmFjZSBXS0RhdGFMaXN0U3VnZ2VzdGlvbkNlbGwgOiBOU1ZpZXcgewotICAg
IFJldGFpblB0cjxOU1RleHRGaWVsZD4gX3RleHRGaWVsZDsKLSAgICBCT09MIF9tb3VzZUlzT3Zl
cjsKLSAgICBCT09MIF9hY3RpdmU7Ci19Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IEJPT0wgYWN0aXZlOwotCi0tICh2b2lkKXNldFRleHQ6KE5TU3RyaW5nICopdGV4dDsKK0BpbnRl
cmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3IDogTlNUYWJsZUNlbGxWaWV3CiBAZW5kCiAK
LUBpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZSA6IE5TVGFibGVWaWV3IHsKLSAg
ICBSZXRhaW5QdHI8TlNTY3JvbGxWaWV3PiBfZW5jbG9zaW5nU2Nyb2xsVmlldzsKLSAgICBPcHRp
b25hbDxzaXplX3Q+IF9hY3RpdmVSb3c7Ci19CitAaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0
aW9uVGFibGVSb3dWaWV3IDogTlNUYWJsZVJvd1ZpZXcKK0BlbmQKIAotLSAoaWQpaW5pdFdpdGhF
bGVtZW50UmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpcmVjdDsKLS0gKHZvaWQpc2V0Vmlz
aWJsZVJlY3Q6KE5TUmVjdClyZWN0OwotLSAodm9pZClzZXRBY3RpdmVSb3c6KHNpemVfdClyb3c7
Ci0tIChPcHRpb25hbDxzaXplX3Q+KWN1cnJlbnRBY3RpdmVSb3c7Ci0tICh2b2lkKXJlbG9hZDsK
K0BpbnRlcmZhY2UgV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgOiBOU1RhYmxlVmlldwog
QGVuZAogCi1AaW50ZXJmYWNlIFdLRGF0YUxpc3RTdWdnZXN0aW9uc1ZpZXcgOiBOU09iamVjdDxO
U1RhYmxlVmlld0RhdGFTb3VyY2UsIE5TVGFibGVWaWV3RGVsZWdhdGU+IHsKLUBwcml2YXRlCi0g
ICAgUmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGU+IF90YWJsZTsKLSAgICBXZWJL
aXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYyogX2Ryb3Bkb3duOwotICAgIFZl
Y3RvcjxTdHJpbmc+IF9zdWdnZXN0aW9uczsKLSAgICBOU1ZpZXcgKl92aWV3OwotICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gX2VuY2xvc2luZ1dpbmRvdzsKLX0KK0BpbnRlcmZhY2UgV0tEYXRhTGlz
dFN1Z2dlc3Rpb25zQ29udHJvbGxlciA6IE5TT2JqZWN0PE5TVGFibGVWaWV3RGF0YVNvdXJjZSwg
TlNUYWJsZVZpZXdEZWxlZ2F0ZT4KIAogLSAoaWQpaW5pdFdpdGhJbmZvcm1hdGlvbjooV2ViQ29y
ZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24mJilpbmZvcm1hdGlvbiBpblZpZXc6KE5T
VmlldyAqKXZpZXc7CiAtICh2b2lkKXNob3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6Oldl
YkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYyopZHJvcGRvd247CkBAIC04Miw2ICs2MSw3
IEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvbkJ5RGlyZWN0aW9uOihjb25zdCBTdHJpbmcmKWRpcmVj
dGlvbjsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogLSAoU3RyaW5nKWN1cnJlbnRTZWxlY3RlZFN0
cmluZzsKKwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwNiw3ICs4Niw3IEBAIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjOjpzaG93KFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Ry
b3Bkb3duVUkgPSBhZG9wdE5TKFtbV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldyBhbGxvY10gaW5p
dFdpdGhJbmZvcm1hdGlvbjpXVEZNb3ZlKGluZm9ybWF0aW9uKSBpblZpZXc6bV92aWV3XSk7Cisg
ICAgbV9kcm9wZG93blVJID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoSW5mb3JtYXRpb246V1RGTW92ZShpbmZvcm1hdGlvbikgaW5WaWV3
Om1fdmlld10pOwogICAgIFttX2Ryb3Bkb3duVUkgc2hvd1N1Z2dlc3Rpb25zRHJvcGRvd246dGhp
c107CiB9CiAKQEAgLTE0OCw3OCArMTI4LDc4IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
c0Ryb3Bkb3duTWFjOjpjbG9zZSgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1AaW1wbGVt
ZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25XaW5kb3cKLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uQ2VsbAotCi1Ac3ludGhlc2l6ZSBhY3RpdmU9X2FjdGl2
ZTsKK0BpbXBsZW1lbnRhdGlvbiBXS0RhdGFMaXN0U3VnZ2VzdGlvbldpbmRvdyB7CisgICAgUmV0
YWluUHRyPE5TVmlzdWFsRWZmZWN0Vmlldz4gX2JhY2tkcm9wVmlldzsKK30KIAotLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdAorLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDoo
TlNSZWN0KWNvbnRlbnRSZWN0IHN0eWxlTWFzazooTlNVSW50ZWdlcilzdHlsZU1hc2sgYmFja2lu
ZzooTlNCYWNraW5nU3RvcmVUeXBlKWJhY2tpbmdTdG9yZVR5cGUgZGVmZXI6KEJPT0wpZGVmZXIK
IHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XSkpCi0g
ICAgICAgIHJldHVybiBzZWxmOworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhDb250ZW50UmVj
dDpjb250ZW50UmVjdCBzdHlsZU1hc2s6c3R5bGVNYXNrIGJhY2tpbmc6YmFja2luZ1N0b3JlVHlw
ZSBkZWZlcjpkZWZlcl07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgX3RleHRGaWVsZCA9IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdF0pOwotICAg
IFtfdGV4dEZpZWxkIHNldEVkaXRhYmxlOk5PXTsKLSAgICBbX3RleHRGaWVsZCBzZXRCZXplbGVk
Ok5PXTsKLSAgICBbX3RleHRGaWVsZCBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29sb3IgY2xlYXJD
b2xvcl1dOwotICAgIFtzZWxmIGFkZFN1YnZpZXc6X3RleHRGaWVsZC5nZXQoKV07CisgICAgc2Vs
Zi5oYXNTaGFkb3cgPSBZRVM7CiAKLSAgICBbc2VsZiBzZXRJZGVudGlmaWVyOkAiV0tEYXRhTGlz
dFN1Z2dlc3Rpb25DZWxsIl07CisgICAgX2JhY2tkcm9wVmlldyA9IFtbTlNWaXN1YWxFZmZlY3RW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmNvbnRlbnRSZWN0XTsKKyAgICBbX2JhY2tkcm9wVmll
dyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNp
emFibGVdOworICAgIFtfYmFja2Ryb3BWaWV3IHNldE1hdGVyaWFsOk5TVmlzdWFsRWZmZWN0TWF0
ZXJpYWxNZW51XTsKKyAgICBbX2JhY2tkcm9wVmlldyBzZXRTdGF0ZTpOU1Zpc3VhbEVmZmVjdFN0
YXRlQWN0aXZlXTsKKyAgICBbX2JhY2tkcm9wVmlldyBzZXRCbGVuZGluZ01vZGU6TlNWaXN1YWxF
ZmZlY3RCbGVuZGluZ01vZGVCZWhpbmRXaW5kb3ddOwogCi0gICAgW3NlbGYgYWRkVHJhY2tpbmdS
ZWN0OnNlbGYuYm91bmRzIG93bmVyOnNlbGYgdXNlckRhdGE6bmlsIGFzc3VtZUluc2lkZTpOT107
CisgICAgW3NlbGYgc2V0Q29udGVudFZpZXc6X2JhY2tkcm9wVmlldy5nZXQoKV07CiAKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClzZXRUZXh0OihOU1N0cmluZyAqKXRleHQKKy0gKEJP
T0wpY2FuQmVjb21lS2V5V2luZG93CiB7Ci0gICAgW190ZXh0RmllbGQgc2V0U3RyaW5nVmFsdWU6
dGV4dF07Ci0gICAgW190ZXh0RmllbGQgc2l6ZVRvRml0XTsKLQotICAgIE5TUmVjdCB0ZXh0Rmll
bGRGcmFtZSA9IFtfdGV4dEZpZWxkIGZyYW1lXTsKLSAgICBbX3RleHRGaWVsZCBzZXRGcmFtZTpO
U01ha2VSZWN0KDAsIChOU0hlaWdodChzZWxmLmZyYW1lKSAtIE5TSGVpZ2h0KHRleHRGaWVsZEZy
YW1lKSkgLyAyLCBOU1dpZHRoKHRleHRGaWVsZEZyYW1lKSwgTlNIZWlnaHQodGV4dEZpZWxkRnJh
bWUpKV07CisgICAgcmV0dXJuIE5POworfQogCi0gICAgX21vdXNlSXNPdmVyID0gTk87Ci0gICAg
c2VsZi5hY3RpdmUgPSBOTzsKKy0gKEJPT0wpaGFzS2V5QXBwZWFyYW5jZQoreworICAgIHJldHVy
biBZRVM7CiB9CiAKLS0gKHZvaWQpc2V0QWN0aXZlOihCT09MKXNob3VsZEFjdGl2YXRlCistIChO
U1dpbmRvd1NoYWRvd09wdGlvbnMpc2hhZG93T3B0aW9ucwogewotICAgIF9hY3RpdmUgPSBzaG91
bGRBY3RpdmF0ZTsKLSAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICByZXR1cm4g
TlNXaW5kb3dTaGFkb3dTZWNvbmRhcnlXaW5kb3c7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyB7CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxk
PiBfdGV4dEZpZWxkOwogfQogCi0tICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpZGlydHlSZWN0Cist
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0CiB7Ci0gICAgaWYgKHNlbGYuYWN0
aXZlKSB7Ci0gICAgICAgIFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0g
c2V0RmlsbF07Ci0gICAgICAgIFtfdGV4dEZpZWxkIHNldFRleHRDb2xvcjpbTlNDb2xvciBhbHRl
cm5hdGVTZWxlY3RlZENvbnRyb2xUZXh0Q29sb3JdXTsKLSAgICB9IGVsc2UgaWYgKF9tb3VzZUlz
T3ZlcikgewotICAgICAgICBbW05TQ29sb3IgcXVhdGVybmFyeUxhYmVsQ29sb3JdIHNldEZpbGxd
OwotICAgICAgICBbX3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4dENvbG9yXV07
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW1tOU0NvbG9yIGNvbnRyb2xCYWNrZ3JvdW5kQ29sb3Jd
IHNldEZpbGxdOwotICAgICAgICBbX3RleHRGaWVsZCBzZXRUZXh0Q29sb3I6W05TQ29sb3IgdGV4
dENvbG9yXV07Ci0gICAgfQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpm
cmFtZVJlY3RdKSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CiAKLSAgICBOU1JlY3RGaWxsKGRpcnR5
UmVjdCk7Ci0gICAgW3N1cGVyIGRyYXdSZWN0OmRpcnR5UmVjdF07CisgICAgX3RleHRGaWVsZCA9
IGFkb3B0TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdKTsK
KyAgICBzZWxmLnRleHRGaWVsZCA9IF90ZXh0RmllbGQuZ2V0KCk7CisKKyAgICBbc2VsZiBhZGRT
dWJ2aWV3OnNlbGYudGV4dEZpZWxkXTsKKworICAgIHNlbGYuaWRlbnRpZmllciA9IHN1Z2dlc3Rp
b25DZWxsUmV1c2VJZGVudGlmaWVyOworICAgIHNlbGYudGV4dEZpZWxkLmVkaXRhYmxlID0gTk87
CisgICAgc2VsZi50ZXh0RmllbGQuYmV6ZWxlZCA9IE5POworICAgIHNlbGYudGV4dEZpZWxkLmZv
bnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOjBdOworICAgIHNlbGYudGV4dEZpZWxkLmRyYXdz
QmFja2dyb3VuZCA9IE5POworCisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpbW91c2VF
bnRlcmVkOihOU0V2ZW50ICopZXZlbnQKKy0gKHZvaWQpc2V0VGV4dDooTlNTdHJpbmcgKil0ZXh0
CiB7Ci0gICAgW3N1cGVyIG1vdXNlRW50ZXJlZDpldmVudF07Ci0gICAgX21vdXNlSXNPdmVyID0g
WUVTOwotICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheTpZRVNdOworICAgIHNlbGYudGV4dEZpZWxk
LnN0cmluZ1ZhbHVlID0gdGV4dDsKIH0KIAotLSAodm9pZCltb3VzZUV4aXRlZDooTlNFdmVudCAq
KWV2ZW50CistICh2b2lkKXNldEJhY2tncm91bmRTdHlsZTooTlNCYWNrZ3JvdW5kU3R5bGUpYmFj
a2dyb3VuZFN0eWxlCiB7Ci0gICAgW3N1cGVyIG1vdXNlRXhpdGVkOmV2ZW50XTsKLSAgICBfbW91
c2VJc092ZXIgPSBOTzsKLSAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXk6WUVTXTsKKyAgICBbc3Vw
ZXIgc2V0QmFja2dyb3VuZFN0eWxlOmJhY2tncm91bmRTdHlsZV07CisgICAgc2VsZi50ZXh0Rmll
bGQudGV4dENvbG9yID0gYmFja2dyb3VuZFN0eWxlID09IE5TQmFja2dyb3VuZFN0eWxlTGlnaHQg
PyBbTlNDb2xvciB0ZXh0Q29sb3JdIDogW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9s
VGV4dENvbG9yXTsKIH0KIAogLSAoQk9PTClhY2NlcHRzRmlyc3RSZXNwb25kZXIKQEAgLTIyOSwx
NiArMjA5LDI4IEBAIC0gKEJPT0wpYWNjZXB0c0ZpcnN0UmVzcG9uZGVyCiAKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGUKK0BpbXBsZW1lbnRhdGlvbiBX
S0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlUm93VmlldworCistICh2b2lkKWRyYXdTZWxlY3Rpb25J
blJlY3Q6KE5TUmVjdClkaXJ0eVJlY3QKK3sKKyAgICBbc2VsZiBzZXRFbXBoYXNpemVkOllFU107
CisgICAgW3N1cGVyIGRyYXdTZWxlY3Rpb25JblJlY3Q6ZGlydHlSZWN0XTsKK30KKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25UYWJsZVZpZXcgeworICAgIFJl
dGFpblB0cjxOU1Njcm9sbFZpZXc+IF9lbmNsb3NpbmdTY3JvbGxWaWV3OworfQogCiAtIChpZClp
bml0V2l0aEVsZW1lbnRSZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JilyZWN0CiB7CiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgcmVjdC53
aWR0aCgpLCAwKV0pKQogICAgICAgICByZXR1cm4gc2VsZjsKIAotICAgIFtzZWxmIHNldEludGVy
Y2VsbFNwYWNpbmc6TlNaZXJvU2l6ZV07CiAgICAgW3NlbGYgc2V0SGVhZGVyVmlldzpuaWxdOwot
ICAgIFtzZWxmIHNldFNlbGVjdGlvbkhpZ2hsaWdodFN0eWxlOk5TVGFibGVWaWV3U2VsZWN0aW9u
SGlnaGxpZ2h0U3R5bGVOb25lXTsKKyAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6W05TQ29s
b3IgY2xlYXJDb2xvcl1dOworICAgIFtzZWxmIHNldEludGVyY2VsbFNwYWNpbmc6TlNNYWtlU2l6
ZSgwLCBzZWxmLmludGVyY2VsbFNwYWNpbmcuaGVpZ2h0KV07CiAKICAgICBhdXRvIGNvbHVtbiA9
IGFkb3B0TlMoW1tOU1RhYmxlQ29sdW1uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbHVtbiBzZXRX
aWR0aDpyZWN0LndpZHRoKCldOwpAQCAtMjQ2LDQ4ICsyMzgsMjQgQEAgLSAoaWQpaW5pdFdpdGhF
bGVtZW50UmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpcmVjdAogCiAgICAgX2VuY2xvc2lu
Z1Njcm9sbFZpZXcgPSBhZG9wdE5TKFtbTlNTY3JvbGxWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAg
W19lbmNsb3NpbmdTY3JvbGxWaWV3IHNldEhhc1ZlcnRpY2FsU2Nyb2xsZXI6WUVTXTsKLSAgICBb
X2VuY2xvc2luZ1Njcm9sbFZpZXcgc2V0VmVydGljYWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xs
RWxhc3RpY2l0eU5vbmVdOworICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXRWZXJ0aWNhbFNj
cm9sbEVsYXN0aWNpdHk6TlNTY3JvbGxFbGFzdGljaXR5QWxsb3dlZF07CiAgICAgW19lbmNsb3Np
bmdTY3JvbGxWaWV3IHNldEhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5Ok5TU2Nyb2xsRWxhc3Rp
Y2l0eU5vbmVdOwogICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXREb2N1bWVudFZpZXc6c2Vs
Zl07Ci0KLSAgICBhdXRvIGRyb3BTaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGlu
aXRdKTsKLSAgICBbZHJvcFNoYWRvdyBzZXRTaGFkb3dDb2xvcjpbTlNDb2xvciBzeXN0ZW1HcmF5
Q29sb3JdXTsKLSAgICBbZHJvcFNoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZSgwLCBk
cm9wZG93blNoYWRvd0hlaWdodCldOwotICAgIFtkcm9wU2hhZG93IHNldFNoYWRvd0JsdXJSYWRp
dXM6ZHJvcGRvd25TaGFkb3dCbHVyUmFkaXVzXTsKLSAgICBbX2VuY2xvc2luZ1Njcm9sbFZpZXcg
c2V0V2FudHNMYXllcjpZRVNdOwotICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXRTaGFkb3c6
ZHJvcFNoYWRvdy5nZXQoKV07CisgICAgW19lbmNsb3NpbmdTY3JvbGxWaWV3IHNldERyYXdzQmFj
a2dyb3VuZDpOT107CisgICAgW1tfZW5jbG9zaW5nU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2V0
QXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzOk5PXTsKKyAgICBbW19lbmNsb3NpbmdT
Y3JvbGxWaWV3IGNvbnRlbnRWaWV3XSBzZXRDb250ZW50SW5zZXRzOk5TRWRnZUluc2V0c01ha2Uo
ZHJvcGRvd25WZXJ0aWNhbFBhZGRpbmcsIDAsIGRyb3Bkb3duVmVydGljYWxQYWRkaW5nLCAwKV07
CisgICAgW1tfZW5jbG9zaW5nU2Nyb2xsVmlldyBjb250ZW50Vmlld10gc2Nyb2xsVG9Qb2ludDpO
U01ha2VQb2ludCgwLCAtZHJvcGRvd25WZXJ0aWNhbFBhZGRpbmcpXTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQogCi0tICh2b2lkKXNldFZpc2libGVSZWN0OihOU1JlY3QpcmVjdAotewotICAgIFtz
ZWxmIHNldEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChyZWN0KSAtIGRyb3Bkb3duU2hh
ZG93SGVpZ2h0ICogMiwgMCldOwotICAgIFtfZW5jbG9zaW5nU2Nyb2xsVmlldyBzZXRGcmFtZTpO
U01ha2VSZWN0KGRyb3Bkb3duU2hhZG93SGVpZ2h0LCBkcm9wZG93blNoYWRvd0hlaWdodCwgTlNX
aWR0aChyZWN0KSAtIGRyb3Bkb3duU2hhZG93SGVpZ2h0ICogMiwgTlNIZWlnaHQocmVjdCkgLSBk
cm9wZG93blNoYWRvd0hlaWdodCldOwotfQotCi0tIChPcHRpb25hbDxzaXplX3Q+KWN1cnJlbnRB
Y3RpdmVSb3cKLXsKLSAgICByZXR1cm4gX2FjdGl2ZVJvdzsKLX0KLQotLSAodm9pZClzZXRBY3Rp
dmVSb3c6KHNpemVfdClyb3cKKy0gKHZvaWQpbGF5b3V0CiB7Ci0gICAgaWYgKF9hY3RpdmVSb3cp
IHsKLSAgICAgICAgV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsICpvbGRDZWxsID0gKFdLRGF0YUxp
c3RTdWdnZXN0aW9uQ2VsbCAqKVtzZWxmIHZpZXdBdENvbHVtbjowIHJvdzpfYWN0aXZlUm93LnZh
bHVlKCkgbWFrZUlmTmVjZXNzYXJ5Ok5PXTsKLSAgICAgICAgb2xkQ2VsbC5hY3RpdmUgPSBOTzsK
LSAgICB9Ci0KLSAgICBbc2VsZiBzY3JvbGxSb3dUb1Zpc2libGU6cm93XTsKLSAgICBXS0RhdGFM
aXN0U3VnZ2VzdGlvbkNlbGwgKm5ld0NlbGwgPSAoV0tEYXRhTGlzdFN1Z2dlc3Rpb25DZWxsICop
W3NlbGYgdmlld0F0Q29sdW1uOjAgcm93OnJvdyBtYWtlSWZOZWNlc3Nhcnk6Tk9dOwotICAgIG5l
d0NlbGwuYWN0aXZlID0gWUVTOwotCi0gICAgX2FjdGl2ZVJvdyA9IHJvdzsKKyAgICBbX2VuY2xv
c2luZ1Njcm9sbFZpZXcgc2V0RnJhbWU6W19lbmNsb3NpbmdTY3JvbGxWaWV3IHN1cGVydmlld10u
Ym91bmRzXTsKIH0KIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBfYWN0aXZlUm93ID0gV1RGOjpu
dWxsb3B0OwogICAgIFtzZWxmIHJlbG9hZERhdGFdOwogfQogCkBAIC0zMDksMjQgKzI3NywzMyBA
QCAtICh2b2lkKXJlbW92ZUZyb21TdXBlcnZpZXdXaXRob3V0TmVlZGluZ0Rpc3BsYXkKIAogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gV0tEYXRhTGlzdFN1Z2dlc3Rpb25zVmlldworQGltcGxlbWVu
dGF0aW9uIFdLRGF0YUxpc3RTdWdnZXN0aW9uc0NvbnRyb2xsZXIgeworICAgIFdlYktpdDo6V2Vi
RGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duTWFjKiBfZHJvcGRvd247CisgICAgVmVjdG9yPFN0
cmluZz4gX3N1Z2dlc3Rpb25zOworICAgIE5TVmlldyAqX3ByZXNlbnRpbmdWaWV3OworCisgICAg
UmV0YWluUHRyPFdLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93PiBfZW5jbG9zaW5nV2luZG93Owor
ICAgIFJldGFpblB0cjxXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlVmlldz4gX3RhYmxlOworfQog
Ci0tIChpZClpbml0V2l0aEluZm9ybWF0aW9uOihXZWJDb3JlOjpEYXRhTGlzdFN1Z2dlc3Rpb25J
bmZvcm1hdGlvbiYmKWluZm9ybWF0aW9uIGluVmlldzooTlNWaWV3ICopdmlldworLSAoaWQpaW5p
dFdpdGhJbmZvcm1hdGlvbjooV2ViQ29yZTo6RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24m
JilpbmZvcm1hdGlvbiBpblZpZXc6KE5TVmlldyAqKXByZXNlbnRpbmdWaWV3CiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBzZWxmOwogCi0gICAgX3Zp
ZXcgPSB2aWV3OworICAgIF9wcmVzZW50aW5nVmlldyA9IHByZXNlbnRpbmdWaWV3OwogICAgIF9z
dWdnZXN0aW9ucyA9IFdURk1vdmUoaW5mb3JtYXRpb24uc3VnZ2VzdGlvbnMpOwotICAgIF90YWJs
ZSA9IGFkb3B0TlMoW1tXS0RhdGFMaXN0U3VnZ2VzdGlvblRhYmxlIGFsbG9jXSBpbml0V2l0aEVs
ZW1lbnRSZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CisgICAgX3RhYmxlID0gYWRvcHRO
UyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVGFibGVWaWV3IGFsbG9jXSBpbml0V2l0aEVsZW1lbnRS
ZWN0OmluZm9ybWF0aW9uLmVsZW1lbnRSZWN0XSk7CiAKLSAgICBfZW5jbG9zaW5nV2luZG93ID0g
YWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfZW5jbG9zaW5n
V2luZG93ID0gYWRvcHROUyhbW1dLRGF0YUxpc3RTdWdnZXN0aW9uV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1JlY3Qgc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1Rp
dGxlZCB8IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50VmlldykgYmFja2luZzpOU0Jh
Y2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0
UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFtZTpb
c2VsZiBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVjdF0g
ZGlzcGxheTpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldFRpdGxlVmlzaWJpbGl0eTpO
U1dpbmRvd1RpdGxlSGlkZGVuXTsKKyAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRUaXRsZWJhckFw
cGVhcnNUcmFuc3BhcmVudDpZRVNdOworICAgIFtfZW5jbG9zaW5nV2luZG93IHNldE1vdmFibGU6
Tk9dOwogICAgIFtfZW5jbG9zaW5nV2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBj
bGVhckNvbG9yXV07CiAgICAgW19lbmNsb3NpbmdXaW5kb3cgc2V0T3BhcXVlOk5PXTsKIAotICAg
IFtfdGFibGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdXaW5kb3cgZnJhbWVdXTsKICAgICBb
X3RhYmxlIHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtfdGFibGUgc2V0RGF0YVNvdXJjZTpzZWxm
XTsKICAgICBbX3RhYmxlIHNldEFjdGlvbjpAc2VsZWN0b3Ioc2VsZWN0ZWRSb3c6KV07CkBAIC0z
MzcsOSArMzE0LDEwIEBAIC0gKGlkKWluaXRXaXRoSW5mb3JtYXRpb246KFdlYkNvcmU6OkRhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3JtYXRpb24KIAogLSAoU3RyaW5nKWN1cnJl
bnRTZWxlY3RlZFN0cmluZwogewotICAgIE9wdGlvbmFsPHNpemVfdD4gc2VsZWN0ZWRSb3cgPSBb
X3RhYmxlIGN1cnJlbnRBY3RpdmVSb3ddOwotICAgIGlmIChzZWxlY3RlZFJvdyAmJiBzZWxlY3Rl
ZFJvdy52YWx1ZSgpIDwgX3N1Z2dlc3Rpb25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIF9zdWdn
ZXN0aW9ucy5hdChzZWxlY3RlZFJvdy52YWx1ZSgpKTsKKyAgICBOU0ludGVnZXIgc2VsZWN0ZWRS
b3cgPSBbX3RhYmxlIHNlbGVjdGVkUm93XTsKKworICAgIGlmIChzZWxlY3RlZFJvdyA+PSAwICYm
IHN0YXRpY19jYXN0PHNpemVfdD4oc2VsZWN0ZWRSb3cpIDwgX3N1Z2dlc3Rpb25zLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIF9zdWdnZXN0aW9ucy5hdChzZWxlY3RlZFJvdyk7CiAKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CkBAIC0zNTAsNyArMzI4LDYgQEAgLSAodm9pZCl1cGRhdGVXaXRoSW5m
b3JtYXRpb246KFdlYkNvcmU6OkRhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uJiYpaW5mb3Jt
YXQKICAgICBbX3RhYmxlIHJlbG9hZF07CiAKICAgICBbX2VuY2xvc2luZ1dpbmRvdyBzZXRGcmFt
ZTpbc2VsZiBkcm9wZG93blJlY3RGb3JFbGVtZW50UmVjdDppbmZvcm1hdGlvbi5lbGVtZW50UmVj
dF0gZGlzcGxheTpZRVNdOwotICAgIFtfdGFibGUgc2V0VmlzaWJsZVJlY3Q6W19lbmNsb3NpbmdX
aW5kb3cgZnJhbWVdXTsKIH0KIAogLSAodm9pZClub3RpZnlBY2Nlc3NpYmlsaXR5Q2xpZW50czoo
TlNTdHJpbmcgKilpbmZvCkBAIC0zNjQsMTkgKzM0MSwxOCBAQCAtICh2b2lkKW5vdGlmeUFjY2Vz
c2liaWxpdHlDbGllbnRzOihOU1N0cmluZyAqKWluZm8KIC0gKHZvaWQpbW92ZVNlbGVjdGlvbkJ5
RGlyZWN0aW9uOihjb25zdCBTdHJpbmcmKWRpcmVjdGlvbgogewogICAgIHNpemVfdCBzaXplID0g
X3N1Z2dlc3Rpb25zLnNpemUoKTsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG9sZFNlbGVjdGlvbiA9
IFtfdGFibGUgY3VycmVudEFjdGl2ZVJvd107CisgICAgTlNJbnRlZ2VyIG9sZFNlbGVjdGlvbiA9
IFtfdGFibGUgc2VsZWN0ZWRSb3ddOwogCiAgICAgc2l6ZV90IG5ld1NlbGVjdGlvbjsKLSAgICBp
ZiAob2xkU2VsZWN0aW9uKSB7Ci0gICAgICAgIHNpemVfdCBvbGRWYWx1ZSA9IG9sZFNlbGVjdGlv
bi52YWx1ZSgpOworICAgIGlmIChvbGRTZWxlY3Rpb24gIT0gLTEpIHsKICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSAiVXAiKQotICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gb2xkVmFsdWUgPyAo
b2xkVmFsdWUgLSAxKSA6IChzaXplIC0gMSk7CisgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBv
bGRTZWxlY3Rpb24gPyAob2xkU2VsZWN0aW9uIC0gMSkgOiAoc2l6ZSAtIDEpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSAob2xkVmFsdWUgKyAxKSAlIHNpemU7Cisg
ICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSAob2xkU2VsZWN0aW9uICsgMSkgJSBzaXplOwogICAg
IH0gZWxzZQogICAgICAgICBuZXdTZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09ICJVcCIpID8gKHNp
emUgLSAxKSA6IDA7CiAKLSAgICBbX3RhYmxlIHNldEFjdGl2ZVJvdzpuZXdTZWxlY3Rpb25dOwor
ICAgIFtfdGFibGUgc2VsZWN0Um93SW5kZXhlczpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRl
eDpuZXdTZWxlY3Rpb25dIGJ5RXh0ZW5kaW5nU2VsZWN0aW9uOk5PXTsKIAogICAgIC8vIE5vdGlm
eSBhY2Nlc3NpYmlsaXR5IGNsaWVudHMgb2YgbmV3IHNlbGVjdGlvbi4KICAgICBOU1N0cmluZyAq
Y3VycmVudFNlbGVjdGVkU3RyaW5nID0gW3NlbGYgY3VycmVudFNlbGVjdGVkU3RyaW5nXTsKQEAg
LTM5Myw3ICszNjksNyBAQCAtICh2b2lkKWludmFsaWRhdGUKIAogICAgIF90YWJsZSA9IG5pbDsK
IAotICAgIFtbX3ZpZXcgd2luZG93XSByZW1vdmVDaGlsZFdpbmRvdzpfZW5jbG9zaW5nV2luZG93
LmdldCgpXTsKKyAgICBbW19wcmVzZW50aW5nVmlldyB3aW5kb3ddIHJlbW92ZUNoaWxkV2luZG93
Ol9lbmNsb3NpbmdXaW5kb3cuZ2V0KCldOwogICAgIFtfZW5jbG9zaW5nV2luZG93IGNsb3NlXTsK
ICAgICBfZW5jbG9zaW5nV2luZG93ID0gbmlsOwogCkBAIC00MDQsOSArMzgwLDEwIEBAIC0gKHZv
aWQpaW52YWxpZGF0ZQogCiAtIChOU1JlY3QpZHJvcGRvd25SZWN0Rm9yRWxlbWVudFJlY3Q6KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKXJlY3QKIHsKLSAgICBOU1JlY3Qgd2luZG93UmVjdCA9IFtb
X3ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOltfdmlldyBjb252ZXJ0UmVjdDpyZWN0
IHRvVmlldzpuaWxdXTsKLSAgICBDR0Zsb2F0IGhlaWdodCA9IHN0ZDo6bWluKF9zdWdnZXN0aW9u
cy5zaXplKCksIGRyb3Bkb3duTWF4U3VnZ2VzdGlvbnMpICogZHJvcGRvd25Sb3dIZWlnaHQ7Ci0g
ICAgcmV0dXJuIE5TTWFrZVJlY3QoTlNNaW5YKHdpbmRvd1JlY3QpIC0gZHJvcGRvd25TaGFkb3dI
ZWlnaHQsIE5TTWluWSh3aW5kb3dSZWN0KSAtIGhlaWdodCAtIGRyb3Bkb3duU2hhZG93SGVpZ2h0
IC0gZHJvcGRvd25Ub3BNYXJnaW4sIHJlY3Qud2lkdGgoKSArIGRyb3Bkb3duU2hhZG93SGVpZ2h0
ICogMiwgaGVpZ2h0ICsgZHJvcGRvd25TaGFkb3dIZWlnaHQpOworICAgIE5TUmVjdCB3aW5kb3dS
ZWN0ID0gW1tfcHJlc2VudGluZ1ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOltfcHJl
c2VudGluZ1ZpZXcgY29udmVydFJlY3Q6cmVjdCB0b1ZpZXc6bmlsXV07CisgICAgYXV0byB2aXNp
YmxlU3VnZ2VzdGlvbkNvdW50ID0gc3RkOjptaW4oX3N1Z2dlc3Rpb25zLnNpemUoKSwgZHJvcGRv
d25NYXhTdWdnZXN0aW9ucyk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSB2aXNpYmxlU3VnZ2VzdGlv
bkNvdW50ICogKGRyb3Bkb3duUm93SGVpZ2h0ICsgW190YWJsZSBpbnRlcmNlbGxTcGFjaW5nXS5o
ZWlnaHQpICsgKGRyb3Bkb3duVmVydGljYWxQYWRkaW5nICogMik7CisgICAgcmV0dXJuIE5TTWFr
ZVJlY3QoTlNNaW5YKHdpbmRvd1JlY3QpLCBOU01pblkod2luZG93UmVjdCkgLSBoZWlnaHQgLSBk
cm9wZG93blRvcE1hcmdpbiwgcmVjdC53aWR0aCgpLCBoZWlnaHQpOwogfQogCiAtICh2b2lkKXNo
b3dTdWdnZXN0aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9w
ZG93bk1hYyopZHJvcGRvd24KQEAgLTQxNCw3ICszOTEsNyBAQCAtICh2b2lkKXNob3dTdWdnZXN0
aW9uc0Ryb3Bkb3duOihXZWJLaXQ6OldlYkRhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93bk1hYyop
ZHJvcAogICAgIF9kcm9wZG93biA9IGRyb3Bkb3duOwogICAgIFtbX2VuY2xvc2luZ1dpbmRvdyBj
b250ZW50Vmlld10gYWRkU3VidmlldzpbX3RhYmxlIGVuY2xvc2luZ1Njcm9sbFZpZXddXTsKICAg
ICBbX3RhYmxlIHJlbG9hZF07Ci0gICAgW1tfdmlldyB3aW5kb3ddIGFkZENoaWxkV2luZG93Ol9l
bmNsb3NpbmdXaW5kb3cuZ2V0KCkgb3JkZXJlZDpOU1dpbmRvd0Fib3ZlXTsKKyAgICBbW19wcmVz
ZW50aW5nVmlldyB3aW5kb3ddIGFkZENoaWxkV2luZG93Ol9lbmNsb3NpbmdXaW5kb3cuZ2V0KCkg
b3JkZXJlZDpOU1dpbmRvd0Fib3ZlXTsKICAgICBbW190YWJsZSBlbmNsb3NpbmdTY3JvbGxWaWV3
XSBmbGFzaFNjcm9sbGVyc107CiAKICAgICAvLyBOb3RpZnkgYWNjZXNzaWJpbGl0eSBjbGllbnRz
IG9mIGRhdGFsaXN0IGJlY29taW5nIHZpc2libGUuCkBAIC00MzgsMjAgKzQxNSwyMSBAQCAtIChD
R0Zsb2F0KXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgaGVpZ2h0T2ZSb3c6KE5T
SW50ZWdlcilyb3cKICAgICByZXR1cm4gZHJvcGRvd25Sb3dIZWlnaHQ7CiB9CiAKKy0gKE5TVGFi
bGVSb3dWaWV3ICopdGFibGVWaWV3OihOU1RhYmxlVmlldyAqKXRhYmxlVmlldyByb3dWaWV3Rm9y
Um93OihOU0ludGVnZXIpcm93Cit7CisgICAgcmV0dXJuIFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9u
VGFibGVSb3dWaWV3IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKIC0gKE5TVmlldyAq
KXRhYmxlVmlldzooTlNUYWJsZVZpZXcgKil0YWJsZVZpZXcgdmlld0ZvclRhYmxlQ29sdW1uOihO
U1RhYmxlQ29sdW1uICopdGFibGVDb2x1bW4gcm93OihOU0ludGVnZXIpcm93CiB7Ci0gICAgV0tE
YXRhTGlzdFN1Z2dlc3Rpb25DZWxsICpyZXN1bHQgPSBbdGFibGVWaWV3IG1ha2VWaWV3V2l0aElk
ZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgb3duZXI6c2VsZl07CisgICAg
V0tEYXRhTGlzdFN1Z2dlc3Rpb25WaWV3ICpyZXN1bHQgPSBbdGFibGVWaWV3IG1ha2VWaWV3V2l0
aElkZW50aWZpZXI6c3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgb3duZXI6c2VsZl07CiAK
ICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXN1bHQgPSBbW1tXS0RhdGFMaXN0U3VnZ2Vz
dGlvbkNlbGwgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCB0YWJsZVZpZXcu
ZnJhbWUuc2l6ZS53aWR0aCwgZHJvcGRvd25Sb3dIZWlnaHQpXSBhdXRvcmVsZWFzZV07CisgICAg
ICAgIHJlc3VsdCA9IFtbW1dLRGF0YUxpc3RTdWdnZXN0aW9uVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIHRhYmxlVmlldy5mcmFtZS5zaXplLndpZHRoLCBkcm9wZG93
blJvd0hlaWdodCldIGF1dG9yZWxlYXNlXTsKICAgICAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVy
OnN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXTsKICAgICB9CiAKLSAgICBbcmVzdWx0IHNl
dFRleHQ6X3N1Z2dlc3Rpb25zLmF0KHJvdyldOwotCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBjdXJy
ZW50QWN0aXZlUm93ID0gW190YWJsZSBjdXJyZW50QWN0aXZlUm93XTsKLSAgICBpZiAoY3VycmVu
dEFjdGl2ZVJvdyAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJvdykgPT0gY3VycmVudEFjdGl2ZVJv
dy52YWx1ZSgpKQotICAgICAgICByZXN1bHQuYWN0aXZlID0gWUVTOworICAgIHJlc3VsdC50ZXh0
ID0gX3N1Z2dlc3Rpb25zLmF0KHJvdyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>