<?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>49442</bug_id>
          
          <creation_ts>2010-11-12 07:05:06 -0800</creation_ts>
          <short_desc>Spatial Navigation: Code cleanup</short_desc>
          <delta_ts>2010-11-23 04:57:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>49382</dependson>
          <blocked>46905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>308523</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-11-12 07:05:06 -0800</bug_when>
    <thetext>The patch at https://bugs.webkit.org/show_bug.cgi?id=49382 is already very big, so I splitted up adding new code and removing code that is no longer in use.
This bug is for the second step, after https://bugs.webkit.org/show_bug.cgi?id=49382 is committed, to remove code that is no longer used.
A patch is coming soon, but it cannot be built before https://bugs.webkit.org/show_bug.cgi?id=49382 is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308526</commentid>
    <comment_count>1</comment_count>
      <attachid>73739</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-11-12 07:12:32 -0800</bug_when>
    <thetext>Created attachment 73739
Patch

This patch is to remove unused code after https://bugs.webkit.org/show_bug.cgi?id=49382 is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312331</commentid>
    <comment_count>2</comment_count>
      <attachid>74551</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-11-22 07:19:30 -0800</bug_when>
    <thetext>Created attachment 74551
Patch

Rebaseline the patch, and set for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312333</commentid>
    <comment_count>3</comment_count>
      <attachid>74551</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-11-22 07:22:13 -0800</bug_when>
    <thetext>Comment on attachment 74551
Patch

As soon as the bots are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312435</commentid>
    <comment_count>4</comment_count>
      <attachid>74551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-22 11:34:58 -0800</bug_when>
    <thetext>Comment on attachment 74551
Patch

Rejecting patch 74551 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
nv XCODE_VERSION_MAJOR 0300
    setenv XCODE_VERSION_MINOR 0320
    setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/Page.o /Projects/CommitQueue/WebCore/page/Page.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/6172136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312472</commentid>
    <comment_count>5</comment_count>
      <attachid>74551</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-11-22 12:57:58 -0800</bug_when>
    <thetext>Comment on attachment 74551
Patch

Let&apos;s try the commit queue again. The &quot;broken pipe&quot; error seems unrelated to the patch itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312672</commentid>
    <comment_count>6</comment_count>
      <attachid>74551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-22 19:55:13 -0800</bug_when>
    <thetext>Comment on attachment 74551
Patch

Rejecting patch 74551 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
ing build commands failed:
WebCore:
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/SelectionController.o /Projects/CommitQueue/WebCore/editing/SelectionController.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/RenderLayer.o /Projects/CommitQueue/WebCore/rendering/RenderLayer.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(2 failures)


Full output: http://queues.webkit.org/results/6399008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312767</commentid>
    <comment_count>7</comment_count>
      <attachid>74551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-23 04:57:37 -0800</bug_when>
    <thetext>Comment on attachment 74551
Patch

Clearing flags on attachment: 74551

Committed r72596: &lt;http://trac.webkit.org/changeset/72596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312768</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-23 04:57:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73739</attachid>
            <date>2010-11-12 07:12:32 -0800</date>
            <delta_ts>2010-11-22 07:19:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>49442.patch</filename>
            <type>text/plain</type>
            <size>23608</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTkwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMTIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgTmF2aWdhdGlvbjogQ29kZSBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQ0MgorCisgICAgICAgIFJlbW92ZSBjb2RlIHRo
YXQgaXMgbm90IHVzZWQgYW55bW9yZSBhZnRlciAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzgyLgorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGlzIGlzIG9ubHkgY29kZSBjbGVhbnVwLgorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgICog
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5oOgorCiAyMDEwLTExLTEyICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzE4NTUpCisrKyBXZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDI1NSArMjg5LDYgQEAgYm9vbCBG
b2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAgIEZyYW1lKiBm
cmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIEFTU0VSVChmcmFtZSk7Ci0gICAgRG9j
dW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZm9j
dXNlZERvY3VtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBOb2RlKiBmb2N1c2Vk
Tm9kZSA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKLSAgICBpZiAoIWZvY3VzZWRO
b2RlKSB7Ci0gICAgICAgIC8vIEp1c3QgbW92ZSB0byB0aGUgZmlyc3QgZm9jdXNhYmxlIG5vZGUu
Ci0gICAgICAgIEZvY3VzRGlyZWN0aW9uIHRhYkRpcmVjdGlvbiA9IChkaXJlY3Rpb24gPT0gRm9j
dXNEaXJlY3Rpb25VcCB8fCBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25MZWZ0KSA/Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbkJhY2t3YXJk
IDogRm9jdXNEaXJlY3Rpb25Gb3J3YXJkOwotICAgICAgICAvLyAnaW5pdGlhbEZvY3VzJyBpcyBz
ZXQgdG8gdHJ1ZSBzbyB0aGUgY2hyb21lIGlzIG5vdCBmb2N1c2VkLgotICAgICAgICByZXR1cm4g
YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKHRhYkRpcmVjdGlvbiwgZXZlbnQsIHRydWUpOwot
ICAgIH0KLQotICAgIC8vIE1vdmUgdXAgaW4gdGhlIGNoYWluIG9mIG5lc3RlZCBmcmFtZXMuCi0g
ICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50b3AoKTsKLQotICAgIEZvY3VzQ2FuZGlkYXRlIGZv
Y3VzQ2FuZGlkYXRlOwotICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZnJhbWUtPmRv
Y3VtZW50KCktPmZpcnN0Q2hpbGQoKSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZv
Y3VzQ2FuZGlkYXRlKTsKLQotICAgIE5vZGUqIG5vZGUgPSBmb2N1c0NhbmRpZGF0ZS5ub2RlOwot
ICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBNYXkgbmVlZCBhIHdheSB0byBmb2N1cyBhIGRvY3VtZW50IGhlcmUuCi0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgICAgICBzY3JvbGxJbkRpcmVj
dGlvbihmcmFtZSwgZGlyZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIGNyYXp5IGp1bXAgYmV0d2VlbiBsaW5rcyB0aGF0IGFy
ZSBlaXRoZXIgZmFyIGF3YXkgZnJvbSBlYWNoIG90aGVyLAotICAgIC8vIG9yIGp1c3Qgbm90IGN1
cnJlbnRseSB2aXNpYmxlLCBsZXRzIGRvIGEgc2Nyb2xsIGluIHRoZSBnaXZlbiBkaXJlY3Rpb24g
YW5kIGJhaWwgb3V0Ci0gICAgLy8gaWYgfG5vZGV8IGVsZW1lbnQgaXMgbm90IGluIHRoZSB2aWV3
cG9ydC4KLSAgICBpZiAoaGFzT2Zmc2NyZWVuUmVjdChub2RlKSkgewotICAgICAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT52aWV3KCktPmZyYW1lKCk7Ci0gICAgICAgIHNjcm9s
bEluRGlyZWN0aW9uKGZyYW1lLCBkaXJlY3Rpb24sIGZvY3VzQ2FuZGlkYXRlKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbm9kZS0+
ZG9jdW1lbnQoKTsKLQotICAgIGlmIChuZXdEb2N1bWVudCAhPSBmb2N1c2VkRG9jdW1lbnQpIHsK
LSAgICAgICAgLy8gRm9jdXMgaXMgZ29pbmcgYXdheSBmcm9tIHRoZSBvcmlnaW5hbGx5IGZvY3Vz
ZWQgZG9jdW1lbnQsIHNvIGNsZWFyIHRoZSBmb2N1c2VkIG5vZGUuCi0gICAgICAgIGZvY3VzZWRE
b2N1bWVudC0+c2V0Rm9jdXNlZE5vZGUoMCk7Ci0gICAgfQotCi0gICAgaWYgKG5ld0RvY3VtZW50
KQotICAgICAgICBzZXRGb2N1c2VkRnJhbWUobmV3RG9jdW1lbnQtPmZyYW1lKCkpOwotCi0gICAg
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICBBU1NF
UlQoZWxlbWVudCk7Ci0KLSAgICBzY3JvbGxJbnRvVmlldyhlbGVtZW50KTsKLSAgICBlbGVtZW50
LT5mb2N1cyhmYWxzZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHVwZGF0
ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5k
aWRhdGUsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0KQotewotICAgIGlmIChjbG9zZXN0LmlzTnVs
bCgpKSB7Ci0gICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA9PSBjbG9zZXN0LmFsaWdubWVudCkg
ewotICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkKLSAg
ICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QuYWxpZ25tZW50KQotICAgICAg
ICBjbG9zZXN0ID0gY2FuZGlkYXRlOwotfQotCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRp
ZGF0ZUlmQ2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2Fu
ZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKLXsKLSAgICAvLyBGaXJzdCwgY2hlY2sg
dGhlIGNvbW1vbiBjYXNlOiBuZWl0aGVyIGNhbmRpZGF0ZSBub3IgY2xvc2VzdCBhcmUKLSAgICAv
LyBpbnNpZGUgc2Nyb2xsYWJsZSBjb250ZW50LCB0aGVuIG5vIG5lZWQgdG8gY2FyZSBhYm91dCBl
bmNsb3NpbmdTY3JvbGxhYmxlQm94Ci0gICAgLy8gaGV1cmlzdGljcyBvciBwYXJlbnR7RGlzdGFu
Y2UsQWxpZ25tZW50fSwgYnV0IG9ubHkgZGlzdGFuY2UgYW5kIGFsaWdubWVudC4KLSAgICBpZiAo
IWNhbmRpZGF0ZS5pblNjcm9sbGFibGVDb250YWluZXIoKSAmJiAhY2xvc2VzdC5pblNjcm9sbGFi
bGVDb250YWluZXIoKSkgewotICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluU2FtZUNvbnRh
aW5lcihjYW5kaWRhdGUsIGNsb3Nlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ym9vbCBzYW1lQ29udGFpbmVyID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1
bWVudCgpICYmIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID09IGNsb3Nlc3QuZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveDsKLQotICAgIC8vIFNlY29uZCwgaWYgY2FuZGlkYXRlIGFuZCBj
bG9zZXN0IGFyZSBpbiB0aGUgc2FtZSAiY29udGFpbmVyIiAoaS5lLiB7aX1mcmFtZSBvciBhbnkK
LSAgICAvLyBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQpLCB3ZSBjYW4gaGFuZGxlIHRoZW0gYXMg
Y29tbW9uIGNhc2UuCi0gICAgaWYgKHNhbWVDb250YWluZXIpIHsKLSAgICAgICAgdXBkYXRlRm9j
dXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIoY2FuZGlkYXRlLCBjbG9zZXN0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIExhc3QsIHdlIGFyZSBjb25zaWRlcmluZyBtb3Zpbmcg
dG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBpbiBhIGRpZmZlcmVudCBlbmNsb3NpbmcKLSAgICAvLyBz
Y3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nlc3QuCi0gICAgYm9vbCBpc0luSW5uZXJEb2N1bWVudCA9
ICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKTsKLQotICAgIGJvb2wgc2FtZUNvbnRhaW5l
ckFzQ2FuZGlkYXRlID0gaXNJbklubmVyRG9jdW1lbnQgPyBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQo
KSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA6Ci0gICAgICAgIGZvY3VzZWROb2RlLT5pc0Rlc2Nl
bmRhbnRPZihjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCk7Ci0KLSAgICBib29sIHNh
bWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3VzZWROb2RlLT5k
b2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6Ci0gICAgICAgIGZvY3VzZWROb2RlLT5p
c0Rlc2NlbmRhbnRPZihjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOwotCi0gICAgLy8g
c2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlIGFuZCBzYW1lQ29udGFpbmVyQXNDbG9zZXN0IGFyZSBt
dXR1YWxseSBleGNsdXNpdmUuCi0gICAgQVNTRVJUKCEoc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRl
ICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKLQotICAgIGlmIChzYW1lQ29udGFpbmVyQXND
YW5kaWRhdGUpIHsKLSAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChzYW1lQ29udGFpbmVyQXNDbG9zZXN0KSB7Ci0gICAgICAgIC8v
IE5vdGhpbmcgdG8gYmUgZG9uZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE5P
VEU6ICFzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgJiYgIXNhbWVDb250YWluZXJBc0Nsb3Nlc3QK
LSAgICAvLyBJZiBkaXN0YW5jZSBpcyBzaG9ydGVyLCBhbmQgd2UgYXJlIHRhbGtpbmcgYWJvdXQg
c2Nyb2xsYWJsZSBjb250YWluZXIsCi0gICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBkaXN0YW5j
ZSBhbmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3Rh
bmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgewotICAgICAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVu
dCA+PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudAotICAgICAgICAgfHwgY2FuZGlkYXRlLnBhcmVu
dEFsaWdubWVudCA9PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkgewotICAgICAgICAgICAgY2xv
c2VzdCA9IGNhbmRpZGF0ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
fSBlbHNlIGlmIChjYW5kaWRhdGUucGFyZW50RGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKSB7
Ci0gICAgICAgIGlmIChjYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ID49IGNsb3Nlc3QuYWxpZ25t
ZW50KSB7Ci0gICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBvdXRlciwgTm9kZSogZm9jdXNlZE5vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nl
c3QsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGVQYXJlbnQpCi17Ci0gICAgQVNTRVJU
KG91dGVyKTsKLSAgICBBU1NFUlQoY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpCi0gICAgICAgIHx8
IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGZyYW1lVGFnKQotICAgICAgICB8fCBj
YW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpCi0gICAgICAgIHx8IGlz
U2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY2FuZGlkYXRlUGFyZW50Lm5vZGUpKTsKLQotICAgIC8v
IFdhbGsgYWxsIHRoZSBjaGlsZCBub2RlcyBhbmQgdXBkYXRlIGNsb3Nlc3QgaWYgd2UgZmluZCBh
IG5lYXJlciBub2RlLgotICAgIE5vZGUqIG5vZGUgPSBvdXRlcjsKLSAgICB3aGlsZSAobm9kZSkg
ewotCi0gICAgICAgIC8vIElubmVyIGRvY3VtZW50cyBjYXNlLgotICAgICAgICBpZiAobm9kZS0+
aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbihub2RlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2Vz
dCk7Ci0KLSAgICAgICAgLy8gU2Nyb2xsYWJsZSBibG9jayBlbGVtZW50cyAoZS5nLiA8ZGl2Piwg
ZXRjKSBjYXNlLgotICAgICAgICB9IGVsc2UgaWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUo
bm9kZSkpIHsKLSAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKG5v
ZGUsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0KTsKLSAgICAgICAgICAg
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICB9IGVsc2UgaWYgKG5vZGUgIT0gZm9jdXNlZE5vZGUgJiYgbm9kZS0+aXNL
ZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKLSAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlIGNh
bmRpZGF0ZShub2RlKTsKLQotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRvIGlk
ZW50aWZ5IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsIGZyb20gZGVlcEZpbmRGb2N1c2FibGVO
b2RlSW5EaXJlY3Rpb24KLSAgICAgICAgICAgIC8vIChpLmUuIHByb2Nlc3NpbmcgYW4gZWxlbWVu
dCBpbiBhbiBpZnJhbWUsIGZyYW1lIG9yIGEgc2Nyb2xsYWJsZSBibG9jayBlbGVtZW50KToKLQot
ICAgICAgICAgICAgLy8gMSkgSWYgY2FuZGlkYXRlUGFyZW50IGlzIG5vdCBudWxsLCBhbmQgaXQg
aG9sZHMgdGhlIGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZGF0YSBvZiB0aGUKLSAgICAgICAgICAg
IC8vIHBhcmVudCBjb250YWluZXIgZWxlbWVudCBpdHNlbGY7Ci0gICAgICAgICAgICAvLyAyKSBQ
YXJlbnQgb2Ygb3V0ZXIgaXMgPGZyYW1lPiBvciA8aWZyYW1lPjsKLSAgICAgICAgICAgIC8vIDMp
IFBhcmVudCBpcyBhbnkgb3RoZXIgc2Nyb2xsYWJsZSBibG9jayBlbGVtZW50LgotICAgICAgICAg
ICAgaWYgKCFjYW5kaWRhdGVQYXJlbnQuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBjYW5k
aWRhdGUucGFyZW50QWxpZ25tZW50ID0gY2FuZGlkYXRlUGFyZW50LmFsaWdubWVudDsKLSAgICAg
ICAgICAgICAgICBjYW5kaWRhdGUucGFyZW50RGlzdGFuY2UgPSBjYW5kaWRhdGVQYXJlbnQuZGlz
dGFuY2U7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gg
PSBjYW5kaWRhdGVQYXJlbnQubm9kZTsKLQotICAgICAgICAgICAgfSBlbHNlIGlmICghaXNJblJv
b3REb2N1bWVudChvdXRlcikpIHsKLSAgICAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihvdXRlci0+cGFyZW50KCkpKQotICAgICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IHN0YXRpY19jYXN0
PE5vZGUqPihkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpOwotCi0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUob3V0ZXItPnBhcmVudCgpKSkKLSAgICAgICAg
ICAgICAgICBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IG91dGVyLT5wYXJlbnQo
KTsKLQotICAgICAgICAgICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJy
ZW50IGNhbmRpZGF0ZS4KLSAgICAgICAgICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9u
LCBmb2N1c2VkTm9kZSwgY2FuZGlkYXRlKTsKLQotICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYg
ZGlzdGFuY2UgaXMgbWF4aW11bS4KLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2Ug
PT0gbWF4RGlzdGFuY2UoKSkgewotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJz
ZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIo
Zm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgY2xvc2VzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50KCkpOwotICAgIH0KLX0K
LQotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
KE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm9jdXNlZE5vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKLXsKLSAg
ICBBU1NFUlQoY29udGFpbmVyLT5oYXNUYWdOYW1lKGZyYW1lVGFnKQotICAgICAgICB8fCBjb250
YWluZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFnKQotICAgICAgICB8fCBpc1Njcm9sbGFibGVDb250
YWluZXJOb2RlKGNvbnRhaW5lcikpOwotCi0gICAgLy8gVHJhY2sgaWYgZm9jdXNlZE5vZGUgaXMg
YSBkZXNjZW5kYW50IG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lciBub2RlIGJlaW5nIHByb2Nlc3Nl
ZC4KLSAgICBib29sIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGZhbHNlOwotICAgIE5vZGUqIGZp
cnN0Q2hpbGQgPSAwOwotCi0gICAgLy8gSWZyYW1lIG9yIEZyYW1lLgotICAgIGlmIChjb250YWlu
ZXItPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVU
YWcpKSB7Ci0KLSAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19j
YXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KGNvbnRhaW5lcik7Ci0gICAgICAgIGlmICghb3du
ZXItPmNvbnRlbnRGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIERvY3Vt
ZW50KiBpbm5lckRvY3VtZW50ID0gb3duZXItPmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpOwot
ICAgICAgICBpZiAoIWlubmVyRG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgZGVzY2VuZGFudE9mQ29udGFpbmVyID0gaXNOb2RlRGVlcERlc2NlbmRhbnRPZkRvY3VtZW50
KGZvY3VzZWROb2RlLCBpbm5lckRvY3VtZW50KTsKLSAgICAgICAgZmlyc3RDaGlsZCA9IGlubmVy
RG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsKLQotICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVu
dHMgKGUuZy4gPGRpdj4sIGV0YykKLSAgICB9IGVsc2UgaWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5l
ck5vZGUoY29udGFpbmVyKSkgewotCi0gICAgICAgIGZpcnN0Q2hpbGQgPSBjb250YWluZXItPmZp
cnN0Q2hpbGQoKTsKLSAgICAgICAgZGVzY2VuZGFudE9mQ29udGFpbmVyID0gZm9jdXNlZE5vZGUt
PmlzRGVzY2VuZGFudE9mKGNvbnRhaW5lcik7Ci0gICAgfQotCi0gICAgaWYgKGRlc2NlbmRhbnRP
ZkNvbnRhaW5lcikgewotICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZpcnN0
Q2hpbGQsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBl
bGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCi0gICAgLy8gdG8gbW92ZSBmb2N1cyB0
by4gSWYgaXQgaXMsIHRoZW4gd2UgdHJhdmVyc2UgaXRzIGlubmVyIG5vZGVzLgotICAgIEZvY3Vz
Q2FuZGlkYXRlIGNhbmRpZGF0ZVBhcmVudCA9IEZvY3VzQ2FuZGlkYXRlKGNvbnRhaW5lcik7Ci0g
ICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWROb2RlLCBjYW5kaWRhdGVQ
YXJlbnQpOwotCi0gICAgLy8gQmFpbCBvdXQgaWYgZGlzdGFuY2UgaXMgbWF4aW11bS4KLSAgICBp
ZiAoY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlID09IG1heERpc3RhbmNlKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FOiBDb25zaWRlciBhbGlnbm1lbnQ/Ci0gICAgaWYgKGNhbmRp
ZGF0ZVBhcmVudC5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpCi0gICAgICAgIGZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oZmlyc3RDaGlsZCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwg
ZXZlbnQsIGNsb3Nlc3QsIGNhbmRpZGF0ZVBhcmVudCk7Ci19Ci0KIHN0YXRpYyBib29sIHJlbGlu
cXVpc2hlc0VkaXRpbmdGb2N1cyhOb2RlICpub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDcxODU1KQorKysgV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRm9jdXNlZDsgfQog
CiBwcml2YXRlOgotICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9y
ZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMpOwog
Ci0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIG91dHRlciwgTm9k
ZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9jdXNDYW5kaWRh
dGUmIHBhcmVudENhbmRpZGF0ZSA9IEZvY3VzQ2FuZGlkYXRlKCkpOwotICAgIHZvaWQgZGVlcEZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBOb2RlKiBmb2N1c2Vk
LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJik7Ci0KICAg
ICBQYWdlKiBtX3BhZ2U7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKICAgICBi
b29sIG1faXNBY3RpdmU7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHJldmlz
aW9uIDcxODU1KQorKysgV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsMTAxICs0MSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBsb25nIGxvbmcgc3BhdGlhbERpc3RhbmNlKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50UmVjdCYpOwotc3RhdGljIEludFJlY3QgcmVuZGVyUmVjdFJlbGF0aXZl
VG9Sb290RG9jdW1lbnQoUmVuZGVyT2JqZWN0Kik7CiBzdGF0aWMgUmVjdHNBbGlnbm1lbnQgYWxp
Z25tZW50Rm9yUmVjdHMoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRS
ZWN0Jik7CiBzdGF0aWMgYm9vbCBhcmVSZWN0c0Z1bGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0YXRpYyBib29sIGFyZVJlY3RzUGFy
dGlhbGx5QWxpZ25lZChGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJl
Y3QmKTsKLXN0YXRpYyBib29sIGlzUmVjdEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpOwotc3RhdGljIHZvaWQgZGVmbGF0ZUlmT3Zlcmxh
cHBlZChJbnRSZWN0JiwgSW50UmVjdCYpOwotc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jk
c0Zvck5vZGUoTm9kZSosIGNvbnN0IEludFJlY3QmKTsKIAogYm9vbCBpc1NwYXRpYWxOYXZpZ2F0
aW9uRW5hYmxlZChjb25zdCBGcmFtZSogZnJhbWUpCiB7CiAgICAgcmV0dXJuIChmcmFtZSAmJiBm
cmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0dGluZ3MoKS0+aXNTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoKSk7CiB9CiAKLXZvaWQgZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQotewot
ICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIgPSBzdGFydC0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXN0YXJ0UmVuZGVyKSB7Ci0gICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3Rh
bmNlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZW5kZXJPYmplY3QqIGRlc3RS
ZW5kZXIgPSBjYW5kaWRhdGUubm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWRlc3RSZW5kZXIp
IHsKLSAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEludFJlY3QgY3VyUmVjdCA9IHJlbmRlclJlY3RSZWxhdGl2
ZVRvUm9vdERvY3VtZW50KHN0YXJ0UmVuZGVyKTsKLSAgICBJbnRSZWN0IHRhcmdldFJlY3QgID0g
cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQoZGVzdFJlbmRlcik7Ci0KLSAgICAvLyBU
aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHR3byBjb25zZWN1dGl2ZSBub2RlcyBjYW4gb3Zlcmxh
cC4gSW4gc3VjaCBjYXNlcywKLSAgICAvLyBkZWZsYXRlIGJvdGguCi0gICAgZGVmbGF0ZUlmT3Zl
cmxhcHBlZChjdXJSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgIC8vIElmIGVtcHR5IHJlY3RzIG9y
IG5lZ2F0aXZlIHdpZHRoIG9yIGhlaWdodCwgYmFpbCBvdXQuCi0gICAgaWYgKGN1clJlY3QuaXNF
bXB0eSgpIHx8IHRhcmdldFJlY3QuaXNFbXB0eSgpCi0gICAgIHx8IHRhcmdldFJlY3Qud2lkdGgo
KSA8PSAwIHx8IHRhcmdldFJlY3QuaGVpZ2h0KCkgPD0gMCkgewotICAgICAgICBjYW5kaWRhdGUu
ZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gTmVnYXRpdmUgY29vcmRpbmF0ZXMgY2FuIGJlIHVzZWQgaWYgbm9kZSBpcyBzY3JvbGxlZCB1
cCBvZmZzY3JlZW4uCi0gICAgaWYgKCFjaGVja05lZ2F0aXZlQ29vcmRzRm9yTm9kZShzdGFydCwg
Y3VyUmVjdCkpIHsKLSAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zv
ck5vZGUoY2FuZGlkYXRlLm5vZGUsIHRhcmdldFJlY3QpKSB7Ci0gICAgICAgIGNhbmRpZGF0ZS5k
aXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIWlzUmVjdEluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsK
LSAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBu
b3QgdG8gYmUgY29uc2lkZXJlZCBhbG9uZSB3aGVuIGV2YWx1YXRpbmcvbG9va2luZwotICAgIC8v
IGZvciB0aGUgYmVzdCBmb2N1cyBjYW5kaWRhdGUgbm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNh
biBiZSBhbHNvIGEgZ29vZCBwb2ludCB0byBiZQotICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIg
dG8gbWFrZSB0aGUgYWxnb3JpdGhtIHRvIGJlaGF2aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5
LgotICAgIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPSBhbGlnbm1lbnRGb3JSZWN0cyhkaXJlY3Rpb24s
IGN1clJlY3QsIHRhcmdldFJlY3QpOwotICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IHNwYXRpYWxE
aXN0YW5jZShkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpOwotfQotCi0vLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBiZWhhdmUgY29ycmVjdGx5IHdpdGggdHJhbnNmb3JtZWQg
ZnJhbWVzLgotc3RhdGljIEludFJlY3QgcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQo
UmVuZGVyT2JqZWN0KiByZW5kZXIpCi17Ci0gICAgQVNTRVJUKHJlbmRlciAmJiByZW5kZXItPm5v
ZGUoKSk7Ci0KLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXItPm5vZGUoKS0+Z2V0UmVjdCgpOwot
Ci0gICAgLy8gSW4gY2FzZXMgd2hlbiB0aGUgfHJlbmRlcnwncyBhc3NvY2lhdGVkIG5vZGUgaXMg
aW4gYSBzY3JvbGxhYmxlIGlubmVyCi0gICAgLy8gZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIg
aXRzIHNjcm9sbE9mZnNldCBpZiBpdCBpcyBub3Qgb2Zmc2NyZWVuLgotICAgIE5vZGUqIG5vZGUg
PSByZW5kZXItPm5vZGUoKTsKLSAgICBEb2N1bWVudCogbWFpbkRvY3VtZW50ID0gbm9kZS0+ZG9j
dW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICBib29sIGNvbnNp
ZGVyU2Nyb2xsT2Zmc2V0ID0gIShoYXNPZmZzY3JlZW5SZWN0KG5vZGUpICYmIG5vZGUtPmRvY3Vt
ZW50KCkgIT0gbWFpbkRvY3VtZW50KTsKLQotICAgIGlmIChjb25zaWRlclNjcm9sbE9mZnNldCkg
ewotICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSByZW5kZXItPm5vZGUoKS0+ZG9j
dW1lbnQoKS0+dmlldygpKQotICAgICAgICAgICAgcmVjdC5tb3ZlKC1mcmFtZVZpZXctPnNjcm9s
bE9mZnNldCgpKTsKLSAgICB9Ci0KLSAgICAvLyBIYW5kbGUgbmVzdGVkIGZyYW1lcy4KLSAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IHJlbmRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZnJhbWUtPm93bmVyRWxlbWVudCgpKSkgewot
ICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHJlY3QubW92ZShlbGVtZW50LT5vZmZz
ZXRMZWZ0KCksIGVsZW1lbnQtPm9mZnNldFRvcCgpKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKChl
bGVtZW50ID0gZWxlbWVudC0+b2Zmc2V0UGFyZW50KCkpKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiByZWN0OwotfQotCiBzdGF0aWMgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50Rm9y
UmVjdHMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBjdXJSZWN0LCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0KQogewogICAgIGlmIChhcmVSZWN0c0Z1bGx5QWxpZ25l
ZChkaXJlY3Rpb24sIGN1clJlY3QsIHRhcmdldFJlY3QpKQpAQCAtMjg5LDEzOSArMjAzLDYgQEAg
c3RhdGljIGlubGluZSBib29sIHJpZ2h0T2YoY29uc3QgSW50UmVjdAogICAgIHJldHVybiBhLngo
KSA+IGIucmlnaHQoKTsKIH0KIAotLy8gKiBhID0gQ3VycmVudCBmb2N1c2VkIG5vZGUncyByZWN0
LgotLy8gKiBiID0gRm9jdXMgY2FuZGlkYXRlIG5vZGUncyByZWN0Lgotc3RhdGljIGxvbmcgbG9u
ZyBzcGF0aWFsRGlzdGFuY2UoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0
JiBhLCBjb25zdCBJbnRSZWN0JiBiKQotewotICAgIGludCB4MSA9IDAsIHkxID0gMCwgeDIgPSAw
LCB5MiA9IDA7Ci0KLSAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uTGVmdCkgewot
ICAgICAgICAvLyAjMSAgfC0tfAotICAgICAgICAvLwotICAgICAgICAvLyAjMiAgfC0tfCAgfC0t
fAotICAgICAgICAvLwotICAgICAgICAvLyAjMyAgfC0tfAotCi0gICAgICAgIHgxID0gYS54KCk7
Ci0gICAgICAgIHgyID0gYi5yaWdodCgpOwotCi0gICAgICAgIGlmIChiZWxvdyhhLCBiKSkgewot
ICAgICAgICAgICAgLy8gIzEgVGhlIGEgcmVjdCBpcyBiZWxvdyBiLgotICAgICAgICAgICAgeTEg
PSBhLnkoKTsKLSAgICAgICAgICAgIHkyID0gYi5ib3R0b20oKTsKLSAgICAgICAgfSBlbHNlIGlm
IChiZWxvdyhiLCBhKSkgewotICAgICAgICAgICAgLy8gIzMgVGhlIGIgcmVjdCBpcyBiZWxvdyBh
LgotICAgICAgICAgICAgeTEgPSBhLmJvdHRvbSgpOwotICAgICAgICAgICAgeTIgPSBiLnkoKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vICMyIEJvdGggYiBhbmQgYSBzaGFyZSBz
b21lIGNvbW1vbiB5J3MuCi0gICAgICAgICAgICB5MSA9IDA7Ci0gICAgICAgICAgICB5MiA9IDA7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblJp
Z2h0KSB7Ci0gICAgICAgIC8vICAgICAgICB8LS18ICAjMQotICAgICAgICAvLwotICAgICAgICAv
LyAgfC0tfCAgfC0tfCAgIzIKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAgICAgIHwtLXwgICMz
Ci0KLSAgICAgICAgeDEgPSBhLnJpZ2h0KCk7Ci0gICAgICAgIHgyID0gYi54KCk7Ci0KLSAgICAg
ICAgaWYgKGJlbG93KGEsIGIpKSB7Ci0gICAgICAgICAgICAvLyAjMSBUaGUgYiByZWN0IGlzIGFi
b3ZlIGEuCi0gICAgICAgICAgICB5MSA9IGEueSgpOwotICAgICAgICAgICAgeTIgPSBiLmJvdHRv
bSgpOwotICAgICAgICB9IGVsc2UgaWYgKGJlbG93KGIsIGEpKSB7Ci0gICAgICAgICAgICAvLyAj
MyBUaGUgYiByZWN0IGlzIGJlbG93IGEuCi0gICAgICAgICAgICB5MSA9IGEuYm90dG9tKCk7Ci0g
ICAgICAgICAgICB5MiA9IGIueSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
IzIgQm90aCBiIGFuZCBhIHNoYXJlIHNvbWUgY29tbW9uIHkncy4KLSAgICAgICAgICAgIHkxID0g
MDsKLSAgICAgICAgICAgIHkyID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZGlyZWN0
aW9uID09IEZvY3VzRGlyZWN0aW9uVXApIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAjMSAg
ICAjMiAgICAjMwotICAgICAgICAvLwotICAgICAgICAvLyAgfC0tfCAgfC0tfCAgfC0tfAotICAg
ICAgICAvLwotICAgICAgICAvLyAgICAgICAgfC0tfAotCi0gICAgICAgIHkxID0gYS55KCk7Ci0g
ICAgICAgIHkyID0gYi5ib3R0b20oKTsKLQotICAgICAgICBpZiAocmlnaHRPZihhLCBiKSkgewot
ICAgICAgICAgICAgLy8gIzEgVGhlIGIgcmVjdCBpcyB0byB0aGUgbGVmdCBvZiBhLgotICAgICAg
ICAgICAgeDEgPSBhLngoKTsKLSAgICAgICAgICAgIHgyID0gYi5yaWdodCgpOwotICAgICAgICB9
IGVsc2UgaWYgKHJpZ2h0T2YoYiwgYSkpIHsKLSAgICAgICAgICAgIC8vICMzIFRoZSBiIHJlY3Qg
aXMgdG8gdGhlIHJpZ2h0IG9mIGEuCi0gICAgICAgICAgICB4MSA9IGEucmlnaHQoKTsKLSAgICAg
ICAgICAgIHgyID0gYi54KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyAjMiBC
b3RoIGIgYW5kIGEgc2hhcmUgc29tZSBjb21tb24geCdzLgotICAgICAgICAgICAgeDEgPSAwOwot
ICAgICAgICAgICAgeDIgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25Eb3duKSB7Ci0gICAgICAgIC8vICAgICAgICB8LS18Ci0gICAgICAg
IC8vCi0gICAgICAgIC8vICB8LS18ICB8LS18ICB8LS18Ci0gICAgICAgIC8vCi0gICAgICAgIC8v
ICAgIzEgICAgIzIgICAgIzMKLQotICAgICAgICB5MSA9IGEuYm90dG9tKCk7Ci0gICAgICAgIHky
ID0gYi55KCk7Ci0KLSAgICAgICAgaWYgKHJpZ2h0T2YoYSwgYikpIHsKLSAgICAgICAgICAgIC8v
ICMxIFRoZSBiIHJlY3QgaXMgdG8gdGhlIGxlZnQgb2YgYS4KLSAgICAgICAgICAgIHgxID0gYS54
KCk7Ci0gICAgICAgICAgICB4MiA9IGIucmlnaHQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChyaWdo
dE9mKGIsIGEpKSB7Ci0gICAgICAgICAgICAvLyAjMyBUaGUgYiByZWN0IGlzIHRvIHRoZSByaWdo
dCBvZiBhCi0gICAgICAgICAgICB4MSA9IGEucmlnaHQoKTsKLSAgICAgICAgICAgIHgyID0gYi54
KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyAjMiBCb3RoIGIgYW5kIGEgc2hh
cmUgc29tZSBjb21tb24geCdzLgotICAgICAgICAgICAgeDEgPSAwOwotICAgICAgICAgICAgeDIg
PSAwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyBsb25nIGR4ID0geDEgLSB4MjsKLSAg
ICBsb25nIGxvbmcgZHkgPSB5MSAtIHkyOwotCi0gICAgbG9uZyBsb25nIGRpc3RhbmNlID0gKGR4
ICogZHgpICsgKGR5ICogZHkpOwotCi0gICAgaWYgKGRpc3RhbmNlIDwgMCkKLSAgICAgICAgZGlz
dGFuY2UgKj0gLTE7Ci0KLSAgICByZXR1cm4gZGlzdGFuY2U7Ci19Ci0KLXN0YXRpYyBib29sIGlz
UmVjdEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYg
Y3VyUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCkKLXsKLSAgICBJbnRQb2ludCBjZW50
ZXIodGFyZ2V0UmVjdC5jZW50ZXIoKSk7Ci0gICAgaW50IHRhcmdldE1pZGRsZSA9IGlzSG9yaXpv
bnRhbE1vdmUoZGlyZWN0aW9uKSA/IGNlbnRlci54KCkgOiBjZW50ZXIueSgpOwotCi0gICAgc3dp
dGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTGVmdDoKLSAgICAgICAg
cmV0dXJuIHRhcmdldE1pZGRsZSA8IGN1clJlY3QueCgpOwotICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25SaWdodDoKLSAgICAgICAgcmV0dXJuIHRhcmdldE1pZGRsZSA+IGN1clJlY3QucmlnaHQoKTsK
LSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6Ci0gICAgICAgIHJldHVybiB0YXJnZXRNaWRkbGUg
PCBjdXJSZWN0LnkoKTsKLSAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKLSAgICAgICAgcmV0
dXJuIHRhcmdldE1pZGRsZSA+IGN1clJlY3QuYm90dG9tKCk7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiAvLyBDaGVja3MgaWYgfG5vZGV8IGlzIG9mZnNjcmVlbiB0aGUgdmlzaWJsZSBhcmVhICh2aWV3
cG9ydCkgb2YgaXRzIGNvbnRhaW5lcgogLy8gZG9jdW1lbnQuIEluIGNhc2UgaXQgaXMsIG9uZSBj
YW4gc2Nyb2xsIGluIGRpcmVjdGlvbiBvciB0YWtlIGFueSBkaWZmZXJlbnQKIC8vIGRlc2lyZWQg
YWN0aW9uIGxhdGVyIG9uLgpAQCAtNDc5LDkyICsyNjAsNCBAQCBib29sIHNjcm9sbEluRGlyZWN0
aW9uKEZyYW1lKiBmcmFtZSwgRm9jCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2Nyb2xsUmVjdXJzaXZlbHkoc2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxCeUxpbmUpOwogfQogCi12
b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgLy8gTk9URTogRWxl
bWVudCdzIHNjcm9sbEludG9WaWV3IG1ldGhvZCBjb3VsZCBoYWQgYmVlbiB1c2VkIGhlcmUsIGJ1
dAotICAgIC8vIGl0IGlzIHByZWZlcmFibGUgdG8gaW5mbGF0ZSB8ZWxlbWVudHwncyBib3VuZGlu
ZyByZWN0IGEgYml0IGJlZm9yZQotICAgIC8vIHNjcm9sbGluZyBpdCBmb3IgYWNjdXJhdGUgcmVh
c29uLgotICAgIC8vIEVsZW1lbnQncyBzY3JvbGxJbnRvVmlldyBtZXRob2QgZG9lcyBub3QgcHJv
dmlkZSB0aGlzIGZsZXhpYmlsaXR5LgotICAgIEludFJlY3QgYm91bmRzID0gZWxlbWVudC0+Z2V0
UmVjdCgpOwotICAgIGJvdW5kcy5pbmZsYXRlKGZ1ZGdlRmFjdG9yKCkpOwotICAgIGVsZW1lbnQt
PnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRz
KTsKLX0KLQotYm9vbCBpc0luUm9vdERvY3VtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBEb2N1bWVudCogcm9vdERvY3VtZW50
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAg
ICByZXR1cm4gbm9kZS0+ZG9jdW1lbnQoKSA9PSByb290RG9jdW1lbnQ7Ci19Ci0KLXN0YXRpYyB2
b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYgYSwgSW50UmVjdCYgYikKLXsKLSAgICBp
ZiAoIWEuaW50ZXJzZWN0cyhiKSB8fCBhLmNvbnRhaW5zKGIpIHx8IGIuY29udGFpbnMoYSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGludCBkZWZsYXRlRmFjdG9yID0gLWZ1ZGdlRmFjdG9yKCk7
Ci0KLSAgICAvLyBBdm9pZCBuZWdhdGl2ZSB3aWR0aCBvciBoZWlnaHQgdmFsdWVzLgotICAgIGlm
ICgoYS53aWR0aCgpICsgMiAqIGRlZmxhdGVGYWN0b3IgPiAwKSAmJiAoYS5oZWlnaHQoKSArIDIg
KiBkZWZsYXRlRmFjdG9yID4gMCkpCi0gICAgICAgIGEuaW5mbGF0ZShkZWZsYXRlRmFjdG9yKTsK
LQotICAgIGlmICgoYi53aWR0aCgpICsgMiAqIGRlZmxhdGVGYWN0b3IgPiAwKSAmJiAoYi5oZWln
aHQoKSArIDIgKiBkZWZsYXRlRmFjdG9yID4gMCkpCi0gICAgICAgIGIuaW5mbGF0ZShkZWZsYXRl
RmFjdG9yKTsKLX0KLQotc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9k
ZSogbm9kZSwgY29uc3QgSW50UmVjdCYgY3VyUmVjdCkKLXsKLSAgICBBU1NFUlQobm9kZSB8fCBu
b2RlLT5yZW5kZXJlcigpKTsKLQotICAgIGlmIChjdXJSZWN0LngoKSA+PSAwICYmIGN1clJlY3Qu
eSgpID49IDApCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYm9vbCBjYW5CZVNjcm9sbGVk
ID0gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KTsKLSAgICBmb3IgKDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7
Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlcikt
PmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKSB7Ci0gICAgICAgICAgICBjYW5C
ZVNjcm9sbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGNhbkJlU2Nyb2xsZWQ7Ci19Ci0KLWJvb2wgaXNTY3JvbGxhYmxlQ29udGFp
bmVyTm9kZShOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
KSB7Ci0gICAgICAgIHJldHVybiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKQotICAgICAgICAgICAg
ICYmIG5vZGUtPmhhc0NoaWxkTm9kZXMoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIGlzTm9kZURlZXBEZXNjZW5kYW50
T2ZEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogYmFzZURvY3VtZW50KQotewotICAgIGlm
ICghbm9kZSB8fCAhYmFzZURvY3VtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBi
b29sIGRlc2NlbmRhbnQgPSBiYXNlRG9jdW1lbnQgPT0gbm9kZS0+ZG9jdW1lbnQoKTsKLQotICAg
IEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwot
ICAgIHdoaWxlICghZGVzY2VuZGFudCkgewotICAgICAgICBFbGVtZW50KiBkb2N1bWVudE93bmVy
ID0gY3VycmVudEVsZW1lbnQtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOwotICAgICAgICBp
ZiAoIWRvY3VtZW50T3duZXIpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZXNjZW5k
YW50ID0gZG9jdW1lbnRPd25lci0+ZG9jdW1lbnQoKSA9PSBiYXNlRG9jdW1lbnQ7Ci0gICAgICAg
IGN1cnJlbnRFbGVtZW50ID0gZG9jdW1lbnRPd25lcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGVz
Y2VuZGFudDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmgJKHJldmlzaW9uIDcxODU1KQorKysgV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwxMyArMTI5LDggQEAgc3RydWN0IEZvY3Vz
Q2FuZGlkYXRlIHsKICAgICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCi12
b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBz
dGFydCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9u
KEZyYW1lKiwgRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUg
PSBGb2N1c0NhbmRpZGF0ZSgpKTsKLXZvaWQgc2Nyb2xsSW50b1ZpZXcoRWxlbWVudCopOwogYm9v
bCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqKTsKLWJvb2wgaXNJblJvb3REb2N1bWVudChOb2RlKik7
Ci1ib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoTm9kZSopOwotYm9vbCBpc05vZGVEZWVw
RGVzY2VuZGFudE9mRG9jdW1lbnQoTm9kZSosIERvY3VtZW50Kik7CiAKIH0gLy8gbmFtc3BhY2Ug
V2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74551</attachid>
            <date>2010-11-22 07:19:30 -0800</date>
            <delta_ts>2010-11-23 04:57:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>49442.patch</filename>
            <type>text/plain</type>
            <size>22267</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjUyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMjIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwYXRpYWwgTmF2aWdhdGlvbjogQ29kZSBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQ0MgorCisgICAgICAgIFJlbW92ZSBjb2RlIHRo
YXQgaXMgbm90IHVzZWQgYW55bW9yZSBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC83MjUyMi4KKyAgICAgICAgQWRkZWQgY29uc3QgdG8gY2FuQmVTY3JvbGxlZEludG9WaWV3
LgorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIG9ubHkgY29kZSBjbGVhbnVw
LgorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5CZVNjcm9sbGVkSW50b1ZpZXcpOgorICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKwogMjAxMC0xMS0yMiAgWWFlbCBBaGFyb24gIDx5YWVs
LmFoYXJvbkBub2tpYS5jb20+LCBDaGFuZyBTaHUgIDxjaGFuZy5zaHVAbm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBXZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNzI1MjYpCisrKyBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDE5NyArMjkyLDYgQEAgYm9vbCBGb2N1c0NvbnRy
b2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
dm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluU2FtZUNvbnRhaW5lcihjb25zdCBGb2N1c0NhbmRp
ZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKLXsKLSAgICBpZiAoY2xv
c2VzdC5pc051bGwoKSkgewotICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPT0gY2xvc2VzdC5h
bGlnbm1lbnQpIHsKLSAgICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlz
dGFuY2UpCi0gICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LmFsaWdubWVu
dCkKLSAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKLX0KLQotc3RhdGljIHZvaWQgdXBkYXRl
Rm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5k
aWRhdGUmIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCi17Ci0gICAgLy8gRmly
c3QsIGNoZWNrIHRoZSBjb21tb24gY2FzZTogbmVpdGhlciBjYW5kaWRhdGUgbm9yIGNsb3Nlc3Qg
YXJlCi0gICAgLy8gaW5zaWRlIHNjcm9sbGFibGUgY29udGVudCwgdGhlbiBubyBuZWVkIHRvIGNh
cmUgYWJvdXQgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveAotICAgIC8vIGhldXJpc3RpY3Mgb3IgcGFy
ZW50e0Rpc3RhbmNlLEFsaWdubWVudH0sIGJ1dCBvbmx5IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQu
Ci0gICAgaWYgKCFjYW5kaWRhdGUuaW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgJiYgIWNsb3Nlc3Qu
aW5TY3JvbGxhYmxlQ29udGFpbmVyKCkpIHsKLSAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJ
blNhbWVDb250YWluZXIoY2FuZGlkYXRlLCBjbG9zZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGJvb2wgc2FtZUNvbnRhaW5lciA9IGNhbmRpZGF0ZS5kb2N1bWVudCgpID09IGNs
b3Nlc3QuZG9jdW1lbnQoKSAmJiBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBj
bG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7Ci0KLSAgICAvLyBTZWNvbmQsIGlmIGNhbmRp
ZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNhbWUgImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJh
bWUgb3IgYW55Ci0gICAgLy8gc2Nyb2xsYWJsZSBibG9jayBlbGVtZW50KSwgd2UgY2FuIGhhbmRs
ZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgotICAgIGlmIChzYW1lQ29udGFpbmVyKSB7Ci0gICAgICAg
IHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKGNhbmRpZGF0ZSwgY2xvc2VzdCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBMYXN0LCB3ZSBhcmUgY29uc2lkZXJp
bmcgbW92aW5nIHRvIGEgY2FuZGlkYXRlIGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQgZW5jbG9zaW5n
Ci0gICAgLy8gc2Nyb2xsYWJsZSBib3ggdGhhbiBjbG9zZXN0LgotICAgIGJvb2wgaXNJbklubmVy
RG9jdW1lbnQgPSAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSk7Ci0KLSAgICBib29sIHNh
bWVDb250YWluZXJBc0NhbmRpZGF0ZSA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUt
PmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkgOgotICAgICAgICBmb2N1c2VkTm9k
ZS0+aXNEZXNjZW5kYW50T2YoY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOwotCi0g
ICAgYm9vbCBzYW1lQ29udGFpbmVyQXNDbG9zZXN0ID0gaXNJbklubmVyRG9jdW1lbnQgPyBmb2N1
c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3VtZW50KCkgOgotICAgICAgICBmb2N1
c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsK
LQotICAgIC8vIHNhbWVDb250YWluZXJBc0NhbmRpZGF0ZSBhbmQgc2FtZUNvbnRhaW5lckFzQ2xv
c2VzdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgotICAgIEFTU0VSVCghKHNhbWVDb250YWluZXJB
c0NhbmRpZGF0ZSAmJiBzYW1lQ29udGFpbmVyQXNDbG9zZXN0KSk7Ci0KLSAgICBpZiAoc2FtZUNv
bnRhaW5lckFzQ2FuZGlkYXRlKSB7Ci0gICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCkgewot
ICAgICAgICAvLyBOb3RoaW5nIHRvIGJlIGRvbmUuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBOT1RFOiAhc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlICYmICFzYW1lQ29udGFpbmVy
QXNDbG9zZXN0Ci0gICAgLy8gSWYgZGlzdGFuY2UgaXMgc2hvcnRlciwgYW5kIHdlIGFyZSB0YWxr
aW5nIGFib3V0IHNjcm9sbGFibGUgY29udGFpbmVyLAotICAgIC8vIGxldHMgY29tcGFyZSBwYXJl
bnQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBiZWZvcmUgYW55dGhpbmcuCi0gICAgaWYgKGNhbmRp
ZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpIHsKLSAgICAgICAgaWYgKGNhbmRpZGF0
ZS5hbGlnbm1lbnQgPj0gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQKLSAgICAgICAgIHx8IGNhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPT0gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpIHsKLSAgICAg
ICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBhcmVudERpc3RhbmNlIDwgY2xvc2VzdC5k
aXN0YW5jZSkgewotICAgICAgICBpZiAoY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA+PSBjbG9z
ZXN0LmFsaWdubWVudCkgewotICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3Vz
ZWROb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0LCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQotewot
ICAgIEFTU0VSVChvdXRlcik7Ci0gICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKQot
ICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykKLSAg
ICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKQotICAg
ICAgICB8fCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNhbmRpZGF0ZVBhcmVudC5ub2RlKSk7
Ci0KLSAgICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0IGlm
IHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KLSAgICBOb2RlKiBub2RlID0gb3V0ZXI7Ci0gICAgd2hp
bGUgKG5vZGUpIHsKLQotICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KLSAgICAgICAg
aWYgKG5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkgewotICAgICAgICAgICAgZGVlcEZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24obm9kZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZl
bnQsIGNsb3Nlc3QpOwotCi0gICAgICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUu
Zy4gPGRpdj4sIGV0YykgY2FzZS4KLSAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250
YWluZXJOb2RlKG5vZGUpKSB7Ci0gICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRp
cmVjdGlvbihub2RlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdCk7Ci0g
ICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgfSBlbHNlIGlmIChub2RlICE9IGZvY3VzZWROb2RlICYm
IG5vZGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7Ci0gICAgICAgICAgICBGb2N1c0Nh
bmRpZGF0ZSBjYW5kaWRhdGUobm9kZSk7Ci0KLSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28g
d2F5cyB0byBpZGVudGlmeSB3ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbCBmcm9tIGRlZXBGaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uCi0gICAgICAgICAgICAvLyAoaS5lLiBwcm9jZXNzaW5n
IGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lLCBmcmFtZSBvciBhIHNjcm9sbGFibGUgYmxvY2sgZWxl
bWVudCk6Ci0KLSAgICAgICAgICAgIC8vIDEpIElmIGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVs
bCwgYW5kIGl0IGhvbGRzIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlCi0g
ICAgICAgICAgICAvLyBwYXJlbnQgY29udGFpbmVyIGVsZW1lbnQgaXRzZWxmOwotICAgICAgICAg
ICAgLy8gMikgUGFyZW50IG9mIG91dGVyIGlzIDxmcmFtZT4gb3IgPGlmcmFtZT47Ci0gICAgICAg
ICAgICAvLyAzKSBQYXJlbnQgaXMgYW55IG90aGVyIHNjcm9sbGFibGUgYmxvY2sgZWxlbWVudC4K
LSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1l
bnQ7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRl
UGFyZW50LmRpc3RhbmNlOwotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3Jv
bGxhYmxlQm94ID0gY2FuZGlkYXRlUGFyZW50Lm5vZGU7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWlzSW5Sb290RG9jdW1lbnQob3V0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4ob3V0ZXItPnBhcmVudE5vZGUo
KSkpCi0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94
ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25lckVsZW1lbnQoKSk7Ci0KLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShvdXRlci0+cGFyZW50
Tm9kZSgpKSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eCA9IG91dGVyLT5wYXJlbnROb2RlKCk7Ci0KLSAgICAgICAgICAgIC8vIEdldCBkaXN0YW5jZSBh
bmQgYWxpZ25tZW50IGZyb20gY3VycmVudCBjYW5kaWRhdGUuCi0gICAgICAgICAgICBkaXN0YW5j
ZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSk7Ci0KLSAgICAg
ICAgICAgIC8vIEJhaWwgb3V0IGlmIGRpc3RhbmNlIGlzIG1heGltdW0uCi0gICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLmRpc3RhbmNlID09IG1heERpc3RhbmNlKCkpIHsKLSAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50Tm9kZSgpKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdXBk
YXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBjbG9zZXN0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKG91
dGVyLT5wYXJlbnROb2RlKCkpOwotICAgIH0KLX0KLQotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRl
ZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm9j
dXNlZE5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKLXsKLSAgICBBU1NFUlQoY29udGFpbmVyLT5oYXNUYWdO
YW1lKGZyYW1lVGFnKQotICAgICAgICB8fCBjb250YWluZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFn
KQotICAgICAgICB8fCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpOwotCi0g
ICAgLy8gVHJhY2sgaWYgZm9jdXNlZE5vZGUgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBjdXJyZW50
IGNvbnRhaW5lciBub2RlIGJlaW5nIHByb2Nlc3NlZC4KLSAgICBib29sIGRlc2NlbmRhbnRPZkNv
bnRhaW5lciA9IGZhbHNlOwotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSAwOwotCi0gICAgLy8gSWZy
YW1lIG9yIEZyYW1lLgotICAgIGlmIChjb250YWluZXItPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8
IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7Ci0KLSAgICAgICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+
KGNvbnRhaW5lcik7Ci0gICAgICAgIGlmICghb3duZXItPmNvbnRlbnRGcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIERvY3VtZW50KiBpbm5lckRvY3VtZW50ID0gb3duZXIt
PmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoIWlubmVyRG9jdW1lbnQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZGVzY2VuZGFudE9mQ29udGFpbmVyID0g
aXNOb2RlRGVlcERlc2NlbmRhbnRPZkRvY3VtZW50KGZvY3VzZWROb2RlLCBpbm5lckRvY3VtZW50
KTsKLSAgICAgICAgZmlyc3RDaGlsZCA9IGlubmVyRG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsKLQot
ICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0YykKLSAgICB9
IGVsc2UgaWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSkgewotCi0gICAg
ICAgIGZpcnN0Q2hpbGQgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgZGVzY2Vu
ZGFudE9mQ29udGFpbmVyID0gZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbnRhaW5lcik7
Ci0gICAgfQotCi0gICAgaWYgKGRlc2NlbmRhbnRPZkNvbnRhaW5lcikgewotICAgICAgICBmaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZpcnN0Q2hpbGQsIGZvY3VzZWROb2RlLCBkaXJlY3Rp
b24sIGV2ZW50LCBjbG9zZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENo
ZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2Fu
ZGlkYXRlCi0gICAgLy8gdG8gbW92ZSBmb2N1cyB0by4gSWYgaXQgaXMsIHRoZW4gd2UgdHJhdmVy
c2UgaXRzIGlubmVyIG5vZGVzLgotICAgIEZvY3VzQ2FuZGlkYXRlIGNhbmRpZGF0ZVBhcmVudCA9
IEZvY3VzQ2FuZGlkYXRlKGNvbnRhaW5lcik7Ci0gICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJl
Y3Rpb24sIGZvY3VzZWROb2RlLCBjYW5kaWRhdGVQYXJlbnQpOwotCi0gICAgLy8gQmFpbCBvdXQg
aWYgZGlzdGFuY2UgaXMgbWF4aW11bS4KLSAgICBpZiAoY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNl
ID09IG1heERpc3RhbmNlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBDb25z
aWRlciBhbGlnbm1lbnQ/Ci0gICAgaWYgKGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5jZSA8IGNsb3Nl
c3QuZGlzdGFuY2UpCi0gICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZmlyc3RD
aGlsZCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3QsIGNhbmRpZGF0ZVBh
cmVudCk7Ci19Ci0KIHN0YXRpYyBib29sIHJlbGlucXVpc2hlc0VkaXRpbmdGb2N1cyhOb2RlICpu
b2RlKQogewogICAgIEFTU0VSVChub2RlKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDcyNTI2KQorKysgV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MywxMSArNjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5jZUZvY3Vz
RGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wg
YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50
KiwgYm9vbCBpbml0aWFsRm9jdXMpOwogCi0gICAgdm9pZCBmaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKE5vZGUqIG91dHRlciwgTm9kZSosIEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50
KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUm
IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRm9jdXNDYW5kaWRhdGUmIHBhcmVudENhbmRpZGF0ZSA9IEZvY3VzQ2FuZGlk
YXRlKCkpOwotICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSog
Y29udGFpbmVyLCBOb2RlKiBmb2N1c2VkLCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCos
IEZvY3VzQ2FuZGlkYXRlJik7Ci0KICAgICBib29sIGFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJ
bkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCwg
Rm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIGZpbmRGb2N1c0NhbmRp
ZGF0ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdS
ZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJiBjbG9z
ZXN0KTsKIApJbmRleDogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCShyZXZpc2lvbiA3MjUy
NikKKysrIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE1ICs0MSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBsb25n
IGxvbmcgc3BhdGlhbERpc3RhbmNlKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYpOwotc3RhdGljIEludFJlY3QgcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9j
dW1lbnQoUmVuZGVyT2JqZWN0Kik7CiBzdGF0aWMgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50Rm9y
UmVjdHMoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50U2l6ZSYgdmlld1NpemUpOwogc3RhdGljIGJvb2wgYXJlUmVjdHNGdWxseUFsaWduZWQo
Rm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jik7CiBzdGF0aWMg
Ym9vbCBhcmVSZWN0c1BhcnRpYWxseUFsaWduZWQoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0Jik7CiBzdGF0aWMgYm9vbCBhcmVSZWN0c01vcmVUaGFuRnVsbFNj
cmVlbkFwYXJ0KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgY3VyUmVj
dCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50U2l6ZSYgdmlld1NpemUpOwog
c3RhdGljIGJvb2wgaXNSZWN0SW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0Jik7CiBzdGF0aWMgdm9pZCBkZWZsYXRlSWZPdmVybGFwcGVkKElu
dFJlY3QmLCBJbnRSZWN0Jik7Ci1zdGF0aWMgYm9vbCBjaGVja05lZ2F0aXZlQ29vcmRzRm9yTm9k
ZShOb2RlKiwgY29uc3QgSW50UmVjdCYpOwogc3RhdGljIEludFJlY3QgcmVjdFRvQWJzb2x1dGVD
b29yZGluYXRlcyhGcmFtZSogaW5pdGlhbEZyYW1lLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIHN0
YXRpYyB2b2lkIGVudHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW5nUmVjdCwgY29uc3QgSW50UmVjdCYgcG90
ZW50aWFsUmVjdCwgSW50UG9pbnQmIGV4aXRQb2ludCwgSW50UG9pbnQmIGVudHJ5UG9pbnQpOwog
CkBAIC03MCw4OCArNjcsNiBAQCBib29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGNvbnN0
IEZyCiAgICAgcmV0dXJuIChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKSAmJiBmcmFtZS0+c2V0
dGluZ3MoKS0+aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKSk7CiB9CiAKLXZvaWQgZGlzdGFu
Y2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1
c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKQotewotICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXIg
PSBzdGFydC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyKSB7Ci0gICAgICAgIGNh
bmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBSZW5kZXJPYmplY3QqIGRlc3RSZW5kZXIgPSBjYW5kaWRhdGUubm9kZS0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAoIWRlc3RSZW5kZXIpIHsKLSAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNl
ID0gbWF4RGlzdGFuY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEludFJlY3Qg
Y3VyUmVjdCA9IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KHN0YXJ0UmVuZGVyKTsK
LSAgICBJbnRSZWN0IHRhcmdldFJlY3QgID0gcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1l
bnQoZGVzdFJlbmRlcik7Ci0KLSAgICAvLyBUaGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHR3byBj
b25zZWN1dGl2ZSBub2RlcyBjYW4gb3ZlcmxhcC4gSW4gc3VjaCBjYXNlcywKLSAgICAvLyBkZWZs
YXRlIGJvdGguCi0gICAgZGVmbGF0ZUlmT3ZlcmxhcHBlZChjdXJSZWN0LCB0YXJnZXRSZWN0KTsK
LQotICAgIC8vIElmIGVtcHR5IHJlY3RzIG9yIG5lZ2F0aXZlIHdpZHRoIG9yIGhlaWdodCwgYmFp
bCBvdXQuCi0gICAgaWYgKGN1clJlY3QuaXNFbXB0eSgpIHx8IHRhcmdldFJlY3QuaXNFbXB0eSgp
Ci0gICAgIHx8IHRhcmdldFJlY3Qud2lkdGgoKSA8PSAwIHx8IHRhcmdldFJlY3QuaGVpZ2h0KCkg
PD0gMCkgewotICAgICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gTmVnYXRpdmUgY29vcmRpbmF0ZXMgY2FuIGJl
IHVzZWQgaWYgbm9kZSBpcyBzY3JvbGxlZCB1cCBvZmZzY3JlZW4uCi0gICAgaWYgKCFjaGVja05l
Z2F0aXZlQ29vcmRzRm9yTm9kZShzdGFydCwgY3VyUmVjdCkpIHsKLSAgICAgICAgY2FuZGlkYXRl
LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoY2FuZGlkYXRlLm5vZGUsIHRhcmdldFJl
Y3QpKSB7Ci0gICAgICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IG1heERpc3RhbmNlKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzUmVjdEluRGlyZWN0aW9uKGRpcmVjdGlv
biwgY3VyUmVjdCwgdGFyZ2V0UmVjdCkpIHsKLSAgICAgICAgY2FuZGlkYXRlLmRpc3RhbmNlID0g
bWF4RGlzdGFuY2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRoZSBkaXN0
YW5jZSBiZXR3ZWVuIHR3byBub2RlcyBpcyBub3QgdG8gYmUgY29uc2lkZXJlZCBhbG9uZSB3aGVu
IGV2YWx1YXRpbmcvbG9va2luZwotICAgIC8vIGZvciB0aGUgYmVzdCBmb2N1cyBjYW5kaWRhdGUg
bm9kZS4gQWxpZ25tZW50IG9mIHJlY3RzIGNhbiBiZSBhbHNvIGEgZ29vZCBwb2ludCB0byBiZQot
ICAgIC8vIGNvbnNpZGVyZWQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgYWxnb3JpdGhtIHRvIGJlaGF2
aW9yIGluIGEgbW9yZSBpbnR1aXRpdmUgd2F5LgotICAgIEludFNpemUgdmlld1NpemUgPSBjYW5k
aWRhdGUubm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT52aXNp
YmxlQ29udGVudFJlY3QoKS5zaXplKCk7Ci0gICAgY2FuZGlkYXRlLmFsaWdubWVudCA9IGFsaWdu
bWVudEZvclJlY3RzKGRpcmVjdGlvbiwgY3VyUmVjdCwgdGFyZ2V0UmVjdCwgdmlld1NpemUpOwot
ICAgIGNhbmRpZGF0ZS5kaXN0YW5jZSA9IHNwYXRpYWxEaXN0YW5jZShkaXJlY3Rpb24sIGN1clJl
Y3QsIHRhcmdldFJlY3QpOwotfQotCi0vLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBi
ZWhhdmUgY29ycmVjdGx5IHdpdGggdHJhbnNmb3JtZWQgZnJhbWVzLgotc3RhdGljIEludFJlY3Qg
cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQoUmVuZGVyT2JqZWN0KiByZW5kZXIpCi17
Ci0gICAgQVNTRVJUKHJlbmRlciAmJiByZW5kZXItPm5vZGUoKSk7Ci0KLSAgICBJbnRSZWN0IHJl
Y3QgPSByZW5kZXItPm5vZGUoKS0+Z2V0UmVjdCgpOwotCi0gICAgLy8gSW4gY2FzZXMgd2hlbiB0
aGUgfHJlbmRlcnwncyBhc3NvY2lhdGVkIG5vZGUgaXMgaW4gYSBzY3JvbGxhYmxlIGlubmVyCi0g
ICAgLy8gZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIgaXRzIHNjcm9sbE9mZnNldCBpZiBpdCBp
cyBub3Qgb2Zmc2NyZWVuLgotICAgIE5vZGUqIG5vZGUgPSByZW5kZXItPm5vZGUoKTsKLSAgICBE
b2N1bWVudCogbWFpbkRvY3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+ZG9jdW1lbnQoKTsKLSAgICBib29sIGNvbnNpZGVyU2Nyb2xsT2Zmc2V0ID0gIShoYXNP
ZmZzY3JlZW5SZWN0KG5vZGUpICYmIG5vZGUtPmRvY3VtZW50KCkgIT0gbWFpbkRvY3VtZW50KTsK
LQotICAgIGlmIChjb25zaWRlclNjcm9sbE9mZnNldCkgewotICAgICAgICBpZiAoRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSByZW5kZXItPm5vZGUoKS0+ZG9jdW1lbnQoKS0+dmlldygpKQotICAgICAg
ICAgICAgcmVjdC5tb3ZlKC1mcmFtZVZpZXctPnNjcm9sbE9mZnNldCgpKTsKLSAgICB9Ci0KLSAg
ICAvLyBIYW5kbGUgbmVzdGVkIGZyYW1lcy4KLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHJlbmRl
ci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCkpIHsKLSAgICAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oZnJhbWUtPm93bmVyRWxlbWVudCgpKSkgewotICAgICAgICAgICAgZG8gewotICAgICAg
ICAgICAgICAgIHJlY3QubW92ZShlbGVtZW50LT5vZmZzZXRMZWZ0KCksIGVsZW1lbnQtPm9mZnNl
dFRvcCgpKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC0+b2Zmc2V0
UGFyZW50KCkpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZWN0OwotfQotCiBz
dGF0aWMgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50Rm9yUmVjdHMoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBjdXJSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKIHsKICAgICAvLyBJZiB3ZSBmb3VuZCBhIG5vZGUg
aW4gZnVsbCBhbGlnbm1lbnQsIGJ1dCBpdCBpcyB0b28gZmFyIGF3YXksIGlnbm9yZSBpdC4KQEAg
LTMyOCwxMTggKzI0Myw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByaWdodE9mKGNvbnN0IEludFJl
Y3QKICAgICByZXR1cm4gYS54KCkgPiBiLnJpZ2h0KCk7CiB9CiAKLS8vICogYSA9IEN1cnJlbnQg
Zm9jdXNlZCBub2RlJ3MgcmVjdC4KLS8vICogYiA9IEZvY3VzIGNhbmRpZGF0ZSBub2RlJ3MgcmVj
dC4KLXN0YXRpYyBsb25nIGxvbmcgc3BhdGlhbERpc3RhbmNlKEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKLXsKLSAgICBpbnQgeDEg
PSAwLCB5MSA9IDAsIHgyID0gMCwgeTIgPSAwOwotCi0gICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1
c0RpcmVjdGlvbkxlZnQpIHsKLSAgICAgICAgLy8gIzEgIHwtLXwKLSAgICAgICAgLy8KLSAgICAg
ICAgLy8gIzIgIHwtLXwgIHwtLXwKLSAgICAgICAgLy8KLSAgICAgICAgLy8gIzMgIHwtLXwKLQot
ICAgICAgICB4MSA9IGEueCgpOwotICAgICAgICB4MiA9IGIucmlnaHQoKTsKLQotICAgICAgICBp
ZiAoYmVsb3coYSwgYikpIHsKLSAgICAgICAgICAgIC8vICMxIFRoZSBhIHJlY3QgaXMgYmVsb3cg
Yi4KLSAgICAgICAgICAgIHkxID0gYS55KCk7Ci0gICAgICAgICAgICB5MiA9IGIuYm90dG9tKCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoYmVsb3coYiwgYSkpIHsKLSAgICAgICAgICAgIC8vICMzIFRo
ZSBiIHJlY3QgaXMgYmVsb3cgYS4KLSAgICAgICAgICAgIHkxID0gYS5ib3R0b20oKTsKLSAgICAg
ICAgICAgIHkyID0gYi55KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyAjMiBC
b3RoIGIgYW5kIGEgc2hhcmUgc29tZSBjb21tb24geSdzLgotICAgICAgICAgICAgeTEgPSAwOwot
ICAgICAgICAgICAgeTIgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gRm9jdXNEaXJlY3Rpb25SaWdodCkgewotICAgICAgICAvLyAgICAgICAgfC0tfCAgIzEKLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gIHwtLXwgIHwtLXwgICMyCi0gICAgICAgIC8vCi0gICAgICAg
IC8vICAgICAgICB8LS18ICAjMwotCi0gICAgICAgIHgxID0gYS5yaWdodCgpOwotICAgICAgICB4
MiA9IGIueCgpOwotCi0gICAgICAgIGlmIChiZWxvdyhhLCBiKSkgewotICAgICAgICAgICAgLy8g
IzEgVGhlIGIgcmVjdCBpcyBhYm92ZSBhLgotICAgICAgICAgICAgeTEgPSBhLnkoKTsKLSAgICAg
ICAgICAgIHkyID0gYi5ib3R0b20oKTsKLSAgICAgICAgfSBlbHNlIGlmIChiZWxvdyhiLCBhKSkg
ewotICAgICAgICAgICAgLy8gIzMgVGhlIGIgcmVjdCBpcyBiZWxvdyBhLgotICAgICAgICAgICAg
eTEgPSBhLmJvdHRvbSgpOwotICAgICAgICAgICAgeTIgPSBiLnkoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIC8vICMyIEJvdGggYiBhbmQgYSBzaGFyZSBzb21lIGNvbW1vbiB5J3Mu
Ci0gICAgICAgICAgICB5MSA9IDA7Ci0gICAgICAgICAgICB5MiA9IDA7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvblVwKSB7Ci0gICAgICAgIC8v
Ci0gICAgICAgIC8vICAgIzEgICAgIzIgICAgIzMKLSAgICAgICAgLy8KLSAgICAgICAgLy8gIHwt
LXwgIHwtLXwgIHwtLXwKLSAgICAgICAgLy8KLSAgICAgICAgLy8gICAgICAgIHwtLXwKLQotICAg
ICAgICB5MSA9IGEueSgpOwotICAgICAgICB5MiA9IGIuYm90dG9tKCk7Ci0KLSAgICAgICAgaWYg
KHJpZ2h0T2YoYSwgYikpIHsKLSAgICAgICAgICAgIC8vICMxIFRoZSBiIHJlY3QgaXMgdG8gdGhl
IGxlZnQgb2YgYS4KLSAgICAgICAgICAgIHgxID0gYS54KCk7Ci0gICAgICAgICAgICB4MiA9IGIu
cmlnaHQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChyaWdodE9mKGIsIGEpKSB7Ci0gICAgICAgICAg
ICAvLyAjMyBUaGUgYiByZWN0IGlzIHRvIHRoZSByaWdodCBvZiBhLgotICAgICAgICAgICAgeDEg
PSBhLnJpZ2h0KCk7Ci0gICAgICAgICAgICB4MiA9IGIueCgpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gIzIgQm90aCBiIGFuZCBhIHNoYXJlIHNvbWUgY29tbW9uIHgncy4KLSAg
ICAgICAgICAgIHgxID0gMDsKLSAgICAgICAgICAgIHgyID0gMDsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRG93bikgewotICAgICAgICAvLyAg
ICAgICAgfC0tfAotICAgICAgICAvLwotICAgICAgICAvLyAgfC0tfCAgfC0tfCAgfC0tfAotICAg
ICAgICAvLwotICAgICAgICAvLyAgICMxICAgICMyICAgICMzCi0KLSAgICAgICAgeTEgPSBhLmJv
dHRvbSgpOwotICAgICAgICB5MiA9IGIueSgpOwotCi0gICAgICAgIGlmIChyaWdodE9mKGEsIGIp
KSB7Ci0gICAgICAgICAgICAvLyAjMSBUaGUgYiByZWN0IGlzIHRvIHRoZSBsZWZ0IG9mIGEuCi0g
ICAgICAgICAgICB4MSA9IGEueCgpOwotICAgICAgICAgICAgeDIgPSBiLnJpZ2h0KCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAocmlnaHRPZihiLCBhKSkgewotICAgICAgICAgICAgLy8gIzMgVGhlIGIg
cmVjdCBpcyB0byB0aGUgcmlnaHQgb2YgYQotICAgICAgICAgICAgeDEgPSBhLnJpZ2h0KCk7Ci0g
ICAgICAgICAgICB4MiA9IGIueCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
IzIgQm90aCBiIGFuZCBhIHNoYXJlIHNvbWUgY29tbW9uIHgncy4KLSAgICAgICAgICAgIHgxID0g
MDsKLSAgICAgICAgICAgIHgyID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgbG9u
ZyBkeCA9IHgxIC0geDI7Ci0gICAgbG9uZyBsb25nIGR5ID0geTEgLSB5MjsKLQotICAgIGxvbmcg
bG9uZyBkaXN0YW5jZSA9IChkeCAqIGR4KSArIChkeSAqIGR5KTsKLQotICAgIGlmIChkaXN0YW5j
ZSA8IDApCi0gICAgICAgIGRpc3RhbmNlICo9IC0xOwotCi0gICAgcmV0dXJuIGRpc3RhbmNlOwot
fQotCiBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24sIGNvbnN0IEludFJlY3QmIGN1clJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QpCiB7
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKQEAgLTU3MiwyNiArMzc1LDYgQEAgYm9vbCBzY3Jv
bGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50KiBlbGVtZW50KQotewotICAgIC8vIE5PVEU6IEVs
ZW1lbnQncyBzY3JvbGxJbnRvVmlldyBtZXRob2QgY291bGQgaGFkIGJlZW4gdXNlZCBoZXJlLCBi
dXQKLSAgICAvLyBpdCBpcyBwcmVmZXJhYmxlIHRvIGluZmxhdGUgfGVsZW1lbnR8J3MgYm91bmRp
bmcgcmVjdCBhIGJpdCBiZWZvcmUKLSAgICAvLyBzY3JvbGxpbmcgaXQgZm9yIGFjY3VyYXRlIHJl
YXNvbi4KLSAgICAvLyBFbGVtZW50J3Mgc2Nyb2xsSW50b1ZpZXcgbWV0aG9kIGRvZXMgbm90IHBy
b3ZpZGUgdGhpcyBmbGV4aWJpbGl0eS4KLSAgICBJbnRSZWN0IGJvdW5kcyA9IGVsZW1lbnQtPmdl
dFJlY3QoKTsKLSAgICBib3VuZHMuaW5mbGF0ZShmdWRnZUZhY3RvcigpKTsKLSAgICBlbGVtZW50
LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5k
cyk7Ci19Ci0KLWJvb2wgaXNJblJvb3REb2N1bWVudChOb2RlKiBub2RlKQotewotICAgIGlmICgh
bm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIHJvb3REb2N1bWVu
dCA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7Ci0g
ICAgcmV0dXJuIG5vZGUtPmRvY3VtZW50KCkgPT0gcm9vdERvY3VtZW50OwotfQotCiBzdGF0aWMg
dm9pZCBkZWZsYXRlSWZPdmVybGFwcGVkKEludFJlY3QmIGEsIEludFJlY3QmIGIpCiB7CiAgICAg
aWYgKCFhLmludGVyc2VjdHMoYikgfHwgYS5jb250YWlucyhiKSB8fCBiLmNvbnRhaW5zKGEpKQpA
QCAtNjA3LDI2ICszOTAsNiBAQCBzdGF0aWMgdm9pZCBkZWZsYXRlSWZPdmVybGFwcGVkKEludFJl
Y3QmCiAgICAgICAgIGIuaW5mbGF0ZShkZWZsYXRlRmFjdG9yKTsKIH0KIAotc3RhdGljIGJvb2wg
Y2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9kZSogbm9kZSwgY29uc3QgSW50UmVjdCYgY3Vy
UmVjdCkKLXsKLSAgICBBU1NFUlQobm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKLQotICAgIGlm
IChjdXJSZWN0LngoKSA+PSAwICYmIGN1clJlY3QueSgpID49IDApCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgYm9vbCBjYW5CZVNjcm9sbGVkID0gZmFsc2U7Ci0KLSAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBmb3IgKDsgcmVuZGVyZXI7IHJl
bmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci0+aXNC
b3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxh
YmxlQXJlYSgpKSB7Ci0gICAgICAgICAgICBjYW5CZVNjcm9sbGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGNhbkJlU2Nyb2xsZWQ7
Ci19Ci0KIGJvb2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjb25zdCBOb2RlKiBub2RlKQog
ewogICAgIGlmICghbm9kZSkKQEAgLTY0MCwyNiArNDAzLDYgQEAgYm9vbCBpc1Njcm9sbGFibGVD
b250YWluZXJOb2RlKGNvbnN0IE5vZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBpc05v
ZGVEZWVwRGVzY2VuZGFudE9mRG9jdW1lbnQoTm9kZSogbm9kZSwgRG9jdW1lbnQqIGJhc2VEb2N1
bWVudCkKLXsKLSAgICBpZiAoIW5vZGUgfHwgIWJhc2VEb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgYm9vbCBkZXNjZW5kYW50ID0gYmFzZURvY3VtZW50ID09IG5vZGUtPmRv
Y3VtZW50KCk7Ci0KLSAgICBFbGVtZW50KiBjdXJyZW50RWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihub2RlKTsKLSAgICB3aGlsZSAoIWRlc2NlbmRhbnQpIHsKLSAgICAgICAgRWxlbWVu
dCogZG9jdW1lbnRPd25lciA9IGN1cnJlbnRFbGVtZW50LT5kb2N1bWVudCgpLT5vd25lckVsZW1l
bnQoKTsKLSAgICAgICAgaWYgKCFkb2N1bWVudE93bmVyKQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgZGVzY2VuZGFudCA9IGRvY3VtZW50T3duZXItPmRvY3VtZW50KCkgPT0gYmFzZURv
Y3VtZW50OwotICAgICAgICBjdXJyZW50RWxlbWVudCA9IGRvY3VtZW50T3duZXI7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGRlc2NlbmRhbnQ7Ci19Ci0KIE5vZGUqIHNjcm9sbGFibGVFbmNsb3NpbmdC
b3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
biwgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CkBAIC04NzcsNyArNjIwLDcgQEAg
dm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIAogICAgIGNhbmRpZGF0ZS5h
bGlnbm1lbnQgPSBhbGlnbm1lbnRGb3JSZWN0cyhkaXJlY3Rpb24sIGN1cnJlbnRSZWN0LCBub2Rl
UmVjdCwgdmlld1NpemUpOwogfQogCi1ib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCitib29sIGNhbkJl
U2Nyb2xsZWRJbnRvVmlldyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2Fu
ZGlkYXRlJiBjYW5kaWRhdGUpCiB7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZS5ub2RlICYmIGhhc09m
ZnNjcmVlblJlY3QoY2FuZGlkYXRlLm5vZGUpKTsKICAgICBJbnRSZWN0IGNhbmRpZGF0ZVJlY3Qg
PSBjYW5kaWRhdGUucmVjdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCShyZXZpc2lv
biA3MjUyNikKKysrIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIsMTIgKzEyMiw5IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgSW50
UmVjdCByZWN0OwogfTsKIAotdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgTm9kZSogc3RhcnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogYm9v
bCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsKIGJvb2wgc2Nyb2xs
SW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbik7Ci12b2lkIHNjcm9s
bEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKiwgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKLWJvb2wgaXNJblJvb3RE
b2N1bWVudChOb2RlKik7CiBib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29uc3QgTm9k
ZSopOwogYm9vbCBpc05vZGVEZWVwRGVzY2VuZGFudE9mRG9jdW1lbnQoTm9kZSosIERvY3VtZW50
Kik7CiBOb2RlKiBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRp
cmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgTm9kZSogbm9kZSk7CkBAIC0xMzYsNyArMTMzLDcgQEAg
Ym9vbCBjYW5TY3JvbGxJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbgogSW50UmVjdCBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcyhOb2RlKiwgYm9vbCBpZ25vcmVCb3JkZXIgPSBmYWxzZSk7
CiBJbnRSZWN0IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogdm9pZCBk
aXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVu
dCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7Ci1ib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmll
dyhGb2N1c0RpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmKTsKK2Jvb2wgY2FuQmVTY3JvbGxlZElu
dG9WaWV3KEZvY3VzRGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYpOwogSW50UmVjdCB2
aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3Rh
cnRpbmdSZWN0KTsKIH0gLy8gbmFtc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>