<?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>5860</bug_id>
          
          <creation_ts>2005-11-28 17:18:13 -0800</creation_ts>
          <short_desc>feComponentTransfer doesn&apos;t work</short_desc>
          <delta_ts>2006-04-25 14:09:08 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>5857</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24794</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2005-11-28 17:18:13 -0800</bug_when>
    <thetext>feComponentTransfer is incomplete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25629</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-06 04:56:47 -0800</bug_when>
    <thetext>Olliver has a patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25709</commentid>
    <comment_count>2</comment_count>
      <attachid>4999</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2005-12-08 03:05:26 -0800</bug_when>
    <thetext>Created attachment 4999
First run of componenet transfer patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25716</commentid>
    <comment_count>3</comment_count>
      <attachid>5001</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2005-12-08 04:18:06 -0800</bug_when>
    <thetext>Created attachment 5001
Second run of patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25719</commentid>
    <comment_count>4</comment_count>
      <attachid>5001</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 04:31:07 -0800</bug_when>
    <thetext>Comment on attachment 5001
Second run of patch

What a beautiful patch!  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25722</commentid>
    <comment_count>5</comment_count>
      <attachid>5001</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 04:54:42 -0800</bug_when>
    <thetext>Comment on attachment 5001
Second run of patch

Hum... so the code may be beautiful, but testing it out locally, I hit two
unexpected warnings:
2005-12-08 04:49:53.613 Safari[27885] WARNING: Unknown function type for
feComponentTransfer
2005-12-08 04:49:53.636 Safari[27885] Failed to find image for name:
__previousOutput__

And *massive* strangeness trying to resize the Safari window.  Something&apos;s
wrong, and we&apos;ll have to fix it before landing this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25723</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-08 05:02:22 -0800</bug_when>
    <thetext>Hum... eventually I got this patch to go down hard (by resizing the safari window):

2005-12-08 04:57:43.111 Safari[27885] Failed to find image for name: __previousOutput__
2005-12-08 04:58:56.332 Safari[27885] Failed to find image for name: __previousOutput__
Safari(27885,0xa000ed68) malloc: *** vm_allocate(size=8421376) failed (error code=3)
Safari(27885,0xa000ed68) malloc: *** error: can&apos;t allocate region
Safari(27885,0xa000ed68) malloc: *** set a breakpoint in szone_error to debug

Date/Time:      2005-12-08 04:59:46.551 -0800
OS Version:     10.4.4 (Build 8G16)
Report Version: 3

Command: Safari
Path:    /Applications/Safari.app/Contents/MacOS/Safari
Parent:  perl [27803]

Version:        2.0.3 (417.4)
Build Version:  2
Project Name:   WebBrowser
Source Version: 4170400

PID:    27885
Thread: 0

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_PROTECTION_FAILURE (0x0002) at 0x00000000

Thread 0 Crashed:
0   com.apple.QuartzCore     	0x942793c8 fe_tree_node_new + 48
1   com.apple.QuartzCore     	0x94214c80 fe_tree_new_image + 76
2   com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
3   com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
4   com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
5   com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
6   com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
7   com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
8   com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
9   com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
10  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
11  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
12  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
13  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
14  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
15  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
16  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
17  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
18  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
19  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
20  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
21  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
22  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
23  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
24  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
25  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
26  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
27  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
28  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
29  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
30  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
31  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
32  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
33  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
34  com.apple.QuartzCore     	0x9426ad2c fe_tree_new_sampler + 96
35  com.apple.QuartzCore     	0x9421500c fe_tree_new_image + 984
36  com.apple.QuartzCore     	0x9427929c fe_tree_prepare_image + 56
37  com.apple.QuartzCore     	0x94280994 fe_tree_render_image + 196
38  com.apple.QuartzCore     	0x942808ac fe_image_render_ + 176
39  com.apple.QuartzCore     	0x942807e8 fe_image_render + 164
40  com.apple.QuartzCore     	0x9429eab4 provider_ensure_data + 236
41  com.apple.QuartzCore     	0x942b092c provider_get_byte_pointer + 24
42  com.apple.CoreGraphics   	0x903c50a0 CGAccessSessionGetBytePointer + 88
43  com.apple.CoreGraphics   	0x903d1f74 img_data_lock + 1240
44  com.apple.CoreGraphics   	0x903d1370 CGSImageDataLockWithReference + 156
45  libRIP.A.dylib           	0x94665538 ripc_AcquireImage + 916
46  libRIP.A.dylib           	0x94663cd0 ripc_DrawImage + 2320
47  com.apple.CoreGraphics   	0x903d1100 CGContextDelegateDrawImage + 76
48  com.apple.CoreGraphics   	0x903d1068 CGContextDrawImage + 340
49  com.apple.QuartzCore     	0x94267e18 -[CICGContextImpl render:] + 636
50  com.apple.QuartzCore     	0x94296cb0 -[CIContext drawImage:inRect:fromRect:] + 512
51  com.apple.QuartzCore     	0x94299474 -[CIContext drawImage:atPoint:fromRect:] + 140
52  com.apple.WebCore        	0x01a11c0c KCanvasFilterQuartz::applyFilter(KRenderingDevice*, QRect 
const&amp;) + 1032 (KCanvasFilterQuartz.mm:142)
53  com.apple.WebCore        	0x01a15b50 KCanvasItemQuartz::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 1944 (KCanvasItemQuartz.mm:244)
54  com.apple.WebCore        	0x01838180 khtml::RenderBox::paint(khtml::RenderObject::PaintInfo&amp;, 
int, int) + 168 (render_box.cpp:283)
55  com.apple.WebCore        	0x01a17760 KCanvasContainerQuartz::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 3640 (KCanvasResourcesQuartz.mm:135)
56  com.apple.WebCore        	0x01838180 khtml::RenderBox::paint(khtml::RenderObject::PaintInfo&amp;, 
int, int) + 168 (render_box.cpp:283)
57  com.apple.WebCore        	0x01a17760 KCanvasContainerQuartz::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 3640 (KCanvasResourcesQuartz.mm:135)
58  com.apple.WebCore        	0x01838180 khtml::RenderBox::paint(khtml::RenderObject::PaintInfo&amp;, 
int, int) + 168 (render_box.cpp:283)
59  com.apple.WebCore        	0x01a17760 KCanvasContainerQuartz::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 3640 (KCanvasResourcesQuartz.mm:135)
60  com.apple.WebCore        	0x01838180 khtml::RenderBox::paint(khtml::RenderObject::PaintInfo&amp;, 
int, int) + 168 (render_box.cpp:283)
61  com.apple.WebCore        	0x01a17760 KCanvasContainerQuartz::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 3640 (KCanvasResourcesQuartz.mm:135)
62  com.apple.WebCore        	0x0190a1f4 khtml::RenderCanvas::paint
(khtml::RenderObject::PaintInfo&amp;, int, int) + 332 (render_canvas.cpp:220)
63  com.apple.WebCore        	0x018dba10 khtml::RenderLayer::paintLayer(khtml::RenderLayer*, 
QPainter*, QRect const&amp;, bool, bool, khtml::RenderObject*) + 1520 (render_layer.cpp:1037)
64  com.apple.WebCore        	0x018dbbf0 khtml::RenderLayer::paint(QPainter*, QRect const&amp;, bool, 
khtml::RenderObject*) + 72 (render_layer.cpp:937)
65  com.apple.WebCore        	0x016c14dc KWQKHTMLPart::paint(QPainter*, QRect const&amp;) + 788 
(KWQKHTMLPart.mm:1170)
66  com.apple.WebCore        	0x01723134 -[WebCoreBridge drawRect:withPainter:] + 124 
(WebCoreBridge.mm:736)
67  com.apple.WebCore        	0x01723264 -[WebCoreBridge drawRect:] + 252 (WebCoreBridge.mm:
744)
68  com.apple.WebKit         	0x0037cedc -[WebHTMLView drawRect:] + 980 (WebHTMLView.m:2457)
69  com.apple.AppKit         	0x936c1e70 -[NSView _drawRect:clip:] + 2128
70  com.apple.AppKit         	0x936c1430 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 404
71  com.apple.WebKit         	0x00372698 -[WebHTMLView(WebPrivate) 
_recursiveDisplayAllDirtyWithLockFocus:visRect:] + 692 (WebHTMLView.m:813)
72  com.apple.AppKit         	0x936c4178 _recursiveDisplayInRect2 + 84
73  com.apple.CoreFoundation 	0x9076d960 CFArrayApplyFunction + 416
74  com.apple.AppKit         	0x936c1544 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 680
75  com.apple.AppKit         	0x936c4178 _recursiveDisplayInRect2 + 84
76  com.apple.CoreFoundation 	0x9076d960 CFArrayApplyFunction + 416
77  com.apple.AppKit         	0x936c1544 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 680
78  com.apple.AppKit         	0x936c4178 _recursiveDisplayInRect2 + 84
79  com.apple.CoreFoundation 	0x9076d960 CFArrayApplyFunction + 416
80  com.apple.AppKit         	0x936c1544 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 680
81  com.apple.AppKit         	0x936c4178 _recursiveDisplayInRect2 + 84
82  com.apple.CoreFoundation 	0x9076d960 CFArrayApplyFunction + 416
83  com.apple.AppKit         	0x936c1544 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 680
84  com.apple.AppKit         	0x936c4178 _recursiveDisplayInRect2 + 84
85  com.apple.CoreFoundation 	0x9076d960 CFArrayApplyFunction + 416
86  com.apple.AppKit         	0x936c1544 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] 
+ 680
87  com.apple.AppKit         	0x936c09f8 -[NSView 
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 196
88  com.apple.AppKit         	0x936c0fc0 -[NSView 
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 1676
89  com.apple.AppKit         	0x936c0fc0 -[NSView 
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 1676
90  com.apple.AppKit         	0x936e165c -[NSThemeFrame 
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 192
91  com.apple.AppKit         	0x936ba66c -[NSView 
_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 384
92  com.apple.AppKit         	0x936af960 -[NSView displayIfNeeded] + 248
93  com.apple.AppKit         	0x93770ea8 -[NSThemeFrame handleSetFrameCommonRedisplay] + 
256
94  com.apple.AppKit         	0x936bd5fc -[NSWindow _setFrameCommon:display:stashSize:] + 708
95  com.apple.AppKit         	0x936bd324 -[NSWindow setFrame:display:] + 40
96  com.apple.Safari         	0x00010098 0x1000 + 61592
97  com.apple.AppKit         	0x937c7c54 -[NSTitledFrame resizeWithEvent:] + 972
98  com.apple.AppKit         	0x937c7328 -[NSTitledFrame mouseDown:] + 140
99  com.apple.AppKit         	0x937c7288 -[NSThemeFrame mouseDown:] + 188
100 com.apple.AppKit         	0x936d7ea8 -[NSWindow sendEvent:] + 4616
101 com.apple.Safari         	0x00022104 0x1000 + 135428
102 com.apple.AppKit         	0x93680ef4 -[NSApplication sendEvent:] + 4172
103 com.apple.Safari         	0x00021c08 0x1000 + 134152
104 com.apple.AppKit         	0x93678330 -[NSApplication run] + 508
105 com.apple.AppKit         	0x93768e60 NSApplicationMain + 452
106 com.apple.Safari         	0x0005cf50 0x1000 + 376656
107 com.apple.Safari         	0x0005cdf4 0x1000 + 376308

Thread 1:
0   libSystem.B.dylib        	0x9000b208 mach_msg_trap + 8
1   libSystem.B.dylib        	0x9000b15c mach_msg + 60
2   com.apple.CoreFoundation 	0x9075e114 __CFRunLoopRun + 832
3   com.apple.CoreFoundation 	0x9075da18 CFRunLoopRunSpecific + 268
4   com.apple.Foundation     	0x928e5664 -[NSRunLoop runMode:beforeDate:] + 172
5   com.apple.Foundation     	0x928e559c -[NSRunLoop run] + 76
6   com.apple.WebKit         	0x003c4434 +[WebFileDatabase _syncLoop:] + 420 
(WebFileDatabase.m:291)
7   com.apple.Foundation     	0x928d66d4 forkThreadForFunction + 108
8   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 2:
0   libSystem.B.dylib        	0x9000b208 mach_msg_trap + 8
1   libSystem.B.dylib        	0x9000b15c mach_msg + 60
2   com.apple.CoreFoundation 	0x9075e114 __CFRunLoopRun + 832
3   com.apple.CoreFoundation 	0x9075da18 CFRunLoopRunSpecific + 268
4   com.apple.Foundation     	0x928fdb9c +[NSURLConnection(NSURLConnectionInternal) 
_resourceLoadLoop:] + 264
5   com.apple.Foundation     	0x928d66d4 forkThreadForFunction + 108
6   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 3:
0   libSystem.B.dylib        	0x9000b208 mach_msg_trap + 8
1   libSystem.B.dylib        	0x9000b15c mach_msg + 60
2   com.apple.CoreFoundation 	0x9075e114 __CFRunLoopRun + 832
3   com.apple.CoreFoundation 	0x9075da18 CFRunLoopRunSpecific + 268
4   com.apple.Foundation     	0x928fecdc +[NSURLCache _diskCacheSyncLoop:] + 152
5   com.apple.Foundation     	0x928d66d4 forkThreadForFunction + 108
6   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 4:
0   libSystem.B.dylib        	0x9002b8a8 semaphore_wait_signal_trap + 8
1   libSystem.B.dylib        	0x9003001c pthread_cond_wait + 488
2   com.apple.Foundation     	0x928dd840 -[NSConditionLock lockWhenCondition:] + 68
3   com.apple.Syndication    	0x9b3b250c -[AsyncDB _run:] + 192
4   com.apple.Foundation     	0x928d66d4 forkThreadForFunction + 108
5   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 5:
0   libSystem.B.dylib        	0x9002b8a8 semaphore_wait_signal_trap + 8
1   libSystem.B.dylib        	0x9003001c pthread_cond_wait + 488
2   com.apple.ColorSync      	0x91555604 pthreadSemaphoreWait(t_pthreadSemaphore*) + 56
3   com.apple.ColorSync      	0x915548a0 CMMConvTask(void*) + 40
4   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 6:
0   libSystem.B.dylib        	0x9002b8a8 semaphore_wait_signal_trap + 8
1   libSystem.B.dylib        	0x9003001c pthread_cond_wait + 488
2   com.apple.QuartzCore     	0x942d87b0 fe_fragment_thread + 52
3   libSystem.B.dylib        	0x9002b200 _pthread_body + 96

Thread 0 crashed with PPC Thread State 64:
  srr0: 0x00000000942793c8 srr1: 0x100000000000d030                        vrsave: 
0x0000000000000000
    cr: 0x22042432          xer: 0x0000000020000000   lr: 0x00000000942793c4  ctr: 
0x000000009012c564
    r0: 0x00000000942793c4   r1: 0x00000000bfff53a0   r2: 0x0000000000000070   r3: 
0x0000000000000000
    r4: 0x0000000000000000   r5: 0x00000000000003e8   r6: 0xffffffffffffffff   r7: 
0x0000000000000003
    r8: 0x0000000064363800   r9: 0x00000000bfff5054  r10: 0x0000000000000000  r11: 
0x00000000a41fdfcc
   r12: 0x000000009012c564  r13: 0x00000000a0375ce4  r14: 0x0000000000000000  r15: 
0x0000000000000000
   r16: 0x0000000000000000  r17: 0x000000000d148160  r18: 0x0000000020000000  r19: 
0x000000000000029f
   r20: 0x0000000000000030  r21: 0x0000000000000000  r22: 0x0000000000000000  r23: 
0x00000000bfff66f8
   r24: 0x000000000c9308b0  r25: 0x000000000f6cbad0  r26: 0x000000000f6a9590  r27: 
0x000000000f690da0
   r28: 0x00000000bfff66f8  r29: 0x0000000000000000  r30: 0x0000000000000000  r31: 
0x00000000942793a8

Binary Images Description:
    0x1000 -    0xdafff com.apple.Safari 2.0.3 (417.4)	/Applications/Safari.app/Contents/MacOS/
Safari
  0x305000 -   0x417fff com.apple.WebKit 420+	/Volumes/Stuff/Projects/build/Development/
WebKit.framework/Versions/A/WebKit
 0x1008000 -  0x10b8fff com.apple.JavaScriptCore 420+	/Volumes/Stuff/Projects/build/Development/
JavaScriptCore.framework/Versions/A/JavaScriptCore
 0x16a1000 -  0x1b3bfff com.apple.WebCore 420+	/Volumes/Stuff/Projects/build/Development/
WebCore.framework/Versions/A/WebCore
0x10f18000 - 0x11027fff GLEngine 	/System/Library/Frameworks/OpenGL.framework/Resources/
GLEngine.bundle/GLEngine
0x11056000 - 0x111b9fff com.apple.GeForceFXGLDriver 1.4.18 (4.1.8)
	/System/Library/Extensions/GeForceFXGLDriver.bundle/Contents/MacOS/GeForceFXGLDriver
0x111da000 - 0x111f3fff GLDriver 	/System/Library/Frameworks/OpenGL.framework/Versions/A/
Resources/GLDriver.bundle/GLDriver
0x111f9000 - 0x11214fff GLRendererFloat 	/System/Library/Frameworks/OpenGL.framework/
Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
0x8fe00000 - 0x8fe54fff dyld 44.2	/usr/lib/dyld
0x90000000 - 0x901b3fff libSystem.B.dylib 	/usr/lib/libSystem.B.dylib
0x9020b000 - 0x90210fff libmathCommon.A.dylib 	/usr/lib/system/libmathCommon.A.dylib
0x90212000 - 0x90265fff com.apple.CoreText 1.0.1 (???)	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText
0x90292000 - 0x90343fff ATS 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x90372000 - 0x906affff com.apple.CoreGraphics 1.256.30 (???)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
CoreGraphics.framework/Versions/A/CoreGraphics
0x9073b000 - 0x90814fff com.apple.CoreFoundation 6.4.4 (368.25)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x9085d000 - 0x9085dfff com.apple.CoreServices 10.4 (???)	/System/Library/Frameworks/
CoreServices.framework/Versions/A/CoreServices
0x9085f000 - 0x90961fff libicucore.A.dylib 	/usr/lib/libicucore.A.dylib
0x909bb000 - 0x90a3ffff libobjc.A.dylib 	/usr/lib/libobjc.A.dylib
0x90a69000 - 0x90ad7fff com.apple.framework.IOKit 1.4.1 (???)
	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x90aee000 - 0x90b00fff libauto.dylib 	/usr/lib/libauto.dylib
0x90b07000 - 0x90ddffff com.apple.CoreServices.CarbonCore 681.1 (671.2)
	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/
CarbonCore.framework/Versions/A/CarbonCore
0x90e45000 - 0x90ec5fff com.apple.CoreServices.OSServices 4.1
	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/
OSServices.framework/Versions/A/OSServices
0x90f0f000 - 0x90f50fff com.apple.CFNetwork 10.4.3 (129.2)	/System/Library/Frameworks/
CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x90f65000 - 0x90f7dfff com.apple.WebServices 1.1.2 (1.1.0)	/System/Library/Frameworks/
CoreServices.framework/Versions/A/Frameworks/WebServicesCore.framework/Versions/A/
WebServicesCore
0x90f8d000 - 0x9100efff com.apple.SearchKit 1.0.5	/System/Library/Frameworks/
CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x91054000 - 0x9107efff com.apple.Metadata 10.4.4 (121.32)
	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/
Metadata.framework/Versions/A/Metadata
0x9108f000 - 0x9109dfff libz.1.dylib 	/usr/lib/libz.1.dylib
0x910a0000 - 0x91263fff com.apple.security 4.3 (25966)	/System/Library/Frameworks/
Security.framework/Versions/A/Security
0x91366000 - 0x9136ffff com.apple.DiskArbitration 2.1	/System/Library/Frameworks/
DiskArbitration.framework/Versions/A/DiskArbitration
0x91376000 - 0x9139dfff com.apple.SystemConfiguration 1.8.2
	/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x913b0000 - 0x913bbfff libgcc_s.1.dylib 	/usr/lib/libgcc_s.1.dylib
0x913c0000 - 0x913e1fff libmx.A.dylib 	/usr/lib/libmx.A.dylib
0x913e7000 - 0x913effff libbsm.dylib 	/usr/lib/libbsm.dylib
0x913f3000 - 0x91473fff com.apple.audio.CoreAudio 3.0.2	/System/Library/Frameworks/
CoreAudio.framework/Versions/A/CoreAudio
0x914b2000 - 0x914b2fff com.apple.ApplicationServices 10.4 (???)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x914b4000 - 0x914ecfff com.apple.AE 1.5 (297)	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x91507000 - 0x915d4fff com.apple.ColorSync 4.4.3	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x91629000 - 0x916bcfff com.apple.print.framework.PrintCore 4.3 (172.3)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
PrintCore.framework/Versions/A/PrintCore
0x91703000 - 0x917c0fff com.apple.QD 3.8.18 (???)	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x917fe000 - 0x9185cfff com.apple.HIServices 1.5.1 (???)	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x9188a000 - 0x918aefff com.apple.LangAnalysis 1.6.1	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/
LangAnalysis
0x918c2000 - 0x918e7fff com.apple.FindByContent 1.5	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/FindByContent.framework/Versions/A/
FindByContent
0x918fa000 - 0x9193cfff com.apple.LaunchServices 10.4.6 (168.1)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
LaunchServices.framework/Versions/A/LaunchServices
0x91958000 - 0x9196cfff com.apple.speech.synthesis.framework 3.3
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x9197a000 - 0x919b3fff com.apple.ImageIO.framework 1.4.4
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/
ImageIO.framework/Versions/A/ImageIO
0x919c8000 - 0x91a90fff libcrypto.0.9.7.dylib 	/usr/lib/libcrypto.0.9.7.dylib
0x91ade000 - 0x91af3fff libcups.2.dylib 	/usr/lib/libcups.2.dylib
0x91af8000 - 0x91b15fff libJPEG.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x91b1a000 - 0x91b89fff libJP2.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x91ba0000 - 0x91ba4fff libGIF.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x91ba6000 - 0x91bd7fff libRaw.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRaw.dylib
0x91bdb000 - 0x91c1efff libTIFF.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x91c25000 - 0x91c3efff libPng.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x91c43000 - 0x91c46fff libRadiance.dylib 	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/
libRadiance.dylib
0x91c48000 - 0x91c48fff com.apple.Accelerate 1.1.1 (Accelerate 1.1.1)
	/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x91c4a000 - 0x91d20fff com.apple.vImage 2.0	/System/Library/Frameworks/
Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x91d28000 - 0x91d47fff com.apple.Accelerate.vecLib 3.1.1 (vecLib 3.1.1)
	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/
Versions/A/vecLib
0x91db3000 - 0x91e18fff libvMisc.dylib 	/System/Library/Frameworks/Accelerate.framework/
Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x91e22000 - 0x91eb4fff libvDSP.dylib 	/System/Library/Frameworks/Accelerate.framework/
Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x91ece000 - 0x9245efff libBLAS.dylib 	/System/Library/Frameworks/Accelerate.framework/
Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x924a6000 - 0x927b6fff libLAPACK.dylib 	/System/Library/Frameworks/Accelerate.framework/
Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x927e3000 - 0x9286ffff com.apple.DesktopServices 1.3.1	/System/Library/PrivateFrameworks/
DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x928b1000 - 0x92adbfff com.apple.Foundation 6.4.2 (567.21)
	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x92bf9000 - 0x92cd7fff libxml2.2.dylib 	/usr/lib/libxml2.2.dylib
0x92cf7000 - 0x92de5fff libiconv.2.dylib 	/usr/lib/libiconv.2.dylib
0x92df7000 - 0x92e15fff libGL.dylib 	/System/Library/Frameworks/OpenGL.framework/Versions/
A/Libraries/libGL.dylib
0x92e20000 - 0x92e7afff libGLU.dylib 	/System/Library/Frameworks/OpenGL.framework/Versions/
A/Libraries/libGLU.dylib
0x92e98000 - 0x92e98fff com.apple.Carbon 10.4 (???)	/System/Library/Frameworks/
Carbon.framework/Versions/A/Carbon
0x92e9a000 - 0x92eaefff com.apple.ImageCapture 3.0	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x92ec6000 - 0x92ed6fff com.apple.speech.recognition.framework 3.4
	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/
SpeechRecognition.framework/Versions/A/SpeechRecognition
0x92ee2000 - 0x92ef7fff com.apple.securityhi 2.0 (203)	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
0x92f09000 - 0x92f90fff com.apple.ink.framework 101.2 (69)	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x92fa4000 - 0x92faffff com.apple.help 1.0.3 (32)	/System/Library/Frameworks/Carbon.framework/
Versions/A/Frameworks/Help.framework/Versions/A/Help
0x92fb9000 - 0x92fe6fff com.apple.openscripting 1.2.4 (???)	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x93000000 - 0x93010fff com.apple.print.framework.Print 5.0 (190.1)
	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/
Versions/A/Print
0x9301c000 - 0x93082fff com.apple.htmlrendering 1.1.2	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering
0x930b3000 - 0x93105fff com.apple.NavigationServices 3.4.2
	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/
NavigationServices.framework/Versions/A/NavigationServices
0x93131000 - 0x9314efff com.apple.audio.SoundManager 3.9
	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/
CarbonSound.framework/Versions/A/CarbonSound
0x93160000 - 0x9316dfff com.apple.CommonPanels 1.2.2 (73)
	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/
CommonPanels.framework/Versions/A/CommonPanels
0x93176000 - 0x93488fff com.apple.HIToolbox 1.4.5 (???)	/System/Library/Frameworks/
Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x935d4000 - 0x935e0fff com.apple.opengl 1.4.7	/System/Library/Frameworks/OpenGL.framework/
Versions/A/OpenGL
0x935e5000 - 0x93606fff com.apple.DirectoryService.Framework 3.0
	/System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService
0x93672000 - 0x93672fff com.apple.Cocoa 6.4 (???)	/System/Library/Frameworks/
Cocoa.framework/Versions/A/Cocoa
0x93674000 - 0x93ca7fff com.apple.AppKit 6.4.4 (824.28)	/System/Library/Frameworks/
AppKit.framework/Versions/C/AppKit
0x94034000 - 0x940a4fff com.apple.CoreData 80	/System/Library/Frameworks/
CoreData.framework/Versions/A/CoreData
0x940dd000 - 0x941a7fff com.apple.audio.toolbox.AudioToolbox 1.4.1
	/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x941fb000 - 0x941fbfff com.apple.audio.units.AudioUnit 1.4
	/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x941fd000 - 0x94375fff com.apple.QuartzCore 1.4.5	/System/Library/Frameworks/
QuartzCore.framework/Versions/A/QuartzCore
0x943bf000 - 0x943fcfff libsqlite3.0.dylib 	/usr/lib/libsqlite3.0.dylib
0x94404000 - 0x94454fff libGLImage.dylib 	/System/Library/Frameworks/OpenGL.framework/
Versions/A/Libraries/libGLImage.dylib
0x944e4000 - 0x9451cfff com.apple.vmutils 4.0.0 (85)	/System/Library/PrivateFrameworks/
vmutils.framework/Versions/A/vmutils
0x9455f000 - 0x9457bfff com.apple.securityfoundation 2.1 (24988)
	/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x9458f000 - 0x945d3fff com.apple.securityinterface 2.1 (24981)
	/System/Library/Frameworks/SecurityInterface.framework/Versions/A/SecurityInterface
0x945f7000 - 0x94606fff libCGATS.A.dylib 	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/
Resources/libCGATS.A.dylib
0x9460e000 - 0x9461afff libCSync.A.dylib 	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/
Resources/libCSync.A.dylib
0x94620000 - 0x9463ffff libPDFRIP.A.dylib 	/System/Library/Frameworks/
ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/
Resources/libPDFRIP.A.dylib
0x94660000 - 0x94678fff libRIP.A.dylib 	/System/Library/Frameworks/ApplicationServices.framework/
Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
0x94ac0000 - 0x94beefff com.apple.AddressBook.framework 4.0.3 (483)
	/System/Library/Frameworks/AddressBook.framework/Versions/A/AddressBook
0x94c80000 - 0x94c8ffff com.apple.DSObjCWrappers.Framework 1.1
	/System/Library/PrivateFrameworks/DSObjCWrappers.framework/Versions/A/DSObjCWrappers
0x94c97000 - 0x94cc4fff com.apple.LDAPFramework 1.4.1 (69.0.1)
	/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
0x94ccb000 - 0x94cdbfff libsasl2.2.dylib 	/usr/lib/libsasl2.2.dylib
0x94cdf000 - 0x94d0efff libssl.0.9.7.dylib 	/usr/lib/libssl.0.9.7.dylib
0x94d1e000 - 0x94d3bfff libresolv.9.dylib 	/usr/lib/libresolv.9.dylib
0x95496000 - 0x95522fff libstdc++.6.dylib 	/usr/lib/libstdc++.6.dylib
0x9603f000 - 0x96068fff libxslt.1.dylib 	/usr/lib/libxslt.1.dylib
0x97ac5000 - 0x97b86fff libGLProgrammability.dylib 	/System/Library/Frameworks/
OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
0x97bb1000 - 0x97bb2fff libGLSystem.dylib 	/System/Library/Frameworks/OpenGL.framework/
Versions/A/Libraries/libGLSystem.dylib
0x9b3af000 - 0x9b3e5fff com.apple.Syndication 1.0.3 (47)	/System/Library/PrivateFrameworks/
Syndication.framework/Versions/A/Syndication
0x9b402000 - 0x9b414fff com.apple.SyndicationUI 1.0.3 (47)	/System/Library/PrivateFrameworks/
SyndicationUI.framework/Versions/A/SyndicationUI

Model: PowerMac7,2, BootROM 5.1.4f0, 2 processors, PowerPC 970  (2.2), 1.8 GHz, 1 GB
Graphics: GeForce FX 5200, GeForce FX 5200, AGP, 64 MB
Memory Module: DIMM0/J11, 256 MB, DDR SDRAM, PC3200U-30330
Memory Module: DIMM1/J12, 256 MB, DDR SDRAM, PC3200U-30330
Memory Module: DIMM2/J13, 128 MB, DDR SDRAM, PC2700U-25330
Memory Module: DIMM3/J14, 128 MB, DDR SDRAM, PC2700U-25330
Memory Module: DIMM4/J41, 128 MB, DDR SDRAM, PC3200U-30330
Memory Module: DIMM5/J42, 128 MB, DDR SDRAM, PC3200U-30330
Modem: MicroDash, UCJ, V.92, 1.0F, APPLE VERSION 2.6.6
Network Service: Built-in Ethernet, Ethernet, en0
Serial ATA Device: WDC WD2500JS-41MVB1, 232.89 GB
Parallel ATA Device: PIONEER DVD-RW  DVR-106D, 
USB Device: Hub, , Up to 12 Mb/sec, 500 mA
USB Device: Studio Display, , Up to 1.5 Mb/sec, 500 mA
USB Device: Hub in Apple Pro Keyboard, Mitsumi Electric, Up to 12 Mb/sec, 500 mA
USB Device: Apple Optical USB Mouse, Mitsumi Electric, Up to 1.5 Mb/sec, 100 mA
USB Device: Apple Pro Keyboard, Mitsumi Electric, Up to 12 Mb/sec, 250 mA
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25750</commentid>
    <comment_count>7</comment_count>
      <attachid>5012</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2005-12-09 05:19:15 -0800</bug_when>
    <thetext>Created attachment 5012
minimal testcase for severe breakage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25862</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-12 09:57:35 -0800</bug_when>
    <thetext>Oliver and I have talked extensively on IRC.  We know this about the problem:

1.  It&apos;s caused by the merge filter
2.  Resizing the window seems to throw the input image bounds *way* off, which trips the problem.

the input image bounds are determined by the bounding box of the path (relativeBBox(true)).  There is 
a bbox.isValid() check in prepareFilter(), but it&apos;s possible that a &quot;valid&quot; yet totally insane bbox is being 
passed in.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32516</commentid>
    <comment_count>9</comment_count>
      <attachid>6490</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-14 13:34:34 -0800</bug_when>
    <thetext>Created attachment 6490
Updated to work on current ToT

No longer destroys safari</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32523</commentid>
    <comment_count>10</comment_count>
      <attachid>6490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-14 14:03:58 -0800</bug_when>
    <thetext>Comment on attachment 6490
Updated to work on current ToT

Looks good.  A few minor style (mostly spacing) issues, but nothing to hold up landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32535</commentid>
    <comment_count>11</comment_count>
      <attachid>6490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-14 16:39:11 -0800</bug_when>
    <thetext>Comment on attachment 6490
Updated to work on current ToT

Bah.  After talking with Oliver, there is one more bug we need to fix in VERIFY_FUNCTION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32543</commentid>
    <comment_count>12</comment_count>
      <attachid>6496</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-14 19:03:41 -0800</bug_when>
    <thetext>Created attachment 6496
fixed up patch

fixed patch to remove dumb approach to error handling.. now fails silently turning any invalid functions into the identity function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32565</commentid>
    <comment_count>13</comment_count>
      <attachid>6496</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-15 01:42:15 -0800</bug_when>
    <thetext>Comment on attachment 6496
fixed up patch

So we talked about this on irc.

A couple things I&apos;d really like to see in this patch before we finally put it to rest (now that I&apos;ve read it more carefully).

1.  There were one or two style issues foo=bar; instead of the recomended foo = bar;

2.  KCComponentTransferFunction really should have a default initializer, instead of making KCanvasFEComponentTransfer() do the dirty work.

3. [filter setValue:[getFilterForFunc(alphaFunction(), inputImage, [CIVector vectorWithX:0.0 Y:0.0 Z:0.0 W:1.0]) valueForKey:@&quot;outputImage&quot;]  would be much simpler if it was made into a function getImageForFunc(alpha, inputImage)  It doesn&apos;t even need to pass &quot;inputImage&quot; if it&apos;s a function on the class...

4.  We&apos;re really trying to kill all of the List classes (we basically have 0 need for a less effiicient list structure) and instead use Vector&lt;T&gt; for everything.  In this case, you may still use Q3ValueList for tableValues, given other existing code.. but if you can change to Vector&lt;float&gt; that&apos;s recommended.

5.  A nit: filterForComponentFunc might be cleaner if you switched on the name first, then called CIFilter filterWithName: on the resulting name... just a thought, it&apos;s fine either way.

6.  An empty:
kcanvas/device/quartz/filters/WKDisplacementMapFilter.cikernel
 found its way into this patch.

7.  Given the awful inadequacy of the W3C SVG test suite, it would be best if we could land at least a couple more test cases with this patch.

Given all those comments, I think it&apos;s best if we push this one through one more round.  I hope you don&apos;t mind too much.  It&apos;s a wonderful work as always!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32921</commentid>
    <comment_count>14</comment_count>
      <attachid>6530</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-15 23:10:54 -0800</bug_when>
    <thetext>Created attachment 6530
Yet another version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32924</commentid>
    <comment_count>15</comment_count>
      <attachid>6530</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-15 23:32:13 -0800</bug_when>
    <thetext>Comment on attachment 6530
Yet another version

We discussed a few more tweaks over irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32939</commentid>
    <comment_count>16</comment_count>
      <attachid>6534</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-16 01:01:14 -0800</bug_when>
    <thetext>Created attachment 6534
patch with more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32949</commentid>
    <comment_count>17</comment_count>
      <attachid>6536</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-16 02:29:12 -0800</bug_when>
    <thetext>Created attachment 6536
Table transfer function testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32950</commentid>
    <comment_count>18</comment_count>
      <attachid>6537</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-16 02:30:18 -0800</bug_when>
    <thetext>Created attachment 6537
testcase for discrete transfer function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32951</commentid>
    <comment_count>19</comment_count>
      <attachid>6538</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-16 02:45:12 -0800</bug_when>
    <thetext>Created attachment 6538
Testcase for linear transfer function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32952</commentid>
    <comment_count>20</comment_count>
      <attachid>6539</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-16 03:02:55 -0800</bug_when>
    <thetext>Created attachment 6539
testcase for gamma transfer function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33475</commentid>
    <comment_count>21</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-20 03:51:08 -0800</bug_when>
    <thetext>Patch looks good. Please add the test cases and a ChangeLog to the patch, and make the font size smaller on the test cases so the text doesn&apos;t spill out of the bounding box. Then I&apos;ll r+ it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33476</commentid>
    <comment_count>22</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-20 03:51:47 -0800</bug_when>
    <thetext>Also, please consider the style nitpicks lypanov and I mentioned on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33477</commentid>
    <comment_count>23</comment_count>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-02-20 03:55:25 -0800</bug_when>
    <thetext>one thing... i seem to have had my code style slightly wrong wrt objective c, as mjs pointed out shortly after you left that: &quot;for ObjC code we usally don&apos;t follow the *-next-to-type rule&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33996</commentid>
    <comment_count>24</comment_count>
      <attachid>6736</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-25 14:10:57 -0800</bug_when>
    <thetext>Created attachment 6736
Table transfer testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33997</commentid>
    <comment_count>25</comment_count>
      <attachid>6737</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-25 14:11:58 -0800</bug_when>
    <thetext>Created attachment 6737
Discrete transfer testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33998</commentid>
    <comment_count>26</comment_count>
      <attachid>6738</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-25 14:12:45 -0800</bug_when>
    <thetext>Created attachment 6738
linear transfer testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33999</commentid>
    <comment_count>27</comment_count>
      <attachid>6739</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-25 14:13:21 -0800</bug_when>
    <thetext>Created attachment 6739
gamma transfer testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34000</commentid>
    <comment_count>28</comment_count>
      <attachid>6740</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-02-25 14:25:23 -0800</bug_when>
    <thetext>Created attachment 6740
fixed formatting errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34448</commentid>
    <comment_count>29</comment_count>
      <attachid>6740</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-28 12:10:10 -0800</bug_when>
    <thetext>Comment on attachment 6740
fixed formatting errors

+    return [super init];

feels wrong to me.  I think there are several advantages to calling [super init] first and handling a nil value.  One is making sure that your parent classes&apos;s data structures are initialized, another is to avoid work if your parent class fails.

I guess I would suggest:
self = [super init];
if (!self)
    return;
// other goop
return self;
Maybe it&apos;s not worth it in this case... since it is a lot of extra code for little gain.


Why? -1?
[NSNumber numberWithFloat:[inputTable extent].size.width-1.0]

Please use an enum instead of #define

+#define CHANNEL_RED   0

Otherwise looks great.  We can talk about this on IRC if you like.  With those changes, you&apos;re welcome to land.

I think given that this is the first patch you&apos;re going to land yourself, it&apos;s probably best to see the whole final patch with ChangeLog.  We can also just work all that out via IRC when we&apos;re both next around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35039</commentid>
    <comment_count>30</comment_count>
      <attachid>6841</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-03-04 03:46:17 -0800</bug_when>
    <thetext>Created attachment 6841
patch with hopefully final changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40404</commentid>
    <comment_count>31</comment_count>
      <attachid>7955</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2006-04-25 06:18:58 -0700</bug_when>
    <thetext>Created attachment 7955
This should sooo be the final patch

Righto this should hopefully be the final patch, it contains the requisite testcases, etc now.

Also no longer crashes DRT so that&apos;s also probably a good thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40411</commentid>
    <comment_count>32</comment_count>
      <attachid>7955</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-25 08:08:58 -0700</bug_when>
    <thetext>Comment on attachment 7955
This should sooo be the final patch

In general this looks great.

A couple comments:
1. There is no real need for the identity filter to do anything.  No need to copy the bytes, just return the original image from a noop apply call.
2. The interpolation bug you mention should have a radar filed about it (even if you&apos;re not sure it&apos;s a bug) and then that radar number should be added to the comment.

All and all, this is landable as is.  It would be nice to fix those two issues, although those aren&apos;t show-stoppers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40432</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-04-25 14:09:08 -0700</bug_when>
    <thetext>Landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4999</attachid>
            <date>2005-12-08 03:05:26 -0800</date>
            <delta_ts>2005-12-08 04:20:28 -0800</delta_ts>
            <desc>First run of componenet transfer patch</desc>
            <filename>comptrans.patch</filename>
            <type>text/plain</type>
            <size>51330</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2Vy
bmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVu
dE1lcmdlRmlsdGVyLmNpa2VybmVsCi0tLSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25l
bnRNZXJnZUZpbHRlci5jaWtlcm5lbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAk4IERlYyAy
MDA1IDEwOjQ2OjIwIC0wMDAwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKwora2VybmVsIHZlYzQgbWVyZ2VDb21wb25lbnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIg
ZnVuY0csIHNhbXBsZXIgZnVuY0IsIHNhbXBsZXIgZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNh
bXBsZShmdW5jUiwgc2FtcGxlckNvb3JkKGZ1bmNSKSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxl
KGZ1bmNHLCBzYW1wbGVyQ29vcmQoZnVuY0cpKS5nOworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVu
Y0IsIHNhbXBsZXJDb29yZChmdW5jQikpLmI7CisgICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwg
c2FtcGxlckNvb3JkKGZ1bmNBKSkuYTsKKyAgICByZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30K
SW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIu
aAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tD
b21wb25lbnRNZXJnZUZpbHRlci5oCTggRGVjIDIwMDUgMDk6MzA6MTggLTAwMDAKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1
ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIgOiBDSUZpbHRl
ciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY1I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0c7
CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0E7Cit9
CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmls
dGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIubQotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCTggRGVjIDIwMDUgMDk6MzA6MTggLTAwMDAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8
b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqY29tcG9uZW50TWVyZ2VG
aWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyCisr
ICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAi
V0tDb21wb25lbnRNZXJnZSIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYK
KyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IENvbXBv
bmVudCBNZXJnZSIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtD
SUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGls
bEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmls
dGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBp
ZiAoIWNvbXBvbmVudE1lcmdlRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcg
Kmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNB
cnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAg
ICAgY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRh
aW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICop
b3V0cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Y29tcG9uZW50TWVyZ2VGaWx0
ZXIsIGlucHV0RnVuY1IsIGlucHV0RnVuY0csIGlucHV0RnVuY0IsIGlucHV0RnVuY0EsIG5pbF07
Cit9CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAotLS0gZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkxIEphbiAxOTcwIDAwOjAw
OjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCTggRGVjIDIwMDUgMDk6Mzc6NDkgLTAwMDAKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwgdmVjNCBkaXNjcmV0ZVRyYW5zZmVyKHNh
bXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUsIHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJ
bmRleCkKK3sKKyAgICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkp
OworICAgIGZsb2F0IGsgPSBmbG9vcihkb3QocmdiYVNlbGVjdG9yLCBDKSAqIG1heEluZGV4KTsK
KyAgICB2ZWM0IHJlcyA9IHNhbXBsZSh0YWJsZSwgdmVjMihrICsgMC41LCAwLjUpKTsKKyAgICBy
ZXR1cm4gcmVzOworfQpJbmRleDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9X
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmlj
ZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAk4IERlYyAyMDA1IDA5
OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
T2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cisg
ICAgQ0lJbWFnZSAgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9
CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLm0KLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JOCBEZWMgMjAwNSAwOTozODo0
MiAtMDAwMApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmRpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJh
bnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3Rl
ckZpbHRlck5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAg
ICBAIldlYktpdCBEaXNjcmV0ZSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lD
YXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxd
LCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmls
XV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQor
eworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0g
KGlkKWluaXQKK3sKKyAgICBpZiAoIWRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAg
TlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11d
OworICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAg
ICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2Vy
bmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dp
dGhTdHJpbmc6Y29kZV07CisgICAgICAgIGRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5l
bHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGlu
aXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBOU0FycmF5ICogYXJn
cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRJbWFnZSwgaW5wdXRUYWJsZSwgaW5w
dXRTZWxlY3RvciwgCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W2lucHV0VGFi
bGUgZXh0ZW50XS5zaXplLndpZHRoLTEuMF0sIG5pbF07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5
OmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgYXJndW1lbnRzOmFyZ3Mgb3B0aW9uczpuaWxdOworfQor
CitAZW5kCkluZGV4OiBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAk4IERl
YyAyMDA1IDA5OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKwora2VybmVsIHZlYzQgZ2FtbWFUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBh
bXBsaXR1ZGUsIGZsb2F0IGV4cG9uZW50LCBmbG9hdCBvZmZzZXQpCit7CisgICAgdmVjNCBDID0g
c2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1cm4gYW1wbGl0dWRl
ICogcG93KEMsIHZlYzQoZXhwb25lbnQpKSArIG9mZnNldDsKK30KSW5kZXg6IGRldmljZS9xdWFy
dHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBk
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgKLS0tIGRldmljZS9x
dWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJ
OCBEZWMgMjAwNSAwOTozMDoxOSAtMDAwMApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGludGVy
ZmFjZSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlu
cHV0SW1hZ2U7CisgICAgTlNOdW1iZXIgKmlucHV0QW1wbGl0dWRlOworICAgIE5TTnVtYmVyICpp
bnB1dEV4cG9uZW50OworICAgIE5TTnVtYmVyICppbnB1dE9mZnNldDsKK30KKworQGVuZApJbmRl
eDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bQotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCTEgSmFu
IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJh
bnNmZXJGaWx0ZXIubQk4IERlYyAyMDA1IDA5OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGlt
cGxlbWVudGF0aW9uIFdLR2FtbWFUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7
CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLR2FtbWFUcmFuc2ZlciIKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xh
c3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
KyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IEdhbW1hIFRyYW5zZmVyIiwga0NJQXR0cmli
dXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9u
U3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAg
ICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4w
XSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRBbXBsaXR1ZGUiLAorICAg
ICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0RXhwb25lbnQiLAor
ICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmli
dXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0T2Zmc2V0IiwK
KyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldp
dGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFnYW1tYVRyYW5z
ZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBb
YnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLR2FtbWFUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAi
Y2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0g
W0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBnYW1tYVRyYW5zZmVy
RmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAg
cmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7Cisg
ICAgcmV0dXJuIFtzZWxmIGFwcGx5OmdhbW1hVHJhbnNmZXJGaWx0ZXIsIGlucHV0SW1hZ2UsIGlu
cHV0QW1wbGl0dWRlLCBpbnB1dEV4cG9uZW50LCBpbnB1dE9mZnNldCwgbmlsXTsKK30KKworQGVu
ZApJbmRleDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJh
bnNmZXJGaWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmls
dGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAk4IERlYyAyMDA1IDA5OjMwOjE5IC0wMDAw
CkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQg
PG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVh
cnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cit9CisKK0BlbmQKSW5k
ZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CmRpZmYgLU5wdSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVy
RmlsdGVyLm0KLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JOCBEZWMgMjAwNSAwOTozMDoxOSAtMDAwMApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgx
NkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlci5oIgorCisKK0BpbXBsZW1lbnRhdGlvbiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZp
bHRlck5hbWU6QCJXS0lkZW50aXR5VHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25z
dHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBA
IldlYktpdCBJZGVudGl0eSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1l
LAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRl
Z29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
a0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBr
Q0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07
Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorewor
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlk
KWluaXQKK3sKKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0
cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gaW5wdXRJbWFnZTsKK30KKworQGVuZApJbmRleDogZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWwKLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHov
ZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCTggRGVjIDIwMDUgMTA6NDY6
MjAgLTAwMDAKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJu
ZWwgdmVjNCBsaW5lYXJUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBzbG9wZSwgZmxvYXQg
aW50ZXJjZXB0KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGlt
YWdlKSk7CisgICAgcmV0dXJuIHNsb3BlICogQyArIGludGVyY2VwdDsKK30KSW5kZXg6IGRldmlj
ZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZm
IC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAotLS0g
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2Zl
ckZpbHRlci5oCTggRGVjIDIwMDUgMDk6MzA6MTkgLTAwMDAKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJi
dXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgor
CisKK0BpbnRlcmZhY2UgV0tMaW5lYXJUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBD
SUltYWdlICAqaW5wdXRJbWFnZTsKKyAgICBOU051bWJlciAqaW5wdXRTbG9wZTsKKyAgICBOU051
bWJlciAqaW5wdXRJbnRlcmNlcHQ7Cit9CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmls
dGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQotLS0gZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0w
MDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCTgg
RGVjIDIwMDUgMDk6MzA6MTkgLTAwMDAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBD
SUtlcm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0
ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tMaW5lYXJUcmFuc2ZlciIKKyAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVz
OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAg
ICAgICAgICAgIEAiV2ViS2l0IExpbmVhciBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRp
c3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVs
cyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAg
ICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJp
YnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U2xvcGUiLAorICAgICAgICAgICAgICAgICAg
ICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJp
YnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0SW50ZXJzZWN0aW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFsaW5lYXJUcmFuc2ZlckZpbHRlcikg
eworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltz
ZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRo
Rm9yUmVzb3VyY2U6QCJXS0xpbmVhclRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJd
OworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNP
ZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwg
a2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAgIGxpbmVhclRyYW5zZmVyRmlsdGVyID0g
W1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtz
dXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgcmV0dXJu
IFtzZWxmIGFwcGx5OmxpbmVhclRyYW5zZmVyRmlsdGVyLCBpbnB1dEltYWdlLCBpbnB1dFNsb3Bl
LCBpbnB1dEludGVyY2VwdCwgbmlsXTsKK30KKworQGVuZApJbmRleDogZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5w
dSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCi0t
LSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxl
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJOCBEZWMgMjAwNSAwOTozODo0MiAtMDAwMApAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgxNkBz
dHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IHRhYmxlVHJh
bnNmZXIoc2FtcGxlciBpbWFnZSwgc2FtcGxlciB0YWJsZSwgdmVjNCByZ2JhU2VsZWN0b3IsIGZs
b2F0IG1heEluZGV4KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3Jk
KGltYWdlKSk7CisgICAgZmxvYXQgayA9IGRvdChyZ2JhU2VsZWN0b3IsIEMpICogKG1heEluZGV4
KTsKKyAgICB2ZWM0IHJlcyA9IHNhbXBsZSh0YWJsZSwgdmVjMihrICsgMC41LCAwLjUpKTsKKyAg
ICByZXR1cm4gcmVzOworfQpJbmRleDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFu
c2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9X
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVU
cmFuc2ZlckZpbHRlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFy
dHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAk4IERlYyAyMDA1IDA5OjMwOjE5IC0w
MDAwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8
UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZTsKKyAgICBDSUltYWdlICpp
bnB1dFRhYmxlOworICAgIENJVmVjdG9yICppbnB1dFNlbGVjdG9yOworfQorCitAZW5kCkluZGV4
OiBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5t
Ci0tLSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0JMSBKYW4g
MTk3MCAwMDowMDowMCAtMDAwMAorKysgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFu
c2ZlckZpbHRlci5tCTggRGVjIDIwMDUgMDk6Mzg6NDIgLTAwMDAKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
aCIKKworc3RhdGljIENJS2VybmVsICp0YWJsZVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1w
bGVtZW50YXRpb24gV0tUYWJsZVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sK
KyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tUYWJsZVRyYW5zZmVyIgorICAg
ICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFz
c0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgor
ICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQgVGFibGUgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1
dGVGaWx0ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25T
cXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVH
cmFkaWVudCwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxd
LCBAImlucHV0VGFibGUiLCAgIAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysg
KENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVy
biBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sK
KyAgICBpZiAoIXRhYmxlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRs
ZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAgICBOU1N0
cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tUYWJsZVRyYW5z
ZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAg
IE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07Cisg
ICAgICAgIHRhYmxlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSBy
ZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdl
ICopb3V0cHV0SW1hZ2UKK3sKKyAgICBOU0FycmF5ICogYXJncyA9IFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6aW5wdXRJbWFnZSwgaW5wdXRUYWJsZSwgaW5wdXRTZWxlY3RvciwgCisgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W2lucHV0VGFibGUgZXh0ZW50XS5zaXplLndpZHRo
LTEuMF0sIG5pbF07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5OnRhYmxlVHJhbnNmZXJGaWx0ZXIg
YXJndW1lbnRzOmFyZ3Mgb3B0aW9uczpuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2Rl
dmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC1wIC11IC1yMS44IGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgKLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgJMjggTm92IDIwMDUgMjM6MzM6NTkgLTAwMDAJMS44Cisr
KyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCTggRGVjIDIwMDUg
MTE6MDg6MTIgLTAwMDAKQEAgLTcwLDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBD
SUZpbHRlciAqZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBj
b25zdDsKIH07CiAKLS8vY2xhc3MgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHogOiBw
dWJsaWMgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgewotLy9wdWJsaWM6Ci0vLyAgICB2aXJ0
dWFsIENJRmlsdGVyICpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0
ZXIpIGNvbnN0OwotLy99OworY2xhc3MgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHog
OiBwdWJsaWMgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgQ0lGaWx0ZXIgKmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRl
cikgY29uc3Q7Cit9OwogCiBjbGFzcyBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeFF1YXJ0eiA6IHB1
YmxpYyBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeCB7CiBwdWJsaWM6CkluZGV4OiBrY2FudmFzL2Rl
dmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0
ei5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNwpkaWZmIC1wIC11IC1yMS4xNyBrY2FudmFz
L2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JMjggTm92IDIwMDUgMjM6MzM6NTkgLTAwMDAJ
MS4xNworKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JOCBE
ZWMgMjAwNSAxMTowODoxMyAtMDAwMApAQCAtMzgsNiArMzgsMTIgQEAKICNpbXBvcnQgIldLRGlz
dGFudExpZ2h0RmlsdGVyLmgiCiAjaW1wb3J0ICJXS05vcm1hbE1hcEZpbHRlci5oIgogI2ltcG9y
dCAiV0tBcml0aG1ldGljRmlsdGVyLmgiCisjaW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVy
LmgiCisjaW1wb3J0ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLVGFi
bGVUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgi
CisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuaCIKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKQEAg
LTM5Miw0MiArMzk4LDEwNiBAQCBDSUZpbHRlciAqS0NhbnZhc0ZFQ29sb3JNYXRyaXhRdWFydHo6
OmdlCiAJRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CiB9CiAKLS8qCi1maWxsQ0lWZWN0b3JBbmRC
aWFzRnJvbUZ1bmMoY29uc3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uICZmdW5jLCBLQ0No
YW5uZWxTZWxlY3RvclR5cGUgY29sb3IsIENJVmVjdG9yICpiaWFzKSB7CQotCWZsb2F0WzRdIHZl
Y3RvciA9IHswLmYsIDAuZiwgMC5mLCAwLmZ9OwotCQotCXN3aXRjaChmdW5jLnR5cGUoKSkgewot
CWNhc2UgQ1RfSURFTlRJVFk6Ci0JCXZlY3Rvcltjb2xvcl0gPSAxLmY7Ci0JCWJyZWFrOwotCWNh
c2UgQ1RfVEFCTEU6Ci0JCU5TTG9nKEAiV2FybmluZzogQ29tcG9uZW50IFRyYW5zZmVyIFwidGFi
bGVcIiBmdW5jdGlvbiBub3QgeWV0IHN1cHBvcnRlZC4iKTsKLQkJdmVjdG9yW2NvbG9yXSA9IDEu
ZjsKLQkJYnJlYWs7Ci0JY2FzZSBDVF9ESVNDUkVURToKLQkJTlNMb2coQCJXYXJuaW5nOiBDb21w
b25lbnQgVHJhbnNmZXIgXCJkaXNjcmV0ZVwiIGZ1bmN0aW9uIG5vdCB5ZXQgc3VwcG9ydGVkLiIp
OwotCQl2ZWN0b3JbY29sb3JdID0gMS5mOwotCQlicmVhazsKLQljYXNlIENUX0xJTkVBUjoKLQkJ
dmVjdG9yW2NvbG9yXSA9IGZ1bmMuc2xvcGU7Ci0JCS8vIEZJWE1FOiBhZGQgaW50ZXJjZXB0IHRv
IGJpYXMuCi0JCWJyZWFrOwotCWNhc2UgQ1RfR0FNTUE6Ci0JCXZlY3Rvcltjb2xvcl0gPSBmdW5j
LnNsb3BlOwotCX0KLQkKLQlyZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6dmVjdG9y
IGNvdW50OjRdOworc3RhdGljIENJSW1hZ2UgKiBnZW5JbWFnZUZyb21UYWJsZShjb25zdCBRM1Zh
bHVlTGlzdDxmbG9hdD4gJnRhYmxlKQoreworICAgIGludCBsZW5ndGg9dGFibGUuY291bnQoKTsK
KyAgICBmbG9hdCAqdGFibGVTdG9yZSA9IG5ldyBmbG9hdFtsZW5ndGggKiA0XTsgCisgICAgaW50
IGk9MDsgICAgCisgICAgZm9yIChRM1ZhbHVlTGlzdDxmbG9hdD46OkNvbnN0SXRlcmF0b3IgaXQg
PSB0YWJsZS5iZWdpbigpOyBpdCAhPSB0YWJsZS5lbmQoKTsgKytpdCwgaSsrKSB7CisgICAgICAg
IGZsb2F0IHZhbHVlID0gKml0OworICAgICAgICB0YWJsZVN0b3JlW2kqNF0gICA9IHZhbHVlOwor
ICAgICAgICB0YWJsZVN0b3JlW2kqNCsxXSA9IHZhbHVlOworICAgICAgICB0YWJsZVN0b3JlW2kq
NCsyXSA9IHZhbHVlOworICAgICAgICB0YWJsZVN0b3JlW2kqNCszXSA9IHZhbHVlOworICAgIH0K
KyAgICBDR1NpemUgc2l6ZTsKKyAgICBzaXplLndpZHRoPWxlbmd0aDsKKyAgICBzaXplLmhlaWdo
dD0xOworICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhCaXRtYXBEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlc05vQ29weTp0YWJsZVN0b3JlIGxlbmd0aDpsZW5ndGgqNCpzaXplb2YoZmxvYXQp
XSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc1BlclJvdzpsZW5ndGgqNCpzaXpl
b2YoZmxvYXQpIHNpemU6c2l6ZSBmb3JtYXQ6a0NJRm9ybWF0UkdCQWYgY29sb3JTcGFjZTpuaWxd
OworfQorCitzdGF0aWMgQ0lGaWx0ZXIgKmdldEZpbHRlckZvckZ1bmMoY29uc3QgS0NDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uICZmdW5jLCBDSUltYWdlICppbnB1dEltYWdlLCBDSVZlY3RvciAq
Y2hhbm5lbFNlbGVjdG9yKSB7CQorICAgIENJRmlsdGVyICpmaWx0ZXI7CisgICAgc3dpdGNoKGZ1
bmMudHlwZSkgeworICAgICAgICBjYXNlIENUX0lERU5USVRZOgorICAgICAgICAgICAgZmlsdGVy
ID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToKKyAgICAgICAgICAgIGZpbHRl
ciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLVGFibGVUcmFuc2ZlckZpbHRlciJdOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6CisgICAgICAgICAg
ICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0xJTkVBUjoKKyAg
ICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLTGluZWFyVHJh
bnNmZXIiXTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENU
X0dBTU1BOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
V0tHYW1tYVRyYW5zZmVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIC8vaW4gY2FzZSBvZiBiYWRuZXNzCisgICAgICAgICAgICBOU0xvZyhAIldB
Uk5JTkc6IFVua25vd24gZnVuY3Rpb24gdHlwZSBmb3IgZmVDb21wb25lbnRUcmFuc2ZlciIpOwor
ICAgICAgICAgICAgLy9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJlIHN2ZyBmcm9tIHJlbmRlcmlu
ZyBhcyBhIHJlc3VsdAorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhO
YW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgICAgIAorICAgIHN3aXRjaChmdW5jLnR5cGUp
IHsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6
Z2VuSW1hZ2VGcm9tVGFibGUoZnVuYy50YWJsZVZhbHVlcykgZm9yS2V5OkAiaW5wdXRUYWJsZSJd
OworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAi
aW5wdXRTZWxlY3RvciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElT
Q1JFVEU6CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1
bmMudGFibGVWYWx1ZXMpIGZvcktleTpAImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0
ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0xJTkVBUjoKKyAgICAgICAgICAgIFtm
aWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLnNsb3BlXSBmb3JL
ZXk6QCJpbnB1dFNsb3BlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5pbnRlcmNlcHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0
Il07ICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfR0FNTUE6
CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
ZnVuYy5hbXBsaXR1ZGVdIGZvcktleTpAImlucHV0QW1wbGl0dWRlIl07CisgICAgICAgICAgICBb
ZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0g
Zm9yS2V5OkAiaW5wdXRFeHBvbmVudCJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpb
TlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMub2Zmc2V0XSBmb3JLZXk6QCJpbnB1dE9mZnNl
dCJdOyAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvL2lkZW50aXR5IGhhcyBubyBhcmdzCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
W2ZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICBy
ZXR1cm4gZmlsdGVyOwogfQogCiBDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJR
dWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29u
c3QKIHsKLQlGRV9RVUFSVFpfU0VUVVBfSU5QVVQoQCJDSUNvbG9yTWF0cml4Iik7Ci0JCi0JCi0J
RkVfUVVBUlRaX09VVFBVVF9SRVRVUk47Ci0JcmV0dXJuIG5pbDsKKyAgICBbV0tDb21wb25lbnRN
ZXJnZUZpbHRlciBjbGFzc107CisgICAgW1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciBjbGFzc107
CisgICAgW1dLVGFibGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLRGlzY3JldGVUcmFu
c2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOwor
ICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIAorICAgIENJRmlsdGVyICpm
aWx0ZXIgPSBuaWw7CisgICAgS1dRX0JMT0NLX0VYQ0VQVElPTlMKKyAgICBmaWx0ZXIgPSBbQ0lG
aWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0NvbXBvbmVudE1lcmdlIl07CisgICAgaWYgKCFmaWx0
ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAg
Q0lJbWFnZSAqaW5wdXRJbWFnZSA9IHF1YXJ0ekZpbHRlci0+aW5wdXRJbWFnZSh0aGlzKTsKKyAg
ICAKKyAgICBbZmlsdGVyIHNldFZhbHVlOltnZXRGaWx0ZXJGb3JGdW5jKHJlZEZ1bmN0aW9uKCks
IGlucHV0SW1hZ2UsIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTowLjAgWjowLjAgVzowLjBd
KSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gCisgICAgICAgICAgICAgIGZvcktleTpAImlu
cHV0RnVuY1IiXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOltnZXRGaWx0ZXJGb3JGdW5jKGdyZWVu
RnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBa
OjAuMCBXOjAuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAgICAgICAg
Zm9yS2V5OkAiaW5wdXRGdW5jRyJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZv
ckZ1bmMoYmx1ZUZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDow
LjAgWTowLjAgWjoxLjAgVzowLjBdKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gCisgICAg
ICAgICAgICAgIGZvcktleTpAImlucHV0RnVuY0IiXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOltn
ZXRGaWx0ZXJGb3JGdW5jKGFscGhhRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9yIHZl
Y3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjEuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXSAKKyAgICAgICAgICAgICAgZm9yS2V5OkAiaW5wdXRGdW5jQSJdOworICAgIEZFX1FVQVJU
Wl9PVVRQVVRfUkVUVVJOOworICAgIHJldHVybiBuaWw7CiB9Ci0qLwogCiAKIENJRmlsdGVyICpL
Q2FudmFzRkVDb21wb3NpdGVRdWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHog
KnF1YXJ0ekZpbHRlcikgY29uc3QKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVy
aW5nRGV2aWNlUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjgKZGlmZiAtcCAtdSAtcjEuOCBrY2FudmFzL2RldmljZS9xdWFydHov
S1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdEZXZpY2VRdWFydHoubW0JNiBEZWMgMjAwNSAwMToyMzoyMiAtMDAwMAkxLjgKKysrIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCTggRGVjIDIwMDUg
MTE6MDg6MTMgLTAwMDAKQEAgLTIzMCw3ICsyMzAsNyBAQCBLQ2FudmFzRmlsdGVyRWZmZWN0ICpL
UmVuZGVyaW5nRGV2aWNlUXVhCiAgICAgICAgICovCiAJY2FzZSBGRV9CTEVORDogcmV0dXJuIG5l
dyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigpOwogCWNhc2UgRkVfQ09MT1JfTUFUUklYOiByZXR1cm4g
bmV3IEtDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6KCk7Ci0vLwljYXNlIEZFX0NPTVBPTkVOVF9U
UkFOU0ZFUjogCisJY2FzZSBGRV9DT01QT05FTlRfVFJBTlNGRVI6IHJldHVybiBuZXcgS0NhbnZh
c0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHooKTsKIAljYXNlIEZFX0NPTVBPU0lURTogcmV0dXJu
IG5ldyBLQ2FudmFzRkVDb21wb3NpdGVRdWFydHooKTsKIC8vCWNhc2UgRkVfQ09OVk9MVkVfTUFU
UklYOiAKIAljYXNlIEZFX0RJRkZVU0VfTElHSFRJTkc6IHJldHVybiBuZXcgS0NhbnZhc0ZFRGlm
ZnVzZUxpZ2h0aW5nUXVhcnR6KCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBs
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIv
c3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJMjYgTm92IDIw
MDUgMjI6MTk6MDUgLTAwMDAJMS4xMAorKysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJOCBEZWMgMjAwNSAxMTowNzowMyAtMDAwMApAQCAtMTA0
LDcgKzEwNCw3IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQKICAg
ICAgICAgZWxzZSBpZih2YWx1ZSA9PSAiZ2FtbWEiKQogICAgICAgICAgICAgdHlwZSgpLT5zZXRC
YXNlVmFsKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEpOwogICAgIH0KLSAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpCisgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAgIHRh
YmxlVmFsdWVzKCktPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUucXN0cmluZygpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNsb3BlQXR0cikKICAgICAgICAgc2xvcGUo
KS0+c2V0QmFzZVZhbCh2YWx1ZS5xc3RyaW5nKCkudG9Eb3VibGUoKSk7CkBAIC0xMjksNiArMTI5
LDEyIEBAIEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBTVkdDb21wb25lbnQKICAgICBmdW5j
LmFtcGxpdHVkZSA9IGFtcGxpdHVkZSgpLT5iYXNlVmFsKCk7CiAgICAgZnVuYy5leHBvbmVudCA9
IGV4cG9uZW50KCktPmJhc2VWYWwoKTsKICAgICBmdW5jLm9mZnNldCA9IG9mZnNldCgpLT5iYXNl
VmFsKCk7CisgICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IF90YWJsZVZhbHVlczsKKyAgICBTVkdOdW1i
ZXJMaXN0SW1wbCAqbnVtYmVycyA9IHRhYmxlVmFsdWVzKCktPmJhc2VWYWwoKTsKKyAgICB1bnNp
Z25lZCBpbnQgbnIgPSBudW1iZXJzLT5udW1iZXJPZkl0ZW1zKCk7CisgICAgZm9yKHVuc2lnbmVk
IGludCBpID0gMDtpIDwgbnI7aSsrKQorICAgICAgICBfdGFibGVWYWx1ZXMuYXBwZW5kKG51bWJl
cnMtPmdldEl0ZW0oaSktPnZhbHVlKCkpOworICAgIGZ1bmMudGFibGVWYWx1ZXMgPSBfdGFibGVW
YWx1ZXM7CiAgICAgcmV0dXJuIGZ1bmM7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5001</attachid>
            <date>2005-12-08 04:18:06 -0800</date>
            <delta_ts>2006-02-14 13:34:34 -0800</delta_ts>
            <desc>Second run of patch</desc>
            <filename>comptrans.patch</filename>
            <type>text/plain</type>
            <size>51591</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2Vy
bmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVu
dE1lcmdlRmlsdGVyLmNpa2VybmVsCi0tLSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25l
bnRNZXJnZUZpbHRlci5jaWtlcm5lbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAk4IERlYyAy
MDA1IDEwOjQ2OjIwIC0wMDAwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKwora2VybmVsIHZlYzQgbWVyZ2VDb21wb25lbnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIg
ZnVuY0csIHNhbXBsZXIgZnVuY0IsIHNhbXBsZXIgZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNh
bXBsZShmdW5jUiwgc2FtcGxlckNvb3JkKGZ1bmNSKSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxl
KGZ1bmNHLCBzYW1wbGVyQ29vcmQoZnVuY0cpKS5nOworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVu
Y0IsIHNhbXBsZXJDb29yZChmdW5jQikpLmI7CisgICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwg
c2FtcGxlckNvb3JkKGZ1bmNBKSkuYTsKKyAgICByZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30K
SW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIu
aAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tD
b21wb25lbnRNZXJnZUZpbHRlci5oCTggRGVjIDIwMDUgMDk6MzA6MTggLTAwMDAKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1
ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIgOiBDSUZpbHRl
ciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY1I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0c7
CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0E7Cit9
CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmls
dGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIubQotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCTggRGVjIDIwMDUgMDk6MzA6MTggLTAwMDAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8
b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqY29tcG9uZW50TWVyZ2VG
aWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyCisr
ICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAi
V0tDb21wb25lbnRNZXJnZSIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYK
KyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IENvbXBv
bmVudCBNZXJnZSIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtD
SUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGls
bEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmls
dGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBp
ZiAoIWNvbXBvbmVudE1lcmdlRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcg
Kmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNB
cnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAg
ICAgY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRh
aW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICop
b3V0cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Y29tcG9uZW50TWVyZ2VGaWx0
ZXIsIGlucHV0RnVuY1IsIGlucHV0RnVuY0csIGlucHV0RnVuY0IsIGlucHV0RnVuY0EsIG5pbF07
Cit9CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAotLS0gZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkxIEphbiAxOTcwIDAwOjAw
OjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCTggRGVjIDIwMDUgMDk6Mzc6NDkgLTAwMDAKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwgdmVjNCBkaXNjcmV0ZVRyYW5zZmVyKHNh
bXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUsIHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJ
bmRleCkKK3sKKyAgICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkp
OworICAgIGZsb2F0IGsgPSBmbG9vcihkb3QocmdiYVNlbGVjdG9yLCBDKSAqIG1heEluZGV4KTsK
KyAgICB2ZWM0IHJlcyA9IHNhbXBsZSh0YWJsZSwgdmVjMihrICsgMC41LCAwLjUpKTsKKyAgICBy
ZXR1cm4gcmVzOworfQpJbmRleDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9X
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmlj
ZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAk4IERlYyAyMDA1IDA5
OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUg
T2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cisg
ICAgQ0lJbWFnZSAgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9
CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLm0KLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JOCBEZWMgMjAwNSAwOTozODo0
MiAtMDAwMApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmRpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJh
bnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3Rl
ckZpbHRlck5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAg
ICBAIldlYktpdCBEaXNjcmV0ZSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lD
YXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxd
LCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmls
XV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQor
eworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0g
KGlkKWluaXQKK3sKKyAgICBpZiAoIWRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAg
TlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11d
OworICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAg
ICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2Vy
bmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dp
dGhTdHJpbmc6Y29kZV07CisgICAgICAgIGRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5l
bHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGlu
aXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBOU0FycmF5ICogYXJn
cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRJbWFnZSwgaW5wdXRUYWJsZSwgaW5w
dXRTZWxlY3RvciwgCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W2lucHV0VGFi
bGUgZXh0ZW50XS5zaXplLndpZHRoLTEuMF0sIG5pbF07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5
OmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgYXJndW1lbnRzOmFyZ3Mgb3B0aW9uczpuaWxdOworfQor
CitAZW5kCkluZGV4OiBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAk4IERl
YyAyMDA1IDA5OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKwora2VybmVsIHZlYzQgZ2FtbWFUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBh
bXBsaXR1ZGUsIGZsb2F0IGV4cG9uZW50LCBmbG9hdCBvZmZzZXQpCit7CisgICAgdmVjNCBDID0g
c2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1cm4gYW1wbGl0dWRl
ICogcG93KEMsIHZlYzQoZXhwb25lbnQpKSArIG9mZnNldDsKK30KSW5kZXg6IGRldmljZS9xdWFy
dHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBk
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgKLS0tIGRldmljZS9x
dWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJ
OCBEZWMgMjAwNSAwOTozMDoxOSAtMDAwMApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGludGVy
ZmFjZSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlu
cHV0SW1hZ2U7CisgICAgTlNOdW1iZXIgKmlucHV0QW1wbGl0dWRlOworICAgIE5TTnVtYmVyICpp
bnB1dEV4cG9uZW50OworICAgIE5TTnVtYmVyICppbnB1dE9mZnNldDsKK30KKworQGVuZApJbmRl
eDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bQotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCTEgSmFu
IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJh
bnNmZXJGaWx0ZXIubQk4IERlYyAyMDA1IDA5OjMwOjE5IC0wMDAwCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGlt
cGxlbWVudGF0aW9uIFdLR2FtbWFUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7
CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLR2FtbWFUcmFuc2ZlciIKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xh
c3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
KyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IEdhbW1hIFRyYW5zZmVyIiwga0NJQXR0cmli
dXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9u
U3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAg
ICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4w
XSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRBbXBsaXR1ZGUiLAorICAg
ICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0RXhwb25lbnQiLAor
ICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmli
dXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0T2Zmc2V0IiwK
KyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldp
dGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFnYW1tYVRyYW5z
ZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBb
YnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLR2FtbWFUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAi
Y2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0g
W0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBnYW1tYVRyYW5zZmVy
RmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAg
cmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7Cisg
ICAgcmV0dXJuIFtzZWxmIGFwcGx5OmdhbW1hVHJhbnNmZXJGaWx0ZXIsIGlucHV0SW1hZ2UsIGlu
cHV0QW1wbGl0dWRlLCBpbnB1dEV4cG9uZW50LCBpbnB1dE9mZnNldCwgbmlsXTsKK30KKworQGVu
ZApJbmRleDogZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJh
bnNmZXJGaWx0ZXIuaAotLS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlci5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmls
dGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAk4IERlYyAyMDA1IDA5OjMwOjE5IC0wMDAw
CkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQg
PG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVh
cnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cit9CisKK0BlbmQKSW5k
ZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CmRpZmYgLU5wdSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVy
RmlsdGVyLm0KLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JOCBEZWMgMjAwNSAwOTozMDoxOSAtMDAwMApAQCAt
MCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgx
NkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlci5oIgorCisKK0BpbXBsZW1lbnRhdGlvbiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZp
bHRlck5hbWU6QCJXS0lkZW50aXR5VHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25z
dHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBA
IldlYktpdCBJZGVudGl0eSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1l
LAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRl
Z29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
a0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBr
Q0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07
Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorewor
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlk
KWluaXQKK3sKKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0
cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gaW5wdXRJbWFnZTsKK30KKworQGVuZApJbmRleDogZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpkaWZmIC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWwKLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHov
ZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCTggRGVjIDIwMDUgMTA6NDY6
MjAgLTAwMDAKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJu
ZWwgdmVjNCBsaW5lYXJUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBzbG9wZSwgZmxvYXQg
aW50ZXJjZXB0KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGlt
YWdlKSk7CisgICAgcmV0dXJuIHNsb3BlICogQyArIGludGVyY2VwdDsKK30KSW5kZXg6IGRldmlj
ZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZm
IC1OcHUgZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAotLS0g
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2Zl
ckZpbHRlci5oCTggRGVjIDIwMDUgMDk6MzA6MTkgLTAwMDAKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJi
dXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgor
CisKK0BpbnRlcmZhY2UgV0tMaW5lYXJUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBD
SUltYWdlICAqaW5wdXRJbWFnZTsKKyAgICBOU051bWJlciAqaW5wdXRTbG9wZTsKKyAgICBOU051
bWJlciAqaW5wdXRJbnRlcmNlcHQ7Cit9CisKK0BlbmQKSW5kZXg6IGRldmljZS9xdWFydHovZmls
dGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQotLS0gZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQkxIEphbiAxOTcwIDAwOjAwOjAwIC0w
MDAwCisrKyBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCTgg
RGVjIDIwMDUgMDk6MzA6MTkgLTAwMDAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBD
SUtlcm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0
ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tMaW5lYXJUcmFuc2ZlciIKKyAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVz
OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAg
ICAgICAgICAgIEAiV2ViS2l0IExpbmVhciBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRp
c3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVs
cyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAg
ICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJp
YnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U2xvcGUiLAorICAgICAgICAgICAgICAgICAg
ICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJp
YnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0SW50ZXJzZWN0aW9uIiwKKyAgICAgICAgICAg
ICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFsaW5lYXJUcmFuc2ZlckZpbHRlcikg
eworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltz
ZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRo
Rm9yUmVzb3VyY2U6QCJXS0xpbmVhclRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJd
OworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNP
ZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwg
a2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAgIGxpbmVhclRyYW5zZmVyRmlsdGVyID0g
W1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtz
dXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgcmV0dXJu
IFtzZWxmIGFwcGx5OmxpbmVhclRyYW5zZmVyRmlsdGVyLCBpbnB1dEltYWdlLCBpbnB1dFNsb3Bl
LCBpbnB1dEludGVyY2VwdCwgbmlsXTsKK30KKworQGVuZApJbmRleDogZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5w
dSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCi0t
LSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCTEg
SmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxl
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJOCBEZWMgMjAwNSAxMTowODo0NCAtMDAwMApAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50IDxvamgxNkBz
dHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IHRhYmxlVHJh
bnNmZXIoc2FtcGxlciBpbWFnZSwgc2FtcGxlciB0YWJsZSwgdmVjNCByZ2JhU2VsZWN0b3IsIGZs
b2F0IG1heEluZGV4KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3Jk
KGltYWdlKSk7CisgICAgZmxvYXQgayA9IGRvdChyZ2JhU2VsZWN0b3IsIEMpICogbWF4SW5kZXg7
CisgICAgdmVjNCByZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoayArIDAuNSwgMC41KSk7CisgICAg
cmV0dXJuIHJlczsKK30KSW5kZXg6IGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBkZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tU
YWJsZVRyYW5zZmVyRmlsdGVyLmgKLS0tIGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkZXZpY2UvcXVhcnR6
L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgJOCBEZWMgMjAwNSAwOTozMDoxOSAtMDAw
MApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBIdW50
IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tUYWJsZVRyYW5zZmVyRmlsdGVy
IDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2U7CisgICAgQ0lJbWFnZSAqaW5w
dXRUYWJsZTsKKyAgICBDSVZlY3RvciAqaW5wdXRTZWxlY3RvcjsKK30KKworQGVuZApJbmRleDog
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
ZGlmZiAtTnB1IGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubQot
LS0gZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCTEgSmFuIDE5
NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIubQk4IERlYyAyMDA1IDA5OjM4OjQyIC0wMDAwCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgi
CisKK3N0YXRpYyBDSUtlcm5lbCAqdGFibGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxl
bWVudGF0aW9uIFdLVGFibGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7Cisg
ICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLVGFibGVUcmFuc2ZlciIKKyAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NB
dHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAg
ICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IFRhYmxlIFRyYW5zZmVyIiwga0NJQXR0cmlidXRl
RmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1
YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlR3Jh
ZGllbnQsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwg
QCJpbnB1dFRhYmxlIiwgICAKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChD
SUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4g
W1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7Cisg
ICAgaWYgKCF0YWJsZVRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUg
PSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJp
bmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLVGFibGVUcmFuc2Zl
ckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBO
U0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAg
ICAgICB0YWJsZVRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0
YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAq
KW91dHB1dEltYWdlCit7CisgICAgTlNBcnJheSAqIGFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOmlucHV0SW1hZ2UsIGlucHV0VGFibGUsIGlucHV0U2VsZWN0b3IsIAorICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0x
LjBdLCBuaWxdOworICAgIHJldHVybiBbc2VsZiBhcHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFy
Z3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtcCAtdSAtcjEuOCBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHov
S0NhbnZhc0ZpbHRlclF1YXJ0ei5oCTI4IE5vdiAyMDA1IDIzOjMzOjU5IC0wMDAwCTEuOAorKysg
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAk4IERlYyAyMDA1IDEy
OjIzOjA2IC0wMDAwCkBAIC03MCwxMCArNzAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0lG
aWx0ZXIgKmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29u
c3Q7CiB9OwogCi0vL2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDogcHVi
bGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKLS8vcHVibGljOgotLy8gICAgdmlydHVh
bCBDSUZpbHRlciAqZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVy
KSBjb25zdDsKLS8vfTsKK2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDog
cHVibGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IENJRmlsdGVyICpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIp
IGNvbnN0OworfTsKIAogY2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXhRdWFydHogOiBwdWJs
aWMgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXggewogcHVibGljOgpJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHou
bW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtcCAtdSAtcjEuMTcga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCTI4IE5vdiAyMDA1IDIzOjMzOjU5IC0wMDAwCTEu
MTcKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCTggRGVj
IDIwMDUgMTI6MjM6MDYgLTAwMDAKQEAgLTM4LDYgKzM4LDEyIEBACiAjaW1wb3J0ICJXS0Rpc3Rh
bnRMaWdodEZpbHRlci5oIgogI2ltcG9ydCAiV0tOb3JtYWxNYXBGaWx0ZXIuaCIKICNpbXBvcnQg
IldLQXJpdGhtZXRpY0ZpbHRlci5oIgorI2ltcG9ydCAiV0tDb21wb25lbnRNZXJnZUZpbHRlci5o
IgorI2ltcG9ydCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS1RhYmxl
VHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIgor
I2ltcG9ydCAiV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmgiCiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogCkBAIC0z
OTIsNDIgKzM5OCwxMTQgQEAgQ0lGaWx0ZXIgKktDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6Ojpn
ZQogCUZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwogfQogCi0vKgotZmlsbENJVmVjdG9yQW5kQmlh
c0Zyb21GdW5jKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiAmZnVuYywgS0NDaGFu
bmVsU2VsZWN0b3JUeXBlIGNvbG9yLCBDSVZlY3RvciAqYmlhcykgewkKLQlmbG9hdFs0XSB2ZWN0
b3IgPSB7MC5mLCAwLmYsIDAuZiwgMC5mfTsKLQkKLQlzd2l0Y2goZnVuYy50eXBlKCkpIHsKLQlj
YXNlIENUX0lERU5USVRZOgotCQl2ZWN0b3JbY29sb3JdID0gMS5mOwotCQlicmVhazsKLQljYXNl
IENUX1RBQkxFOgotCQlOU0xvZyhAIldhcm5pbmc6IENvbXBvbmVudCBUcmFuc2ZlciBcInRhYmxl
XCIgZnVuY3Rpb24gbm90IHlldCBzdXBwb3J0ZWQuIik7Ci0JCXZlY3Rvcltjb2xvcl0gPSAxLmY7
Ci0JCWJyZWFrOwotCWNhc2UgQ1RfRElTQ1JFVEU6Ci0JCU5TTG9nKEAiV2FybmluZzogQ29tcG9u
ZW50IFRyYW5zZmVyIFwiZGlzY3JldGVcIiBmdW5jdGlvbiBub3QgeWV0IHN1cHBvcnRlZC4iKTsK
LQkJdmVjdG9yW2NvbG9yXSA9IDEuZjsKLQkJYnJlYWs7Ci0JY2FzZSBDVF9MSU5FQVI6Ci0JCXZl
Y3Rvcltjb2xvcl0gPSBmdW5jLnNsb3BlOwotCQkvLyBGSVhNRTogYWRkIGludGVyY2VwdCB0byBi
aWFzLgotCQlicmVhazsKLQljYXNlIENUX0dBTU1BOgotCQl2ZWN0b3JbY29sb3JdID0gZnVuYy5z
bG9wZTsKLQl9Ci0JCi0JcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnZlY3RvciBj
b3VudDo0XTsKK3N0YXRpYyBDSUltYWdlICpnZW5JbWFnZUZyb21UYWJsZShjb25zdCBRM1ZhbHVl
TGlzdDxmbG9hdD4mIHRhYmxlKQoreworICAgIGludCBsZW5ndGg9dGFibGUuY291bnQoKTsKKyAg
ICBmbG9hdCAqdGFibGVTdG9yZSA9IG5ldyBmbG9hdFtsZW5ndGggKiA0XTsgCisgICAgaW50IG5C
eXRlcyA9IGxlbmd0aCo0KnNpemVvZihmbG9hdCk7CisgICAgTlNEYXRhICpiaXRtYXBEYXRhID0g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OnRhYmxlU3RvcmUgbGVuZ3RoOm5CeXRlc107Cisg
ICAgZm9yIChRM1ZhbHVlTGlzdDxmbG9hdD46OkNvbnN0SXRlcmF0b3IgaXQgPSB0YWJsZS5iZWdp
bigpOyBpdCAhPSB0YWJsZS5lbmQoKTsgKytpdCkgeworICAgICAgICBmbG9hdCB2YWx1ZSA9ICpp
dDsKKyAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAgICAgICAqdGFibGVTdG9yZSsr
ID0gdmFsdWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxl
U3RvcmUrKyA9IHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQml0
bWFwRGF0YTpiaXRtYXBEYXRhIGJ5dGVzUGVyUm93Om5CeXRlcyBzaXplOkNHU2l6ZU1ha2UobGVu
Z3RoLCAxKSBmb3JtYXQ6a0NJRm9ybWF0UkdCQWYgY29sb3JTcGFjZTpuaWxdOworfQorCitzdGF0
aWMgQ0lGaWx0ZXIgKmZpbHRlckZvckNvbXBvbmVudEZ1bmMoY29uc3QgS0NDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uJiBmdW5jKQoreworICAgIENJRmlsdGVyICpmaWx0ZXI7CisgICAgc3dpdGNo
KGZ1bmMudHlwZSkgeworICAgICAgICBjYXNlIENUX0lERU5USVRZOgorICAgICAgICAgICAgZmls
dGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToKKyAgICAgICAgICAgIGZp
bHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLVGFibGVUcmFuc2ZlckZpbHRlciJd
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6CisgICAgICAg
ICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0xJTkVBUjoK
KyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLTGluZWFy
VHJhbnNmZXIiXTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENUX0dBTU1BOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiV0tHYW1tYVRyYW5zZmVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIE5TTG9nKEAiV0FSTklORzogVW5rbm93biBmdW5jdGlvbiB0eXBlIGZv
ciBmZUNvbXBvbmVudFRyYW5zZmVyIik7CisgICAgICAgICAgICAvL2FuZCB0byBwcmV2ZW50IHRo
ZSBlbnRpcmUgc3ZnIGZyb20gZmFpbGluZyBhcyBhIHJlc3VsdAorICAgICAgICAgICAgZmlsdGVy
ID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIl07CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKworc3RhdGljIHZv
aWQgc2V0UGFyYW1ldGVyc0ZvckNvbXBvbmVudEZ1bmMoQ0lGaWx0ZXIgKmZpbHRlciwgY29uc3Qg
S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jLCBDSVZlY3RvciAqY2hhbm5lbFNlbGVj
dG9yKQoreworICAgIHN3aXRjaChmdW5jLnR5cGUpIHsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToK
KyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2VuSW1hZ2VGcm9tVGFibGUoZnVuYy50YWJs
ZVZhbHVlcykgZm9yS2V5OkAiaW5wdXRUYWJsZSJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRW
YWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5wdXRTZWxlY3RvciJdOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6CisgICAgICAgICAgICBbZmlsdGVy
IHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktleTpAImlu
cHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9y
IGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENUX0xJTkVBUjoKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpmdW5jLnNsb3BlXSBmb3JLZXk6QCJpbnB1dFNsb3BlIl07CisgICAgICAg
ICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5pbnRl
cmNlcHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0Il07ICAgICAgICAgIAorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1RfR0FNTUE6CisgICAgICAgICAgICBbZmlsdGVyIHNldFZh
bHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5hbXBsaXR1ZGVdIGZvcktleTpAImlu
cHV0QW1wbGl0dWRlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0gZm9yS2V5OkAiaW5wdXRFeHBvbmVudCJdOwor
ICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1
bmMub2Zmc2V0XSBmb3JLZXk6QCJpbnB1dE9mZnNldCJdOyAgIAorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvL2lkZW50aXR5IGhhcyBubyBhcmdzCisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBDSUZpbHRlciAqZ2V0RmlsdGVy
Rm9yRnVuYyhjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMsIENJSW1hZ2Ug
KmlucHV0SW1hZ2UsIENJVmVjdG9yICpjaGFubmVsU2VsZWN0b3IpIAorewkKKyAgICBDSUZpbHRl
ciAqZmlsdGVyID0gZmlsdGVyRm9yQ29tcG9uZW50RnVuYyhmdW5jKTsKKyAgICBbZmlsdGVyIHNl
dERlZmF1bHRzXTsKKyAgICAKKyAgICBzZXRQYXJhbWV0ZXJzRm9yQ29tcG9uZW50RnVuYyhmaWx0
ZXIsIGZ1bmMsIGNoYW5uZWxTZWxlY3Rvcik7CisgICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dElt
YWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICByZXR1cm4gZmlsdGVyOwogfQogCiBDSUZp
bHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldENJRmlsdGVyKEtDYW52
YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKIHsKLQlGRV9RVUFSVFpfU0VUVVBf
SU5QVVQoQCJDSUNvbG9yTWF0cml4Iik7Ci0JCi0JCi0JRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47
Ci0JcmV0dXJuIG5pbDsKKyAgICBbV0tDb21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107CisgICAg
W1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2ZlckZp
bHRlciBjbGFzc107CisgICAgW1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAg
W1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0
ZXIgY2xhc3NdOworICAgIAorICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgS1dRX0JM
T0NLX0VYQ0VQVElPTlMKKyAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJX
S0NvbXBvbmVudE1lcmdlIl07CisgICAgaWYgKCFmaWx0ZXIpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IHF1
YXJ0ekZpbHRlci0+aW5wdXRJbWFnZSh0aGlzKTsKKyAgICAKKyAgICBbZmlsdGVyIHNldFZhbHVl
OltnZXRGaWx0ZXJGb3JGdW5jKHJlZEZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIFtDSVZlY3RvciB2
ZWN0b3JXaXRoWDoxLjAgWTowLjAgWjowLjAgVzowLjBdKSB2YWx1ZUZvcktleTpAIm91dHB1dElt
YWdlIl0gCisgICAgICAgICAgICAgIGZvcktleTpAImlucHV0RnVuY1IiXTsKKyAgICBbZmlsdGVy
IHNldFZhbHVlOltnZXRGaWx0ZXJGb3JGdW5jKGdyZWVuRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwg
W0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF0pIHZhbHVlRm9yS2V5
OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAgICAgICAgZm9yS2V5OkAiaW5wdXRGdW5jRyJdOwor
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZvckZ1bmMoYmx1ZUZ1bmN0aW9uKCksIGlu
cHV0SW1hZ2UsIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjoxLjAgVzowLjBdKSB2
YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0gCisgICAgICAgICAgICAgIGZvcktleTpAImlucHV0
RnVuY0IiXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOltnZXRGaWx0ZXJGb3JGdW5jKGFscGhhRnVu
Y3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAu
MCBXOjEuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAgICAgICAgZm9y
S2V5OkAiaW5wdXRGdW5jQSJdOworICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOworICAgIHJl
dHVybiBuaWw7CiB9Ci0qLwogCiAKIENJRmlsdGVyICpLQ2FudmFzRkVDb21wb3NpdGVRdWFydHo6
OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKSW5k
ZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
UmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAt
cCAtdSAtcjEuOCBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5t
bQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JNiBE
ZWMgMjAwNSAwMToyMzoyMiAtMDAwMAkxLjgKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCTggRGVjIDIwMDUgMTI6MjM6MDYgLTAwMDAKQEAgLTIzMCw3
ICsyMzAsNyBAQCBLQ2FudmFzRmlsdGVyRWZmZWN0ICpLUmVuZGVyaW5nRGV2aWNlUXVhCiAgICAg
ICAgICovCiAJY2FzZSBGRV9CTEVORDogcmV0dXJuIG5ldyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigp
OwogCWNhc2UgRkVfQ09MT1JfTUFUUklYOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbG9yTWF0cml4
UXVhcnR6KCk7Ci0vLwljYXNlIEZFX0NPTVBPTkVOVF9UUkFOU0ZFUjogCisJY2FzZSBGRV9DT01Q
T05FTlRfVFJBTlNGRVI6IHJldHVybiBuZXcgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFy
dHooKTsKIAljYXNlIEZFX0NPTVBPU0lURTogcmV0dXJuIG5ldyBLQ2FudmFzRkVDb21wb3NpdGVR
dWFydHooKTsKIC8vCWNhc2UgRkVfQ09OVk9MVkVfTUFUUklYOiAKIAljYXNlIEZFX0RJRkZVU0Vf
TElHSFRJTkc6IHJldHVybiBuZXcgS0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nUXVhcnR6KCk7Cklu
ZGV4OiBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJMjYgTm92IDIwMDUgMjI6MTk6MDUgLTAwMDAJMS4xMAor
Kysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJ
OCBEZWMgMjAwNSAxMjoyMzowOSAtMDAwMApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQKICAgICAgICAgZWxzZSBpZih2YWx1ZSA9PSAi
Z2FtbWEiKQogICAgICAgICAgICAgdHlwZSgpLT5zZXRCYXNlVmFsKFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfR0FNTUEpOwogICAgIH0KLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnZhbHVlc0F0dHIpCisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAgIHRhYmxlVmFsdWVzKCktPmJhc2VWYWwoKS0+
cGFyc2UodmFsdWUucXN0cmluZygpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnNsb3BlQXR0cikKICAgICAgICAgc2xvcGUoKS0+c2V0QmFzZVZhbCh2YWx1ZS5xc3Ry
aW5nKCkudG9Eb3VibGUoKSk7CkBAIC0xMjksNiArMTI5LDEyIEBAIEtDQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiBTVkdDb21wb25lbnQKICAgICBmdW5jLmFtcGxpdHVkZSA9IGFtcGxpdHVkZSgp
LT5iYXNlVmFsKCk7CiAgICAgZnVuYy5leHBvbmVudCA9IGV4cG9uZW50KCktPmJhc2VWYWwoKTsK
ICAgICBmdW5jLm9mZnNldCA9IG9mZnNldCgpLT5iYXNlVmFsKCk7CisgICAgUTNWYWx1ZUxpc3Q8
ZmxvYXQ+IF90YWJsZVZhbHVlczsKKyAgICBTVkdOdW1iZXJMaXN0SW1wbCAqbnVtYmVycyA9IHRh
YmxlVmFsdWVzKCktPmJhc2VWYWwoKTsKKyAgICB1bnNpZ25lZCBpbnQgbnIgPSBudW1iZXJzLT5u
dW1iZXJPZkl0ZW1zKCk7CisgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDtpIDwgbnI7aSsrKQor
ICAgICAgICBfdGFibGVWYWx1ZXMuYXBwZW5kKG51bWJlcnMtPmdldEl0ZW0oaSktPnZhbHVlKCkp
OworICAgIGZ1bmMudGFibGVWYWx1ZXMgPSBfdGFibGVWYWx1ZXM7CiAgICAgcmV0dXJuIGZ1bmM7
CiB9CiAK
</data>
<flag name="review"
          id="976"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5012</attachid>
            <date>2005-12-09 05:19:15 -0800</date>
            <delta_ts>2006-02-25 14:25:23 -0800</delta_ts>
            <desc>minimal testcase for severe breakage</desc>
            <filename>filters-comptran-01-b.svg</filename>
            <type>text/plain</type>
            <size>649</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVC
TElDICItLy9XM0MvL0RURCBTVkcgMS4xIEJhc2ljLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dy
YXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLWJhc2ljLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGxpbmsiIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0i
MCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImJhc2ljIj4NCiAgICA8ZGVm
cz4KICAgICAgICA8ZmlsdGVyIGlkPSJNeUZpbHRlciIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9u
VXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ4Ij4NCgkJCTxmZUNvbXBvbmVu
dFRyYW5zZmVyPg0KCQkJCTxmZUZ1bmNSIHR5cGU9ImlkZW50aXR5Ii8+DQoJCQk8L2ZlQ29tcG9u
ZW50VHJhbnNmZXI+CiAgICAgICAgPC9maWx0ZXI+DQogICAgPC9kZWZzPg0KCTxyZWN0IHg9IjEw
IiB5PSIxMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI0MCIgZmlsbD0icmVkIiBmaWx0ZXI9InVybCgj
TXlGaWx0ZXIpIi8+DQo8L3N2Zz4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6490</attachid>
            <date>2006-02-14 13:34:34 -0800</date>
            <delta_ts>2006-02-14 19:03:41 -0800</delta_ts>
            <desc>Updated to work on current ToT</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>66204</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNzk5KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiAr
NDM3LDIzIEBACiAJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICov
OyB9OwogCQk5M0YxOUIxNzA4MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1
OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0YxOUIxODA4MjQ1
RTU5MDAxRTlBQkMgLyogbGlieHNsdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MDYzMzA3MDczMUE3NzIwMERCMUZEMSAvKiBsaWJ4c2x0
LmR5bGliICovOyB9OworCQlBN0I5N0I3NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZp
bHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAq
LzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRy
YW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdFMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlB
N0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlD
M0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3
QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlB
N0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEw
MDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVC
MSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3
OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAv
KiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlBODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVu
dEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0IwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4
RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwu
Y3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVu
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpA
QCAtMTI5NSw2ICsxMzEyLDIzIEBACiAJCTkzRjE5QjE5MDgyNDVFNTkwMDFFOUFCQyAvKiBJbmZv
LnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5M0YxOUIxQTA4
MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5J
bmRleCA9IDA7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxpYmljdWNvcmUu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSAv
dXNyL2xpYi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owor
CQlBN0I5N0I2NjA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtl
cm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtl
cm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjcwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjkwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I2QTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdCOTdCNkIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdCOTdCNkQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZp
bHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tHYW1tYVRyYW5zZmVy
RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZFMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5z
ZmVyRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzAw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MzA5NzlDM0ExMDAwRThF
QjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0I5N0I3NDA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3Qjc1MDk3OUMz
QTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVGFibGVUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0I5N0I3NjA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxMEUzOTMwOEE0
MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzVHJlZURlYnVnLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBODEwRTM5
NDA4QTQxNjBGMDAzMzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNUcmVlRGVidWcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJQTgxMjJDN0UwOEQ1NjRCMDAwODQ0RkEzIC8qIEdldFNWR0RvY3VtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdldFNWR0RvY3VtZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBA
IC0zMDI5LDYgKzMwNjMsMjMgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQThDMzI5MjAwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtl
cm5lbCAqLywKKwkJCQlBN0I5N0I2NjA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJn
ZUZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I2NzA5NzlDM0ExMDAwRThFQjEgLyogV0tD
b21wb25lbnRNZXJnZUZpbHRlci5oICovLAorCQkJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I2
QTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJ
QTdCOTdCNkIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tICov
LAorCQkJCUE3Qjk3QjZDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNkQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFu
c2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjZFMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1h
VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJ
ZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzAwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tICovLAorCQkJCUE3Qjk3QjcxMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE3Qjk3
QjcyMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJ
QTdCOTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLywK
KwkJCQlBN0I5N0I3NDA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNp
a2VybmVsICovLAorCQkJCUE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I3NjA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjEwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJp
dGhtZXRpY0ZpbHRlci5oICovLAogCQkJCUE4QzMyOTIyMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIubSAqLywKIAkJCQlBOEMzMjkyMzA5M0JCNzMyMDAwQjlDQUMgLyogV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgKi8sCkBAIC00MjYyLDYgKzQzMTMsMTIgQEAK
IAkJCQlBODEzNjlFMjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTExhYmVsRWxlbWVudEltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MS2V5Z2Vu
RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2RDM4MDk3M0E4RTcwMEQ3NDQ2
MyAvKiBGb3JtRGF0YUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3Qjc4MDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0I5N0I3QjA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0I5N0I3RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEg
LyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I4
MzA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdCOTdCODYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUJGMDIzMDA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUJGMDI0NDA5NzQ4MTkwMDBDNDMxOTYgLyog
TWFjRnJhbWUuaCBpbiBIZWFkZXJzICovLApAQCAtNDU2Niw2ICs0NjIzLDExIEBACiAJCQkJQTg4
QUQzQTEwOTUyNDg2RDAwMUREMTk2IC8qIFdLUG9pbnRMaWdodEZpbHRlci5jaWtlcm5lbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQTQwOTUyNDg2RDAwMUREMTk2IC8qIFdLU3BlY3VsYXJM
aWdodGluZ0ZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQTcwOTUy
NDg2RDAwMUREMTk2IC8qIFdLU3BvdExpZ2h0RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAq
LywKKwkJCQlBN0I5N0I3NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRl
ci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCN0EwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJQTdCOTdCN0QwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3
Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovLAogCQkJCUJDRUE0NzlDMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3Nwcm9wZXJ0
aWVzLmluIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5RjA5N0NBQUM4MDA5NEM5RTQgLyog
Y3NzdmFsdWVzLmluIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0M4Q0ZDRDA5ODZDRDI0MDAxNDBC
RjIgLyogQ29sb3JEYXRhLmdwZXJmIGluIFJlc291cmNlcyAqLywKQEAgLTUzNzcsNiArNTQzOSwx
MiBAQAogCQkJCUE4MTM2OUUzMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MTGFiZWxFbGVtZW50SW1w
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlFNTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEtleWdlbkVsZW1lbnRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2RDM5MDk3M0E4
RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdC
NzkwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3Qjk3QjdDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3QjdGMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0dhbW1hVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3QjgxMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAor
CQkJCUE3Qjk3Qjg0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0g
aW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4NzA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDEwOTc0ODE5MDAwQzQz
MTk2IC8qIEtXUUtIVE1MVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogTWFjRnJhbWUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCShyZXZpc2lvbiAx
Mjc5OSkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgS0NhbnZhc0ZpbHRlckVmZmVjdCAq
S1JlbmRlcmluZ0RldmljZVF1YQogICAgICovCiAgICAgY2FzZSBGRV9CTEVORDogcmV0dXJuIG5l
dyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigpOwogICAgIGNhc2UgRkVfQ09MT1JfTUFUUklYOiByZXR1
cm4gbmV3IEtDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6KCk7Ci0vLyAgY2FzZSBGRV9DT01QT05F
TlRfVFJBTlNGRVI6IAorICAgIGNhc2UgRkVfQ09NUE9ORU5UX1RSQU5TRkVSOiByZXR1cm4gbmV3
IEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6KCk7CiAgICAgY2FzZSBGRV9DT01QT1NJ
VEU6IHJldHVybiBuZXcgS0NhbnZhc0ZFQ29tcG9zaXRlUXVhcnR6KCk7CiAvLyAgY2FzZSBGRV9D
T05WT0xWRV9NQVRSSVg6IAogICAgIGNhc2UgRkVfRElGRlVTRV9MSUdIVElORzogcmV0dXJuIG5l
dyBLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmdRdWFydHooKTsKSW5kZXg6IGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkocmV2aXNpb24gMTI3OTkpCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0lGaWx0ZXIgKmdldENJRmls
dGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3Q7CiB9OwogCi0vL2Ns
YXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDogcHVibGljIEtDYW52YXNGRUNv
bXBvbmVudFRyYW5zZmVyIHsKLS8vcHVibGljOgotLy8gICAgdmlydHVhbCBDSUZpbHRlciAqZ2V0
Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdDsKLS8vfTsK
K2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDogcHVibGljIEtDYW52YXNG
RUNvbXBvbmVudFRyYW5zZmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIENJRmlsdGVyICpnZXRD
SUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0OworfTsKIAog
Y2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXhRdWFydHogOiBwdWJsaWMgS0NhbnZhc0ZFQ29u
dm9sdmVNYXRyaXggewogcHVibGljOgpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysr
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLQ29tcG9uZW50
TWVyZ2VGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY1I7CisgICAg
Q0lJbWFnZSAgKmlucHV0RnVuY0c7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7CisgICAgQ0lJ
bWFnZSAgKmlucHV0RnVuY0E7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbGluZWFyVHJhbnNmZXIoc2Ft
cGxlciBpbWFnZSwgZmxvYXQgc2xvcGUsIGZsb2F0IGludGVyY2VwdCkKK3sKKyAgICB2ZWM0IEMg
PSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIHJldHVybiBzbG9wZSAq
IEMgKyBpbnRlcmNlcHQ7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVsICpsaW5lYXJU
cmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRl
ck5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0
b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgQCJXZWJL
aXQgTGluZWFyIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5
bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRl
Z29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJp
YnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRTbG9wZSIsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRJbnRlcnNlY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07
Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorewor
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlk
KWluaXQKK3sKKyAgICBpZiAoIWxpbmVhclRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldL
TGluZWFyVHJhbnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3Ry
aW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxl
XTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmlu
Zzpjb2RlXTsKKyAgICAgICAgbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0
QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQor
CistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKiBpbnB1dFNhbXBs
ZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOworICAgIHJldHVy
biBbc2VsZiBhcHBseTpsaW5lYXJUcmFuc2ZlckZpbHRlciwgaW5wdXRTYW1wbGVyLCBpbnB1dFNs
b3BlLCBpbnB1dEludGVyY2VwdCwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0
aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQkocmV2aXNpb24gMCkKKysr
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqY29t
cG9uZW50TWVyZ2VGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbXBvbmVudE1l
cmdlRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJG
aWx0ZXJOYW1lOkAiV0tDb21wb25lbnRNZXJnZSIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAi
V2ViS2l0IENvbXBvbmVudCBNZXJnZSIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29y
eVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJ
Q2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lB
dHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9
CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWlu
aXQKK3sKKyAgICBpZiAoIWNvbXBvbmVudE1lcmdlRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxl
ICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAg
ICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQ29t
cG9uZW50TWVyZ2VGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5n
ICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsK
KyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpj
b2RlXTsKKyAgICAgICAgY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJ
bmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCist
IChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Y29tcG9u
ZW50TWVyZ2VGaWx0ZXIsIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jUl0s
IAorICAgICAgICBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0RnVuY0ddLCBbQ0lT
YW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0RnVuY0JdLCBbQ0lTYW1wbGVyIHNhbXBsZXJX
aXRoSW1hZ2U6IGlucHV0RnVuY0FdLCBAImRlZmluaXRpb24iLCBbaW5wdXRGdW5jUiBkZWZpbml0
aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLVGFibGVUcmFuc2Zl
ckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICppbnB1dEltYWdlOworICAgIENJSW1h
Z2UgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9CisKK0BlbmQK
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZp
bHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRl
bnRpdHlUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2
QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29y
ZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIgOiBD
SUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cit9CisKK0BlbmQKSW5kZXg6IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZp
bHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tU
YWJsZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVy
eS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgiCisK
K3N0YXRpYyBDSUtlcm5lbCAqdGFibGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVu
dGF0aW9uIFdLVGFibGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAg
W0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLVGFibGVUcmFuc2ZlciIKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRy
aWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAg
ICAgICAgICAgICAgICAgIEAiV2ViS2l0IFRhYmxlIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmls
dGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJl
UGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlR3JhZGll
bnQsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJp
bnB1dFRhYmxlIiwgICAKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZp
bHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAg
aWYgKCF0YWJsZVRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcg
Kmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLVGFibGVUcmFuc2ZlckZp
bHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0Fy
cmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAg
ICB0YWJsZVRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWlu
XTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91
dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICogaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBz
YW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKKyAgICBOU0FycmF5ICogYXJncyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRo
SW1hZ2U6IGlucHV0VGFibGVdLCBpbnB1dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZp
bml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1cm4gW3Nl
bGYgYXBwbHk6dGFibGVUcmFuc2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07
Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVy
IEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFV
VEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9y
dCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisKKworQGltcGxlbWVudGF0aW9uIFdLSWRl
bnRpdHlUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVy
IHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciIKKyAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVz
OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAg
ICAgICAgICAgIEAiV2ViS2l0IElkZW50aXR5IFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVy
RGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4
ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAg
ICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcg
KiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
K30KKworLSAoaWQpaW5pdAoreworICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJ
SW1hZ2UgKilvdXRwdXRJbWFnZQoreworICAgIHJldHVybiBpbnB1dEltYWdlOworfQorCitAZW5k
CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rp
c2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgx
NkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNv
cmUvQ29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIDog
Q0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIENJSW1hZ2UgICppbnB1
dFRhYmxlOworICAgIENJVmVjdG9yICppbnB1dFNlbGVjdG9yOworfQorCitAZW5kCkluZGV4OiBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lr
ZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5l
bCB2ZWM0IGRpc2NyZXRlVHJhbnNmZXIoc2FtcGxlciBpbWFnZSwgc2FtcGxlciB0YWJsZSwgdmVj
NCByZ2JhU2VsZWN0b3IsIGZsb2F0IG1heEluZGV4KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShp
bWFnZSwgc2FtcGxlckNvb3JkKGltYWdlKSk7CisgICAgZmxvYXQgayA9IGZsb29yKGRvdChyZ2Jh
U2VsZWN0b3IsIEMpICogbWF4SW5kZXgpOworICAgIHZlYzQgcmVzID0gc2FtcGxlKHRhYmxlLCB2
ZWMyKGsgKyAwLjUsIDAuNSkpOworICAgIHJldHVybiByZXM7Cit9CkluZGV4OiBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1
cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5o
IgorCitzdGF0aWMgQ0lLZXJuZWwgKmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0Bp
bXBsZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6
ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNm
ZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAg
ICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0Fu
ZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBEaXNjcmV0ZSBUcmFuc2ZlciIs
IGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5Vmlk
ZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lD
YXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVz
LAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVy
V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWRpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBi
dW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAgICBOU1N0cmluZyAqa2VybmVsRmls
ZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIiBv
ZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtl
cm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAgIGRpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOwor
ICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0
SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKiBpbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBs
ZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOworICAgIE5TQXJyYXkgKiBhcmdzID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czppbnB1dFNhbXBsZXIsIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFn
ZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1w
bGVyRmlsdGVyTmVhcmVzdCwgbmlsXSwgaW5wdXRTZWxlY3RvciwgCisgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6W2lucHV0VGFibGUgZXh0ZW50XS5zaXplLndpZHRoLTEuMF0sIEAi
ZGVmaW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIgZGVmaW5pdGlvbl0sIG5pbF07CisgICAgcmV0dXJu
IFtzZWxmIGFwcGx5OmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgYXJndW1lbnRzOmFyZ3Mgb3B0aW9u
czpuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBI
dW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGludGVyZmFjZSBXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7CisgICAgTlNOdW1i
ZXIgKmlucHV0QW1wbGl0dWRlOworICAgIE5TTnVtYmVyICppbnB1dEV4cG9uZW50OworICAgIE5T
TnVtYmVyICppbnB1dE9mZnNldDsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNp
a2VybmVsCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tD
b21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5j
YW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwgdmVjNCBtZXJnZUNvbXBvbmVudHMo
c2FtcGxlciBmdW5jUiwgc2FtcGxlciBmdW5jRywgc2FtcGxlciBmdW5jQiwgc2FtcGxlciBmdW5j
QSkKK3sKKyAgICBmbG9hdCByID0gc2FtcGxlKGZ1bmNSLCBzYW1wbGVyQ29vcmQoZnVuY1IpKS5y
OworICAgIGZsb2F0IGcgPSBzYW1wbGUoZnVuY0csIHNhbXBsZXJDb29yZChmdW5jRykpLmc7Cisg
ICAgZmxvYXQgYiA9IHNhbXBsZShmdW5jQiwgc2FtcGxlckNvb3JkKGZ1bmNCKSkuYjsKKyAgICBm
bG9hdCBhID0gc2FtcGxlKGZ1bmNBLCBzYW1wbGVyQ29vcmQoZnVuY0EpKS5hOworICAgIHJldHVy
biB2ZWM0KHIsIGcsIGIsIGEpOworfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2
aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2Zl
ckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFj
Lm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCitrZXJuZWwgdmVjNCBnYW1tYVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2Us
IGZsb2F0IGFtcGxpdHVkZSwgZmxvYXQgZXhwb25lbnQsIGZsb2F0IG9mZnNldCkKK3sKKyAgICB2
ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIHJldHVybiBh
bXBsaXR1ZGUgKiBwb3coQywgdmVjNChleHBvbmVudCkpICsgb2Zmc2V0OworfQpJbmRleDoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmls
dGVyLm0JKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5
LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKKwor
c3RhdGljIENJS2VybmVsICpnYW1tYVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1wbGVtZW50
YXRpb24gV0tHYW1tYVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBb
Q0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tHYW1tYVRyYW5zZmVyIgorICAgICAgICAg
ICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJp
YnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAg
ICAgICAgICAgICAgICAgQCJXZWJLaXQgR2FtbWEgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQ
aXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAg
ICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lB
dHRyaWJ1dGVEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEFtcGxpdHVkZSIsCisgICAgICAgICAg
ICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwg
a0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRFeHBvbmVudCIsCisgICAgICAg
ICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4w
XSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRPZmZzZXQiLAorICAgICAg
ICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRv
cmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWdhbW1hVHJhbnNmZXJGaWx0
ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFz
czpbc2VsZiBjbGFzc11dOworICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUg
cGF0aEZvclJlc291cmNlOkAiV0tHYW1tYVRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5l
bCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVu
dHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJu
ZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAgIGdhbW1hVHJhbnNmZXJGaWx0ZXIg
PSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4g
W3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNh
bXBsZXIgKiBpbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0
SW1hZ2VdOworICAgIHJldHVybiBbc2VsZiBhcHBseTpnYW1tYVRyYW5zZmVyRmlsdGVyLCBpbnB1
dFNhbXBsZXIsIGlucHV0QW1wbGl0dWRlLCBpbnB1dEV4cG9uZW50LCBpbnB1dE9mZnNldCwgQCJk
ZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKK30KKworQGVuZApJ
bmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
VGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIg
SHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwg
dmVjNCB0YWJsZVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUsIHZlYzQgcmdi
YVNlbGVjdG9yLCBmbG9hdCBtYXhJbmRleCkKK3sKKyAgICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2Us
IHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIGZsb2F0IGsgPSBkb3QocmdiYVNlbGVjdG9yLCBD
KSAqIG1heEluZGV4OworICAgIHZlYzQgcmVzID0gc2FtcGxlKHRhYmxlLCB2ZWMyKGsgKyAwLjUs
IDAuNSkpOworICAgIHJldHVybiByZXM7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAw
KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGludGVyZmFjZSBXS0xp
bmVhclRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdl
OworICAgIE5TTnVtYmVyICppbnB1dFNsb3BlOworICAgIE5TTnVtYmVyICppbnB1dEludGVyY2Vw
dDsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJR
dWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0
ZXJRdWFydHoubW0JKHJldmlzaW9uIDEyNzk5KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tD
YW52YXNGaWx0ZXJRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEyIEBACiAj
aW1wb3J0ICJXS0Rpc3RhbnRMaWdodEZpbHRlci5oIgogI2ltcG9ydCAiV0tOb3JtYWxNYXBGaWx0
ZXIuaCIKICNpbXBvcnQgIldLQXJpdGhtZXRpY0ZpbHRlci5oIgorI2ltcG9ydCAiV0tDb21wb25l
bnRNZXJnZUZpbHRlci5oIgorI2ltcG9ydCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisj
aW1wb3J0ICJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9y
dCAiV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgiCiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6
Q29yZS5oPgogCkBAIC0zNDgsNiArMzU0LDExNyBAQCBDSUZpbHRlciAqS0NhbnZhc0ZFQ29sb3JN
YXRyaXhRdWFydHo6OmdlCiAgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CiB9CiAKK3N0YXRp
YyBDSUltYWdlICpnZW5JbWFnZUZyb21UYWJsZShjb25zdCBRM1ZhbHVlTGlzdDxmbG9hdD4mIHRh
YmxlKQoreworICAgIGludCBsZW5ndGg9dGFibGUuY291bnQoKTsKKyAgICBpbnQgbkJ5dGVzID0g
bGVuZ3RoKjQqc2l6ZW9mKGZsb2F0KTsKKyAgICBmbG9hdCAqdGFibGVTdG9yZSA9IChmbG9hdCAq
KW1hbGxvYyhuQnl0ZXMpOworICAgIE5TRGF0YSAqYml0bWFwRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhCeXRlc05vQ29weTp0YWJsZVN0b3JlIGxlbmd0aDpuQnl0ZXNdOworICAgIGZvciAoUTNWYWx1
ZUxpc3Q8ZmxvYXQ+OjpDb25zdEl0ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gdGFi
bGUuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgZmxvYXQgdmFsdWUgPSAqaXQ7CisgICAgICAgICp0
YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAg
ICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1
ZTsKKyAgICB9CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aEJpdG1hcERhdGE6Yml0bWFw
RGF0YSBieXRlc1BlclJvdzpuQnl0ZXMgc2l6ZTpDR1NpemVNYWtlKGxlbmd0aCwgMSkgZm9ybWF0
OmtDSUZvcm1hdFJHQkFmIGNvbG9yU3BhY2U6bmlsXTsKK30KKworc3RhdGljIENJRmlsdGVyICpm
aWx0ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
ZnVuYykKK3sKKyAgICBDSUZpbHRlciAqZmlsdGVyOworICAgIHN3aXRjaChmdW5jLnR5cGUpIHsK
KyAgICAgICAgY2FzZSBDVF9JREVOVElUWToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIiXTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENUX0RJU0NSRVRFOgorICAgICAgICAgICAgZmlsdGVyID0g
W0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIl07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5FQVI6CisgICAgICAgICAgICBm
aWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIl07ICAg
ICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9HQU1NQToKKyAg
ICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLR2FtbWFUcmFu
c2ZlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBOU0xvZyhAIldBUk5JTkc6IFVua25vd24gZnVuY3Rpb24gdHlwZSBmb3IgZmVDb21wb25lbnRU
cmFuc2ZlciIpOworICAgICAgICAgICAgLy9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJlIHN2ZyBm
cm9tIGZhaWxpbmcgYXMgYSByZXN1bHQKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhcmFtZXRl
cnNGb3JDb21wb25lbnRGdW5jKENJRmlsdGVyICpmaWx0ZXIsIGNvbnN0IEtDQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbiYgZnVuYywgQ0lWZWN0b3IgKmNoYW5uZWxTZWxlY3RvcikKK3sKKyAgICBz
d2l0Y2goZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAgICBb
ZmlsdGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktl
eTpAImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNl
bGVjdG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENUX0RJU0NSRVRFOgorICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZW5J
bWFnZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6QCJpbnB1dFRhYmxlIl07Cisg
ICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmNoYW5uZWxTZWxlY3RvciBmb3JLZXk6QCJpbnB1
dFNlbGVjdG9yIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5FQVI6
CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
ZnVuYy5zbG9wZV0gZm9yS2V5OkAiaW5wdXRTbG9wZSJdOworICAgICAgICAgICAgW2ZpbHRlciBz
ZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuaW50ZXJjZXB0XSBmb3JLZXk6
QCJpbnB1dEludGVyY2VwdCJdOyAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENUX0dBTU1BOgorICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEZsb2F0OmZ1bmMuYW1wbGl0dWRlXSBmb3JLZXk6QCJpbnB1dEFtcGxpdHVkZSJd
OworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
OmZ1bmMuZXhwb25lbnRdIGZvcktleTpAImlucHV0RXhwb25lbnQiXTsKKyAgICAgICAgICAgIFtm
aWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLm9mZnNldF0gZm9y
S2V5OkAiaW5wdXRPZmZzZXQiXTsgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgLy9pZGVudGl0eSBoYXMgbm8gYXJncworICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitzdGF0aWMgQ0lGaWx0ZXIgKmdldEZpbHRlckZvckZ1bmMoY29uc3Qg
S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jLCBDSUltYWdlICppbnB1dEltYWdlLCBD
SVZlY3RvciAqY2hhbm5lbFNlbGVjdG9yKSAKK3sJCisgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IFtm
aWx0ZXJGb3JDb21wb25lbnRGdW5jKGZ1bmMpIHJldGFpbl07CisgICAgW2ZpbHRlciBzZXREZWZh
dWx0c107CisgICAgCisgICAgc2V0UGFyYW1ldGVyc0ZvckNvbXBvbmVudEZ1bmMoZmlsdGVyLCBm
dW5jLCBjaGFubmVsU2VsZWN0b3IpOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBm
b3JLZXk6QCJpbnB1dEltYWdlIl07CisgICAgcmV0dXJuIFtmaWx0ZXIgYXV0b3JlbGVhc2VdOwor
fQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldENJRmls
dGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKK3sKKyAgICBbV0tD
b21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107CisgICAgW1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRl
ciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIg
Y2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIAorICAgIENJ
RmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgS1dRX0JMT0NLX0VYQ0VQVElPTlMKKyAgICBmaWx0
ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0NvbXBvbmVudE1lcmdlIl07CisgICAg
aWYgKCFmaWx0ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW2ZpbHRlciBzZXREZWZhdWx0
c107CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IHF1YXJ0ekZpbHRlci0+aW5wdXRJbWFnZSh0
aGlzKTsKKyAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7ICAgIAorICAgIAor
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZvckZ1bmMocmVkRnVuY3Rpb24oKSwgaW5w
dXRJbWFnZSwgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAuMF0pIHZh
bHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAgICAgICAgZm9yS2V5OkAiaW5wdXRG
dW5jUiJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZvckZ1bmMoZ3JlZW5GdW5j
dGlvbigpLCBpbnB1dEltYWdlLCBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MS4wIFo6MC4w
IFc6MC4wXSkgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIAorICAgICAgICAgICAgICBmb3JL
ZXk6QCJpbnB1dEZ1bmNHIl07CisgICAgW2ZpbHRlciBzZXRWYWx1ZTpbZ2V0RmlsdGVyRm9yRnVu
YyhibHVlRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZ
OjAuMCBaOjEuMCBXOjAuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAg
ICAgICAgZm9yS2V5OkAiaW5wdXRGdW5jQiJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZp
bHRlckZvckZ1bmMoYWxwaGFGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBbQ0lWZWN0b3IgdmVjdG9y
V2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXSkgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJd
IAorICAgICAgICAgICAgICBmb3JLZXk6QCJpbnB1dEZ1bmNBIl07CisgICAgCisgICAgRkVfUVVB
UlRaX09VVFBVVF9SRVRVUk47CisgICAgcmV0dXJuIG5pbDsKK30KKwogQ0lGaWx0ZXIgKktDYW52
YXNGRUNvbXBvc2l0ZVF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVh
cnR6RmlsdGVyKSBjb25zdAogewogICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CkluZGV4OiBr
Y2FudmFzL0tDYW52YXNGaWx0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzRmls
dGVycy5oCShyZXZpc2lvbiAxMjc5OSkKKysrIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwzMCBAQCB0eXBlZGVmIGVudW0gewogICAgIENUX0dB
TU1BID0gNAogfSBLQ0NvbXBvbmVudFRyYW5zZmVyVHlwZTsKIAorLyoKKyAvLyBLZWVwIHRoaXMg
YXJvdW5kIGluIGNhc2Ugd2Ugd2FudCB0byBtYWtlIHRoaXMgYSBjbGFzczoKKyAgICAgS0NDb21w
b25lbnRUcmFuc2ZlclR5cGUgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VHlwZShLQ0NvbXBv
bmVudFRyYW5zZmVyVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KKyAgICAKKyAgICBRM1Zh
bHVlTGlzdDxmbG9hdD4gdGFibGVWYWx1ZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFRhYmxlVmFs
dWVzKFEzVmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZhbHVlcyk7CisgICAgCisgICAgZmxvYXQgc2xv
cGUoKSBjb25zdCB7IHJldHVybiBtX3Nsb3BlOyB9CisgICAgdm9pZCBzZXRTbG9wZShmbG9hdCBz
bG9wZSkgeyBtX3Nsb3BlID0gc2xvcGU7IH0KKyAgICAKKyAgICBmbG9hdCBpbnRlcmNlcHQoKSBj
b25zdCB7IHJldHVybiBtX2ludGVyY2VwdDsgfQorICAgIHZvaWQgc2V0SW50ZXJjZXB0KGZsb2F0
IGludGVyY2VwdCkgeyBtX2ludGVyY2VwdCA9IGludGVyY2VwdDsgfQorICAgIAorICAgIGZsb2F0
IGFtcGxpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW1wbGl0dWRlOyB9CisgICAgdm9pZCBzZXRB
bXBsaXR1ZGUoZmxvYXQgYW1wbGl0dWRlKSB7IG1fYW1wbGl0dWRlID0gYW1wbGl0dWRlOyB9Cisg
ICAgCisgICAgZmxvYXQgZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9Cisg
ICAgdm9pZCBzZXRFeHBvbmVudChmbG9hdCBleHBvbmVudCkgeyBtX2V4cG9uZW50ID0gZXhwb25l
bnQ7IH0KKyAgICAKKyAgICBmbG9hdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIHZvaWQgc2V0T2Zmc2V0KGZsb2F0IG9mZnNldCkgeyBtX29mZnNldCA9IG9mZnNldDsg
fQorKi8KKwogc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbgogewogICAgIEtDQ29t
cG9uZW50VHJhbnNmZXJUeXBlIHR5cGU7CkBAIC0yMjUsNiArMjQ5LDEwIEBAIHN0cnVjdCBLQ0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24KIAogY2xhc3MgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNm
ZXIgOiBwdWJsaWMgS0NhbnZhc0ZpbHRlckVmZmVjdAogeworcHVibGljOgorICAgIEtDYW52YXNG
RUNvbXBvbmVudFRyYW5zZmVyKCkgeworICAgICAgICBtX3JlZEZ1bmMudHlwZSA9IG1fZ3JlZW5G
dW5jLnR5cGUgPSBtX2JsdWVGdW5jLnR5cGUgPSBtX2FscGhhRnVuYy50eXBlID0gQ1RfSURFTlRJ
VFk7CisgICAgfQogcHVibGljOiAgICAKICAgICBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
cmVkRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZEZ1bmM7IH0KICAgICB2b2lkIHNldFJl
ZEZ1bmN0aW9uKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykgeyBtX3Jl
ZEZ1bmMgPSBmdW5jOyB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTI3OTkpCisrKyBrc3ZnMi9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiAr
NzIsOSBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbDo6CiAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0ltcGw6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpOwogfQogCisjZGVmaW5lIFZFUklGWV9GVU5DVElPTihmdW5jLCBzdHIpIFwK
KyAgaWYgKGZ1bmMudHlwZTwwIHx8IGZ1bmMudHlwZT40KSBwcmludGYoIkVycm9yOiBicm9rZW4g
ZnVuY3Rpb246ICVzXG4iLCBzdHIpOworCiBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlciAqU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsOjpmaWx0ZXJFZmZlY3QoKSBjb25zdAogewog
ICAgIGlmICghbV9maWx0ZXJFZmZlY3QpCkBAIC05Miw3ICs5NSwxMCBAQCBLQ2FudmFzRkVDb21w
b25lbnRUcmFuc2ZlciAqU1ZHRkVDb21wb25lCiAgICAgICAgIGVsc2UgaWYgKG4tPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmZlRnVuY0FUYWcpKQogICAgICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNl
dEFscGhhRnVuY3Rpb24oc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQUVsZW1lbnRJbXBsICo+KG4pLT50
cmFuc2ZlckZ1bmN0aW9uKCkpOwogICAgIH0KLQorICAgIFZFUklGWV9GVU5DVElPTihtX2ZpbHRl
ckVmZmVjdC0+cmVkRnVuY3Rpb24oKSwgInJlZCIpOworICAgIFZFUklGWV9GVU5DVElPTihtX2Zp
bHRlckVmZmVjdC0+Z3JlZW5GdW5jdGlvbigpLCAiZ3JlZW4iKTsKKyAgICBWRVJJRllfRlVOQ1RJ
T04obV9maWx0ZXJFZmZlY3QtPmJsdWVGdW5jdGlvbigpLCAiYmx1ZSIpOworICAgIFZFUklGWV9G
VU5DVElPTihtX2ZpbHRlckVmZmVjdC0+YWxwaGFGdW5jdGlvbigpLCAiYWxwaGEiKTsKICAgICBy
ZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CiB9CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjc5
OSkKKysrIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw3IEBAIFNWR0FuaW1hdGVkTnVtYmVySW1w
bCAqU1ZHQ29tcG9uZW50VHJhbnMKIAogdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0
dHIpCiB7Ci0gICAgRE9NU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOwotICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQorICAgIERPTVN0cmluZyB2YWx1ZShhdHRy
LT52YWx1ZSgpKTsgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpCiAg
ICAgewogICAgICAgICBpZih2YWx1ZSA9PSAiaWRlbnRpdHkiKQogICAgICAgICAgICAgdHlwZSgp
LT5zZXRCYXNlVmFsKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkpOwpAQCAt
MTA1LDcgKzEwNCw3IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQK
ICAgICAgICAgZWxzZSBpZih2YWx1ZSA9PSAiZ2FtbWEiKQogICAgICAgICAgICAgdHlwZSgpLT5z
ZXRCYXNlVmFsKFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEpOwogICAgIH0KLSAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpCisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAg
IHRhYmxlVmFsdWVzKCktPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUucXN0cmluZygpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNsb3BlQXR0cikKICAgICAgICAgc2xv
cGUoKS0+c2V0QmFzZVZhbCh2YWx1ZS5xc3RyaW5nKCkudG9Eb3VibGUoKSk7CkBAIC0xMjUsMTEg
KzEyNCwxOSBAQCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50CiB7CiAg
ICAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGZ1bmM7CiAgICAgZnVuYy50eXBlID0gKEtD
Q29tcG9uZW50VHJhbnNmZXJUeXBlKSh0eXBlKCktPmJhc2VWYWwoKSAtIDEpOworICAgIGlmIChm
dW5jLnR5cGUgPCAwIHx8IGZ1bmMudHlwZSA+IDQpCisgICAgICAgIHByaW50ZigicmFuZG9tIGZ1
bmN0aW9uIHR5cGVcbiIpOwogICAgIGZ1bmMuc2xvcGUgPSBzbG9wZSgpLT5iYXNlVmFsKCk7CiAg
ICAgZnVuYy5pbnRlcmNlcHQgPSBpbnRlcmNlcHQoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMuYW1w
bGl0dWRlID0gYW1wbGl0dWRlKCktPmJhc2VWYWwoKTsKICAgICBmdW5jLmV4cG9uZW50ID0gZXhw
b25lbnQoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMub2Zmc2V0ID0gb2Zmc2V0KCktPmJhc2VWYWwo
KTsKKyAgICBRM1ZhbHVlTGlzdDxmbG9hdD4gX3RhYmxlVmFsdWVzOworICAgIFNWR051bWJlckxp
c3RJbXBsICpudW1iZXJzID0gdGFibGVWYWx1ZXMoKS0+YmFzZVZhbCgpOworICAgIHVuc2lnbmVk
IGludCBuciA9IG51bWJlcnMtPm51bWJlck9mSXRlbXMoKTsKKyAgICBmb3IodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgbnI7IGkrKykKKyAgICAgICAgX3RhYmxlVmFsdWVzLmFwcGVuZChudW1iZXJz
LT5nZXRJdGVtKGkpLT52YWx1ZSgpKTsKKyAgICBmdW5jLnRhYmxlVmFsdWVzID0gX3RhYmxlVmFs
dWVzOwogICAgIHJldHVybiBmdW5jOwogfQog
</data>
<flag name="review"
          id="1612"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6496</attachid>
            <date>2006-02-14 19:03:41 -0800</date>
            <delta_ts>2006-02-15 23:10:54 -0800</delta_ts>
            <desc>fixed up patch</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>63704</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNzk5KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiAr
NDM3LDIzIEBACiAJCTkzRjE5QjE2MDgyNDVFNTkwMDFFOUFCQyAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICov
OyB9OwogCQk5M0YxOUIxNzA4MjQ1RTU5MDAxRTlBQkMgLyogbGliaWN1Y29yZS5keWxpYiBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjFEMzFBMDU1
OENDNUMwMDgyMUJDMCAvKiBsaWJpY3Vjb3JlLmR5bGliICovOyB9OwogCQk5M0YxOUIxODA4MjQ1
RTU5MDAxRTlBQkMgLyogbGlieHNsdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MDYzMzA3MDczMUE3NzIwMERCMUZEMSAvKiBsaWJ4c2x0
LmR5bGliICovOyB9OworCQlBN0I5N0I3NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZp
bHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAq
LzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRy
YW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdFMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlB
N0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlD
M0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3
QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlB
N0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEw
MDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVC
MSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3
OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAv
KiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlBODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVu
dEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0IwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4
RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwu
Y3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVu
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpA
QCAtMTI5NSw2ICsxMzEyLDIzIEBACiAJCTkzRjE5QjE5MDgyNDVFNTkwMDFFOUFCQyAvKiBJbmZv
LnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5M0YxOUIxQTA4
MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5J
bmRleCA9IDA7IHBhdGggPSBXZWJDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJOTNGMUQzMUEwNTU4Q0M1QzAwODIxQkMwIC8qIGxpYmljdWNvcmUu
ZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSAv
dXNyL2xpYi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owor
CQlBN0I5N0I2NjA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtl
cm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtl
cm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjcwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjkwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I2QTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdCOTdCNkIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdCOTdCNkQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZp
bHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tHYW1tYVRyYW5zZmVy
RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZFMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5z
ZmVyRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzAw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MzA5NzlDM0ExMDAwRThF
QjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0I5N0I3NDA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3Qjc1MDk3OUMz
QTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLVGFibGVUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0I5N0I3NjA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgxMEUzOTMwOEE0
MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLQ2FudmFzVHJlZURlYnVnLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlBODEwRTM5
NDA4QTQxNjBGMDAzMzNEOTggLyogS0NhbnZhc1RyZWVEZWJ1Zy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtDYW52YXNUcmVlRGVidWcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJQTgxMjJDN0UwOEQ1NjRCMDAwODQ0RkEzIC8qIEdldFNWR0RvY3VtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdldFNWR0RvY3VtZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBA
IC0zMDI5LDYgKzMwNjMsMjMgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQThDMzI5MjAwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtl
cm5lbCAqLywKKwkJCQlBN0I5N0I2NjA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJn
ZUZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I2NzA5NzlDM0ExMDAwRThFQjEgLyogV0tD
b21wb25lbnRNZXJnZUZpbHRlci5oICovLAorCQkJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I2
QTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJ
QTdCOTdCNkIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tICov
LAorCQkJCUE3Qjk3QjZDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNkQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFu
c2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjZFMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1h
VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJ
ZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzAwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tICovLAorCQkJCUE3Qjk3QjcxMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE3Qjk3
QjcyMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJ
QTdCOTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLywK
KwkJCQlBN0I5N0I3NDA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNp
a2VybmVsICovLAorCQkJCUE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I3NjA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjEwOTNCQjczMjAwMEI5Q0FDIC8qIFdLQXJp
dGhtZXRpY0ZpbHRlci5oICovLAogCQkJCUE4QzMyOTIyMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIubSAqLywKIAkJCQlBOEMzMjkyMzA5M0JCNzMyMDAwQjlDQUMgLyogV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgKi8sCkBAIC00MjYyLDYgKzQzMTMsMTIgQEAK
IAkJCQlBODEzNjlFMjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTExhYmVsRWxlbWVudEltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MS2V5Z2Vu
RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2RDM4MDk3M0E4RTcwMEQ3NDQ2
MyAvKiBGb3JtRGF0YUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3Qjc4MDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0I5N0I3QjA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0I5N0I3RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEg
LyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I4
MzA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdCOTdCODYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUJGMDIzMDA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUJGMDI0NDA5NzQ4MTkwMDBDNDMxOTYgLyog
TWFjRnJhbWUuaCBpbiBIZWFkZXJzICovLApAQCAtNDU2Niw2ICs0NjIzLDExIEBACiAJCQkJQTg4
QUQzQTEwOTUyNDg2RDAwMUREMTk2IC8qIFdLUG9pbnRMaWdodEZpbHRlci5jaWtlcm5lbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQTQwOTUyNDg2RDAwMUREMTk2IC8qIFdLU3BlY3VsYXJM
aWdodGluZ0ZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTg4QUQzQTcwOTUy
NDg2RDAwMUREMTk2IC8qIFdLU3BvdExpZ2h0RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAq
LywKKwkJCQlBN0I5N0I3NzA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRl
ci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCN0EwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJQTdCOTdCN0QwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3
Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovLAogCQkJCUJDRUE0NzlDMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3Nwcm9wZXJ0
aWVzLmluIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5RjA5N0NBQUM4MDA5NEM5RTQgLyog
Y3NzdmFsdWVzLmluIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0M4Q0ZDRDA5ODZDRDI0MDAxNDBC
RjIgLyogQ29sb3JEYXRhLmdwZXJmIGluIFJlc291cmNlcyAqLywKQEAgLTUzNzcsNiArNTQzOSwx
MiBAQAogCQkJCUE4MTM2OUUzMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MTGFiZWxFbGVtZW50SW1w
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlFNTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEtleWdlbkVsZW1lbnRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2RDM5MDk3M0E4
RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdC
NzkwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3Qjk3QjdDMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3QjdGMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0dhbW1hVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3QjgxMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAor
CQkJCUE3Qjk3Qjg0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0g
aW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4NzA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDEwOTc0ODE5MDAwQzQz
MTk2IC8qIEtXUUtIVE1MVmlldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogTWFjRnJhbWUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCShyZXZpc2lvbiAx
Mjc5OSkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgS0NhbnZhc0ZpbHRlckVmZmVjdCAq
S1JlbmRlcmluZ0RldmljZVF1YQogICAgICovCiAgICAgY2FzZSBGRV9CTEVORDogcmV0dXJuIG5l
dyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigpOwogICAgIGNhc2UgRkVfQ09MT1JfTUFUUklYOiByZXR1
cm4gbmV3IEtDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6KCk7Ci0vLyAgY2FzZSBGRV9DT01QT05F
TlRfVFJBTlNGRVI6IAorICAgIGNhc2UgRkVfQ09NUE9ORU5UX1RSQU5TRkVSOiByZXR1cm4gbmV3
IEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6KCk7CiAgICAgY2FzZSBGRV9DT01QT1NJ
VEU6IHJldHVybiBuZXcgS0NhbnZhc0ZFQ29tcG9zaXRlUXVhcnR6KCk7CiAvLyAgY2FzZSBGRV9D
T05WT0xWRV9NQVRSSVg6IAogICAgIGNhc2UgRkVfRElGRlVTRV9MSUdIVElORzogcmV0dXJuIG5l
dyBLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmdRdWFydHooKTsKSW5kZXg6IGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkocmV2aXNpb24gMTI3OTkpCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ0lGaWx0ZXIgKmdldENJRmls
dGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3Q7CiB9OwogCi0vL2Ns
YXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDogcHVibGljIEtDYW52YXNGRUNv
bXBvbmVudFRyYW5zZmVyIHsKLS8vcHVibGljOgotLy8gICAgdmlydHVhbCBDSUZpbHRlciAqZ2V0
Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdDsKLS8vfTsK
K2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6IDogcHVibGljIEtDYW52YXNG
RUNvbXBvbmVudFRyYW5zZmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIENJRmlsdGVyICpnZXRD
SUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0OworfTsKIAog
Y2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXhRdWFydHogOiBwdWJsaWMgS0NhbnZhc0ZFQ29u
dm9sdmVNYXRyaXggewogcHVibGljOgpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysr
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLQ29tcG9uZW50
TWVyZ2VGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY1I7CisgICAg
Q0lJbWFnZSAgKmlucHV0RnVuY0c7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7CisgICAgQ0lJ
bWFnZSAgKmlucHV0RnVuY0E7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbGluZWFyVHJhbnNmZXIoc2Ft
cGxlciBpbWFnZSwgZmxvYXQgc2xvcGUsIGZsb2F0IGludGVyY2VwdCkKK3sKKyAgICB2ZWM0IEMg
PSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIHJldHVybiBzbG9wZSAq
IEMgKyBpbnRlcmNlcHQ7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVsICpsaW5lYXJU
cmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRl
ck5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0
b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgQCJXZWJL
aXQgTGluZWFyIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5
bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRl
Z29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJp
YnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRTbG9wZSIsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRJbnRlcnNlY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07
Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorewor
ICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlk
KWluaXQKK3sKKyAgICBpZiAoIWxpbmVhclRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldL
TGluZWFyVHJhbnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3Ry
aW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxl
XTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmlu
Zzpjb2RlXTsKKyAgICAgICAgbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0
QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQor
CistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxl
ciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgcmV0dXJu
IFtzZWxmIGFwcGx5OmxpbmVhclRyYW5zZmVyRmlsdGVyLCBpbnB1dFNhbXBsZXIsIGlucHV0U2xv
cGUsIGlucHV0SW50ZXJjZXB0LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRp
b25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCShyZXZpc2lvbiAwKQorKysg
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9s
aXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bXBvcnQgIldLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVsICpjb21w
b25lbnRNZXJnZUZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZp
bHRlck5hbWU6QCJXS0NvbXBvbmVudE1lcmdlIgorICAgICAgICAgICAgICAgICAgICAgY29uc3Ry
dWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgQCJX
ZWJLaXQgQ29tcG9uZW50IE1lcmdlIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5
U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lD
YXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0
dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBuaWxdXTsKK30K
KworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAg
cmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5p
dAoreworICAgIGlmICghY29tcG9uZW50TWVyZ2VGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUg
KmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAg
ICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tDb21w
b25lbnRNZXJnZUZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcg
KmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOwor
ICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNv
ZGVdOworICAgICAgICBjb21wb25lbnRNZXJnZUZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdElu
ZGV4OjBdIHJldGFpbl07CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0g
KENJSW1hZ2UgKilvdXRwdXRJbWFnZQoreworICAgIHJldHVybiBbc2VsZiBhcHBseTpjb21wb25l
bnRNZXJnZUZpbHRlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEZ1bmNSXSwg
CisgICAgICAgIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jR10sIFtDSVNh
bXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jQl0sIFtDSVNhbXBsZXIgc2FtcGxlcldp
dGhJbWFnZTogaW5wdXRGdW5jQV0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1dEZ1bmNSIGRlZmluaXRp
b25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9x
dWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tUYWJsZVRyYW5zZmVy
RmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2U7CisgICAgQ0lJbWFn
ZSAqaW5wdXRUYWJsZTsKKyAgICBDSVZlY3RvciAqaW5wdXRTZWxlY3RvcjsKK30KKworQGVuZApJ
bmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmls
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVu
dGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZA
c3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3Jl
L0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciA6IENJ
RmlsdGVyIHsKKyAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKK30KKworQGVuZApJbmRleDoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmls
dGVyLm0JKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1Rh
YmxlVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5
LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCIKKwor
c3RhdGljIENJS2VybmVsICp0YWJsZVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1wbGVtZW50
YXRpb24gV0tUYWJsZVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBb
Q0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tUYWJsZVRyYW5zZmVyIgorICAgICAgICAg
ICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJp
YnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAg
ICAgICAgICAgICAgICAgQCJXZWJLaXQgVGFibGUgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQ
aXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNB
bmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVHcmFkaWVu
dCwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlu
cHV0VGFibGUiLCAgIAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmls
dGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBp
ZiAoIXRhYmxlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtO
U0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAgICBOU1N0cmluZyAq
a2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tUYWJsZVRyYW5zZmVyRmls
dGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJy
YXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAg
IHRhYmxlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5d
OworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0
cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtDSVNhbXBsZXIgc2Ft
cGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgTlNBcnJheSAqYXJncyA9IFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1h
Z2U6IGlucHV0VGFibGVdLCBpbnB1dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZpbml0
aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYg
YXBwbHk6dGFibGVUcmFuc2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07Cit9
CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisKKworQGltcGxlbWVudGF0aW9uIFdLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJl
Z2lzdGVyRmlsdGVyTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltO
U0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAg
ICAgICAgIEAiV2ViS2l0IElkZW50aXR5IFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlz
cGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxz
LG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAg
ICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKilu
YW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30K
KworLSAoaWQpaW5pdAoreworICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1h
Z2UgKilvdXRwdXRJbWFnZQoreworICAgIHJldHVybiBpbnB1dEltYWdlOworfQorCitAZW5kCklu
ZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBz
dHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIDogQ0lG
aWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIENJSW1hZ2UgICppbnB1dFRh
YmxlOworICAgIENJVmVjdG9yICppbnB1dFNlbGVjdG9yOworfQorCitAZW5kCkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lv
biAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMu
bno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IGRpc2NyZXRlVHJhbnNmZXIoc2FtcGxlciBpbWFn
ZSwgc2FtcGxlciB0YWJsZSwgdmVjNCByZ2JhU2VsZWN0b3IsIGZsb2F0IG1heEluZGV4KQorewor
ICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGltYWdlKSk7CisgICAgZmxv
YXQgayA9IGZsb29yKGRvdChyZ2JhU2VsZWN0b3IsIEMpICogbWF4SW5kZXgpOworICAgIHZlYzQg
cmVzID0gc2FtcGxlKHRhYmxlLCB2ZWMyKGsgKyAwLjUsIDAuNSkpOworICAgIHJldHVybiByZXM7
Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxv
amgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmRpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5h
bWU6QCJXS0Rpc2NyZXRlVHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rv
cjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktp
dCBEaXNjcmV0ZSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0
eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0
ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRy
aWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisK
KysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJl
dHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQK
K3sKKyAgICBpZiAoIWRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUg
KmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAg
ICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tEaXNj
cmV0ZVRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmlu
ZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07
CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6
Y29kZV07CisgICAgICAgIGRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0
QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQor
CistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxl
ciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgTlNBcnJh
eSAqYXJncyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1w
bGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0VGFibGUga2V5c0FuZFZhbHVlczprQ0lTYW1wbGVy
RmlsdGVyTW9kZSwga0NJU2FtcGxlckZpbHRlck5lYXJlc3QsIG5pbF0sIGlucHV0U2VsZWN0b3Is
IAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0u
c2l6ZS53aWR0aC0xLjBdLCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25d
LCBuaWxdOworICAgIHJldHVybiBbc2VsZiBhcHBseTpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGFy
Z3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJl
dmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCisKK0BpbnRlcmZh
Y2UgV0tHYW1tYVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1
dEltYWdlOworICAgIE5TTnVtYmVyICppbnB1dEFtcGxpdHVkZTsKKyAgICBOU051bWJlciAqaW5w
dXRFeHBvbmVudDsKKyAgICBOU051bWJlciAqaW5wdXRPZmZzZXQ7Cit9CisKK0BlbmQKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lr
ZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21w
b25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZl
YzQgbWVyZ2VDb21wb25lbnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIgZnVuY0csIHNhbXBsZXIg
ZnVuY0IsIHNhbXBsZXIgZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNhbXBsZShmdW5jUiwgc2Ft
cGxlckNvb3JkKGZ1bmNSKSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxlKGZ1bmNHLCBzYW1wbGVy
Q29vcmQoZnVuY0cpKS5nOworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVuY0IsIHNhbXBsZXJDb29y
ZChmdW5jQikpLmI7CisgICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwgc2FtcGxlckNvb3JkKGZ1
bmNBKSkuYTsKKyAgICByZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30KSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0
dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgZ2FtbWFUcmFu
c2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBhbXBsaXR1ZGUsIGZsb2F0IGV4cG9uZW50LCBmbG9h
dCBvZmZzZXQpCit7CisgICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1h
Z2UpKTsKKyAgICByZXR1cm4gYW1wbGl0dWRlICogcG93KEMsIHZlYzQoZXhwb25lbnQpKSArIG9m
ZnNldDsKK30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFu
c2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2
QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tHYW1tYVRy
YW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9
IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLR2FtbWFUcmFuc2ZlckZpbHRlcgorKyAodm9pZClp
bml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLR2FtbWFU
cmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAg
ICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IEdhbW1hIFRyYW5zZmVy
Iiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlW
aWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtD
SUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3Jp
ZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lB
dHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRBbXBs
aXR1ZGUiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRl
bnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwg
a0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0
RXhwb25lbnQiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRl
SWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxh
ciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlu
cHV0T2Zmc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRl
ciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2Vs
ZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYg
KCFnYW1tYVRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNC
dW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtl
cm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLR2FtbWFUcmFuc2ZlckZpbHRl
ciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5
ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBn
YW1tYVRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsK
KyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1
dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBs
ZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOworICAgIHJldHVybiBbc2VsZiBhcHBseTpnYW1tYVRy
YW5zZmVyRmlsdGVyLCBpbnB1dFNhbXBsZXIsIGlucHV0QW1wbGl0dWRlLCBpbnB1dEV4cG9uZW50
LCBpbnB1dE9mZnNldCwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwg
bmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tU
YWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24g
MCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCitrZXJuZWwgdmVjNCB0YWJsZVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIHNhbXBs
ZXIgdGFibGUsIHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJbmRleCkKK3sKKyAgICB2ZWM0
IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIGZsb2F0IGsgPSBk
b3QocmdiYVNlbGVjdG9yLCBDKSAqIG1heEluZGV4OworICAgIHZlYzQgcmVzID0gc2FtcGxlKHRh
YmxlLCB2ZWMyKGsgKyAwLjUsIDAuNSkpOworICAgIHJldHVybiByZXM7Cit9CkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tM
aW5lYXJUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1
cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisK
KworQGludGVyZmFjZSBXS0xpbmVhclRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJ
SW1hZ2UgICppbnB1dEltYWdlOworICAgIE5TTnVtYmVyICppbnB1dFNsb3BlOworICAgIE5TTnVt
YmVyICppbnB1dEludGVyY2VwdDsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JKHJldmlzaW9uIDEyNzk5KQorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDEyIEBACiAjaW1wb3J0ICJXS0Rpc3RhbnRMaWdodEZpbHRlci5oIgogI2ltcG9y
dCAiV0tOb3JtYWxNYXBGaWx0ZXIuaCIKICNpbXBvcnQgIldLQXJpdGhtZXRpY0ZpbHRlci5oIgor
I2ltcG9ydCAiV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIgorI2ltcG9ydCAiV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBv
cnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tMaW5lYXJUcmFuc2Zl
ckZpbHRlci5oIgorI2ltcG9ydCAiV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgiCiAKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogCkBAIC0zNDgsNiArMzU0LDExNyBAQCBDSUZpbHRl
ciAqS0NhbnZhc0ZFQ29sb3JNYXRyaXhRdWFydHo6OmdlCiAgICAgRkVfUVVBUlRaX09VVFBVVF9S
RVRVUk47CiB9CiAKK3N0YXRpYyBDSUltYWdlICpnZW5JbWFnZUZyb21UYWJsZShjb25zdCBRM1Zh
bHVlTGlzdDxmbG9hdD4mIHRhYmxlKQoreworICAgIGludCBsZW5ndGg9dGFibGUuY291bnQoKTsK
KyAgICBpbnQgbkJ5dGVzID0gbGVuZ3RoKjQqc2l6ZW9mKGZsb2F0KTsKKyAgICBmbG9hdCAqdGFi
bGVTdG9yZSA9IChmbG9hdCAqKW1hbGxvYyhuQnl0ZXMpOworICAgIE5TRGF0YSAqYml0bWFwRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTp0YWJsZVN0b3JlIGxlbmd0aDpuQnl0ZXNd
OworICAgIGZvciAoUTNWYWx1ZUxpc3Q8ZmxvYXQ+OjpDb25zdEl0ZXJhdG9yIGl0ID0gdGFibGUu
YmVnaW4oKTsgaXQgIT0gdGFibGUuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgZmxvYXQgdmFsdWUg
PSAqaXQ7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxlU3Rv
cmUrKyA9IHZhbHVlOworICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7CisgICAgICAgICp0
YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0
aEJpdG1hcERhdGE6Yml0bWFwRGF0YSBieXRlc1BlclJvdzpuQnl0ZXMgc2l6ZTpDR1NpemVNYWtl
KGxlbmd0aCwgMSkgZm9ybWF0OmtDSUZvcm1hdFJHQkFmIGNvbG9yU3BhY2U6bmlsXTsKK30KKwor
c3RhdGljIENJRmlsdGVyICpmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IEtDQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykKK3sKKyAgICBDSUZpbHRlciAqZmlsdGVyOworICAgIHN3
aXRjaChmdW5jLnR5cGUpIHsKKyAgICAgICAgY2FzZSBDVF9JREVOVElUWToKKyAgICAgICAgICAg
IGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJd
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAg
ICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0RJU0NSRVRFOgorICAg
ICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNjcmV0ZVRy
YW5zZmVyRmlsdGVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5F
QVI6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0xp
bmVhclRyYW5zZmVyIl07ICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDVF9HQU1NQToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRo
TmFtZTpAIldLR2FtbWFUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBOU0xvZyhAIldBUk5JTkc6IFVua25vd24gZnVuY3Rpb24gdHlw
ZSBmb3IgZmVDb21wb25lbnRUcmFuc2ZlciIpOworICAgICAgICAgICAgLy9hbmQgdG8gcHJldmVu
dCB0aGUgZW50aXJlIHN2ZyBmcm9tIGZhaWxpbmcgYXMgYSByZXN1bHQKKyAgICAgICAgICAgIGZp
bHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJdOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK3N0YXRp
YyB2b2lkIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKENJRmlsdGVyICpmaWx0ZXIsIGNv
bnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYywgQ0lWZWN0b3IgKmNoYW5uZWxT
ZWxlY3RvcikKK3sKKyAgICBzd2l0Y2goZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1RfVEFC
TEU6CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMu
dGFibGVWYWx1ZXMpIGZvcktleTpAImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIg
c2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0RJU0NSRVRFOgorICAgICAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpnZW5JbWFnZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6
QCJpbnB1dFRhYmxlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmNoYW5uZWxTZWxl
Y3RvciBmb3JLZXk6QCJpbnB1dFNlbGVjdG9yIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDVF9MSU5FQVI6CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5zbG9wZV0gZm9yS2V5OkAiaW5wdXRTbG9wZSJdOworICAg
ICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMu
aW50ZXJjZXB0XSBmb3JLZXk6QCJpbnB1dEludGVyY2VwdCJdOyAgICAgICAgICAKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0dBTU1BOgorICAgICAgICAgICAgW2ZpbHRlciBz
ZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuYW1wbGl0dWRlXSBmb3JLZXk6
QCJpbnB1dEFtcGxpdHVkZSJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuZXhwb25lbnRdIGZvcktleTpAImlucHV0RXhwb25lbnQi
XTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDpmdW5jLm9mZnNldF0gZm9yS2V5OkAiaW5wdXRPZmZzZXQiXTsgICAKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy9pZGVudGl0eSBoYXMgbm8gYXJn
cworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgQ0lGaWx0ZXIgKmdldEZp
bHRlckZvckZ1bmMoY29uc3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jLCBDSUlt
YWdlICppbnB1dEltYWdlLCBDSVZlY3RvciAqY2hhbm5lbFNlbGVjdG9yKSAKK3sJCisgICAgQ0lG
aWx0ZXIgKmZpbHRlciA9IFtmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGZ1bmMpIHJldGFpbl07Cisg
ICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgCisgICAgc2V0UGFyYW1ldGVyc0ZvckNvbXBv
bmVudEZ1bmMoZmlsdGVyLCBmdW5jLCBjaGFubmVsU2VsZWN0b3IpOworICAgIFtmaWx0ZXIgc2V0
VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07CisgICAgcmV0dXJuIFtmaWx0
ZXIgYXV0b3JlbGVhc2VdOworfQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNm
ZXJRdWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikg
Y29uc3QKK3sKKyAgICBbV0tDb21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107CisgICAgW1dLSWRl
bnRpdHlUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2ZlckZpbHRlciBj
bGFzc107CisgICAgW1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgY2xh
c3NdOworICAgIAorICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgS1dRX0JMT0NLX0VY
Q0VQVElPTlMKKyAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0NvbXBv
bmVudE1lcmdlIl07CisgICAgaWYgKCFmaWx0ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
W2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IHF1YXJ0ekZp
bHRlci0+aW5wdXRJbWFnZSh0aGlzKTsKKyAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJ
bWFnZSk7ICAgIAorICAgIAorICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZvckZ1bmMo
cmVkRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjAu
MCBaOjAuMCBXOjAuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSAKKyAgICAgICAgICAg
ICAgZm9yS2V5OkAiaW5wdXRGdW5jUiJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6W2dldEZpbHRl
ckZvckZ1bmMoZ3JlZW5GdW5jdGlvbigpLCBpbnB1dEltYWdlLCBbQ0lWZWN0b3IgdmVjdG9yV2l0
aFg6MC4wIFk6MS4wIFo6MC4wIFc6MC4wXSkgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdIAor
ICAgICAgICAgICAgICBmb3JLZXk6QCJpbnB1dEZ1bmNHIl07CisgICAgW2ZpbHRlciBzZXRWYWx1
ZTpbZ2V0RmlsdGVyRm9yRnVuYyhibHVlRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgW0NJVmVjdG9y
IHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjEuMCBXOjAuMF0pIHZhbHVlRm9yS2V5OkAib3V0cHV0
SW1hZ2UiXSAKKyAgICAgICAgICAgICAgZm9yS2V5OkAiaW5wdXRGdW5jQiJdOworICAgIFtmaWx0
ZXIgc2V0VmFsdWU6W2dldEZpbHRlckZvckZ1bmMoYWxwaGFGdW5jdGlvbigpLCBpbnB1dEltYWdl
LCBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXSkgdmFsdWVGb3JL
ZXk6QCJvdXRwdXRJbWFnZSJdIAorICAgICAgICAgICAgICBmb3JLZXk6QCJpbnB1dEZ1bmNBIl07
CisgICAgCisgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CisgICAgcmV0dXJuIG5pbDsKK30K
KwogQ0lGaWx0ZXIgKktDYW52YXNGRUNvbXBvc2l0ZVF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZh
c0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdAogewogICAgIENJRmlsdGVyICpmaWx0
ZXIgPSBuaWw7CkluZGV4OiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCShyZXZpc2lvbiAxMjc5OSkKKysrIGtjYW52YXMvS0Nh
bnZhc0ZpbHRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSwxMCBAQCBzdHJ1Y3Qg
S0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uCiAKIGNsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRy
YW5zZmVyIDogcHVibGljIEtDYW52YXNGaWx0ZXJFZmZlY3QKIHsKK3B1YmxpYzoKKyAgICBLQ2Fu
dmFzRkVDb21wb25lbnRUcmFuc2ZlcigpIHsKKyAgICAgICAgbV9yZWRGdW5jLnR5cGUgPSBtX2dy
ZWVuRnVuYy50eXBlID0gbV9ibHVlRnVuYy50eXBlID0gbV9hbHBoYUZ1bmMudHlwZSA9IENUX0lE
RU5USVRZOworICAgIH0KIHB1YmxpYzogICAgCiAgICAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIHJlZEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRGdW5jOyB9CiAgICAgdm9pZCBz
ZXRSZWRGdW5jdGlvbihjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpIHsg
bV9yZWRGdW5jID0gZnVuYzsgfQpJbmRleDoga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyNzk5KQorKysg
a3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50CiAgICAgICAgIGVsc2UgaWYodmFsdWUgPT0gImdhbW1hIikKICAgICAg
ICAgICAgIHR5cGUoKS0+c2V0QmFzZVZhbChTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dB
TU1BKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp2YWx1
ZXNBdHRyKQorICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dGFibGVWYWx1
ZXNBdHRyKQogICAgICAgICB0YWJsZVZhbHVlcygpLT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlLnFz
dHJpbmcoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzbG9wZUF0
dHIpCiAgICAgICAgIHNsb3BlKCktPnNldEJhc2VWYWwodmFsdWUucXN0cmluZygpLnRvRG91Ymxl
KCkpOwpAQCAtMTI1LDExICsxMjUsMTkgQEAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNW
R0NvbXBvbmVudAogewogICAgIEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBmdW5jOwogICAg
IGZ1bmMudHlwZSA9IChLQ0NvbXBvbmVudFRyYW5zZmVyVHlwZSkodHlwZSgpLT5iYXNlVmFsKCkg
LSAxKTsKKyAgICBpZiAoZnVuYy50eXBlIDwgMCB8fCBmdW5jLnR5cGUgPiA0KQorICAgICAgICBm
dW5jLnR5cGUgPSBDVF9JREVOVElUWTsKICAgICBmdW5jLnNsb3BlID0gc2xvcGUoKS0+YmFzZVZh
bCgpOwogICAgIGZ1bmMuaW50ZXJjZXB0ID0gaW50ZXJjZXB0KCktPmJhc2VWYWwoKTsKICAgICBm
dW5jLmFtcGxpdHVkZSA9IGFtcGxpdHVkZSgpLT5iYXNlVmFsKCk7CiAgICAgZnVuYy5leHBvbmVu
dCA9IGV4cG9uZW50KCktPmJhc2VWYWwoKTsKICAgICBmdW5jLm9mZnNldCA9IG9mZnNldCgpLT5i
YXNlVmFsKCk7CisgICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IF90YWJsZVZhbHVlczsKKyAgICBTVkdO
dW1iZXJMaXN0SW1wbCAqbnVtYmVycyA9IHRhYmxlVmFsdWVzKCktPmJhc2VWYWwoKTsKKyAgICB1
bnNpZ25lZCBpbnQgbnIgPSBudW1iZXJzLT5udW1iZXJPZkl0ZW1zKCk7CisgICAgZm9yKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IG5yOyBpKyspCisgICAgICAgIF90YWJsZVZhbHVlcy5hcHBlbmQo
bnVtYmVycy0+Z2V0SXRlbShpKS0+dmFsdWUoKSk7CisgICAgZnVuYy50YWJsZVZhbHVlcyA9IF90
YWJsZVZhbHVlczsKICAgICByZXR1cm4gZnVuYzsKIH0KIAo=
</data>
<flag name="review"
          id="1615"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6530</attachid>
            <date>2006-02-15 23:10:54 -0800</date>
            <delta_ts>2006-02-16 01:01:14 -0800</delta_ts>
            <desc>Yet another version</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>67688</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODM2KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNiAr
NDQyLDIzIEBACiAJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2MzhBOTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmls
dGVyLmNpa2VybmVsICovOyB9OwogCQlBNzYzOEE5NzA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRGIC8qIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTc2MzhBOTgwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTYwOTk1OTY1RDAwMDdFMTRGIC8q
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwICovOyB9OworCQlBN0I5N0I3NzA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3
Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdC
N0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5
NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThF
QjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdF
MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2Ft
bWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyog
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lk
ZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyog
V0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlB
ODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0Iw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0
NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpAQCAtMTMxNCw2ICsxMzMxLDIzIEBACiAJCUE3
NjM4QTkxMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYzOEE5NjA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnRJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
Qjk3QjY3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkEwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MTA5
NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdC
OTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8q
IFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTBFMzkzMDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Ry
ZWVEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLQ2FudmFzVHJlZURlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4MTIyQzdFMDhENTY0QjAwMDg0NEZBMyAvKiBHZXRT
VkdEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
ZXRTVkdEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtMzEzMiw2ICszMTY2LDIzIEBACiAJCQkJQTc2MzhBOEEwOTk1
OEVBNTAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLm0gKi8sCiAJCQkJQTc2MzhB
OTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsICov
LAogCQkJCUE4QzMyOTIwMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lr
ZXJuZWwgKi8sCisJCQkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjcwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2ODA5NzlDM0ExMDAwRThFQjEg
LyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovLAorCQkJCUE3Qjk3QjY5MDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdC
NkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovLAorCQkJ
CUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubSAq
LywKKwkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsICovLAorCQkJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1t
YVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I3MTA5NzlDM0Ex
MDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5
N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oICovLAorCQkJ
CUE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi8s
CisJCQkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5z
ZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tICovLAogCQkJCUE4QzMyOTIxMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIuaCAqLywKIAkJCQlBOEMzMjkyMjA5M0JCNzMyMDAwQjlDQUMgLyogV0tB
cml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjMwOTNCQjczMjAwMEI5Q0FDIC8qIFdL
RGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsICovLApAQCAtNDIzOSw2ICs0MjkwLDEyIEBA
CiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxMYWJlbEVsZW1lbnRJbXBsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlFNDA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdl
bkVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0
NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I3ODA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0UwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFu
c2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCODAwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdC
ODMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMzAwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyNDQwOTc0ODE5MDAwQzQzMTk2IC8q
IE1hY0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1ODYsNiArNDY0MywxMSBAQAogCQkJCUE4
OEFEM0ExMDk1MjQ4NkQwMDFERDE5NiAvKiBXS1BvaW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E0MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1NwZWN1bGFy
TGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E3MDk1
MjQ4NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJQTdCOTdCNzcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjdBMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAor
CQkJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lr
ZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjgyMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKKwkJCQlBN0I5
N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGlu
IFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5QzA5N0NBQUM4MDA5NEM5RTQgLyogY3NzcHJvcGVy
dGllcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OUYwOTdDQUFDODAwOTRDOUU0IC8q
IGNzc3ZhbHVlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNDOENGQ0QwOTg2Q0QyNDAwMTQw
QkYyIC8qIENvbG9yRGF0YS5ncGVyZiBpbiBSZXNvdXJjZXMgKi8sCkBAIC01MzYxLDYgKzU0MjMs
MTIgQEAKIAkJCQlBODEzNjlFMzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTExhYmVsRWxlbWVudElt
cGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RTUwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxLZXlnZW5FbGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNkQzOTA5NzNB
OEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3
Qjc5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gaW4gU291cmNl
cyAqLywKKwkJCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3RjA5NzlDM0ExMDAwRThFQjEgLyog
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4MTA5NzlD
M0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywK
KwkJCQlBN0I5N0I4NDA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyMkUwOTc0ODE2MzAwQzQz
MTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QkYwMjQxMDk3NDgxOTAwMEM0
MzE5NiAvKiBLV1FLSFRNTFZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0
ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBrY2FudmFz
L2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
Y2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQkocmV2aXNpb24g
MTI4MzYpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIEtDYW52YXNGaWx0ZXJFZmZlY3Qg
KktSZW5kZXJpbmdEZXZpY2VRdWEKICAgICAqLwogICAgIGNhc2UgRkVfQkxFTkQ6IHJldHVybiBu
ZXcgS0NhbnZhc0ZFQmxlbmRRdWFydHooKTsKICAgICBjYXNlIEZFX0NPTE9SX01BVFJJWDogcmV0
dXJuIG5ldyBLQ2FudmFzRkVDb2xvck1hdHJpeFF1YXJ0eigpOwotLy8gIGNhc2UgRkVfQ09NUE9O
RU5UX1RSQU5TRkVSOiAKKyAgICBjYXNlIEZFX0NPTVBPTkVOVF9UUkFOU0ZFUjogcmV0dXJuIG5l
dyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eigpOwogICAgIGNhc2UgRkVfQ09NUE9T
SVRFOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbXBvc2l0ZVF1YXJ0eigpOwogLy8gIGNhc2UgRkVf
Q09OVk9MVkVfTUFUUklYOiAKICAgICBjYXNlIEZFX0RJRkZVU0VfTElHSFRJTkc6IHJldHVybiBu
ZXcgS0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nUXVhcnR6KCk7CkluZGV4OiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgJKHJldmlzaW9uIDEyODM2KQorKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsMTAgKzcxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENJRmlsdGVyICpnZXRDSUZp
bHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0OwogfTsKIAotLy9j
bGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFzRkVD
b21wb25lbnRUcmFuc2ZlciB7Ci0vL3B1YmxpYzoKLS8vICAgIHZpcnR1YWwgQ0lGaWx0ZXIgKmdl
dENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3Q7Ci0vL307
CitjbGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFz
RkVDb21wb25lbnRUcmFuc2ZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBDSUZpbHRlciAqZ2V0
Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgQ0lGaWx0ZXIgKmdldEZ1bmN0aW9uRmlsdGVyKGludCBjaGFubmVsLCBDSUltYWdl
ICppbnB1dEltYWdlKSBjb25zdDsKK307CiAKIGNsYXNzIEtDYW52YXNGRUNvbnZvbHZlTWF0cml4
UXVhcnR6IDogcHVibGljIEtDYW52YXNGRUNvbnZvbHZlTWF0cml4IHsKIHB1YmxpYzoKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1l
cmdlRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2Uu
aD4KKworQGludGVyZmFjZSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyIDogQ0lGaWx0ZXIgeworICAg
IENJSW1hZ2UgICppbnB1dEZ1bmNSOworICAgIENJSW1hZ2UgICppbnB1dEZ1bmNHOworICAgIENJ
SW1hZ2UgICppbnB1dEZ1bmNCOworICAgIENJSW1hZ2UgICppbnB1dEZ1bmNBOworfQorCitAZW5k
CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCisrKyBrY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9s
aXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tl
cm5lbCB2ZWM0IGxpbmVhclRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIGZsb2F0IHNsb3BlLCBmbG9h
dCBpbnRlcmNlcHQpCit7CisgICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQo
aW1hZ2UpKTsKKyAgICByZXR1cm4gc2xvcGUgKiBDICsgaW50ZXJjZXB0OworfQpJbmRleDoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJG
aWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
TGluZWFyVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJi
dXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgi
CisKK3N0YXRpYyBDSUtlcm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBs
ZW1lbnRhdGlvbiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sK
KyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tMaW5lYXJUcmFuc2ZlciIKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xh
c3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
KyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IExpbmVhciBUcmFuc2ZlciIsIGtDSUF0dHJp
YnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5v
blNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAg
ICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEu
MF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U2xvcGUiLAorICAgICAg
ICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAu
MF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0SW50ZXJzZWN0aW9uIiwK
KyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldp
dGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5p
dF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFsaW5lYXJUcmFu
c2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRs
ZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0g
W2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0xpbmVhclRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6
QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMg
PSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAgIGxpbmVhclRyYW5z
ZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9Cisg
ICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7
CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1h
Z2U6IGlucHV0SW1hZ2VdOworICAgIHJldHVybiBbc2VsZiBhcHBseTpsaW5lYXJUcmFuc2ZlckZp
bHRlciwgaW5wdXRTYW1wbGVyLCBpbnB1dFNsb3BlLCBpbnB1dEludGVyY2VwdCwgQCJkZWZpbml0
aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDog
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVy
LmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBuaWw7CisKK0Bp
bXBsZW1lbnRhdGlvbiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUK
K3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tDb21wb25lbnRNZXJnZSIK
KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAg
Y2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IENvbXBvbmVudCBNZXJnZSIsIGtDSUF0
dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29y
eU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAg
ICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5h
bWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWNvbXBvbmVudE1lcmdl
RmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9y
Q2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVu
ZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQ29tcG9uZW50TWVyZ2VGaWx0ZXIiIG9mVHlwZTpAImNp
a2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
b250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtD
SUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgY29tcG9uZW50TWVyZ2VG
aWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICBy
ZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAg
ICByZXR1cm4gW3NlbGYgYXBwbHk6Y29tcG9uZW50TWVyZ2VGaWx0ZXIsIFtDSVNhbXBsZXIgc2Ft
cGxlcldpdGhJbWFnZTogaW5wdXRGdW5jUl0sIAorICAgICAgICBbQ0lTYW1wbGVyIHNhbXBsZXJX
aXRoSW1hZ2U6IGlucHV0RnVuY0ddLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0
RnVuY0JdLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0RnVuY0FdLCBAImRlZmlu
aXRpb24iLCBbaW5wdXRGdW5jUiBkZWZpbml0aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDog
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJi
dXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgor
CitAaW50ZXJmYWNlIFdLVGFibGVUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUlt
YWdlICppbnB1dEltYWdlOworICAgIENJSW1hZ2UgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3Ig
KmlucHV0U2VsZWN0b3I7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lv
biAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVy
RmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBX
S0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0
SW1hZ2U7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
VGFibGVUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqdGFibGVUcmFuc2Zl
ckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLVGFibGVUcmFuc2ZlckZpbHRlcgor
KyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpA
IldLVGFibGVUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYK
KyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IFRhYmxl
IFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJ
Q2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxs
SW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRl
ckNhdGVnb3JpZXMsICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ0lBdHRyaWJ1dGVUeXBlR3JhZGllbnQsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dFRhYmxlIiwgICAKKyAgICAgICAgICAgICAg
ICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCF0YWJsZVRyYW5zZmVyRmlsdGVyKSB7Cisg
ICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYg
Y2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JS
ZXNvdXJjZTpAIldLVGFibGVUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
Omtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5l
bHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICB0YWJsZVRyYW5zZmVyRmlsdGVyID0gW1trZXJu
ZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBp
bml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICpp
bnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOwor
ICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0U2FtcGxl
ciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dFRhYmxlXSwgaW5wdXRTZWxlY3Rv
ciwgCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W2lucHV0VGFibGUgZXh0ZW50
XS5zaXplLndpZHRoLTEuMF0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIgZGVmaW5pdGlv
bl0sIG5pbF07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5OnRhYmxlVHJhbnNmZXJGaWx0ZXIgYXJn
dW1lbnRzOmFyZ3Mgb3B0aW9uczpuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIu
bQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnku
YWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oIgor
CisKK0BpbXBsZW1lbnRhdGlvbiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5p
dGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0lkZW50aXR5
VHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAg
ICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBJZGVudGl0eSBUcmFu
c2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVn
b3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdl
LCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRl
Z29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICop
ZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICByZXR1cm4g
W3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICByZXR1
cm4gaW5wdXRJbWFnZTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9u
IDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICAqaW5wdXRJ
bWFnZTsKKyAgICBDSUltYWdlICAqaW5wdXRUYWJsZTsKKyAgICBDSVZlY3RvciAqaW5wdXRTZWxl
Y3RvcjsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tE
aXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCisrKyBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0ICJXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVsICpk
aXNjcmV0ZVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1wbGVtZW50YXRpb24gV0tEaXNjcmV0
ZVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVn
aXN0ZXJGaWx0ZXJOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAg
ICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAg
ICAgICAgQCJXZWJLaXQgRGlzY3JldGUgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNw
bGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6
a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMs
bmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAgICAgICAg
IG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5h
bWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQor
CistIChpZClpbml0Cit7CisgICAgaWYgKCFkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyKSB7CisgICAg
ICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xh
c3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNv
dXJjZTpAIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxl
Omtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5l
bHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyID0gW1tr
ZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBl
ciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVy
ICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2Vd
OworICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0U2Ft
cGxlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dFRhYmxlIGtleXNBbmRWYWx1
ZXM6a0NJU2FtcGxlckZpbHRlck1vZGUsIGtDSVNhbXBsZXJGaWx0ZXJOZWFyZXN0LCBuaWxdLCBp
bnB1dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRU
YWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxl
ciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6ZGlzY3JldGVUcmFu
c2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07Cit9CisKK0BlbmQKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rp
c2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xp
dmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2Vy
bmVsIHZlYzQgZGlzY3JldGVUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBzYW1wbGVyIHRhYmxlLCB2
ZWM0IHJnYmFTZWxlY3RvciwgZmxvYXQgbWF4SW5kZXgpCit7CisgICAgdmVjNCBDID0gc2FtcGxl
KGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICBmbG9hdCBrID0gZmxvb3IoZG90KHJn
YmFTZWxlY3RvciwgQykgKiBtYXhJbmRleCk7CisgICAgdmVjNCByZXMgPSBzYW1wbGUodGFibGUs
IHZlYzIoayArIDAuNSwgMC41KSk7CisgICAgcmV0dXJuIHJlczsKK30KSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJn
ZUZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2
QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbWVyZ2VD
b21wb25lbnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIgZnVuY0csIHNhbXBsZXIgZnVuY0IsIHNh
bXBsZXIgZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNhbXBsZShmdW5jUiwgc2FtcGxlckNvb3Jk
KGZ1bmNSKSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxlKGZ1bmNHLCBzYW1wbGVyQ29vcmQoZnVu
Y0cpKS5nOworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVuY0IsIHNhbXBsZXJDb29yZChmdW5jQikp
LmI7CisgICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwgc2FtcGxlckNvb3JkKGZ1bmNBKSkuYTsK
KyAgICByZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lv
biAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmls
dGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworCitAaW50ZXJmYWNlIFdL
R2FtbWFUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICAqaW5wdXRJbWFn
ZTsKKyAgICBOU051bWJlciAqaW5wdXRBbXBsaXR1ZGU7CisgICAgTlNOdW1iZXIgKmlucHV0RXhw
b25lbnQ7CisgICAgTlNOdW1iZXIgKmlucHV0T2Zmc2V0OworfQorCitAZW5kCkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0
ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2Ft
bWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnku
YWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLR2FtbWFUcmFuc2ZlckZpbHRlci5oIgorCitz
dGF0aWMgQ0lLZXJuZWwgKmdhbW1hVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRh
dGlvbiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtD
SUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0dhbW1hVHJhbnNmZXIiCisgICAgICAgICAg
ICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmli
dXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAg
ICAgICAgICAgICAgICBAIldlYktpdCBHYW1tYSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRl
ckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBp
eGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAg
ICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0
dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0QW1wbGl0dWRlIiwKKyAgICAgICAgICAg
ICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBr
Q0lBdHRyaWJ1dGVEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEV4cG9uZW50IiwKKyAgICAgICAg
ICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBd
LCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dE9mZnNldCIsCisgICAgICAg
ICAgICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZToo
TlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAgIGlmICghZ2FtbWFUcmFuc2ZlckZpbHRl
cikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNz
OltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBw
YXRoRm9yUmVzb3VyY2U6QCJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVs
Il07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50
c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5l
bCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgZ2FtbWFUcmFuc2ZlckZpbHRlciA9
IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07CisgICAgfQorICAgIHJldHVybiBb
c3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQoreworICAgIENJU2Ft
cGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dElt
YWdlXTsKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Z2FtbWFUcmFuc2ZlckZpbHRlciwgaW5wdXRT
YW1wbGVyLCBpbnB1dEFtcGxpdHVkZSwgaW5wdXRFeHBvbmVudCwgaW5wdXRPZmZzZXQsIEAiZGVm
aW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIgZGVmaW5pdGlvbl0sIG5pbF07Cit9CisKK0BlbmQKSW5k
ZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZl
YzQgZ2FtbWFUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBhbXBsaXR1ZGUsIGZsb2F0IGV4
cG9uZW50LCBmbG9hdCBvZmZzZXQpCit7CisgICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1w
bGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1cm4gYW1wbGl0dWRlICogcG93KEMsIHZlYzQoZXhw
b25lbnQpKSArIG9mZnNldDsKK30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlz
aW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5u
ej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgdGFibGVUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBz
YW1wbGVyIHRhYmxlLCB2ZWM0IHJnYmFTZWxlY3RvciwgZmxvYXQgbWF4SW5kZXgpCit7CisgICAg
dmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICBmbG9hdCBr
ID0gZG90KHJnYmFTZWxlY3RvciwgQykgKiBtYXhJbmRleDsKKyAgICB2ZWM0IHJlcyA9IHNhbXBs
ZSh0YWJsZSwgdmVjMihrKzAuNSwgMC41KSk7CisgICAgcmV0dXJuIHJlczsKK30KSW5kZXg6IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVy
RmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4K
KworCitAaW50ZXJmYWNlIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAg
Q0lJbWFnZSAgKmlucHV0SW1hZ2U7CisgICAgTlNOdW1iZXIgKmlucHV0U2xvcGU7CisgICAgTlNO
dW1iZXIgKmlucHV0SW50ZXJjZXB0OworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9x
dWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQkocmV2aXNpb24gMTI4MzYpCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsMTIgQEAKICNpbXBvcnQgIldLRGlzdGFudExpZ2h0RmlsdGVyLmgiCiAjaW1w
b3J0ICJXS05vcm1hbE1hcEZpbHRlci5oIgogI2ltcG9ydCAiV0tBcml0aG1ldGljRmlsdGVyLmgi
CisjaW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCisjaW1wb3J0ICJXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLVGFibGVUcmFuc2ZlckZpbHRlci5oIgorI2lt
cG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKIAogI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKQEAgLTcwLDYgKzc2LDI2IEBAIHN0YXRpYyBp
bmxpbmUgQ0lWZWN0b3IgKmNpVmVjdG9yKEZsb2F0UG8KICAgICByZXR1cm4gW0NJVmVjdG9yIHZl
Y3RvcldpdGhYOnBvaW50LngoKSBZOnBvaW50LnkoKV07CiB9CiAKKyNkZWZpbmUgQ0hBTk5FTF9S
RUQgICAwCisjZGVmaW5lIENIQU5ORUxfR1JFRU4gMQorI2RlZmluZSBDSEFOTkVMX0JMVUUgIDIK
KyNkZWZpbmUgQ0hBTk5FTF9BTFBIQSAzCisKK3N0YXRpYyBpbmxpbmUgQ0lWZWN0b3IgKmdldFZl
Y3RvckZvckNoYW5uZWwoaW50IGlkeCl7CisgICAgc3dpdGNoKGlkeCl7CisgICAgICAgIGNhc2Ug
Q0hBTk5FTF9SRUQ6CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEu
MCBZOjAuMCBaOjAuMCBXOjAuMF07CisgICAgICAgIGNhc2UgQ0hBTk5FTF9HUkVFTjoKKyAgICAg
ICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MS4wIFo6MC4wIFc6MC4w
XTsgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBDSEFOTkVMX0JMVUU6CisgICAgICAgICAgICBy
ZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjEuMCBXOjAuMF07CisgICAg
ICAgIGNhc2UgQ0hBTk5FTF9BTFBIQToKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVj
dG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MC4w
XTsKKyAgICB9Cit9CisKIEtDYW52YXNGaWx0ZXJRdWFydHo6OktDYW52YXNGaWx0ZXJRdWFydHoo
KSA6IG1fZmlsdGVyQ0lDb250ZXh0KDApLCBtX2ZpbHRlckNHTGF5ZXIoMCksIG1faW1hZ2VzQnlO
YW1lKDApCiB7CiAgICAgbV9pbWFnZXNCeU5hbWUgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwpAQCAtMzQ5LDYgKzM3NSwxMzEgQEAgQ0lGaWx0ZXIgKktDYW52YXNGRUNvbG9y
TWF0cml4UXVhcnR6OjpnZQogICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOwogfQogCitzdGF0
aWMgQ0lJbWFnZSAqZ2VuSW1hZ2VGcm9tVGFibGUoY29uc3QgVmVjdG9yPGZsb2F0PiYgdGFibGUp
Cit7CisgICAgaW50IGxlbmd0aD10YWJsZS5zaXplKCk7CisgICAgaW50IG5CeXRlcyA9IGxlbmd0
aCo0KnNpemVvZihmbG9hdCk7CisgICAgZmxvYXQgKnRhYmxlU3RvcmUgPSAoZmxvYXQgKiltYWxs
b2MobkJ5dGVzKTsKKyAgICBOU0RhdGEgKmJpdG1hcERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXNOb0NvcHk6dGFibGVTdG9yZSBsZW5ndGg6bkJ5dGVzXTsKKyAgICBmb3IgKFZlY3RvcjxmbG9h
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gdGFibGUuZW5kKCk7
IGl0KyspIHsKKyAgICAgICAgY29uc3QgZmxvYXQgdmFsdWUgPSAqaXQ7CisgICAgICAgICp0YWJs
ZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAgICAg
ICAqdGFibGVTdG9yZSsrID0gdmFsdWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsK
KyAgICB9CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdlV2l0aEJpdG1hcERhdGE6Yml0bWFwRGF0
YSBieXRlc1BlclJvdzpuQnl0ZXMgc2l6ZTpDR1NpemVNYWtlKGxlbmd0aCwgMSkgZm9ybWF0OmtD
SUZvcm1hdFJHQkFmIGNvbG9yU3BhY2U6bmlsXTsKK30KKworc3RhdGljIENJRmlsdGVyICpmaWx0
ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVu
YykKK3sKKyAgICBDSUZpbHRlciAqZmlsdGVyOworICAgIHN3aXRjaChmdW5jLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBDVF9JREVOVElUWToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6QCJXS1RhYmxlVHJhbnNmZXJGaWx0ZXIiXTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENUX0RJU0NSRVRFOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJ
RmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIl07CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5FQVI6CisgICAgICAgICAgICBmaWx0
ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIl07ICAgICAg
ICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9HQU1NQToKKyAgICAg
ICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLR2FtbWFUcmFuc2Zl
ciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBO
U0xvZyhAIldBUk5JTkc6IFVua25vd24gZnVuY3Rpb24gdHlwZSBmb3IgZmVDb21wb25lbnRUcmFu
c2ZlciIpOworICAgICAgICAgICAgLy9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJlIHN2ZyBmcm9t
IGZhaWxpbmcgYXMgYSByZXN1bHQKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0
ZXJXaXRoTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiBmaWx0ZXI7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhcmFtZXRlcnNG
b3JDb21wb25lbnRGdW5jKENJRmlsdGVyICpmaWx0ZXIsIGNvbnN0IEtDQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgZnVuYywgQ0lWZWN0b3IgKmNoYW5uZWxTZWxlY3RvcikKK3sKKyAgICBzd2l0
Y2goZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAgICBbZmls
dGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktleTpA
ImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVj
dG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENUX0RJU0NSRVRFOgorICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZW5JbWFn
ZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6QCJpbnB1dFRhYmxlIl07CisgICAg
ICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmNoYW5uZWxTZWxlY3RvciBmb3JLZXk6QCJpbnB1dFNl
bGVjdG9yIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5FQVI6Cisg
ICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVu
Yy5zbG9wZV0gZm9yS2V5OkAiaW5wdXRTbG9wZSJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuaW50ZXJjZXB0XSBmb3JLZXk6QCJp
bnB1dEludGVyY2VwdCJdOyAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENUX0dBTU1BOgorICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVt
YmVyV2l0aEZsb2F0OmZ1bmMuYW1wbGl0dWRlXSBmb3JLZXk6QCJpbnB1dEFtcGxpdHVkZSJdOwor
ICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1
bmMuZXhwb25lbnRdIGZvcktleTpAImlucHV0RXhwb25lbnQiXTsKKyAgICAgICAgICAgIFtmaWx0
ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLm9mZnNldF0gZm9yS2V5
OkAiaW5wdXRPZmZzZXQiXTsgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgLy9pZGVudGl0eSBoYXMgbm8gYXJncworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgQ0lGaWx0ZXIgKmdldEZpbHRlckZvckZ1bmMoY29uc3QgS0ND
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jLCBDSUltYWdlICppbnB1dEltYWdlLCBDSVZl
Y3RvciAqY2hhbm5lbFNlbGVjdG9yKSAKK3sJCisgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IFtmaWx0
ZXJGb3JDb21wb25lbnRGdW5jKGZ1bmMpIHJldGFpbl07CisgICAgW2ZpbHRlciBzZXREZWZhdWx0
c107CisgICAgCisgICAgc2V0UGFyYW1ldGVyc0ZvckNvbXBvbmVudEZ1bmMoZmlsdGVyLCBmdW5j
LCBjaGFubmVsU2VsZWN0b3IpOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JL
ZXk6QCJpbnB1dEltYWdlIl07CisgICAgcmV0dXJuIFtmaWx0ZXIgYXV0b3JlbGVhc2VdOworfQor
CitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldEZ1bmN0aW9u
RmlsdGVyKGludCBjaGFubmVsLCBDSUltYWdlICppbnB1dEltYWdlKSBjb25zdAoreworICAgIHN3
aXRjaChjaGFubmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBDSEFOTkVMX1JFRDoKKyAgICAgICAg
ICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhyZWRGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBn
ZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07
CisgICAgICAgIGNhc2UgQ0hBTk5FTF9HUkVFTjogCisgICAgICAgICAgICByZXR1cm4gW2dldEZp
bHRlckZvckZ1bmMoZ3JlZW5GdW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFu
bmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07CisgICAgICAgIGNhc2Ug
Q0hBTk5FTF9CTFVFOgorICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKGJsdWVG
dW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1
ZUZvcktleTpAIm91dHB1dEltYWdlIl07CisgICAgICAgIGNhc2UgQ0hBTk5FTF9BTFBIQToKKyAg
ICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhhbHBoYUZ1bmN0aW9uKCksIGlucHV0
SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0
SW1hZ2UiXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
fQorICAgIAorfQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6
OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKK3sK
KyAgICBbV0tDb21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107CisgICAgW1dLSWRlbnRpdHlUcmFu
c2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2ZlckZpbHRlciBjbGFzc107Cisg
ICAgW1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAg
IAorICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgS1dRX0JMT0NLX0VYQ0VQVElPTlMK
KyAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0NvbXBvbmVudE1lcmdl
Il07CisgICAgaWYgKCFmaWx0ZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgW2ZpbHRlciBz
ZXREZWZhdWx0c107CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9IHF1YXJ0ekZpbHRlci0+aW5w
dXRJbWFnZSh0aGlzKTsKKyAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQoaW5wdXRJbWFnZSk7ICAg
IAorICAgIAorICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2V0RnVuY3Rpb25GaWx0ZXIoQ0hBTk5FTF9S
RUQsIGlucHV0SW1hZ2UpIGZvcktleTpAImlucHV0RnVuY1IiXTsKKyAgICBbZmlsdGVyIHNldFZh
bHVlOmdldEZ1bmN0aW9uRmlsdGVyKENIQU5ORUxfR1JFRU4sIGlucHV0SW1hZ2UpIGZvcktleTpA
ImlucHV0RnVuY0ciXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOmdldEZ1bmN0aW9uRmlsdGVyKENI
QU5ORUxfQkxVRSwgaW5wdXRJbWFnZSkgZm9yS2V5OkAiaW5wdXRGdW5jQiJdOworICAgIFtmaWx0
ZXIgc2V0VmFsdWU6Z2V0RnVuY3Rpb25GaWx0ZXIoQ0hBTk5FTF9BTFBIQSwgaW5wdXRJbWFnZSkg
Zm9yS2V5OkAiaW5wdXRGdW5jQSJdOworICAgIAorICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJO
OworICAgIHJldHVybiBuaWw7Cit9CisKIENJRmlsdGVyICpLQ2FudmFzRkVDb21wb3NpdGVRdWFy
dHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QK
IHsKICAgICBDSUZpbHRlciAqZmlsdGVyID0gbmlsOwpAQCAtMzk0LDIxICs1NDUsNiBAQCBDSUZp
bHRlciAqS0NhbnZhc0ZFQ29tcG9zaXRlUXVhcnR6OjpnZXRDCiAgICAgRkVfUVVBUlRaX09VVFBV
VF9SRVRVUk47CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ0lWZWN0b3IgKmdldFZlY3RvckZvckNoYW5u
ZWwoaW50IGlkeCl7Ci0gICAgc3dpdGNoKGlkeCl7Ci0gICAgY2FzZSAwOgotICAgICAgICByZXR1
cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAuMF07Ci0gICAgY2Fz
ZSAxOgotICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAu
MCBXOjAuMF07ICAgICAgICAgICAgCi0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gW0NJVmVj
dG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjEuMCBXOjAuMF07Ci0gICAgY2FzZSAzOgotICAg
ICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjEuMF07
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAg
WTowLjAgWjowLjAgVzowLjBdOwotICAgIH0KLX0KLQogQ0lGaWx0ZXIgKktDYW52YXNGRURpc3Bs
YWNlbWVudE1hcFF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6
RmlsdGVyKSBjb25zdAogewogICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CkluZGV4OiBrY2Fu
dmFzL0tDYW52YXNGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL0tDYW52YXNGaWx0
ZXJzLmNwcAkocmV2aXNpb24gMTI4MzYpCisrKyBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNywxNCBAQCBzdGF0aWMgUVRleHRTdHJlYW0gJm9w
ZXJhdG9yPDwoUVRleHRTdHJlCiBzdGF0aWMgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRT
dHJlYW0gJnRzLCBjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gJmZ1bmMpCiB7CiAg
ICAgdHMgPDwgIlt0eXBlPSIgPDwgZnVuYy50eXBlIDw8ICJdIiAKLSAgICAgICAgPDwgIiBbdGFi
bGUgdmFsdWVzPSIgPDwgZnVuYy50YWJsZVZhbHVlcyA8PCAiXSIKKyAgICAgICAgPDwgIiBbdGFi
bGUgdmFsdWVzPSI7CisgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXRyPWZ1bmMu
dGFibGVWYWx1ZXMuYmVnaW4oKTsKKyAgICB0cyA8PCAqaXRyKys7CisgICAgZm9yKDsgaXRyIT1m
dW5jLnRhYmxlVmFsdWVzLmVuZCgpOyBpdHIrKykKKyAgICB7CisgICAgICAgIHRzIDw8ICIgIiA8
PCAqaXRyKys7CisgICAgfQorICAgIHRzIDw8ICJdIgogICAgICAgICA8PCAiIFtzbG9wZT0iIDw8
IGZ1bmMuc2xvcGUgPDwgIl0iCiAgICAgICAgIDw8ICIgW2ludGVyY2VwdD0iIDw8IGZ1bmMuaW50
ZXJjZXB0IDw8ICJdIgogICAgICAgICA8PCAiIFthbXBsaXR1ZGU9IiA8PCBmdW5jLmFtcGxpdHVk
ZSA8PCAiXSIKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
Y2FudmFzL0tDYW52YXNGaWx0ZXJzLmgJKHJldmlzaW9uIDEyODM2KQorKysga2NhbnZhcy9LQ2Fu
dmFzRmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOCArMjE0LDkgQEAgdHlwZWRlZiBl
bnVtIHsKIAogc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbgogeworICAgIEtDQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbigpIDogdHlwZShDVF9JREVOVElUWSkge30KICAgICBLQ0Nv
bXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlOwotICAgIFEzVmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZh
bHVlczsKKyAgICBWZWN0b3I8ZmxvYXQ+IHRhYmxlVmFsdWVzOwogICAgIGZsb2F0IHNsb3BlOwog
ICAgIGZsb2F0IGludGVyY2VwdDsKICAgICBmbG9hdCBhbXBsaXR1ZGU7CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
c3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24g
MTI4MzYpCisrKyBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNiBAQCBLQ2FudmFzRkVDb21wb25lbnRUcmFu
c2ZlciAqU1ZHRkVDb21wb25lCiAgICAgICAgIGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmZlRnVuY0FUYWcpKQogICAgICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldEFscGhhRnVu
Y3Rpb24oc3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQUVsZW1lbnRJbXBsICo+KG4pLT50cmFuc2ZlckZ1
bmN0aW9uKCkpOwogICAgIH0KLQogICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdDsKIH0KIApJbmRl
eDoga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyODM2KQorKysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsx
MDUsNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50CiAgICAgICAg
IGVsc2UgaWYodmFsdWUgPT0gImdhbW1hIikKICAgICAgICAgICAgIHR5cGUoKS0+c2V0QmFzZVZh
bChTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BKTsKICAgICB9Ci0gICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKQorICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKQogICAgICAgICB0YWJsZVZh
bHVlcygpLT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlLnFzdHJpbmcoKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzbG9wZUF0dHIpCiAgICAgICAgIHNsb3BlKCktPnNl
dEJhc2VWYWwodmFsdWUucXN0cmluZygpLnRvRG91YmxlKCkpOwpAQCAtMTI1LDExICsxMjUsMTcg
QEAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0NvbXBvbmVudAogewogICAgIEtDQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbiBmdW5jOwogICAgIGZ1bmMudHlwZSA9IChLQ0NvbXBvbmVu
dFRyYW5zZmVyVHlwZSkodHlwZSgpLT5iYXNlVmFsKCkgLSAxKTsKKyAgICBpZiAoZnVuYy50eXBl
IDwgMCB8fCBmdW5jLnR5cGUgPiA0KQorICAgICAgICBmdW5jLnR5cGUgPSBDVF9JREVOVElUWTsK
ICAgICBmdW5jLnNsb3BlID0gc2xvcGUoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMuaW50ZXJjZXB0
ID0gaW50ZXJjZXB0KCktPmJhc2VWYWwoKTsKICAgICBmdW5jLmFtcGxpdHVkZSA9IGFtcGxpdHVk
ZSgpLT5iYXNlVmFsKCk7CiAgICAgZnVuYy5leHBvbmVudCA9IGV4cG9uZW50KCktPmJhc2VWYWwo
KTsKICAgICBmdW5jLm9mZnNldCA9IG9mZnNldCgpLT5iYXNlVmFsKCk7CisgICAgU1ZHTnVtYmVy
TGlzdEltcGwgKm51bWJlcnMgPSB0YWJsZVZhbHVlcygpLT5iYXNlVmFsKCk7CisgICAgdW5zaWdu
ZWQgaW50IG5yID0gbnVtYmVycy0+bnVtYmVyT2ZJdGVtcygpOworICAgIGZvcih1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBucjsgaSsrKQorICAgICAgICBmdW5jLnRhYmxlVmFsdWVzLmFwcGVuZChu
dW1iZXJzLT5nZXRJdGVtKGkpLT52YWx1ZSgpKTsKICAgICByZXR1cm4gZnVuYzsKIH0KIApJbmRl
eDoga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dEltcGwuaAkocmV2aXNpb24gMTI4MzYpCisrKyBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIpOwogICAgICAgICAKICAgICAgICAgS0NDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKLQorICAgICAg
ICAKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uSW1wbD4gbV90eXBlOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZE51
bWJlckxpc3RJbXBsPiBtX3RhYmxlVmFsdWVzOwo=
</data>
<flag name="review"
          id="1629"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6534</attachid>
            <date>2006-02-16 01:01:14 -0800</date>
            <delta_ts>2006-02-25 14:25:23 -0800</delta_ts>
            <desc>patch with more fixes</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>67665</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODM2KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNiAr
NDQyLDIzIEBACiAJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2MzhBOTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmls
dGVyLmNpa2VybmVsICovOyB9OwogCQlBNzYzOEE5NzA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRGIC8qIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTc2MzhBOTgwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTYwOTk1OTY1RDAwMDdFMTRGIC8q
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwICovOyB9OworCQlBN0I5N0I3NzA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3
Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdC
N0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5
NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThF
QjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdF
MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2Ft
bWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyog
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lk
ZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyog
V0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlB
ODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0Iw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0
NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpAQCAtMTMxNCw2ICsxMzMxLDIzIEBACiAJCUE3
NjM4QTkxMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYzOEE5NjA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnRJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
Qjk3QjY3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkEwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MTA5
NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdC
OTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8q
IFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTBFMzkzMDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Ry
ZWVEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLQ2FudmFzVHJlZURlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4MTIyQzdFMDhENTY0QjAwMDg0NEZBMyAvKiBHZXRT
VkdEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
ZXRTVkdEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtMzEzMiw2ICszMTY2LDIzIEBACiAJCQkJQTc2MzhBOEEwOTk1
OEVBNTAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLm0gKi8sCiAJCQkJQTc2MzhB
OTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsICov
LAogCQkJCUE4QzMyOTIwMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lr
ZXJuZWwgKi8sCisJCQkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVy
Z2VGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjcwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2ODA5NzlDM0ExMDAwRThFQjEg
LyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovLAorCQkJCUE3Qjk3QjY5MDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdC
NkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovLAorCQkJ
CUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubSAq
LywKKwkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsICovLAorCQkJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1t
YVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I3MTA5NzlDM0Ex
MDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5
N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oICovLAorCQkJ
CUE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi8s
CisJCQkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5z
ZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tICovLAogCQkJCUE4QzMyOTIxMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIuaCAqLywKIAkJCQlBOEMzMjkyMjA5M0JCNzMyMDAwQjlDQUMgLyogV0tB
cml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjMwOTNCQjczMjAwMEI5Q0FDIC8qIFdL
RGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsICovLApAQCAtNDIzOSw2ICs0MjkwLDEyIEBA
CiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxMYWJlbEVsZW1lbnRJbXBsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlFNDA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdl
bkVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0
NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I3ODA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0UwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2FtbWFUcmFu
c2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCODAwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdC
ODMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMzAwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyNDQwOTc0ODE5MDAwQzQzMTk2IC8q
IE1hY0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1ODYsNiArNDY0MywxMSBAQAogCQkJCUE4
OEFEM0ExMDk1MjQ4NkQwMDFERDE5NiAvKiBXS1BvaW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E0MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1NwZWN1bGFy
TGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E3MDk1
MjQ4NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJQTdCOTdCNzcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjdBMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAor
CQkJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lr
ZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjgyMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKKwkJCQlBN0I5
N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGlu
IFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5QzA5N0NBQUM4MDA5NEM5RTQgLyogY3NzcHJvcGVy
dGllcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OUYwOTdDQUFDODAwOTRDOUU0IC8q
IGNzc3ZhbHVlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNDOENGQ0QwOTg2Q0QyNDAwMTQw
QkYyIC8qIENvbG9yRGF0YS5ncGVyZiBpbiBSZXNvdXJjZXMgKi8sCkBAIC01MzYxLDYgKzU0MjMs
MTIgQEAKIAkJCQlBODEzNjlFMzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTExhYmVsRWxlbWVudElt
cGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RTUwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxLZXlnZW5FbGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNkQzOTA5NzNB
OEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3
Qjc5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gaW4gU291cmNl
cyAqLywKKwkJCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3RjA5NzlDM0ExMDAwRThFQjEgLyog
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4MTA5NzlD
M0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywK
KwkJCQlBN0I5N0I4NDA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyMkUwOTc0ODE2MzAwQzQz
MTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QkYwMjQxMDk3NDgxOTAwMEM0
MzE5NiAvKiBLV1FLSFRNTFZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0
ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBrY2FudmFz
L2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
Y2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQkocmV2aXNpb24g
MTI4MzYpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIEtDYW52YXNGaWx0ZXJFZmZlY3Qg
KktSZW5kZXJpbmdEZXZpY2VRdWEKICAgICAqLwogICAgIGNhc2UgRkVfQkxFTkQ6IHJldHVybiBu
ZXcgS0NhbnZhc0ZFQmxlbmRRdWFydHooKTsKICAgICBjYXNlIEZFX0NPTE9SX01BVFJJWDogcmV0
dXJuIG5ldyBLQ2FudmFzRkVDb2xvck1hdHJpeFF1YXJ0eigpOwotLy8gIGNhc2UgRkVfQ09NUE9O
RU5UX1RSQU5TRkVSOiAKKyAgICBjYXNlIEZFX0NPTVBPTkVOVF9UUkFOU0ZFUjogcmV0dXJuIG5l
dyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eigpOwogICAgIGNhc2UgRkVfQ09NUE9T
SVRFOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbXBvc2l0ZVF1YXJ0eigpOwogLy8gIGNhc2UgRkVf
Q09OVk9MVkVfTUFUUklYOiAKICAgICBjYXNlIEZFX0RJRkZVU0VfTElHSFRJTkc6IHJldHVybiBu
ZXcgS0NhbnZhc0ZFRGlmZnVzZUxpZ2h0aW5nUXVhcnR6KCk7CkluZGV4OiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgJKHJldmlzaW9uIDEyODM2KQorKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsMTAgKzcxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENJRmlsdGVyICpnZXRDSUZp
bHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0OwogfTsKIAotLy9j
bGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFzRkVD
b21wb25lbnRUcmFuc2ZlciB7Ci0vL3B1YmxpYzoKLS8vICAgIHZpcnR1YWwgQ0lGaWx0ZXIgKmdl
dENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3Q7Ci0vL307
CitjbGFzcyBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlclF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFz
RkVDb21wb25lbnRUcmFuc2ZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBDSUZpbHRlciAqZ2V0
Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgQ0lGaWx0ZXIgKmdldEZ1bmN0aW9uRmlsdGVyKEtDQ2hhbm5lbFNlbGVjdG9yVHlw
ZSBjaGFubmVsLCBDSUltYWdlICppbnB1dEltYWdlKSBjb25zdDsKK307CiAKIGNsYXNzIEtDYW52
YXNGRUNvbnZvbHZlTWF0cml4UXVhcnR6IDogcHVibGljIEtDYW52YXNGRUNvbnZvbHZlTWF0cml4
IHsKIHB1YmxpYzoKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQg
PG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVh
cnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0NvbXBvbmVudE1lcmdlRmlsdGVy
IDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEZ1bmNSOworICAgIENJSW1hZ2UgICpp
bnB1dEZ1bmNHOworICAgIENJSW1hZ2UgICppbnB1dEZ1bmNCOworICAgIENJSW1hZ2UgICppbnB1
dEZ1bmNBOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlz
aW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMu
bno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IGxpbmVhclRyYW5zZmVyKHNhbXBsZXIgaW1hZ2Us
IGZsb2F0IHNsb3BlLCBmbG9hdCBpbnRlcmNlcHQpCit7CisgICAgdmVjNCBDID0gc2FtcGxlKGlt
YWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1cm4gc2xvcGUgKiBDICsgaW50ZXJj
ZXB0OworfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFu
c2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2po
MTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0xpbmVh
clRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0
ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyCisrICh2
b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tM
aW5lYXJUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAg
ICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IExpbmVhciBU
cmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNh
dGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbElt
YWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJD
YXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRl
SWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxh
ciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlu
cHV0U2xvcGUiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRl
SWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxh
ciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlu
cHV0SW50ZXJzZWN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChD
SUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4g
W1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7Cisg
ICAgaWYgKCFsaW5lYXJUcmFuc2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxl
ID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3Ry
aW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAg
IE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07Cisg
ICAgICAgIGxpbmVhclRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0g
cmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFn
ZSAqKW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1w
bGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOworICAgIHJldHVybiBbc2VsZiBhcHBs
eTpsaW5lYXJUcmFuc2ZlckZpbHRlciwgaW5wdXRTYW1wbGVyLCBpbnB1dFNsb3BlLCBpbnB1dElu
dGVyY2VwdCwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsK
K30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25l
bnRNZXJnZUZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8
b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqY29tcG9uZW50TWVyZ2VG
aWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyCisr
ICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAi
V0tDb21wb25lbnRNZXJnZSIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYK
KyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IENvbXBv
bmVudCBNZXJnZSIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtD
SUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGls
bEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmls
dGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tz
ZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBp
ZiAoIWNvbXBvbmVudE1lcmdlRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBb
TlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcg
Kmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNB
cnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAg
ICAgY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRh
aW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICop
b3V0cHV0SW1hZ2UKK3sKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Y29tcG9uZW50TWVyZ2VGaWx0
ZXIsIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jUl0sIAorICAgICAgICBb
Q0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0RnVuY0ddLCBbQ0lTYW1wbGVyIHNhbXBs
ZXJXaXRoSW1hZ2U6IGlucHV0RnVuY0JdLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlu
cHV0RnVuY0FdLCBAImRlZmluaXRpb24iLCBbaW5wdXRGdW5jUiBkZWZpbml0aW9uXSwgbmlsXTsK
K30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2po
MTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpD
b3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLVGFibGVUcmFuc2ZlckZpbHRlciA6IENJ
RmlsdGVyIHsKKyAgICBDSUltYWdlICppbnB1dEltYWdlOworICAgIENJSW1hZ2UgKmlucHV0VGFi
bGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2Uu
aD4KKworQGludGVyZmFjZSBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7Cisg
ICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCShyZXZp
c2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2ltcG9ydCAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtl
cm5lbCAqdGFibGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLVGFi
bGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJl
Z2lzdGVyRmlsdGVyTmFtZTpAIldLVGFibGVUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAg
ICAgIEAiV2ViS2l0IFRhYmxlIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5h
bWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNh
dGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0s
IGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlR3JhZGllbnQsIGtDSUF0dHJp
YnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dFRhYmxlIiwg
ICAKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRl
cldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCF0YWJsZVRy
YW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUg
PSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLVGFibGVUcmFuc2ZlckZpbHRlciIgb2ZUeXBl
OkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxz
ID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICB0YWJsZVRyYW5z
ZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9Cisg
ICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7
CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1h
Z2U6IGlucHV0SW1hZ2VdOworICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOmlucHV0U2FtcGxlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dFRh
YmxlXSwgaW5wdXRTZWxlY3RvciwgCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
W2lucHV0VGFibGUgZXh0ZW50XS5zaXplLndpZHRoLTEuMF0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1
dFNhbXBsZXIgZGVmaW5pdGlvbl0sIG5pbF07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5OnRhYmxl
VHJhbnNmZXJGaWx0ZXIgYXJndW1lbnRzOmFyZ3Mgb3B0aW9uczpuaWxdOworfQorCitAZW5kCklu
ZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50
aXR5VHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBz
dHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5oIgorCisKK0BpbXBsZW1lbnRhdGlvbiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRl
ck5hbWU6QCJXS0lkZW50aXR5VHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1
Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldl
YktpdCBJZGVudGl0eSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29y
eVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJ
Q2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lB
dHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9
CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWlu
aXQKK3sKKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0
SW1hZ2UKK3sKKyAgICByZXR1cm4gaW5wdXRJbWFnZTsKK30KKworQGVuZApJbmRleDoga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5o
PgorCitAaW50ZXJmYWNlIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAg
ICBDSUltYWdlICAqaW5wdXRJbWFnZTsKKyAgICBDSUltYWdlICAqaW5wdXRUYWJsZTsKKyAgICBD
SVZlY3RvciAqaW5wdXRTZWxlY3RvcjsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0J
KHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFj
Lm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCIKKwor
c3RhdGljIENJS2VybmVsICpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1wbGVt
ZW50YXRpb24gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sK
KyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tEaXNjcmV0ZVRyYW5zZmVyIgor
ICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBj
bGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQgRGlzY3JldGUgVHJhbnNmZXIiLCBrQ0lB
dHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdv
cnlOb25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAg
ICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhO
YW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFkaXNjcmV0ZVRyYW5z
ZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBb
YnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlciIgb2ZUeXBl
OkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxz
ID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBkaXNjcmV0ZVRy
YW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9
CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdl
Cit7CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRo
SW1hZ2U6IGlucHV0SW1hZ2VdOworICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmlucHV0U2FtcGxlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1
dFRhYmxlIGtleXNBbmRWYWx1ZXM6a0NJU2FtcGxlckZpbHRlck1vZGUsIGtDSVNhbXBsZXJGaWx0
ZXJOZWFyZXN0LCBuaWxdLCBpbnB1dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZpbml0
aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYg
YXBwbHk6ZGlzY3JldGVUcmFuc2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07
Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9x
dWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9u
IDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5u
ej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgZGlzY3JldGVUcmFuc2ZlcihzYW1wbGVyIGltYWdl
LCBzYW1wbGVyIHRhYmxlLCB2ZWM0IHJnYmFTZWxlY3RvciwgZmxvYXQgbWF4SW5kZXgpCit7Cisg
ICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICBmbG9h
dCBrID0gZmxvb3IoZG90KHJnYmFTZWxlY3RvciwgQykgKiBtYXhJbmRleCk7CisgICAgdmVjNCBy
ZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoayArIDAuNSwgMC41KSk7CisgICAgcmV0dXJuIHJlczsK
K30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
T2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
a2VybmVsIHZlYzQgbWVyZ2VDb21wb25lbnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIgZnVuY0cs
IHNhbXBsZXIgZnVuY0IsIHNhbXBsZXIgZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNhbXBsZShm
dW5jUiwgc2FtcGxlckNvb3JkKGZ1bmNSKSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxlKGZ1bmNH
LCBzYW1wbGVyQ29vcmQoZnVuY0cpKS5nOworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVuY0IsIHNh
bXBsZXJDb29yZChmdW5jQikpLmI7CisgICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwgc2FtcGxl
ckNvb3JkKGZ1bmNBKSkuYTsKKyAgICByZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30KSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2Zl
ckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4K
KworCitAaW50ZXJmYWNlIFdLR2FtbWFUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBD
SUltYWdlICAqaW5wdXRJbWFnZTsKKyAgICBOU051bWJlciAqaW5wdXRBbXBsaXR1ZGU7CisgICAg
TlNOdW1iZXIgKmlucHV0RXhwb25lbnQ7CisgICAgTlNOdW1iZXIgKmlucHV0T2Zmc2V0OworfQor
CitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0dhbW1hVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBz
dHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLR2FtbWFUcmFu
c2ZlckZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmdhbW1hVHJhbnNmZXJGaWx0ZXIgPSBu
aWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5p
dGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0dhbW1hVHJh
bnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAg
ICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBHYW1tYSBUcmFuc2ZlciIs
IGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5Vmlk
ZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lD
YXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVz
LAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHks
CisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0
cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0QW1wbGl0
dWRlIiwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50
aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtD
SUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEV4
cG9uZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZUlk
ZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIs
IGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1
dE9mZnNldCIsCisgICAgICAgICAgICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIg
KilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAgIGlmICgh
Z2FtbWFUcmFuc2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVu
ZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJu
ZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIi
IG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAq
a2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgZ2Ft
bWFUcmFuc2ZlckZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07Cisg
ICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1hZ2UgKilvdXRwdXRJ
bWFnZQoreworICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVy
V2l0aEltYWdlOiBpbnB1dEltYWdlXTsKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6Z2FtbWFUcmFu
c2ZlckZpbHRlciwgaW5wdXRTYW1wbGVyLCBpbnB1dEFtcGxpdHVkZSwgaW5wdXRFeHBvbmVudCwg
aW5wdXRPZmZzZXQsIEAiZGVmaW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIgZGVmaW5pdGlvbl0sIG5p
bF07Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2Ft
bWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9x
dWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDAp
CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKwora2VybmVsIHZlYzQgZ2FtbWFUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBh
bXBsaXR1ZGUsIGZsb2F0IGV4cG9uZW50LCBmbG9hdCBvZmZzZXQpCit7CisgICAgdmVjNCBDID0g
c2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1cm4gYW1wbGl0dWRl
ICogcG93KEMsIHZlYzQoZXhwb25lbnQpKSArIG9mZnNldDsKK30KSW5kZXg6IGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRl
bnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgdGFibGVUcmFuc2Zl
cihzYW1wbGVyIGltYWdlLCBzYW1wbGVyIHRhYmxlLCB2ZWM0IHJnYmFTZWxlY3RvciwgZmxvYXQg
bWF4SW5kZXgpCit7CisgICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1h
Z2UpKTsKKyAgICBmbG9hdCBrID0gZG90KHJnYmFTZWxlY3RvciwgQykgKiBtYXhJbmRleDsKKyAg
ICB2ZWM0IHJlcyA9IHNhbXBsZSh0YWJsZSwgdmVjMihrKzAuNSwgMC41KSk7CisgICAgcmV0dXJu
IHJlczsKK30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJh
bnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9q
aDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6
Q29yZS9Db3JlSW1hZ2UuaD4KKworCitAaW50ZXJmYWNlIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIg
OiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7CisgICAgTlNOdW1iZXIgKmlu
cHV0U2xvcGU7CisgICAgTlNOdW1iZXIgKmlucHV0SW50ZXJjZXB0OworfQorCitAZW5kCkluZGV4
OiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQkocmV2aXNp
b24gMTI4MzYpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTIgQEAKICNpbXBvcnQgIldLRGlzdGFudExp
Z2h0RmlsdGVyLmgiCiAjaW1wb3J0ICJXS05vcm1hbE1hcEZpbHRlci5oIgogI2ltcG9ydCAiV0tB
cml0aG1ldGljRmlsdGVyLmgiCisjaW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCisj
aW1wb3J0ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLVGFibGVUcmFu
c2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCisjaW1w
b3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIuaCIKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAKQEAgLTcwLDYg
Kzc2LDI2IEBAIHN0YXRpYyBpbmxpbmUgQ0lWZWN0b3IgKmNpVmVjdG9yKEZsb2F0UG8KICAgICBy
ZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOnBvaW50LngoKSBZOnBvaW50LnkoKV07CiB9CiAK
KyNkZWZpbmUgQ0hBTk5FTF9SRUQgICAwCisjZGVmaW5lIENIQU5ORUxfR1JFRU4gMQorI2RlZmlu
ZSBDSEFOTkVMX0JMVUUgIDIKKyNkZWZpbmUgQ0hBTk5FTF9BTFBIQSAzCisKK3N0YXRpYyBpbmxp
bmUgQ0lWZWN0b3IgKmdldFZlY3RvckZvckNoYW5uZWwoS0NDaGFubmVsU2VsZWN0b3JUeXBlIGNo
YW5uZWwpeworICAgIHN3aXRjaChjaGFubmVsKXsKKyAgICAgICAgY2FzZSBDU19SRUQ6CisgICAg
ICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAu
MF07CisgICAgICAgIGNhc2UgQ1NfR1JFRU46CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9y
IHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF07ICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgQ1NfQkxVRToKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6
MC4wIFk6MC4wIFo6MS4wIFc6MC4wXTsKKyAgICAgICAgY2FzZSBDU19BTFBIQToKKyAgICAgICAg
ICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0
aFg6MC4wIFk6MC4wIFo6MC4wIFc6MC4wXTsKKyAgICB9Cit9CisKIEtDYW52YXNGaWx0ZXJRdWFy
dHo6OktDYW52YXNGaWx0ZXJRdWFydHooKSA6IG1fZmlsdGVyQ0lDb250ZXh0KDApLCBtX2ZpbHRl
ckNHTGF5ZXIoMCksIG1faW1hZ2VzQnlOYW1lKDApCiB7CiAgICAgbV9pbWFnZXNCeU5hbWUgPSBb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwpAQCAtMzQ5LDYgKzM3NSwxMzEgQEAg
Q0lGaWx0ZXIgKktDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6OjpnZQogICAgIEZFX1FVQVJUWl9P
VVRQVVRfUkVUVVJOOwogfQogCitzdGF0aWMgQ0lJbWFnZSAqZ2VuSW1hZ2VGcm9tVGFibGUoY29u
c3QgVmVjdG9yPGZsb2F0PiYgdGFibGUpCit7CisgICAgaW50IGxlbmd0aCA9IHRhYmxlLnNpemUo
KTsKKyAgICBpbnQgbkJ5dGVzID0gbGVuZ3RoKjQqc2l6ZW9mKGZsb2F0KTsKKyAgICBmbG9hdCAq
dGFibGVTdG9yZSA9IChmbG9hdCAqKW1hbGxvYyhuQnl0ZXMpOworICAgIE5TRGF0YSAqYml0bWFw
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTp0YWJsZVN0b3JlIGxlbmd0aDpuQnl0
ZXNdOworICAgIGZvciAoVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5i
ZWdpbigpOyBpdCAhPSB0YWJsZS5lbmQoKTsgaXQrKykgeworICAgICAgICBjb25zdCBmbG9hdCB2
YWx1ZSA9ICppdDsKKyAgICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAgICAgICAqdGFi
bGVTdG9yZSsrID0gdmFsdWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAg
ICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gW0NJSW1hZ2UgaW1h
Z2VXaXRoQml0bWFwRGF0YTpiaXRtYXBEYXRhIGJ5dGVzUGVyUm93Om5CeXRlcyBzaXplOkNHU2l6
ZU1ha2UobGVuZ3RoLCAxKSBmb3JtYXQ6a0NJRm9ybWF0UkdCQWYgY29sb3JTcGFjZTpuaWxdOwor
fQorCitzdGF0aWMgQ0lGaWx0ZXIgKmZpbHRlckZvckNvbXBvbmVudEZ1bmMoY29uc3QgS0NDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jKQoreworICAgIENJRmlsdGVyICpmaWx0ZXI7Cisg
ICAgc3dpdGNoKGZ1bmMudHlwZSkgeworICAgICAgICBjYXNlIENUX0lERU5USVRZOgorICAgICAg
ICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5z
ZmVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToKKyAgICAg
ICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLVGFibGVUcmFuc2Zl
ckZpbHRlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6
CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0Rpc2Ny
ZXRlVHJhbnNmZXJGaWx0ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENU
X0xJTkVBUjoKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpA
IldLTGluZWFyVHJhbnNmZXIiXTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENUX0dBTU1BOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRl
cldpdGhOYW1lOkAiV0tHYW1tYVRyYW5zZmVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIE5TTG9nKEAiV0FSTklORzogVW5rbm93biBmdW5jdGlv
biB0eXBlIGZvciBmZUNvbXBvbmVudFRyYW5zZmVyIik7CisgICAgICAgICAgICAvL2FuZCB0byBw
cmV2ZW50IHRoZSBlbnRpcmUgc3ZnIGZyb20gZmFpbGluZyBhcyBhIHJlc3VsdAorICAgICAgICAg
ICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVy
Il07CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKwor
c3RhdGljIHZvaWQgc2V0UGFyYW1ldGVyc0ZvckNvbXBvbmVudEZ1bmMoQ0lGaWx0ZXIgKmZpbHRl
ciwgY29uc3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBmdW5jLCBDSVZlY3RvciAqY2hh
bm5lbFNlbGVjdG9yKQoreworICAgIHN3aXRjaChmdW5jLnR5cGUpIHsKKyAgICAgICAgY2FzZSBD
VF9UQUJMRToKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2VuSW1hZ2VGcm9tVGFibGUo
ZnVuYy50YWJsZVZhbHVlcykgZm9yS2V5OkAiaW5wdXRUYWJsZSJdOworICAgICAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5wdXRTZWxlY3RvciJdOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6CisgICAgICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZv
cktleTpAImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5l
bFNlbGVjdG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENUX0xJTkVBUjoKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLnNsb3BlXSBmb3JLZXk6QCJpbnB1dFNsb3BlIl07
CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
ZnVuYy5pbnRlcmNlcHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0Il07ICAgICAgICAgIAorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfR0FNTUE6CisgICAgICAgICAgICBbZmls
dGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5hbXBsaXR1ZGVdIGZv
cktleTpAImlucHV0QW1wbGl0dWRlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0gZm9yS2V5OkAiaW5wdXRFeHBv
bmVudCJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OmZ1bmMub2Zmc2V0XSBmb3JLZXk6QCJpbnB1dE9mZnNldCJdOyAgIAorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvL2lkZW50aXR5IGhhcyBu
byBhcmdzCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBDSUZpbHRlciAq
Z2V0RmlsdGVyRm9yRnVuYyhjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMs
IENJSW1hZ2UgKmlucHV0SW1hZ2UsIENJVmVjdG9yICpjaGFubmVsU2VsZWN0b3IpIAorewkKKyAg
ICBDSUZpbHRlciAqZmlsdGVyID0gZmlsdGVyRm9yQ29tcG9uZW50RnVuYyhmdW5jKTsKKyAgICBb
ZmlsdGVyIHNldERlZmF1bHRzXTsKKyAgICAKKyAgICBzZXRQYXJhbWV0ZXJzRm9yQ29tcG9uZW50
RnVuYyhmaWx0ZXIsIGZ1bmMsIGNoYW5uZWxTZWxlY3Rvcik7CisgICAgW2ZpbHRlciBzZXRWYWx1
ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICByZXR1cm4gZmlsdGVyOwor
fQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldEZ1bmN0
aW9uRmlsdGVyKEtDQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsLCBDSUltYWdlICppbnB1dElt
YWdlKSBjb25zdAoreworICAgIHN3aXRjaChjaGFubmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBD
U19SRUQ6CisgICAgICAgICAgICByZXR1cm4gW2dldEZpbHRlckZvckZ1bmMocmVkRnVuY3Rpb24o
KSwgaW5wdXRJbWFnZSwgZ2V0VmVjdG9yRm9yQ2hhbm5lbChjaGFubmVsKSkgdmFsdWVGb3JLZXk6
QCJvdXRwdXRJbWFnZSJdOworICAgICAgICBjYXNlIENTX0dSRUVOOiAKKyAgICAgICAgICAgIHJl
dHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhncmVlbkZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZl
Y3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAg
ICAgICAgY2FzZSBDU19CTFVFOgorICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5j
KGJsdWVGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwp
KSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07CisgICAgICAgIGNhc2UgQ1NfQUxQSEE6Cisg
ICAgICAgICAgICByZXR1cm4gW2dldEZpbHRlckZvckZ1bmMoYWxwaGFGdW5jdGlvbigpLCBpbnB1
dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1
dEltYWdlIl07CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAg
IH0KKyAgICAKK30KKworQ0lGaWx0ZXIgKktDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6
OjpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0Cit7
CisgICAgW1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIgY2xhc3NdOworICAgIFtXS0lkZW50aXR5VHJh
bnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS1RhYmxlVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOwor
ICAgIFtXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyIGNsYXNzXTsKKyAgICBbV0tHYW1tYVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKKyAg
ICAKKyAgICBDSUZpbHRlciAqZmlsdGVyID0gbmlsOworICAgIEtXUV9CTE9DS19FWENFUFRJT05T
CisgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tDb21wb25lbnRNZXJn
ZSJdOworICAgIGlmICghZmlsdGVyKQorICAgICAgICByZXR1cm4gbmlsOworICAgIFtmaWx0ZXIg
c2V0RGVmYXVsdHNdOworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBxdWFydHpGaWx0ZXItPmlu
cHV0SW1hZ2UodGhpcyk7CisgICAgRkVfUVVBUlRaX0NIRUNLX0lOUFVUKGlucHV0SW1hZ2UpOyAg
ICAKKyAgICAKKyAgICBbZmlsdGVyIHNldFZhbHVlOmdldEZ1bmN0aW9uRmlsdGVyKENTX1JFRCwg
aW5wdXRJbWFnZSkgZm9yS2V5OkAiaW5wdXRGdW5jUiJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6
Z2V0RnVuY3Rpb25GaWx0ZXIoQ1NfR1JFRU4sIGlucHV0SW1hZ2UpIGZvcktleTpAImlucHV0RnVu
Y0ciXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOmdldEZ1bmN0aW9uRmlsdGVyKENTX0JMVUUsIGlu
cHV0SW1hZ2UpIGZvcktleTpAImlucHV0RnVuY0IiXTsKKyAgICBbZmlsdGVyIHNldFZhbHVlOmdl
dEZ1bmN0aW9uRmlsdGVyKENTX0FMUEhBLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNB
Il07CisgICAgCisgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CisgICAgcmV0dXJuIG5pbDsK
K30KKwogQ0lGaWx0ZXIgKktDYW52YXNGRUNvbXBvc2l0ZVF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0Nh
bnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdAogewogICAgIENJRmlsdGVyICpm
aWx0ZXIgPSBuaWw7CkBAIC0zOTQsMjEgKzU0NSw2IEBAIENJRmlsdGVyICpLQ2FudmFzRkVDb21w
b3NpdGVRdWFydHo6OmdldEMKICAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKIH0KIAotc3Rh
dGljIGlubGluZSBDSVZlY3RvciAqZ2V0VmVjdG9yRm9yQ2hhbm5lbChpbnQgaWR4KXsKLSAgICBz
d2l0Y2goaWR4KXsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9y
V2l0aFg6MS4wIFk6MC4wIFo6MC4wIFc6MC4wXTsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVy
biBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MS4wIFo6MC4wIFc6MC4wXTsgICAgICAgICAg
ICAKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4w
IFk6MC4wIFo6MS4wIFc6MC4wXTsKLSAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0
b3IgdmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjAuMF07
Ci0gICAgfQotfQotCiBDSUZpbHRlciAqS0NhbnZhc0ZFRGlzcGxhY2VtZW50TWFwUXVhcnR6Ojpn
ZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0CiB7CiAg
ICAgQ0lGaWx0ZXIgKmZpbHRlciA9IG5pbDsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCShyZXZpc2lvbiAx
MjgzNikKKysrIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzcsNyArMjM3LDEzIEBAIHN0YXRpYyBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmUK
IHN0YXRpYyBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmVhbSAmdHMsIGNvbnN0IEtD
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiAmZnVuYykKIHsKICAgICB0cyA8PCAiW3R5cGU9IiA8
PCBmdW5jLnR5cGUgPDwgIl0iIAotICAgICAgICA8PCAiIFt0YWJsZSB2YWx1ZXM9IiA8PCBmdW5j
LnRhYmxlVmFsdWVzIDw8ICJdIgorICAgICAgICA8PCAiIFt0YWJsZSB2YWx1ZXM9IjsKKyAgICBW
ZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVyYXRvciBpdHI9ZnVuYy50YWJsZVZhbHVlcy5iZWdpbigp
OworICAgIHRzIDw8ICppdHIrKzsKKyAgICBmb3IgKDsgaXRyIT1mdW5jLnRhYmxlVmFsdWVzLmVu
ZCgpOyBpdHIrKykgeworICAgICAgICB0cyA8PCAiICIgPDwgKml0cisrOworICAgIH0KKyAgICB0
cyA8PCAiXSIKICAgICAgICAgPDwgIiBbc2xvcGU9IiA8PCBmdW5jLnNsb3BlIDw8ICJdIgogICAg
ICAgICA8PCAiIFtpbnRlcmNlcHQ9IiA8PCBmdW5jLmludGVyY2VwdCA8PCAiXSIKICAgICAgICAg
PDwgIiBbYW1wbGl0dWRlPSIgPDwgZnVuYy5hbXBsaXR1ZGUgPDwgIl0iCkluZGV4OiBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5o
CShyZXZpc2lvbiAxMjgzNikKKysrIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjE0LDggKzIxNCw5IEBAIHR5cGVkZWYgZW51bSB7CiAKIHN0cnVjdCBLQ0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24KIHsKKyAgICBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24o
KSA6IHR5cGUoQ1RfSURFTlRJVFkpIHt9CiAgICAgS0NDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlw
ZTsKLSAgICBRM1ZhbHVlTGlzdDxmbG9hdD4gdGFibGVWYWx1ZXM7CisgICAgVmVjdG9yPGZsb2F0
PiB0YWJsZVZhbHVlczsKICAgICBmbG9hdCBzbG9wZTsKICAgICBmbG9hdCBpbnRlcmNlcHQ7CiAg
ICAgZmxvYXQgYW1wbGl0dWRlOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyODM2KQorKysga3N2ZzIvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
LDcgKzkyLDYgQEAgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgKlNWR0ZFQ29tcG9uZQogICAg
ICAgICBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZUZ1bmNBVGFnKSkKICAgICAg
ICAgICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRBbHBoYUZ1bmN0aW9uKHN0YXRpY19jYXN0PFNWR0ZF
RnVuY0FFbGVtZW50SW1wbCAqPihuKS0+dHJhbnNmZXJGdW5jdGlvbigpKTsKICAgICB9Ci0KICAg
ICByZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CiB9CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuY3BwCShyZXZpc2lvbiAx
MjgzNikKKysrIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJnYW1t
YSIpCiAgICAgICAgICAgICB0eXBlKCktPnNldEJhc2VWYWwoU1ZHX0ZFQ09NUE9ORU5UVFJBTlNG
RVJfVFlQRV9HQU1NQSk7CiAgICAgfQotICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6dmFsdWVzQXR0cikKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnRhYmxlVmFsdWVzQXR0cikKICAgICAgICAgdGFibGVWYWx1ZXMoKS0+YmFzZVZhbCgpLT5wYXJz
ZSh2YWx1ZS5xc3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6c2xvcGVBdHRyKQogICAgICAgICBzbG9wZSgpLT5zZXRCYXNlVmFsKHZhbHVlLnFzdHJpbmco
KS50b0RvdWJsZSgpKTsKQEAgLTEyNSwxMSArMTI1LDE3IEBAIEtDQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBTVkdDb21wb25lbnQKIHsKICAgICBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
ZnVuYzsKICAgICBmdW5jLnR5cGUgPSAoS0NDb21wb25lbnRUcmFuc2ZlclR5cGUpKHR5cGUoKS0+
YmFzZVZhbCgpIC0gMSk7CisgICAgaWYgKGZ1bmMudHlwZSA8IDAgfHwgZnVuYy50eXBlID4gNCkK
KyAgICAgICAgZnVuYy50eXBlID0gQ1RfSURFTlRJVFk7CiAgICAgZnVuYy5zbG9wZSA9IHNsb3Bl
KCktPmJhc2VWYWwoKTsKICAgICBmdW5jLmludGVyY2VwdCA9IGludGVyY2VwdCgpLT5iYXNlVmFs
KCk7CiAgICAgZnVuYy5hbXBsaXR1ZGUgPSBhbXBsaXR1ZGUoKS0+YmFzZVZhbCgpOwogICAgIGZ1
bmMuZXhwb25lbnQgPSBleHBvbmVudCgpLT5iYXNlVmFsKCk7CiAgICAgZnVuYy5vZmZzZXQgPSBv
ZmZzZXQoKS0+YmFzZVZhbCgpOworICAgIFNWR051bWJlckxpc3RJbXBsICpudW1iZXJzID0gdGFi
bGVWYWx1ZXMoKS0+YmFzZVZhbCgpOworICAgIHVuc2lnbmVkIGludCBuciA9IG51bWJlcnMtPm51
bWJlck9mSXRlbXMoKTsKKyAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnI7IGkrKykK
KyAgICAgICAgZnVuYy50YWJsZVZhbHVlcy5hcHBlbmQobnVtYmVycy0+Z2V0SXRlbShpKS0+dmFs
dWUoKSk7CiAgICAgcmV0dXJuIGZ1bmM7CiB9CiAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmgJKHJldmlzaW9uIDEyODM2
KQorKysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGVJbXBs
ICphdHRyKTsKICAgICAgICAgCiAgICAgICAgIEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0
cmFuc2ZlckZ1bmN0aW9uKCkgY29uc3Q7Ci0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkltcGw+IG1fdHlwZTsKICAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0SW1wbD4gbV90YWJsZVZh
bHVlczsK
</data>
<flag name="review"
          id="1632"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6536</attachid>
            <date>2006-02-16 02:29:12 -0800</date>
            <delta_ts>2006-02-25 14:10:57 -0800</delta_ts>
            <desc>Table transfer function testcase</desc>
            <filename>comptransfer-test1.svg</filename>
            <type>image/svg+xml</type>
            <size>2626</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iVGFibGVCbGFuayIgZmls
dGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0
eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+
CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IlRhYmxlRnVsbCIgZmlsdGVyVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
PgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBlPSJ0YWJsZSIg
dGFibGVWYWx1ZXM9IjEiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQk8L2ZpbHRl
cj4KCQkJCTxmaWx0ZXIgaWQ9IlRhYmxlT3JkIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdC
b3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+CgkJCQkJPGZlQ29t
cG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0i
MCAwIDEgMSIvPgoJCQkJCTwvZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQk8
L2RlZnM+CgkJCTxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lk
dGg9IjY0OCIgaGVpZ2h0PSI0MTgiLz4KCQkJPGcgZm9udC1zaXplPSIzMCIgZm9udC1mYW1pbHk9
IlZlcmRhbmEiPgoJCQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIx
IiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgoJCQkJPHJlY3QgeD0iMjAiIHk9IjEwIiB3aWR0
aD0iNTgwIiBoZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9InVybCgj
SWRlbnRpdHkpIi8+CgkJCQk8dGV4dCB4PSIyMCIgeT0iODAiPnR5cGU6IGlkZW50aXR5PC90ZXh0
PgoJCQkJPHJlY3QgeD0iMjAiIHk9IjExMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0i
dXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI1RhYmxlQmxhbmspIi8+CgkJCQk8dGV4dCB4
PSIyMCIgeT0iMTgwIj50eXBlOiB0YWJsZSBbMF0gLS0gUmVzdWx0IHNob3VsZCBiZSBibGFjazwv
dGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZp
bGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZUZ1bGwpIi8+CgkJCQk8dGV4
dCB4PSIyMCIgeT0iMjgwIj50eXBlOiB0YWJsZSBbMV0gLS0gUmVzdWx0IHNob3VsZCBiZSBncmVl
bjwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIzMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAi
IGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZU9yZCkiLz4KCQkJCTx0
ZXh0IHg9IjIwIiB5PSIzODAiPnR5cGU6IHRhYmxlIFswIDAgMSAxXSAtLSBSZXN1bHQgc2hvdWxk
IGJlIGNvbXByZXNzZWQgZ3JhZGllbnQ8L3RleHQ+CgkJCTwvZz4KCQk8L3N2Zz4KCTwvZz4KPC9z
dmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6537</attachid>
            <date>2006-02-16 02:30:18 -0800</date>
            <delta_ts>2006-02-25 14:11:58 -0800</delta_ts>
            <desc>testcase for discrete transfer function</desc>
            <filename>comptransfer-test2.svg</filename>
            <type>image/svg+xml</type>
            <size>2687</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVCbGFuayIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5j
RyB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJh
bnNmZXI+CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlRnVsbCIgZmlsdGVy
VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBl
PSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+
CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlT3JkIiBmaWx0ZXJVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSI+CgkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1bmNHIHR5cGU9ImRpc2Ny
ZXRlIiB0YWJsZVZhbHVlcz0iMC4wIDAuMjUgMC41IDAuNzUgMSAxIi8+CgkJCQkJPC9mZUNvbXBv
bmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCTwvZGVmcz4KCQkJPHJlY3QgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIxIiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgoJ
CQk8ZyBmb250LXNpemU9IjMwIiBmb250LWZhbWlseT0iVmVyZGFuYSI+CgkJCQk8cmVjdCBmaWxs
PSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0iNDE4
Ii8+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9
InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNJZGVudGl0eSkiLz4KCQkJCTx0ZXh0IHg9
IjEwIiB5PSI4MCI+dHlwZTogaWRlbnRpdHk8L3RleHQ+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTEw
IiB3aWR0aD0iNTgwIiBoZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9
InVybCgjRGlzY3JldGVCbGFuaykiLz4KCQkJCTx0ZXh0IHg9IjEwIiB5PSIxODAiPnR5cGU6IGRp
c2NyZXRlIFswXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGJsYWNrPC90ZXh0PgoJCQkJPHJlY3QgeD0i
MjAiIHk9IjIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50
KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlRnVsbCkiLz4KCQkJCTx0ZXh0IHg9IjEwIiB5PSIyODAi
PnR5cGU6IGRpc2NyZXRlIFsxXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGdyZWVuPC90ZXh0PgoJCQkJ
PHJlY3QgeD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNN
eUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlT3JkKSIvPgoJCQkJPHRleHQgeD0iMTAi
IHk9IjM4MCI+dHlwZTogZGlzY3JldGUgWzAuMCAwLjI1IDAuNSAwLjc1IDFdIC0tIFJlc3VsdCBz
aG91bGQgYmUgcXVhbnRpemVkIGdyYWRpZW50PC90ZXh0PgoJCQk8L2c+CgkJPC9zdmc+Cgk8L2c+
Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6538</attachid>
            <date>2006-02-16 02:45:12 -0800</date>
            <delta_ts>2006-02-25 14:12:45 -0800</delta_ts>
            <desc>Testcase for linear transfer function</desc>
            <filename>comptransfer-test3.svg</filename>
            <type>image/svg+xml</type>
            <size>2733</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDYwMCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVCbGFuayIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5j
RyB0eXBlPSJsaW5lYXIiIHNsb3BlPSIxIiBpbnRlcmNlcHQ9IjAuMCIvPgoJCQkJCTwvZmVDb21w
b25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVGdWxs
IiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSI+CgkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1
bmNHIHR5cGU9ImxpbmVhciIgc2xvcGU9Ii0xIiBpbnRlcmNlcHQ9IjEuMCIvPgoJCQkJCTwvZmVD
b21wb25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVP
cmQiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0i
MTAwJSIgaGVpZ2h0PSIxMDAlIj4KCQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCQkJPGZl
RnVuY0cgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41IiBpbnRlcmNlcHQ9IjAuMjUiLz4KCQkJCQk8
L2ZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQk8L2ZpbHRlcj4KCQkJPC9kZWZzPgoJCQk8cmVjdCBm
aWxsPSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0i
NDQ4Ii8+CgkJCTxnIGZvbnQtc2l6ZT0iMzAiIGZvbnQtZmFtaWx5PSJWZXJkYW5hIj4KCQkJCTxy
ZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjY0OCIgaGVp
Z2h0PSI0NDgiLz4KCQkJCTxyZWN0IHg9IjIwIiB5PSIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0
MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0lkZW50aXR5KSIvPgoJCQkJ
PHRleHQgeD0iMTAiIHk9Ijc1Ij50eXBlOiBpZGVudGl0eTwvdGV4dD4KCQkJCTxyZWN0IHg9IjIw
IiB5PSI5MCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIg
ZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlQmxhbmspIi8+CgkJCQk8dGV4dCB4PSIxMCIgeT0iMTYwIj50
eXBlOiBsaW5lYXIgc2xvcGU9MSBpbnRlcmNlcHQ9MCAtLSBSZXN1bHQgc2hvdWxkIGJlIGlkZW50
aXR5PC90ZXh0PgoJCQkJPHJlY3QgeD0iMjAiIHk9IjIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0
MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlRnVsbCkiLz4K
CQkJCTx0ZXh0IHg9IjEwIiB5PSIyODAiPnR5cGU6IGxpbmVhciBzbG9wZT0xIGludGVyY2VwdD0w
IC0tIFNob3VsZCBpbnZlcnQgdGhlIGdyYWRpZW50PC90ZXh0PgoJCQkJPHJlY3QgeD0iMjAiIHk9
IjMzMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmls
dGVyPSJ1cmwoI0Rpc2NyZXRlT3JkKSIvPgoJCQkJPHRleHQgeD0iMTAiIHk9IjQwMCI+dHlwZTog
bGluZWFyIHNsb3BlPTAuNSBpbnRlcmNlcHQ9MC4yNSAtLSBSZXN1bHQgc2hvdWxkIGJlIGxlc3Mg
ZXh0cmVtZSBncmFkaWVudDwvdGV4dD4KCQkJPC9nPgoJCTwvc3ZnPgoJPC9nPgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6539</attachid>
            <date>2006-02-16 03:02:55 -0800</date>
            <delta_ts>2006-02-25 14:13:21 -0800</delta_ts>
            <desc>testcase for gamma transfer function</desc>
            <filename>comptransfer-test4.svg</filename>
            <type>image/svg+xml</type>
            <size>2791</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDYwMCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iR2FtbWFCbGFuayIgZmls
dGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0
eXBlPSJnYW1tYSIgYW1wbGl0dWRlPSIxIiBleHBvbmVudD0iMSIgb2Zmc2V0PSIwIi8+CgkJCQkJ
PC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCQk8ZmlsdGVyIGlkPSJHYW1t
YUZ1bGwiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KCQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCQkJ
PGZlRnVuY0cgdHlwZT0iZ2FtbWEiIGFtcGxpdHVkZT0iMSIgZXhwb25lbnQ9IjAuNSIgb2Zmc2V0
PSIwIi8+CgkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCQk8Zmls
dGVyIGlkPSJHYW1tYU9yZCIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIg
eT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5z
ZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBlPSJnYW1tYSIgYW1wbGl0dWRlPSIxIiBleHBvbmVudD0i
MiIgb2Zmc2V0PSIwIi8+CgkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+
CgkJCTwvZGVmcz4KCQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIx
IiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQ0OCIvPgoJCQk8ZyBmb250LXNpemU9IjMwIiBmb250LWZh
bWlseT0iVmVyZGFuYSI+CgkJCQk8cmVjdCBmaWxsPSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEi
IHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0iNDQ4Ii8+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTAi
IHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0i
dXJsKCNJZGVudGl0eSkiLz4KCQkJCTx0ZXh0IHg9IjEwIiB5PSI3NSI+dHlwZTogaWRlbnRpdHk8
L3RleHQ+CgkJCQk8cmVjdCB4PSIyMCIgeT0iOTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZp
bGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNHYW1tYUJsYW5rKSIvPgoJCQkJPHRl
eHQgeD0iMTAiIHk9IjE2MCI+dHlwZTogZ2FtbWEgYW1wbGl0dWRlPTEgZXhwb25lbnQ9MSBvZmZz
ZXQ9MCAtLSBSZXN1bHQgc2hvdWxkIGJlIGlkZW50aXR5PC90ZXh0PgoJCQkJPHJlY3QgeD0iMjAi
IHk9IjIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIg
ZmlsdGVyPSJ1cmwoI0dhbW1hRnVsbCkiLz4KCQkJCTx0ZXh0IHg9IjEwIiB5PSIyODAiPnR5cGU6
IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50PTAuNSBvZmZzZXQ9MCAtLSBSZXN1bHQgc2hvdWxk
IGJlIGRlbGF5ZWQgZmFsbG9mZiBpbiBncmFkaWVudDwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5
PSIzMzAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZp
bHRlcj0idXJsKCNHYW1tYU9yZCkiLz4KCQkJCTx0ZXh0IHg9IjEwIiB5PSI0MDAiPnR5cGU6IGdh
bW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50PTIgb2Zmc2V0PTAgLS0gUmVzdWx0IHNob3VsZCBjb21w
cmVzcyB0aGUgZ3JhZGllbnQ8L3RleHQ+CgkJCTwvZz4KCQk8L3N2Zz4KCTwvZz4KPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6736</attachid>
            <date>2006-02-25 14:10:57 -0800</date>
            <delta_ts>2006-04-25 06:18:58 -0700</delta_ts>
            <desc>Table transfer testcase</desc>
            <filename>comptransfer-test1-1.svg</filename>
            <type>image/svg+xml</type>
            <size>2626</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iVGFibGVCbGFuayIgZmls
dGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0
eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+
CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IlRhYmxlRnVsbCIgZmlsdGVyVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
PgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBlPSJ0YWJsZSIg
dGFibGVWYWx1ZXM9IjEiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQk8L2ZpbHRl
cj4KCQkJCTxmaWx0ZXIgaWQ9IlRhYmxlT3JkIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdC
b3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+CgkJCQkJPGZlQ29t
cG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0i
MCAwIDEgMSIvPgoJCQkJCTwvZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQk8
L2RlZnM+CgkJCTxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lk
dGg9IjY0OCIgaGVpZ2h0PSI0MTgiLz4KCQkJPGcgZm9udC1zaXplPSIxNSIgZm9udC1mYW1pbHk9
IlZlcmRhbmEiPgoJCQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIx
IiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgoJCQkJPHJlY3QgeD0iMjAiIHk9IjEwIiB3aWR0
aD0iNTgwIiBoZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9InVybCgj
SWRlbnRpdHkpIi8+CgkJCQk8dGV4dCB4PSIyMCIgeT0iNzAiPnR5cGU6IGlkZW50aXR5PC90ZXh0
PgoJCQkJPHJlY3QgeD0iMjAiIHk9IjExMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0i
dXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI1RhYmxlQmxhbmspIi8+CgkJCQk8dGV4dCB4
PSIyMCIgeT0iMTcwIj50eXBlOiB0YWJsZSBbMF0gLS0gUmVzdWx0IHNob3VsZCBiZSBibGFjazwv
dGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZp
bGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZUZ1bGwpIi8+CgkJCQk8dGV4
dCB4PSIyMCIgeT0iMjcwIj50eXBlOiB0YWJsZSBbMV0gLS0gUmVzdWx0IHNob3VsZCBiZSBncmVl
bjwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIzMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAi
IGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZU9yZCkiLz4KCQkJCTx0
ZXh0IHg9IjIwIiB5PSIzNzAiPnR5cGU6IHRhYmxlIFswIDAgMSAxXSAtLSBSZXN1bHQgc2hvdWxk
IGJlIGNvbXByZXNzZWQgZ3JhZGllbnQ8L3RleHQ+CgkJCTwvZz4KCQk8L3N2Zz4KCTwvZz4KPC9z
dmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6737</attachid>
            <date>2006-02-25 14:11:58 -0800</date>
            <delta_ts>2006-04-25 06:18:58 -0700</delta_ts>
            <desc>Discrete transfer testcase</desc>
            <filename>comptransfer-test2-1.svg</filename>
            <type>image/svg+xml</type>
            <size>2687</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVCbGFuayIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5j
RyB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJh
bnNmZXI+CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlRnVsbCIgZmlsdGVy
VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBl
PSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEiLz4KCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+
CgkJCQk8L2ZpbHRlcj4KCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlT3JkIiBmaWx0ZXJVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSI+CgkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1bmNHIHR5cGU9ImRpc2Ny
ZXRlIiB0YWJsZVZhbHVlcz0iMC4wIDAuMjUgMC41IDAuNzUgMSAxIi8+CgkJCQkJPC9mZUNvbXBv
bmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCTwvZGVmcz4KCQkJPHJlY3QgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIxIiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgoJ
CQk8ZyBmb250LXNpemU9IjE1IiBmb250LWZhbWlseT0iVmVyZGFuYSI+CgkJCQk8cmVjdCBmaWxs
PSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0iNDE4
Ii8+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9
InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNJZGVudGl0eSkiLz4KCQkJCTx0ZXh0IHg9
IjIwIiB5PSI3MCI+dHlwZTogaWRlbnRpdHk8L3RleHQ+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTEw
IiB3aWR0aD0iNTgwIiBoZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9
InVybCgjRGlzY3JldGVCbGFuaykiLz4KCQkJCTx0ZXh0IHg9IjIwIiB5PSIxNzAiPnR5cGU6IGRp
c2NyZXRlIFswXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGJsYWNrPC90ZXh0PgoJCQkJPHJlY3QgeD0i
MjAiIHk9IjIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50
KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlRnVsbCkiLz4KCQkJCTx0ZXh0IHg9IjIwIiB5PSIyNzAi
PnR5cGU6IGRpc2NyZXRlIFsxXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGdyZWVuPC90ZXh0PgoJCQkJ
PHJlY3QgeD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNN
eUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlT3JkKSIvPgoJCQkJPHRleHQgeD0iMjAi
IHk9IjM3MCI+dHlwZTogZGlzY3JldGUgWzAuMCAwLjI1IDAuNSAwLjc1IDFdIC0tIFJlc3VsdCBz
aG91bGQgYmUgcXVhbnRpemVkIGdyYWRpZW50PC90ZXh0PgoJCQk8L2c+CgkJPC9zdmc+Cgk8L2c+
Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6738</attachid>
            <date>2006-02-25 14:12:45 -0800</date>
            <delta_ts>2006-04-25 06:18:58 -0700</delta_ts>
            <desc>linear transfer testcase</desc>
            <filename>comptransfer-test3-1.svg</filename>
            <type>image/svg+xml</type>
            <size>2734</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVCbGFuayIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5j
RyB0eXBlPSJsaW5lYXIiIHNsb3BlPSIxIiBpbnRlcmNlcHQ9IjAuMCIvPgoJCQkJCTwvZmVDb21w
b25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVGdWxs
IiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSI+CgkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQkJCTxmZUZ1
bmNHIHR5cGU9ImxpbmVhciIgc2xvcGU9Ii0xIiBpbnRlcmNlcHQ9IjEuMCIvPgoJCQkJCTwvZmVD
b21wb25lbnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVP
cmQiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0i
MTAwJSIgaGVpZ2h0PSIxMDAlIj4KCQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCQkJPGZl
RnVuY0cgdHlwZT0ibGluZWFyIiBzbG9wZT0iMC41IiBpbnRlcmNlcHQ9IjAuMjUiLz4KCQkJCQk8
L2ZlQ29tcG9uZW50VHJhbnNmZXI+CgkJCQk8L2ZpbHRlcj4KCQkJPC9kZWZzPgoJCQk8cmVjdCBm
aWxsPSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0i
NDE4Ii8+CgkJCTxnIGZvbnQtc2l6ZT0iMTUiIGZvbnQtZmFtaWx5PSJWZXJkYW5hIj4KCQkJCTxy
ZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjY0OCIgaGVp
Z2h0PSI0MTgiLz4KCQkJCTxyZWN0IHg9IjIwIiB5PSIxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0
MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0lkZW50aXR5KSIvPgoJCQkJ
PHRleHQgeD0iMjAiIHk9IjcwIj50eXBlOiBpZGVudGl0eTwvdGV4dD4KCQkJCTxyZWN0IHg9IjIw
IiB5PSIxMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCki
IGZpbHRlcj0idXJsKCNEaXNjcmV0ZUJsYW5rKSIvPgoJCQkJPHRleHQgeD0iMjAiIHk9IjE3MCI+
dHlwZTogbGluZWFyIHNsb3BlPTEgaW50ZXJjZXB0PTAgLS0gUmVzdWx0IHNob3VsZCBiZSBpZGVu
dGl0eTwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0i
NDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNEaXNjcmV0ZUZ1bGwpIi8+
CgkJCQk8dGV4dCB4PSIyMCIgeT0iMjcwIj50eXBlOiBsaW5lYXIgc2xvcGU9MSBpbnRlcmNlcHQ9
MCAtLSBTaG91bGQgaW52ZXJ0IHRoZSBncmFkaWVudDwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5
PSIzMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZp
bHRlcj0idXJsKCNEaXNjcmV0ZU9yZCkiLz4KCQkJCTx0ZXh0IHg9IjIwIiB5PSIzNzAiPnR5cGU6
IGxpbmVhciBzbG9wZT0wLjUgaW50ZXJjZXB0PTAuMjUgLS0gUmVzdWx0IHNob3VsZCBiZSBsZXNz
IGV4dHJlbWUgZ3JhZGllbnQ8L3RleHQ+CgkJCTwvZz4KCQk8L3N2Zz4KCTwvZz4KPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6739</attachid>
            <date>2006-02-25 14:13:21 -0800</date>
            <delta_ts>2006-04-25 06:18:58 -0700</delta_ts>
            <desc>gamma transfer testcase</desc>
            <filename>comptransfer-test4-1.svg</filename>
            <type>image/svg+xml</type>
            <size>2856</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAg
MCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+Cgk8dGl0bGUgaWQ9
InRlc3QtdGl0bGUiPmZpbHRlcnMtY29tcHRyYW4tMDEtYjwvdGl0bGU+Cgk8ZGVzYyBpZD0idGVz
dC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwvZGVzYz4KCTxnIGlkPSJ0ZXN0LWJv
ZHktY29udGVudCI+CgkJPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9
IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDY1MCA0MjAi
PgoJCQk8ZGVmcz4KCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRV
bml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KCQkJ
CQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz4KCQkJCQk8c3RvcCBvZmZz
ZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4KCQkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCQk8
ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRy
YW5zZmVyPgoJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0eSIvPgoJCQkJCTwvZmVDb21wb25l
bnRUcmFuc2Zlcj4KCQkJCTwvZmlsdGVyPgoJCQkJPGZpbHRlciBpZD0iR2FtbWFCbGFuayIgZmls
dGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBo
ZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJCQk8ZmVGdW5jRyB0
eXBlPSJnYW1tYSIgYW1wbGl0dWRlPSIxIiBleHBvbmVudD0iMSIgb2Zmc2V0PSIwIi8+CgkJCQkJ
PC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCQk8ZmlsdGVyIGlkPSJHYW1t
YUZ1bGwiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0
aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KCQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KCQkJCQkJ
PGZlRnVuY0cgdHlwZT0iZ2FtbWEiIGFtcGxpdHVkZT0iMSIgZXhwb25lbnQ9IjAuNSIgb2Zmc2V0
PSIwIi8+CgkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+CgkJCQk8Zmls
dGVyIGlkPSJHYW1tYU9yZCIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIg
eT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgoJCQkJCTxmZUNvbXBvbmVudFRyYW5z
ZmVyPgoJCQkJCQk8ZmVGdW5jRyB0eXBlPSJnYW1tYSIgYW1wbGl0dWRlPSIxIiBleHBvbmVudD0i
MiIgb2Zmc2V0PSIwIi8+CgkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgoJCQkJPC9maWx0ZXI+
CgkJCTwvZGVmcz4KCQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIx
IiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgoJCQk8ZyBmb250LXNpemU9IjE1IiBmb250LWZh
bWlseT0iVmVyZGFuYSI+CgkJCQk8cmVjdCBmaWxsPSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEi
IHk9IjEiIHdpZHRoPSI2NDgiIGhlaWdodD0iNDE4Ii8+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTAi
IHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0i
dXJsKCNJZGVudGl0eSkiLz4KCQkJCTx0ZXh0IHg9IjIwIiB5PSI3MCI+dHlwZTogaWRlbnRpdHk8
L3RleHQ+CgkJCQk8cmVjdCB4PSIyMCIgeT0iMTEwIiB3aWR0aD0iNTgwIiBoZWlnaHQ9IjQwIiBm
aWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9InVybCgjR2FtbWFCbGFuaykiLz4KCQkJCTx0
ZXh0IHg9IjIwIiB5PSIxNzAiPnR5cGU6IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50PTEgb2Zm
c2V0PTAgLS0gUmVzdWx0IHNob3VsZCBiZSBpZGVudGl0eTwvdGV4dD4KCQkJCTxyZWN0IHg9IjIw
IiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCki
IGZpbHRlcj0idXJsKCNHYW1tYUZ1bGwpIi8+CgkJCQk8dGV4dCB4PSIyMCIgeT0iMjcwIj50eXBl
OiBnYW1tYSBhbXBsaXR1ZGU9MSBleHBvbmVudD0wLjUgb2Zmc2V0PTAgLS0gUmVzdWx0IHNob3Vs
ZCBiZTwvdGV4dD4KCQkJCTx0ZXh0IHg9IjIwIiB5PSIyOTAiPmRlbGF5ZWQgZmFsbG9mZiBpbiBn
cmFkaWVudDwvdGV4dD4KCQkJCTxyZWN0IHg9IjIwIiB5PSIzMTAiIHdpZHRoPSI1ODAiIGhlaWdo
dD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNHYW1tYU9yZCkiLz4K
CQkJCTx0ZXh0IHg9IjIwIiB5PSIzNzAiPnR5cGU6IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50
PTIgb2Zmc2V0PTAgLS0gUmVzdWx0IHNob3VsZCBjb21wcmVzczwvdGV4dD4KCQkJCTx0ZXh0IHg9
IjIwIiB5PSIzOTAiPnRoZSBncmFkaWVudDwvdGV4dD4KCQkJPC9nPgoJCTwvc3ZnPgoJPC9nPgo8
L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6740</attachid>
            <date>2006-02-25 14:25:23 -0800</date>
            <delta_ts>2006-03-04 03:46:17 -0800</delta_ts>
            <desc>fixed formatting errors</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>67561</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyOTg4KQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNiAr
NDM4LDIzIEBACiAJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2MzhBOTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmls
dGVyLmNpa2VybmVsICovOyB9OwogCQlBNzYzOEE5NzA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRGIC8qIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTc2MzhBOTgwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTYwOTk1OTY1RDAwMDdFMTRGIC8q
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwICovOyB9OworCQlBN0I5N0I3NzA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3
Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdC
N0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5
NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThF
QjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdF
MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2Ft
bWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyog
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lk
ZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyog
V0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlB
ODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0Iw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0
NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpAQCAtMTMzMyw2ICsxMzUwLDIzIEBACiAJCUE3
NjM4QTkxMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYzOEE5NjA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnRJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
Qjk3QjY3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkEwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MTA5
NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdC
OTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8q
IFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTBFMzkzMDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Ry
ZWVEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLQ2FudmFzVHJlZURlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4MTIyQzdFMDhENTY0QjAwMDg0NEZBMyAvKiBHZXRT
VkdEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
ZXRTVkdEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtMzE0NCw2ICszMTc4LDIzIEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4QzMyOTIwMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjcwOTc5
QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2
ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovLAorCQkJCUE3
Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJu
ZWwgKi8sCisJCQkJQTdCOTdCNkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2Zl
ckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE3Qjk3QjZEMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2RTA5NzlDM0Ex
MDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNkYwOTc5
QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3
QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJ
CQlBN0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbCAqLywKKwkJCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2Zl
ckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRy
YW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFi
bGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThF
QjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzYwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovLAogCQkJCUE4QzMyOTIxMDkzQkI3
MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLywKIAkJCQlBOEMzMjkyMjA5M0JC
NzMyMDAwQjlDQUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjMwOTNC
QjczMjAwMEI5Q0FDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsICovLApAQCAt
NDIwOCw2ICs0MjU5LDEyIEBACiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxM
YWJlbEVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlFNDA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEz
NkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0I5N0I3ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVU
cmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0UwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdC
ODAwOTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdCOTdCODMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjJGMDk3NDgx
NjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMzAwOTc0ODE2
MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyNDQw
OTc0ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1NjksNiAr
NDYyNiwxMSBAQAogCQkJCUE4OEFEM0ExMDk1MjQ4NkQwMDFERDE5NiAvKiBXS1BvaW50TGlnaHRG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E0MDk1MjQ4NkQwMDFE
RDE5NiAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
LAogCQkJCUE4OEFEM0E3MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5jaWtl
cm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCNzcwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3
QjdBMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwg
aW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1h
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjgyMDk3
OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291
cmNlcyAqLywKKwkJCQlBN0I5N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5QzA5N0NBQUM4MDA5
NEM5RTQgLyogY3NzcHJvcGVydGllcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OUYw
OTdDQUFDODAwOTRDOUU0IC8qIGNzc3ZhbHVlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkND
OENGQ0QwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiBpbiBSZXNvdXJjZXMgKi8s
CkBAIC01MzMzLDYgKzUzOTUsMTIgQEAKIAkJCQlBODEzNjlFMzA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTExhYmVsRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RTUwOTcz
NzRGNjAwRDc0NDYzIC8qIEhUTUxLZXlnZW5FbGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE3Qjk3Qjc5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdl
RmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyog
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3RjA5
NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywK
KwkJCQlBN0I5N0I4MTA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVy
Lm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4NDA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5l
YXJUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODcwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVC
RjAyMkUwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
QkYwMjQ1MDk3NDgxOTAwMEM0MzE5NiAvKiBNYWNGcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUZBRTA0MThDMDk3NTk2OTQwMDA1NDBCRSAvKiBSZW5kZXJTVkdJbWFnZS5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNl
UXVhcnR6Lm1tCShyZXZpc2lvbiAxMjk4OCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAg
S0NhbnZhc0ZpbHRlckVmZmVjdCAqS1JlbmRlcmluZ0RldmljZVF1YQogICAgICovCiAgICAgY2Fz
ZSBGRV9CTEVORDogcmV0dXJuIG5ldyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigpOwogICAgIGNhc2Ug
RkVfQ09MT1JfTUFUUklYOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6KCk7
Ci0vLyAgY2FzZSBGRV9DT01QT05FTlRfVFJBTlNGRVI6IAorICAgIGNhc2UgRkVfQ09NUE9ORU5U
X1RSQU5TRkVSOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6KCk7
CiAgICAgY2FzZSBGRV9DT01QT1NJVEU6IHJldHVybiBuZXcgS0NhbnZhc0ZFQ29tcG9zaXRlUXVh
cnR6KCk7CiAvLyAgY2FzZSBGRV9DT05WT0xWRV9NQVRSSVg6IAogICAgIGNhc2UgRkVfRElGRlVT
RV9MSUdIVElORzogcmV0dXJuIG5ldyBLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmdRdWFydHooKTsK
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkocmV2
aXNpb24gMTI5ODgpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0
ei5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMCArNzEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgQ0lGaWx0ZXIgKmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRl
cikgY29uc3Q7CiB9OwogCi0vL2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6
IDogcHVibGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKLS8vcHVibGljOgotLy8gICAg
dmlydHVhbCBDSUZpbHRlciAqZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6
RmlsdGVyKSBjb25zdDsKLS8vfTsKK2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVh
cnR6IDogcHVibGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIENJRmlsdGVyICpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpG
aWx0ZXIpIGNvbnN0OworcHJpdmF0ZToKKyAgICBDSUZpbHRlciAqZ2V0RnVuY3Rpb25GaWx0ZXIo
S0NDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwsIENJSW1hZ2UgKmlucHV0SW1hZ2UpIGNvbnN0
OworfTsKIAogY2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXhRdWFydHogOiBwdWJsaWMgS0Nh
bnZhc0ZFQ29udm9sdmVNYXRyaXggewogcHVibGljOgpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAkocmV2aXNp
b24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVu
Y1I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0c7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7
CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0E7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0
dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbGluZWFyVHJh
bnNmZXIoc2FtcGxlciBpbWFnZSwgZmxvYXQgc2xvcGUsIGZsb2F0IGludGVyY2VwdCkKK3sKKyAg
ICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIHJldHVy
biBzbG9wZSAqIEMgKyBpbnRlcmNlcHQ7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAw
KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVs
ICpsaW5lYXJUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdp
c3RlckZpbHRlck5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAgICAg
Y29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAg
ICAgQCJXZWJLaXQgTGluZWFyIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5h
bWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNh
dGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0s
IGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVm
YXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF0sIEAiaW5wdXRTbG9wZSIsCisgICAgICAgICAgICAgICAgICAgICBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVm
YXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTowLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF0sIEAiaW5wdXRJbnRlcnNlY3Rpb24iLAorICAgICAgICAgICAgICAgICAg
ICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICop
bmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9
CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWxpbmVhclRyYW5zZmVyRmlsdGVyKSB7CisgICAg
ICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xh
c3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNv
dXJjZTpAIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAg
ICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpr
ZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxz
V2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5l
bHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGlu
aXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlu
cHV0U2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTppbnB1dEltYWdlXTsKKyAg
ICByZXR1cm4gW3NlbGYgYXBwbHk6bGluZWFyVHJhbnNmZXJGaWx0ZXIsIGlucHV0U2FtcGxlciwg
aW5wdXRTbG9wZSwgaW5wdXRJbnRlcmNlcHQsIEAiZGVmaW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIg
ZGVmaW5pdGlvbl0sIG5pbF07Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0JKHJldmlzaW9u
IDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmls
dGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCAiV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJu
ZWwgKmNvbXBvbmVudE1lcmdlRmlsdGVyID0gbmlsOworCitAaW1wbGVtZW50YXRpb24gV0tDb21w
b25lbnRNZXJnZUZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJl
Z2lzdGVyRmlsdGVyTmFtZTpAIldLQ29tcG9uZW50TWVyZ2UiCisgICAgICAgICAgICAgICAgICAg
ICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAg
ICAgICBAIldlYktpdCBDb21wb25lbnQgTWVyZ2UiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJ
Q2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmls
XSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAgICAgICAgIG5p
bF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUK
K3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCist
IChpZClpbml0Cit7CisgICAgaWYgKCFjb21wb25lbnRNZXJnZUZpbHRlcikgeworICAgICAgICBO
U0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07
CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6
QCJXS0NvbXBvbmVudE1lcmdlRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBO
U1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVs
RmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhT
dHJpbmc6Y29kZV07CisgICAgICAgIGNvbXBvbmVudE1lcmdlRmlsdGVyID0gW1trZXJuZWxzIG9i
amVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsK
K30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5
OmNvbXBvbmVudE1lcmdlRmlsdGVyLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6aW5wdXRG
dW5jUl0sIAorICAgICAgICBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6aW5wdXRGdW5jR10s
IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTppbnB1dEZ1bmNCXSwgW0NJU2FtcGxlciBzYW1w
bGVyV2l0aEltYWdlOmlucHV0RnVuY0FdLCBAImRlZmluaXRpb24iLCBbaW5wdXRGdW5jUiBkZWZp
bml0aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisr
KyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLVGFibGVUcmFu
c2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICppbnB1dEltYWdlOworICAgIENJ
SW1hZ2UgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9CisKK0Bl
bmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9q
aDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6
Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIg
OiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7Cit9CisKK0BlbmQKSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2Zl
ckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgi
CisKK3N0YXRpYyBDSUtlcm5lbCAqdGFibGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxl
bWVudGF0aW9uIFdLVGFibGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7Cisg
ICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLVGFibGVUcmFuc2ZlciIKKyAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NB
dHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAg
ICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IFRhYmxlIFRyYW5zZmVyIiwga0NJQXR0cmlidXRl
RmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1
YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlR3Jh
ZGllbnQsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwg
QCJpbnB1dFRhYmxlIiwgICAKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChD
SUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4g
W1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7Cisg
ICAgaWYgKCF0YWJsZVRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUg
PSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJp
bmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLVGFibGVUcmFuc2Zl
ckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBO
U0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAg
ICAgICB0YWJsZVRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0
YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAq
KW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVy
IHNhbXBsZXJXaXRoSW1hZ2U6aW5wdXRJbWFnZV07CisgICAgTlNBcnJheSAqYXJncyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRo
SW1hZ2U6aW5wdXRUYWJsZV0sIGlucHV0U2VsZWN0b3IsIAorICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBdLCBAImRlZmlu
aXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOworICAgIHJldHVybiBbc2Vs
ZiBhcHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFyZ3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsK
K30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0
eVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCisrKyBrY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIg
SHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0
ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKKworCitAaW1wbGVtZW50YXRpb24gV0tJZGVu
dGl0eVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIg
cmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIgorICAgICAgICAgICAgICAg
ICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAg
ICAgICAgICAgQCJXZWJLaXQgSWRlbnRpdHkgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJE
aXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhl
bHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAgICAg
ICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAq
KW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwor
fQorCistIChpZClpbml0Cit7CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJ
bWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgcmV0dXJuIGlucHV0SW1hZ2U7Cit9CisKK0BlbmQK
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2
QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29y
ZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgOiBD
SUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0SW1hZ2U7CisgICAgQ0lJbWFnZSAgKmlucHV0
VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2VsZWN0b3I7Cit9CisKK0BlbmQKSW5kZXg6IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQu
Y2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZGlzY3JldGVUcmFuc2ZlckZpbHRlciA9IG5p
bDsKKworQGltcGxlbWVudGF0aW9uIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClp
bml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLRGlzY3Jl
dGVUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAg
ICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IERpc2NyZXRlIFRy
YW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0
ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1h
Z2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNh
dGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIg
KilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYg
YWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAgIGlmICgh
ZGlzY3JldGVUcmFuc2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICpr
ZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNB
cnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAg
ICAgZGlzY3JldGVUcmFuc2ZlckZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJl
dGFpbl07CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1hZ2Ug
KilvdXRwdXRJbWFnZQoreworICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxl
ciBzYW1wbGVyV2l0aEltYWdlOmlucHV0SW1hZ2VdOworICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0U2FtcGxlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0
aEltYWdlOmlucHV0VGFibGUga2V5c0FuZFZhbHVlczprQ0lTYW1wbGVyRmlsdGVyTW9kZSwga0NJ
U2FtcGxlckZpbHRlck5lYXJlc3QsIG5pbF0sIGlucHV0U2VsZWN0b3IsIAorICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBd
LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOworICAgIHJl
dHVybiBbc2VsZiBhcHBseTpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGFyZ3VtZW50czphcmdzIG9w
dGlvbnM6bmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50
ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwgdmVjNCBkaXNjcmV0ZVRyYW5zZmVyKHNh
bXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUsIHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJ
bmRleCkKK3sKKyAgICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkp
OworICAgIGZsb2F0IGsgPSBmbG9vcihkb3QocmdiYVNlbGVjdG9yLCBDKSAqIG1heEluZGV4KTsK
KyAgICB2ZWM0IHJlcyA9IHNhbXBsZSh0YWJsZSwgdmVjMihrICsgMC41LCAwLjUpKTsKKyAgICBy
ZXR1cm4gcmVzOworfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21w
b25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9x
dWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAw
KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRl
ci5jaWtlcm5lbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCitrZXJuZWwgdmVjNCBtZXJnZUNvbXBvbmVudHMoc2FtcGxlciBmdW5jUiwgc2Ft
cGxlciBmdW5jRywgc2FtcGxlciBmdW5jQiwgc2FtcGxlciBmdW5jQSkKK3sKKyAgICBmbG9hdCBy
ID0gc2FtcGxlKGZ1bmNSLCBzYW1wbGVyQ29vcmQoZnVuY1IpKS5yOworICAgIGZsb2F0IGcgPSBz
YW1wbGUoZnVuY0csIHNhbXBsZXJDb29yZChmdW5jRykpLmc7CisgICAgZmxvYXQgYiA9IHNhbXBs
ZShmdW5jQiwgc2FtcGxlckNvb3JkKGZ1bmNCKSkuYjsKKyAgICBmbG9hdCBhID0gc2FtcGxlKGZ1
bmNBLCBzYW1wbGVyQ29vcmQoZnVuY0EpKS5hOworICAgIHJldHVybiB2ZWM0KHIsIGcsIGIsIGEp
OworfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVy
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1
ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVJbWFnZS5oPgorCisKK0BpbnRlcmZhY2UgV0tHYW1tYVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0
ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIE5TTnVtYmVyICppbnB1dEFtcGxp
dHVkZTsKKyAgICBOU051bWJlciAqaW5wdXRFeHBvbmVudDsKKyAgICBOU051bWJlciAqaW5wdXRP
ZmZzZXQ7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
R2FtbWFUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1
bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAi
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZ2FtbWFUcmFuc2Zl
ckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLR2FtbWFUcmFuc2ZlckZpbHRlcgor
KyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpA
IldLR2FtbWFUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYK
KyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IEdhbW1h
IFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJ
Q2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxs
SW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRl
ckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1
dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2Nh
bGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAi
aW5wdXRBbXBsaXR1ZGUiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0
cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlw
ZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxd
LCBAImlucHV0RXhwb25lbnQiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJ
QXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRl
VHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBu
aWxdLCBAImlucHV0T2Zmc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisr
IChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1
cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7
CisgICAgaWYgKCFnYW1tYVRyYW5zZmVyRmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5k
bGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNT
dHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLR2FtbWFUcmFu
c2ZlckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAg
ICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOwor
ICAgICAgICBnYW1tYVRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0g
cmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFn
ZSAqKW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1w
bGVyIHNhbXBsZXJXaXRoSW1hZ2U6aW5wdXRJbWFnZV07CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5
OmdhbW1hVHJhbnNmZXJGaWx0ZXIsIGlucHV0U2FtcGxlciwgaW5wdXRBbXBsaXR1ZGUsIGlucHV0
RXhwb25lbnQsIGlucHV0T2Zmc2V0LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmlu
aXRpb25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShy
ZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnku
YWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IGdhbW1hVHJhbnNmZXIoc2FtcGxlciBpbWFn
ZSwgZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBleHBvbmVudCwgZmxvYXQgb2Zmc2V0KQoreworICAg
IHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGltYWdlKSk7CisgICAgcmV0dXJu
IGFtcGxpdHVkZSAqIHBvdyhDLCB2ZWM0KGV4cG9uZW50KSkgKyBvZmZzZXQ7Cit9CkluZGV4OiBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJu
ZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxv
amgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IHRh
YmxlVHJhbnNmZXIoc2FtcGxlciBpbWFnZSwgc2FtcGxlciB0YWJsZSwgdmVjNCByZ2JhU2VsZWN0
b3IsIGZsb2F0IG1heEluZGV4KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxl
ckNvb3JkKGltYWdlKSk7CisgICAgZmxvYXQgayA9IGRvdChyZ2JhU2VsZWN0b3IsIEMpICogbWF4
SW5kZXg7CisgICAgdmVjNCByZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoayswLjUsIDAuNSkpOwor
ICAgIHJldHVybiByZXM7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQorKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZl
ciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGludGVyZmFjZSBXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIE5T
TnVtYmVyICppbnB1dFNsb3BlOworICAgIE5TTnVtYmVyICppbnB1dEludGVyY2VwdDsKK30KKwor
QGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHou
bW0JKHJldmlzaW9uIDEyOTg4KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0
ZXJRdWFydHoubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEyIEBACiAjaW1wb3J0ICJX
S0Rpc3RhbnRMaWdodEZpbHRlci5oIgogI2ltcG9ydCAiV0tOb3JtYWxNYXBGaWx0ZXIuaCIKICNp
bXBvcnQgIldLQXJpdGhtZXRpY0ZpbHRlci5oIgorI2ltcG9ydCAiV0tDb21wb25lbnRNZXJnZUZp
bHRlci5oIgorI2ltcG9ydCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJX
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5oIgorI2ltcG9ydCAiV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tHYW1t
YVRyYW5zZmVyRmlsdGVyLmgiCiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgog
CkBAIC03MCw2ICs3NiwyNiBAQCBzdGF0aWMgaW5saW5lIENJVmVjdG9yICpjaVZlY3RvcihGbG9h
dFBvCiAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDpwb2ludC54KCkgWTpwb2ludC55
KCldOwogfQogCisjZGVmaW5lIENIQU5ORUxfUkVEICAgMAorI2RlZmluZSBDSEFOTkVMX0dSRUVO
IDEKKyNkZWZpbmUgQ0hBTk5FTF9CTFVFICAyCisjZGVmaW5lIENIQU5ORUxfQUxQSEEgMworCitz
dGF0aWMgaW5saW5lIENJVmVjdG9yICpnZXRWZWN0b3JGb3JDaGFubmVsKEtDQ2hhbm5lbFNlbGVj
dG9yVHlwZSBjaGFubmVsKXsKKyAgICBzd2l0Y2goY2hhbm5lbCl7CisgICAgICAgIGNhc2UgQ1Nf
UkVEOgorICAgICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTowLjAg
WjowLjAgVzowLjBdOworICAgICAgICBjYXNlIENTX0dSRUVOOgorICAgICAgICAgICAgcmV0dXJu
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWToxLjAgWjowLjAgVzowLjBdOyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIENTX0JMVUU6CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZl
Y3RvcldpdGhYOjAuMCBZOjAuMCBaOjEuMCBXOjAuMF07CisgICAgICAgIGNhc2UgQ1NfQUxQSEE6
CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAu
MCBXOjEuMF07CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9y
IHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjAuMF07CisgICAgfQorfQorCiBLQ2FudmFz
RmlsdGVyUXVhcnR6OjpLQ2FudmFzRmlsdGVyUXVhcnR6KCkgOiBtX2ZpbHRlckNJQ29udGV4dCgw
KSwgbV9maWx0ZXJDR0xheWVyKDApLCBtX2ltYWdlc0J5TmFtZSgwKQogewogICAgIG1faW1hZ2Vz
QnlOYW1lID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKQEAgLTM0OSw2ICsz
NzUsMTMxIEBAIENJRmlsdGVyICpLQ2FudmFzRkVDb2xvck1hdHJpeFF1YXJ0ejo6Z2UKICAgICBG
RV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsKIH0KIAorc3RhdGljIENJSW1hZ2UgKmdlbkltYWdlRnJv
bVRhYmxlKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHRhYmxlKQoreworICAgIGludCBsZW5ndGggPSB0
YWJsZS5zaXplKCk7CisgICAgaW50IG5CeXRlcyA9IGxlbmd0aCo0KnNpemVvZihmbG9hdCk7Cisg
ICAgZmxvYXQgKnRhYmxlU3RvcmUgPSAoZmxvYXQgKiltYWxsb2MobkJ5dGVzKTsKKyAgICBOU0Rh
dGEgKmJpdG1hcERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6dGFibGVTdG9yZSBs
ZW5ndGg6bkJ5dGVzXTsKKyAgICBmb3IgKFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gdGFibGUuYmVnaW4oKTsgaXQgIT0gdGFibGUuZW5kKCk7IGl0KyspIHsKKyAgICAgICAgY29u
c3QgZmxvYXQgdmFsdWUgPSAqaXQ7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAg
ICAgICAgKnRhYmxlU3RvcmUrKyA9IHZhbHVlOworICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFs
dWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIFtD
SUltYWdlIGltYWdlV2l0aEJpdG1hcERhdGE6Yml0bWFwRGF0YSBieXRlc1BlclJvdzpuQnl0ZXMg
c2l6ZTpDR1NpemVNYWtlKGxlbmd0aCwgMSkgZm9ybWF0OmtDSUZvcm1hdFJHQkFmIGNvbG9yU3Bh
Y2U6bmlsXTsKK30KKworc3RhdGljIENJRmlsdGVyICpmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGNv
bnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykKK3sKKyAgICBDSUZpbHRlciAq
ZmlsdGVyOworICAgIHN3aXRjaChmdW5jLnR5cGUpIHsKKyAgICAgICAgY2FzZSBDVF9JREVOVElU
WToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLSWRl
bnRpdHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfVEFC
TEU6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS1Rh
YmxlVHJhbnNmZXJGaWx0ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENU
X0RJU0NSRVRFOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDVF9MSU5FQVI6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIl07ICAgICAgICAgICAgCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDVF9HQU1NQToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZp
bHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLR2FtbWFUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBOU0xvZyhAIldBUk5JTkc6IFVua25v
d24gZnVuY3Rpb24gdHlwZSBmb3IgZmVDb21wb25lbnRUcmFuc2ZlciIpOworICAgICAgICAgICAg
Ly9hbmQgdG8gcHJldmVudCB0aGUgZW50aXJlIHN2ZyBmcm9tIGZhaWxpbmcgYXMgYSByZXN1bHQK
KyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLSWRlbnRp
dHlUcmFuc2ZlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmaWx0
ZXI7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBhcmFtZXRlcnNGb3JDb21wb25lbnRGdW5jKENJRmls
dGVyICpmaWx0ZXIsIGNvbnN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYywgQ0lW
ZWN0b3IgKmNoYW5uZWxTZWxlY3RvcikKK3sKKyAgICBzd2l0Y2goZnVuYy50eXBlKSB7CisgICAg
ICAgIGNhc2UgQ1RfVEFCTEU6CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmdlbkltYWdl
RnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZvcktleTpAImlucHV0VGFibGUiXTsKKyAgICAg
ICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5lbFNlbGVjdG9yIGZvcktleTpAImlucHV0U2Vs
ZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0RJU0NSRVRFOgor
ICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZW5JbWFnZUZyb21UYWJsZShmdW5jLnRhYmxl
VmFsdWVzKSBmb3JLZXk6QCJpbnB1dFRhYmxlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZh
bHVlOmNoYW5uZWxTZWxlY3RvciBmb3JLZXk6QCJpbnB1dFNlbGVjdG9yIl07CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5FQVI6CisgICAgICAgICAgICBbZmlsdGVyIHNl
dFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5zbG9wZV0gZm9yS2V5OkAiaW5w
dXRTbG9wZSJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEZsb2F0OmZ1bmMuaW50ZXJjZXB0XSBmb3JLZXk6QCJpbnB1dEludGVyY2VwdCJdOyAgICAg
ICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX0dBTU1BOgorICAgICAg
ICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuYW1w
bGl0dWRlXSBmb3JLZXk6QCJpbnB1dEFtcGxpdHVkZSJdOworICAgICAgICAgICAgW2ZpbHRlciBz
ZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuZXhwb25lbnRdIGZvcktleTpA
ImlucHV0RXhwb25lbnQiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpmdW5jLm9mZnNldF0gZm9yS2V5OkAiaW5wdXRPZmZzZXQiXTsgICAK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy9pZGVu
dGl0eSBoYXMgbm8gYXJncworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMg
Q0lGaWx0ZXIgKmdldEZpbHRlckZvckZ1bmMoY29uc3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJiBmdW5jLCBDSUltYWdlICppbnB1dEltYWdlLCBDSVZlY3RvciAqY2hhbm5lbFNlbGVjdG9y
KSAKK3sJCisgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IGZpbHRlckZvckNvbXBvbmVudEZ1bmMoZnVu
Yyk7CisgICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgCisgICAgc2V0UGFyYW1ldGVyc0Zv
ckNvbXBvbmVudEZ1bmMoZmlsdGVyLCBmdW5jLCBjaGFubmVsU2VsZWN0b3IpOworICAgIFtmaWx0
ZXIgc2V0VmFsdWU6aW5wdXRJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07CisgICAgcmV0dXJu
IGZpbHRlcjsKK30KKworQ0lGaWx0ZXIgKktDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6
OjpnZXRGdW5jdGlvbkZpbHRlcihLQ0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCwgQ0lJbWFn
ZSAqaW5wdXRJbWFnZSkgY29uc3QKK3sKKyAgICBzd2l0Y2goY2hhbm5lbCkKKyAgICB7CisgICAg
ICAgIGNhc2UgQ1NfUkVEOgorICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKHJl
ZEZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZh
bHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAgICAgICAgY2FzZSBDU19HUkVFTjogCisgICAg
ICAgICAgICByZXR1cm4gW2dldEZpbHRlckZvckZ1bmMoZ3JlZW5GdW5jdGlvbigpLCBpbnB1dElt
YWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dElt
YWdlIl07CisgICAgICAgIGNhc2UgQ1NfQkxVRToKKyAgICAgICAgICAgIHJldHVybiBbZ2V0Rmls
dGVyRm9yRnVuYyhibHVlRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgZ2V0VmVjdG9yRm9yQ2hhbm5l
bChjaGFubmVsKSkgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOworICAgICAgICBjYXNlIENT
X0FMUEhBOgorICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKGFscGhhRnVuY3Rp
b24oKSwgaW5wdXRJbWFnZSwgZ2V0VmVjdG9yRm9yQ2hhbm5lbChjaGFubmVsKSkgdmFsdWVGb3JL
ZXk6QCJvdXRwdXRJbWFnZSJdOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CisgICAgCit9CisKK0NJRmlsdGVyICpLQ2FudmFzRkVDb21wb25lbnRUcmFu
c2ZlclF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVy
KSBjb25zdAoreworICAgIFtXS0NvbXBvbmVudE1lcmdlRmlsdGVyIGNsYXNzXTsKKyAgICBbV0tJ
ZGVudGl0eVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKKyAgICBbV0tUYWJsZVRyYW5zZmVyRmlsdGVy
IGNsYXNzXTsKKyAgICBbV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGNsYXNzXTsKKyAgICBbV0tM
aW5lYXJUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLR2FtbWFUcmFuc2ZlckZpbHRlciBj
bGFzc107CisgICAgCisgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IG5pbDsKKyAgICBLV1FfQkxPQ0tf
RVhDRVBUSU9OUworICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLQ29t
cG9uZW50TWVyZ2UiXTsKKyAgICBpZiAoIWZpbHRlcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBbZmlsdGVyIHNldERlZmF1bHRzXTsKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gcXVhcnR6
RmlsdGVyLT5pbnB1dEltYWdlKHRoaXMpOworICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1
dEltYWdlKTsgICAgCisgICAgCisgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRl
cihDU19SRUQsIGlucHV0SW1hZ2UpIGZvcktleTpAImlucHV0RnVuY1IiXTsKKyAgICBbZmlsdGVy
IHNldFZhbHVlOmdldEZ1bmN0aW9uRmlsdGVyKENTX0dSRUVOLCBpbnB1dEltYWdlKSBmb3JLZXk6
QCJpbnB1dEZ1bmNHIl07CisgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihD
U19CTFVFLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNCIl07CisgICAgW2ZpbHRlciBz
ZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihDU19BTFBIQSwgaW5wdXRJbWFnZSkgZm9yS2V5OkAi
aW5wdXRGdW5jQSJdOworICAgIAorICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOworICAgIHJl
dHVybiBuaWw7Cit9CisKIENJRmlsdGVyICpLQ2FudmFzRkVDb21wb3NpdGVRdWFydHo6OmdldENJ
RmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKIHsKICAgICBD
SUZpbHRlciAqZmlsdGVyID0gbmlsOwpAQCAtMzk0LDIxICs1NDUsNiBAQCBDSUZpbHRlciAqS0Nh
bnZhc0ZFQ29tcG9zaXRlUXVhcnR6OjpnZXRDCiAgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47
CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ0lWZWN0b3IgKmdldFZlY3RvckZvckNoYW5uZWwoaW50IGlk
eCl7Ci0gICAgc3dpdGNoKGlkeCl7Ci0gICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gW0NJVmVj
dG9yIHZlY3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAuMF07Ci0gICAgY2FzZSAxOgotICAg
ICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF07
ICAgICAgICAgICAgCi0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3Rv
cldpdGhYOjAuMCBZOjAuMCBaOjEuMCBXOjAuMF07Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1
cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjEuMF07Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjow
LjAgVzowLjBdOwotICAgIH0KLX0KLQogQ0lGaWx0ZXIgKktDYW52YXNGRURpc3BsYWNlbWVudE1h
cFF1YXJ0ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBj
b25zdAogewogICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CkluZGV4OiBrY2FudmFzL0tDYW52
YXNGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAko
cmV2aXNpb24gMTI5ODgpCisrKyBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM3LDcgKzIzNywxMyBAQCBzdGF0aWMgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwo
UVRleHRTdHJlCiBzdGF0aWMgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRz
LCBjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gJmZ1bmMpCiB7CiAgICAgdHMgPDwg
Ilt0eXBlPSIgPDwgZnVuYy50eXBlIDw8ICJdIiAKLSAgICAgICAgPDwgIiBbdGFibGUgdmFsdWVz
PSIgPDwgZnVuYy50YWJsZVZhbHVlcyA8PCAiXSIKKyAgICAgICAgPDwgIiBbdGFibGUgdmFsdWVz
PSI7CisgICAgVmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXRyPWZ1bmMudGFibGVWYWx1
ZXMuYmVnaW4oKTsKKyAgICB0cyA8PCAqaXRyKys7CisgICAgZm9yICg7IGl0ciE9ZnVuYy50YWJs
ZVZhbHVlcy5lbmQoKTsgaXRyKyspIHsKKyAgICAgICAgdHMgPDwgIiAiIDw8ICppdHIrKzsKKyAg
ICB9CisgICAgdHMgPDwgIl0iCiAgICAgICAgIDw8ICIgW3Nsb3BlPSIgPDwgZnVuYy5zbG9wZSA8
PCAiXSIKICAgICAgICAgPDwgIiBbaW50ZXJjZXB0PSIgPDwgZnVuYy5pbnRlcmNlcHQgPDwgIl0i
CiAgICAgICAgIDw8ICIgW2FtcGxpdHVkZT0iIDw8IGZ1bmMuYW1wbGl0dWRlIDw8ICJdIgpJbmRl
eDoga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZh
c0ZpbHRlcnMuaAkocmV2aXNpb24gMTI5ODgpCisrKyBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNCw4ICsyMTQsOSBAQCB0eXBlZGVmIGVudW0gewogCiBzdHJ1
Y3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uCiB7CisgICAgS0NDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uKCkgOiB0eXBlKENUX0lERU5USVRZKSB7fQogICAgIEtDQ29tcG9uZW50VHJhbnNm
ZXJUeXBlIHR5cGU7Ci0gICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IHRhYmxlVmFsdWVzOworICAgIFZl
Y3RvcjxmbG9hdD4gdGFibGVWYWx1ZXM7CiAgICAgZmxvYXQgc2xvcGU7CiAgICAgZmxvYXQgaW50
ZXJjZXB0OwogICAgIGZsb2F0IGFtcGxpdHVkZTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjk4OCkKKysrIGtz
dmcyL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudEltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw3ICs5Miw2IEBAIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyICpTVkdGRUNv
bXBvbmUKICAgICAgICAgZWxzZSBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVGdW5jQVRh
ZykpCiAgICAgICAgICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0QWxwaGFGdW5jdGlvbihzdGF0aWNf
Y2FzdDxTVkdGRUZ1bmNBRWxlbWVudEltcGwgKj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKSk7CiAg
ICAgfQotCiAgICAgcmV0dXJuIG1fZmlsdGVyRWZmZWN0OwogfQogCkluZGV4OiBrc3ZnMi9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmNwcAko
cmV2aXNpb24gMTI5ODgpCisrKyBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQKICAgICAgICAgZWxzZSBpZih2YWx1
ZSA9PSAiZ2FtbWEiKQogICAgICAgICAgICAgdHlwZSgpLT5zZXRCYXNlVmFsKFNWR19GRUNPTVBP
TkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEpOwogICAgIH0KLSAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpCisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAgIHRhYmxlVmFsdWVzKCktPmJhc2VW
YWwoKS0+cGFyc2UodmFsdWUucXN0cmluZygpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnNsb3BlQXR0cikKICAgICAgICAgc2xvcGUoKS0+c2V0QmFzZVZhbCh2YWx1
ZS5xc3RyaW5nKCkudG9Eb3VibGUoKSk7CkBAIC0xMjUsMTEgKzEyNSwxNyBAQCBLQ0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gU1ZHQ29tcG9uZW50CiB7CiAgICAgS0NDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIGZ1bmM7CiAgICAgZnVuYy50eXBlID0gKEtDQ29tcG9uZW50VHJhbnNmZXJUeXBl
KSh0eXBlKCktPmJhc2VWYWwoKSAtIDEpOworICAgIGlmIChmdW5jLnR5cGUgPCAwIHx8IGZ1bmMu
dHlwZSA+IDQpCisgICAgICAgIGZ1bmMudHlwZSA9IENUX0lERU5USVRZOwogICAgIGZ1bmMuc2xv
cGUgPSBzbG9wZSgpLT5iYXNlVmFsKCk7CiAgICAgZnVuYy5pbnRlcmNlcHQgPSBpbnRlcmNlcHQo
KS0+YmFzZVZhbCgpOwogICAgIGZ1bmMuYW1wbGl0dWRlID0gYW1wbGl0dWRlKCktPmJhc2VWYWwo
KTsKICAgICBmdW5jLmV4cG9uZW50ID0gZXhwb25lbnQoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMu
b2Zmc2V0ID0gb2Zmc2V0KCktPmJhc2VWYWwoKTsKKyAgICBTVkdOdW1iZXJMaXN0SW1wbCAqbnVt
YmVycyA9IHRhYmxlVmFsdWVzKCktPmJhc2VWYWwoKTsKKyAgICB1bnNpZ25lZCBpbnQgbnIgPSBu
dW1iZXJzLT5udW1iZXJPZkl0ZW1zKCk7CisgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IG5yOyBpKyspCisgICAgICAgIGZ1bmMudGFibGVWYWx1ZXMuYXBwZW5kKG51bWJlcnMtPmdldEl0
ZW0oaSktPnZhbHVlKCkpOwogICAgIHJldHVybiBmdW5jOwogfQogCkluZGV4OiBrc3ZnMi9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5oCShyZXZp
c2lvbiAxMjk4OCkKKysrIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlSW1wbCAqYXR0cik7CiAgICAgICAgIAogICAgICAgICBLQ0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OwotCisgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25JbXBsPiBt
X3R5cGU7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEltcGw+
IG1fdGFibGVWYWx1ZXM7Cg==
</data>
<flag name="review"
          id="1710"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6841</attachid>
            <date>2006-03-04 03:46:17 -0800</date>
            <delta_ts>2006-04-25 06:18:58 -0700</delta_ts>
            <desc>patch with hopefully final changes</desc>
            <filename>fecomponenttransfer.patch</filename>
            <type>text/plain</type>
            <size>67568</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMTIzKQorKysgV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiAr
NDM3LDIzIEBACiAJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc2MzhBOTEwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmls
dGVyLmNpa2VybmVsICovOyB9OwogCQlBNzYzOEE5NzA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRGIC8qIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTc2MzhBOTgwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MzhBOTYwOTk1OTY1RDAwMDdFMTRGIC8q
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuY3BwICovOyB9OworCQlBN0I5N0I3NzA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3
Qjk3Qjc4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2NzA5NzlDM0Ex
MDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oICovOyB9OworCQlBN0I5N0I3OTA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjgwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCN0EwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjkwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdC
N0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkEwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovOyB9OworCQlBN0I5N0I3QzA5
NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2QjA5NzlDM0ExMDAwRThF
QjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3QjdEMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZDMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdF
MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCN0YwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLR2Ft
bWFUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlBN0I5N0I4MDA5NzlDM0ExMDAwRThFQjEgLyog
V0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RjA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lk
ZW50aXR5VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjcxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5z
ZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I4MzA5NzlDM0ExMDAwRThFQjEgLyog
V0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCODQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3Qjc0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07CisJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Qjk3Qjc1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKKwkJQTdCOTdCODcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdC
NzYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlB
ODEzNjlDQTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElzSW5kZXhFbGVtZW50SW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuaCAqLzsgfTsKIAkJQTgxMzY5Q0Iw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUYwOTczNzRGNTAwRDc0
NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudEltcGwuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIwMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MSW5wdXRFbGVtZW50SW1wbC5oICovOyB9OwpAQCAtMTM1Niw2ICsxMzczLDIzIEBACiAJCUE3
NjM4QTkxMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MzhBOTUwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYzOEE5NjA5OTU5NjVEMDAwN0UxNEYgLyogU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnRJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
Qjk3QjY3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkEwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZEMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0I5N0I3MTA5
NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdC
OTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8q
IFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpj
OyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MTBFMzkzMDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURlYnVnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS0NhbnZhc1Ry
ZWVEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNUcmVlRGVidWcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLQ2FudmFzVHJlZURlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4MTIyQzdFMDhENTY0QjAwMDg0NEZBMyAvKiBHZXRT
VkdEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBH
ZXRTVkdEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtMzIwMiw2ICszMjM2LDIzIEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4QzMyOTIwMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjcwOTc5
QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2
ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovLAorCQkJCUE3
Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJu
ZWwgKi8sCisJCQkJQTdCOTdCNkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2Zl
ckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE3Qjk3QjZEMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2RTA5NzlDM0Ex
MDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNkYwOTc5
QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3
QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJ
CQlBN0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtl
cm5lbCAqLywKKwkJCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2Zl
ckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRy
YW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFi
bGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThF
QjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzYwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovLAogCQkJCUE4QzMyOTIxMDkzQkI3
MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLywKIAkJCQlBOEMzMjkyMjA5M0JC
NzMyMDAwQjlDQUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQThDMzI5MjMwOTNC
QjczMjAwMEI5Q0FDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsICovLApAQCAt
NDIwNiw2ICs0MjU3LDEyIEBACiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxM
YWJlbEVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlFNDA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEz
NkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBN0I5N0I3ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0IwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVU
cmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdCN0UwOTc5QzNBMTAwMEU4
RUIxIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdCOTdC
ODAwOTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTdCOTdCODMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3Qjg2MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjJGMDk3NDgx
NjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyMzAwOTc0ODE2
MzAwQzQzMTk2IC8qIEZyYW1lUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyNDQw
OTc0ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTQ1ODAsNiAr
NDYzNywxMSBAQAogCQkJCUE4OEFEM0ExMDk1MjQ4NkQwMDFERDE5NiAvKiBXS1BvaW50TGlnaHRG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE4OEFEM0E0MDk1MjQ4NkQwMDFE
RDE5NiAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
LAogCQkJCUE4OEFEM0E3MDk1MjQ4NkQwMDFERDE5NiAvKiBXS1Nwb3RMaWdodEZpbHRlci5jaWtl
cm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQTdCOTdCNzcwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3
QjdBMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwg
aW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjdEMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1h
VHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3QjgyMDk3
OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291
cmNlcyAqLywKKwkJCQlBN0I5N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0VBNDc5QzA5N0NBQUM4MDA5
NEM5RTQgLyogY3NzcHJvcGVydGllcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ3OUYw
OTdDQUFDODAwOTRDOUU0IC8qIGNzc3ZhbHVlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkND
OENGQ0QwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiBpbiBSZXNvdXJjZXMgKi8s
CkBAIC01MzM4LDYgKzU0MDAsMTIgQEAKIAkJCQlBODEzNjlFMzA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTExhYmVsRWxlbWVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RTUwOTcz
NzRGNjAwRDc0NDYzIC8qIEhUTUxLZXlnZW5FbGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE3Qjk3Qjc5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdl
RmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3QzA5NzlDM0ExMDAwRThFQjEgLyog
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I3RjA5
NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywK
KwkJCQlBN0I5N0I4MTA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVy
Lm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4NDA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5l
YXJUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCisJCQkJQTdCOTdCODcwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVC
RjAyMkUwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
QkYwMjQ1MDk3NDgxOTAwMEM0MzE5NiAvKiBNYWNGcmFtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUZBRTA0MThDMDk3NTk2OTQwMDA1NDBCRSAvKiBSZW5kZXJTVkdJbWFnZS5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNl
UXVhcnR6Lm1tCShyZXZpc2lvbiAxMzEyMykKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNyArMjUyLDcgQEAg
S0NhbnZhc0ZpbHRlckVmZmVjdCAqS1JlbmRlcmluZ0RldmljZVF1YQogICAgICovCiAgICAgY2Fz
ZSBGRV9CTEVORDogcmV0dXJuIG5ldyBLQ2FudmFzRkVCbGVuZFF1YXJ0eigpOwogICAgIGNhc2Ug
RkVfQ09MT1JfTUFUUklYOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbG9yTWF0cml4UXVhcnR6KCk7
Ci0vLyAgY2FzZSBGRV9DT01QT05FTlRfVFJBTlNGRVI6IAorICAgIGNhc2UgRkVfQ09NUE9ORU5U
X1RSQU5TRkVSOiByZXR1cm4gbmV3IEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6KCk7
CiAgICAgY2FzZSBGRV9DT01QT1NJVEU6IHJldHVybiBuZXcgS0NhbnZhc0ZFQ29tcG9zaXRlUXVh
cnR6KCk7CiAvLyAgY2FzZSBGRV9DT05WT0xWRV9NQVRSSVg6IAogICAgIGNhc2UgRkVfRElGRlVT
RV9MSUdIVElORzogcmV0dXJuIG5ldyBLQ2FudmFzRkVEaWZmdXNlTGlnaHRpbmdRdWFydHooKTsK
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkocmV2
aXNpb24gMTMxMjMpCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0
ei5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMCArNzEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgQ0lGaWx0ZXIgKmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRl
cikgY29uc3Q7CiB9OwogCi0vL2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVhcnR6
IDogcHVibGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKLS8vcHVibGljOgotLy8gICAg
dmlydHVhbCBDSUZpbHRlciAqZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6
RmlsdGVyKSBjb25zdDsKLS8vfTsKK2NsYXNzIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVh
cnR6IDogcHVibGljIEtDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIENJRmlsdGVyICpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpG
aWx0ZXIpIGNvbnN0OworcHJpdmF0ZToKKyAgICBDSUZpbHRlciAqZ2V0RnVuY3Rpb25GaWx0ZXIo
S0NDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWwsIENJSW1hZ2UgKmlucHV0SW1hZ2UpIGNvbnN0
OworfTsKIAogY2xhc3MgS0NhbnZhc0ZFQ29udm9sdmVNYXRyaXhRdWFydHogOiBwdWJsaWMgS0Nh
bnZhc0ZFQ29udm9sdmVNYXRyaXggewogcHVibGljOgpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAkocmV2aXNp
b24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdL
Q29tcG9uZW50TWVyZ2VGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVu
Y1I7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0c7CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0I7
CisgICAgQ0lJbWFnZSAgKmlucHV0RnVuY0E7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0
dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbGluZWFyVHJh
bnNmZXIoc2FtcGxlciBpbWFnZSwgZmxvYXQgc2xvcGUsIGZsb2F0IGludGVyY2VwdCkKK3sKKyAg
ICB2ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIHJldHVy
biBzbG9wZSAqIEMgKyBpbnRlcmNlcHQ7Cit9CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAw
KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVs
ICpsaW5lYXJUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdp
c3RlckZpbHRlck5hbWU6QCJXS0xpbmVhclRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAgICAg
Y29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAg
ICAgQCJXZWJLaXQgTGluZWFyIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5h
bWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNh
dGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0s
IGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVm
YXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF0sIEAiaW5wdXRTbG9wZSIsCisgICAgICAgICAgICAgICAgICAgICBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVm
YXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTowLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF0sIEAiaW5wdXRJbnRlcnNlY3Rpb24iLAorICAgICAgICAgICAgICAgICAg
ICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICop
bmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9
CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWxpbmVhclRyYW5zZmVyRmlsdGVyKSB7CisgICAg
ICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xh
c3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNv
dXJjZTpAIldLTGluZWFyVHJhbnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAg
ICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTpr
ZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxz
V2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5l
bHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGlu
aXRdOworfQorCistIChDSUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlu
cHV0U2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07Cisg
ICAgcmV0dXJuIFtzZWxmIGFwcGx5OmxpbmVhclRyYW5zZmVyRmlsdGVyLCBpbnB1dFNhbXBsZXIs
IGlucHV0U2xvcGUsIGlucHV0SW50ZXJjZXB0LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVy
IGRlZmluaXRpb25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCShyZXZpc2lv
biAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZp
bHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgIldLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCIKKworc3RhdGljIENJS2Vy
bmVsICpjb21wb25lbnRNZXJnZUZpbHRlciA9IG5pbDsKKworQGltcGxlbWVudGF0aW9uIFdLQ29t
cG9uZW50TWVyZ2VGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAgIFtDSUZpbHRlciBy
ZWdpc3RlckZpbHRlck5hbWU6QCJXS0NvbXBvbmVudE1lcmdlIgorICAgICAgICAgICAgICAgICAg
ICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAg
ICAgICAgQCJXZWJLaXQgQ29tcG9uZW50IE1lcmdlIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxh
eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtD
SUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5p
bF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAgICAgICAgICAgICBu
aWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKwor
LSAoaWQpaW5pdAoreworICAgIGlmICghY29tcG9uZW50TWVyZ2VGaWx0ZXIpIHsKKyAgICAgICAg
TlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11d
OworICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNl
OkAiV0tDb21wb25lbnRNZXJnZUZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKKyAgICAgICAg
TlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5l
bEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRo
U3RyaW5nOmNvZGVdOworICAgICAgICBjb21wb25lbnRNZXJnZUZpbHRlciA9IFtba2VybmVscyBv
YmplY3RBdEluZGV4OjBdIHJldGFpbl07CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07
Cit9CisKKy0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQoreworICAgIHJldHVybiBbc2VsZiBhcHBs
eTpjb21wb25lbnRNZXJnZUZpbHRlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1
dEZ1bmNSXSwgCisgICAgICAgIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5j
R10sIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jQl0sIFtDSVNhbXBsZXIg
c2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jQV0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1dEZ1bmNS
IGRlZmluaXRpb25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
MCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tUYWJs
ZVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgKmlucHV0SW1hZ2U7Cisg
ICAgQ0lJbWFnZSAqaW5wdXRUYWJsZTsKKyAgICBDSVZlY3RvciAqaW5wdXRTZWxlY3RvcjsKK30K
KworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVu
dCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxR
dWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCitAaW50ZXJmYWNlIFdLSWRlbnRpdHlUcmFuc2ZlckZp
bHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKK30KKworQGVuZApJ
bmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRy
YW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmls
dGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5j
YW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuaCIKKworc3RhdGljIENJS2VybmVsICp0YWJsZVRyYW5zZmVyRmlsdGVyID0gbmlsOworCitA
aW1wbGVtZW50YXRpb24gV0tUYWJsZVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUK
K3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tUYWJsZVRyYW5zZmVyIgor
ICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBj
bGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQgVGFibGUgVHJhbnNmZXIiLCBrQ0lBdHRy
aWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFy
cmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlO
b25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5
cGVHcmFkaWVudCwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBu
aWxdLCBAImlucHV0VGFibGUiLCAgIAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisK
KysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJl
dHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQK
K3sKKyAgICBpZiAoIXRhYmxlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1
bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAgICBO
U1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tUYWJsZVRy
YW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29k
ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAg
ICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07
CisgICAgICAgIHRhYmxlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDow
XSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUlt
YWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtDSVNh
bXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgTlNBcnJheSAqYXJncyA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1wbGVyIHNhbXBs
ZXJXaXRoSW1hZ2U6IGlucHV0VGFibGVdLCBpbnB1dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJsZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwg
QCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1
cm4gW3NlbGYgYXBwbHk6dGFibGVUcmFuc2ZlckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25z
Om5pbF07Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysg
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
T2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCisKKworQGltcGxlbWVudGF0aW9u
IFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7CisgICAgW0NJ
RmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLSWRlbnRpdHlUcmFuc2ZlciIKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRy
aWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAg
ICAgICAgICAgICAgICAgIEAiV2ViS2l0IElkZW50aXR5IFRyYW5zZmVyIiwga0NJQXR0cmlidXRl
RmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1
YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAg
ICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNT
dHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisK
Ky0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQoreworICAgIHJldHVybiBpbnB1dEltYWdlOworfQor
CitAZW5kCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJh
bnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50
IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK0BpbnRlcmZhY2UgV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIENJSW1hZ2Ug
ICppbnB1dFRhYmxlOworICAgIENJVmVjdG9yICppbnB1dFNlbGVjdG9yOworfQorCitAZW5kCklu
ZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
K2tlcm5lbCB2ZWM0IGRpc2NyZXRlVHJhbnNmZXIoc2FtcGxlciBpbWFnZSwgc2FtcGxlciB0YWJs
ZSwgdmVjNCByZ2JhU2VsZWN0b3IsIGZsb2F0IG1heEluZGV4KQoreworICAgIHZlYzQgQyA9IHNh
bXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGltYWdlKSk7CisgICAgZmxvYXQgayA9IGZsb29yKGRv
dChyZ2JhU2VsZWN0b3IsIEMpICogbWF4SW5kZXgpOworICAgIHZlYzQgcmVzID0gc2FtcGxlKHRh
YmxlLCB2ZWMyKGsgKyAwLjUsIDAuNSkpOworICAgIHJldHVybiByZXM7Cit9CkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIubQkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNh
bnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLRGlzY3JldGVUcmFuc2ZlckZp
bHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7
CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5p
dGlhbGl6ZQoreworICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0Rpc2NyZXRl
VHJhbnNmZXIiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAg
ICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBEaXNjcmV0ZSBUcmFu
c2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVn
b3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdl
LCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRl
Z29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9CisKKysgKENJRmlsdGVyICop
ZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBbW1tzZWxmIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBpZiAoIWRp
c2NyZXRlVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1
bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAgICBOU1N0cmluZyAqa2Vy
bmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJy
YXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAg
IGRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRh
aW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChDSUltYWdlICop
b3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtDSVNhbXBsZXIg
c2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgTlNBcnJheSAqYXJncyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRo
SW1hZ2U6IGlucHV0VGFibGUga2V5c0FuZFZhbHVlczprQ0lTYW1wbGVyRmlsdGVyTW9kZSwga0NJ
U2FtcGxlckZpbHRlck5lYXJlc3QsIG5pbF0sIGlucHV0U2VsZWN0b3IsIAorICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRhYmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBd
LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOworICAgIHJl
dHVybiBbc2VsZiBhcHBseTpkaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIGFyZ3VtZW50czphcmdzIG9w
dGlvbnM6bmlsXTsKK30KKworQGVuZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBr
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCisKK0BpbnRlcmZhY2UgV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2UgICppbnB1dEltYWdlOworICAgIE5T
TnVtYmVyICppbnB1dEFtcGxpdHVkZTsKKyAgICBOU051bWJlciAqaW5wdXRFeHBvbmVudDsKKyAg
ICBOU051bWJlciAqaW5wdXRPZmZzZXQ7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRl
ci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRl
bnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgbWVyZ2VDb21wb25l
bnRzKHNhbXBsZXIgZnVuY1IsIHNhbXBsZXIgZnVuY0csIHNhbXBsZXIgZnVuY0IsIHNhbXBsZXIg
ZnVuY0EpCit7CisgICAgZmxvYXQgciA9IHNhbXBsZShmdW5jUiwgc2FtcGxlckNvb3JkKGZ1bmNS
KSkucjsKKyAgICBmbG9hdCBnID0gc2FtcGxlKGZ1bmNHLCBzYW1wbGVyQ29vcmQoZnVuY0cpKS5n
OworICAgIGZsb2F0IGIgPSBzYW1wbGUoZnVuY0IsIHNhbXBsZXJDb29yZChmdW5jQikpLmI7Cisg
ICAgZmxvYXQgYSA9IHNhbXBsZShmdW5jQSwgc2FtcGxlckNvb3JkKGZ1bmNBKSkuYTsKKyAgICBy
ZXR1cm4gdmVjNChyLCBnLCBiLCBhKTsKK30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJ
KHJldmlzaW9uIDApCisrKyBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJh
bnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVy
eS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgZ2FtbWFUcmFuc2ZlcihzYW1wbGVyIGlt
YWdlLCBmbG9hdCBhbXBsaXR1ZGUsIGZsb2F0IGV4cG9uZW50LCBmbG9hdCBvZmZzZXQpCit7Cisg
ICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICByZXR1
cm4gYW1wbGl0dWRlICogcG93KEMsIHZlYzQoZXhwb25lbnQpKSArIG9mZnNldDsKK30KSW5kZXg6
IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2Zl
ckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMv
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgi
CisKK3N0YXRpYyBDSUtlcm5lbCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9IG5pbDsKKworQGltcGxl
bWVudGF0aW9uIFdLR2FtbWFUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFsaXplCit7Cisg
ICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLR2FtbWFUcmFuc2ZlciIKKyAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NB
dHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAg
ICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IEdhbW1hIFRyYW5zZmVyIiwga0NJQXR0cmlidXRl
RmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1
YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCisgICAgICAgICAg
ICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwg
a0NJQXR0cmlidXRlRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRBbXBsaXR1ZGUiLAorICAgICAg
ICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEu
MF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0RXhwb25lbnQiLAorICAg
ICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRL
ZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0T2Zmc2V0IiwKKyAg
ICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhO
YW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0g
YXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYgKCFnYW1tYVRyYW5zZmVy
RmlsdGVyKSB7CisgICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9y
Q2xhc3M6W3NlbGYgY2xhc3NdXTsKKyAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVu
ZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLR2FtbWFUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAiY2lr
ZXJuZWwiXTsKKyAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENv
bnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGVdOworICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJ
S2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOworICAgICAgICBnYW1tYVRyYW5zZmVyRmls
dGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0
dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAg
Q0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlu
cHV0SW1hZ2VdOworICAgIHJldHVybiBbc2VsZiBhcHBseTpnYW1tYVRyYW5zZmVyRmlsdGVyLCBp
bnB1dFNhbXBsZXIsIGlucHV0QW1wbGl0dWRlLCBpbnB1dEV4cG9uZW50LCBpbnB1dE9mZnNldCwg
QCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBkZWZpbml0aW9uXSwgbmlsXTsKK30KKworQGVu
ZApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJu
ZWwgdmVjNCB0YWJsZVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUsIHZlYzQg
cmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJbmRleCkKK3sKKyAgICB2ZWM0IEMgPSBzYW1wbGUoaW1h
Z2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIGZsb2F0IGsgPSBkb3QocmdiYVNlbGVjdG9y
LCBDKSAqIG1heEluZGV4OworICAgIHZlYzQgcmVzID0gc2FtcGxlKHRhYmxlLCB2ZWMyKGsrMC41
LCAwLjUpKTsKKyAgICByZXR1cm4gcmVzOworfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6
L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
MCkKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCisKK0BpbnRlcmZhY2UgV0tM
aW5lYXJUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICAqaW5wdXRJbWFn
ZTsKKyAgICBOU051bWJlciAqaW5wdXRTbG9wZTsKKyAgICBOU051bWJlciAqaW5wdXRJbnRlcmNl
cHQ7Cit9CisKK0BlbmQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmls
dGVyUXVhcnR6Lm1tCShyZXZpc2lvbiAxMzEyMykKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzRmlsdGVyUXVhcnR6Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMyBAQAog
I2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIKICNpbXBvcnQgIldLRGlzdGFudExp
Z2h0RmlsdGVyLmgiCiAjaW1wb3J0ICJXS05vcm1hbE1hcEZpbHRlci5oIgorI2ltcG9ydCAiV0tB
cml0aG1ldGljRmlsdGVyLmgiCisjaW1wb3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCisj
aW1wb3J0ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLVGFibGVUcmFu
c2ZlckZpbHRlci5oIgorI2ltcG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCisjaW1w
b3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIuaCIKICNpbXBvcnQgIldLUG9pbnRMaWdodEZpbHRlci5oIgogI2ltcG9ydCAiV0tTcGVj
dWxhckxpZ2h0aW5nRmlsdGVyLmgiCiAjaW1wb3J0ICJXS1Nwb3RMaWdodEZpbHRlci5oIgpAQCAt
NjksNiArNzYsMjEgQEAgc3RhdGljIGlubGluZSBDSVZlY3RvciAqY2lWZWN0b3IoRmxvYXRQbwog
ICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6cG9pbnQueCgpIFk6cG9pbnQueSgpXTsK
IH0KIAorc3RhdGljIGlubGluZSBDSVZlY3RvciAqZ2V0VmVjdG9yRm9yQ2hhbm5lbChLQ0NoYW5u
ZWxTZWxlY3RvclR5cGUgY2hhbm5lbCl7CisgICAgc3dpdGNoKGNoYW5uZWwpeworICAgICAgICBj
YXNlIENTX1JFRDoKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MS4w
IFk6MC4wIFo6MC4wIFc6MC4wXTsKKyAgICAgICAgY2FzZSBDU19HUkVFTjoKKyAgICAgICAgICAg
IHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MS4wIFo6MC4wIFc6MC4wXTsgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBDU19CTFVFOgorICAgICAgICAgICAgcmV0dXJuIFtDSVZl
Y3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjoxLjAgVzowLjBdOworICAgICAgICBjYXNlIENT
X0FMUEhBOgorICAgICAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTow
LjAgWjowLjAgVzoxLjBdOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFtD
SVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjowLjAgVzowLjBdOworICAgIH0KK30KKwog
S0NhbnZhc0ZpbHRlclF1YXJ0ejo6S0NhbnZhc0ZpbHRlclF1YXJ0eigpIDogbV9maWx0ZXJDSUNv
bnRleHQoMCksIG1fZmlsdGVyQ0dMYXllcigwKSwgbV9pbWFnZXNCeU5hbWUoMCkKIHsKICAgICBt
X2ltYWdlc0J5TmFtZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CkBAIC0z
NDgsNiArMzcwLDEzMSBAQCBDSUZpbHRlciAqS0NhbnZhc0ZFQ29sb3JNYXRyaXhRdWFydHo6Omdl
CiAgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CiB9CiAKK3N0YXRpYyBDSUltYWdlICpnZW5J
bWFnZUZyb21UYWJsZShjb25zdCBWZWN0b3I8ZmxvYXQ+JiB0YWJsZSkKK3sKKyAgICBpbnQgbGVu
Z3RoID0gdGFibGUuc2l6ZSgpOworICAgIGludCBuQnl0ZXMgPSBsZW5ndGgqNCpzaXplb2YoZmxv
YXQpOworICAgIGZsb2F0ICp0YWJsZVN0b3JlID0gKGZsb2F0ICopbWFsbG9jKG5CeXRlcyk7Cisg
ICAgTlNEYXRhICpiaXRtYXBEYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5OnRhYmxl
U3RvcmUgbGVuZ3RoOm5CeXRlc107CisgICAgZm9yIChWZWN0b3I8ZmxvYXQ+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHRhYmxlLmJlZ2luKCk7IGl0ICE9IHRhYmxlLmVuZCgpOyBpdCsrKSB7CisgICAg
ICAgIGNvbnN0IGZsb2F0IHZhbHVlID0gKml0OworICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFs
dWU7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxlU3RvcmUr
KyA9IHZhbHVlOworICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7CisgICAgfQorICAgIHJl
dHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhCaXRtYXBEYXRhOmJpdG1hcERhdGEgYnl0ZXNQZXJSb3c6
bkJ5dGVzIHNpemU6Q0dTaXplTWFrZShsZW5ndGgsIDEpIGZvcm1hdDprQ0lGb3JtYXRSR0JBZiBj
b2xvclNwYWNlOm5pbF07Cit9CisKK3N0YXRpYyBDSUZpbHRlciAqZmlsdGVyRm9yQ29tcG9uZW50
RnVuYyhjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMpCit7CisgICAgQ0lG
aWx0ZXIgKmZpbHRlcjsKKyAgICBzd2l0Y2goZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1Rf
SURFTlRJVFk6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6
QCJXS0lkZW50aXR5VHJhbnNmZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENUX1RBQkxFOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1l
OkAiV0tUYWJsZVRyYW5zZmVyRmlsdGVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDVF9ESVNDUkVURToKKyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJX
aXRoTmFtZTpAIldLRGlzY3JldGVUcmFuc2ZlckZpbHRlciJdOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1RfTElORUFSOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiV0tMaW5lYXJUcmFuc2ZlciJdOyAgICAgICAgICAgIAorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfR0FNTUE6CisgICAgICAgICAgICBmaWx0ZXIg
PSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0dhbW1hVHJhbnNmZXIiXTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTlNMb2coQCJXQVJOSU5H
OiBVbmtub3duIGZ1bmN0aW9uIHR5cGUgZm9yIGZlQ29tcG9uZW50VHJhbnNmZXIiKTsKKyAgICAg
ICAgICAgIC8vYW5kIHRvIHByZXZlbnQgdGhlIGVudGlyZSBzdmcgZnJvbSBmYWlsaW5nIGFzIGEg
cmVzdWx0CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJX
S0lkZW50aXR5VHJhbnNmZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1
cm4gZmlsdGVyOworfQorCitzdGF0aWMgdm9pZCBzZXRQYXJhbWV0ZXJzRm9yQ29tcG9uZW50RnVu
YyhDSUZpbHRlciAqZmlsdGVyLCBjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1
bmMsIENJVmVjdG9yICpjaGFubmVsU2VsZWN0b3IpCit7CisgICAgc3dpdGNoKGZ1bmMudHlwZSkg
eworICAgICAgICBjYXNlIENUX1RBQkxFOgorICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpn
ZW5JbWFnZUZyb21UYWJsZShmdW5jLnRhYmxlVmFsdWVzKSBmb3JLZXk6QCJpbnB1dFRhYmxlIl07
CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOmNoYW5uZWxTZWxlY3RvciBmb3JLZXk6QCJp
bnB1dFNlbGVjdG9yIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9ESVND
UkVURToKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2VuSW1hZ2VGcm9tVGFibGUoZnVu
Yy50YWJsZVZhbHVlcykgZm9yS2V5OkAiaW5wdXRUYWJsZSJdOworICAgICAgICAgICAgW2ZpbHRl
ciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5wdXRTZWxlY3RvciJdOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfTElORUFSOgorICAgICAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZ1bmMuc2xvcGVdIGZvcktl
eTpAImlucHV0U2xvcGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpmdW5jLmludGVyY2VwdF0gZm9yS2V5OkAiaW5wdXRJbnRlcmNlcHQi
XTsgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9HQU1NQToK
KyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpm
dW5jLmFtcGxpdHVkZV0gZm9yS2V5OkAiaW5wdXRBbXBsaXR1ZGUiXTsKKyAgICAgICAgICAgIFtm
aWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLmV4cG9uZW50XSBm
b3JLZXk6QCJpbnB1dEV4cG9uZW50Il07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5vZmZzZXRdIGZvcktleTpAImlucHV0T2Zmc2V0
Il07ICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IC8vaWRlbnRpdHkgaGFzIG5vIGFyZ3MKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
c3RhdGljIENJRmlsdGVyICpnZXRGaWx0ZXJGb3JGdW5jKGNvbnN0IEtDQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgZnVuYywgQ0lJbWFnZSAqaW5wdXRJbWFnZSwgQ0lWZWN0b3IgKmNoYW5uZWxT
ZWxlY3RvcikgCit7CQorICAgIENJRmlsdGVyICpmaWx0ZXIgPSBmaWx0ZXJGb3JDb21wb25lbnRG
dW5jKGZ1bmMpOworICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOworICAgIAorICAgIHNldFBhcmFt
ZXRlcnNGb3JDb21wb25lbnRGdW5jKGZpbHRlciwgZnVuYywgY2hhbm5lbFNlbGVjdG9yKTsKKyAg
ICBbZmlsdGVyIHNldFZhbHVlOmlucHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOworICAg
IHJldHVybiBmaWx0ZXI7Cit9CisKK0NJRmlsdGVyICpLQ2FudmFzRkVDb21wb25lbnRUcmFuc2Zl
clF1YXJ0ejo6Z2V0RnVuY3Rpb25GaWx0ZXIoS0NDaGFubmVsU2VsZWN0b3JUeXBlIGNoYW5uZWws
IENJSW1hZ2UgKmlucHV0SW1hZ2UpIGNvbnN0Cit7CisgICAgc3dpdGNoKGNoYW5uZWwpCisgICAg
eworICAgICAgICBjYXNlIENTX1JFRDoKKyAgICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9y
RnVuYyhyZWRGdW5jdGlvbigpLCBpbnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5u
ZWwpKSB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07CisgICAgICAgIGNhc2UgQ1NfR1JFRU46
IAorICAgICAgICAgICAgcmV0dXJuIFtnZXRGaWx0ZXJGb3JGdW5jKGdyZWVuRnVuY3Rpb24oKSwg
aW5wdXRJbWFnZSwgZ2V0VmVjdG9yRm9yQ2hhbm5lbChjaGFubmVsKSkgdmFsdWVGb3JLZXk6QCJv
dXRwdXRJbWFnZSJdOworICAgICAgICBjYXNlIENTX0JMVUU6CisgICAgICAgICAgICByZXR1cm4g
W2dldEZpbHRlckZvckZ1bmMoYmx1ZUZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZv
ckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAgICAgICAg
Y2FzZSBDU19BTFBIQToKKyAgICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhhbHBo
YUZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZh
bHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorICAgIAorfQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9u
ZW50VHJhbnNmZXJRdWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0
ekZpbHRlcikgY29uc3QKK3sKKyAgICBbV0tDb21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107Cisg
ICAgW1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2Zl
ckZpbHRlciBjbGFzc107CisgICAgW1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107Cisg
ICAgW1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJG
aWx0ZXIgY2xhc3NdOworICAgIAorICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgS1dR
X0JMT0NLX0VYQ0VQVElPTlMKKyAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6
QCJXS0NvbXBvbmVudE1lcmdlIl07CisgICAgaWYgKCFmaWx0ZXIpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgW2ZpbHRlciBzZXREZWZhdWx0c107CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZSA9
IHF1YXJ0ekZpbHRlci0+aW5wdXRJbWFnZSh0aGlzKTsKKyAgICBGRV9RVUFSVFpfQ0hFQ0tfSU5Q
VVQoaW5wdXRJbWFnZSk7ICAgIAorICAgIAorICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2V0RnVuY3Rp
b25GaWx0ZXIoQ1NfUkVELCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNSIl07CisgICAg
W2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihDU19HUkVFTiwgaW5wdXRJbWFnZSkg
Zm9yS2V5OkAiaW5wdXRGdW5jRyJdOworICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2V0RnVuY3Rpb25G
aWx0ZXIoQ1NfQkxVRSwgaW5wdXRJbWFnZSkgZm9yS2V5OkAiaW5wdXRGdW5jQiJdOworICAgIFtm
aWx0ZXIgc2V0VmFsdWU6Z2V0RnVuY3Rpb25GaWx0ZXIoQ1NfQUxQSEEsIGlucHV0SW1hZ2UpIGZv
cktleTpAImlucHV0RnVuY0EiXTsKKyAgICAKKyAgICBGRV9RVUFSVFpfT1VUUFVUX1JFVFVSTjsK
KyAgICByZXR1cm4gbmlsOworfQorCiBDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9zaXRlUXVhcnR6
OjpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0ZXIpIGNvbnN0CiB7
CiAgICAgQ0lGaWx0ZXIgKmZpbHRlciA9IG5pbDsKQEAgLTM5MywyMSArNTQwLDYgQEAgQ0lGaWx0
ZXIgKktDYW52YXNGRUNvbXBvc2l0ZVF1YXJ0ejo6Z2V0QwogICAgIEZFX1FVQVJUWl9PVVRQVVRf
UkVUVVJOOwogfQogCi1zdGF0aWMgaW5saW5lIENJVmVjdG9yICpnZXRWZWN0b3JGb3JDaGFubmVs
KGludCBpZHgpewotICAgIHN3aXRjaChpZHgpewotICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJu
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDoxLjAgWTowLjAgWjowLjAgVzowLjBdOwotICAgIGNhc2Ug
MToKLSAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWToxLjAgWjowLjAg
VzowLjBdOyAgICAgICAgICAgIAotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIFtDSVZlY3Rv
ciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjoxLjAgVzowLjBdOwotICAgIGNhc2UgMzoKLSAgICAg
ICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjowLjAgVzoxLjBdOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6
MC4wIFo6MC4wIFc6MC4wXTsKLSAgICB9Ci19Ci0KIENJRmlsdGVyICpLQ2FudmFzRkVEaXNwbGFj
ZW1lbnRNYXBRdWFydHo6OmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZp
bHRlcikgY29uc3QKIHsKICAgICBDSUZpbHRlciAqZmlsdGVyID0gbmlsOwpJbmRleDoga2NhbnZh
cy9LQ2FudmFzRmlsdGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzRmlsdGVy
cy5jcHAJKHJldmlzaW9uIDEzMTIzKQorKysga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsMTMgQEAgc3RhdGljIFFUZXh0U3RyZWFtICZvcGVy
YXRvcjw8KFFUZXh0U3RyZQogc3RhdGljIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3Ry
ZWFtICZ0cywgY29uc3QgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uICZmdW5jKQogewogICAg
IHRzIDw8ICJbdHlwZT0iIDw8IGZ1bmMudHlwZSA8PCAiXSIgCi0gICAgICAgIDw8ICIgW3RhYmxl
IHZhbHVlcz0iIDw8IGZ1bmMudGFibGVWYWx1ZXMgPDwgIl0iCisgICAgICAgIDw8ICIgW3RhYmxl
IHZhbHVlcz0iOworICAgIFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGl0cj1mdW5jLnRh
YmxlVmFsdWVzLmJlZ2luKCk7CisgICAgdHMgPDwgKml0cisrOworICAgIGZvciAoOyBpdHIhPWZ1
bmMudGFibGVWYWx1ZXMuZW5kKCk7IGl0cisrKSB7CisgICAgICAgIHRzIDw8ICIgIiA8PCAqaXRy
Kys7CisgICAgfQorICAgIHRzIDw8ICJdIgogICAgICAgICA8PCAiIFtzbG9wZT0iIDw8IGZ1bmMu
c2xvcGUgPDwgIl0iCiAgICAgICAgIDw8ICIgW2ludGVyY2VwdD0iIDw8IGZ1bmMuaW50ZXJjZXB0
IDw8ICJdIgogICAgICAgICA8PCAiIFthbXBsaXR1ZGU9IiA8PCBmdW5jLmFtcGxpdHVkZSA8PCAi
XSIKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmgJKHJldmlzaW9uIDEzMTIzKQorKysga2NhbnZhcy9LQ2FudmFzRmls
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOCArMjE0LDkgQEAgdHlwZWRlZiBlbnVtIHsK
IAogc3RydWN0IEtDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbgogeworICAgIEtDQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbigpIDogdHlwZShDVF9JREVOVElUWSkge30KICAgICBLQ0NvbXBvbmVu
dFRyYW5zZmVyVHlwZSB0eXBlOwotICAgIFEzVmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZhbHVlczsK
KyAgICBWZWN0b3I8ZmxvYXQ+IHRhYmxlVmFsdWVzOwogICAgIGZsb2F0IHNsb3BlOwogICAgIGZs
b2F0IGludGVyY2VwdDsKICAgICBmbG9hdCBhbXBsaXR1ZGU7CkluZGV4OiBrc3ZnMi9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMxMjMp
CisrKyBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNiBAQCBLQ2FudmFzRkVDb21wb25lbnRUcmFuc2ZlciAq
U1ZHRkVDb21wb25lCiAgICAgICAgIGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZl
RnVuY0FUYWcpKQogICAgICAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldEFscGhhRnVuY3Rpb24o
c3RhdGljX2Nhc3Q8U1ZHRkVGdW5jQUVsZW1lbnRJbXBsICo+KG4pLT50cmFuc2ZlckZ1bmN0aW9u
KCkpOwogICAgIH0KLQogICAgIHJldHVybiBtX2ZpbHRlckVmZmVjdDsKIH0KIApJbmRleDoga3N2
ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1w
bC5jcHAJKHJldmlzaW9uIDEzMTIzKQorKysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsxMDUsNyBA
QCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50CiAgICAgICAgIGVsc2Ug
aWYodmFsdWUgPT0gImdhbW1hIikKICAgICAgICAgICAgIHR5cGUoKS0+c2V0QmFzZVZhbChTVkdf
RkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0dBTU1BKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKQorICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKQogICAgICAgICB0YWJsZVZhbHVlcygp
LT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlLnFzdHJpbmcoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpzbG9wZUF0dHIpCiAgICAgICAgIHNsb3BlKCktPnNldEJhc2VW
YWwodmFsdWUucXN0cmluZygpLnRvRG91YmxlKCkpOwpAQCAtMTI1LDExICsxMjUsMTcgQEAgS0ND
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNWR0NvbXBvbmVudAogewogICAgIEtDQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiBmdW5jOwogICAgIGZ1bmMudHlwZSA9IChLQ0NvbXBvbmVudFRyYW5z
ZmVyVHlwZSkodHlwZSgpLT5iYXNlVmFsKCkgLSAxKTsKKyAgICBpZiAoZnVuYy50eXBlIDwgMCB8
fCBmdW5jLnR5cGUgPiA0KQorICAgICAgICBmdW5jLnR5cGUgPSBDVF9JREVOVElUWTsKICAgICBm
dW5jLnNsb3BlID0gc2xvcGUoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMuaW50ZXJjZXB0ID0gaW50
ZXJjZXB0KCktPmJhc2VWYWwoKTsKICAgICBmdW5jLmFtcGxpdHVkZSA9IGFtcGxpdHVkZSgpLT5i
YXNlVmFsKCk7CiAgICAgZnVuYy5leHBvbmVudCA9IGV4cG9uZW50KCktPmJhc2VWYWwoKTsKICAg
ICBmdW5jLm9mZnNldCA9IG9mZnNldCgpLT5iYXNlVmFsKCk7CisgICAgU1ZHTnVtYmVyTGlzdElt
cGwgKm51bWJlcnMgPSB0YWJsZVZhbHVlcygpLT5iYXNlVmFsKCk7CisgICAgdW5zaWduZWQgaW50
IG5yID0gbnVtYmVycy0+bnVtYmVyT2ZJdGVtcygpOworICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBucjsgaSsrKQorICAgICAgICBmdW5jLnRhYmxlVmFsdWVzLmFwcGVuZChudW1iZXJz
LT5nZXRJdGVtKGkpLT52YWx1ZSgpKTsKICAgICByZXR1cm4gZnVuYzsKIH0KIApJbmRleDoga3N2
ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwu
aAkocmV2aXNpb24gMTMxMjMpCisrKyBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZUltcGwgKmF0dHIpOwogICAgICAgICAKICAgICAgICAgS0NDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKLQorICAgICAgICAKICAg
ICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
SW1wbD4gbV90eXBlOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlckxp
c3RJbXBsPiBtX3RhYmxlVmFsdWVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7955</attachid>
            <date>2006-04-25 06:18:58 -0700</date>
            <delta_ts>2006-04-25 08:08:58 -0700</delta_ts>
            <desc>This should sooo be the final patch</desc>
            <filename>fecomptrans.patch</filename>
            <type>text/plain</type>
            <size>105484</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9m
aWx0ZXJzLWNvbXB0cmFuLTAxLWItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDA0OCkKKysrIExh
eW91dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWItZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogS1JlbmRlcmluZ1BhaW50U2VydmVy
IHtpZD0iTXlHcmFkaWVudCIgW3R5cGU9TElORUFSLUdSQURJRU5UXSBbc3RvcHM9WygwLjAwLCNG
RjAwMDApLCAoMC4zMywjMDBGRjAwKSwgKDAuNjcsIzAwMDBGRiksICgxLjAwLCMwMDAwMDApXV0g
W2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19Ci1LQ2Fu
dmFzUmVzb3VyY2Uge2lkPSJJZGVudGl0eSIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1h
dCAoMCwwKSBzaXplIDF4MV0gW2VmZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXX0KLUtDYW52YXNS
ZXNvdXJjZSB7aWQ9IlRhYmxlIiBbdHlwZT1GSUxURVJdICBbYm91bmRpbmcgYm94PWF0ICgwLDAp
IHNpemUgMXgxXSBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2RlPTBdfQotS0NhbnZhc1Jlc291cmNl
IHtpZD0iTGluZWFyIiBbdHlwZT1GSUxURVJdICBbYm91bmRpbmcgYm94PWF0ICgwLDApIHNpemUg
MXgxXSBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2RlPTBdfQotS0NhbnZhc1Jlc291cmNlIHtpZD0i
R2FtbWEiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAxeDFdIFtl
ZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF19CitLQ2FudmFzUmVzb3VyY2Uge2lkPSJJZGVudGl0
eSIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4MV0gW2VmZmVj
dCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5ULVRSQU5TRkVS
XSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2MzB4NDIwIl0gW3JlZCBmdW5jPVt0eXBlPUlE
RU5USVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYmx1ZSBmdW5jPVt0eXBlPUlE
RU5USVRZXV0gW2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291cmNl
IHtpZD0iVGFibGUiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAx
eDFdIFtlZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVO
VC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249ImF0ICgwLDApIHNpemUgNjMweDQyMCJdIFtyZWQgZnVu
Yz1bdHlwZT1UQUJMRV0gW3RhYmxlIHZhbHVlcz0wLjAwIDAuMDAgMS4wMCAxLjAwXV0gW2dyZWVu
IGZ1bmM9W3R5cGU9VEFCTEVdIFt0YWJsZSB2YWx1ZXM9MS4wMCAxLjAwIDAuMDAgMC4wMF1dIFti
bHVlIGZ1bmM9W3R5cGU9VEFCTEVdIFt0YWJsZSB2YWx1ZXM9MC4wMCAxLjAwIDEuMDAgMC4wMF1d
IFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK0tDYW52YXNSZXNvdXJjZSB7aWQ9Ikxp
bmVhciIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4MV0gW2Vm
ZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5ULVRSQU5T
RkVSXSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2MzB4NDIwIl0gW3JlZCBmdW5jPVt0eXBl
PUxJTkVBUl0gW3Nsb3BlPTAuNTBdIFtpbnRlcmNlcHQ9MC4yNV1dIFtncmVlbiBmdW5jPVt0eXBl
PUxJTkVBUl0gW3Nsb3BlPTAuNTBdIFtpbnRlcmNlcHQ9MC4wMF1dIFtibHVlIGZ1bmM9W3R5cGU9
TElORUFSXSBbc2xvcGU9MC41MF0gW2ludGVyY2VwdD0wLjUwXV0gW2FscGhhIGZ1bmM9W3R5cGU9
SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291cmNlIHtpZD0iR2FtbWEiIFt0eXBlPUZJTFRFUl0g
IFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAxeDFdIFtlZmZlY3QgYm91bmRpbmcgYm94IG1v
ZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVOVC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249ImF0
ICgwLDApIHNpemUgNjMweDQyMCJdIFtyZWQgZnVuYz1bdHlwZT1HQU1NQV0gW2FtcGxpdHVkZT0y
LjAwXSBbZXhwb25lbnQ9NS4wMF0gW29mZnNldD0wLjAwXV0gW2dyZWVuIGZ1bmM9W3R5cGU9R0FN
TUFdIFthbXBsaXR1ZGU9Mi4wMF0gW2V4cG9uZW50PTMuMDBdIFtvZmZzZXQ9MC4wMF1dIFtibHVl
IGZ1bmM9W3R5cGU9R0FNTUFdIFthbXBsaXR1ZGU9Mi4wMF0gW2V4cG9uZW50PTEuMDBdIFtvZmZz
ZXQ9MC4wMF1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KIGxheWVyIGF0ICgwLDAp
IHNpemUgNDgweDM2MAogICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA0ODB4MzYwCiAgICAg
S0NhbnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoMC41MCwwLjUwKSBzaXplIDYyOXg0MTkKSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1EaXNjcmV0ZS5zdmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVy
LURpc2NyZXRlLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVD
b21wb25lbnRUcmFuc2Zlci1EaXNjcmV0ZS5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDgg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgc3Zn
IFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMSBCYXNpYy8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS1iYXNpYy5kdGQiPgorPHN2ZyB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdC
b3g9IjAgMCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+CisJPHRp
dGxlIGlkPSJ0ZXN0LXRpdGxlIj5mZUNvbXBvbmVudFRyYW5zZmVyIFRlc3QgLSBEaXNjcmV0ZTwv
dGl0bGU+CisJPGRlc2MgaWQ9InRlc3QtZGVzYyI+ZmVDb21wb25lbnRUcmFuc2ZlciB0ZXN0cy48
L2Rlc2M+CisJPGcgaWQ9InRlc3QtYm9keS1jb250ZW50Ij4KKwkJPHN2ZyB2ZXJzaW9uPSIxLjEi
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjE1IiB5PSI1IiB3aWR0aD0iNDUwIiBoZWlnaHQ9IjMw
MCIgdmlld0JveD0iMCAwIDY1MCA0MjAiPgorCQkJPGRlZnM+CisJCQkJPGxpbmVhckdyYWRpZW50
IGlkPSJNeUdyYWRpZW50IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEwIiB5
MT0iMCIgeDI9IjU5MCIgeTI9IjAiPgorCQkJCQk8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9
IiMwMGZmMDAiLz4KKwkJCQkJPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAwMDAwIi8+
CisJCQkJPC9saW5lYXJHcmFkaWVudD4KKwkJCQk8ZmlsdGVyIGlkPSJJZGVudGl0eSIgZmlsdGVy
VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiPgorCQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQkJCTxmZUZ1bmNSIHR5
cGU9ImlkZW50aXR5Ii8+CisJCQkJCTwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQk8L2ZpbHRl
cj4KKwkJCQk8ZmlsdGVyIGlkPSJEaXNjcmV0ZUJsYW5rIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+CisJCQkJ
CTxmZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCQkJPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRh
YmxlVmFsdWVzPSIwIi8+CisJCQkJCTwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQk8L2ZpbHRl
cj4KKwkJCQk8ZmlsdGVyIGlkPSJEaXNjcmV0ZUZ1bGwiIGZpbHRlclVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KKwkJCQkJ
PGZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5jRyB0eXBlPSJkaXNjcmV0ZSIgdGFi
bGVWYWx1ZXM9IjEiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCTwvZmlsdGVy
PgorCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlT3JkIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRp
bmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+CisJCQkJCTxm
ZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCQkJPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRhYmxl
VmFsdWVzPSIwLjAgMC4yNSAwLjUgMC43NSAxIDEiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRyYW5z
ZmVyPgorCQkJCTwvZmlsdGVyPgorCQkJPC9kZWZzPgorCQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ry
b2tlPSJibHVlIiB4PSIxIiB5PSIxIiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQxOCIvPgorCQkJPGcg
Zm9udC1zaXplPSIxNSIgZm9udC1mYW1pbHk9IlZlcmRhbmEiPgorCQkJCTxyZWN0IGZpbGw9Im5v
bmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjY0OCIgaGVpZ2h0PSI0MTgiLz4K
KwkJCQk8cmVjdCB4PSIyMCIgeT0iMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVy
bCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNJZGVudGl0eSkiLz4KKwkJCQk8dGV4dCB4PSIy
MCIgeT0iNzAiPnR5cGU6IGlkZW50aXR5PC90ZXh0PgorCQkJCTxyZWN0IHg9IjIwIiB5PSIxMTAi
IHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0i
dXJsKCNEaXNjcmV0ZUJsYW5rKSIvPgorCQkJCTx0ZXh0IHg9IjIwIiB5PSIxNzAiPnR5cGU6IGRp
c2NyZXRlIFswXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGJsYWNrPC90ZXh0PgorCQkJCTxyZWN0IHg9
IjIwIiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVu
dCkiIGZpbHRlcj0idXJsKCNEaXNjcmV0ZUZ1bGwpIi8+CisJCQkJPHRleHQgeD0iMjAiIHk9IjI3
MCI+dHlwZTogZGlzY3JldGUgWzFdIC0tIFJlc3VsdCBzaG91bGQgYmUgZ3JlZW48L3RleHQ+CisJ
CQkJPHJlY3QgeD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJs
KCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlT3JkKSIvPgorCQkJCTx0ZXh0IHg9
IjIwIiB5PSIzNzAiPnR5cGU6IGRpc2NyZXRlIFswLjAgMC4yNSAwLjUgMC43NSAxXSAtLSBSZXN1
bHQgc2hvdWxkIGJlIHF1YW50aXplZCBncmFkaWVudDwvdGV4dD4KKwkJCTwvZz4KKwkJPC9zdmc+
CisJPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9uZW50
VHJhbnNmZXItTGluZWFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItTGluZWFyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1MaW5l
YXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIge2lkPSJNeUdyYWRpZW50IiBbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtzdG9w
cz1bKDAuMDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2RlPTBd
IFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19CitLQ2FudmFzUmVzb3VyY2Uge2lkPSJJZGVu
dGl0eSIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4MV0gW2Vm
ZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5ULVRSQU5T
RkVSXSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIwIl0gW3JlZCBmdW5jPVt0eXBl
PUlERU5USVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYmx1ZSBmdW5jPVt0eXBl
PUlERU5USVRZXV0gW2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291
cmNlIHtpZD0iRGlzY3JldGVCbGFuayIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAo
MCwwKSBzaXplIDF4MV0gW2VmZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5
cGU9Q09NUE9ORU5ULVRSQU5TRkVSXSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIw
Il0gW3JlZCBmdW5jPVt0eXBlPUlERU5USVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9TElORUFSXSBb
c2xvcGU9MS4wMF0gW2ludGVyY2VwdD0wLjAwXV0gW2JsdWUgZnVuYz1bdHlwZT1JREVOVElUWV1d
IFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK0tDYW52YXNSZXNvdXJjZSB7aWQ9IkRp
c2NyZXRlRnVsbCIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4
MV0gW2VmZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5U
LVRSQU5TRkVSXSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIwIl0gW3JlZCBmdW5j
PVt0eXBlPUlERU5USVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9TElORUFSXSBbc2xvcGU9LTEuMDBd
IFtpbnRlcmNlcHQ9MS4wMF1dIFtibHVlIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYWxwaGEgZnVu
Yz1bdHlwZT1JREVOVElUWV1dXV19CitLQ2FudmFzUmVzb3VyY2Uge2lkPSJEaXNjcmV0ZU9yZCIg
W3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4MV0gW2VmZmVjdCBi
b3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5ULVRSQU5TRkVSXSAg
W3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIwIl0gW3JlZCBmdW5jPVt0eXBlPUlERU5U
SVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9TElORUFSXSBbc2xvcGU9MC41MF0gW2ludGVyY2VwdD0w
LjI1XV0gW2JsdWUgZnVuYz1bdHlwZT1JREVOVElUWV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5U
SVRZXV1dXX0KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgS0NhbnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoMC44Myww
LjgzKSBzaXplIDEwODEuNjd4Njk4LjMzCisgICAgICBLQ2FudmFzQ29udGFpbmVyIHtnfSBhdCAo
MC44MywwLjgzKSBzaXplIDEwODEuNjd4Njk4LjMzCisgICAgICAgIEtDYW52YXNDb250YWluZXIg
e3N2Z30gYXQgKDAuNTgsOC4yNykgc2l6ZSA3NDguODV4NDgzLjQ2CisgICAgICAgICAgS0NhbnZh
c0l0ZW0ge3JlY3R9IGF0ICgwLjU4LDguMjcpIHNpemUgNzQ4Ljg1eDQ4My40NiBbc3Ryb2tlPXtb
dHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW2RhdGE9Ik0xLjAwLDEuMDBMNjQ5LjAwLDEu
MDBMNjQ5LjAwLDQxOS4wMEwxLjAwLDQxOS4wMCJdCisgICAgICAgICAgS0NhbnZhc0NvbnRhaW5l
ciB7Z30gYXQgKDAuNTgsOC4yNykgc2l6ZSA3NDguODV4NDgzLjQ2CisgICAgICAgICAgICBLQ2Fu
dmFzSXRlbSB7cmVjdH0gYXQgKDAuNTgsOC4yNykgc2l6ZSA3NDguODV4NDgzLjQ2IFtzdHJva2U9
e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDBGRl19XSBbZGF0YT0iTTEuMDAsMS4wMEw2NDkuMDAs
MS4wMEw2NDkuMDAsNDE5LjAwTDEuMDAsNDE5LjAwIl0KKyAgICAgICAgICAgIEtDYW52YXNJdGVt
IHtyZWN0fSBhdCAoMjMuMDgsMTkuMjMpIHNpemUgNjY5LjIzeDQ2LjE1IFtmaWxsPXtbdHlwZT1M
SU5FQVItR1JBRElFTlRdIFtzdG9wcz1bKDAuMDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0g
W2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19XSBbZmls
dGVyPSNJZGVudGl0eV0gW2RhdGE9Ik0yMC4wMCwxMC4wMEw2MDAuMDAsMTAuMDBMNjAwLjAwLDUw
LjAwTDIwLjAwLDUwLjAwIl0KKyAgICAgICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgw
LDApIHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDEwMXgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEw
MTogInR5cGU6IGlkZW50aXR5IgorICAgICAgICAgICAgS0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgy
My4wOCwxMzQuNjIpIHNpemUgNjY5LjIzeDQ2LjE1IFtmaWxsPXtbdHlwZT1MSU5FQVItR1JBRElF
TlRdIFtzdG9wcz1bKDAuMDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJv
eCBtb2RlPTBdIFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19XSBbZmlsdGVyPSNEaXNjcmV0
ZUJsYW5rXSBbZGF0YT0iTTIwLjAwLDExMC4wMEw2MDAuMDAsMTEwLjAwTDYwMC4wMCwxNTAuMDBM
MjAuMDAsMTUwLjAwIl0KKyAgICAgICAgICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgwLDAp
IHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDQ1MngxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1Mjog
InR5cGU6IGxpbmVhciBzbG9wZT0xIGludGVyY2VwdD0wIC0tIFJlc3VsdCBzaG91bGQgYmUgaWRl
bnRpdHkiCisgICAgICAgICAgICBLQ2FudmFzSXRlbSB7cmVjdH0gYXQgKDIzLjA4LDI1MCkgc2l6
ZSA2NjkuMjN4NDYuMTUgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW3N0b3BzPVsoMC4w
MCwjMDBGRjAwKSwgKDEuMDAsIzAwMDAwMCldXSBbYm91bmRpbmcgYm94IG1vZGU9MF0gW3N0YXJ0
PSgxMCwwKV0gW2VuZD0oNTkwLDApXX1dIFtmaWx0ZXI9I0Rpc2NyZXRlRnVsbF0gW2RhdGE9Ik0y
MC4wMCwyMTAuMDBMNjAwLjAwLDIxMC4wMEw2MDAuMDAsMjUwLjAwTDIwLjAwLDI1MC4wMCJdCisg
ICAgICAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NXgxOAorICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0Njl4MTgKKyAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0Njk6ICJ0eXBlOiBsaW5lYXIgc2xv
cGU9LTEgaW50ZXJjZXB0PTAgLS0gU2hvdWxkIGludmVydCB0aGUgZ3JhZGllbnQiCisgICAgICAg
ICAgICBLQ2FudmFzSXRlbSB7cmVjdH0gYXQgKDIzLjA4LDM2NS4zOCkgc2l6ZSA2NjkuMjN4NDYu
MTUgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW3N0b3BzPVsoMC4wMCwjMDBGRjAwKSwg
KDEuMDAsIzAwMDAwMCldXSBbYm91bmRpbmcgYm94IG1vZGU9MF0gW3N0YXJ0PSgxMCwwKV0gW2Vu
ZD0oNTkwLDApXX1dIFtmaWx0ZXI9I0Rpc2NyZXRlT3JkXSBbZGF0YT0iTTIwLjAwLDMxMC4wMEw2
MDAuMDAsMzEwLjAwTDYwMC4wMCwzNTAuMDBMMjAuMDAsMzUwLjAwIl0KKyAgICAgICAgICAgIFJl
bmRlclNWR1RleHQge3RleHR9IGF0ICgwLDApIHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU5OXgxOAorICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDU5OTogInR5cGU6IGxpbmVhciBzbG9wZT0wLjUgaW50ZXJj
ZXB0PTAuMjUgLS0gUmVzdWx0IHNob3VsZCBiZSBsZXNzIGV4dHJlbWUgZ3JhZGllbnQiCkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItR2FtbWEuc3ZnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1H
YW1tYS5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9u
ZW50VHJhbnNmZXItR2FtbWEuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMg
Ii0vL1czQy8vRFREIFNWRyAxLjEgQmFzaWMvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhp
Y3MvU1ZHLzEuMS9EVEQvc3ZnMTEtYmFzaWMuZHRkIj4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayIgaWQ9InN2Zy1yb290IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAg
NDgwIDM2MCIgdmVyc2lvbj0iMS4xIiBiYXNlUHJvZmlsZT0iYmFzaWMiPgorCTx0aXRsZSBpZD0i
dGVzdC10aXRsZSI+ZmVDb21wb25lbnRUcmFuc2ZlciBUZXN0IC0gR2FtbWE8L3RpdGxlPgorCTxk
ZXNjIGlkPSJ0ZXN0LWRlc2MiPmZlQ29tcG9uZW50VHJhbnNmZXIgdGVzdHMuPC9kZXNjPgorCTxn
IGlkPSJ0ZXN0LWJvZHktY29udGVudCI+CisJCTxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIiB4PSIxNSIgeT0iNSIgd2lkdGg9IjQ1MCIgaGVpZ2h0PSIzMDAiIHZpZXdCb3g9
IjAgMCA2NTAgNDIwIj4KKwkJCTxkZWZzPgorCQkJCTxsaW5lYXJHcmFkaWVudCBpZD0iTXlHcmFk
aWVudCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMCIgeTE9IjAiIHgyPSI1
OTAiIHkyPSIwIj4KKwkJCQkJPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMDBmZjAwIi8+
CisJCQkJCTxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPgorCQkJCTwvbGlu
ZWFyR3JhZGllbnQ+CisJCQkJPGZpbHRlciBpZD0iSWRlbnRpdHkiIGZpbHRlclVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4K
KwkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5jUiB0eXBlPSJpZGVudGl0
eSIvPgorCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJPC9maWx0ZXI+CisJCQkJPGZp
bHRlciBpZD0iR2FtbWFCbGFuayIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIw
JSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgorCQkJCQk8ZmVDb21wb25lbnRU
cmFuc2Zlcj4KKwkJCQkJCTxmZUZ1bmNHIHR5cGU9ImdhbW1hIiBhbXBsaXR1ZGU9IjEiIGV4cG9u
ZW50PSIxIiBvZmZzZXQ9IjAiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCTwv
ZmlsdGVyPgorCQkJCTxmaWx0ZXIgaWQ9IkdhbW1hRnVsbCIgZmlsdGVyVW5pdHM9Im9iamVjdEJv
dW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgorCQkJ
CQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQkJCTxmZUZ1bmNHIHR5cGU9ImdhbW1hIiBhbXBs
aXR1ZGU9IjEiIGV4cG9uZW50PSIwLjUiIG9mZnNldD0iMCIvPgorCQkJCQk8L2ZlQ29tcG9uZW50
VHJhbnNmZXI+CisJCQkJPC9maWx0ZXI+CisJCQkJPGZpbHRlciBpZD0iR2FtbWFPcmQiIGZpbHRl
clVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVp
Z2h0PSIxMDAlIj4KKwkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5jRyB0
eXBlPSJnYW1tYSIgYW1wbGl0dWRlPSIxIiBleHBvbmVudD0iMiIgb2Zmc2V0PSIwIi8+CisJCQkJ
CTwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQk8L2ZpbHRlcj4KKwkJCTwvZGVmcz4KKwkJCTxy
ZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjY0OCIgaGVp
Z2h0PSI0MTgiLz4KKwkJCTxnIGZvbnQtc2l6ZT0iMTUiIGZvbnQtZmFtaWx5PSJWZXJkYW5hIj4K
KwkJCQk8cmVjdCBmaWxsPSJub25lIiBzdHJva2U9ImJsdWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI2
NDgiIGhlaWdodD0iNDE4Ii8+CisJCQkJPHJlY3QgeD0iMjAiIHk9IjEwIiB3aWR0aD0iNTgwIiBo
ZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015R3JhZGllbnQpIiBmaWx0ZXI9InVybCgjSWRlbnRpdHkp
Ii8+CisJCQkJPHRleHQgeD0iMjAiIHk9IjcwIj50eXBlOiBpZGVudGl0eTwvdGV4dD4KKwkJCQk8
cmVjdCB4PSIyMCIgeT0iMTEwIiB3aWR0aD0iNTgwIiBoZWlnaHQ9IjQwIiBmaWxsPSJ1cmwoI015
R3JhZGllbnQpIiBmaWx0ZXI9InVybCgjR2FtbWFCbGFuaykiLz4KKwkJCQk8dGV4dCB4PSIyMCIg
eT0iMTcwIj50eXBlOiBnYW1tYSBhbXBsaXR1ZGU9MSBleHBvbmVudD0xIG9mZnNldD0wIC0tIFJl
c3VsdCBzaG91bGQgYmUgaWRlbnRpdHk8L3RleHQ+CisJCQkJPHJlY3QgeD0iMjAiIHk9IjIxMCIg
d2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1
cmwoI0dhbW1hRnVsbCkiLz4KKwkJCQk8dGV4dCB4PSIyMCIgeT0iMjcwIj50eXBlOiBnYW1tYSBh
bXBsaXR1ZGU9MSBleHBvbmVudD0wLjUgb2Zmc2V0PTAgLS0gUmVzdWx0IHNob3VsZCBiZTwvdGV4
dD4KKwkJCQk8dGV4dCB4PSIyMCIgeT0iMjkwIj5kZWxheWVkIGZhbGxvZmYgaW4gZ3JhZGllbnQ8
L3RleHQ+CisJCQkJPHJlY3QgeD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIg
ZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0dhbW1hT3JkKSIvPgorCQkJCTx0
ZXh0IHg9IjIwIiB5PSIzNzAiPnR5cGU6IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50PTIgb2Zm
c2V0PTAgLS0gUmVzdWx0IHNob3VsZCBjb21wcmVzczwvdGV4dD4KKwkJCQk8dGV4dCB4PSIyMCIg
eT0iMzkwIj50aGUgZ3JhZGllbnQ8L3RleHQ+CisJCQk8L2c+CisJCTwvc3ZnPgorCTwvZz4KKzwv
c3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVyLVRh
YmxlLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9uZW50
VHJhbnNmZXItVGFibGUuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9mZUNvbXBvbmVudFRyYW5zZmVyLVRhYmxlLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBz
dmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xIEJhc2ljLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLWJhc2ljLmR0ZCI+Cis8c3ZnIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGxpbmsiIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmll
d0JveD0iMCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9ImJhc2ljIj4KKwk8
dGl0bGUgaWQ9InRlc3QtdGl0bGUiPmZlQ29tcG9uZW50VHJhbnNmZXIgVGVzdCAtIFRhYmxlPC90
aXRsZT4KKwk8ZGVzYyBpZD0idGVzdC1kZXNjIj5mZUNvbXBvbmVudFRyYW5zZmVyIHRlc3RzLjwv
ZGVzYz4KKwk8ZyBpZD0idGVzdC1ib2R5LWNvbnRlbnQiPgorCQk8c3ZnIHZlcnNpb249IjEuMSIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94bGluayIgeD0iMTUiIHk9IjUiIHdpZHRoPSI0NTAiIGhlaWdodD0iMzAw
IiB2aWV3Qm94PSIwIDAgNjUwIDQyMCI+CisJCQk8ZGVmcz4KKwkJCQk8bGluZWFyR3JhZGllbnQg
aWQ9Ik15R3JhZGllbnQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTAiIHkx
PSIwIiB4Mj0iNTkwIiB5Mj0iMCI+CisJCQkJCTxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0i
IzAwZmYwMCIvPgorCQkJCQk8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz4K
KwkJCQk8L2xpbmVhckdyYWRpZW50PgorCQkJCTxmaWx0ZXIgaWQ9IklkZW50aXR5IiBmaWx0ZXJV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSI+CisJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCQkJPGZlRnVuY1IgdHlw
ZT0iaWRlbnRpdHkiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCTwvZmlsdGVy
PgorCQkJCTxmaWx0ZXIgaWQ9IlRhYmxlQmxhbmsiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGlu
Z0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KKwkJCQkJPGZl
Q29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5jRyB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1
ZXM9IjAiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCTwvZmlsdGVyPgorCQkJ
CTxmaWx0ZXIgaWQ9IlRhYmxlRnVsbCIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4
PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgorCQkJCQk8ZmVDb21wb25l
bnRUcmFuc2Zlcj4KKwkJCQkJCTxmZUZ1bmNHIHR5cGU9InRhYmxlIiB0YWJsZVZhbHVlcz0iMSIv
PgorCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJPC9maWx0ZXI+CisJCQkJPGZpbHRl
ciBpZD0iVGFibGVPcmQiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9
IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KKwkJCQkJPGZlQ29tcG9uZW50VHJhbnNm
ZXI+CisJCQkJCQk8ZmVGdW5jRyB0eXBlPSJ0YWJsZSIgdGFibGVWYWx1ZXM9IjAgMCAxIDEiLz4K
KwkJCQkJPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCTwvZmlsdGVyPgorCQkJPC9kZWZzPgor
CQkJPHJlY3QgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIxIiB3aWR0aD0iNjQ4
IiBoZWlnaHQ9IjQxOCIvPgorCQkJPGcgZm9udC1zaXplPSIxNSIgZm9udC1mYW1pbHk9IlZlcmRh
bmEiPgorCQkJCTxyZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lk
dGg9IjY0OCIgaGVpZ2h0PSI0MTgiLz4KKwkJCQk8cmVjdCB4PSIyMCIgeT0iMTAiIHdpZHRoPSI1
ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNJZGVu
dGl0eSkiLz4KKwkJCQk8dGV4dCB4PSIyMCIgeT0iNzAiPnR5cGU6IGlkZW50aXR5PC90ZXh0Pgor
CQkJCTxyZWN0IHg9IjIwIiB5PSIxMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVy
bCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZUJsYW5rKSIvPgorCQkJCTx0ZXh0IHg9
IjIwIiB5PSIxNzAiPnR5cGU6IHRhYmxlIFswXSAtLSBSZXN1bHQgc2hvdWxkIGJlIGJsYWNrPC90
ZXh0PgorCQkJCTxyZWN0IHg9IjIwIiB5PSIyMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZp
bGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNUYWJsZUZ1bGwpIi8+CisJCQkJPHRl
eHQgeD0iMjAiIHk9IjI3MCI+dHlwZTogdGFibGUgWzFdIC0tIFJlc3VsdCBzaG91bGQgYmUgZ3Jl
ZW48L3RleHQ+CisJCQkJPHJlY3QgeD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0
MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI1RhYmxlT3JkKSIvPgorCQkJ
CTx0ZXh0IHg9IjIwIiB5PSIzNzAiPnR5cGU6IHRhYmxlIFswIDAgMSAxXSAtLSBSZXN1bHQgc2hv
dWxkIGJlIGNvbXByZXNzZWQgZ3JhZGllbnQ8L3RleHQ+CisJCQk8L2c+CisJCTwvc3ZnPgorCTwv
Zz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5z
ZmVyLURpc2NyZXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItRGlzY3JldGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVyLURpc2Ny
ZXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorS1JlbmRlcmlu
Z1BhaW50U2VydmVyIHtpZD0iTXlHcmFkaWVudCIgW3R5cGU9TElORUFSLUdSQURJRU5UXSBbc3Rv
cHM9WygwLjAwLCMwMEZGMDApLCAoMS4wMCwjMDAwMDAwKV1dIFtib3VuZGluZyBib3ggbW9kZT0w
XSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1OTAsMCldfQorS0NhbnZhc1Jlc291cmNlIHtpZD0iSWRl
bnRpdHkiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAxeDFdIFtl
ZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVOVC1UUkFO
U0ZFUl0gIFtzdWJyZWdpb249ImF0ICgwLDApIHNpemUgNjUweDQyMCJdIFtyZWQgZnVuYz1bdHlw
ZT1JREVOVElUWV1dIFtncmVlbiBmdW5jPVt0eXBlPUlERU5USVRZXV0gW2JsdWUgZnVuYz1bdHlw
ZT1JREVOVElUWV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK0tDYW52YXNSZXNv
dXJjZSB7aWQ9IkRpc2NyZXRlQmxhbmsiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQg
KDAsMCkgc2l6ZSAxeDFdIFtlZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0
eXBlPUNPTVBPTkVOVC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249ImF0ICgwLDApIHNpemUgNjUweDQy
MCJdIFtyZWQgZnVuYz1bdHlwZT1JREVOVElUWV1dIFtncmVlbiBmdW5jPVt0eXBlPURJU0NSRVRF
XSBbdGFibGUgdmFsdWVzPTAuMDBdXSBbYmx1ZSBmdW5jPVt0eXBlPUlERU5USVRZXV0gW2FscGhh
IGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291cmNlIHtpZD0iRGlzY3JldGVG
dWxsIiBbdHlwZT1GSUxURVJdICBbYm91bmRpbmcgYm94PWF0ICgwLDApIHNpemUgMXgxXSBbZWZm
ZWN0IGJvdW5kaW5nIGJveCBtb2RlPTBdIFtlZmZlY3RzPVtbdHlwZT1DT01QT05FTlQtVFJBTlNG
RVJdICBbc3VicmVnaW9uPSJhdCAoMCwwKSBzaXplIDY1MHg0MjAiXSBbcmVkIGZ1bmM9W3R5cGU9
SURFTlRJVFldXSBbZ3JlZW4gZnVuYz1bdHlwZT1ESVNDUkVURV0gW3RhYmxlIHZhbHVlcz0xLjAw
XV0gW2JsdWUgZnVuYz1bdHlwZT1JREVOVElUWV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZ
XV1dXX0KK0tDYW52YXNSZXNvdXJjZSB7aWQ9IkRpc2NyZXRlT3JkIiBbdHlwZT1GSUxURVJdICBb
Ym91bmRpbmcgYm94PWF0ICgwLDApIHNpemUgMXgxXSBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2Rl
PTBdIFtlZmZlY3RzPVtbdHlwZT1DT01QT05FTlQtVFJBTlNGRVJdICBbc3VicmVnaW9uPSJhdCAo
MCwwKSBzaXplIDY1MHg0MjAiXSBbcmVkIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbZ3JlZW4gZnVu
Yz1bdHlwZT1ESVNDUkVURV0gW3RhYmxlIHZhbHVlcz0wLjAwIDAuMjUgMC41MCAwLjc1IDEuMDAg
MS4wMF1dIFtibHVlIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYWxwaGEgZnVuYz1bdHlwZT1JREVO
VElUWV1dXV19CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIEtDYW52YXNDb250YWluZXIge3N2Z30gYXQgKDAuODMs
MC44Mykgc2l6ZSAxMDgxLjY3eDY5OC4zMworICAgICAgS0NhbnZhc0NvbnRhaW5lciB7Z30gYXQg
KDAuODMsMC44Mykgc2l6ZSAxMDgxLjY3eDY5OC4zMworICAgICAgICBLQ2FudmFzQ29udGFpbmVy
IHtzdmd9IGF0ICgwLjU4LDguMjcpIHNpemUgNzQ4Ljg1eDQ4My40NgorICAgICAgICAgIEtDYW52
YXNJdGVtIHtyZWN0fSBhdCAoMC41OCw4LjI3KSBzaXplIDc0OC44NXg0ODMuNDYgW3N0cm9rZT17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFtkYXRhPSJNMS4wMCwxLjAwTDY0OS4wMCwx
LjAwTDY0OS4wMCw0MTkuMDBMMS4wMCw0MTkuMDAiXQorICAgICAgICAgIEtDYW52YXNDb250YWlu
ZXIge2d9IGF0ICgwLjU4LDguMjcpIHNpemUgNzQ4Ljg1eDQ4My40NgorICAgICAgICAgICAgS0Nh
bnZhc0l0ZW0ge3JlY3R9IGF0ICgwLjU4LDguMjcpIHNpemUgNzQ4Ljg1eDQ4My40NiBbc3Ryb2tl
PXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZdfV0gW2RhdGE9Ik0xLjAwLDEuMDBMNjQ5LjAw
LDEuMDBMNjQ5LjAwLDQxOS4wMEwxLjAwLDQxOS4wMCJdCisgICAgICAgICAgICBLQ2FudmFzSXRl
bSB7cmVjdH0gYXQgKDIzLjA4LDE5LjIzKSBzaXplIDY2OS4yM3g0Ni4xNSBbZmlsbD17W3R5cGU9
TElORUFSLUdSQURJRU5UXSBbc3RvcHM9WygwLjAwLCMwMEZGMDApLCAoMS4wMCwjMDAwMDAwKV1d
IFtib3VuZGluZyBib3ggbW9kZT0wXSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1OTAsMCldfV0gW2Zp
bHRlcj0jSWRlbnRpdHldIFtkYXRhPSJNMjAuMDAsMTAuMDBMNjAwLjAwLDEwLjAwTDYwMC4wMCw1
MC4wMEwyMC4wMCw1MC4wMCJdCisgICAgICAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAo
MCwwKSBzaXplIDc4NXgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxMDF4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
MDE6ICJ0eXBlOiBpZGVudGl0eSIKKyAgICAgICAgICAgIEtDYW52YXNJdGVtIHtyZWN0fSBhdCAo
MjMuMDgsMTM0LjYyKSBzaXplIDY2OS4yM3g0Ni4xNSBbZmlsbD17W3R5cGU9TElORUFSLUdSQURJ
RU5UXSBbc3RvcHM9WygwLjAwLCMwMEZGMDApLCAoMS4wMCwjMDAwMDAwKV1dIFtib3VuZGluZyBi
b3ggbW9kZT0wXSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1OTAsMCldfV0gW2ZpbHRlcj0jRGlzY3Jl
dGVCbGFua10gW2RhdGE9Ik0yMC4wMCwxMTAuMDBMNjAwLjAwLDExMC4wMEw2MDAuMDAsMTUwLjAw
TDIwLjAwLDE1MC4wMCJdCisgICAgICAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCww
KSBzaXplIDc4NXgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAzMjN4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMjM6
ICJ0eXBlOiBkaXNjcmV0ZSBbMF0gLS0gUmVzdWx0IHNob3VsZCBiZSBibGFjayIKKyAgICAgICAg
ICAgIEtDYW52YXNJdGVtIHtyZWN0fSBhdCAoMjMuMDgsMjUwKSBzaXplIDY2OS4yM3g0Ni4xNSBb
ZmlsbD17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbc3RvcHM9WygwLjAwLCMwMEZGMDApLCAoMS4w
MCwjMDAwMDAwKV1dIFtib3VuZGluZyBib3ggbW9kZT0wXSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1
OTAsMCldfV0gW2ZpbHRlcj0jRGlzY3JldGVGdWxsXSBbZGF0YT0iTTIwLjAwLDIxMC4wMEw2MDAu
MDAsMjEwLjAwTDYwMC4wMCwyNTAuMDBMMjAuMDAsMjUwLjAwIl0KKyAgICAgICAgICAgIFJlbmRl
clNWR1RleHQge3RleHR9IGF0ICgwLDApIHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMyNngxOAorICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDMyNjogInR5cGU6IGRpc2NyZXRlIFsxXSAtLSBSZXN1bHQgc2hv
dWxkIGJlIGdyZWVuIgorICAgICAgICAgICAgS0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgyMy4wOCwz
NjUuMzgpIHNpemUgNjY5LjIzeDQ2LjE1IFtmaWxsPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtz
dG9wcz1bKDAuMDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2Rl
PTBdIFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19XSBbZmlsdGVyPSNEaXNjcmV0ZU9yZF0g
W2RhdGE9Ik0yMC4wMCwzMTAuMDBMNjAwLjAwLDMxMC4wMEw2MDAuMDAsMzUwLjAwTDIwLjAwLDM1
MC4wMCJdCisgICAgICAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwwKSBzaXplIDc4
NXgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1NjJ4
MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1NjI6ICJ0eXBlOiBk
aXNjcmV0ZSBbMC4wIDAuMjUgMC41IDAuNzUgMV0gLS0gUmVzdWx0IHNob3VsZCBiZSBxdWFudGl6
ZWQgZ3JhZGllbnQiCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9uZW50VHJh
bnNmZXItVGFibGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9j
dXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1UYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItVGFibGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXIge2lkPSJNeUdyYWRpZW50IiBbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtzdG9wcz1bKDAu
MDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFy
dD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19CitLQ2FudmFzUmVzb3VyY2Uge2lkPSJJZGVudGl0eSIg
W3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXplIDF4MV0gW2VmZmVjdCBi
b3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9ORU5ULVRSQU5TRkVSXSAg
W3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIwIl0gW3JlZCBmdW5jPVt0eXBlPUlERU5U
SVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYmx1ZSBmdW5jPVt0eXBlPUlERU5U
SVRZXV0gW2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291cmNlIHtp
ZD0iVGFibGVCbGFuayIgW3R5cGU9RklMVEVSXSAgW2JvdW5kaW5nIGJveD1hdCAoMCwwKSBzaXpl
IDF4MV0gW2VmZmVjdCBib3VuZGluZyBib3ggbW9kZT0wXSBbZWZmZWN0cz1bW3R5cGU9Q09NUE9O
RU5ULVRSQU5TRkVSXSAgW3N1YnJlZ2lvbj0iYXQgKDAsMCkgc2l6ZSA2NTB4NDIwIl0gW3JlZCBm
dW5jPVt0eXBlPUlERU5USVRZXV0gW2dyZWVuIGZ1bmM9W3R5cGU9VEFCTEVdIFt0YWJsZSB2YWx1
ZXM9MC4wMF1dIFtibHVlIGZ1bmM9W3R5cGU9SURFTlRJVFldXSBbYWxwaGEgZnVuYz1bdHlwZT1J
REVOVElUWV1dXV19CitLQ2FudmFzUmVzb3VyY2Uge2lkPSJUYWJsZUZ1bGwiIFt0eXBlPUZJTFRF
Ul0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAxeDFdIFtlZmZlY3QgYm91bmRpbmcgYm94
IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVOVC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249
ImF0ICgwLDApIHNpemUgNjUweDQyMCJdIFtyZWQgZnVuYz1bdHlwZT1JREVOVElUWV1dIFtncmVl
biBmdW5jPVt0eXBlPVRBQkxFXSBbdGFibGUgdmFsdWVzPTEuMDBdXSBbYmx1ZSBmdW5jPVt0eXBl
PUlERU5USVRZXV0gW2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291
cmNlIHtpZD0iVGFibGVPcmQiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkg
c2l6ZSAxeDFdIFtlZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNP
TVBPTkVOVC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249ImF0ICgwLDApIHNpemUgNjUweDQyMCJdIFty
ZWQgZnVuYz1bdHlwZT1JREVOVElUWV1dIFtncmVlbiBmdW5jPVt0eXBlPVRBQkxFXSBbdGFibGUg
dmFsdWVzPTAuMDAgMC4wMCAxLjAwIDEuMDBdXSBbYmx1ZSBmdW5jPVt0eXBlPUlERU5USVRZXV0g
W2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBLQ2FudmFzQ29u
dGFpbmVyIHtzdmd9IGF0ICgwLjgzLDAuODMpIHNpemUgMTA4MS42N3g2OTguMzMKKyAgICAgIEtD
YW52YXNDb250YWluZXIge2d9IGF0ICgwLjgzLDAuODMpIHNpemUgMTA4MS42N3g2OTguMzMKKyAg
ICAgICAgS0NhbnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoMC41OCw4LjI3KSBzaXplIDc0OC44NXg0
ODMuNDYKKyAgICAgICAgICBLQ2FudmFzSXRlbSB7cmVjdH0gYXQgKDAuNTgsOC4yNykgc2l6ZSA3
NDguODV4NDgzLjQ2IFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDBGRl19XSBbZGF0
YT0iTTEuMDAsMS4wMEw2NDkuMDAsMS4wMEw2NDkuMDAsNDE5LjAwTDEuMDAsNDE5LjAwIl0KKyAg
ICAgICAgICBLQ2FudmFzQ29udGFpbmVyIHtnfSBhdCAoMC41OCw4LjI3KSBzaXplIDc0OC44NXg0
ODMuNDYKKyAgICAgICAgICAgIEtDYW52YXNJdGVtIHtyZWN0fSBhdCAoMC41OCw4LjI3KSBzaXpl
IDc0OC44NXg0ODMuNDYgW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMEZGXX1dIFtk
YXRhPSJNMS4wMCwxLjAwTDY0OS4wMCwxLjAwTDY0OS4wMCw0MTkuMDBMMS4wMCw0MTkuMDAiXQor
ICAgICAgICAgICAgS0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgyMy4wOCwxOS4yMykgc2l6ZSA2Njku
MjN4NDYuMTUgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW3N0b3BzPVsoMC4wMCwjMDBG
RjAwKSwgKDEuMDAsIzAwMDAwMCldXSBbYm91bmRpbmcgYm94IG1vZGU9MF0gW3N0YXJ0PSgxMCww
KV0gW2VuZD0oNTkwLDApXX1dIFtmaWx0ZXI9I0lkZW50aXR5XSBbZGF0YT0iTTIwLjAwLDEwLjAw
TDYwMC4wMCwxMC4wMEw2MDAuMDAsNTAuMDBMMjAuMDAsNTAuMDAiXQorICAgICAgICAgICAgUmVu
ZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODV4MTgKKyAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTAxeDE4CisgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTAxOiAidHlwZTogaWRlbnRpdHkiCisgICAgICAgICAgICBL
Q2FudmFzSXRlbSB7cmVjdH0gYXQgKDIzLjA4LDEzNC42Mikgc2l6ZSA2NjkuMjN4NDYuMTUgW2Zp
bGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW3N0b3BzPVsoMC4wMCwjMDBGRjAwKSwgKDEuMDAs
IzAwMDAwMCldXSBbYm91bmRpbmcgYm94IG1vZGU9MF0gW3N0YXJ0PSgxMCwwKV0gW2VuZD0oNTkw
LDApXX1dIFtmaWx0ZXI9I1RhYmxlQmxhbmtdIFtkYXRhPSJNMjAuMDAsMTEwLjAwTDYwMC4wMCwx
MTAuMDBMNjAwLjAwLDE1MC4wMEwyMC4wMCwxNTAuMDAiXQorICAgICAgICAgICAgUmVuZGVyU1ZH
VGV4dCB7dGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODV4MTgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzAxeDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMzAxOiAidHlwZTogdGFibGUgWzBdIC0tIFJlc3VsdCBzaG91bGQgYmUg
YmxhY2siCisgICAgICAgICAgICBLQ2FudmFzSXRlbSB7cmVjdH0gYXQgKDIzLjA4LDI1MCkgc2l6
ZSA2NjkuMjN4NDYuMTUgW2ZpbGw9e1t0eXBlPUxJTkVBUi1HUkFESUVOVF0gW3N0b3BzPVsoMC4w
MCwjMDBGRjAwKSwgKDEuMDAsIzAwMDAwMCldXSBbYm91bmRpbmcgYm94IG1vZGU9MF0gW3N0YXJ0
PSgxMCwwKV0gW2VuZD0oNTkwLDApXX1dIFtmaWx0ZXI9I1RhYmxlRnVsbF0gW2RhdGE9Ik0yMC4w
MCwyMTAuMDBMNjAwLjAwLDIxMC4wMEw2MDAuMDAsMjUwLjAwTDIwLjAwLDI1MC4wMCJdCisgICAg
ICAgICAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NXgxOAorICAgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTgKKyAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMDQ6ICJ0eXBlOiB0YWJsZSBbMV0gLS0g
UmVzdWx0IHNob3VsZCBiZSBncmVlbiIKKyAgICAgICAgICAgIEtDYW52YXNJdGVtIHtyZWN0fSBh
dCAoMjMuMDgsMzY1LjM4KSBzaXplIDY2OS4yM3g0Ni4xNSBbZmlsbD17W3R5cGU9TElORUFSLUdS
QURJRU5UXSBbc3RvcHM9WygwLjAwLCMwMEZGMDApLCAoMS4wMCwjMDAwMDAwKV1dIFtib3VuZGlu
ZyBib3ggbW9kZT0wXSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1OTAsMCldfV0gW2ZpbHRlcj0jVGFi
bGVPcmRdIFtkYXRhPSJNMjAuMDAsMzEwLjAwTDYwMC4wMCwzMTAuMDBMNjAwLjAwLDM1MC4wMEwy
MC4wMCwzNTAuMDAiXQorICAgICAgICAgICAgUmVuZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsMCkg
c2l6ZSA3ODV4MTgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgNDYzeDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDYzOiAi
dHlwZTogdGFibGUgWzAgMCAxIDFdIC0tIFJlc3VsdCBzaG91bGQgYmUgY29tcHJlc3NlZCBncmFk
aWVudCIKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1M
aW5lYXIuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jdXN0b20vZmVDb21wb25l
bnRUcmFuc2Zlci1MaW5lYXIuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1
c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVyLUxpbmVhci5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZ
UEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMSBCYXNpYy8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS1iYXNpYy5kdGQiPgorPHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnLXJvb3QiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IHZpZXdCb3g9IjAgMCA0ODAgMzYwIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJiYXNpYyI+
CisJPHRpdGxlIGlkPSJ0ZXN0LXRpdGxlIj5mZUNvbXBvbmVudFRyYW5zZmVyIFRlc3QgLSBMaW5l
YXI8L3RpdGxlPgorCTxkZXNjIGlkPSJ0ZXN0LWRlc2MiPmZlQ29tcG9uZW50VHJhbnNmZXIgdGVz
dHMuPC9kZXNjPgorCTxnIGlkPSJ0ZXN0LWJvZHktY29udGVudCI+CisJCTxzdmcgdmVyc2lvbj0i
MS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIxNSIgeT0iNSIgd2lkdGg9IjQ1MCIgaGVpZ2h0
PSIzMDAiIHZpZXdCb3g9IjAgMCA2NTAgNDIwIj4KKwkJCTxkZWZzPgorCQkJCTxsaW5lYXJHcmFk
aWVudCBpZD0iTXlHcmFkaWVudCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIx
MCIgeTE9IjAiIHgyPSI1OTAiIHkyPSIwIj4KKwkJCQkJPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNv
bG9yPSIjMDBmZjAwIi8+CisJCQkJCTxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwMDAw
MCIvPgorCQkJCTwvbGluZWFyR3JhZGllbnQ+CisJCQkJPGZpbHRlciBpZD0iSWRlbnRpdHkiIGZp
bHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIj4KKwkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5j
UiB0eXBlPSJpZGVudGl0eSIvPgorCQkJCQk8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJPC9m
aWx0ZXI+CisJCQkJPGZpbHRlciBpZD0iRGlzY3JldGVCbGFuayIgZmlsdGVyVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPgor
CQkJCQk8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKwkJCQkJCTxmZUZ1bmNHIHR5cGU9ImxpbmVhciIg
c2xvcGU9IjEiIGludGVyY2VwdD0iMC4wIi8+CisJCQkJCTwvZmVDb21wb25lbnRUcmFuc2Zlcj4K
KwkJCQk8L2ZpbHRlcj4KKwkJCQk8ZmlsdGVyIGlkPSJEaXNjcmV0ZUZ1bGwiIGZpbHRlclVuaXRz
PSJvYmplY3RCb3VuZGluZ0JveCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIx
MDAlIj4KKwkJCQkJPGZlQ29tcG9uZW50VHJhbnNmZXI+CisJCQkJCQk8ZmVGdW5jRyB0eXBlPSJs
aW5lYXIiIHNsb3BlPSItMSIgaW50ZXJjZXB0PSIxLjAiLz4KKwkJCQkJPC9mZUNvbXBvbmVudFRy
YW5zZmVyPgorCQkJCTwvZmlsdGVyPgorCQkJCTxmaWx0ZXIgaWQ9IkRpc2NyZXRlT3JkIiBmaWx0
ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTAwJSI+CisJCQkJCTxmZUNvbXBvbmVudFRyYW5zZmVyPgorCQkJCQkJPGZlRnVuY0cg
dHlwZT0ibGluZWFyIiBzbG9wZT0iMC41IiBpbnRlcmNlcHQ9IjAuMjUiLz4KKwkJCQkJPC9mZUNv
bXBvbmVudFRyYW5zZmVyPgorCQkJCTwvZmlsdGVyPgorCQkJPC9kZWZzPgorCQkJPHJlY3QgZmls
bD0ibm9uZSIgc3Ryb2tlPSJibHVlIiB4PSIxIiB5PSIxIiB3aWR0aD0iNjQ4IiBoZWlnaHQ9IjQx
OCIvPgorCQkJPGcgZm9udC1zaXplPSIxNSIgZm9udC1mYW1pbHk9IlZlcmRhbmEiPgorCQkJCTxy
ZWN0IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmx1ZSIgeD0iMSIgeT0iMSIgd2lkdGg9IjY0OCIgaGVp
Z2h0PSI0MTgiLz4KKwkJCQk8cmVjdCB4PSIyMCIgeT0iMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0i
NDAiIGZpbGw9InVybCgjTXlHcmFkaWVudCkiIGZpbHRlcj0idXJsKCNJZGVudGl0eSkiLz4KKwkJ
CQk8dGV4dCB4PSIyMCIgeT0iNzAiPnR5cGU6IGlkZW50aXR5PC90ZXh0PgorCQkJCTxyZWN0IHg9
IjIwIiB5PSIxMTAiIHdpZHRoPSI1ODAiIGhlaWdodD0iNDAiIGZpbGw9InVybCgjTXlHcmFkaWVu
dCkiIGZpbHRlcj0idXJsKCNEaXNjcmV0ZUJsYW5rKSIvPgorCQkJCTx0ZXh0IHg9IjIwIiB5PSIx
NzAiPnR5cGU6IGxpbmVhciBzbG9wZT0xIGludGVyY2VwdD0wIC0tIFJlc3VsdCBzaG91bGQgYmUg
aWRlbnRpdHk8L3RleHQ+CisJCQkJPHJlY3QgeD0iMjAiIHk9IjIxMCIgd2lkdGg9IjU4MCIgaGVp
Z2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRpZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlRnVs
bCkiLz4KKwkJCQk8dGV4dCB4PSIyMCIgeT0iMjcwIj50eXBlOiBsaW5lYXIgc2xvcGU9LTEgaW50
ZXJjZXB0PTAgLS0gU2hvdWxkIGludmVydCB0aGUgZ3JhZGllbnQ8L3RleHQ+CisJCQkJPHJlY3Qg
eD0iMjAiIHk9IjMxMCIgd2lkdGg9IjU4MCIgaGVpZ2h0PSI0MCIgZmlsbD0idXJsKCNNeUdyYWRp
ZW50KSIgZmlsdGVyPSJ1cmwoI0Rpc2NyZXRlT3JkKSIvPgorCQkJCTx0ZXh0IHg9IjIwIiB5PSIz
NzAiPnR5cGU6IGxpbmVhciBzbG9wZT0wLjUgaW50ZXJjZXB0PTAuMjUgLS0gUmVzdWx0IHNob3Vs
ZCBiZSBsZXNzIGV4dHJlbWUgZ3JhZGllbnQ8L3RleHQ+CisJCQk8L2c+CisJCTwvc3ZnPgorCTwv
Zz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5z
ZmVyLUdhbW1hLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItR2FtbWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVyLUdhbW1hLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorS1JlbmRlcmluZ1BhaW50U2Vy
dmVyIHtpZD0iTXlHcmFkaWVudCIgW3R5cGU9TElORUFSLUdSQURJRU5UXSBbc3RvcHM9WygwLjAw
LCMwMEZGMDApLCAoMS4wMCwjMDAwMDAwKV1dIFtib3VuZGluZyBib3ggbW9kZT0wXSBbc3RhcnQ9
KDEwLDApXSBbZW5kPSg1OTAsMCldfQorS0NhbnZhc1Jlc291cmNlIHtpZD0iSWRlbnRpdHkiIFt0
eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAxeDFdIFtlZmZlY3QgYm91
bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVOVC1UUkFOU0ZFUl0gIFtz
dWJyZWdpb249ImF0ICgwLDApIHNpemUgNjUweDQyMCJdIFtyZWQgZnVuYz1bdHlwZT1JREVOVElU
WV1dIFtncmVlbiBmdW5jPVt0eXBlPUlERU5USVRZXV0gW2JsdWUgZnVuYz1bdHlwZT1JREVOVElU
WV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK0tDYW52YXNSZXNvdXJjZSB7aWQ9
IkdhbW1hQmxhbmsiIFt0eXBlPUZJTFRFUl0gIFtib3VuZGluZyBib3g9YXQgKDAsMCkgc2l6ZSAx
eDFdIFtlZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9MF0gW2VmZmVjdHM9W1t0eXBlPUNPTVBPTkVO
VC1UUkFOU0ZFUl0gIFtzdWJyZWdpb249ImF0ICgwLDApIHNpemUgNjUweDQyMCJdIFtyZWQgZnVu
Yz1bdHlwZT1JREVOVElUWV1dIFtncmVlbiBmdW5jPVt0eXBlPUdBTU1BXSBbYW1wbGl0dWRlPTEu
MDBdIFtleHBvbmVudD0xLjAwXSBbb2Zmc2V0PTAuMDBdXSBbYmx1ZSBmdW5jPVt0eXBlPUlERU5U
SVRZXV0gW2FscGhhIGZ1bmM9W3R5cGU9SURFTlRJVFldXV1dfQorS0NhbnZhc1Jlc291cmNlIHtp
ZD0iR2FtbWFGdWxsIiBbdHlwZT1GSUxURVJdICBbYm91bmRpbmcgYm94PWF0ICgwLDApIHNpemUg
MXgxXSBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2RlPTBdIFtlZmZlY3RzPVtbdHlwZT1DT01QT05F
TlQtVFJBTlNGRVJdICBbc3VicmVnaW9uPSJhdCAoMCwwKSBzaXplIDY1MHg0MjAiXSBbcmVkIGZ1
bmM9W3R5cGU9SURFTlRJVFldXSBbZ3JlZW4gZnVuYz1bdHlwZT1HQU1NQV0gW2FtcGxpdHVkZT0x
LjAwXSBbZXhwb25lbnQ9MC41MF0gW29mZnNldD0wLjAwXV0gW2JsdWUgZnVuYz1bdHlwZT1JREVO
VElUWV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK0tDYW52YXNSZXNvdXJjZSB7
aWQ9IkdhbW1hT3JkIiBbdHlwZT1GSUxURVJdICBbYm91bmRpbmcgYm94PWF0ICgwLDApIHNpemUg
MXgxXSBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2RlPTBdIFtlZmZlY3RzPVtbdHlwZT1DT01QT05F
TlQtVFJBTlNGRVJdICBbc3VicmVnaW9uPSJhdCAoMCwwKSBzaXplIDY1MHg0MjAiXSBbcmVkIGZ1
bmM9W3R5cGU9SURFTlRJVFldXSBbZ3JlZW4gZnVuYz1bdHlwZT1HQU1NQV0gW2FtcGxpdHVkZT0x
LjAwXSBbZXhwb25lbnQ9Mi4wMF0gW29mZnNldD0wLjAwXV0gW2JsdWUgZnVuYz1bdHlwZT1JREVO
VElUWV1dIFthbHBoYSBmdW5jPVt0eXBlPUlERU5USVRZXV1dXX0KK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgS0Nh
bnZhc0NvbnRhaW5lciB7c3ZnfSBhdCAoMC44MywwLjgzKSBzaXplIDEwODEuNjd4Njk4LjMzCisg
ICAgICBLQ2FudmFzQ29udGFpbmVyIHtnfSBhdCAoMC44MywwLjgzKSBzaXplIDEwODEuNjd4Njk4
LjMzCisgICAgICAgIEtDYW52YXNDb250YWluZXIge3N2Z30gYXQgKDAuNTgsOC4yNykgc2l6ZSA3
NDguODV4NDgzLjQ2CisgICAgICAgICAgS0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgwLjU4LDguMjcp
IHNpemUgNzQ4Ljg1eDQ4My40NiBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwRkZd
fV0gW2RhdGE9Ik0xLjAwLDEuMDBMNjQ5LjAwLDEuMDBMNjQ5LjAwLDQxOS4wMEwxLjAwLDQxOS4w
MCJdCisgICAgICAgICAgS0NhbnZhc0NvbnRhaW5lciB7Z30gYXQgKDAuNTgsOC4yNykgc2l6ZSA3
NDguODV4NDgzLjQ2CisgICAgICAgICAgICBLQ2FudmFzSXRlbSB7cmVjdH0gYXQgKDAuNTgsOC4y
Nykgc2l6ZSA3NDguODV4NDgzLjQ2IFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDBG
Rl19XSBbZGF0YT0iTTEuMDAsMS4wMEw2NDkuMDAsMS4wMEw2NDkuMDAsNDE5LjAwTDEuMDAsNDE5
LjAwIl0KKyAgICAgICAgICAgIEtDYW52YXNJdGVtIHtyZWN0fSBhdCAoMjMuMDgsMTkuMjMpIHNp
emUgNjY5LjIzeDQ2LjE1IFtmaWxsPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtzdG9wcz1bKDAu
MDAsIzAwRkYwMCksICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFy
dD0oMTAsMCldIFtlbmQ9KDU5MCwwKV19XSBbZmlsdGVyPSNJZGVudGl0eV0gW2RhdGE9Ik0yMC4w
MCwxMC4wMEw2MDAuMDAsMTAuMDBMNjAwLjAwLDUwLjAwTDIwLjAwLDUwLjAwIl0KKyAgICAgICAg
ICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgwLDApIHNpemUgNzg1eDE4CisgICAgICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwMXgxOAorICAgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwMTogInR5cGU6IGlkZW50aXR5IgorICAgICAg
ICAgICAgS0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgyMy4wOCwxMzQuNjIpIHNpemUgNjY5LjIzeDQ2
LjE1IFtmaWxsPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtzdG9wcz1bKDAuMDAsIzAwRkYwMCks
ICgxLjAwLCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFydD0oMTAsMCldIFtl
bmQ9KDU5MCwwKV19XSBbZmlsdGVyPSNHYW1tYUJsYW5rXSBbZGF0YT0iTTIwLjAwLDExMC4wMEw2
MDAuMDAsMTEwLjAwTDYwMC4wMCwxNTAuMDBMMjAuMDAsMTUwLjAwIl0KKyAgICAgICAgICAgIFJl
bmRlclNWR1RleHQge3RleHR9IGF0ICgwLDApIHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU3NXgxOAorICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDU3NTogInR5cGU6IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9u
ZW50PTEgb2Zmc2V0PTAgLS0gUmVzdWx0IHNob3VsZCBiZSBpZGVudGl0eSIKKyAgICAgICAgICAg
IEtDYW52YXNJdGVtIHtyZWN0fSBhdCAoMjMuMDgsMjUwKSBzaXplIDY2OS4yM3g0Ni4xNSBbZmls
bD17W3R5cGU9TElORUFSLUdSQURJRU5UXSBbc3RvcHM9WygwLjAwLCMwMEZGMDApLCAoMS4wMCwj
MDAwMDAwKV1dIFtib3VuZGluZyBib3ggbW9kZT0wXSBbc3RhcnQ9KDEwLDApXSBbZW5kPSg1OTAs
MCldfV0gW2ZpbHRlcj0jR2FtbWFGdWxsXSBbZGF0YT0iTTIwLjAwLDIxMC4wMEw2MDAuMDAsMjEw
LjAwTDYwMC4wMCwyNTAuMDBMMjAuMDAsMjUwLjAwIl0KKyAgICAgICAgICAgIFJlbmRlclNWR1Rl
eHQge3RleHR9IGF0ICgwLDApIHNpemUgNzg1eDE4CisgICAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyOXgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDUyOTogInR5cGU6IGdhbW1hIGFtcGxpdHVkZT0xIGV4cG9uZW50PTAuNSBv
ZmZzZXQ9MCAtLSBSZXN1bHQgc2hvdWxkIGJlIgorICAgICAgICAgICAgUmVuZGVyU1ZHVGV4dCB7
dGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODV4MTgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTg4eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTg4OiAiZGVsYXllZCBmYWxsb2ZmIGluIGdyYWRpZW50IgorICAgICAgICAgICAg
S0NhbnZhc0l0ZW0ge3JlY3R9IGF0ICgyMy4wOCwzNjUuMzgpIHNpemUgNjY5LjIzeDQ2LjE1IFtm
aWxsPXtbdHlwZT1MSU5FQVItR1JBRElFTlRdIFtzdG9wcz1bKDAuMDAsIzAwRkYwMCksICgxLjAw
LCMwMDAwMDApXV0gW2JvdW5kaW5nIGJveCBtb2RlPTBdIFtzdGFydD0oMTAsMCldIFtlbmQ9KDU5
MCwwKV19XSBbZmlsdGVyPSNHYW1tYU9yZF0gW2RhdGE9Ik0yMC4wMCwzMTAuMDBMNjAwLjAwLDMx
MC4wMEw2MDAuMDAsMzUwLjAwTDIwLjAwLDM1MC4wMCJdCisgICAgICAgICAgICBSZW5kZXJTVkdU
ZXh0IHt0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NXgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1Njh4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA1Njg6ICJ0eXBlOiBnYW1tYSBhbXBsaXR1ZGU9MSBleHBvbmVudD0yIG9m
ZnNldD0wIC0tIFJlc3VsdCBzaG91bGQgY29tcHJlc3MiCisgICAgICAgICAgICBSZW5kZXJTVkdU
ZXh0IHt0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NXgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDkwOiAidGhlIGdyYWRpZW50IgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwNDgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAwNi0wNC0yNiAgT2xpdmVyICA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ2hhbmdl
TG9nOgorICAgICAgICAqIHN2Zy9XM0MtU1ZHLTEuMS9maWx0ZXJzLWNvbXB0cmFuLTAxLWItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1EaXNj
cmV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vZmVDb21wb25l
bnRUcmFuc2Zlci1EaXNjcmV0ZS5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vZmVD
b21wb25lbnRUcmFuc2Zlci1HYW1tYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1HYW1tYS5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9jdXN0b20vZmVDb21wb25lbnRUcmFuc2Zlci1MaW5lYXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2ZlQ29tcG9uZW50VHJhbnNmZXItTGluZWFyLnN2Zzog
QWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5zZmVyLVRhYmxlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9mZUNvbXBvbmVudFRyYW5z
ZmVyLVRhYmxlLnN2ZzogQWRkZWQuCisKIDIwMDYtMDQtMjUgIEVyaWMgU2VpZGVsICA8ZXNlaWRl
bEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgbWpzLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MDQ4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTUxOSw2ICs1MTksMjMgQEAKIAkJQTc2MzhBOTIwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxh
Y2VtZW50TWFwRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzYzOEE5MTA5OTU5MkMzMDAwN0UxNEYgLyogV0tEaXNwbGFjZW1l
bnRNYXBGaWx0ZXIuY2lrZXJuZWwgKi87IH07CiAJCUE3NjM4QTk3MDk5NTk2NUQwMDA3RTE0RiAv
KiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjM4QTk1MDk5NTk2NUQwMDA3RTE0RiAvKiBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaCAqLzsgfTsKIAkJQTc2MzhBOTgwOTk1OTY1RDAwMDdFMTRG
IC8qIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYzOEE5NjA5OTU5NjVEMDAwN0UxNEYgLyogU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCAqLzsgfTsKKwkJQTdCOTdCNzcwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjY2MDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I3ODA5
NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNjcwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCNzkwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjY4MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Nv
bXBvbmVudE1lcmdlRmlsdGVyLm0gKi87IH07CisJCUE3Qjk3QjdBMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi87IH07CisJCUE3Qjk3QjdCMDk3OUMz
QTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZBMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCAqLzsgfTsKKwkJQTdCOTdCN0MwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCOTdCNkIwOTc5QzNBMTAwMEU4RUIxIC8qIFdL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tICovOyB9OworCQlBN0I5N0I3RDA5NzlDM0ExMDAwRThF
QjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyog
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovOyB9OworCQlBN0I5N0I3RTA5NzlDM0Ex
MDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5N0I2RDA5NzlDM0ExMDAwRThFQjEgLyogV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmggKi87IH07CisJCUE3Qjk3QjdGMDk3OUMzQTEwMDBFOEVCMSAv
KiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Qjk3QjZFMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIubSAqLzsgfTsKKwkJQTdCOTdCODAwOTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRp
dHlUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCOTdCNkYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZp
bHRlci5oICovOyB9OworCQlBN0I5N0I4MTA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRy
YW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0I5N0I3MDA5NzlDM0ExMDAwRThFQjEgLyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVy
Lm0gKi87IH07CisJCUE3Qjk3QjgyMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbCAqLzsgfTsKKwkJQTdCOTdCODMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFy
VHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Qjk3QjcyMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVyRmlsdGVy
LmggKi87IH07CisJCUE3Qjk3Qjg0MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVy
RmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0I5N0I3MzA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tICovOyB9
OworCQlBN0I5N0I4NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNp
a2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0I5N0I3NDA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovOyB9OworCQlBN0I5N0I4NjA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I5
N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggKi87IH07CisJ
CUE3Qjk3Qjg3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Qjk3Qjc2MDk3OUMz
QTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIubSAqLzsgfTsKIAkJQTgxMzY5Q0Ew
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJc0luZGV4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QUUwOTczNzRGNTAwRDc0NDYzIC8q
IEhUTUxJc0luZGV4RWxlbWVudC5oICovOyB9OwogCQlBODEzNjlDQjA5NzM3NEY2MDBENzQ0NjMg
LyogSFRNTElzSW5kZXhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4MTM2OUFGMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MSXNJbmRleEVs
ZW1lbnQuY3BwICovOyB9OwogCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgxMzY5QjAwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQuaCAqLzsgfTsKQEAg
LTE2MzgsNiArMTY1NSwyMyBAQAogCQlBNzYzOEE5MTA5OTU5MkMzMDAwN0UxNEYgLyogV0tEaXNw
bGFjZW1lbnRNYXBGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tEaXNw
bGFjZW1lbnRNYXBGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3NjM4QTk1MDk5NTk2NUQwMDA3RTE0RiAvKiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NjM4QTk2MDk5NTk2NUQw
MDA3RTE0RiAvKiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNjYwOTc5QzNBMTAwMEU4RUIxIC8q
IFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3Qjk3QjY3MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmls
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjY4MDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamM7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdC
NkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
cGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjZEMDk3OUMzQTEw
MDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0I5N0I2RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmls
dGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNkYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzIwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdCOTdCNzMwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzQwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBN0I5N0I3NTA5NzlDM0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdCOTdCNzYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4MTBFMzkzMDhBNDE2MEYwMDMzM0Q5OCAvKiBLQ2FudmFzVHJlZURl
YnVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
S0NhbnZhc1RyZWVEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJQTgxMEUzOTQwOEE0MTYwRjAwMzMzRDk4IC8qIEtDYW52YXNU
cmVlRGVidWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBLQ2FudmFzVHJlZURlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUE4MTIyQzdFMDhENTY0QjAwMDg0NEZB
MyAvKiBHZXRTVkdEb2N1bWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHZXRTVkdEb2N1bWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMzYyNCw2ICszNjU4LDIzIEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUE4QzMyOTIwMDkzQkI3MzIwMDBCOUNB
QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNjYwOTc5QzNB
MTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdC
OTdCNjcwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCAqLywKKwkJ
CQlBN0I5N0I2ODA5NzlDM0ExMDAwRThFQjEgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICov
LAorCQkJCUE3Qjk3QjY5MDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIuY2lrZXJuZWwgKi8sCisJCQkJQTdCOTdCNkEwOTc5QzNBMTAwMEU4RUIxIC8qIFdLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjZCMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubSAqLywKKwkJCQlBN0I5N0I2QzA5NzlDM0ExMDAwRThF
QjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsICovLAorCQkJCUE3Qjk3QjZEMDk3
OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLywKKwkJCQlBN0I5N0I2
RTA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdC
OTdCNkYwOTc5QzNBMTAwMEU4RUIxIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovLAor
CQkJCUE3Qjk3QjcwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIu
bSAqLywKKwkJCQlBN0I5N0I3MTA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3MjA5NzlDM0ExMDAwRThFQjEgLyogV0tMaW5l
YXJUcmFuc2ZlckZpbHRlci5oICovLAorCQkJCUE3Qjk3QjczMDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gKi8sCisJCQkJQTdCOTdCNzQwOTc5QzNBMTAwMEU4RUIx
IC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLywKKwkJCQlBN0I5N0I3NTA5NzlD
M0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggKi8sCisJCQkJQTdCOTdCNzYw
OTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovLAogCQkJCUE4QzMy
OTIxMDkzQkI3MzIwMDBCOUNBQyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLywKIAkJCQlBOEMz
MjkyMjA5M0JCNzMyMDAwQjlDQUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8sCiAJCQkJQThD
MzI5MjMwOTNCQjczMjAwMEI5Q0FDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVs
ICovLApAQCAtNDQ0Nyw2ICs0NDk4LDEyIEBACiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYz
IC8qIEhUTUxMYWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0
RjYwMEQ3NDQ2MyAvKiBIVE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgx
MzZEMzgwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdCOTdCNzgwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUE3Qjk3QjdCMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3QjdFMDk3OUMzQTEwMDBF
OEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Qjk3
QjgwMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3Qjk3QjgzMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0xpbmVhclRyYW5zZmVy
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0I5N0I4NjA5NzlDM0ExMDAwRThFQjEgLyog
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUJGMDIyRjA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjMwMDk3NDgx
NjMwMEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjQ0
MDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODkxLDYg
KzQ5NDgsMTEgQEAKIAkJCQlBODhBRDNBMTA5NTI0ODZEMDAxREQxOTYgLyogV0tQb2ludExpZ2h0
RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKIAkJCQlBODhBRDNBNDA5NTI0ODZEMDAx
REQxOTYgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAq
LywKIAkJCQlBODhBRDNBNzA5NTI0ODZEMDAxREQxOTYgLyogV0tTcG90TGlnaHRGaWx0ZXIuY2lr
ZXJuZWwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE3Qjk3Qjc3MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKKwkJCQlBN0I5
N0I3QTA5NzlDM0ExMDAwRThFQjEgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
IGluIFJlc291cmNlcyAqLywKKwkJCQlBN0I5N0I3RDA5NzlDM0ExMDAwRThFQjEgLyogV0tHYW1t
YVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKKwkJCQlBN0I5N0I4MjA5
NzlDM0ExMDAwRThFQjEgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJQTdCOTdCODUwOTc5QzNBMTAwMEU4RUIxIC8qIFdLVGFibGVUcmFuc2Zl
ckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTc2MzhBOTIwOTk1OTJDMzAw
MDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAq
LywKIAkJCQkxNENGNzg3MjA5RjU4N0NBMDBFQjM2NjUgLyogQ1NTVmFsdWUuaWRsIGluIFJlc291
cmNlcyAqLywKIAkJCQkxNENGN0E3MTA5RjVDRjlBMDBFQjM2NjUgLyogQ1NTUnVsZS5pZGwgaW4g
UmVzb3VyY2VzICovLApAQCAtNTE4Niw2ICs1MjQ4LDEyIEBACiAJCQkJQTgxMzY5RTMwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxMYWJlbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgx
MzY5RTUwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxLZXlnZW5FbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4MTM2RDM5MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTdCOTdCNzkwOTc5QzNBMTAwMEU4RUIxIC8qIFdLQ29tcG9uZW50
TWVyZ2VGaWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3QjdDMDk3OUMzQTEwMDBFOEVC
MSAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3
QjdGMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3Qjk3QjgxMDk3OUMzQTEwMDBFOEVCMSAvKiBXS0lkZW50aXR5VHJhbnNmZXJG
aWx0ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCUE3Qjk3Qjg0MDk3OUMzQTEwMDBFOEVCMSAvKiBX
S0xpbmVhclRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKKwkJCQlBN0I5N0I4NzA5NzlD
M0ExMDAwRThFQjEgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKIAkJ
CQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkFFMDQxOEMwOTc1OTY5NDAwMDU0MEJFIC8qIFJlbmRlclNWR0ltYWdlLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmlu
Z0RldmljZVF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCShyZXZpc2lvbiAxNDA0OCkKKysrIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBLQ2FudmFzRmlsdGVyRWZmZWN0ICpLUmVuZGVy
aW5nRGV2aWNlUXVhCiAgICAgKi8KICAgICBjYXNlIEZFX0JMRU5EOiByZXR1cm4gbmV3IEtDYW52
YXNGRUJsZW5kUXVhcnR6KCk7CiAgICAgY2FzZSBGRV9DT0xPUl9NQVRSSVg6IHJldHVybiBuZXcg
S0NhbnZhc0ZFQ29sb3JNYXRyaXhRdWFydHooKTsKLS8vICBjYXNlIEZFX0NPTVBPTkVOVF9UUkFO
U0ZFUjogCisgICAgY2FzZSBGRV9DT01QT05FTlRfVFJBTlNGRVI6IHJldHVybiBuZXcgS0NhbnZh
c0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHooKTsKICAgICBjYXNlIEZFX0NPTVBPU0lURTogcmV0
dXJuIG5ldyBLQ2FudmFzRkVDb21wb3NpdGVRdWFydHooKTsKIC8vICBjYXNlIEZFX0NPTlZPTFZF
X01BVFJJWDogCiAgICAgY2FzZSBGRV9ESUZGVVNFX0xJR0hUSU5HOiByZXR1cm4gbmV3IEtDYW52
YXNGRURpZmZ1c2VMaWdodGluZ1F1YXJ0eigpOwpJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkocmV2aXNpb24gMTQwNDgp
CisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDEwICs3MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBD
SUZpbHRlciAqZ2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBj
b25zdDsKIH07CiAKLS8vY2xhc3MgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHogOiBw
dWJsaWMgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgewotLy9wdWJsaWM6Ci0vLyAgICB2aXJ0
dWFsIENJRmlsdGVyICpnZXRDSUZpbHRlcihLQ2FudmFzRmlsdGVyUXVhcnR6ICpxdWFydHpGaWx0
ZXIpIGNvbnN0OwotLy99OworY2xhc3MgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHog
OiBwdWJsaWMgS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXIgeworcHVibGljOgorICAgIHZpcnR1
YWwgQ0lGaWx0ZXIgKmdldENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRl
cikgY29uc3Q7Citwcml2YXRlOgorICAgIENJRmlsdGVyICpnZXRGdW5jdGlvbkZpbHRlcihLQ0No
YW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCwgQ0lJbWFnZSAqaW5wdXRJbWFnZSkgY29uc3Q7Cit9
OwogCiBjbGFzcyBLQ2FudmFzRkVDb252b2x2ZU1hdHJpeFF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFz
RkVDb252b2x2ZU1hdHJpeCB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNl
L3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNh
bnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdl
Lmg+CisKK0BpbnRlcmZhY2UgV0tDb21wb25lbnRNZXJnZUZpbHRlciA6IENJRmlsdGVyIHsKKyAg
ICBDSUltYWdlICAqaW5wdXRGdW5jUjsKKyAgICBDSUltYWdlICAqaW5wdXRGdW5jRzsKKyAgICBD
SUltYWdlICAqaW5wdXRGdW5jQjsKKyAgICBDSUltYWdlICAqaW5wdXRGdW5jQTsKK30KKworQGVu
ZApJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRy
YW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFy
dHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIu
bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgiCisKK3N0YXRpYyBDSUtlcm5lbCAq
bGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1lbnRhdGlvbiBXS0xpbmVhclRy
YW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0
ZXJGaWx0ZXJOYW1lOkAiV0tMaW5lYXJUcmFuc2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNv
bnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAg
IEAiV2ViS2l0IExpbmVhciBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1l
LAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRl
Z29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
a0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBr
Q0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAorICAgICAgICAgICAgICAgICAgICAgW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJ
QXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWxdLCBAImlucHV0U2xvcGUiLAorICAgICAgICAgICAgICAgICAgICAgW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1
bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAga0NJ
QXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWxdLCBAImlucHV0SW50ZXJzZWN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAg
IG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5h
bWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQor
CistIChpZClpbml0Cit7CisgICAgaWYgKCFsaW5lYXJUcmFuc2ZlckZpbHRlcikgeworICAgICAg
ICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNz
XV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3Vy
Y2U6QCJXS0xpbmVhclRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAg
ICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2Vy
bmVsRmlsZV07CisgICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dp
dGhTdHJpbmc6Y29kZV07CisgICAgICAgIGxpbmVhclRyYW5zZmVyRmlsdGVyID0gW1trZXJuZWxz
IG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0
XTsKK30KKworLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgQ0lTYW1wbGVyICppbnB1
dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0SW1hZ2VdOworICAg
IHJldHVybiBbc2VsZiBhcHBseTpsaW5lYXJUcmFuc2ZlckZpbHRlciwgaW5wdXRTYW1wbGVyLCBp
bnB1dFNsb3BlLCBpbnB1dEludGVyY2VwdCwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBk
ZWZpbml0aW9uXSwgbmlsXTsKK30KKworQGVuZApJbmRleDogV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFu
c2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIg
SHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitrZXJuZWwg
dmVjNCBsaW5lYXJUcmFuc2ZlcihzYW1wbGVyIGltYWdlLCBmbG9hdCBzbG9wZSwgZmxvYXQgaW50
ZXJjZXB0KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGltYWdl
KSk7CisgICAgcmV0dXJuIHNsb3BlICogQyArIGludGVyY2VwdDsKK30KSW5kZXg6IFdlYkNvcmUv
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21wb25lbnRNZXJnZUZpbHRlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tDb21w
b25lbnRNZXJnZUZpbHRlci5tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9q
aDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tDb21w
b25lbnRNZXJnZUZpbHRlci5oIgorCitzdGF0aWMgQ0lLZXJuZWwgKmNvbXBvbmVudE1lcmdlRmls
dGVyID0gbmlsOworCitAaW1wbGVtZW50YXRpb24gV0tDb21wb25lbnRNZXJnZUZpbHRlcgorKyAo
dm9pZClpbml0aWFsaXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldL
Q29tcG9uZW50TWVyZ2UiCisgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisg
ICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBDb21wb25l
bnQgTWVyZ2UiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lD
YXRlZ29yeVZpZGVvLAorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJ
bWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVy
Q2F0ZWdvcmllcywKKyAgICAgICAgICAgICAgICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRl
ciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2Vs
ZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgaWYg
KCFjb21wb25lbnRNZXJnZUZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICpr
ZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0NvbXBvbmVudE1lcmdlRmls
dGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07CisgICAgICAgIE5TQXJy
YXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07CisgICAgICAg
IGNvbXBvbmVudE1lcmdlRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWlu
XTsKKyAgICB9CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAoQ0lJbWFnZSAqKW91
dHB1dEltYWdlCit7CisgICAgcmV0dXJuIFtzZWxmIGFwcGx5OmNvbXBvbmVudE1lcmdlRmlsdGVy
LCBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6IGlucHV0RnVuY1JdLCAKKyAgICAgICAgW0NJ
U2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEZ1bmNHXSwgW0NJU2FtcGxlciBzYW1wbGVy
V2l0aEltYWdlOiBpbnB1dEZ1bmNCXSwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1
dEZ1bmNBXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0RnVuY1IgZGVmaW5pdGlvbl0sIG5pbF07Cit9
CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tU
YWJsZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2Rldmlj
ZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmls
dGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBXS1Rh
YmxlVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAqaW5wdXRJbWFnZTsK
KyAgICBDSUltYWdlICppbnB1dFRhYmxlOworICAgIENJVmVjdG9yICppbnB1dFNlbGVjdG9yOwor
fQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLSWRlbnRpdHlU
cmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMu
bno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKK0BpbnRl
cmZhY2UgV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgeworICAgIENJSW1hZ2Ug
ICppbnB1dEltYWdlOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0J
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
VGFibGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1
cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIldLVGFibGVUcmFuc2ZlckZpbHRlci5oIgor
CitzdGF0aWMgQ0lLZXJuZWwgKnRhYmxlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7CisKK0BpbXBsZW1l
bnRhdGlvbiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIKKysgKHZvaWQpaW5pdGlhbGl6ZQoreworICAg
IFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS1RhYmxlVHJhbnNmZXIiCisgICAgICAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCisgICAgICAgICAgICAgICAgIGNsYXNzQXR0
cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAg
ICAgICAgICAgICAgICAgICBAIldlYktpdCBUYWJsZSBUcmFuc2ZlciIsIGtDSUF0dHJpYnV0ZUZp
bHRlckRpc3BsYXlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlXaXRo
T2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFy
ZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLCAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZUdyYWRp
ZW50LCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAi
aW5wdXRUYWJsZSIsICAgCisgICAgICAgICAgICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lG
aWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtb
W3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAg
IGlmICghdGFibGVUcmFuc2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0g
W05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5n
ICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNB
cnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAg
ICAgdGFibGVUcmFuc2ZlckZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFp
bl07CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1hZ2UgKilv
dXRwdXRJbWFnZQoreworICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBz
YW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKKyAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxl
ciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVz
OmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1wbGVyRmlsdGVyTGluZWFyLCBrQ0lTYW1wbGVy
V3JhcE1vZGUsIGtDSVNhbXBsZXJXcmFwQ2xhbXAsIG5pbF07CisgICAgTlNBcnJheSAqYXJncyA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6aW5wdXRTYW1wbGVyLCB0YWJsZVNhbXBsZXIsIGlu
cHV0U2VsZWN0b3IsIAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltpbnB1dFRh
YmxlIGV4dGVudF0uc2l6ZS53aWR0aC0xLjBdLCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVy
IGRlZmluaXRpb25dLCBuaWxdOworICAgIHJldHVybiBbc2VsZiBhcHBseTp0YWJsZVRyYW5zZmVy
RmlsdGVyIGFyZ3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKK30KKworQGVuZApJbmRleDogV2Vi
Q29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJz
L1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9rY2Fu
dmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKKworCitAaW1wbGVtZW50YXRpb24gV0tJ
ZGVudGl0eVRyYW5zZmVyRmlsdGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0
ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tJZGVudGl0eVRyYW5zZmVyIgorICAgICAgICAgICAg
ICAgICAgICAgY29uc3RydWN0b3I6c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0
ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgQCJXZWJLaXQgSWRlbnRpdHkgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0
ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQ
aXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAg
ICAgICAgIG5pbF1dOworfQorCisrIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworfQorCistIChpZClpbml0Cit7CisgICAgcmV0dXJuIFtzdXBlciBpbml0XTsKK30KKworLSAo
Q0lJbWFnZSAqKW91dHB1dEltYWdlCit7CisgICAgcmV0dXJuIGlucHV0SW1hZ2U7Cit9CisKK0Bl
bmQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0
ZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9x
dWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKworQGludGVyZmFjZSBX
S0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAgKmlucHV0
SW1hZ2U7CisgICAgQ0lJbWFnZSAgKmlucHV0VGFibGU7CisgICAgQ0lWZWN0b3IgKmlucHV0U2Vs
ZWN0b3I7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tE
aXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVy
LmgiCisKK3N0YXRpYyBDSUtlcm5lbCAqZGlzY3JldGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKKwor
QGltcGxlbWVudGF0aW9uIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlcgorKyAodm9pZClpbml0aWFs
aXplCit7CisgICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLRGlzY3JldGVUcmFu
c2ZlciIKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKKyAgICAgICAgICAg
ICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IERpc2NyZXRlIFRyYW5zZmVy
Iiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCisgICAgICAgICAgICAgICAgICAgICBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlW
aWRlbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtD
SUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3Jp
ZXMsCisgICAgICAgICAgICAgICAgICAgICBuaWxdXTsKK30KKworKyAoQ0lGaWx0ZXIgKilmaWx0
ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaWQpaW5pdAoreworICAgIGlmICghZGlzY3Jl
dGVUcmFuc2ZlckZpbHRlcikgeworICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxl
IGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CisgICAgICAgIE5TU3RyaW5nICprZXJuZWxG
aWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIi
IG9mVHlwZTpAImNpa2VybmVsIl07CisgICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlXTsKKyAgICAgICAgTlNBcnJheSAq
a2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKKyAgICAgICAgZGlz
Y3JldGVUcmFuc2ZlckZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07
CisgICAgfQorICAgIHJldHVybiBbc3VwZXIgaW5pdF07Cit9CisKKy0gKENJSW1hZ2UgKilvdXRw
dXRJbWFnZQoreworICAgIENJU2FtcGxlciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1w
bGVyV2l0aEltYWdlOiBpbnB1dEltYWdlXTsKKyAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxlciA9
IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtD
SVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lTYW1wbGVyRmlsdGVyTmVhcmVzdCwga0NJU2FtcGxlcldy
YXBNb2RlLCBrQ0lTYW1wbGVyV3JhcENsYW1wLCBuaWxdOworICAgIE5TQXJyYXkgKmFyZ3MgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmlucHV0U2FtcGxlciwgdGFibGVTYW1wbGVyLCBpbnB1
dFNlbGVjdG9yLCAKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbaW5wdXRUYWJs
ZSBleHRlbnRdLnNpemUud2lkdGgtMS4wXSwgQCJkZWZpbml0aW9uIiwgW2lucHV0U2FtcGxlciBk
ZWZpbml0aW9uXSwgbmlsXTsKKyAgICByZXR1cm4gW3NlbGYgYXBwbHk6ZGlzY3JldGVUcmFuc2Zl
ckZpbHRlciBhcmd1bWVudHM6YXJncyBvcHRpb25zOm5pbF07Cit9CisKK0BlbmQKSW5kZXg6IFdl
YkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6
L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5h
Yy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKwora2VybmVsIHZlYzQgZGlzY3JldGVUcmFuc2ZlcihzYW1wbGVyIGlt
YWdlLCBzYW1wbGVyIHRhYmxlLCB2ZWM0IHJnYmFTZWxlY3RvciwgZmxvYXQgbWF4SW5kZXgpCit7
CisgICAgdmVjNCBDID0gc2FtcGxlKGltYWdlLCBzYW1wbGVyQ29vcmQoaW1hZ2UpKTsKKyAgICBm
bG9hdCBrID0gZmxvb3IoZG90KHJnYmFTZWxlY3RvciwgQykgKiBtYXhJbmRleCk7CisgICAgdmVj
NCByZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoayswLjAsIDAuMCkpOworICAgIHJldHVybiByZXM7
Cit9CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2Rl
dmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0NvbXBv
bmVudE1lcmdlRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRl
cmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2ZWM0IG1lcmdlQ29tcG9uZW50cyhzYW1w
bGVyIGZ1bmNSLCBzYW1wbGVyIGZ1bmNHLCBzYW1wbGVyIGZ1bmNCLCBzYW1wbGVyIGZ1bmNBKQor
eworICAgIGZsb2F0IHIgPSBzYW1wbGUoZnVuY1IsIHNhbXBsZXJDb29yZChmdW5jUikpLnI7Cisg
ICAgZmxvYXQgZyA9IHNhbXBsZShmdW5jRywgc2FtcGxlckNvb3JkKGZ1bmNHKSkuZzsKKyAgICBm
bG9hdCBiID0gc2FtcGxlKGZ1bmNCLCBzYW1wbGVyQ29vcmQoZnVuY0IpKS5iOworICAgIGZsb2F0
IGEgPSBzYW1wbGUoZnVuY0EsIHNhbXBsZXJDb29yZChmdW5jQSkpLmE7CisgICAgcmV0dXJuIHZl
YzQociwgZywgYiwgYSk7Cit9CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFU
cmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMu
bno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisKKworQGlu
dGVyZmFjZSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgOiBDSUZpbHRlciB7CisgICAgQ0lJbWFnZSAg
KmlucHV0SW1hZ2U7CisgICAgTlNOdW1iZXIgKmlucHV0QW1wbGl0dWRlOworICAgIE5TTnVtYmVy
ICppbnB1dEV4cG9uZW50OworICAgIE5TTnVtYmVyICppbnB1dE9mZnNldDsKK30KKworQGVuZApJ
bmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9m
aWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9r
Y2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIubQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2
ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1w
b3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKKworc3RhdGljIENJS2VybmVsICpnYW1tYVRy
YW5zZmVyRmlsdGVyID0gbmlsOworCitAaW1wbGVtZW50YXRpb24gV0tHYW1tYVRyYW5zZmVyRmls
dGVyCisrICh2b2lkKWluaXRpYWxpemUKK3sKKyAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJO
YW1lOkAiV0tHYW1tYVRyYW5zZmVyIgorICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6
c2VsZgorICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQg
R2FtbWEgVHJhbnNmZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXpl
LCBrQ0lDYXRlZ29yeVZpZGVvLAorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5
U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRl
RmlsdGVyQ2F0ZWdvcmllcywKKyAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0
dHJpYnV0ZUlkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5
cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmls
XSwgQCJpbnB1dEFtcGxpdHVkZSIsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRFeHBvbmVudCIsCisgICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBd
LCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRy
aWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF0sIEAiaW5wdXRPZmZzZXQiLAorICAgICAgICAgICAgICAgICAgICAgbmlsXV07Cit9
CisKKysgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWlu
aXQKK3sKKyAgICBpZiAoIWdhbW1hVHJhbnNmZXJGaWx0ZXIpIHsKKyAgICAgICAgTlNCdW5kbGUg
KmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOworICAgICAg
ICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tHYW1t
YVRyYW5zZmVyRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOworICAgICAgICBOU1N0cmluZyAq
Y29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZV07Cisg
ICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29k
ZV07CisgICAgICAgIGdhbW1hVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRl
eDowXSByZXRhaW5dOworICAgIH0KKyAgICByZXR1cm4gW3N1cGVyIGluaXRdOworfQorCistIChD
SUltYWdlICopb3V0cHV0SW1hZ2UKK3sKKyAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtD
SVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07CisgICAgcmV0dXJuIFtzZWxm
IGFwcGx5OmdhbW1hVHJhbnNmZXJGaWx0ZXIsIGlucHV0U2FtcGxlciwgaW5wdXRBbXBsaXR1ZGUs
IGlucHV0RXhwb25lbnQsIGlucHV0T2Zmc2V0LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVy
IGRlZmluaXRpb25dLCBuaWxdOworfQorCitAZW5kCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2
aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFu
c2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBI
dW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK2tlcm5lbCB2
ZWM0IGdhbW1hVHJhbnNmZXIoc2FtcGxlciBpbWFnZSwgZmxvYXQgYW1wbGl0dWRlLCBmbG9hdCBl
eHBvbmVudCwgZmxvYXQgb2Zmc2V0KQoreworICAgIHZlYzQgQyA9IHNhbXBsZShpbWFnZSwgc2Ft
cGxlckNvb3JkKGltYWdlKSk7CisgICAgcmV0dXJuIGFtcGxpdHVkZSAqIHBvdyhDLCB2ZWM0KGV4
cG9uZW50KSkgKyBvZmZzZXQ7Cit9CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0
ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLVGFibGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6
L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgx
NkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8qIEZvciBzb21lIHJlYXNv
biBDSSBpcyBpZ25vcmluZyB0aGUgcmVxdWVzdCB0byBpbnRlcnBvbGF0ZSB0aGUgY29sb3VyIHJl
dHVybmVkCisgKiB3aGVuIHdlIHNhbXBsZSB0aGUgbG9va3VwIHRhYmxlLiAgVGhlcmVmb3JlIGl0
IGlzIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgdGhlCisgKiBibGVuZCBvcGVyYXRpb24gb3Vyc2Vs
dmVzLgorICovCitrZXJuZWwgdmVjNCB0YWJsZVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIHNhbXBs
ZXIgdGFibGUsIHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJbmRleCkKK3sKKyAgICB2ZWM0
IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOworICAgIGZsb2F0IGsgPSBk
b3QocmdiYVNlbGVjdG9yLCBDKSAqIG1heEluZGV4OworICAgIGZsb2F0IHQgPSBmcmFjdChrKTsK
KyAgICBrID0gZmxvb3Ioayk7CisgICAgdmVjNCByZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoaywg
MC4wKSkqKDEuMC10KStzYW1wbGUodGFibGUsIHZlYzIoaysxLjAsIDAuMCkpKih0KTsKKyAgICBy
ZXR1cm4gcmVzOworfQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVy
cy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFz
L2RldmljZS9xdWFydHovZmlsdGVycy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJh
bnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorCisKK0BpbnRl
cmZhY2UgV0tMaW5lYXJUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKKyAgICBDSUltYWdlICAq
aW5wdXRJbWFnZTsKKyAgICBOU051bWJlciAqaW5wdXRTbG9wZTsKKyAgICBOU051bWJlciAqaW5w
dXRJbnRlcmNlcHQ7Cit9CisKK0BlbmQKSW5kZXg6IFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFz
L2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQkocmV2aXNpb24gMTQwNDgpCisr
KyBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMyBAQAogI2ltcG9ydCAiV0tEaXNwbGFjZW1lbnRN
YXBGaWx0ZXIuaCIKICNpbXBvcnQgIldLRGlzdGFudExpZ2h0RmlsdGVyLmgiCiAjaW1wb3J0ICJX
S05vcm1hbE1hcEZpbHRlci5oIgorI2ltcG9ydCAiV0tBcml0aG1ldGljRmlsdGVyLmgiCisjaW1w
b3J0ICJXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgiCisjaW1wb3J0ICJXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIuaCIKKyNpbXBvcnQgIldLVGFibGVUcmFuc2ZlckZpbHRlci5oIgorI2ltcG9ydCAi
V0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCisjaW1wb3J0ICJXS0xpbmVhclRyYW5zZmVyRmls
dGVyLmgiCisjaW1wb3J0ICJXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCIKICNpbXBvcnQgIldLUG9p
bnRMaWdodEZpbHRlci5oIgogI2ltcG9ydCAiV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmgiCiAj
aW1wb3J0ICJXS1Nwb3RMaWdodEZpbHRlci5oIgpAQCAtNjYsNiArNzMsMjIgQEAgc3RhdGljIGlu
bGluZSBDSVZlY3RvciAqY2lWZWN0b3IoRmxvYXRQbwogICAgIHJldHVybiBbQ0lWZWN0b3IgdmVj
dG9yV2l0aFg6cG9pbnQueCgpIFk6cG9pbnQueSgpXTsKIH0KIAorc3RhdGljIGlubGluZSBDSVZl
Y3RvciAqZ2V0VmVjdG9yRm9yQ2hhbm5lbChLQ0NoYW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCkK
K3sKKyAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKKyAgICAgICAgY2FzZSBDU19SRUQ6CisgICAgICAg
ICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAuMF07
CisgICAgICAgIGNhc2UgQ1NfR1JFRU46CisgICAgICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZl
Y3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF07ICAgICAgICAgICAgCisgICAgICAgIGNh
c2UgQ1NfQkxVRToKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4w
IFk6MC4wIFo6MS4wIFc6MC4wXTsKKyAgICAgICAgY2FzZSBDU19BTFBIQToKKyAgICAgICAgICAg
IHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wIFk6MC4wIFo6MC4wIFc6MS4wXTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6
MC4wIFk6MC4wIFo6MC4wIFc6MC4wXTsKKyAgICB9Cit9CisKIEtDYW52YXNGaWx0ZXJRdWFydHo6
OktDYW52YXNGaWx0ZXJRdWFydHooKSA6IG1fZmlsdGVyQ0lDb250ZXh0KDApLCBtX2ZpbHRlckNH
TGF5ZXIoMCkKIHsKICAgICBtX2ltYWdlc0J5TmFtZSA9IEtXUVJldGFpbk5TUmVsZWFzZShbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKQEAgLTM0Nyw2ICszNzAsMTMwIEBAIENJ
RmlsdGVyICpLQ2FudmFzRkVDb2xvck1hdHJpeFF1YXJ0ejo6Z2UKICAgICBGRV9RVUFSVFpfT1VU
UFVUX1JFVFVSTjsKIH0KIAorc3RhdGljIENJSW1hZ2UgKmdlbkltYWdlRnJvbVRhYmxlKGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHRhYmxlKQoreworICAgIGludCBsZW5ndGggPSB0YWJsZS5zaXplKCk7
CisgICAgaW50IG5CeXRlcyA9IGxlbmd0aCo0KnNpemVvZihmbG9hdCk7CisgICAgZmxvYXQgKnRh
YmxlU3RvcmUgPSAoZmxvYXQgKiltYWxsb2MobkJ5dGVzKTsKKyAgICBOU0RhdGEgKmJpdG1hcERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6dGFibGVTdG9yZSBsZW5ndGg6bkJ5dGVz
XTsKKyAgICBmb3IgKFZlY3RvcjxmbG9hdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuYmVn
aW4oKTsgaXQgIT0gdGFibGUuZW5kKCk7IGl0KyspIHsKKyAgICAgICAgY29uc3QgZmxvYXQgdmFs
dWUgPSAqaXQ7CisgICAgICAgICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICAgICAgKnRhYmxl
U3RvcmUrKyA9IHZhbHVlOworICAgICAgICAqdGFibGVTdG9yZSsrID0gdmFsdWU7CisgICAgICAg
ICp0YWJsZVN0b3JlKysgPSB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIFtDSUltYWdlIGltYWdl
V2l0aEJpdG1hcERhdGE6Yml0bWFwRGF0YSBieXRlc1BlclJvdzpuQnl0ZXMgc2l6ZTpDR1NpemVN
YWtlKGxlbmd0aCwgMSkgZm9ybWF0OmtDSUZvcm1hdFJHQkFmIGNvbG9yU3BhY2U6bmlsXTsKK30K
Kworc3RhdGljIENJRmlsdGVyICpmaWx0ZXJGb3JDb21wb25lbnRGdW5jKGNvbnN0IEtDQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbiYgZnVuYykKK3sKKyAgICBDSUZpbHRlciAqZmlsdGVyOworICAg
IHN3aXRjaCAoZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1RfSURFTlRJVFk6CisgICAgICAg
ICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0lkZW50aXR5VHJhbnNm
ZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENUX1RBQkxFOgorICAgICAg
ICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiV0tUYWJsZVRyYW5zZmVy
RmlsdGVyIl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9ESVNDUkVURToK
KyAgICAgICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlciJdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1Rf
TElORUFSOgorICAgICAgICAgICAgZmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAi
V0tMaW5lYXJUcmFuc2ZlciJdOyAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ1RfR0FNTUE6CisgICAgICAgICAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJXS0dhbW1hVHJhbnNmZXIiXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgTlNMb2coQCJXQVJOSU5HOiBVbmtub3duIGZ1bmN0aW9u
IHR5cGUgZm9yIGZlQ29tcG9uZW50VHJhbnNmZXIiKTsKKyAgICAgICAgICAgIC8vYW5kIHRvIHBy
ZXZlbnQgdGhlIGVudGlyZSBzdmcgZnJvbSBmYWlsaW5nIGFzIGEgcmVzdWx0CisgICAgICAgICAg
ICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS0lkZW50aXR5VHJhbnNmZXIi
XTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmlsdGVyOworfQorCitz
dGF0aWMgdm9pZCBzZXRQYXJhbWV0ZXJzRm9yQ29tcG9uZW50RnVuYyhDSUZpbHRlciAqZmlsdGVy
LCBjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMsIENJVmVjdG9yICpjaGFu
bmVsU2VsZWN0b3IpCit7CisgICAgc3dpdGNoIChmdW5jLnR5cGUpIHsKKyAgICAgICAgY2FzZSBD
VF9UQUJMRToKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Z2VuSW1hZ2VGcm9tVGFibGUo
ZnVuYy50YWJsZVZhbHVlcykgZm9yS2V5OkAiaW5wdXRUYWJsZSJdOworICAgICAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpjaGFubmVsU2VsZWN0b3IgZm9yS2V5OkAiaW5wdXRTZWxlY3RvciJdOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfRElTQ1JFVEU6CisgICAgICAgICAg
ICBbZmlsdGVyIHNldFZhbHVlOmdlbkltYWdlRnJvbVRhYmxlKGZ1bmMudGFibGVWYWx1ZXMpIGZv
cktleTpAImlucHV0VGFibGUiXTsKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y2hhbm5l
bFNlbGVjdG9yIGZvcktleTpAImlucHV0U2VsZWN0b3IiXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENUX0xJTkVBUjoKKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpmdW5jLnNsb3BlXSBmb3JLZXk6QCJpbnB1dFNsb3BlIl07
CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
ZnVuYy5pbnRlcmNlcHRdIGZvcktleTpAImlucHV0SW50ZXJjZXB0Il07ICAgICAgICAgIAorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1RfR0FNTUE6CisgICAgICAgICAgICBbZmls
dGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5hbXBsaXR1ZGVdIGZv
cktleTpAImlucHV0QW1wbGl0dWRlIl07CisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZnVuYy5leHBvbmVudF0gZm9yS2V5OkAiaW5wdXRFeHBv
bmVudCJdOworICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OmZ1bmMub2Zmc2V0XSBmb3JLZXk6QCJpbnB1dE9mZnNldCJdOyAgIAorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvL2lkZW50aXR5IGhhcyBu
byBhcmdzCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBDSUZpbHRlciAq
Z2V0RmlsdGVyRm9yRnVuYyhjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGZ1bmMs
IENJSW1hZ2UgKmlucHV0SW1hZ2UsIENJVmVjdG9yICpjaGFubmVsU2VsZWN0b3IpIAorewkKKyAg
ICBDSUZpbHRlciAqZmlsdGVyID0gZmlsdGVyRm9yQ29tcG9uZW50RnVuYyhmdW5jKTsKKyAgICBb
ZmlsdGVyIHNldERlZmF1bHRzXTsKKyAgICAKKyAgICBzZXRQYXJhbWV0ZXJzRm9yQ29tcG9uZW50
RnVuYyhmaWx0ZXIsIGZ1bmMsIGNoYW5uZWxTZWxlY3Rvcik7CisgICAgW2ZpbHRlciBzZXRWYWx1
ZTppbnB1dEltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICByZXR1cm4gZmlsdGVyOwor
fQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldEZ1bmN0
aW9uRmlsdGVyKEtDQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsLCBDSUltYWdlICppbnB1dElt
YWdlKSBjb25zdAoreworICAgIHN3aXRjaCAoY2hhbm5lbCkgeworICAgICAgICBjYXNlIENTX1JF
RDoKKyAgICAgICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhyZWRGdW5jdGlvbigpLCBp
bnB1dEltYWdlLCBnZXRWZWN0b3JGb3JDaGFubmVsKGNoYW5uZWwpKSB2YWx1ZUZvcktleTpAIm91
dHB1dEltYWdlIl07CisgICAgICAgIGNhc2UgQ1NfR1JFRU46IAorICAgICAgICAgICAgcmV0dXJu
IFtnZXRGaWx0ZXJGb3JGdW5jKGdyZWVuRnVuY3Rpb24oKSwgaW5wdXRJbWFnZSwgZ2V0VmVjdG9y
Rm9yQ2hhbm5lbChjaGFubmVsKSkgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOworICAgICAg
ICBjYXNlIENTX0JMVUU6CisgICAgICAgICAgICByZXR1cm4gW2dldEZpbHRlckZvckZ1bmMoYmx1
ZUZ1bmN0aW9uKCksIGlucHV0SW1hZ2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZh
bHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAgICAgICAgY2FzZSBDU19BTFBIQToKKyAgICAg
ICAgICAgIHJldHVybiBbZ2V0RmlsdGVyRm9yRnVuYyhhbHBoYUZ1bmN0aW9uKCksIGlucHV0SW1h
Z2UsIGdldFZlY3RvckZvckNoYW5uZWwoY2hhbm5lbCkpIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgfQor
ICAgIAorfQorCitDSUZpbHRlciAqS0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6Omdl
dENJRmlsdGVyKEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKK3sKKyAg
ICBbV0tDb21wb25lbnRNZXJnZUZpbHRlciBjbGFzc107CisgICAgW1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlciBjbGFzc107CisgICAgW1dLVGFibGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAg
W1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBjbGFzc107CisgICAgW1dLTGluZWFyVHJhbnNmZXJG
aWx0ZXIgY2xhc3NdOworICAgIFtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgY2xhc3NdOworICAgIAor
ICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLQ29tcG9uZW50
TWVyZ2UiXTsKKyAgICBpZiAoIWZpbHRlcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBbZmls
dGVyIHNldERlZmF1bHRzXTsKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gcXVhcnR6RmlsdGVy
LT5pbnB1dEltYWdlKHRoaXMpOworICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdl
KTsgICAgCisgICAgCisgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihDU19S
RUQsIGlucHV0SW1hZ2UpIGZvcktleTpAImlucHV0RnVuY1IiXTsKKyAgICBbZmlsdGVyIHNldFZh
bHVlOmdldEZ1bmN0aW9uRmlsdGVyKENTX0dSRUVOLCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1
dEZ1bmNHIl07CisgICAgW2ZpbHRlciBzZXRWYWx1ZTpnZXRGdW5jdGlvbkZpbHRlcihDU19CTFVF
LCBpbnB1dEltYWdlKSBmb3JLZXk6QCJpbnB1dEZ1bmNCIl07CisgICAgW2ZpbHRlciBzZXRWYWx1
ZTpnZXRGdW5jdGlvbkZpbHRlcihDU19BTFBIQSwgaW5wdXRJbWFnZSkgZm9yS2V5OkAiaW5wdXRG
dW5jQSJdOworICAgIAorICAgIEZFX1FVQVJUWl9PVVRQVVRfUkVUVVJOOworICAgIHJldHVybiBu
aWw7Cit9CisKIENJRmlsdGVyICpLQ2FudmFzRkVDb21wb3NpdGVRdWFydHo6OmdldENJRmlsdGVy
KEtDYW52YXNGaWx0ZXJRdWFydHogKnF1YXJ0ekZpbHRlcikgY29uc3QKIHsKICAgICBDSUZpbHRl
ciAqZmlsdGVyID0gbmlsOwpAQCAtMzkyLDIxICs1MzksNiBAQCBDSUZpbHRlciAqS0NhbnZhc0ZF
Q29tcG9zaXRlUXVhcnR6OjpnZXRDCiAgICAgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk47CiB9CiAK
LXN0YXRpYyBpbmxpbmUgQ0lWZWN0b3IgKmdldFZlY3RvckZvckNoYW5uZWwoaW50IGlkeCl7Ci0g
ICAgc3dpdGNoKGlkeCl7Ci0gICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZl
Y3RvcldpdGhYOjEuMCBZOjAuMCBaOjAuMCBXOjAuMF07Ci0gICAgY2FzZSAxOgotICAgICAgICBy
ZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjEuMCBaOjAuMCBXOjAuMF07ICAgICAg
ICAgICAgCi0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gW0NJVmVjdG9yIHZlY3RvcldpdGhY
OjAuMCBZOjAuMCBaOjEuMCBXOjAuMF07Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gW0NJ
VmVjdG9yIHZlY3RvcldpdGhYOjAuMCBZOjAuMCBaOjAuMCBXOjEuMF07Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjAgWTowLjAgWjowLjAgVzow
LjBdOwotICAgIH0KLX0KLQogQ0lGaWx0ZXIgKktDYW52YXNGRURpc3BsYWNlbWVudE1hcFF1YXJ0
ejo6Z2V0Q0lGaWx0ZXIoS0NhbnZhc0ZpbHRlclF1YXJ0eiAqcXVhcnR6RmlsdGVyKSBjb25zdAog
ewogICAgIENJRmlsdGVyICpmaWx0ZXIgPSBuaWw7CkluZGV4OiBXZWJDb3JlL2tjYW52YXMvS0Nh
bnZhc0ZpbHRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9LQ2FudmFzRmls
dGVycy5jcHAJKHJldmlzaW9uIDE0MDQ4KQorKysgV2ViQ29yZS9rY2FudmFzL0tDYW52YXNGaWx0
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDEzICsyMzYsMzIgQEAgc3RhdGljIFFUZXh0
U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZQogCiBzdGF0aWMgUVRleHRTdHJlYW0gJm9wZXJh
dG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
JmZ1bmMpCiB7Ci0gICAgdHMgPDwgIlt0eXBlPSIgPDwgZnVuYy50eXBlIDw8ICJdIiAKLSAgICAg
ICAgPDwgIiBbdGFibGUgdmFsdWVzPSIgPDwgZnVuYy50YWJsZVZhbHVlcyA8PCAiXSIKLSAgICAg
ICAgPDwgIiBbc2xvcGU9IiA8PCBmdW5jLnNsb3BlIDw8ICJdIgotICAgICAgICA8PCAiIFtpbnRl
cmNlcHQ9IiA8PCBmdW5jLmludGVyY2VwdCA8PCAiXSIKLSAgICAgICAgPDwgIiBbYW1wbGl0dWRl
PSIgPDwgZnVuYy5hbXBsaXR1ZGUgPDwgIl0iCi0gICAgICAgIDw8ICIgW2V4cG9uZW50PSIgPDwg
ZnVuYy5leHBvbmVudCA8PCAiXSIKLSAgICAgICAgPDwgIiBbb2Zmc2V0PSIgPDwgZnVuYy5vZmZz
ZXQgPDwgIl0iOworICAgIHRzIDw8ICJbdHlwZT0iIDw8IGZ1bmMudHlwZSA8PCAiXSI7IAorICAg
IHN3aXRjaCAoZnVuYy50eXBlKSB7CisgICAgICAgIGNhc2UgQ1RfSURFTlRJVFk6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9UQUJMRToKKyAgICAgICAgY2FzZSBDVF9ESVND
UkVURToKKyAgICAgICAgICAgIHRzIDw8ICIgW3RhYmxlIHZhbHVlcz0iOworICAgICAgICAgICAg
VmVjdG9yPGZsb2F0Pjo6Y29uc3RfaXRlcmF0b3IgaXRyPWZ1bmMudGFibGVWYWx1ZXMuYmVnaW4o
KTsKKyAgICAgICAgICAgIGlmIChpdHIgIT0gZnVuYy50YWJsZVZhbHVlcy5lbmQoKSkgeworICAg
ICAgICAgICAgICAgIHRzIDw8ICppdHIrKzsKKyAgICAgICAgICAgICAgICBmb3IgKDsgaXRyIT1m
dW5jLnRhYmxlVmFsdWVzLmVuZCgpOyBpdHIrKykgeworICAgICAgICAgICAgICAgICAgICB0cyA8
PCAiICIgPDwgKml0cjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB0cyA8PCAiXSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9MSU5F
QVI6CisgICAgICAgICAgICB0cyA8PCAiIFtzbG9wZT0iIDw8IGZ1bmMuc2xvcGUgPDwgIl0iCisg
ICAgICAgICAgICAgICA8PCAiIFtpbnRlcmNlcHQ9IiA8PCBmdW5jLmludGVyY2VwdCA8PCAiXSI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDVF9HQU1NQToKKyAgICAgICAgICAg
IHRzIDw8ICIgW2FtcGxpdHVkZT0iIDw8IGZ1bmMuYW1wbGl0dWRlIDw8ICJdIgorICAgICAgICAg
ICAgICAgPDwgIiBbZXhwb25lbnQ9IiA8PCBmdW5jLmV4cG9uZW50IDw8ICJdIgorICAgICAgICAg
ICAgICAgPDwgIiBbb2Zmc2V0PSIgPDwgZnVuYy5vZmZzZXQgPDwgIl0iOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIHJldHVybiB0czsgICAgICAgIAogfQogCkluZGV4OiBXZWJDb3Jl
L2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tjYW52YXMv
S0NhbnZhc0ZpbHRlcnMuaAkocmV2aXNpb24gMTQwNDgpCisrKyBXZWJDb3JlL2tjYW52YXMvS0Nh
bnZhc0ZpbHRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDggKzIxMiw5IEBAIHR5cGVkZWYg
ZW51bSB7CiAKIHN0cnVjdCBLQ0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24KIHsKKyAgICBLQ0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb24oKSA6IHR5cGUoQ1RfSURFTlRJVFkpIHt9CiAgICAgS0ND
b21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZTsKLSAgICBRM1ZhbHVlTGlzdDxmbG9hdD4gdGFibGVW
YWx1ZXM7CisgICAgVmVjdG9yPGZsb2F0PiB0YWJsZVZhbHVlczsKICAgICBmbG9hdCBzbG9wZTsK
ICAgICBmbG9hdCBpbnRlcmNlcHQ7CiAgICAgZmxvYXQgYW1wbGl0dWRlOwpJbmRleDogV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0
MDQ4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OSBA
QAorMjAwNi0wNC0yNiAgT2xpdmVyICA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ2hhbmdl
TG9nOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OktDQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbjo6S0NDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uKToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1
YXJ0ei5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVh
cnR6Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVjdG9yRm9yQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpnZW5JbWFnZUZyb21UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJG
b3JDb21wb25lbnRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBhcmFtZXRlcnNGb3JDb21w
b25lbnRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbHRlckZvckZ1bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6S0NhbnZhc0ZFQ29tcG9uZW50VHJhbnNmZXJRdWFydHo6OmdldEZ1bmN0aW9u
RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNGRUNvbXBvbmVudFRyYW5zZmVyUXVh
cnR6OjpnZXRDSUZpbHRlcik6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdEZXZpY2VRdWFydHoubW06CisgICAgICAgIChXZWJDb3JlOjpLUmVuZGVyaW5nRGV2aWNl
UXVhcnR6OjpjcmVhdGVGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw6IEFkZGVkLgorICAg
ICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLQ29tcG9uZW50TWVyZ2VGaWx0
ZXIuaDogQWRkZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tD
b21wb25lbnRNZXJnZUZpbHRlci5tOiBBZGRlZC4KKyAgICAgICAgKCtbV0tDb21wb25lbnRNZXJn
ZUZpbHRlciBpbml0aWFsaXplXSk6CisgICAgICAgICgrW1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6XSk6CisgICAgICAgICgtW1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIgaW5p
dF0pOgorICAgICAgICAoLVtXS0NvbXBvbmVudE1lcmdlRmlsdGVyIG91dHB1dEltYWdlXSk6Cisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLmNpa2VybmVsOiBBZGRlZC4KKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHov
ZmlsdGVycy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICoga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm06IEFk
ZGVkLgorICAgICAgICAoK1tXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgaW5pdGlhbGl6ZV0pOgor
ICAgICAgICAoK1tXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6XSk6Cisg
ICAgICAgICgtW1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlciBpbml0XSk6CisgICAgICAgICgtW1dL
RGlzY3JldGVUcmFuc2ZlckZpbHRlciBvdXRwdXRJbWFnZV0pOgorICAgICAgICAqIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbDogQWRk
ZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmg6IEFkZGVkLgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0
ZXJzL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tOiBBZGRlZC4KKyAgICAgICAgKCtbV0tHYW1tYVRy
YW5zZmVyRmlsdGVyIGluaXRpYWxpemVdKToKKyAgICAgICAgKCtbV0tHYW1tYVRyYW5zZmVyRmls
dGVyIGZpbHRlcldpdGhOYW1lOl0pOgorICAgICAgICAoLVtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIg
aW5pdF0pOgorICAgICAgICAoLVtXS0dhbW1hVHJhbnNmZXJGaWx0ZXIgb3V0cHV0SW1hZ2VdKToK
KyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRl
cnMvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm06IEFkZGVkLgorICAgICAgICAoK1tXS0lkZW50
aXR5VHJhbnNmZXJGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoK1tXS0lkZW50aXR5VHJh
bnNmZXJGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6XSk6CisgICAgICAgICgtW1dLSWRlbnRpdHlUcmFu
c2ZlckZpbHRlciBpbml0XSk6CisgICAgICAgICgtW1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciBv
dXRwdXRJbWFnZV0pOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dL
TGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw6IEFkZGVkLgorICAgICAgICAqIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9maWx0ZXJzL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaDogQWRkZWQuCisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5tOiBBZGRlZC4KKyAgICAgICAgKCtbV0tMaW5lYXJUcmFuc2ZlckZpbHRlciBpbml0aWFs
aXplXSk6CisgICAgICAgICgrW1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6
XSk6CisgICAgICAgICgtW1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIgaW5pdF0pOgorICAgICAgICAo
LVtXS0xpbmVhclRyYW5zZmVyRmlsdGVyIG91dHB1dEltYWdlXSk6CisgICAgICAgICoga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L2ZpbHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOiBB
ZGRlZC4KKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovZmlsdGVycy9XS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L2Zp
bHRlcnMvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm06IEFkZGVkLgorICAgICAgICAoK1tXS1RhYmxl
VHJhbnNmZXJGaWx0ZXIgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoK1tXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIgZmlsdGVyV2l0aE5hbWU6XSk6CisgICAgICAgICgtW1dLVGFibGVUcmFuc2ZlckZpbHRl
ciBpbml0XSk6CisgICAgICAgICgtW1dLVGFibGVUcmFuc2ZlckZpbHRlciBvdXRwdXRJbWFnZV0p
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQ6OnRyYW5zZmVyRnVuY3Rpb24pOgorCiAyMDA2LTA0LTI1ICBFcmljIFNlaWRlbCAg
PGVzZWlkZWxAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG1qcy4KSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0MDQ4KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsNyArMTA1LDcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAog
ICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJnYW1tYSIpCiAgICAgICAgICAgICB0eXBlKCktPnNl
dEJhc2VWYWwoU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSk7CiAgICAgfQotICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0cikKICAgICAgICAg
dGFibGVWYWx1ZXMoKS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6c2xvcGVBdHRyKQogICAg
ICAgICBzbG9wZSgpLT5zZXRCYXNlVmFsKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJs
ZSgpKTsKQEAgLTEzMCw2ICsxMzAsMTAgQEAgS0NDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNW
R0NvbXBvbmVudAogICAgIGZ1bmMuYW1wbGl0dWRlID0gYW1wbGl0dWRlKCktPmJhc2VWYWwoKTsK
ICAgICBmdW5jLmV4cG9uZW50ID0gZXhwb25lbnQoKS0+YmFzZVZhbCgpOwogICAgIGZ1bmMub2Zm
c2V0ID0gb2Zmc2V0KCktPmJhc2VWYWwoKTsKKyAgICBTVkdOdW1iZXJMaXN0ICpudW1iZXJzID0g
dGFibGVWYWx1ZXMoKS0+YmFzZVZhbCgpOworICAgIHVuc2lnbmVkIGludCBuciA9IG51bWJlcnMt
Pm51bWJlck9mSXRlbXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG5yOyBp
KyspCisgICAgICAgIGZ1bmMudGFibGVWYWx1ZXMuYXBwZW5kKG51bWJlcnMtPmdldEl0ZW0oaSkt
PnZhbHVlKCkpOwogICAgIHJldHVybiBmdW5jOwogfQogCg==
</data>
<flag name="review"
          id="2202"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>