diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521a..000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 6e8667213..000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 674698be7..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/mygit.iml b/.idea/mygit.iml deleted file mode 100644 index d6ebd4805..000000000 --- a/.idea/mygit.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 2596f599c..000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 000000000..a6e8b3149 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "keyToString": { + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.cidr.known.project.marker": "true", + "cf.first.check.clang-format": "false", + "cidr.known.project.marker": "true", + "git-widget-placeholder": "master", + "last_opened_file_path": "/Users/remicolin/Documents/Proof of passport/mygit" + } +} + + + + + 1704880619858 + + + + \ No newline at end of file diff --git a/README.md b/README.md index b62c6b507..17878e721 100644 --- a/README.md +++ b/README.md @@ -14,21 +14,28 @@ As a first application, users who can prove they indeed hold a valid passport ca - `app`: Mobile app - `circuits`: Circom circuits - `contracts`: Solidity contracts +- `common`: Common utils ## Roadmap - βœ… Basic passport verifier circuit -- 🚧 Optimization -- 🚧 Selective disclosure +- βœ… Selective disclosure - βœ… Basic react native frontend - βœ… Passport verification pipeline, android -- 🚧 Passport verification pipeline, iOS +- βœ… Passport verification pipeline, iOS +- βœ… Contracts +- βœ… On-chain registry of CSCA pubkeys based on the official ICAO masterlist +- 🚧 Optimizations - 🚧 Reimplementation of the passport NFC specs in javascript -- 🚧 Contracts -- 🚧 On-chain registry of CSCA pubkeys based on the official ICAO masterlist ## FAQ +#### Does my passport support Proof of Passport ? + +![EPassport_logo_grey](https://github.com/zk-passport/proof-of-passport/assets/62038140/c3263600-19b6-45f9-9b5f-63f352992c88) + +If it has this symbol on the front cover, yes. + #### What exactly is being signed ? The circuit looks like this: @@ -91,6 +98,7 @@ The SBT circuit includes a commitment to your address. If someone else tries to - Build a social network/anonymous message board for people from one specific country - Create a sybil-resistance tool to protect social networks against spambots - Do an airdrop farming protection tool +- Allow DeFi protocols to check if the nationality of a user is included in a set of forbidden states - Gate an adult content website to a specific age - Passport Wallet: use [active authentication](https://en.wikipedia.org/wiki/Biometric_passport#:~:text=Active%20Authentication%20(AA),Using%20AA%20is%20optional.) to build a wallet, a multisig or a recovery module using passport signatures @@ -106,7 +114,4 @@ We are actively looking for contributors. Please check the [open issues](https:/ Contact me @FlorentTavernier on telegram for any feedback. -Thanks to [Youssef](https://github.com/yssf-io), [Aayush](https://twitter.com/yush_g), [Andy](https://twitter.com/viv_boop), [Vivek](https://twitter.com/viv_boop), [Marcus](https://github.com/base0010) and [Andrew](https://github.com/AndrewCLu) for contributing ideas and helping build this technology, and to [EF PSE](https://pse.dev/) for supporting this work through grants! - - -//check \ No newline at end of file +Thanks to [Youssef](https://github.com/yssf-io), [Aayush](https://twitter.com/yush_g), [Andy](https://twitter.com/AndyGuzmanEth), [Vivek](https://twitter.com/viv_boop), [Marcus](https://github.com/base0010) and [Andrew](https://github.com/AndrewCLu) for contributing ideas and helping build this technology, and to [EF PSE](https://pse.dev/) for supporting this work through grants! diff --git a/app/App.tsx b/app/App.tsx index 2fa7e0286..c2ec15aa8 100644 --- a/app/App.tsx +++ b/app/App.tsx @@ -8,6 +8,7 @@ import { NativeModules, DeviceEventEmitter, TextInput, + Platform, } from 'react-native'; import { @@ -54,7 +55,10 @@ import { dataHashesObjToArray, formatAndConcatenateDataHashes, formatMrz, - splitToWords + splitToWords, + hexStringToSignedIntArray, + formatProofIOS, + formatInputsIOS } from '../common/src/utils/utils'; import { samplePassportData } from '../common/src/utils/passportDataStatic'; @@ -64,9 +68,15 @@ import axios from 'axios'; import groth16ExportSolidityCallData from './utils/snarkjs'; import contractAddresses from "./deployments/addresses.json" import proofOfPassportArtefact from "./deployments/ProofOfPassport.json"; -import EnterDetailsScreen from './src/screens/EnterDetailsScreen'; import MainScreen from './src/screens/MainScreen'; import { extractMRZInfo , Steps} from './src/utils/utils'; +import forge from 'node-forge'; +import { Buffer } from 'buffer'; +global.Buffer = Buffer; + +import CustomTextInput from './src/components/CustomTextInput'; +import EnterDetailsScreen from './src/screens/EnterDetailsScreen'; + console.log('DEFAULT_PNUMBER', DEFAULT_PNUMBER); const SKIP_SCAN = false; @@ -115,8 +125,15 @@ function App(): JSX.Element { }); const startCameraScan = () => { + if (Platform.OS !== 'android') { + Toast.show({ + type: 'info', + text1: "Camera scan supported soon on iOS", + }) + return + } NativeModules.CameraActivityModule.startCameraActivity() - .then((mrzInfo) => { + .then((mrzInfo : string) => { try { const { documentNumber, birthDate, expiryDate } = extractMRZInfo(mrzInfo); setPassportNumber(documentNumber); @@ -127,7 +144,7 @@ function App(): JSX.Element { console.error('Invalid MRZ format:', error.message); } }) - .catch((error) => { + .catch((error: any) => { console.error('Camera Activity Error:', error); }); }; @@ -164,14 +181,77 @@ function App(): JSX.Element { }, []); useEffect(() => { + if (Platform.OS !== 'android') { + NativeModules.Prover.runInitAction() // for mopro, ios only rn + } if (SKIP_SCAN && passportData === null) { setPassportData(samplePassportData as PassportData); setStep(Steps.NFC_SCAN_COMPLETED); } }, []); - - async function handleResponse(response: any) { + async function handleResponseIOS(response: any) { + const parsed = JSON.parse(response); + + const eContentBase64 = parsed.eContentBase64; // this is what we call concatenatedDataHashes in our world + const signedAttributes = parsed.signedAttributes; // this is what we call eContent in our world + const signatureAlgorithm = parsed.signatureAlgorithm; + const mrz = parsed.passportMRZ; + const dataGroupHashes = parsed.dataGroupHashes; + const signatureBase64 = parsed.signatureBase64; + + console.log('parsed.documentSigningCertificate', parsed.documentSigningCertificate) + const pem = JSON.parse(parsed.documentSigningCertificate).PEM.replace(/\\\\n/g, '\n') + console.log('pem', pem) + + const cert = forge.pki.certificateFromPem(pem); + const publicKey = cert.publicKey; + console.log('publicKey', publicKey) + + const modulus = (publicKey as any).n.toString(10); + + const eContentArray = Array.from(Buffer.from(signedAttributes, 'base64')); + const signedEContentArray = eContentArray.map(byte => byte > 127 ? byte - 256 : byte); + + const concatenatedDataHashesArray = Array.from(Buffer.from(eContentBase64, 'base64')); + const concatenatedDataHashesArraySigned = concatenatedDataHashesArray.map(byte => byte > 127 ? byte - 256 : byte); + + const dgHashes = JSON.parse(dataGroupHashes); + console.log('dgHashes', dgHashes) + + const dataGroupHashesArray = Object.keys(dgHashes) + .map(key => { + const dgNumber = parseInt(key.replace('DG', '')); + const hashArray = hexStringToSignedIntArray(dgHashes[key].computedHash); + return [dgNumber, hashArray]; + }) + .sort((a, b) => (a[0] as number) - (b[0] as number)); + + const encryptedDigestArray = Array.from(Buffer.from(signatureBase64, 'base64')).map(byte => byte > 127 ? byte - 256 : byte); + + const passportData = { + mrz, + signatureAlgorithm, + pubKey: { + modulus: modulus, + }, + dataGroupHashes: concatenatedDataHashesArraySigned, + eContent: signedEContentArray, + encryptedDigest: encryptedDigestArray, + }; + + console.log('mrz', passportData.mrz); + console.log('signatureAlgorithm', passportData.signatureAlgorithm); + console.log('pubKey', passportData.pubKey); + console.log('dataGroupHashes', passportData.dataGroupHashes); + console.log('eContent', passportData.eContent); + console.log('encryptedDigest', passportData.encryptedDigest); + + setPassportData(passportData); + setStep('scanCompleted'); + } + + async function handleResponseAndroid(response: any) { const { mrz, signatureAlgorithm, @@ -216,11 +296,18 @@ function App(): JSX.Element { }) return } - // 1. start a scan - // 2. press the back of your android phone against the passport - // 3. wait for the scan(...) Promise to get resolved/rejected + console.log('scanning...'); setStep(Steps.NFC_SCANNING); + + if (Platform.OS === 'android') { + scanAndroid(); + } else { + scanIOS(); + } + } + + async function scanAndroid() { try { const response = await PassportReader.scan({ documentNumber: passportNumber, @@ -229,7 +316,26 @@ function App(): JSX.Element { }); console.log('response', response); console.log('scanned'); - handleResponse(response); + handleResponseAndroid(response); + } catch (e: any) { + console.log('error during scan :', e); + Toast.show({ + type: 'error', + text1: e.message, + }) + } + } + + async function scanIOS() { + try { + const response = await NativeModules.PassportReader.scanPassport( + passportNumber, + dateOfBirth, + dateOfExpiry + ); + console.log('response', response); + console.log('scanned'); + handleResponseIOS(response); } catch (e: any) { console.log('error during scan :', e); Toast.show({ @@ -254,10 +360,14 @@ function App(): JSX.Element { // 2. Format all the data as inputs for the circuit const formattedMrz = formatMrz(passportData.mrz); const mrzHash = hash(formatMrz(passportData.mrz)); - const concatenatedDataHashes = formatAndConcatenateDataHashes( - mrzHash, - passportData.dataGroupHashes as DataHash[], - ); + + const concatenatedDataHashes = + Array.isArray(passportData.dataGroupHashes[0]) + ? formatAndConcatenateDataHashes( + mrzHash, + passportData.dataGroupHashes as DataHash[], + ) + : passportData.dataGroupHashes const reveal_bitmap = Array.from({ length: 88 }, (_) => '0'); @@ -271,7 +381,7 @@ function App(): JSX.Element { } } - if (passportData.signatureAlgorithm !== "SHA256withRSA") { + if (!["SHA256withRSA", "sha256WithRSAEncryption"].includes(passportData.signatureAlgorithm)) { console.log(`${passportData.signatureAlgorithm} not supported for proof right now.`); setError(`${passportData.signatureAlgorithm} not supported for proof right now.`); return; @@ -280,7 +390,7 @@ function App(): JSX.Element { const inputs = { mrz: Array.from(formattedMrz).map(byte => String(byte)), reveal_bitmap: reveal_bitmap.map(byte => String(byte)), - dataHashes: Array.from(concatenatedDataHashes.map(toUnsignedByte)).map(byte => String(byte)), + dataHashes: Array.from((concatenatedDataHashes as number[]).map(toUnsignedByte)).map(byte => String(byte)), eContentBytes: Array.from(passportData.eContent.map(toUnsignedByte)).map(byte => String(byte)), signature: splitToWords( BigInt(bytesToBigDecimal(passportData.encryptedDigest)), @@ -295,11 +405,21 @@ function App(): JSX.Element { address, } - // 3. Generate a proof of passport - const start = Date.now(); - NativeModules.RNPassportReader.provePassport(inputs, (err: any, res: any) => { - const end = Date.now(); + console.log('inputs', inputs) + const start = Date.now(); + if (Platform.OS === 'android') { + await proveAndroid(inputs); + } else { + await proveIOS(inputs); + } + const end = Date.now(); + console.log('Total proof time from frontend:', end - start); + setTotalTime(end - start); + }; + + async function proveAndroid(inputs: any) { + NativeModules.RNPassportReader.provePassport(inputs, (err: any, res: any) => { if (err) { console.error(err); setError( @@ -319,7 +439,6 @@ function App(): JSX.Element { console.log('deserializedInputs', deserializedInputs); setProofTime(parsedResponse.duration); - setTotalTime(end - start); setProof({ proof: JSON.stringify(deserializedProof), @@ -328,7 +447,41 @@ function App(): JSX.Element { setGeneratingProof(false); setStep(Steps.PROOF_GENERATED); }); - }; + } + + async function proveIOS(inputs: any) { + try { + console.log('running mopro init action') + await NativeModules.Prover.runInitAction() + + console.log('running mopro prove action') + const response = await NativeModules.Prover.runProveAction({ + ...inputs, + address: [BigInt(address).toString()] + }) + console.log('proof response:', response) + const parsedResponse = JSON.parse(response) + + console.log('running mopro verify action') + const res = await NativeModules.Prover.runVerifyAction() + console.log('verify response:', res) + + setProof({ + proof: JSON.stringify(formatProofIOS(parsedResponse.proof)), + inputs: JSON.stringify(formatInputsIOS(parsedResponse.inputs)), + }); + + // setProofTime(response.duration); + setGeneratingProof(false) + setStep('proofGenerated'); + } catch (err: any) { + console.log('err', err); + setError( + "err: " + err.toString(), + ); + } + } + const handleMint = async () => { setMinting(true) @@ -353,22 +506,22 @@ function App(): JSX.Element { console.log('callData', callData); // format transaction - // for now, we do it all on mumbai + // for now, we do it all on sepolia try { - const provider = new ethers.JsonRpcProvider('https://polygon-mumbai-bor.publicnode.com'); - const proofOfPassportOnMumbai = new ethers.Contract(contractAddresses.ProofOfPassport, proofOfPassportArtefact.abi, provider); + const provider = new ethers.JsonRpcProvider('https://gateway.tenderly.co/public/sepolia'); + const proofOfPassportOnSepolia = new ethers.Contract(contractAddresses.ProofOfPassport, proofOfPassportArtefact.abi, provider); - const transactionRequest = await proofOfPassportOnMumbai + const transactionRequest = await proofOfPassportOnSepolia .mint.populateTransaction(...callData); console.log('transactionRequest', transactionRequest); const response = await axios.post(AWS_ENDPOINT, { - chain: "mumbai", + chain: "sepolia", tx_data: transactionRequest }); console.log('response status', response.status) console.log('response data', response.data) - setMintText(`Network: Mumbai. Transaction hash: ${response.data.hash}`) + setMintText(`Network: Sepolia. Transaction hash: ${response.data.hash}`) const receipt = await provider.waitForTransaction(response.data.hash); console.log('receipt', receipt) if (receipt?.status === 1) { @@ -376,16 +529,37 @@ function App(): JSX.Element { type: 'success', text1: 'Proof of passport minted', }) - setMintText(`SBT minted. Network: Mumbai. Transaction hash: ${response.data.hash}`) + setMintText(`SBT minted. Network: Sepolia. Transaction hash: ${response.data.hash}`) } else { Toast.show({ type: 'error', text1: 'Proof of passport minting failed', }) - setMintText(`Error minting SBT. Network: Mumbai. Transaction hash: ${response.data.hash}`) + setMintText(`Error minting SBT. Network: Sepolia. Transaction hash: ${response.data.hash}`) } - } catch (err) { + } catch (err: any) { console.log('err', err); + if (err.isAxiosError && err.response) { + const errorMessage = err.response.data.error + console.log('Server error message:', errorMessage); + + // parse blockchain error and show it + const match = errorMessage.match(/execution reverted: "([^"]*)"/); + if (match && match[1]) { + console.log('Parsed blockchain error:', match[1]); + Toast.show({ + type: 'error', + text1: `Error: ${match[1]}`, + }) + } else { + Toast.show({ + type: 'error', + text1: `Error: mint failed`, + }) + console.log('Failed to parse blockchain error'); + } + } + setMintText(`Error minting SBT. Network: Sepolia.`) } }; diff --git a/app/README.md b/app/README.md index 291b70206..d6c2e8227 100644 --- a/app/README.md +++ b/app/README.md @@ -1,12 +1,14 @@ # Proof of Passport App -Only Android right now, under heavy development +### Requirements -#### Requirements +Install `nodejs v18`, [circom](https://docs.circom.io/) and [snarkjs](https://github.com/iden3/snarkjs) -Install `nodejs v18` +For android, install java, android studio and the android sdk -#### Installation +For ios, install Xcode and [cocoapods](https://cocoapods.org/) + +### Installation ```bash yarn @@ -17,38 +19,65 @@ In `/common`, also run: yarn ``` -#### Add circuit build +### Build the app Go to the `circuit` folder of the monorepo and build the circuit. -#### Build native lib +#### Build the android native module -In `/script`, run: +Run: ``` -./build_rust.sh +./scripts/build_android_module.sh ``` -This will build the `libhalo2_circom_passport.so` lib and copy it to the desired place to be used by the app. -The config used is in `android/react-native-passport-reader/android/build.gradle`. -You can go there to change the profile (`debug` or `release`) You might need to set the rust-toolchain rust version as global default. Example: ``` rustup default 1.67.0 ``` -And install the targets like this: + +This you modify the circuits, you might have to modify `ark-circom-passport/src/passport.rs` too. + +#### Build the iOS native module + +Run: ``` -rustup target add aarch64-linux-android +./scripts/build_ios_module.sh ``` +Now: +``` +cd ios +pod install +./post_install.sh +cd .. +``` + +#### Run the server + To run the server, first connect your phone to your computer, allow access, then: ``` yarn start ``` Then press `a` for android or `i` for iOS +If you want to see the logs and have a better ios developer experience, open `/ios` in Xcode and launch the app from there instead. + +> :warning: Due to the current limitations of mopro, see [#51](https://github.com/zk-passport/proof-of-passport/issues/51), the proving on iOS only works when the app is run on Xcode. It will not work with the react native server or in a .ipa build. We are working on fixing that. + +To see the android logs you'll have to use the Android Studio Logcat. + To export an apk: ``` cd android ./gradlew assembleRelease ``` The built apk it located at `android/app/build/outputs/apk/release/app-release.apk` + +#### Download zkey +If you want to mint a proof of passport SBT, instead of building the circuit yourself, run: +``` +./scripts/download_current_zkey.sh +``` + +This will download the zkey currently deployed onchain in the proof of passport contract and place it in `circuits/build`` +Then, build the android or iOS native module and run the app. diff --git a/app/android/android-passport-reader/app/build.gradle b/app/android/android-passport-reader/app/build.gradle index 3c353a252..dfb69a1ab 100644 --- a/app/android/android-passport-reader/app/build.gradle +++ b/app/android/android-passport-reader/app/build.gradle @@ -53,8 +53,6 @@ dependencies { androidTestImplementation 'androidx.test:runner:1.5.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // ML Kit dependencies - implementation 'com.google.firebase:firebase-core:21.1.1' - implementation 'com.google.firebase:firebase-ml-common:22.1.2' implementation 'com.google.android.gms:play-services-mlkit-text-recognition:18.0.2' //NFC Passport @@ -100,5 +98,4 @@ dependencies { implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' } -apply plugin: 'com.google.gms.google-services' diff --git a/app/android/android-passport-reader/app/google-services.json b/app/android/android-passport-reader/app/google-services.json deleted file mode 100644 index a01329ae8..000000000 --- a/app/android/android-passport-reader/app/google-services.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "project_info": { - "project_number": "535192847858", - "project_id": "passport-reader-7e4e8", - "storage_bucket": "passport-reader-7e4e8.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:535192847858:android:7adfb90700a24d15af176b", - "android_client_info": { - "package_name": "example.jllarraz.com.passportreader" - } - }, - "oauth_client": [], - "api_key": [ - { - "current_key": "AIzaSyAFicYp41w4dFSq4SIiZbpKTJVVYUrMSHw" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionImageProcessor.kt b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionImageProcessor.kt index 3b9b6d3ec..3e9446d73 100755 --- a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionImageProcessor.kt +++ b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionImageProcessor.kt @@ -16,7 +16,6 @@ package example.jllarraz.com.passportreader.mlkit import android.graphics.Bitmap import android.media.Image -import com.google.firebase.ml.common.FirebaseMLException import com.google.mlkit.vision.common.InputImage import io.fotoapparat.preview.Frame @@ -26,7 +25,6 @@ import java.nio.ByteBuffer interface VisionImageProcessor { /** Processes the images with the underlying machine learning models. */ - @Throws(FirebaseMLException::class) fun process(data: ByteBuffer, frameMetadata: FrameMetadata, graphicOverlay: GraphicOverlay?=null, isOriginalImageReturned:Boolean = true, listener: VisionProcessorBase.Listener):Boolean /** Processes the bitmap images. */ diff --git a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionProcessorBase.kt b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionProcessorBase.kt index 9f587a51d..05ac63e3b 100755 --- a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionProcessorBase.kt +++ b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/mlkit/VisionProcessorBase.kt @@ -17,7 +17,6 @@ import android.graphics.Bitmap import android.media.Image import com.google.android.gms.tasks.Task -import com.google.firebase.ml.common.FirebaseMLException import com.google.mlkit.vision.common.InputImage import example.jllarraz.com.passportreader.utils.ImageUtil import io.fotoapparat.preview.Frame @@ -270,7 +269,6 @@ abstract class VisionProcessorBase : VisionImageProcessor { override fun stop() {} - @Throws(FirebaseMLException::class) protected abstract fun detectInImage(image: InputImage): Task diff --git a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/ui/fragments/CameraMLKitFragment.kt b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/ui/fragments/CameraMLKitFragment.kt index 88fac2998..52f8b6537 100755 --- a/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/ui/fragments/CameraMLKitFragment.kt +++ b/app/android/android-passport-reader/app/src/main/java/example/jllarraz/com/passportreader/ui/fragments/CameraMLKitFragment.kt @@ -250,8 +250,6 @@ class CameraMLKitFragment : CameraFragment() { mHandler.post { try { - binding?.statusViewTop?.text = getString(R.string.status_bar_ocr, mrzInfo.documentNumber, mrzInfo.dateOfBirth, mrzInfo.dateOfExpiry) - binding?.statusViewBottom?.text = getString(R.string.status_bar_success, timeRequired) binding?.statusViewBottom?.setTextColor(resources.getColor(R.color.status_text)) if (cameraMLKitCallback != null) { cameraMLKitCallback!!.onPassportRead(mrzInfo) @@ -270,7 +268,6 @@ class CameraMLKitFragment : CameraFragment() { } mHandler.post { try { - binding?.statusViewBottom?.text = getString(R.string.status_bar_failure, timeRequired) binding?.statusViewBottom?.setTextColor(Color.RED) binding?.statusViewTop?.text = "" } catch (e: IllegalStateException) { diff --git a/app/android/android-passport-reader/app/src/main/res/values/strings.xml b/app/android/android-passport-reader/app/src/main/res/values/strings.xml index 6b8507d88..4d542d8b2 100644 --- a/app/android/android-passport-reader/app/src/main/res/values/strings.xml +++ b/app/android/android-passport-reader/app/src/main/res/values/strings.xml @@ -16,9 +16,6 @@ Installation OCR: %1d%% - Document Number: %1s Date of Birth: %2s Expiration Date: %3s - OCR Detected - Time required: %2dms - OCR Read failure - Time required: %1d ms Put your phone over your passport and don\'t move it diff --git a/app/android/android-passport-reader/build.gradle b/app/android/android-passport-reader/build.gradle index 04cdbb6f3..4a9f497f9 100644 --- a/app/android/android-passport-reader/build.gradle +++ b/app/android/android-passport-reader/build.gradle @@ -21,7 +21,6 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' - classpath 'com.google.gms:google-services:4.4.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/app/android/app/src/main/java/com/awesomeproject/MainActivity.java b/app/android/app/src/main/java/com/awesomeproject/MainActivity.java index 7cb608d26..7db9d1577 100644 --- a/app/android/app/src/main/java/com/awesomeproject/MainActivity.java +++ b/app/android/app/src/main/java/com/awesomeproject/MainActivity.java @@ -28,7 +28,7 @@ public class MainActivity extends ReactActivity { */ @Override protected String getMainComponentName() { - return "Proof of Passport"; + return "ProofOfPassport"; } /** diff --git a/app/app.json b/app/app.json index ce93916b4..a16ecce19 100644 --- a/app/app.json +++ b/app/app.json @@ -1,4 +1,4 @@ { - "name": "Proof of Passport", + "name": "ProofOfPassport", "displayName": "Proof of Passport" } diff --git a/app/ark-circom-passport/README.md b/app/ark-circom-passport/README.md index fc587528a..9bc8c90e4 100644 --- a/app/ark-circom-passport/README.md +++ b/app/ark-circom-passport/README.md @@ -1,6 +1,8 @@ -# ark circom proof and verification of passport circuit +# rust module to generate the proof of passport android native lib To run tests and see logs: ``` cargo test -- --nocapture -``` \ No newline at end of file +``` + +Could be replaced by mopro once mopro is available on Android. \ No newline at end of file diff --git a/app/ark-zkey/.gitignore b/app/ark-zkey/.gitignore new file mode 100644 index 000000000..6985cf1bd --- /dev/null +++ b/app/ark-zkey/.gitignore @@ -0,0 +1,14 @@ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb diff --git a/app/ark-zkey/Cargo.toml b/app/ark-zkey/Cargo.toml new file mode 100644 index 000000000..97c4985d0 --- /dev/null +++ b/app/ark-zkey/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "ark-zkey" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "arkzkey-util" +path = "src/bin/arkzkey_util.rs" + +# XXX: Shouldn't be necessary, but this way we stay consistent with wasmer version and fix +# error[E0432]: unresolved import `wasmer` error +# (likely due to other packages) +[patch.crates-io] +# NOTE: Forked wasmer to work around memory limits +# See https://github.com/wasmerio/wasmer/commit/09c7070 +wasmer = { git = "https://github.com/oskarth/wasmer.git", rev = "09c7070" } + +[dependencies] +color-eyre = "0.6" +memmap2 = "0.9" +flame = "0.2" +flamer = "0.5" + +ark-serialize = { version = "=0.4.1", features = ["derive"] } +ark-bn254 = { version = "=0.4.0" } +ark-groth16 = { version = "=0.4.0" } +ark-circom = { git = "https://github.com/arkworks-rs/circom-compat.git" } +ark-relations = { version = "=0.4.0" } +ark-ff = { version = "=0.4.1" } +ark-ec = { version = "=0.4.1" } diff --git a/app/ark-zkey/README.md b/app/ark-zkey/README.md new file mode 100644 index 000000000..4fda435a9 --- /dev/null +++ b/app/ark-zkey/README.md @@ -0,0 +1,52 @@ +# ark-zkey + +Library to read `zkey` faster by serializing to `arkworks` friendly format. + +See https://github.com/oskarth/mopro/issues/25 for context. + +## How to use + +Run the following to convert a `zkey` to an `arkzkey`. This should be done as a pre-processing step. + +`cargo run --bin arkzkey-util --release -- ../mopro-core/examples/circom/keccak256/target/keccak256_256_test_final.zkey` + +This will generate and place an `arkzkey` file in the same directory as the original zkey. + +You can also install it locally: + +`cargo install --bin arkzkey-util --path . --release` + +## Tests + +``` +cargo test multiplier2 --release -- --nocapture +cargo test keccak256 --release -- --nocapture +cargo test rsa --release -- --nocapture +``` + +## Benchmark (Keccak) + +`cargo test keccak256 --release -- --nocapture` + +``` +[build] Processing zkey data... +test tests::test_keccak256_serialization_deserialization has been running for over 60 seconds +[build]Time to process zkey data: 158.753181958s +[build] Serializing proving key and constraint matrices +[build] Time to serialize proving key and constraint matrices: 42ns +[build] Writing arkzkey to: ../mopro-core/examples/circom/keccak256/target/keccak256_256_test_final.arkzkey +[build] Time to write arkzkey: 16.204274125s +Reading arkzkey from: ../mopro-core/examples/circom/keccak256/target/keccak256_256_test_final.arkzkey +Time to open arkzkey file: 51.75Β΅s +Time to mmap arkzkey: 17.25Β΅s +Time to deserialize proving key: 18.323550083s +Time to deserialize matrices: 46.935792ms +Time to read arkzkey: 18.3730695s +test tests::test_keccak256_serialization_deserialization ... ok +``` + +Vs naive: + +`[build] Time to process zkey data: 158.753181958s` + +**Result: 18s vs 158s** \ No newline at end of file diff --git a/app/ark-zkey/src/bin/arkzkey_util.rs b/app/ark-zkey/src/bin/arkzkey_util.rs new file mode 100644 index 000000000..130a93a2b --- /dev/null +++ b/app/ark-zkey/src/bin/arkzkey_util.rs @@ -0,0 +1,36 @@ +use std::env; +use std::path::{Path, PathBuf}; + +extern crate ark_zkey; +use ark_zkey::{convert_zkey, read_proving_key_and_matrices_from_zkey}; + +fn main() -> color_eyre::eyre::Result<()> { + color_eyre::install()?; + + let args: Vec = env::args().collect(); + if args.len() != 2 { + eprintln!("Usage: zkey_to_arkzkey "); + std::process::exit(1); + } + + let zkey_path = &args[1]; + let (proving_key, constraint_matrices) = read_proving_key_and_matrices_from_zkey(zkey_path)?; + + let arkzkey_path = get_arkzkey_path(zkey_path); + let arkzkey_path_str = arkzkey_path + .to_str() + .ok_or_else(|| color_eyre::eyre::eyre!("Failed to convert arkzkey path to string"))?; + + convert_zkey(proving_key, constraint_matrices, &arkzkey_path_str)?; + + println!("Converted zkey file saved to: {}", arkzkey_path.display()); + + Ok(()) +} + +fn get_arkzkey_path(zkey_path: &str) -> PathBuf { + let path = Path::new(zkey_path); + let mut arkzkey_path = path.to_path_buf(); + arkzkey_path.set_extension("arkzkey"); + arkzkey_path +} diff --git a/app/ark-zkey/src/lib.rs b/app/ark-zkey/src/lib.rs new file mode 100644 index 000000000..a41c84a92 --- /dev/null +++ b/app/ark-zkey/src/lib.rs @@ -0,0 +1,247 @@ +use ark_bn254::{Bn254, Fr}; +use ark_circom::read_zkey; +//use ark_ec::pairing::Pairing; +use ark_ff::Field; +use ark_groth16::ProvingKey; +//use ark_groth16::VerifyingKey; +use ark_relations::r1cs::ConstraintMatrices; +use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; +use color_eyre::eyre::{Result, WrapErr}; +use memmap2::Mmap; +use std::fs::File; +//use std::io::Cursor; +//use std::io::{Read,self}; +use std::io::BufReader; +use std::path::PathBuf; +use std::time::Instant; + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug, PartialEq)] +pub struct SerializableProvingKey(pub ProvingKey); + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug, PartialEq)] +pub struct SerializableMatrix { + pub data: Vec>, +} + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug, PartialEq)] +pub struct SerializableConstraintMatrices { + pub num_instance_variables: usize, + pub num_witness_variables: usize, + pub num_constraints: usize, + pub a_num_non_zero: usize, + pub b_num_non_zero: usize, + pub c_num_non_zero: usize, + pub a: SerializableMatrix, + pub b: SerializableMatrix, + pub c: SerializableMatrix, +} + +impl From>> for SerializableMatrix { + fn from(matrix: Vec>) -> Self { + SerializableMatrix { data: matrix } + } +} + +impl From> for Vec> { + fn from(serializable_matrix: SerializableMatrix) -> Self { + serializable_matrix.data + } +} + +pub fn serialize_proving_key(pk: &SerializableProvingKey) -> Vec { + let mut serialized_data = Vec::new(); + pk.serialize_compressed(&mut serialized_data) + .expect("Serialization failed"); + serialized_data +} + +pub fn deserialize_proving_key(data: Vec) -> SerializableProvingKey { + SerializableProvingKey::deserialize_compressed_unchecked(&mut &data[..]) + .expect("Deserialization failed") +} + +pub fn read_arkzkey( + arkzkey_path: &str, +) -> Result<(SerializableProvingKey, SerializableConstraintMatrices)> { + let now = std::time::Instant::now(); + let arkzkey_file_path = PathBuf::from(arkzkey_path); + let arkzkey_file = File::open(arkzkey_file_path).wrap_err("Failed to open arkzkey file")?; + println!("Time to open arkzkey file: {:?}", now.elapsed()); + + //let mut buf_reader = BufReader::new(arkzkey_file); + + // Using mmap + let now = std::time::Instant::now(); + let mmap = unsafe { Mmap::map(&arkzkey_file)? }; + let mut cursor = std::io::Cursor::new(mmap); + println!("Time to mmap arkzkey: {:?}", now.elapsed()); + + // Was &mut buf_reader + let now = std::time::Instant::now(); + let proving_key = SerializableProvingKey::deserialize_compressed_unchecked(&mut cursor) + .wrap_err("Failed to deserialize proving key")?; + println!("Time to deserialize proving key: {:?}", now.elapsed()); + + let now = std::time::Instant::now(); + let constraint_matrices = + SerializableConstraintMatrices::deserialize_compressed_unchecked(&mut cursor) + .wrap_err("Failed to deserialize constraint matrices")?; + println!("Time to deserialize matrices: {:?}", now.elapsed()); + + Ok((proving_key, constraint_matrices)) +} + +// TODO: Return ProvingKey, ConstraintMatrices? +pub fn read_arkzkey_from_bytes( + arkzkey_bytes: &[u8], +) -> Result<(ProvingKey, ConstraintMatrices)> { + let mut cursor = std::io::Cursor::new(arkzkey_bytes); + + let now = std::time::Instant::now(); + let serialized_proving_key = + SerializableProvingKey::deserialize_compressed_unchecked(&mut cursor) + .wrap_err("Failed to deserialize proving key")?; + println!("Time to deserialize proving key: {:?}", now.elapsed()); + + let now = std::time::Instant::now(); + let serialized_constraint_matrices = + SerializableConstraintMatrices::deserialize_compressed_unchecked(&mut cursor) + .wrap_err("Failed to deserialize constraint matrices")?; + println!("Time to deserialize matrices: {:?}", now.elapsed()); + + // Get on right form for API + let proving_key: ProvingKey = serialized_proving_key.0; + let constraint_matrices: ConstraintMatrices = ConstraintMatrices { + num_instance_variables: serialized_constraint_matrices.num_instance_variables, + num_witness_variables: serialized_constraint_matrices.num_witness_variables, + num_constraints: serialized_constraint_matrices.num_constraints, + a_num_non_zero: serialized_constraint_matrices.a_num_non_zero, + b_num_non_zero: serialized_constraint_matrices.b_num_non_zero, + c_num_non_zero: serialized_constraint_matrices.c_num_non_zero, + a: serialized_constraint_matrices.a.data, + b: serialized_constraint_matrices.b.data, + c: serialized_constraint_matrices.c.data, + }; + + Ok((proving_key, constraint_matrices)) +} + +pub fn read_proving_key_and_matrices_from_zkey( + zkey_path: &str, +) -> Result<(SerializableProvingKey, SerializableConstraintMatrices)> { + println!("Reading zkey from: {}", zkey_path); + let now = Instant::now(); + let zkey_file_path = PathBuf::from(zkey_path); + let zkey_file = File::open(zkey_file_path).wrap_err("Failed to open zkey file")?; + + let mut buf_reader = BufReader::new(zkey_file); + + let (proving_key, matrices) = + read_zkey(&mut buf_reader).wrap_err("Failed to read zkey file")?; + println!("Time to read zkey: {:?}", now.elapsed()); + + println!("Serializing proving key and constraint matrices"); + let now = Instant::now(); + let serializable_proving_key = SerializableProvingKey(proving_key); + let serializable_constrain_matrices = SerializableConstraintMatrices { + num_instance_variables: matrices.num_instance_variables, + num_witness_variables: matrices.num_witness_variables, + num_constraints: matrices.num_constraints, + a_num_non_zero: matrices.a_num_non_zero, + b_num_non_zero: matrices.b_num_non_zero, + c_num_non_zero: matrices.c_num_non_zero, + a: SerializableMatrix { data: matrices.a }, + b: SerializableMatrix { data: matrices.b }, + c: SerializableMatrix { data: matrices.c }, + }; + println!( + "Time to serialize proving key and constraint matrices: {:?}", + now.elapsed() + ); + + Ok((serializable_proving_key, serializable_constrain_matrices)) +} + +pub fn convert_zkey( + proving_key: SerializableProvingKey, + constraint_matrices: SerializableConstraintMatrices, + arkzkey_path: &str, +) -> Result<()> { + let arkzkey_file_path = PathBuf::from(arkzkey_path); + + let serialized_path = PathBuf::from(arkzkey_file_path); + + let mut file = + File::create(&serialized_path).wrap_err("Failed to create serialized proving key file")?; + + proving_key + .serialize_compressed(&mut file) + .wrap_err("Failed to serialize proving key")?; + + constraint_matrices + .serialize_compressed(&mut file) + .wrap_err("Failed to serialize constraint matrices")?; + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + use std::time::Instant; + + fn test_circuit_serialization_deserialization(zkey_path: &str) -> Result<()> { + let arkzkey_path = zkey_path.replace(".zkey", ".arkzkey"); + + let (original_proving_key, original_constraint_matrices) = + read_proving_key_and_matrices_from_zkey(zkey_path)?; + + println!("[build] Writing arkzkey to: {}", arkzkey_path); + let now = Instant::now(); + convert_zkey( + original_proving_key.clone(), + original_constraint_matrices.clone(), + &arkzkey_path, + )?; + println!("[build] Time to write arkzkey: {:?}", now.elapsed()); + + println!("Reading arkzkey from: {}", arkzkey_path); + let now = Instant::now(); + let (deserialized_proving_key, deserialized_constraint_matrices) = + read_arkzkey(&arkzkey_path)?; + println!("Time to read arkzkey: {:?}", now.elapsed()); + + assert_eq!( + original_proving_key, deserialized_proving_key, + "Original and deserialized proving keys do not match" + ); + + assert_eq!( + original_constraint_matrices, deserialized_constraint_matrices, + "Original and deserialized constraint matrices do not match" + ); + + Ok(()) + } + + #[test] + fn test_multiplier2_serialization_deserialization() -> Result<()> { + test_circuit_serialization_deserialization( + "../mopro-core/examples/circom/multiplier2/target/multiplier2_final.zkey", + ) + } + + #[test] + fn test_keccak256_serialization_deserialization() -> Result<()> { + test_circuit_serialization_deserialization( + "../mopro-core/examples/circom/keccak256/target/keccak256_256_test_final.zkey", + ) + } + + #[test] + fn test_rsa_serialization_deserialization() -> Result<()> { + test_circuit_serialization_deserialization( + "../mopro-core/examples/circom/rsa/target/main_final.zkey", + ) + } +} diff --git a/app/deployments/Groth16Verifier.json b/app/deployments/Groth16Verifier.json index fc729dd6f..c95cc99c1 100644 --- a/app/deployments/Groth16Verifier.json +++ b/app/deployments/Groth16Verifier.json @@ -38,8 +38,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610b91806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f0b67b25fb7a77948fa56298f85351f81ea556bf7bebea58cfaf22a41c2add0b16102808301527f125210f527bd6baed1fc4723673927cfcb8bf3c1e6da90e570ffa3926d946e586102a08301527f20286cd5cfcf365bf654135508c3873fb0241ad595b0ba879fb5dd5aaedcccff6102c08301527f200e3e8bf7c87c79b2f15e5b56e823f0798b09832c5b4e73f73b482862c826ea6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea2646970667358221220ca8705bfa93a78cf62acae4455e632f0ba4658ce4427955bfbebcd1edea5b56464736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f0b67b25fb7a77948fa56298f85351f81ea556bf7bebea58cfaf22a41c2add0b16102808301527f125210f527bd6baed1fc4723673927cfcb8bf3c1e6da90e570ffa3926d946e586102a08301527f20286cd5cfcf365bf654135508c3873fb0241ad595b0ba879fb5dd5aaedcccff6102c08301527f200e3e8bf7c87c79b2f15e5b56e823f0798b09832c5b4e73f73b482862c826ea6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea2646970667358221220ca8705bfa93a78cf62acae4455e632f0ba4658ce4427955bfbebcd1edea5b56464736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610b91806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f1d7a1d45cd0d7dc185b008a1db27d49fce51cc6867181bc7cc20b082334bebab6102808301527f30249a46876435e31836541ae970041820f931fcac2965e123310140ced152926102a08301527f22254873bf251351180667cdc810f5bb28fc4367da32e764751a1756c4cc66ed6102c08301527f1b00bcdb0dab39dc3e54fdc18bd323d8468fd0c9f50a45a7ed6d65129185769f6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea26469706673582212203182fad1c2c45996256e57e04133b91811fae14bccf65921dacf71742c83784364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c82febf514610030575b600080fd5b61004a60048036038101906100459190610abc565b610060565b6040516100579190610b40565b60405180910390f35b6000610944565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478110610098576000805260206000f35b50565b600060405183815284602082015285604082015260408160608360076107d05a03fa9150816100ce576000805260206000f35b825160408201526020830151606082015260408360808360066107d05a03fa9150816100fe576000805260206000f35b505050505050565b600060808601600087017f0ad4104ba0cab26e17a390c2297e5930790fe2138c4965fa33a92c6efb1ce61181527f2f25144c009fda8ee383ef224c934e7f6df65425132809ae464ff31ac891734760208201526101a960008801357f22afda344f3fa9caa050472eedf614641a3dc81bffaacd4fbe374447e8713c527f0785808d31f021c38a389a35384e87a0c483cc6665f1fb11fd8cb6220ab68a6c8461009b565b6101f960208801357f11885e413266172e3aee33cfdd2bfa186b52178bcf1cefaea78062c05722107d7f26756d1fcadd13849941c067839540f95b0ee5614c0ea6436a0b1371c61918028461009b565b61024960408801357f14034f89a294ea4bcb70f8a05f38319d25b7876baeeb2a1cf1d953be05023c4f7f014b60dec736fc8ef91c82345c2872f10e4f9e1e2a45419a91dfc6f3bf48a5008461009b565b61029960608801357f15b66475b701246e5afeb0fef2c8b1766992b6c862af6343ff7695defcb466b97f0f7f42f9ce4d9e86b9cde0c0a508655c8c79bc0a684a3fc7e31736926bd3164e8461009b565b6102e860808801357e9f8254f248559f4f9347784214ede9a9aa8f08c8ed859b42c55941f6ebac4d7f1f7aa8bbe543dc53d9efab5d487a2f462881d366f25ddf0d5e38747333195eca8461009b565b61033860a08801357f224f0eea46b164e5fd8793f81110dd606a17a916695f431dd9a82930337be6467f05b94074736f283d880c3adc6ca902dd9509466e817281f32b70103f5b5c426c8461009b565b61038860c08801357f121cf7452967876d6eb025f7713bf8392f39e7d8f82e653fbd7b3a4286f04d8e7f2648cf8ce91f5074123ea29d363f00ff58345fa0cf8854cee6b3cdb9cd06f2518461009b565b6103d860e08801357f207375b930a98fe9cbbeb3eb1fe8cff0ec58733416b0385826b0c5203addb82a7f106036e1ef36d5bcc9419747eb69833e04a8835d8eda804a0ce30273e6511d928461009b565b6104296101008801357f2773127f6766e3dfee9d345806c72cd2892e2b3a7c5f0c9c80a894b8e718dde47f1fab68875dd34949d9531c866809371111b147f288eb3fb0e0c516ae9c4d763e8461009b565b61047a6101208801357f18e0b48b621d672b8afb675eeba9ee68d33a71ac5b84e839b1350ff832e2731d7f10ab6d5e5bbf2815c7b436af60a20c885d0aded20f41b5aff518343aa32fe8e28461009b565b6104cb6101408801357f08534d6feb186a62091134bc726c2a6d0ba479bee663ad9702ef4c5931d454897f1d67bf83c43954992a44732500ee24ca44c594d914e6dd0dd722428250170b668461009b565b61051c6101608801357f18cff185263b89e2d1f0a745c7edcae4a6126402cad1205d90aea5ab53f1da167f147e05d126df37c08cf603b77b624feb87a8d33c333dff3f3e1b886aac27fb778461009b565b61056d6101808801357f01acfec350b849fd019997e649774c9795fff3f4af624586841f42181f252eb87f05be1ef6bbed0f7942c562bd8ceb15491221a5176d4709c58f156f65c51018268461009b565b6105be6101a08801357f0723950b7af06aebfcdab4bf96923795f95ea0fa86454831287358be15bf4a397f23b332764411bcec1aad32817dda66a3bfb502a4a0c92494736137c3f9aa010a8461009b565b61060f6101c08801357f26a47a8df4e6edda06f707b27f3b150bf90cb49d52fa68fbb1f57efc30d642777f18ee382f9056082dd010bb84da6fcdcae6fd0b0a86d9922cba113b823b7b0d118461009b565b6106606101e08801357f1d9ed1b6b90a7f3fd9724dd10b98ccfbde0404ad4dd751ff54949274461fe6ff7f10a9f28b202c0acbeb9b877b5ebe348312df9e093190df0eee947f50ffd5c5288461009b565b833582527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760208501357f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703066020830152843560408301526020850135606083015260408501356080830152606085013560a08301527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e260c08301527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d192660e08301527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101008301527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101208301527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101408301527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8610160830152600088015161018083015260206000018801516101a08301527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26101c08301527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6101e08301527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102008301527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa610220830152853561024083015260208601356102608301527f1d7a1d45cd0d7dc185b008a1db27d49fce51cc6867181bc7cc20b082334bebab6102808301527f30249a46876435e31836541ae970041820f931fcac2965e123310140ced152926102a08301527f22254873bf251351180667cdc810f5bb28fc4367da32e764751a1756c4cc66ed6102c08301527f1b00bcdb0dab39dc3e54fdc18bd323d8468fd0c9f50a45a7ed6d65129185769f6102e08301526020826103008460086107d05a03fa82518116935050505095945050505050565b604051610380810160405261095c6000840135610067565b6109696020840135610067565b6109766040840135610067565b6109836060840135610067565b6109906080840135610067565b61099d60a0840135610067565b6109aa60c0840135610067565b6109b760e0840135610067565b6109c5610100840135610067565b6109d3610120840135610067565b6109e1610140840135610067565b6109ef610160840135610067565b6109fd610180840135610067565b610a0b6101a0840135610067565b610a196101c0840135610067565b610a276101e0840135610067565b610a35610200840135610067565b610a42818486888a610106565b8060005260206000f35b600080fd5b600080fd5b600081905082602060020282011115610a7257610a71610a51565b5b92915050565b600081905082604060020282011115610a9457610a93610a51565b5b92915050565b600081905082602060100282011115610ab657610ab5610a51565b5b92915050565b6000806000806103008587031215610ad757610ad6610a4c565b5b6000610ae587828801610a56565b9450506040610af687828801610a78565b93505060c0610b0787828801610a56565b925050610100610b1987828801610a9a565b91505092959194509250565b60008115159050919050565b610b3a81610b25565b82525050565b6000602082019050610b556000830184610b31565b9291505056fea26469706673582212203182fad1c2c45996256e57e04133b91811fae14bccf65921dacf71742c83784364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/app/deployments/ProofOfPassport.json b/app/deployments/ProofOfPassport.json index 59c58c157..df6173c1a 100644 --- a/app/deployments/ProofOfPassport.json +++ b/app/deployments/ProofOfPassport.json @@ -648,8 +648,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b5060405162006ad838038062006ad88339818101604052810190620000799190620009d1565b6040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152506040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152508160009081620000f6919062000c92565b50806001908162000108919062000c92565b5050506200012b6200011f620001c960201b60201c565b620001d160201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b06200029760201b60201c565b620001c133620007bd60201b60201c565b505062000e94565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600e60405180608001604052806040518060400160405280600d81526020017f69737375696e675f7374617465000000000000000000000000000000000000008152508152602001600281526020016004815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000332919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200160058152602001602b8152602001600181525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620003ee919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600f81526020017f70617373706f72745f6e756d62657200000000000000000000000000000000008152508152602001602c815260200160348152602001600281525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620004aa919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6e6174696f6e616c6974790000000000000000000000000000000000000000008152508152602001603681526020016038815260200160038152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000566919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600d81526020017f646174655f6f665f626972746800000000000000000000000000000000000000815250815260200160398152602001603e815260200160048152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000622919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600681526020017f67656e646572000000000000000000000000000000000000000000000000000081525081526020016040815260200160408152602001600581525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620006de919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6578706972795f64617465000000000000000000000000000000000000000000815250815260200160418152602001604681526020016006815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190816200079a919062000c92565b506020820151816001015560408201518160020155606082015181600301555050565b620007cd6200085360201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200083f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008369062000e00565b60405180910390fd5b6200085081620001d160201b60201c565b50565b62000863620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000889620008e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d99062000e72565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009408262000913565b9050919050565b6000620009548262000933565b9050919050565b620009668162000947565b81146200097257600080fd5b50565b60008151905062000986816200095b565b92915050565b6000620009998262000933565b9050919050565b620009ab816200098c565b8114620009b757600080fd5b50565b600081519050620009cb81620009a0565b92915050565b60008060408385031215620009eb57620009ea6200090e565b5b6000620009fb8582860162000975565b925050602062000a0e85828601620009ba565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9a57607f821691505b60208210810362000ab05762000aaf62000a52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000adb565b62000b26868362000adb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7362000b6d62000b678462000b3e565b62000b48565b62000b3e565b9050919050565b6000819050919050565b62000b8f8362000b52565b62000ba762000b9e8262000b7a565b84845462000ae8565b825550505050565b600090565b62000bbe62000baf565b62000bcb81848462000b84565b505050565b5b8181101562000bf35762000be760008262000bb4565b60018101905062000bd1565b5050565b601f82111562000c425762000c0c8162000ab6565b62000c178462000acb565b8101602085101562000c27578190505b62000c3f62000c368562000acb565b83018262000bd0565b50505b505050565b600082821c905092915050565b600062000c676000198460080262000c47565b1980831691505092915050565b600062000c82838362000c54565b9150826002028217905092915050565b62000c9d8262000a18565b67ffffffffffffffff81111562000cb95762000cb862000a23565b5b62000cc5825462000a81565b62000cd282828562000bf7565b600060209050601f83116001811462000d0a576000841562000cf5578287015190505b62000d01858262000c74565b86555062000d71565b601f19841662000d1a8662000ab6565b60005b8281101562000d445784890151825560018201915060208501945060208101905062000d1d565b8683101562000d64578489015162000d60601f89168262000c54565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000de860268362000d79565b915062000df58262000d8a565b604082019050919050565b6000602082019050818103600083015262000e1b8162000dd9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e5a60208362000d79565b915062000e678262000e22565b602082019050919050565b6000602082019050818103600083015262000e8d8162000e4b565b9050919050565b608051615c2162000eb7600039600081816108db01526114ee0152615c216000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e991906134d8565b610603565b6040516101fb9190613520565b60405180910390f35b61020c61067d565b60405161021991906135cb565b60405180910390f35b61023c60048036038101906102379190613623565b61070f565b6040516102499190613691565b60405180910390f35b61026c600480360381019061026791906136d8565b610755565b005b61027661086c565b6040516102839190613727565b60405180910390f35b6102a660048036038101906102a19190613742565b610879565b005b6102b06108d9565b6040516102bd91906137f4565b60405180910390f35b6102e060048036038101906102db91906136d8565b6108fd565b6040516102ed9190613727565b60405180910390f35b6102fe6109a2565b60405161030b9190613830565b60405180910390f35b61032e60048036038101906103299190613742565b6109c8565b005b61034a60048036038101906103459190613623565b6109e8565b6040516103579190613727565b60405180910390f35b61037a6004803603810190610375919061384b565b610a59565b005b61039660048036038101906103919190613623565b610aa5565b6040516103a39190613691565b60405180910390f35b6103c660048036038101906103c1919061384b565b610b2b565b6040516103d39190613727565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb91906139ae565b610bf6565b60405161040d9190613a87565b60405180910390f35b61041e610c63565b60405161042b9190613691565b60405180910390f35b61043c610c8d565b60405161044991906135cb565b60405180910390f35b61046c60048036038101906104679190613ace565b610d1f565b005b61048860048036038101906104839190613623565b610d35565b6040516104989493929190613b0e565b60405180910390f35b6104bb60048036038101906104b69190613c0f565b610dfd565b005b6104d760048036038101906104d29190613623565b610e5f565b6040516104e491906135cb565b60405180910390f35b61050760048036038101906105029190613623565b6114cc565b6040516105149190613520565b60405180910390f35b61053760048036038101906105329190613df4565b6114ec565b005b610553600480360381019061054e9190613623565b611971565b6040516105609190613520565b60405180910390f35b610583600480360381019061057e9190613f0e565b611b23565b6040516105909190613f90565b60405180910390f35b6105b360048036038101906105ae9190613fb2565b611c83565b6040516105c09190613520565b60405180910390f35b6105d1611d17565b6040516105de9190613691565b60405180910390f35b61060160048036038101906105fc919061384b565b611d3d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611dc0565b5b9050919050565b60606000805461068c90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890614021565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611ea2565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906140c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611eed565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611eed565b611c83565b5b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490614156565b60405180910390fd5b6108678383611ef5565b505050565b6000600880549050905090565b61088a610884611eed565b82611fae565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906141e8565b60405180910390fd5b6108d4838383612043565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109409061427a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061430c565b60405180910390fd5b60088281548110610a4757610a4661432c565b5b90600052602060002001549050919050565b610a6161233c565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab1836123ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906143a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290614439565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea61233c565b610bf460006123f7565b565b610bfe61344a565b610c0661344a565b60005b6003811015610c5957838160108110610c2557610c2461432c565b5b6020020151828260038110610c3d57610c3c61432c565b5b6020020181815250508080610c5190614488565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc890614021565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611eed565b83836124bd565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d6890614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614021565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611eed565b83611fae565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e44906141e8565b60405180910390fd5b610e5984848484612629565b50505050565b6060610e6a82612685565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090614542565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790614021565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe261432c565b5b60200201516126c6565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd0284600001516001600781106110465761104561432c565b5b60200201516040518263ffffffff1660e01b815260040161106791906135cb565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad9190614603565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c61432c565b5b60200201516040518263ffffffff1660e01b815260040161112e91906135cb565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611174919061467b565b8383866000015160026007811061118e5761118d61432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e861432c565b5b60200201516040518263ffffffff1660e01b815260040161120a91906135cb565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611250919061467b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a561432c565b5b60200201516040518263ffffffff1660e01b81526004016112c791906135cb565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d919061467b565b89600001516005600781106113255761132461432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f61432c565b5b60200201516040518263ffffffff1660e01b81526004016113a191906135cb565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e7919061467b565b6113f08e611971565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f612762565b6040516020016114889a99989796959493929190614d16565b60405160208183030381529060405290506114a281612830565b6040516020016114b29190614e88565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b815260040161154b94939291906150b0565b602060405180830381865afa158015611568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158c919061510c565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290615185565b60405180910390fd5b600081600160106115dc91906151a5565b601081106115ed576115ec61432c565b5b6020020151905060006115fe61086c565b905061160a82826129b4565b6001600d6000856003601081106116245761162361432c565b5b6020020151815260200190815260200160002060006101000a81548160ff021916908315150217905550600061165984610bf6565b9050600061166682611b23565b90506000600f6000858152602001908152602001600020905060005b600e80549050811015611965576000600e82815481106116a5576116a461432c565b5b90600052602060002090600402016040518060800160405290816000820180546116ce90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614021565b80156117475780601f1061171c57610100808354040283529160200191611747565b820191906000526020600020905b81548152906001019060200180831161172a57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509050600060018260200151836040015161178891906151a5565b61179291906151d9565b67ffffffffffffffff8111156117ab576117aa61387d565b5b6040519080825280601f01601f1916602001820160405280156117dd5781602001600182028036833780820191505090505b5090506000826020015190505b82604001518111611877578581815181106118085761180761432c565b5b602001015160f81c60f81b8284602001518361182491906151a5565b815181106118355761183461432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061186f90614488565b9150506117ea565b506000819050808560000185600781106118945761189361432c565b5b0190816118a191906153af565b5061194f83600001518660000186600781106118c0576118bf61432c565b5b0180546118cc90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546118f890614021565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b50505050506126c6565b505050808061195d90614488565b915050611682565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611a515783820180546119c490614021565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614021565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050815260200190600101906119ae565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611ab357611ab261432c565b5b60200201516040518263ffffffff1660e01b8152600401611ad491906135cb565b602060405180830381865afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b159190615496565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611b6d57611b6c61387d565b5b6040519080825280601f01601f191660200182016040528015611b9f5781602001600182028036833780820191505090505b5090506000805b6003811015611c77576000868260038110611bc457611bc361432c565b5b6020020151905060005b858360038110611be157611be061432c565b5b602002015160ff168160ff161015611c625760ff821660f81b858580611c0690614488565b965081518110611c1957611c1861432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611c5a906154d0565b915050611bce565b50508080611c6f90614488565b915050611ba6565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d4561233c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab9061556b565b60405180910390fd5b611dbd816123f7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e8b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e9b5750611e9a82612bd1565b5b9050919050565b611eab81612685565b611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee1906143a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611f6883610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611fba83610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ffc5750611ffb8185611c83565b5b8061203a57508373ffffffffffffffffffffffffffffffffffffffff166120228461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206382610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906155fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f9061568f565b60405180910390fd5b6121358383836001612c3b565b8273ffffffffffffffffffffffffffffffffffffffff1661215582610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a2906155fd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123378383836001612cbc565b505050565b612344611eed565b73ffffffffffffffffffffffffffffffffffffffff16612362610c63565b73ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906156fb565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290615767565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161261c9190613520565b60405180910390a3505050565b612634848484612043565b61264084848484612cc2565b61267f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612676906157f9565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166126a7836123ba565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61275e82826040516024016126dc929190615819565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e49565b5050565b60606000600161277184612e6a565b01905060008167ffffffffffffffff8111156127905761278f61387d565b5b6040519080825280601f01601f1916602001820160405280156127c25781602001600182028036833780820191505090505b509050600082602001820190505b600115612825578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161281957612818615850565b5b049450600085036127d0575b819350505050919050565b60606000825103612852576040518060200160405280600081525090506129af565b6000604051806060016040528060408152602001615bac604091399050600060036002855161288191906151d9565b61288b919061587f565b600461289791906158b0565b905060006020826128a891906151d9565b67ffffffffffffffff8111156128c1576128c061387d565b5b6040519080825280601f01601f1916602001820160405280156128f35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b8183101561296e576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612907565b6003895106600181146129885760028114612998576129a3565b613d3d60f01b60028303526129a3565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9061593e565b60405180910390fd5b612a2c81612685565b15612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a63906159aa565b60405180910390fd5b612a7a600083836001612c3b565b612a8381612685565b15612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906159aa565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bcd600083836001612cbc565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c4784848484612fbd565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cad90615a3c565b60405180910390fd5b50505050565b50505050565b6000612ce38473ffffffffffffffffffffffffffffffffffffffff1661311b565b15612e3c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d0c611eed565b8786866040518563ffffffff1660e01b8152600401612d2e9493929190615a5c565b6020604051808303816000875af1925050508015612d6a57506040513d601f19601f82011682018060405250810190612d679190615abd565b60015b612dec573d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b506000815103612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906157f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e41565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612ec8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612ebe57612ebd615850565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f05576d04ee2d6d415b85acef81000000008381612efb57612efa615850565b5b0492506020810190505b662386f26fc100008310612f3457662386f26fc100008381612f2a57612f29615850565b5b0492506010810190505b6305f5e1008310612f5d576305f5e1008381612f5357612f52615850565b5b0492506008810190505b6127108310612f82576127108381612f7857612f77615850565b5b0492506004810190505b60648310612fa55760648381612f9b57612f9a615850565b5b0492506002810190505b600a8310612fb4576001810190505b80915050919050565b612fc98484848461313e565b600181111561300d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300490615b5c565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130545761304f81613144565b613093565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461309257613091858261318d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130d5576130d0816132fa565b613114565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131135761311284826133cb565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161319a84610b2b565b6131a491906151a5565b9050600060076000848152602001908152602001600020549050818114613289576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061330e91906151a5565b905060006009600084815260200190815260200160002054905060006008838154811061333e5761333d61432c565b5b9060005260206000200154905080600883815481106133605761335f61432c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806133af576133ae615b7c565b5b6001900381819060005260206000200160009055905550505050565b60006133d683610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6134b581613480565b81146134c057600080fd5b50565b6000813590506134d2816134ac565b92915050565b6000602082840312156134ee576134ed613476565b5b60006134fc848285016134c3565b91505092915050565b60008115159050919050565b61351a81613505565b82525050565b60006020820190506135356000830184613511565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b6000819050919050565b613600816135ed565b811461360b57600080fd5b50565b60008135905061361d816135f7565b92915050565b60006020828403121561363957613638613476565b5b60006136478482850161360e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061367b82613650565b9050919050565b61368b81613670565b82525050565b60006020820190506136a66000830184613682565b92915050565b6136b581613670565b81146136c057600080fd5b50565b6000813590506136d2816136ac565b92915050565b600080604083850312156136ef576136ee613476565b5b60006136fd858286016136c3565b925050602061370e8582860161360e565b9150509250929050565b613721816135ed565b82525050565b600060208201905061373c6000830184613718565b92915050565b60008060006060848603121561375b5761375a613476565b5b6000613769868287016136c3565b935050602061377a868287016136c3565b925050604061378b8682870161360e565b9150509250925092565b6000819050919050565b60006137ba6137b56137b084613650565b613795565b613650565b9050919050565b60006137cc8261379f565b9050919050565b60006137de826137c1565b9050919050565b6137ee816137d3565b82525050565b600060208201905061380960008301846137e5565b92915050565b600061381a826137c1565b9050919050565b61382a8161380f565b82525050565b60006020820190506138456000830184613821565b92915050565b60006020828403121561386157613860613476565b5b600061386f848285016136c3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138b582613581565b810181811067ffffffffffffffff821117156138d4576138d361387d565b5b80604052505050565b60006138e761346c565b90506138f382826138ac565b919050565b600067ffffffffffffffff8211156139135761391261387d565b5b602082029050919050565b600080fd5b6000613936613931846138f8565b6138dd565b905080602084028301858111156139505761394f61391e565b5b835b818110156139795780613965888261360e565b845260208401935050602081019050613952565b5050509392505050565b600082601f83011261399857613997613878565b5b60106139a5848285613923565b91505092915050565b600061020082840312156139c5576139c4613476565b5b60006139d384828501613983565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a05816135ed565b82525050565b6000613a1783836139fc565b60208301905092915050565b6000602082019050919050565b613a39816139dc565b613a4381846139e7565b9250613a4e826139f2565b8060005b83811015613a7f578151613a668782613a0b565b9650613a7183613a23565b925050600181019050613a52565b505050505050565b6000606082019050613a9c6000830184613a30565b92915050565b613aab81613505565b8114613ab657600080fd5b50565b600081359050613ac881613aa2565b92915050565b60008060408385031215613ae557613ae4613476565b5b6000613af3858286016136c3565b9250506020613b0485828601613ab9565b9150509250929050565b60006080820190508181036000830152613b288187613592565b9050613b376020830186613718565b613b446040830185613718565b613b516060830184613718565b95945050505050565b600080fd5b600067ffffffffffffffff821115613b7a57613b7961387d565b5b613b8382613581565b9050602081019050919050565b82818337600083830152505050565b6000613bb2613bad84613b5f565b6138dd565b905082815260208101848484011115613bce57613bcd613b5a565b5b613bd9848285613b90565b509392505050565b600082601f830112613bf657613bf5613878565b5b8135613c06848260208601613b9f565b91505092915050565b60008060008060808587031215613c2957613c28613476565b5b6000613c37878288016136c3565b9450506020613c48878288016136c3565b9350506040613c598782880161360e565b925050606085013567ffffffffffffffff811115613c7a57613c7961347b565b5b613c8687828801613be1565b91505092959194509250565b600067ffffffffffffffff821115613cad57613cac61387d565b5b602082029050919050565b6000613ccb613cc684613c92565b6138dd565b90508060208402830185811115613ce557613ce461391e565b5b835b81811015613d0e5780613cfa888261360e565b845260208401935050602081019050613ce7565b5050509392505050565b600082601f830112613d2d57613d2c613878565b5b6002613d3a848285613cb8565b91505092915050565b600067ffffffffffffffff821115613d5e57613d5d61387d565b5b602082029050919050565b6000613d7c613d7784613d43565b6138dd565b90508060408402830185811115613d9657613d9561391e565b5b835b81811015613dbf5780613dab8882613d18565b845260208401935050604081019050613d98565b5050509392505050565b600082601f830112613dde57613ddd613878565b5b6002613deb848285613d69565b91505092915050565b6000806000806103008587031215613e0f57613e0e613476565b5b6000613e1d87828801613d18565b9450506040613e2e87828801613dc9565b93505060c0613e3f87828801613d18565b925050610100613e5187828801613983565b91505092959194509250565b600067ffffffffffffffff821115613e7857613e7761387d565b5b602082029050919050565b6000613e96613e9184613e5d565b6138dd565b90508060208402830185811115613eb057613eaf61391e565b5b835b81811015613ed95780613ec5888261360e565b845260208401935050602081019050613eb2565b5050509392505050565b600082601f830112613ef857613ef7613878565b5b6003613f05848285613e83565b91505092915050565b600060608284031215613f2457613f23613476565b5b6000613f3284828501613ee3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613f6282613f3b565b613f6c8185613f46565b9350613f7c818560208601613557565b613f8581613581565b840191505092915050565b60006020820190508181036000830152613faa8184613f57565b905092915050565b60008060408385031215613fc957613fc8613476565b5b6000613fd7858286016136c3565b9250506020613fe8858286016136c3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061403957607f821691505b60208210810361404c5761404b613ff2565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae602183613546565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614140603d83613546565b915061414b826140e4565b604082019050919050565b6000602082019050818103600083015261416f81614133565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006141d2602d83613546565b91506141dd82614176565b604082019050919050565b60006020820190508181036000830152614201816141c5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614264602b83613546565b915061426f82614208565b604082019050919050565b6000602082019050818103600083015261429381614257565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f6602c83613546565b91506143018261429a565b604082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614391601883613546565b915061439c8261435b565b602082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614423602983613546565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614493826135ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144c5576144c4614459565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061452c602f83613546565b9150614537826144d0565b604082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b600067ffffffffffffffff82111561457d5761457c61387d565b5b61458682613581565b9050602081019050919050565b60006145a66145a184614562565b6138dd565b9050828152602081018484840111156145c2576145c1613b5a565b5b6145cd848285613557565b509392505050565b600082601f8301126145ea576145e9613878565b5b81516145fa848260208601614593565b91505092915050565b6000806040838503121561461a57614619613476565b5b600083015167ffffffffffffffff8111156146385761463761347b565b5b614644858286016145d5565b925050602083015167ffffffffffffffff8111156146655761466461347b565b5b614671858286016145d5565b9150509250929050565b60006020828403121561469157614690613476565b5b600082015167ffffffffffffffff8111156146af576146ae61347b565b5b6146bb848285016145d5565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b60006147056011836146c4565b9150614710826146cf565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b6000614777602a836146c4565b91506147828261471b565b602a82019050919050565b60006147988261353b565b6147a281856146c4565b93506147b2818560208601613557565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061481a6029836146c4565b9150614825826147be565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061488c6028836146c4565b915061489782614830565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b60006148fe602f836146c4565b9150614909826148a2565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614970602b836146c4565b915061497b82614914565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b60006149e2602d836146c4565b91506149ed82614986565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614a546026836146c4565b9150614a5f826149f8565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614ac6602b836146c4565b9150614ad182614a6a565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614b386027836146c4565b9150614b4382614adc565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b846002836146c4565b9150614b8f82614b4e565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bd06002836146c4565b9150614bdb82614b9a565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d0060d8836146c4565b9150614d0b82614be6565b60d882019050919050565b6000614d21826146f8565b9150614d2c8261476a565b9150614d38828d61478d565b9150614d438261480d565b9150614d4f828c61478d565b9150614d5a8261487f565b9150614d66828b61478d565b9150614d71826148f1565b9150614d7d828a61478d565b9150614d8882614963565b9150614d94828961478d565b9150614d9f826149d5565b9150614dab828861478d565b9150614db682614a47565b9150614dc2828761478d565b9150614dcd82614ab9565b9150614dd9828661478d565b9150614de482614b2b565b9150614df0828561478d565b9150614dfb82614b77565b9150614e0682614bc3565b9150614e1182614cf3565b9150614e1d828461478d565b9150614e2882614b77565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614e72601d836146c4565b9150614e7d82614e3c565b601d82019050919050565b6000614e9382614e65565b9150614e9f828461478d565b915081905092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614ee081614eaa565b614eea8184614eb5565b9250614ef582614ec0565b8060005b83811015614f26578151614f0d8782613a0b565b9650614f1883614eca565b925050600181019050614ef9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b614f6281614eaa565b614f6c8184614f4e565b9250614f7782614ec0565b8060005b83811015614fa8578151614f8f8782613a0b565b9650614f9a83614eca565b925050600181019050614f7b565b505050505050565b6000614fbc8383614f59565b60408301905092915050565b6000602082019050919050565b614fde81614f2e565b614fe88184614f39565b9250614ff382614f44565b8060005b8381101561502457815161500b8782614fb0565b965061501683614fc8565b925050600181019050614ff7565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6150628161502c565b61506c8184615037565b925061507782615042565b8060005b838110156150a857815161508f8782613a0b565b965061509a8361504c565b92505060018101905061507b565b505050505050565b6000610300820190506150c66000830187614ed7565b6150d36040830186614fd5565b6150e060c0830185614ed7565b6150ee610100830184615059565b95945050505050565b60008151905061510681613aa2565b92915050565b60006020828403121561512257615121613476565b5b6000615130848285016150f7565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b600061516f600d83613546565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b60006151b0826135ed565b91506151bb836135ed565b92508282039050818111156151d3576151d2614459565b5b92915050565b60006151e4826135ed565b91506151ef836135ed565b925082820190508082111561520757615206614459565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261526f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615232565b6152798683615232565b95508019841693508086168417925050509392505050565b60006152ac6152a76152a2846135ed565b613795565b6135ed565b9050919050565b6000819050919050565b6152c683615291565b6152da6152d2826152b3565b84845461523f565b825550505050565b600090565b6152ef6152e2565b6152fa8184846152bd565b505050565b5b8181101561531e576153136000826152e7565b600181019050615300565b5050565b601f821115615363576153348161520d565b61533d84615222565b8101602085101561534c578190505b61536061535885615222565b8301826152ff565b50505b505050565b600082821c905092915050565b600061538660001984600802615368565b1980831691505092915050565b600061539f8383615375565b9150826002028217905092915050565b6153b88261353b565b67ffffffffffffffff8111156153d1576153d061387d565b5b6153db8254614021565b6153e6828285615322565b600060209050601f8311600181146154195760008415615407578287015190505b6154118582615393565b865550615479565b601f1984166154278661520d565b60005b8281101561544f5784890151825560018201915060208501945060208101905061542a565b8683101561546c5784890151615468601f891682615375565b8355505b6001600288020188555050505b505050505050565b600081519050615490816135f7565b92915050565b6000602082840312156154ac576154ab613476565b5b60006154ba84828501615481565b91505092915050565b600060ff82169050919050565b60006154db826154c3565b915060ff82036154ee576154ed614459565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615555602683613546565b9150615560826154f9565b604082019050919050565b6000602082019050818103600083015261558481615548565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006155e7602583613546565b91506155f28261558b565b604082019050919050565b60006020820190508181036000830152615616816155da565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615679602483613546565b91506156848261561d565b604082019050919050565b600060208201905081810360008301526156a88161566c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156e5602083613546565b91506156f0826156af565b602082019050919050565b60006020820190508181036000830152615714816156d8565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615751601983613546565b915061575c8261571b565b602082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157e3603283613546565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b600060408201905081810360008301526158338185613592565b905081810360208301526158478184613592565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588a826135ed565b9150615895836135ed565b9250826158a5576158a4615850565b5b828204905092915050565b60006158bb826135ed565b91506158c6836135ed565b92508282026158d4816135ed565b915082820484148315176158eb576158ea614459565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615928602083613546565b9150615933826158f2565b602082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615994601c83613546565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615a26603083613546565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000608082019050615a716000830187613682565b615a7e6020830186613682565b615a8b6040830185613718565b8181036060830152615a9d8184613f57565b905095945050505050565b600081519050615ab7816134ac565b92915050565b600060208284031215615ad357615ad2613476565b5b6000615ae184828501615aa8565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615b46603583613546565b9150615b5182615aea565b604082019050919050565b60006020820190508181036000830152615b7581615b39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fc7b3e1065ff76ed9c3e55279cd3a205fc1183775e22ad1efea30ad39c94a3cc64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e991906134d8565b610603565b6040516101fb9190613520565b60405180910390f35b61020c61067d565b60405161021991906135cb565b60405180910390f35b61023c60048036038101906102379190613623565b61070f565b6040516102499190613691565b60405180910390f35b61026c600480360381019061026791906136d8565b610755565b005b61027661086c565b6040516102839190613727565b60405180910390f35b6102a660048036038101906102a19190613742565b610879565b005b6102b06108d9565b6040516102bd91906137f4565b60405180910390f35b6102e060048036038101906102db91906136d8565b6108fd565b6040516102ed9190613727565b60405180910390f35b6102fe6109a2565b60405161030b9190613830565b60405180910390f35b61032e60048036038101906103299190613742565b6109c8565b005b61034a60048036038101906103459190613623565b6109e8565b6040516103579190613727565b60405180910390f35b61037a6004803603810190610375919061384b565b610a59565b005b61039660048036038101906103919190613623565b610aa5565b6040516103a39190613691565b60405180910390f35b6103c660048036038101906103c1919061384b565b610b2b565b6040516103d39190613727565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb91906139ae565b610bf6565b60405161040d9190613a87565b60405180910390f35b61041e610c63565b60405161042b9190613691565b60405180910390f35b61043c610c8d565b60405161044991906135cb565b60405180910390f35b61046c60048036038101906104679190613ace565b610d1f565b005b61048860048036038101906104839190613623565b610d35565b6040516104989493929190613b0e565b60405180910390f35b6104bb60048036038101906104b69190613c0f565b610dfd565b005b6104d760048036038101906104d29190613623565b610e5f565b6040516104e491906135cb565b60405180910390f35b61050760048036038101906105029190613623565b6114cc565b6040516105149190613520565b60405180910390f35b61053760048036038101906105329190613df4565b6114ec565b005b610553600480360381019061054e9190613623565b611971565b6040516105609190613520565b60405180910390f35b610583600480360381019061057e9190613f0e565b611b23565b6040516105909190613f90565b60405180910390f35b6105b360048036038101906105ae9190613fb2565b611c83565b6040516105c09190613520565b60405180910390f35b6105d1611d17565b6040516105de9190613691565b60405180910390f35b61060160048036038101906105fc919061384b565b611d3d565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611dc0565b5b9050919050565b60606000805461068c90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890614021565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611ea2565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906140c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611eed565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611eed565b611c83565b5b61085d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085490614156565b60405180910390fd5b6108678383611ef5565b505050565b6000600880549050905090565b61088a610884611eed565b82611fae565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c0906141e8565b60405180910390fd5b6108d4838383612043565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109409061427a565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a9061430c565b60405180910390fd5b60088281548110610a4757610a4661432c565b5b90600052602060002001549050919050565b610a6161233c565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab1836123ba565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b19906143a7565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290614439565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea61233c565b610bf460006123f7565b565b610bfe61344a565b610c0661344a565b60005b6003811015610c5957838160108110610c2557610c2461432c565b5b6020020151828260038110610c3d57610c3c61432c565b5b6020020181815250508080610c5190614488565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc890614021565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611eed565b83836124bd565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d6890614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9490614021565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611eed565b83611fae565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e44906141e8565b60405180910390fd5b610e5984848484612629565b50505050565b6060610e6a82612685565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090614542565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb90614021565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2790614021565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe261432c565b5b60200201516126c6565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd0284600001516001600781106110465761104561432c565b5b60200201516040518263ffffffff1660e01b815260040161106791906135cb565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad9190614603565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c61432c565b5b60200201516040518263ffffffff1660e01b815260040161112e91906135cb565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611174919061467b565b8383866000015160026007811061118e5761118d61432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e861432c565b5b60200201516040518263ffffffff1660e01b815260040161120a91906135cb565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611250919061467b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a561432c565b5b60200201516040518263ffffffff1660e01b81526004016112c791906135cb565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d919061467b565b89600001516005600781106113255761132461432c565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f61432c565b5b60200201516040518263ffffffff1660e01b81526004016113a191906135cb565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e7919061467b565b6113f08e611971565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f612762565b6040516020016114889a99989796959493929190614d16565b60405160208183030381529060405290506114a281612830565b6040516020016114b29190614e88565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b815260040161154b94939291906150b0565b602060405180830381865afa158015611568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158c919061510c565b6115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290615185565b60405180910390fd5b600081600160106115dc91906151a5565b601081106115ed576115ec61432c565b5b6020020151905060006115fe61086c565b905061160a82826129b4565b6001600d6000856003601081106116245761162361432c565b5b6020020151815260200190815260200160002060006101000a81548160ff021916908315150217905550600061165984610bf6565b9050600061166682611b23565b90506000600f6000858152602001908152602001600020905060005b600e80549050811015611965576000600e82815481106116a5576116a461432c565b5b90600052602060002090600402016040518060800160405290816000820180546116ce90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546116fa90614021565b80156117475780601f1061171c57610100808354040283529160200191611747565b820191906000526020600020905b81548152906001019060200180831161172a57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509050600060018260200151836040015161178891906151a5565b61179291906151d9565b67ffffffffffffffff8111156117ab576117aa61387d565b5b6040519080825280601f01601f1916602001820160405280156117dd5781602001600182028036833780820191505090505b5090506000826020015190505b82604001518111611877578581815181106118085761180761432c565b5b602001015160f81c60f81b8284602001518361182491906151a5565b815181106118355761183461432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061186f90614488565b9150506117ea565b506000819050808560000185600781106118945761189361432c565b5b0190816118a191906153af565b5061194f83600001518660000186600781106118c0576118bf61432c565b5b0180546118cc90614021565b80601f01602080910402602001604051908101604052809291908181526020018280546118f890614021565b80156119455780601f1061191a57610100808354040283529160200191611945565b820191906000526020600020905b81548152906001019060200180831161192857829003601f168201915b50505050506126c6565b505050808061195d90614488565b915050611682565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611a515783820180546119c490614021565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614021565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b5050505050815260200190600101906119ae565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611ab357611ab261432c565b5b60200201516040518263ffffffff1660e01b8152600401611ad491906135cb565b602060405180830381865afa158015611af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b159190615496565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611b6d57611b6c61387d565b5b6040519080825280601f01601f191660200182016040528015611b9f5781602001600182028036833780820191505090505b5090506000805b6003811015611c77576000868260038110611bc457611bc361432c565b5b6020020151905060005b858360038110611be157611be061432c565b5b602002015160ff168160ff161015611c625760ff821660f81b858580611c0690614488565b965081518110611c1957611c1861432c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611c5a906154d0565b915050611bce565b50508080611c6f90614488565b915050611ba6565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d4561233c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab9061556b565b60405180910390fd5b611dbd816123f7565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e8b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e9b5750611e9a82612bd1565b5b9050919050565b611eab81612685565b611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee1906143a7565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611f6883610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611fba83610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ffc5750611ffb8185611c83565b5b8061203a57508373ffffffffffffffffffffffffffffffffffffffff166120228461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661206382610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906155fd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211f9061568f565b60405180910390fd5b6121358383836001612c3b565b8273ffffffffffffffffffffffffffffffffffffffff1661215582610aa5565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a2906155fd565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123378383836001612cbc565b505050565b612344611eed565b73ffffffffffffffffffffffffffffffffffffffff16612362610c63565b73ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af906156fb565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252290615767565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161261c9190613520565b60405180910390a3505050565b612634848484612043565b61264084848484612cc2565b61267f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612676906157f9565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166126a7836123ba565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61275e82826040516024016126dc929190615819565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612e49565b5050565b60606000600161277184612e6a565b01905060008167ffffffffffffffff8111156127905761278f61387d565b5b6040519080825280601f01601f1916602001820160405280156127c25781602001600182028036833780820191505090505b509050600082602001820190505b600115612825578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161281957612818615850565b5b049450600085036127d0575b819350505050919050565b60606000825103612852576040518060200160405280600081525090506129af565b6000604051806060016040528060408152602001615bac604091399050600060036002855161288191906151d9565b61288b919061587f565b600461289791906158b0565b905060006020826128a891906151d9565b67ffffffffffffffff8111156128c1576128c061387d565b5b6040519080825280601f01601f1916602001820160405280156128f35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b8183101561296e576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612907565b6003895106600181146129885760028114612998576129a3565b613d3d60f01b60028303526129a3565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9061593e565b60405180910390fd5b612a2c81612685565b15612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a63906159aa565b60405180910390fd5b612a7a600083836001612c3b565b612a8381612685565b15612ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aba906159aa565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bcd600083836001612cbc565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c4784848484612fbd565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cad90615a3c565b60405180910390fd5b50505050565b50505050565b6000612ce38473ffffffffffffffffffffffffffffffffffffffff1661311b565b15612e3c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d0c611eed565b8786866040518563ffffffff1660e01b8152600401612d2e9493929190615a5c565b6020604051808303816000875af1925050508015612d6a57506040513d601f19601f82011682018060405250810190612d679190615abd565b60015b612dec573d8060008114612d9a576040519150601f19603f3d011682016040523d82523d6000602084013e612d9f565b606091505b506000815103612de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddb906157f9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e41565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612ec8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612ebe57612ebd615850565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f05576d04ee2d6d415b85acef81000000008381612efb57612efa615850565b5b0492506020810190505b662386f26fc100008310612f3457662386f26fc100008381612f2a57612f29615850565b5b0492506010810190505b6305f5e1008310612f5d576305f5e1008381612f5357612f52615850565b5b0492506008810190505b6127108310612f82576127108381612f7857612f77615850565b5b0492506004810190505b60648310612fa55760648381612f9b57612f9a615850565b5b0492506002810190505b600a8310612fb4576001810190505b80915050919050565b612fc98484848461313e565b600181111561300d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300490615b5c565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130545761304f81613144565b613093565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461309257613091858261318d565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130d5576130d0816132fa565b613114565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146131135761311284826133cb565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161319a84610b2b565b6131a491906151a5565b9050600060076000848152602001908152602001600020549050818114613289576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061330e91906151a5565b905060006009600084815260200190815260200160002054905060006008838154811061333e5761333d61432c565b5b9060005260206000200154905080600883815481106133605761335f61432c565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806133af576133ae615b7c565b5b6001900381819060005260206000200160009055905550505050565b60006133d683610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6134b581613480565b81146134c057600080fd5b50565b6000813590506134d2816134ac565b92915050565b6000602082840312156134ee576134ed613476565b5b60006134fc848285016134c3565b91505092915050565b60008115159050919050565b61351a81613505565b82525050565b60006020820190506135356000830184613511565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561357557808201518184015260208101905061355a565b60008484015250505050565b6000601f19601f8301169050919050565b600061359d8261353b565b6135a78185613546565b93506135b7818560208601613557565b6135c081613581565b840191505092915050565b600060208201905081810360008301526135e58184613592565b905092915050565b6000819050919050565b613600816135ed565b811461360b57600080fd5b50565b60008135905061361d816135f7565b92915050565b60006020828403121561363957613638613476565b5b60006136478482850161360e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061367b82613650565b9050919050565b61368b81613670565b82525050565b60006020820190506136a66000830184613682565b92915050565b6136b581613670565b81146136c057600080fd5b50565b6000813590506136d2816136ac565b92915050565b600080604083850312156136ef576136ee613476565b5b60006136fd858286016136c3565b925050602061370e8582860161360e565b9150509250929050565b613721816135ed565b82525050565b600060208201905061373c6000830184613718565b92915050565b60008060006060848603121561375b5761375a613476565b5b6000613769868287016136c3565b935050602061377a868287016136c3565b925050604061378b8682870161360e565b9150509250925092565b6000819050919050565b60006137ba6137b56137b084613650565b613795565b613650565b9050919050565b60006137cc8261379f565b9050919050565b60006137de826137c1565b9050919050565b6137ee816137d3565b82525050565b600060208201905061380960008301846137e5565b92915050565b600061381a826137c1565b9050919050565b61382a8161380f565b82525050565b60006020820190506138456000830184613821565b92915050565b60006020828403121561386157613860613476565b5b600061386f848285016136c3565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138b582613581565b810181811067ffffffffffffffff821117156138d4576138d361387d565b5b80604052505050565b60006138e761346c565b90506138f382826138ac565b919050565b600067ffffffffffffffff8211156139135761391261387d565b5b602082029050919050565b600080fd5b6000613936613931846138f8565b6138dd565b905080602084028301858111156139505761394f61391e565b5b835b818110156139795780613965888261360e565b845260208401935050602081019050613952565b5050509392505050565b600082601f83011261399857613997613878565b5b60106139a5848285613923565b91505092915050565b600061020082840312156139c5576139c4613476565b5b60006139d384828501613983565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a05816135ed565b82525050565b6000613a1783836139fc565b60208301905092915050565b6000602082019050919050565b613a39816139dc565b613a4381846139e7565b9250613a4e826139f2565b8060005b83811015613a7f578151613a668782613a0b565b9650613a7183613a23565b925050600181019050613a52565b505050505050565b6000606082019050613a9c6000830184613a30565b92915050565b613aab81613505565b8114613ab657600080fd5b50565b600081359050613ac881613aa2565b92915050565b60008060408385031215613ae557613ae4613476565b5b6000613af3858286016136c3565b9250506020613b0485828601613ab9565b9150509250929050565b60006080820190508181036000830152613b288187613592565b9050613b376020830186613718565b613b446040830185613718565b613b516060830184613718565b95945050505050565b600080fd5b600067ffffffffffffffff821115613b7a57613b7961387d565b5b613b8382613581565b9050602081019050919050565b82818337600083830152505050565b6000613bb2613bad84613b5f565b6138dd565b905082815260208101848484011115613bce57613bcd613b5a565b5b613bd9848285613b90565b509392505050565b600082601f830112613bf657613bf5613878565b5b8135613c06848260208601613b9f565b91505092915050565b60008060008060808587031215613c2957613c28613476565b5b6000613c37878288016136c3565b9450506020613c48878288016136c3565b9350506040613c598782880161360e565b925050606085013567ffffffffffffffff811115613c7a57613c7961347b565b5b613c8687828801613be1565b91505092959194509250565b600067ffffffffffffffff821115613cad57613cac61387d565b5b602082029050919050565b6000613ccb613cc684613c92565b6138dd565b90508060208402830185811115613ce557613ce461391e565b5b835b81811015613d0e5780613cfa888261360e565b845260208401935050602081019050613ce7565b5050509392505050565b600082601f830112613d2d57613d2c613878565b5b6002613d3a848285613cb8565b91505092915050565b600067ffffffffffffffff821115613d5e57613d5d61387d565b5b602082029050919050565b6000613d7c613d7784613d43565b6138dd565b90508060408402830185811115613d9657613d9561391e565b5b835b81811015613dbf5780613dab8882613d18565b845260208401935050604081019050613d98565b5050509392505050565b600082601f830112613dde57613ddd613878565b5b6002613deb848285613d69565b91505092915050565b6000806000806103008587031215613e0f57613e0e613476565b5b6000613e1d87828801613d18565b9450506040613e2e87828801613dc9565b93505060c0613e3f87828801613d18565b925050610100613e5187828801613983565b91505092959194509250565b600067ffffffffffffffff821115613e7857613e7761387d565b5b602082029050919050565b6000613e96613e9184613e5d565b6138dd565b90508060208402830185811115613eb057613eaf61391e565b5b835b81811015613ed95780613ec5888261360e565b845260208401935050602081019050613eb2565b5050509392505050565b600082601f830112613ef857613ef7613878565b5b6003613f05848285613e83565b91505092915050565b600060608284031215613f2457613f23613476565b5b6000613f3284828501613ee3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613f6282613f3b565b613f6c8185613f46565b9350613f7c818560208601613557565b613f8581613581565b840191505092915050565b60006020820190508181036000830152613faa8184613f57565b905092915050565b60008060408385031215613fc957613fc8613476565b5b6000613fd7858286016136c3565b9250506020613fe8858286016136c3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061403957607f821691505b60208210810361404c5761404b613ff2565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ae602183613546565b91506140b982614052565b604082019050919050565b600060208201905081810360008301526140dd816140a1565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000614140603d83613546565b915061414b826140e4565b604082019050919050565b6000602082019050818103600083015261416f81614133565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006141d2602d83613546565b91506141dd82614176565b604082019050919050565b60006020820190508181036000830152614201816141c5565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614264602b83613546565b915061426f82614208565b604082019050919050565b6000602082019050818103600083015261429381614257565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f6602c83613546565b91506143018261429a565b604082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000614391601883613546565b915061439c8261435b565b602082019050919050565b600060208201905081810360008301526143c081614384565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000614423602983613546565b915061442e826143c7565b604082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614493826135ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036144c5576144c4614459565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061452c602f83613546565b9150614537826144d0565b604082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b600067ffffffffffffffff82111561457d5761457c61387d565b5b61458682613581565b9050602081019050919050565b60006145a66145a184614562565b6138dd565b9050828152602081018484840111156145c2576145c1613b5a565b5b6145cd848285613557565b509392505050565b600082601f8301126145ea576145e9613878565b5b81516145fa848260208601614593565b91505092915050565b6000806040838503121561461a57614619613476565b5b600083015167ffffffffffffffff8111156146385761463761347b565b5b614644858286016145d5565b925050602083015167ffffffffffffffff8111156146655761466461347b565b5b614671858286016145d5565b9150509250929050565b60006020828403121561469157614690613476565b5b600082015167ffffffffffffffff8111156146af576146ae61347b565b5b6146bb848285016145d5565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b60006147056011836146c4565b9150614710826146cf565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b6000614777602a836146c4565b91506147828261471b565b602a82019050919050565b60006147988261353b565b6147a281856146c4565b93506147b2818560208601613557565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061481a6029836146c4565b9150614825826147be565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061488c6028836146c4565b915061489782614830565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b60006148fe602f836146c4565b9150614909826148a2565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614970602b836146c4565b915061497b82614914565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b60006149e2602d836146c4565b91506149ed82614986565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614a546026836146c4565b9150614a5f826149f8565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614ac6602b836146c4565b9150614ad182614a6a565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614b386027836146c4565b9150614b4382614adc565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614b846002836146c4565b9150614b8f82614b4e565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bd06002836146c4565b9150614bdb82614b9a565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d0060d8836146c4565b9150614d0b82614be6565b60d882019050919050565b6000614d21826146f8565b9150614d2c8261476a565b9150614d38828d61478d565b9150614d438261480d565b9150614d4f828c61478d565b9150614d5a8261487f565b9150614d66828b61478d565b9150614d71826148f1565b9150614d7d828a61478d565b9150614d8882614963565b9150614d94828961478d565b9150614d9f826149d5565b9150614dab828861478d565b9150614db682614a47565b9150614dc2828761478d565b9150614dcd82614ab9565b9150614dd9828661478d565b9150614de482614b2b565b9150614df0828561478d565b9150614dfb82614b77565b9150614e0682614bc3565b9150614e1182614cf3565b9150614e1d828461478d565b9150614e2882614b77565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614e72601d836146c4565b9150614e7d82614e3c565b601d82019050919050565b6000614e9382614e65565b9150614e9f828461478d565b915081905092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614ee081614eaa565b614eea8184614eb5565b9250614ef582614ec0565b8060005b83811015614f26578151614f0d8782613a0b565b9650614f1883614eca565b925050600181019050614ef9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b614f6281614eaa565b614f6c8184614f4e565b9250614f7782614ec0565b8060005b83811015614fa8578151614f8f8782613a0b565b9650614f9a83614eca565b925050600181019050614f7b565b505050505050565b6000614fbc8383614f59565b60408301905092915050565b6000602082019050919050565b614fde81614f2e565b614fe88184614f39565b9250614ff382614f44565b8060005b8381101561502457815161500b8782614fb0565b965061501683614fc8565b925050600181019050614ff7565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6150628161502c565b61506c8184615037565b925061507782615042565b8060005b838110156150a857815161508f8782613a0b565b965061509a8361504c565b92505060018101905061507b565b505050505050565b6000610300820190506150c66000830187614ed7565b6150d36040830186614fd5565b6150e060c0830185614ed7565b6150ee610100830184615059565b95945050505050565b60008151905061510681613aa2565b92915050565b60006020828403121561512257615121613476565b5b6000615130848285016150f7565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b600061516f600d83613546565b915061517a82615139565b602082019050919050565b6000602082019050818103600083015261519e81615162565b9050919050565b60006151b0826135ed565b91506151bb836135ed565b92508282039050818111156151d3576151d2614459565b5b92915050565b60006151e4826135ed565b91506151ef836135ed565b925082820190508082111561520757615206614459565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261526f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615232565b6152798683615232565b95508019841693508086168417925050509392505050565b60006152ac6152a76152a2846135ed565b613795565b6135ed565b9050919050565b6000819050919050565b6152c683615291565b6152da6152d2826152b3565b84845461523f565b825550505050565b600090565b6152ef6152e2565b6152fa8184846152bd565b505050565b5b8181101561531e576153136000826152e7565b600181019050615300565b5050565b601f821115615363576153348161520d565b61533d84615222565b8101602085101561534c578190505b61536061535885615222565b8301826152ff565b50505b505050565b600082821c905092915050565b600061538660001984600802615368565b1980831691505092915050565b600061539f8383615375565b9150826002028217905092915050565b6153b88261353b565b67ffffffffffffffff8111156153d1576153d061387d565b5b6153db8254614021565b6153e6828285615322565b600060209050601f8311600181146154195760008415615407578287015190505b6154118582615393565b865550615479565b601f1984166154278661520d565b60005b8281101561544f5784890151825560018201915060208501945060208101905061542a565b8683101561546c5784890151615468601f891682615375565b8355505b6001600288020188555050505b505050505050565b600081519050615490816135f7565b92915050565b6000602082840312156154ac576154ab613476565b5b60006154ba84828501615481565b91505092915050565b600060ff82169050919050565b60006154db826154c3565b915060ff82036154ee576154ed614459565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615555602683613546565b9150615560826154f9565b604082019050919050565b6000602082019050818103600083015261558481615548565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006155e7602583613546565b91506155f28261558b565b604082019050919050565b60006020820190508181036000830152615616816155da565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615679602483613546565b91506156848261561d565b604082019050919050565b600060208201905081810360008301526156a88161566c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156e5602083613546565b91506156f0826156af565b602082019050919050565b60006020820190508181036000830152615714816156d8565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615751601983613546565b915061575c8261571b565b602082019050919050565b6000602082019050818103600083015261578081615744565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157e3603283613546565b91506157ee82615787565b604082019050919050565b60006020820190508181036000830152615812816157d6565b9050919050565b600060408201905081810360008301526158338185613592565b905081810360208301526158478184613592565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588a826135ed565b9150615895836135ed565b9250826158a5576158a4615850565b5b828204905092915050565b60006158bb826135ed565b91506158c6836135ed565b92508282026158d4816135ed565b915082820484148315176158eb576158ea614459565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615928602083613546565b9150615933826158f2565b602082019050919050565b600060208201905081810360008301526159578161591b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615994601c83613546565b915061599f8261595e565b602082019050919050565b600060208201905081810360008301526159c381615987565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615a26603083613546565b9150615a31826159ca565b604082019050919050565b60006020820190508181036000830152615a5581615a19565b9050919050565b6000608082019050615a716000830187613682565b615a7e6020830186613682565b615a8b6040830185613718565b8181036060830152615a9d8184613f57565b905095945050505050565b600081519050615ab7816134ac565b92915050565b600060208284031215615ad357615ad2613476565b5b6000615ae184828501615aa8565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615b46603583613546565b9150615b5182615aea565b604082019050919050565b60006020820190508181036000830152615b7581615b39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fc7b3e1065ff76ed9c3e55279cd3a205fc1183775e22ad1efea30ad39c94a3cc64736f6c63430008120033", + "bytecode": "0x60a06040526000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005357600080fd5b5060405162006bbd38038062006bbd8339818101604052810190620000799190620009d1565b6040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152506040518060400160405280600f81526020017f50726f6f664f6650617373706f727400000000000000000000000000000000008152508160009081620000f6919062000c92565b50806001908162000108919062000c92565b5050506200012b6200011f620001c960201b60201c565b620001d160201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001b06200029760201b60201c565b620001c133620007bd60201b60201c565b505062000e94565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600e60405180608001604052806040518060400160405280600d81526020017f69737375696e675f7374617465000000000000000000000000000000000000008152508152602001600281526020016004815260200160008152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000332919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200160058152602001602b8152602001600181525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620003ee919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600f81526020017f70617373706f72745f6e756d62657200000000000000000000000000000000008152508152602001602c815260200160348152602001600281525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620004aa919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6e6174696f6e616c6974790000000000000000000000000000000000000000008152508152602001603681526020016038815260200160038152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000566919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600d81526020017f646174655f6f665f626972746800000000000000000000000000000000000000815250815260200160398152602001603e815260200160048152509080600181540180825580915050600190039060005260206000209060040201600090919091909150600082015181600001908162000622919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600681526020017f67656e646572000000000000000000000000000000000000000000000000000081525081526020016040815260200160408152602001600581525090806001815401808255809150506001900390600052602060002090600402016000909190919091506000820151816000019081620006de919062000c92565b506020820151816001015560408201518160020155606082015181600301555050600e60405180608001604052806040518060400160405280600b81526020017f6578706972795f64617465000000000000000000000000000000000000000000815250815260200160418152602001604681526020016006815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190816200079a919062000c92565b506020820151816001015560408201518160020155606082015181600301555050565b620007cd6200085360201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200083f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008369062000e00565b60405180910390fd5b6200085081620001d160201b60201c565b50565b62000863620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000889620008e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d99062000e72565b60405180910390fd5b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009408262000913565b9050919050565b6000620009548262000933565b9050919050565b620009668162000947565b81146200097257600080fd5b50565b60008151905062000986816200095b565b92915050565b6000620009998262000933565b9050919050565b620009ab816200098c565b8114620009b757600080fd5b50565b600081519050620009cb81620009a0565b92915050565b60008060408385031215620009eb57620009ea6200090e565b5b6000620009fb8582860162000975565b925050602062000a0e85828601620009ba565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9a57607f821691505b60208210810362000ab05762000aaf62000a52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000adb565b62000b26868362000adb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7362000b6d62000b678462000b3e565b62000b48565b62000b3e565b9050919050565b6000819050919050565b62000b8f8362000b52565b62000ba762000b9e8262000b7a565b84845462000ae8565b825550505050565b600090565b62000bbe62000baf565b62000bcb81848462000b84565b505050565b5b8181101562000bf35762000be760008262000bb4565b60018101905062000bd1565b5050565b601f82111562000c425762000c0c8162000ab6565b62000c178462000acb565b8101602085101562000c27578190505b62000c3f62000c368562000acb565b83018262000bd0565b50505b505050565b600082821c905092915050565b600062000c676000198460080262000c47565b1980831691505092915050565b600062000c82838362000c54565b9150826002028217905092915050565b62000c9d8262000a18565b67ffffffffffffffff81111562000cb95762000cb862000a23565b5b62000cc5825462000a81565b62000cd282828562000bf7565b600060209050601f83116001811462000d0a576000841562000cf5578287015190505b62000d01858262000c74565b86555062000d71565b601f19841662000d1a8662000ab6565b60005b8281101562000d445784890151825560018201915060208501945060208101905062000d1d565b8683101562000d64578489015162000d60601f89168262000c54565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000de860268362000d79565b915062000df58262000d8a565b604082019050919050565b6000602082019050818103600083015262000e1b8162000dd9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e5a60208362000d79565b915062000e678262000e22565b602082019050919050565b6000602082019050818103600083015262000e8d8162000e4b565b9050919050565b608051615d0662000eb7600039600081816108db01526115670152615d066000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190613551565b610603565b6040516101fb9190613599565b60405180910390f35b61020c61067d565b6040516102199190613644565b60405180910390f35b61023c6004803603810190610237919061369c565b61070f565b604051610249919061370a565b60405180910390f35b61026c60048036038101906102679190613751565b610755565b005b61027661086c565b60405161028391906137a0565b60405180910390f35b6102a660048036038101906102a191906137bb565b610879565b005b6102b06108d9565b6040516102bd919061386d565b60405180910390f35b6102e060048036038101906102db9190613751565b6108fd565b6040516102ed91906137a0565b60405180910390f35b6102fe6109a2565b60405161030b91906138a9565b60405180910390f35b61032e600480360381019061032991906137bb565b6109c8565b005b61034a6004803603810190610345919061369c565b6109e8565b60405161035791906137a0565b60405180910390f35b61037a600480360381019061037591906138c4565b610a59565b005b6103966004803603810190610391919061369c565b610aa5565b6040516103a3919061370a565b60405180910390f35b6103c660048036038101906103c191906138c4565b610b2b565b6040516103d391906137a0565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb9190613a27565b610bf6565b60405161040d9190613b00565b60405180910390f35b61041e610c63565b60405161042b919061370a565b60405180910390f35b61043c610c8d565b6040516104499190613644565b60405180910390f35b61046c60048036038101906104679190613b47565b610d1f565b005b6104886004803603810190610483919061369c565b610d35565b6040516104989493929190613b87565b60405180910390f35b6104bb60048036038101906104b69190613c88565b610dfd565b005b6104d760048036038101906104d2919061369c565b610e5f565b6040516104e49190613644565b60405180910390f35b6105076004803603810190610502919061369c565b6114cc565b6040516105149190613599565b60405180910390f35b61053760048036038101906105329190613e6d565b6114ec565b005b610553600480360381019061054e919061369c565b6119ea565b6040516105609190613599565b60405180910390f35b610583600480360381019061057e9190613f87565b611b9c565b6040516105909190614009565b60405180910390f35b6105b360048036038101906105ae919061402b565b611cfc565b6040516105c09190613599565b60405180910390f35b6105d1611d90565b6040516105de919061370a565b60405180910390f35b61060160048036038101906105fc91906138c4565b611db6565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611e39565b5b9050919050565b60606000805461068c9061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546106b89061409a565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611f1b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061413d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611f66565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611f66565b611cfc565b5b61085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906141cf565b60405180910390fd5b6108678383611f6e565b505050565b6000600880549050905090565b61088a610884611f66565b82612027565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090614261565b60405180910390fd5b6108d48383836120bc565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906142f3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90614385565b60405180910390fd5b60088281548110610a4757610a466143a5565b5b90600052602060002001549050919050565b610a616123b5565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab183612433565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990614420565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906144b2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea6123b5565b610bf46000612470565b565b610bfe6134c3565b610c066134c3565b60005b6003811015610c5957838160108110610c2557610c246143a5565b5b6020020151828260038110610c3d57610c3c6143a5565b5b6020020181815250508080610c5190614501565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc89061409a565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611f66565b8383612536565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d689061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061409a565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611f66565b83612027565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490614261565b60405180910390fd5b610e59848484846126a2565b50505050565b6060610e6a826126fe565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906145bb565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f279061409a565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe26143a5565b5b602002015161273f565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd028460000151600160078110611046576110456143a5565b5b60200201516040518263ffffffff1660e01b81526004016110679190613644565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad919061467c565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c6143a5565b5b60200201516040518263ffffffff1660e01b815260040161112e9190613644565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061117491906146f4565b8383866000015160026007811061118e5761118d6143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e86143a5565b5b60200201516040518263ffffffff1660e01b815260040161120a9190613644565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125091906146f4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a56143a5565b5b60200201516040518263ffffffff1660e01b81526004016112c79190613644565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d91906146f4565b8960000151600560078110611325576113246143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f6143a5565b5b60200201516040518263ffffffff1660e01b81526004016113a19190613644565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e791906146f4565b6113f08e6119ea565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f6127db565b6040516020016114889a99989796959493929190614d8f565b60405160208183030381529060405290506114a2816128a9565b6040516020016114b29190614f01565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600d600082600360108110611504576115036143a5565b5b6020020151815260200190815260200160002060009054906101000a900460ff1615611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614f6f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b81526004016115c49493929190615195565b602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906151f1565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061526a565b60405180910390fd5b60008160016010611655919061528a565b60108110611666576116656143a5565b5b60200201519050600061167761086c565b90506116838282612a2d565b6001600d60008560036010811061169d5761169c6143a5565b5b6020020151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006116d284610bf6565b905060006116df82611b9c565b90506000600f6000858152602001908152602001600020905060005b600e805490508110156119de576000600e828154811061171e5761171d6143a5565b5b90600052602060002090600402016040518060800160405290816000820180546117479061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546117739061409a565b80156117c05780601f10611795576101008083540402835291602001916117c0565b820191906000526020600020905b8154815290600101906020018083116117a357829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152505090506000600182602001518360400151611801919061528a565b61180b91906152be565b67ffffffffffffffff811115611824576118236138f6565b5b6040519080825280601f01601f1916602001820160405280156118565781602001600182028036833780820191505090505b5090506000826020015190505b826040015181116118f057858181518110611881576118806143a5565b5b602001015160f81c60f81b8284602001518361189d919061528a565b815181106118ae576118ad6143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e890614501565b915050611863565b5060008190508085600001856007811061190d5761190c6143a5565b5b01908161191a9190615494565b506119c88360000151866000018660078110611939576119386143a5565b5b0180546119459061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546119719061409a565b80156119be5780601f10611993576101008083540402835291602001916119be565b820191906000526020600020905b8154815290600101906020018083116119a157829003601f168201915b505050505061273f565b50505080806119d690614501565b9150506116fb565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611aca578382018054611a3d9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a699061409a565b8015611ab65780601f10611a8b57610100808354040283529160200191611ab6565b820191906000526020600020905b815481529060010190602001808311611a9957829003601f168201915b505050505081526020019060010190611a27565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611b2c57611b2b6143a5565b5b60200201516040518263ffffffff1660e01b8152600401611b4d9190613644565b602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e919061557b565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611be657611be56138f6565b5b6040519080825280601f01601f191660200182016040528015611c185781602001600182028036833780820191505090505b5090506000805b6003811015611cf0576000868260038110611c3d57611c3c6143a5565b5b6020020151905060005b858360038110611c5a57611c596143a5565b5b602002015160ff168160ff161015611cdb5760ff821660f81b858580611c7f90614501565b965081518110611c9257611c916143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611cd3906155b5565b915050611c47565b50508080611ce890614501565b915050611c1f565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dbe6123b5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2490615650565b60405180910390fd5b611e3681612470565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f145750611f1382612c4a565b5b9050919050565b611f24816126fe565b611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90614420565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611fe183610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061203383610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061207557506120748185611cfc565b5b806120b357508373ffffffffffffffffffffffffffffffffffffffff1661209b8461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166120dc82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612129906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219890615774565b60405180910390fd5b6121ae8383836001612cb4565b8273ffffffffffffffffffffffffffffffffffffffff166121ce82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906156e2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123b08383836001612d35565b505050565b6123bd611f66565b73ffffffffffffffffffffffffffffffffffffffff166123db610c63565b73ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612428906157e0565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061584c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126959190613599565b60405180910390a3505050565b6126ad8484846120bc565b6126b984848484612d3b565b6126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906158de565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661272083612433565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6127d782826040516024016127559291906158fe565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ec2565b5050565b6060600060016127ea84612ee3565b01905060008167ffffffffffffffff811115612809576128086138f6565b5b6040519080825280601f01601f19166020018201604052801561283b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561289e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161289257612891615935565b5b04945060008503612849575b819350505050919050565b606060008251036128cb57604051806020016040528060008152509050612a28565b6000604051806060016040528060408152602001615c9160409139905060006003600285516128fa91906152be565b6129049190615964565b60046129109190615995565b9050600060208261292191906152be565b67ffffffffffffffff81111561293a576129396138f6565b5b6040519080825280601f01601f19166020018201604052801561296c5781602001600182028036833780820191505090505b509050818152600183018586518101602084015b818310156129e7576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612980565b600389510660018114612a015760028114612a1157612a1c565b613d3d60f01b6002830352612a1c565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390615a23565b60405180910390fd5b612aa5816126fe565b15612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90615a8f565b60405180910390fd5b612af3600083836001612cb4565b612afc816126fe565b15612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3390615a8f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c46600083836001612d35565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612cc084848484613036565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2690615b21565b60405180910390fd5b50505050565b50505050565b6000612d5c8473ffffffffffffffffffffffffffffffffffffffff16613194565b15612eb5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d85611f66565b8786866040518563ffffffff1660e01b8152600401612da79493929190615b41565b6020604051808303816000875af1925050508015612de357506040513d601f19601f82011682018060405250810190612de09190615ba2565b60015b612e65573d8060008114612e13576040519150601f19603f3d011682016040523d82523d6000602084013e612e18565b606091505b506000815103612e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e54906158de565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612eba565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612f41577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612f3757612f36615935565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f7e576d04ee2d6d415b85acef81000000008381612f7457612f73615935565b5b0492506020810190505b662386f26fc100008310612fad57662386f26fc100008381612fa357612fa2615935565b5b0492506010810190505b6305f5e1008310612fd6576305f5e1008381612fcc57612fcb615935565b5b0492506008810190505b6127108310612ffb576127108381612ff157612ff0615935565b5b0492506004810190505b6064831061301e576064838161301457613013615935565b5b0492506002810190505b600a831061302d576001810190505b80915050919050565b613042848484846131b7565b6001811115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d90615c41565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130cd576130c8816131bd565b61310c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461310b5761310a8582613206565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361314e5761314981613373565b61318d565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461318c5761318b8482613444565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161321384610b2b565b61321d919061528a565b9050600060076000848152602001908152602001600020549050818114613302576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613387919061528a565b90506000600960008481526020019081526020016000205490506000600883815481106133b7576133b66143a5565b5b9060005260206000200154905080600883815481106133d9576133d86143a5565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061342857613427615c61565b5b6001900381819060005260206000200160009055905550505050565b600061344f83610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61352e816134f9565b811461353957600080fd5b50565b60008135905061354b81613525565b92915050565b600060208284031215613567576135666134ef565b5b60006135758482850161353c565b91505092915050565b60008115159050919050565b6135938161357e565b82525050565b60006020820190506135ae600083018461358a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ee5780820151818401526020810190506135d3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613616826135b4565b61362081856135bf565b93506136308185602086016135d0565b613639816135fa565b840191505092915050565b6000602082019050818103600083015261365e818461360b565b905092915050565b6000819050919050565b61367981613666565b811461368457600080fd5b50565b60008135905061369681613670565b92915050565b6000602082840312156136b2576136b16134ef565b5b60006136c084828501613687565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f4826136c9565b9050919050565b613704816136e9565b82525050565b600060208201905061371f60008301846136fb565b92915050565b61372e816136e9565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b60008060408385031215613768576137676134ef565b5b60006137768582860161373c565b925050602061378785828601613687565b9150509250929050565b61379a81613666565b82525050565b60006020820190506137b56000830184613791565b92915050565b6000806000606084860312156137d4576137d36134ef565b5b60006137e28682870161373c565b93505060206137f38682870161373c565b925050604061380486828701613687565b9150509250925092565b6000819050919050565b600061383361382e613829846136c9565b61380e565b6136c9565b9050919050565b600061384582613818565b9050919050565b60006138578261383a565b9050919050565b6138678161384c565b82525050565b6000602082019050613882600083018461385e565b92915050565b60006138938261383a565b9050919050565b6138a381613888565b82525050565b60006020820190506138be600083018461389a565b92915050565b6000602082840312156138da576138d96134ef565b5b60006138e88482850161373c565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61392e826135fa565b810181811067ffffffffffffffff8211171561394d5761394c6138f6565b5b80604052505050565b60006139606134e5565b905061396c8282613925565b919050565b600067ffffffffffffffff82111561398c5761398b6138f6565b5b602082029050919050565b600080fd5b60006139af6139aa84613971565b613956565b905080602084028301858111156139c9576139c8613997565b5b835b818110156139f257806139de8882613687565b8452602084019350506020810190506139cb565b5050509392505050565b600082601f830112613a1157613a106138f1565b5b6010613a1e84828561399c565b91505092915050565b60006102008284031215613a3e57613a3d6134ef565b5b6000613a4c848285016139fc565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a7e81613666565b82525050565b6000613a908383613a75565b60208301905092915050565b6000602082019050919050565b613ab281613a55565b613abc8184613a60565b9250613ac782613a6b565b8060005b83811015613af8578151613adf8782613a84565b9650613aea83613a9c565b925050600181019050613acb565b505050505050565b6000606082019050613b156000830184613aa9565b92915050565b613b248161357e565b8114613b2f57600080fd5b50565b600081359050613b4181613b1b565b92915050565b60008060408385031215613b5e57613b5d6134ef565b5b6000613b6c8582860161373c565b9250506020613b7d85828601613b32565b9150509250929050565b60006080820190508181036000830152613ba1818761360b565b9050613bb06020830186613791565b613bbd6040830185613791565b613bca6060830184613791565b95945050505050565b600080fd5b600067ffffffffffffffff821115613bf357613bf26138f6565b5b613bfc826135fa565b9050602081019050919050565b82818337600083830152505050565b6000613c2b613c2684613bd8565b613956565b905082815260208101848484011115613c4757613c46613bd3565b5b613c52848285613c09565b509392505050565b600082601f830112613c6f57613c6e6138f1565b5b8135613c7f848260208601613c18565b91505092915050565b60008060008060808587031215613ca257613ca16134ef565b5b6000613cb08782880161373c565b9450506020613cc18782880161373c565b9350506040613cd287828801613687565b925050606085013567ffffffffffffffff811115613cf357613cf26134f4565b5b613cff87828801613c5a565b91505092959194509250565b600067ffffffffffffffff821115613d2657613d256138f6565b5b602082029050919050565b6000613d44613d3f84613d0b565b613956565b90508060208402830185811115613d5e57613d5d613997565b5b835b81811015613d875780613d738882613687565b845260208401935050602081019050613d60565b5050509392505050565b600082601f830112613da657613da56138f1565b5b6002613db3848285613d31565b91505092915050565b600067ffffffffffffffff821115613dd757613dd66138f6565b5b602082029050919050565b6000613df5613df084613dbc565b613956565b90508060408402830185811115613e0f57613e0e613997565b5b835b81811015613e385780613e248882613d91565b845260208401935050604081019050613e11565b5050509392505050565b600082601f830112613e5757613e566138f1565b5b6002613e64848285613de2565b91505092915050565b6000806000806103008587031215613e8857613e876134ef565b5b6000613e9687828801613d91565b9450506040613ea787828801613e42565b93505060c0613eb887828801613d91565b925050610100613eca878288016139fc565b91505092959194509250565b600067ffffffffffffffff821115613ef157613ef06138f6565b5b602082029050919050565b6000613f0f613f0a84613ed6565b613956565b90508060208402830185811115613f2957613f28613997565b5b835b81811015613f525780613f3e8882613687565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f706138f1565b5b6003613f7e848285613efc565b91505092915050565b600060608284031215613f9d57613f9c6134ef565b5b6000613fab84828501613f5c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613fdb82613fb4565b613fe58185613fbf565b9350613ff58185602086016135d0565b613ffe816135fa565b840191505092915050565b600060208201905081810360008301526140238184613fd0565b905092915050565b60008060408385031215614042576140416134ef565b5b60006140508582860161373c565b92505060206140618582860161373c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140b257607f821691505b6020821081036140c5576140c461406b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141276021836135bf565b9150614132826140cb565b604082019050919050565b600060208201905081810360008301526141568161411a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006141b9603d836135bf565b91506141c48261415d565b604082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b600061424b602d836135bf565b9150614256826141ef565b604082019050919050565b6000602082019050818103600083015261427a8161423e565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006142dd602b836135bf565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061436f602c836135bf565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061440a6018836135bf565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061449c6029836135bf565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450c82613666565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453e5761453d6144d2565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145a5602f836135bf565b91506145b082614549565b604082019050919050565b600060208201905081810360008301526145d481614598565b9050919050565b600067ffffffffffffffff8211156145f6576145f56138f6565b5b6145ff826135fa565b9050602081019050919050565b600061461f61461a846145db565b613956565b90508281526020810184848401111561463b5761463a613bd3565b5b6146468482856135d0565b509392505050565b600082601f830112614663576146626138f1565b5b815161467384826020860161460c565b91505092915050565b60008060408385031215614693576146926134ef565b5b600083015167ffffffffffffffff8111156146b1576146b06134f4565b5b6146bd8582860161464e565b925050602083015167ffffffffffffffff8111156146de576146dd6134f4565b5b6146ea8582860161464e565b9150509250929050565b60006020828403121561470a576147096134ef565b5b600082015167ffffffffffffffff811115614728576147276134f4565b5b6147348482850161464e565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b600061477e60118361473d565b915061478982614748565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b60006147f0602a8361473d565b91506147fb82614794565b602a82019050919050565b6000614811826135b4565b61481b818561473d565b935061482b8185602086016135d0565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061489360298361473d565b915061489e82614837565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061490560288361473d565b9150614910826148a9565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b6000614977602f8361473d565b91506149828261491b565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b60006149e9602b8361473d565b91506149f48261498d565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b6000614a5b602d8361473d565b9150614a66826149ff565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614acd60268361473d565b9150614ad882614a71565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614b3f602b8361473d565b9150614b4a82614ae3565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614bb160278361473d565b9150614bbc82614b55565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bfd60028361473d565b9150614c0882614bc7565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c4960028361473d565b9150614c5482614c13565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d7960d88361473d565b9150614d8482614c5f565b60d882019050919050565b6000614d9a82614771565b9150614da5826147e3565b9150614db1828d614806565b9150614dbc82614886565b9150614dc8828c614806565b9150614dd3826148f8565b9150614ddf828b614806565b9150614dea8261496a565b9150614df6828a614806565b9150614e01826149dc565b9150614e0d8289614806565b9150614e1882614a4e565b9150614e248288614806565b9150614e2f82614ac0565b9150614e3b8287614806565b9150614e4682614b32565b9150614e528286614806565b9150614e5d82614ba4565b9150614e698285614806565b9150614e7482614bf0565b9150614e7f82614c3c565b9150614e8a82614d6c565b9150614e968284614806565b9150614ea182614bf0565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614eeb601d8361473d565b9150614ef682614eb5565b601d82019050919050565b6000614f0c82614ede565b9150614f188284614806565b915081905092915050565b7f5369676e617475726520616c7265616479206e756c6c69666965640000000000600082015250565b6000614f59601b836135bf565b9150614f6482614f23565b602082019050919050565b60006020820190508181036000830152614f8881614f4c565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614fc581614f8f565b614fcf8184614f9a565b9250614fda82614fa5565b8060005b8381101561500b578151614ff28782613a84565b9650614ffd83614faf565b925050600181019050614fde565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b61504781614f8f565b6150518184615033565b925061505c82614fa5565b8060005b8381101561508d5781516150748782613a84565b965061507f83614faf565b925050600181019050615060565b505050505050565b60006150a1838361503e565b60408301905092915050565b6000602082019050919050565b6150c381615013565b6150cd818461501e565b92506150d882615029565b8060005b838110156151095781516150f08782615095565b96506150fb836150ad565b9250506001810190506150dc565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b61514781615111565b615151818461511c565b925061515c82615127565b8060005b8381101561518d5781516151748782613a84565b965061517f83615131565b925050600181019050615160565b505050505050565b6000610300820190506151ab6000830187614fbc565b6151b860408301866150ba565b6151c560c0830185614fbc565b6151d361010083018461513e565b95945050505050565b6000815190506151eb81613b1b565b92915050565b600060208284031215615207576152066134ef565b5b6000615215848285016151dc565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b6000615254600d836135bf565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b600061529582613666565b91506152a083613666565b92508282039050818111156152b8576152b76144d2565b5b92915050565b60006152c982613666565b91506152d483613666565b92508282019050808211156152ec576152eb6144d2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026153547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615317565b61535e8683615317565b95508019841693508086168417925050509392505050565b600061539161538c61538784613666565b61380e565b613666565b9050919050565b6000819050919050565b6153ab83615376565b6153bf6153b782615398565b848454615324565b825550505050565b600090565b6153d46153c7565b6153df8184846153a2565b505050565b5b81811015615403576153f86000826153cc565b6001810190506153e5565b5050565b601f82111561544857615419816152f2565b61542284615307565b81016020851015615431578190505b61544561543d85615307565b8301826153e4565b50505b505050565b600082821c905092915050565b600061546b6000198460080261544d565b1980831691505092915050565b6000615484838361545a565b9150826002028217905092915050565b61549d826135b4565b67ffffffffffffffff8111156154b6576154b56138f6565b5b6154c0825461409a565b6154cb828285615407565b600060209050601f8311600181146154fe57600084156154ec578287015190505b6154f68582615478565b86555061555e565b601f19841661550c866152f2565b60005b828110156155345784890151825560018201915060208501945060208101905061550f565b86831015615551578489015161554d601f89168261545a565b8355505b6001600288020188555050505b505050505050565b60008151905061557581613670565b92915050565b600060208284031215615591576155906134ef565b5b600061559f84828501615566565b91505092915050565b600060ff82169050919050565b60006155c0826155a8565b915060ff82036155d3576155d26144d2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061563a6026836135bf565b9150615645826155de565b604082019050919050565b600060208201905081810360008301526156698161562d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006156cc6025836135bf565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061575e6024836135bf565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006157ca6020836135bf565b91506157d582615794565b602082019050919050565b600060208201905081810360008301526157f9816157bd565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006158366019836135bf565b915061584182615800565b602082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006158c86032836135bf565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b60006040820190508181036000830152615918818561360b565b9050818103602083015261592c818461360b565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061596f82613666565b915061597a83613666565b92508261598a57615989615935565b5b828204905092915050565b60006159a082613666565b91506159ab83613666565b92508282026159b981613666565b915082820484148315176159d0576159cf6144d2565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615a0d6020836135bf565b9150615a18826159d7565b602082019050919050565b60006020820190508181036000830152615a3c81615a00565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615a79601c836135bf565b9150615a8482615a43565b602082019050919050565b60006020820190508181036000830152615aa881615a6c565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615b0b6030836135bf565b9150615b1682615aaf565b604082019050919050565b60006020820190508181036000830152615b3a81615afe565b9050919050565b6000608082019050615b5660008301876136fb565b615b6360208301866136fb565b615b706040830185613791565b8181036060830152615b828184613fd0565b905095945050505050565b600081519050615b9c81613525565b92915050565b600060208284031215615bb857615bb76134ef565b5b6000615bc684828501615b8d565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615c2b6035836135bf565b9150615c3682615bcf565b604082019050919050565b60006020820190508181036000830152615c5a81615c1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fef4d2bd805817fccea2e50e7cba6d5947b65319eed8284ae10c75fd49f3cabd64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a611610104578063c87b56dd116100a2578063dc54daf011610071578063dc54daf014610569578063e985e9c514610599578063eba11e05146105c9578063f2fde38b146105e7576101cf565b8063c87b56dd146104bd578063d21e82ab146104ed578063d4d9c00f1461051d578063d9548e5314610539576101cf565b806395d89b41116100de57806395d89b4114610434578063a22cb46514610452578063b04e3a3b1461046e578063b88d4fde146104a1576101cf565b8063715018a6146103dc57806376e6a447146103e65780638da5cb5b14610416576101cf565b80632f745c59116101715780634f6ccce71161014b5780634f6ccce71461033057806354f96d52146103605780636352211e1461037c57806370a08231146103ac576101cf565b80632f745c59146102c65780633a41515f146102f657806342842e0e14610314576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806318160ddd1461026e57806323b872dd1461028c5780632b7ac3f3146102a8576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190613551565b610603565b6040516101fb9190613599565b60405180910390f35b61020c61067d565b6040516102199190613644565b60405180910390f35b61023c6004803603810190610237919061369c565b61070f565b604051610249919061370a565b60405180910390f35b61026c60048036038101906102679190613751565b610755565b005b61027661086c565b60405161028391906137a0565b60405180910390f35b6102a660048036038101906102a191906137bb565b610879565b005b6102b06108d9565b6040516102bd919061386d565b60405180910390f35b6102e060048036038101906102db9190613751565b6108fd565b6040516102ed91906137a0565b60405180910390f35b6102fe6109a2565b60405161030b91906138a9565b60405180910390f35b61032e600480360381019061032991906137bb565b6109c8565b005b61034a6004803603810190610345919061369c565b6109e8565b60405161035791906137a0565b60405180910390f35b61037a600480360381019061037591906138c4565b610a59565b005b6103966004803603810190610391919061369c565b610aa5565b6040516103a3919061370a565b60405180910390f35b6103c660048036038101906103c191906138c4565b610b2b565b6040516103d391906137a0565b60405180910390f35b6103e4610be2565b005b61040060048036038101906103fb9190613a27565b610bf6565b60405161040d9190613b00565b60405180910390f35b61041e610c63565b60405161042b919061370a565b60405180910390f35b61043c610c8d565b6040516104499190613644565b60405180910390f35b61046c60048036038101906104679190613b47565b610d1f565b005b6104886004803603810190610483919061369c565b610d35565b6040516104989493929190613b87565b60405180910390f35b6104bb60048036038101906104b69190613c88565b610dfd565b005b6104d760048036038101906104d2919061369c565b610e5f565b6040516104e49190613644565b60405180910390f35b6105076004803603810190610502919061369c565b6114cc565b6040516105149190613599565b60405180910390f35b61053760048036038101906105329190613e6d565b6114ec565b005b610553600480360381019061054e919061369c565b6119ea565b6040516105609190613599565b60405180910390f35b610583600480360381019061057e9190613f87565b611b9c565b6040516105909190614009565b60405180910390f35b6105b360048036038101906105ae919061402b565b611cfc565b6040516105c09190613599565b60405180910390f35b6105d1611d90565b6040516105de919061370a565b60405180910390f35b61060160048036038101906105fc91906138c4565b611db6565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610676575061067582611e39565b5b9050919050565b60606000805461068c9061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546106b89061409a565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b600061071a82611f1b565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061076082610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061413d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ef611f66565b73ffffffffffffffffffffffffffffffffffffffff16148061081e575061081d81610818611f66565b611cfc565b5b61085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610854906141cf565b60405180910390fd5b6108678383611f6e565b505050565b6000600880549050905090565b61088a610884611f66565b82612027565b6108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090614261565b60405180910390fd5b6108d48383836120bc565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090883610b2b565b8210610949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610940906142f3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e383838360405180602001604052806000815250610dfd565b505050565b60006109f261086c565b8210610a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2a90614385565b60405180910390fd5b60088281548110610a4757610a466143a5565b5b90600052602060002001549050919050565b610a616123b5565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610ab183612433565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990614420565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906144b2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bea6123b5565b610bf46000612470565b565b610bfe6134c3565b610c066134c3565b60005b6003811015610c5957838160108110610c2557610c246143a5565b5b6020020151828260038110610c3d57610c3c6143a5565b5b6020020181815250508080610c5190614501565b915050610c09565b5080915050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c9c9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc89061409a565b8015610d155780601f10610cea57610100808354040283529160200191610d15565b820191906000526020600020905b815481529060010190602001808311610cf857829003601f168201915b5050505050905090565b610d31610d2a611f66565b8383612536565b5050565b600e8181548110610d4557600080fd5b9060005260206000209060040201600091509050806000018054610d689061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061409a565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050908060010154908060020154908060030154905084565b610e0e610e08611f66565b83612027565b610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490614261565b60405180910390fd5b610e59848484846126a2565b50505050565b6060610e6a826126fe565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906145bb565b60405180910390fd5b6000600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015610f88578382018054610efb9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f279061409a565b8015610f745780601f10610f4957610100808354040283529160200191610f74565b820191906000526020600020905b815481529060010190602001808311610f5757829003601f168201915b505050505081526020019060010190610ee5565b50505050815250509050610fed6040518060400160405280601981526020017f49737375696e6720737461746520696e20746f6b656e555249000000000000008152508260000151600060078110610fe357610fe26143a5565b5b602002015161273f565b606080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630903cd028460000151600160078110611046576110456143a5565b5b60200201516040518263ffffffff1660e01b81526004016110679190613644565b600060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906110ad919061467c565b80925081935050506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed856000015160006007811061110d5761110c6143a5565b5b60200201516040518263ffffffff1660e01b815260040161112e9190613644565b600060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061117491906146f4565b8383866000015160026007811061118e5761118d6143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663028143ed89600001516003600781106111e9576111e86143a5565b5b60200201516040518263ffffffff1660e01b815260040161120a9190613644565b600060405180830381865afa158015611227573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061125091906146f4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8a600001516004600781106112a6576112a56143a5565b5b60200201516040518263ffffffff1660e01b81526004016112c79190613644565b600060405180830381865afa1580156112e4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061130d91906146f4565b8960000151600560078110611325576113246143a5565b5b6020020151600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb0870ee8c600001516006600781106113805761137f6143a5565b5b60200201516040518263ffffffff1660e01b81526004016113a19190613644565b600060405180830381865afa1580156113be573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113e791906146f4565b6113f08e6119ea565b61142f576040518060400160405280600281526020017f4e6f000000000000000000000000000000000000000000000000000000000000815250611466565b6040518060400160405280600381526020017f59657300000000000000000000000000000000000000000000000000000000008152505b61146f8f6127db565b6040516020016114889a99989796959493929190614d8f565b60405160208183030381529060405290506114a2816128a9565b6040516020016114b29190614f01565b604051602081830303815290604052945050505050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600d600082600360108110611504576115036143a5565b5b6020020151815260200190815260200160002060009054906101000a900460ff1615611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614f6f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c82febf5858585856040518563ffffffff1660e01b81526004016115c49493929190615195565b602060405180830381865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160591906151f1565b611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b9061526a565b60405180910390fd5b60008160016010611655919061528a565b60108110611666576116656143a5565b5b60200201519050600061167761086c565b90506116838282612a2d565b6001600d60008560036010811061169d5761169c6143a5565b5b6020020151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006116d284610bf6565b905060006116df82611b9c565b90506000600f6000858152602001908152602001600020905060005b600e805490508110156119de576000600e828154811061171e5761171d6143a5565b5b90600052602060002090600402016040518060800160405290816000820180546117479061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546117739061409a565b80156117c05780601f10611795576101008083540402835291602001916117c0565b820191906000526020600020905b8154815290600101906020018083116117a357829003601f168201915b50505050508152602001600182015481526020016002820154815260200160038201548152505090506000600182602001518360400151611801919061528a565b61180b91906152be565b67ffffffffffffffff811115611824576118236138f6565b5b6040519080825280601f01601f1916602001820160405280156118565781602001600182028036833780820191505090505b5090506000826020015190505b826040015181116118f057858181518110611881576118806143a5565b5b602001015160f81c60f81b8284602001518361189d919061528a565b815181106118ae576118ad6143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e890614501565b915050611863565b5060008190508085600001856007811061190d5761190c6143a5565b5b01908161191a9190615494565b506119c88360000151866000018660078110611939576119386143a5565b5b0180546119459061409a565b80601f01602080910402602001604051908101604052809291908181526020018280546119719061409a565b80156119be5780601f10611993576101008083540402835291602001916119be565b820191906000526020600020905b8154815290600101906020018083116119a157829003601f168201915b505050505061273f565b50505080806119d690614501565b9150506116fb565b50505050505050505050565b600080600f600084815260200190815260200160002060405180602001604052908160008201600780602002604051908101604052809291906000905b82821015611aca578382018054611a3d9061409a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a699061409a565b8015611ab65780601f10611a8b57610100808354040283529160200191611ab6565b820191906000526020600020905b815481529060010190602001808311611a9957829003601f168201915b505050505081526020019060010190611a27565b505050508152505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc0bb5d48360000151600660078110611b2c57611b2b6143a5565b5b60200201516040518263ffffffff1660e01b8152600401611b4d9190613644565b602060405180830381865afa158015611b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8e919061557b565b905080421192505050919050565b606060006040518060600160405280601f60ff168152602001601f60ff168152602001601a60ff1681525090506000605867ffffffffffffffff811115611be657611be56138f6565b5b6040519080825280601f01601f191660200182016040528015611c185781602001600182028036833780820191505090505b5090506000805b6003811015611cf0576000868260038110611c3d57611c3c6143a5565b5b6020020151905060005b858360038110611c5a57611c596143a5565b5b602002015160ff168160ff161015611cdb5760ff821660f81b858580611c7f90614501565b965081518110611c9257611c916143a5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600882901c91508080611cd3906155b5565b915050611c47565b50508080611ce890614501565b915050611c1f565b50819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dbe6123b5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2490615650565b60405180910390fd5b611e3681612470565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f145750611f1382612c4a565b5b9050919050565b611f24816126fe565b611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a90614420565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611fe183610aa5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061203383610aa5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061207557506120748185611cfc565b5b806120b357508373ffffffffffffffffffffffffffffffffffffffff1661209b8461070f565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166120dc82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612129906156e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219890615774565b60405180910390fd5b6121ae8383836001612cb4565b8273ffffffffffffffffffffffffffffffffffffffff166121ce82610aa5565b73ffffffffffffffffffffffffffffffffffffffff1614612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b906156e2565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123b08383836001612d35565b505050565b6123bd611f66565b73ffffffffffffffffffffffffffffffffffffffff166123db610c63565b73ffffffffffffffffffffffffffffffffffffffff1614612431576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612428906157e0565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259b9061584c565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126959190613599565b60405180910390a3505050565b6126ad8484846120bc565b6126b984848484612d3b565b6126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef906158de565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff1661272083612433565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6127d782826040516024016127559291906158fe565b6040516020818303038152906040527f4b5c4277000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612ec2565b5050565b6060600060016127ea84612ee3565b01905060008167ffffffffffffffff811115612809576128086138f6565b5b6040519080825280601f01601f19166020018201604052801561283b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561289e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161289257612891615935565b5b04945060008503612849575b819350505050919050565b606060008251036128cb57604051806020016040528060008152509050612a28565b6000604051806060016040528060408152602001615c9160409139905060006003600285516128fa91906152be565b6129049190615964565b60046129109190615995565b9050600060208261292191906152be565b67ffffffffffffffff81111561293a576129396138f6565b5b6040519080825280601f01601f19166020018201604052801561296c5781602001600182028036833780820191505090505b509050818152600183018586518101602084015b818310156129e7576003830192508251603f8160121c1685015160f81b8252600182019150603f81600c1c1685015160f81b8252600182019150603f8160061c1685015160f81b8252600182019150603f811685015160f81b825260018201915050612980565b600389510660018114612a015760028114612a1157612a1c565b613d3d60f01b6002830352612a1c565b603d60f81b60018303525b50505050508093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390615a23565b60405180910390fd5b612aa5816126fe565b15612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90615a8f565b60405180910390fd5b612af3600083836001612cb4565b612afc816126fe565b15612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3390615a8f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c46600083836001612d35565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612cc084848484613036565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2690615b21565b60405180910390fd5b50505050565b50505050565b6000612d5c8473ffffffffffffffffffffffffffffffffffffffff16613194565b15612eb5578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d85611f66565b8786866040518563ffffffff1660e01b8152600401612da79493929190615b41565b6020604051808303816000875af1925050508015612de357506040513d601f19601f82011682018060405250810190612de09190615ba2565b60015b612e65573d8060008114612e13576040519150601f19603f3d011682016040523d82523d6000602084013e612e18565b606091505b506000815103612e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e54906158de565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612eba565b600190505b949350505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612f41577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612f3757612f36615935565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612f7e576d04ee2d6d415b85acef81000000008381612f7457612f73615935565b5b0492506020810190505b662386f26fc100008310612fad57662386f26fc100008381612fa357612fa2615935565b5b0492506010810190505b6305f5e1008310612fd6576305f5e1008381612fcc57612fcb615935565b5b0492506008810190505b6127108310612ffb576127108381612ff157612ff0615935565b5b0492506004810190505b6064831061301e576064838161301457613013615935565b5b0492506002810190505b600a831061302d576001810190505b80915050919050565b613042848484846131b7565b6001811115613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d90615c41565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130cd576130c8816131bd565b61310c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461310b5761310a8582613206565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361314e5761314981613373565b61318d565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461318c5761318b8482613444565b5b5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161321384610b2b565b61321d919061528a565b9050600060076000848152602001908152602001600020549050818114613302576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613387919061528a565b90506000600960008481526020019081526020016000205490506000600883815481106133b7576133b66143a5565b5b9060005260206000200154905080600883815481106133d9576133d86143a5565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061342857613427615c61565b5b6001900381819060005260206000200160009055905550505050565b600061344f83610b2b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6040518060600160405280600390602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61352e816134f9565b811461353957600080fd5b50565b60008135905061354b81613525565b92915050565b600060208284031215613567576135666134ef565b5b60006135758482850161353c565b91505092915050565b60008115159050919050565b6135938161357e565b82525050565b60006020820190506135ae600083018461358a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156135ee5780820151818401526020810190506135d3565b60008484015250505050565b6000601f19601f8301169050919050565b6000613616826135b4565b61362081856135bf565b93506136308185602086016135d0565b613639816135fa565b840191505092915050565b6000602082019050818103600083015261365e818461360b565b905092915050565b6000819050919050565b61367981613666565b811461368457600080fd5b50565b60008135905061369681613670565b92915050565b6000602082840312156136b2576136b16134ef565b5b60006136c084828501613687565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006136f4826136c9565b9050919050565b613704816136e9565b82525050565b600060208201905061371f60008301846136fb565b92915050565b61372e816136e9565b811461373957600080fd5b50565b60008135905061374b81613725565b92915050565b60008060408385031215613768576137676134ef565b5b60006137768582860161373c565b925050602061378785828601613687565b9150509250929050565b61379a81613666565b82525050565b60006020820190506137b56000830184613791565b92915050565b6000806000606084860312156137d4576137d36134ef565b5b60006137e28682870161373c565b93505060206137f38682870161373c565b925050604061380486828701613687565b9150509250925092565b6000819050919050565b600061383361382e613829846136c9565b61380e565b6136c9565b9050919050565b600061384582613818565b9050919050565b60006138578261383a565b9050919050565b6138678161384c565b82525050565b6000602082019050613882600083018461385e565b92915050565b60006138938261383a565b9050919050565b6138a381613888565b82525050565b60006020820190506138be600083018461389a565b92915050565b6000602082840312156138da576138d96134ef565b5b60006138e88482850161373c565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61392e826135fa565b810181811067ffffffffffffffff8211171561394d5761394c6138f6565b5b80604052505050565b60006139606134e5565b905061396c8282613925565b919050565b600067ffffffffffffffff82111561398c5761398b6138f6565b5b602082029050919050565b600080fd5b60006139af6139aa84613971565b613956565b905080602084028301858111156139c9576139c8613997565b5b835b818110156139f257806139de8882613687565b8452602084019350506020810190506139cb565b5050509392505050565b600082601f830112613a1157613a106138f1565b5b6010613a1e84828561399c565b91505092915050565b60006102008284031215613a3e57613a3d6134ef565b5b6000613a4c848285016139fc565b91505092915050565b600060039050919050565b600081905092915050565b6000819050919050565b613a7e81613666565b82525050565b6000613a908383613a75565b60208301905092915050565b6000602082019050919050565b613ab281613a55565b613abc8184613a60565b9250613ac782613a6b565b8060005b83811015613af8578151613adf8782613a84565b9650613aea83613a9c565b925050600181019050613acb565b505050505050565b6000606082019050613b156000830184613aa9565b92915050565b613b248161357e565b8114613b2f57600080fd5b50565b600081359050613b4181613b1b565b92915050565b60008060408385031215613b5e57613b5d6134ef565b5b6000613b6c8582860161373c565b9250506020613b7d85828601613b32565b9150509250929050565b60006080820190508181036000830152613ba1818761360b565b9050613bb06020830186613791565b613bbd6040830185613791565b613bca6060830184613791565b95945050505050565b600080fd5b600067ffffffffffffffff821115613bf357613bf26138f6565b5b613bfc826135fa565b9050602081019050919050565b82818337600083830152505050565b6000613c2b613c2684613bd8565b613956565b905082815260208101848484011115613c4757613c46613bd3565b5b613c52848285613c09565b509392505050565b600082601f830112613c6f57613c6e6138f1565b5b8135613c7f848260208601613c18565b91505092915050565b60008060008060808587031215613ca257613ca16134ef565b5b6000613cb08782880161373c565b9450506020613cc18782880161373c565b9350506040613cd287828801613687565b925050606085013567ffffffffffffffff811115613cf357613cf26134f4565b5b613cff87828801613c5a565b91505092959194509250565b600067ffffffffffffffff821115613d2657613d256138f6565b5b602082029050919050565b6000613d44613d3f84613d0b565b613956565b90508060208402830185811115613d5e57613d5d613997565b5b835b81811015613d875780613d738882613687565b845260208401935050602081019050613d60565b5050509392505050565b600082601f830112613da657613da56138f1565b5b6002613db3848285613d31565b91505092915050565b600067ffffffffffffffff821115613dd757613dd66138f6565b5b602082029050919050565b6000613df5613df084613dbc565b613956565b90508060408402830185811115613e0f57613e0e613997565b5b835b81811015613e385780613e248882613d91565b845260208401935050604081019050613e11565b5050509392505050565b600082601f830112613e5757613e566138f1565b5b6002613e64848285613de2565b91505092915050565b6000806000806103008587031215613e8857613e876134ef565b5b6000613e9687828801613d91565b9450506040613ea787828801613e42565b93505060c0613eb887828801613d91565b925050610100613eca878288016139fc565b91505092959194509250565b600067ffffffffffffffff821115613ef157613ef06138f6565b5b602082029050919050565b6000613f0f613f0a84613ed6565b613956565b90508060208402830185811115613f2957613f28613997565b5b835b81811015613f525780613f3e8882613687565b845260208401935050602081019050613f2b565b5050509392505050565b600082601f830112613f7157613f706138f1565b5b6003613f7e848285613efc565b91505092915050565b600060608284031215613f9d57613f9c6134ef565b5b6000613fab84828501613f5c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000613fdb82613fb4565b613fe58185613fbf565b9350613ff58185602086016135d0565b613ffe816135fa565b840191505092915050565b600060208201905081810360008301526140238184613fd0565b905092915050565b60008060408385031215614042576140416134ef565b5b60006140508582860161373c565b92505060206140618582860161373c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140b257607f821691505b6020821081036140c5576140c461406b565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006141276021836135bf565b9150614132826140cb565b604082019050919050565b600060208201905081810360008301526141568161411a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006141b9603d836135bf565b91506141c48261415d565b604082019050919050565b600060208201905081810360008301526141e8816141ac565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b600061424b602d836135bf565b9150614256826141ef565b604082019050919050565b6000602082019050818103600083015261427a8161423e565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006142dd602b836135bf565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061436f602c836135bf565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061440a6018836135bf565b9150614415826143d4565b602082019050919050565b60006020820190508181036000830152614439816143fd565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061449c6029836135bf565b91506144a782614440565b604082019050919050565b600060208201905081810360008301526144cb8161448f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450c82613666565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361453e5761453d6144d2565b5b600182019050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145a5602f836135bf565b91506145b082614549565b604082019050919050565b600060208201905081810360008301526145d481614598565b9050919050565b600067ffffffffffffffff8211156145f6576145f56138f6565b5b6145ff826135fa565b9050602081019050919050565b600061461f61461a846145db565b613956565b90508281526020810184848401111561463b5761463a613bd3565b5b6146468482856135d0565b509392505050565b600082601f830112614663576146626138f1565b5b815161467384826020860161460c565b91505092915050565b60008060408385031215614693576146926134ef565b5b600083015167ffffffffffffffff8111156146b1576146b06134f4565b5b6146bd8582860161464e565b925050602083015167ffffffffffffffff8111156146de576146dd6134f4565b5b6146ea8582860161464e565b9150509250929050565b60006020828403121561470a576147096134ef565b5b600082015167ffffffffffffffff811115614728576147276134f4565b5b6147348482850161464e565b91505092915050565b600081905092915050565b7f7b202261747472696275746573223a205b000000000000000000000000000000600082015250565b600061477e60118361473d565b915061478982614748565b601182019050919050565b7f7b2274726169745f74797065223a202249737375696e67205374617465222c2060008201527f2276616c7565223a202200000000000000000000000000000000000000000000602082015250565b60006147f0602a8361473d565b91506147fb82614794565b602a82019050919050565b6000614811826135b4565b61481b818561473d565b935061482b8185602086016135d0565b80840191505092915050565b7f227d2c7b2274726169745f74797065223a202246697273744e616d65222c202260008201527f76616c7565223a20220000000000000000000000000000000000000000000000602082015250565b600061489360298361473d565b915061489e82614837565b602982019050919050565b7f227d2c7b2274726169745f74797065223a20224c6173744e616d65222c20227660008201527f616c7565223a2022000000000000000000000000000000000000000000000000602082015250565b600061490560288361473d565b9150614910826148a9565b602882019050919050565b7f227d2c7b2274726169745f74797065223a202250617373706f7274204e756d6260008201527f6572222c202276616c7565223a20220000000000000000000000000000000000602082015250565b6000614977602f8361473d565b91506149828261491b565b602f82019050919050565b7f227d2c7b2274726169745f74797065223a20224e6174696f6e616c697479222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b60006149e9602b8361473d565b91506149f48261498d565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202244617465206f6620626972746860008201527f222c202276616c7565223a202200000000000000000000000000000000000000602082015250565b6000614a5b602d8361473d565b9150614a66826149ff565b602d82019050919050565b7f227d2c7b2274726169745f74797065223a202247656e646572222c202276616c60008201527f7565223a20220000000000000000000000000000000000000000000000000000602082015250565b6000614acd60268361473d565b9150614ad882614a71565b602682019050919050565b7f227d2c7b2274726169745f74797065223a20224578706972792064617465222c60008201527f202276616c7565223a2022000000000000000000000000000000000000000000602082015250565b6000614b3f602b8361473d565b9150614b4a82614ae3565b602b82019050919050565b7f227d2c7b2274726169745f74797065223a202245787069726564222c2022766160008201527f6c7565223a202200000000000000000000000000000000000000000000000000602082015250565b6000614bb160278361473d565b9150614bbc82614b55565b602782019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614bfd60028361473d565b9150614c0882614bc7565b600282019050919050565b7f5d2c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614c4960028361473d565b9150614c5482614c13565b600282019050919050565b7f226465736372697074696f6e223a202250726f6f66206f662050617373706f7260008201527f742067756172616e7465657320706f7373657373696f6e206f6620612076616c60208201527f69642070617373706f72742e222c2265787465726e616c5f75726c223a20226860408201527f747470733a2f2f6769746875622e636f6d2f7a6b2d70617373706f72742f707260608201527f6f6f662d6f662d70617373706f7274222c22696d616765223a2022687474707360808201527f3a2f2f692e696d6775722e636f6d2f396b766574696a2e706e67222c226e616d60a08201527f65223a202250726f6f66206f662050617373706f72742023000000000000000060c082015250565b6000614d7960d88361473d565b9150614d8482614c5f565b60d882019050919050565b6000614d9a82614771565b9150614da5826147e3565b9150614db1828d614806565b9150614dbc82614886565b9150614dc8828c614806565b9150614dd3826148f8565b9150614ddf828b614806565b9150614dea8261496a565b9150614df6828a614806565b9150614e01826149dc565b9150614e0d8289614806565b9150614e1882614a4e565b9150614e248288614806565b9150614e2f82614ac0565b9150614e3b8287614806565b9150614e4682614b32565b9150614e528286614806565b9150614e5d82614ba4565b9150614e698285614806565b9150614e7482614bf0565b9150614e7f82614c3c565b9150614e8a82614d6c565b9150614e968284614806565b9150614ea182614bf0565b91508190509b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614eeb601d8361473d565b9150614ef682614eb5565b601d82019050919050565b6000614f0c82614ede565b9150614f188284614806565b915081905092915050565b7f5369676e617475726520616c7265616479206e756c6c69666965640000000000600082015250565b6000614f59601b836135bf565b9150614f6482614f23565b602082019050919050565b60006020820190508181036000830152614f8881614f4c565b9050919050565b600060029050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614fc581614f8f565b614fcf8184614f9a565b9250614fda82614fa5565b8060005b8381101561500b578151614ff28782613a84565b9650614ffd83614faf565b925050600181019050614fde565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b61504781614f8f565b6150518184615033565b925061505c82614fa5565b8060005b8381101561508d5781516150748782613a84565b965061507f83614faf565b925050600181019050615060565b505050505050565b60006150a1838361503e565b60408301905092915050565b6000602082019050919050565b6150c381615013565b6150cd818461501e565b92506150d882615029565b8060005b838110156151095781516150f08782615095565b96506150fb836150ad565b9250506001810190506150dc565b505050505050565b600060109050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b61514781615111565b615151818461511c565b925061515c82615127565b8060005b8381101561518d5781516151748782613a84565b965061517f83615131565b925050600181019050615160565b505050505050565b6000610300820190506151ab6000830187614fbc565b6151b860408301866150ba565b6151c560c0830185614fbc565b6151d361010083018461513e565b95945050505050565b6000815190506151eb81613b1b565b92915050565b600060208284031215615207576152066134ef565b5b6000615215848285016151dc565b91505092915050565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b6000615254600d836135bf565b915061525f8261521e565b602082019050919050565b6000602082019050818103600083015261528381615247565b9050919050565b600061529582613666565b91506152a083613666565b92508282039050818111156152b8576152b76144d2565b5b92915050565b60006152c982613666565b91506152d483613666565b92508282019050808211156152ec576152eb6144d2565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026153547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615317565b61535e8683615317565b95508019841693508086168417925050509392505050565b600061539161538c61538784613666565b61380e565b613666565b9050919050565b6000819050919050565b6153ab83615376565b6153bf6153b782615398565b848454615324565b825550505050565b600090565b6153d46153c7565b6153df8184846153a2565b505050565b5b81811015615403576153f86000826153cc565b6001810190506153e5565b5050565b601f82111561544857615419816152f2565b61542284615307565b81016020851015615431578190505b61544561543d85615307565b8301826153e4565b50505b505050565b600082821c905092915050565b600061546b6000198460080261544d565b1980831691505092915050565b6000615484838361545a565b9150826002028217905092915050565b61549d826135b4565b67ffffffffffffffff8111156154b6576154b56138f6565b5b6154c0825461409a565b6154cb828285615407565b600060209050601f8311600181146154fe57600084156154ec578287015190505b6154f68582615478565b86555061555e565b601f19841661550c866152f2565b60005b828110156155345784890151825560018201915060208501945060208101905061550f565b86831015615551578489015161554d601f89168261545a565b8355505b6001600288020188555050505b505050505050565b60008151905061557581613670565b92915050565b600060208284031215615591576155906134ef565b5b600061559f84828501615566565b91505092915050565b600060ff82169050919050565b60006155c0826155a8565b915060ff82036155d3576155d26144d2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061563a6026836135bf565b9150615645826155de565b604082019050919050565b600060208201905081810360008301526156698161562d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b60006156cc6025836135bf565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061575e6024836135bf565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006157ca6020836135bf565b91506157d582615794565b602082019050919050565b600060208201905081810360008301526157f9816157bd565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006158366019836135bf565b915061584182615800565b602082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006158c86032836135bf565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b60006040820190508181036000830152615918818561360b565b9050818103602083015261592c818461360b565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061596f82613666565b915061597a83613666565b92508261598a57615989615935565b5b828204905092915050565b60006159a082613666565b91506159ab83613666565b92508282026159b981613666565b915082820484148315176159d0576159cf6144d2565b5b5092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615a0d6020836135bf565b9150615a18826159d7565b602082019050919050565b60006020820190508181036000830152615a3c81615a00565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615a79601c836135bf565b9150615a8482615a43565b602082019050919050565b60006020820190508181036000830152615aa881615a6c565b9050919050565b7f43616e6e6f74207472616e73666572202d2050726f6f66206f6620506173737060008201527f6f727420697320736f756c626f756e6400000000000000000000000000000000602082015250565b6000615b0b6030836135bf565b9150615b1682615aaf565b604082019050919050565b60006020820190508181036000830152615b3a81615afe565b9050919050565b6000608082019050615b5660008301876136fb565b615b6360208301866136fb565b615b706040830185613791565b8181036060830152615b828184613fd0565b905095945050505050565b600081519050615b9c81613525565b92915050565b600060208284031215615bb857615bb76134ef565b5b6000615bc684828501615b8d565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000615c2b6035836135bf565b9150615c3682615bcf565b604082019050919050565b60006020820190508181036000830152615c5a81615c1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220fef4d2bd805817fccea2e50e7cba6d5947b65319eed8284ae10c75fd49f3cabd64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/app/deployments/addresses.json b/app/deployments/addresses.json index 19b48a62e..09a89916d 100644 --- a/app/deployments/addresses.json +++ b/app/deployments/addresses.json @@ -1 +1 @@ -{"ProofOfPassport":"0x7D459347d092D35f043f73021f06c19f834f8c3E","Groth16Verifier":"0x72d8Fb7Dd33c264b53D313ff3BF25D993c0AD050"} \ No newline at end of file +{"ProofOfPassport":"0x50c47Be849dFac1FCbEDa031425896AF49d9FDFC","Groth16Verifier":"0xD6F5CA79b90a9E20B38df773122B4f50a1fda317"} \ No newline at end of file diff --git a/app/ios/AwesomeProject/AES_3DES_DESEncryption.swift b/app/ios/AwesomeProject/AES_3DES_DESEncryption.swift deleted file mode 100644 index ddd331099..000000000 --- a/app/ios/AwesomeProject/AES_3DES_DESEncryption.swift +++ /dev/null @@ -1,368 +0,0 @@ -import Foundation -import CommonCrypto - - -/// Encrypts a message using AES/CBC/NOPADDING with a specified key and initialisation vector -/// - Parameter key: Key use to encrypt -/// - Parameter message: Message to encrypt -/// - Parameter iv: Initialisation vector -@available(iOS 13, macOS 10.15, *) -public func AESEncrypt(key:[UInt8], message:[UInt8], iv:[UInt8]) -> [UInt8] { - - let dataLength = message.count - - let cryptLen = message.count + kCCBlockSizeAES128 - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(key.count) - let operation: CCOperation = CCOperation(kCCEncrypt) - let algorithm: CCAlgorithm = CCAlgorithm(kCCAlgorithmAES) - let options: CCOptions = CCOptions(0) - - var numBytesEncrypted = 0 - - var cryptStatus: CCCryptorStatus = CCCryptorStatus(kCCSuccess) - key.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - iv.withUnsafeBytes{ ivBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - - cryptStatus = CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - ivBytes.baseAddress, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("AES Encrypt Error: \(cryptStatus)") - } - return [] -} - -/// Decrypts a message using AES/CBC/NOPADDING with a specified key and initialisation vector -/// - Parameter key: Key use to decrypt -/// - Parameter message: Message to decrypt -/// - Parameter iv: Initialisation vector -@available(iOS 13, macOS 10.15, *) -public func AESDecrypt(key:[UInt8], message:[UInt8], iv:[UInt8]) -> [UInt8] { - var fixedKey = key - if key.count == 16 { - fixedKey += key[0..<8] - } - - let data = Data(message) - let dataLength = message.count - - let cryptLen = data.count + kCCBlockSizeAES128 - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(key.count) - let operation: CCOperation = UInt32(kCCDecrypt) - let algorithm: CCAlgorithm = UInt32(kCCAlgorithmAES) - let options: CCOptions = UInt32(0) - - var numBytesEncrypted = 0 - - let cryptStatus = fixedKey.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - iv, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("AES Decrypt Error: \(cryptStatus)") - } - return [] -} - -/// Decrypts a message using AES/ECB/NOPADDING with a specified key and initialisation vector -/// - Parameter key: Key use to decrypt -/// - Parameter message: Message to decrypt -/// - Parameter iv: Initialisation vector -@available(iOS 13, macOS 10.15, *) -public func AESECBEncrypt(key:[UInt8], message:[UInt8]) -> [UInt8] { - - let dataLength = message.count - - let cryptLen = message.count + kCCBlockSizeAES128 - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(key.count) - let operation: CCOperation = CCOperation(kCCEncrypt) - let algorithm: CCAlgorithm = CCAlgorithm(kCCAlgorithmAES) - let options: CCOptions = CCOptions(kCCOptionECBMode) - - var numBytesEncrypted = 0 - - let cryptStatus = key.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - nil, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("AESECBEncrypt Error: \(cryptStatus)") - } - return [] -} - -/// Encrypts a message using DES3 with a specified key and initialisation vector -/// - Parameter key: Key use to encrypt -/// - Parameter message: Message to encrypt -/// - Parameter iv: Initialisation vector -@available(iOS 13, macOS 10.15, *) -public func tripleDESEncrypt(key:[UInt8], message:[UInt8], iv:[UInt8]) -> [UInt8] { - // Fix key data - if length is 16 then take the first 98 bytes and append them to the end to make 24 bytes - var fixedKey = key - if key.count == 16 { - fixedKey += key[0..<8] - } - - let dataLength = message.count - - let cryptLen = message.count + kCCBlockSize3DES - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(kCCKeySize3DES) - let operation: CCOperation = UInt32(kCCEncrypt) - let algorithm: CCAlgorithm = UInt32(kCCAlgorithm3DES) - let options: CCOptions = UInt32(0) - - var numBytesEncrypted = 0 - - let cryptStatus = fixedKey.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - iv.withUnsafeBytes{ ivBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - ivBytes.baseAddress, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("Error: \(cryptStatus)") - } - return [] -} - -/// Decrypts a message using DES3 with a specified key and initialisation vector -/// - Parameter key: Key use to decrypt -/// - Parameter message: Message to decrypt -/// - Parameter iv: Initialisation vector -@available(iOS 13, macOS 10.15, *) -public func tripleDESDecrypt(key:[UInt8], message:[UInt8], iv:[UInt8]) -> [UInt8] { - var fixedKey = key - if key.count == 16 { - fixedKey += key[0..<8] - } - - let data = Data(message) - let dataLength = message.count - - let cryptLen = data.count + kCCBlockSize3DES - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(kCCKeySize3DES) - let operation: CCOperation = UInt32(kCCDecrypt) - let algorithm: CCAlgorithm = UInt32(kCCAlgorithm3DES) - let options: CCOptions = UInt32(0) - - var numBytesEncrypted = 0 - - let cryptStatus = fixedKey.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - iv, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("Error: \(cryptStatus)") - } - return [] -} - - -/// Encrypts a message using DES with a specified key and initialisation vector -/// - Parameter key: Key use to encrypt -/// - Parameter message: Message to encrypt -/// - Parameter iv: Initialisation vector -/// - Parameter options: Encryption options to use -@available(iOS 13, macOS 10.15, *) -public func DESEncrypt(key:[UInt8], message:[UInt8], iv:[UInt8], options:UInt32 = 0) -> [UInt8] { - - let dataLength = message.count - - let cryptLen = message.count + kCCBlockSizeDES - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(kCCKeySizeDES) - let operation: CCOperation = UInt32(kCCEncrypt) - let algorithm: CCAlgorithm = UInt32(kCCAlgorithmDES) - let options: CCOptions = options - - var numBytesEncrypted = 0 - - let cryptStatus = key.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - iv.withUnsafeBytes{ ivBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - ivBytes.baseAddress, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("Error: \(cryptStatus)") - } - return [] -} - -/// Decrypts a message using DES with a specified key and initialisation vector -/// - Parameter key: Key use to decrypt -/// - Parameter message: Message to decrypt -/// - Parameter iv: Initialisation vector -/// - Parameter options: Decryption options to use -@available(iOS 13, macOS 10.15, *) -public func DESDecrypt(key:[UInt8], message:[UInt8], iv:[UInt8], options:UInt32 = 0) -> [UInt8] { - - let dataLength = message.count - - let cryptLen = message.count + kCCBlockSizeDES - var cryptData = Data(count: cryptLen) - - let keyLength = size_t(kCCKeySizeDES) - let operation: CCOperation = UInt32(kCCDecrypt) - let algorithm: CCAlgorithm = UInt32(kCCAlgorithmDES) - let options: CCOptions = options - - var numBytesEncrypted = 0 - - let cryptStatus = key.withUnsafeBytes {keyBytes in - message.withUnsafeBytes{ dataBytes in - iv.withUnsafeBytes{ ivBytes in - cryptData.withUnsafeMutableBytes{ cryptBytes in - CCCrypt(operation, - algorithm, - options, - keyBytes.baseAddress, - keyLength, - nil, - dataBytes.baseAddress, - dataLength, - cryptBytes.bindMemory(to: UInt8.self).baseAddress, - cryptLen, - &numBytesEncrypted) - - } - } - } - } - - if cryptStatus == kCCSuccess { - cryptData.count = Int(numBytesEncrypted) - - return [UInt8](cryptData) - } else { - Log.error("Error: \(cryptStatus)") - } - return [] -} diff --git a/app/ios/AwesomeProject/DataGroups/ActiveAuthenticationInfo.swift b/app/ios/AwesomeProject/DataGroups/ActiveAuthenticationInfo.swift deleted file mode 100644 index df627f085..000000000 --- a/app/ios/AwesomeProject/DataGroups/ActiveAuthenticationInfo.swift +++ /dev/null @@ -1,62 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class ActiveAuthenticationInfo : SecurityInfo { - - var oid : String - var version : Int - var signatureAlgorithmOID : String? - - static func checkRequiredIdentifier(_ oid : String) -> Bool { - return ID_AA_OID == oid - } - - init(oid: String, version: Int, signatureAlgorithmOID: String? = nil) { - self.oid = oid - self.version = version - self.signatureAlgorithmOID = signatureAlgorithmOID - } - - public override func getObjectIdentifier() -> String { - return oid - } - - public override func getProtocolOIDString() -> String { - return ActiveAuthenticationInfo.toProtocolOIDString(oid:oid) - } - - public func getSignatureAlgorithmOIDString() -> String? { - return ActiveAuthenticationInfo.toSignatureAlgorithmOIDString(oid: signatureAlgorithmOID) - } - - private static func toProtocolOIDString(oid : String) -> String { - if ID_AA_OID == oid { - return "id-AA" - } - - return oid - } - - private static func toSignatureAlgorithmOIDString(oid: String?) -> String? { - if (ECDSA_PLAIN_SHA1_OID == oid) { - return "ecdsa-plain-SHA1"; - } - if (ECDSA_PLAIN_SHA224_OID == oid) { - return "ecdsa-plain-SHA224"; - } - if (ECDSA_PLAIN_SHA256_OID == oid) { - return "ecdsa-plain-SHA256"; - } - if (ECDSA_PLAIN_SHA384_OID == oid) { - return "ecdsa-plain-SHA384"; - } - if (ECDSA_PLAIN_SHA512_OID == oid) { - return "ecdsa-plain-SHA512"; - } - if (ECDSA_PLAIN_RIPEMD160_OID == oid) { - return "ecdsa-plain-RIPEMD160"; - } - - return nil - } -} diff --git a/app/ios/AwesomeProject/DataGroups/COM.swift b/app/ios/AwesomeProject/DataGroups/COM.swift deleted file mode 100644 index d5cb53835..000000000 --- a/app/ios/AwesomeProject/DataGroups/COM.swift +++ /dev/null @@ -1,59 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class COM : DataGroup { - public private(set) var version : String = "Unknown" - public private(set) var unicodeVersion : String = "Unknown" - public private(set) var dataGroupsPresent : [String] = [] - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .COM - } - - override func parse(_ data: [UInt8]) throws { - var tag = try getNextTag() - if tag != 0x5F01 { - throw NFCPassportReaderError.InvalidResponse - } - - // Version is 4 bytes (ascii) - AABB - // AA is major number, BB is minor number - // e.g. 48 49 48 55 -> 01 07 -> 1.7 - var versionBytes = try getNextValue() - if versionBytes.count == 4 { - let aa = Int( String(cString: Array(versionBytes[0..<2] + [0]) )) ?? -1 - let bb = Int( String(cString: Array(versionBytes[2...] + [0])) ) ?? -1 - if aa != -1 && bb != -1 { - version = "\(aa).\(bb)" - } - } - tag = try getNextTag() - if tag != 0x5F36 { - throw NFCPassportReaderError.InvalidResponse - } - - versionBytes = try getNextValue() - if versionBytes.count == 6 { - let aa = Int( String(cString: Array(versionBytes[0..<2] + [0])) ) ?? -1 - let bb = Int( String(cString: Array(versionBytes[2..<4] + [0])) ) ?? -1 - let cc = Int( String(cString: Array(versionBytes[4...]) + [0]) ) ?? -1 - if aa != -1 && bb != -1 && cc != -1 { - unicodeVersion = "\(aa).\(bb).\(cc)" - } - } - - tag = try getNextTag() - if tag != 0x5C { - throw NFCPassportReaderError.InvalidResponse - } - - let vals = try getNextValue() - for v in vals { - if let index = DataGroupParser.tags.firstIndex(of: v) { - dataGroupsPresent.append( DataGroupParser.dataGroupNames[index] ) - } - } - Log.debug( "DG Found - \(dataGroupsPresent)" ) - } -} diff --git a/app/ios/AwesomeProject/DataGroups/CardAccess.swift b/app/ios/AwesomeProject/DataGroups/CardAccess.swift deleted file mode 100644 index f8759ea4a..000000000 --- a/app/ios/AwesomeProject/DataGroups/CardAccess.swift +++ /dev/null @@ -1,31 +0,0 @@ -import Foundation - -// SecurityInfos ::= SET of SecurityInfo -// SecurityInfo ::= SEQUENCE { -// protocol OBJECT IDENTIFIER, -// requiredData ANY DEFINED BY protocol, -// optionalData ANY DEFINED BY protocol OPTIONAL -@available(iOS 13, macOS 10.15, *) -public class CardAccess { - private var asn1 : ASN1Item! - public private(set) var securityInfos : [SecurityInfo] = [SecurityInfo]() - - var paceInfo : PACEInfo? { - get { - return (securityInfos.filter { ($0 as? PACEInfo) != nil }).first as? PACEInfo - } - } - - required init( _ data : [UInt8] ) throws { - let p = SimpleASN1DumpParser() - asn1 = try p.parse(data: Data(data)) - - // Bit of a hack at the moment - passing in the body - if we had a decent ASN1 parser then this would be better! ;) - for i in 0 ..< asn1.getNumberOfChildren() { - if let child = asn1.getChild(i), - let secInfo = SecurityInfo.getInstance( object:child, body : data ) { - securityInfos.append(secInfo) - } - } - } -} diff --git a/app/ios/AwesomeProject/DataGroups/ChipAuthenticationInfo.swift b/app/ios/AwesomeProject/DataGroups/ChipAuthenticationInfo.swift deleted file mode 100644 index 7eda04a33..000000000 --- a/app/ios/AwesomeProject/DataGroups/ChipAuthenticationInfo.swift +++ /dev/null @@ -1,128 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class ChipAuthenticationInfo : SecurityInfo { - - var oid : String - var version : Int - var keyId : Int? - - static func checkRequiredIdentifier(_ oid : String) -> Bool { - return ID_CA_DH_3DES_CBC_CBC_OID == oid - || ID_CA_ECDH_3DES_CBC_CBC_OID == oid - || ID_CA_DH_AES_CBC_CMAC_128_OID == oid - || ID_CA_DH_AES_CBC_CMAC_192_OID == oid - || ID_CA_DH_AES_CBC_CMAC_256_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_128_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_192_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_256_OID == oid - } - - init(oid: String, version: Int, keyId: Int? = nil) { - self.oid = oid - self.version = version - self.keyId = keyId - } - - public override func getObjectIdentifier() -> String { - return oid - } - - public override func getProtocolOIDString() -> String { - return ChipAuthenticationInfo.toProtocolOIDString(oid:oid) - } - - // The keyid refers to a specific key if there are multiple otherwise if not set, only one key is present so set to 0 - public func getKeyId() -> Int { - return keyId ?? 0 - } - - /// Returns the key agreement algorithm - DH or ECDH for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: key agreement algorithm - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toKeyAgreementAlgorithm( oid : String ) throws -> String { - if ID_CA_DH_3DES_CBC_CBC_OID == oid - || ID_CA_DH_AES_CBC_CMAC_128_OID == oid - || ID_CA_DH_AES_CBC_CMAC_192_OID == oid - || ID_CA_DH_AES_CBC_CMAC_256_OID == oid { - return "DH"; - } else if ID_CA_ECDH_3DES_CBC_CBC_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_128_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_192_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_256_OID == oid { - return "ECDH"; - } - - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup key agreement algorithm - invalid oid" ) - } - - /// Returns the cipher algorithm - DESede or AES for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: the cipher algorithm type - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toCipherAlgorithm( oid : String ) throws -> String { - if ID_CA_DH_3DES_CBC_CBC_OID == oid - || ID_CA_ECDH_3DES_CBC_CBC_OID == oid { - return "DESede"; - } else if ID_CA_DH_AES_CBC_CMAC_128_OID == oid - || ID_CA_DH_AES_CBC_CMAC_192_OID == oid - || ID_CA_DH_AES_CBC_CMAC_256_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_128_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_192_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_256_OID == oid { - return "AES"; - } - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup cipher algorithm - invalid oid" ) - } - - /// Returns the key length in bits (128, 192, or 256) for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: the key length in bits - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toKeyLength( oid : String ) throws -> Int { - if ID_CA_DH_3DES_CBC_CBC_OID == oid - || ID_CA_ECDH_3DES_CBC_CBC_OID == oid - || ID_CA_DH_AES_CBC_CMAC_128_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_128_OID == oid { - return 128; - } else if ID_CA_DH_AES_CBC_CMAC_192_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_192_OID == oid { - return 192; - } else if ID_CA_DH_AES_CBC_CMAC_256_OID == oid - || ID_CA_ECDH_AES_CBC_CMAC_256_OID == oid { - return 256; - } - - throw NFCPassportReaderError.InvalidDataPassed( "Unable to get key length - invalid oid" ) - } - - private static func toProtocolOIDString(oid : String) -> String { - if ID_CA_DH_3DES_CBC_CBC_OID == oid { - return "id-CA-DH-3DES-CBC-CBC" - } - if ID_CA_DH_AES_CBC_CMAC_128_OID == oid { - return "id-CA-DH-AES-CBC-CMAC-128" - } - if ID_CA_DH_AES_CBC_CMAC_192_OID == oid { - return "id-CA-DH-AES-CBC-CMAC-192" - } - if ID_CA_DH_AES_CBC_CMAC_256_OID == oid { - return "id-CA-DH-AES-CBC-CMAC-256" - } - if ID_CA_ECDH_3DES_CBC_CBC_OID == oid { - return "id-CA-ECDH-3DES-CBC-CBC" - } - if ID_CA_ECDH_AES_CBC_CMAC_128_OID == oid { - return "id-CA-ECDH-AES-CBC-CMAC-128" - } - if ID_CA_ECDH_AES_CBC_CMAC_192_OID == oid { - return "id-CA-ECDH-AES-CBC-CMAC-192" - } - if ID_CA_ECDH_AES_CBC_CMAC_256_OID == oid { - return "id-CA-ECDH-AES-CBC-CMAC-256" - } - - return oid - } -} diff --git a/app/ios/AwesomeProject/DataGroups/ChipAuthenticationPublicKeyInfo.swift b/app/ios/AwesomeProject/DataGroups/ChipAuthenticationPublicKeyInfo.swift deleted file mode 100644 index 7f989c5b2..000000000 --- a/app/ios/AwesomeProject/DataGroups/ChipAuthenticationPublicKeyInfo.swift +++ /dev/null @@ -1,46 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class ChipAuthenticationPublicKeyInfo : SecurityInfo { - var oid : String - var pubKey : OpaquePointer - var keyId : Int? - - - static func checkRequiredIdentifier(_ oid : String) -> Bool { - return ID_PK_DH_OID == oid - || ID_PK_ECDH_OID == oid - } - - init(oid:String, pubKey:OpaquePointer, keyId: Int? = nil) { - self.oid = oid - self.pubKey = pubKey - self.keyId = keyId - } - - public override func getObjectIdentifier() -> String { - return oid - } - - public override func getProtocolOIDString() -> String { - return ChipAuthenticationPublicKeyInfo.toProtocolOIDString(oid:oid) - } - - // The keyid refers to a specific key if there are multiple otherwise if not set, only one key is present so set to 0 - public func getKeyId() -> Int { - return keyId ?? 0 - } - - - private static func toProtocolOIDString(oid : String) -> String { - if ID_PK_DH_OID == oid { - return "id-PK-DH" - } - if ID_PK_ECDH_OID == oid { - return "id-PK-ECDH" - } - - return oid - } - -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup.swift b/app/ios/AwesomeProject/DataGroups/DataGroup.swift deleted file mode 100644 index 3719fa8f7..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup.swift +++ /dev/null @@ -1,78 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class DataGroup { - public var datagroupType : DataGroupId = .Unknown - - /// Body contains the actual data - public private(set) var body : [UInt8] = [] - - /// Data contains the whole DataGroup data (as that is what the hash is calculated from - public private(set) var data : [UInt8] = [] - - var pos = 0 - - required init( _ data : [UInt8] ) throws { - self.data = data - - // Skip the first byte which is the header byte - pos = 1 - let _ = try getNextLength() - self.body = [UInt8](data[pos...]) - - try parse(data) - } - - func parse( _ data:[UInt8] ) throws { - } - - func getNextTag() throws -> Int { - var tag = 0 - - // Fix for some passports that may have invalid data - ensure that we do have data! - guard data.count > pos else { - throw NFCPassportReaderError.TagNotValid - } - - if binToHex(data[pos]) & 0x0F == 0x0F { - tag = Int(binToHex(data[pos.. Int { - let end = pos+4 < data.count ? pos+4 : data.count - let (len, lenOffset) = try asn1Length([UInt8](data[pos.. [UInt8] { - let length = try getNextLength() - let value = [UInt8](data[pos ..< pos+length]) - pos += length - return value - } - - public func hash( _ hashAlgorythm: String ) -> [UInt8] { - var ret : [UInt8] = [] - if hashAlgorythm == "SHA1" { - ret = calcSHA1Hash(self.data) - } else if hashAlgorythm == "SHA224" { - ret = calcSHA224Hash(self.data) - } else if hashAlgorythm == "SHA256" { - ret = calcSHA256Hash(self.data) - } else if hashAlgorythm == "SHA384" { - ret = calcSHA384Hash(self.data) - } else if hashAlgorythm == "SHA512" { - ret = calcSHA512Hash(self.data) - } - - return ret - } - -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup1.swift b/app/ios/AwesomeProject/DataGroups/DataGroup1.swift deleted file mode 100644 index a0cd80873..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup1.swift +++ /dev/null @@ -1,108 +0,0 @@ - -import Foundation - -@available(iOS 13, macOS 10.15, *) -public enum DocTypeEnum: String { - case TD1 - case TD2 - case OTHER - - var desc: String { - get { - return self.rawValue - } - } -} - -@available(iOS 13, macOS 10.15, *) -public class DataGroup1 : DataGroup { - - public private(set) var elements : [String:String] = [:] - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG1 - } - - override func parse(_ data: [UInt8]) throws { - let tag = try getNextTag() - if tag != 0x5F1F { - throw NFCPassportReaderError.InvalidResponse - } - let body = try getNextValue() - let docType = getMRZType(length:body.count) - - switch docType { - case .TD1: - self.parseTd1(body) - case .TD2: - self.parseTd2(body) - default: - self.parseOther(body) - } - - // Store MRZ data - elements["5F1F"] = String(bytes: body, encoding:.utf8) - } - - func parseTd1(_ data : [UInt8]) { - elements["5F03"] = String(bytes: data[0..<2], encoding:.utf8) - elements["5F28"] = String( bytes:data[2..<5], encoding:.utf8) - elements["5A"] = String( bytes:data[5..<14], encoding:.utf8) - elements["5F04"] = String( bytes:data[14..<15], encoding:.utf8) - elements["53"] = (String( bytes:data[15..<30], encoding:.utf8) ?? "") + - (String( bytes:data[48..<59], encoding:.utf8) ?? "") - elements["5F57"] = String( bytes:data[30..<36], encoding:.utf8) - elements["5F05"] = String( bytes:data[36..<37], encoding:.utf8) - elements["5F35"] = String( bytes:data[37..<38], encoding:.utf8) - elements["59"] = String( bytes:data[38..<44], encoding:.utf8) - elements["5F06"] = String( bytes:data[44..<45], encoding:.utf8) - elements["5F2C"] = String( bytes:data[45..<48], encoding:.utf8) - elements["5F07"] = String( bytes:data[59..<60], encoding:.utf8) - elements["5B"] = String( bytes:data[60...], encoding:.utf8) - } - - func parseTd2(_ data : [UInt8]) { - elements["5F03"] = String( bytes:data[0..<2], encoding:.utf8) - elements["5F28"] = String( bytes:data[2..<5], encoding:.utf8) - elements["5B"] = String( bytes:data[5..<36], encoding:.utf8) - elements["5A"] = String( bytes:data[36..<45], encoding:.utf8) - elements["5F04"] = String( bytes:data[45..<46], encoding:.utf8) - elements["5F2C"] = String( bytes:data[46..<49], encoding:.utf8) - elements["5F57"] = String( bytes:data[49..<55], encoding:.utf8) - elements["5F05"] = String( bytes:data[55..<56], encoding:.utf8) - elements["5F35"] = String( bytes:data[56..<57], encoding:.utf8) - elements["59"] = String( bytes:data[57..<63], encoding:.utf8) - elements["5F06"] = String( bytes:data[63..<64], encoding:.utf8) - elements["53"] = String( bytes:data[64..<71], encoding:.utf8) - elements["5F07"] = String( bytes:data[71..<72], encoding:.utf8) - } - - func parseOther(_ data : [UInt8]) { - elements["5F03"] = String( bytes:data[0..<2], encoding:.utf8) - elements["5F28"] = String( bytes:data[2..<5], encoding:.utf8) - elements["5B"] = String( bytes:data[5..<44], encoding:.utf8) - elements["5A"] = String( bytes:data[44..<53], encoding:.utf8) - elements["5F04"] = String( bytes:[data[53]], encoding:.utf8) - elements["5F2C"] = String( bytes:data[54..<57], encoding:.utf8) - elements["5F57"] = String( bytes:data[57..<63], encoding:.utf8) - elements["5F05"] = String( bytes:[data[63]], encoding:.utf8) - elements["5F35"] = String( bytes:[data[64]], encoding:.utf8) - elements["59"] = String( bytes:data[65..<71], encoding:.utf8) - elements["5F06"] = String( bytes:[data[71]], encoding:.utf8) - elements["53"] = String( bytes:data[72..<86], encoding:.utf8) - elements["5F02"] = String( bytes:[data[86]], encoding:.utf8) - elements["5F07"] = String( bytes:[data[87]], encoding:.utf8) - } - - private func getMRZType(length: Int) -> DocTypeEnum { - if length == 0x5A { - return .TD1 - } - if length == 0x48 { - return .TD2 - } - return .OTHER - } - -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup11.swift b/app/ios/AwesomeProject/DataGroups/DataGroup11.swift deleted file mode 100644 index 970185ac0..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup11.swift +++ /dev/null @@ -1,62 +0,0 @@ - -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class DataGroup11 : DataGroup { - - public private(set) var fullName : String? - public private(set) var personalNumber : String? - public private(set) var dateOfBirth : String? - public private(set) var placeOfBirth : String? - public private(set) var address : String? - public private(set) var telephone : String? - public private(set) var profession : String? - public private(set) var title : String? - public private(set) var personalSummary : String? - public private(set) var proofOfCitizenship : String? - public private(set) var tdNumbers : String? - public private(set) var custodyInfo : String? - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG11 - } - - override func parse(_ data: [UInt8]) throws { - var tag = try getNextTag() - if tag != 0x5C { - throw NFCPassportReaderError.InvalidResponse - } - _ = try getNextValue() - - repeat { - tag = try getNextTag() - let val = try String( bytes:getNextValue(), encoding:.utf8) - if tag == 0x5F0E { - fullName = val - } else if tag == 0x5F10 { - personalNumber = val - } else if tag == 0x5F11 { - placeOfBirth = val - } else if tag == 0x5F2B { - dateOfBirth = val - } else if tag == 0x5F42 { - address = val - } else if tag == 0x5F12 { - telephone = val - } else if tag == 0x5F13 { - profession = val - } else if tag == 0x5F14 { - title = val - } else if tag == 0x5F15 { - personalSummary = val - } else if tag == 0x5F16 { - proofOfCitizenship = val - } else if tag == 0x5F17 { - tdNumbers = val - } else if tag == 0x5F18 { - custodyInfo = val - } - } while pos < data.count - } -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup12.swift b/app/ios/AwesomeProject/DataGroups/DataGroup12.swift deleted file mode 100644 index bc24b037b..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup12.swift +++ /dev/null @@ -1,72 +0,0 @@ - -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class DataGroup12 : DataGroup { - - public private(set) var issuingAuthority : String? - public private(set) var dateOfIssue : String? - public private(set) var otherPersonsDetails : String? - public private(set) var endorsementsOrObservations : String? - public private(set) var taxOrExitRequirements : String? - public private(set) var frontImage : [UInt8]? - public private(set) var rearImage : [UInt8]? - public private(set) var personalizationTime : String? - public private(set) var personalizationDeviceSerialNr : String? - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG12 - } - - override func parse(_ data: [UInt8]) throws { - var tag = try getNextTag() - if tag != 0x5C { - throw NFCPassportReaderError.InvalidResponse - } - - // Skip the taglist - ideally we would check this but... - let _ = try getNextValue() - - repeat { - tag = try getNextTag() - let val = try getNextValue() - - if tag == 0x5F19 { - issuingAuthority = String( bytes:val, encoding:.utf8) - } else if tag == 0x5F26 { - dateOfIssue = parseDateOfIssue(value: val) - } else if tag == 0xA0 { - // Not yet handled - } else if tag == 0x5F1B { - endorsementsOrObservations = String( bytes:val, encoding:.utf8) - } else if tag == 0x5F1C { - taxOrExitRequirements = String( bytes:val, encoding:.utf8) - } else if tag == 0x5F1D { - frontImage = val - } else if tag == 0x5F1E { - rearImage = val - } else if tag == 0x5F55 { - personalizationTime = String( bytes:val, encoding:.utf8) - } else if tag == 0x5F56 { - personalizationDeviceSerialNr = String( bytes:val, encoding:.utf8) - } - } while pos < data.count - } - - private func parseDateOfIssue(value: [UInt8]) -> String? { - if value.count == 4 { - return decodeBCD(value: value) - } else { - return decodeASCII(value: value) - } - } - - private func decodeASCII(value: [UInt8]) -> String? { - return String(bytes:value, encoding:.utf8) - } - - private func decodeBCD(value: [UInt8]) -> String? { - value.map({ String(format: "%02X", $0) }).joined() - } -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup14.swift b/app/ios/AwesomeProject/DataGroups/DataGroup14.swift deleted file mode 100644 index 8bb0124bb..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup14.swift +++ /dev/null @@ -1,31 +0,0 @@ - -import Foundation - -// SecurityInfos ::= SET of SecurityInfo -// SecurityInfo ::= SEQUENCE { -// protocol OBJECT IDENTIFIER, -// requiredData ANY DEFINED BY protocol, -// optionalData ANY DEFINED BY protocol OPTIONAL -@available(iOS 13, macOS 10.15, *) -public class DataGroup14 : DataGroup { - private var asn1 : ASN1Item! - public private(set) var securityInfos : [SecurityInfo] = [SecurityInfo]() - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG14 - } - - override func parse(_ data: [UInt8]) throws { - let p = SimpleASN1DumpParser() - asn1 = try p.parse(data: Data(body)) - - // Bit of a hack at the moment - passing in the body - if we had a decent ASN1 parser then this would be better! ;) - for i in 0 ..< asn1.getNumberOfChildren() { - if let child = asn1.getChild(i), - let secInfo = SecurityInfo.getInstance( object:child, body : body ) { - securityInfos.append(secInfo) - } - } - } -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup15.swift b/app/ios/AwesomeProject/DataGroups/DataGroup15.swift deleted file mode 100644 index ce6ffdbd5..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup15.swift +++ /dev/null @@ -1,40 +0,0 @@ - -import Foundation -import OpenSSL - -@available(iOS 13, macOS 10.15, *) -public class DataGroup15 : DataGroup { - - public private(set) var rsaPublicKey : OpaquePointer? - public private(set) var ecdsaPublicKey : OpaquePointer? - - deinit { - if ( ecdsaPublicKey != nil ) { - EVP_PKEY_free(ecdsaPublicKey); - } - if ( rsaPublicKey != nil ) { - EVP_PKEY_free(rsaPublicKey); - } - } - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG15 - } - - - override func parse(_ data: [UInt8]) throws { - - // the public key can either be in EC (elliptic curve) or RSA format - // Try ec first and if this fails try RSA - // Note - this will be improved in a later version to read the ASN1 body to - // check the actual type - if let key = try? OpenSSLUtils.readECPublicKey( data:body ) { - // NOTE We are responsible for freeing the key! - ecdsaPublicKey = key - } else if let key = try? OpenSSLUtils.readRSAPublicKey( data:body ) { - - rsaPublicKey = key - } - } -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroup2.swift b/app/ios/AwesomeProject/DataGroups/DataGroup2.swift deleted file mode 100644 index eb3586d7b..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroup2.swift +++ /dev/null @@ -1,164 +0,0 @@ - -import Foundation - -#if !os(macOS) -import UIKit -#endif - -@available(iOS 13, macOS 10.15, *) -public class DataGroup2 : DataGroup { - public private(set) var nrImages : Int = 0 - public private(set) var versionNumber : Int = 0 - public private(set) var lengthOfRecord : Int = 0 - public private(set) var numberOfFacialImages : Int = 0 - public private(set) var facialRecordDataLength : Int = 0 - public private(set) var nrFeaturePoints : Int = 0 - public private(set) var gender : Int = 0 - public private(set) var eyeColor : Int = 0 - public private(set) var hairColor : Int = 0 - public private(set) var featureMask : Int = 0 - public private(set) var expression : Int = 0 - public private(set) var poseAngle : Int = 0 - public private(set) var poseAngleUncertainty : Int = 0 - public private(set) var faceImageType : Int = 0 - public private(set) var imageDataType : Int = 0 - public private(set) var imageWidth : Int = 0 - public private(set) var imageHeight : Int = 0 - public private(set) var imageColorSpace : Int = 0 - public private(set) var sourceType : Int = 0 - public private(set) var deviceType : Int = 0 - public private(set) var quality : Int = 0 - public private(set) var imageData : [UInt8] = [] - - -#if !os(macOS) -func getImage() -> UIImage? { - if imageData.count == 0 { - return nil - } - - let image = UIImage(data:Data(imageData) ) - return image - } -#endif - - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .DG2 - } - - override func parse(_ data: [UInt8]) throws { - var tag = try getNextTag() - if tag != 0x7F61 { - throw NFCPassportReaderError.InvalidResponse - } - _ = try getNextLength() - - // Tag should be 0x02 - tag = try getNextTag() - if tag != 0x02 { - throw NFCPassportReaderError.InvalidResponse - } - nrImages = try Int(getNextValue()[0]) - - // Next tag is 0x7F60 - tag = try getNextTag() - if tag != 0x7F60 { - throw NFCPassportReaderError.InvalidResponse - } - _ = try getNextLength() - - // Next tag is 0xA1 (Biometric Header Template) - don't care about this - tag = try getNextTag() - if tag != 0xA1 { - throw NFCPassportReaderError.InvalidResponse - } - _ = try getNextValue() - - // Now we get to the good stuff - next tag is either 5F2E or 7F2E - tag = try getNextTag() - if tag != 0x5F2E && tag != 0x7F2E { - throw NFCPassportReaderError.InvalidResponse - } - let value = try getNextValue() - - try parseISO19794_5( data:value ) - } - - func parseISO19794_5( data : [UInt8] ) throws { - // Validate header - 'F', 'A' 'C' 0x00 - 0x46414300 - if data[0] != 0x46 && data[1] != 0x41 && data[2] != 0x43 && data[3] != 0x00 { - throw NFCPassportReaderError.InvalidResponse - } - - var offset = 4 - versionNumber = binToInt(data[offset.. UIImage? { - if imageData.count == 0 { - return nil - } - - let image = UIImage(data:Data(imageData) ) - return image - } -#endif - - - override func parse(_ data: [UInt8]) throws { - var tag = try getNextTag() - if tag != 0x02 { - throw NFCPassportReaderError.InvalidResponse - } - _ = try getNextValue() - - tag = try getNextTag() - if tag != 0x5F43 { - throw NFCPassportReaderError.InvalidResponse - } - - imageData = try getNextValue() - } -} diff --git a/app/ios/AwesomeProject/DataGroups/DataGroupId.swift b/app/ios/AwesomeProject/DataGroups/DataGroupId.swift deleted file mode 100644 index b2fcab535..000000000 --- a/app/ios/AwesomeProject/DataGroups/DataGroupId.swift +++ /dev/null @@ -1,98 +0,0 @@ - -import Foundation - -@available(iOS 13, macOS 10.15, *) -public enum DataGroupId : Int, CaseIterable { - case COM = 0x60 - case DG1 = 0x61 - case DG2 = 0x75 - case DG3 = 0x63 - case DG4 = 0x76 - case DG5 = 0x65 - case DG6 = 0x66 - case DG7 = 0x67 - case DG8 = 0x68 - case DG9 = 0x69 - case DG10 = 0x6A - case DG11 = 0x6B - case DG12 = 0x6C - case DG13 = 0x6D - case DG14 = 0x6E - case DG15 = 0x6F - case DG16 = 0x70 - case SOD = 0x77 - case Unknown = 0x00 - - public func getName() -> String { - switch( self ) { - case .COM: return "COM" - case .DG1: return "DG1" - case .DG2: return "DG2" - case .DG3: return "DG3" - case .DG4: return "DG4" - case .DG5: return "DG5" - case .DG6: return "DG6" - case .DG7: return "DG7" - case .DG8: return "DG8" - case .DG9: return "DG9" - case .DG10: return "DG10" - case .DG11: return "DG11" - case .DG12: return "DG12" - case .DG13: return "DG13" - case .DG14: return "DG14" - case .DG15: return "DG15" - case .DG16: return "DG16" - case .SOD: return "SOD" - case .Unknown: return "Unknown" - } - } - - static public func getIDFromName( name: String ) -> DataGroupId { - switch( name ) { - case "COM": return .COM - case "DG1": return .DG1 - case "DG2": return .DG2 - case "DG3": return .DG3 - case "DG4": return .DG4 - case "DG5": return .DG5 - case "DG6": return .DG6 - case "DG7": return .DG7 - case "DG8": return .DG8 - case "DG9": return .DG9 - case "DG10": return .DG10 - case "DG11": return .DG11 - case "DG12": return .DG12 - case "DG13": return .DG13 - case "DG14": return .DG14 - case "DG15": return .DG15 - case "DG16": return .DG16 - case "SOD": return .SOD - default: return .Unknown - } - } - - func getFileIDTag() -> [UInt8]? { - switch( self ) { - case .COM: return [0x01,0x1E] - case .DG1: return [0x01,0x01] - case .DG2: return [0x01,0x02] - case .DG3: return [0x01,0x03] - case .DG4: return [0x01,0x04] - case .DG5: return [0x01,0x05] - case .DG6: return [0x01,0x06] - case .DG7: return [0x01,0x07] - case .DG8: return [0x01,0x08] - case .DG9: return [0x01,0x09] - case .DG10: return [0x01,0x0A] - case .DG11: return [0x01,0x0B] - case .DG12: return [0x01,0x0C] - case .DG13: return [0x01,0x0D] - case .DG14: return [0x01,0x0E] - case .DG15: return [0x01,0x0F] - case .DG16: return [0x01,0x10] - case .SOD: return [0x01,0x1D] - case .Unknown: return nil - } - } -} - diff --git a/app/ios/AwesomeProject/DataGroups/NotImplementedDG.swift b/app/ios/AwesomeProject/DataGroups/NotImplementedDG.swift deleted file mode 100644 index 58e2c7552..000000000 --- a/app/ios/AwesomeProject/DataGroups/NotImplementedDG.swift +++ /dev/null @@ -1,11 +0,0 @@ - -import Foundation - -@available(iOS 13, macOS 10.15, *) -public class NotImplementedDG : DataGroup { - required init( _ data : [UInt8] ) throws { - try super.init(data) - datagroupType = .Unknown - } -} - diff --git a/app/ios/AwesomeProject/DataGroups/PACEInfo.swift b/app/ios/AwesomeProject/DataGroups/PACEInfo.swift deleted file mode 100644 index fe214c181..000000000 --- a/app/ios/AwesomeProject/DataGroups/PACEInfo.swift +++ /dev/null @@ -1,397 +0,0 @@ - -import Foundation -import OpenSSL - -public enum PACEMappingType { - case GM // Generic Mapping - case IM // Integrated Mapping - case CAM // Chip Authentication Mapping -} - -@available(iOS 13, macOS 10.15, *) -public class PACEInfo : SecurityInfo { - - // Standardized domain parameters. Based on Table 6. - public static let PARAM_ID_GFP_1024_160 = 0 - public static let PARAM_ID_GFP_2048_224 = 1 - public static let PARAM_ID_GFP_2048_256 = 2 - public static let PARAM_ID_ECP_NIST_P192_R1 = 8 - public static let PARAM_ID_ECP_BRAINPOOL_P192_R1 = 9 - public static let PARAM_ID_ECP_NIST_P224_R1 = 10 - public static let PARAM_ID_ECP_BRAINPOOL_P224_R1 = 11 - public static let PARAM_ID_ECP_NIST_P256_R1 = 12 - public static let PARAM_ID_ECP_BRAINPOOL_P256_R1 = 13 - public static let PARAM_ID_ECP_BRAINPOOL_P320_R1 = 14 - public static let PARAM_ID_ECP_NIST_P384_R1 = 15 - public static let PARAM_ID_ECP_BRAINPOOL_P384_R1 = 16 - public static let PARAM_ID_ECP_BRAINPOOL_P512_R1 = 17 - public static let PARAM_ID_ECP_NIST_P521_R1 = 18 - - static let allowedIdentifiers = [ - ID_PACE_DH_GM_3DES_CBC_CBC, - ID_PACE_DH_GM_AES_CBC_CMAC_128, - ID_PACE_DH_GM_AES_CBC_CMAC_192, - ID_PACE_DH_GM_AES_CBC_CMAC_256, - ID_PACE_DH_IM_3DES_CBC_CBC, - ID_PACE_DH_IM_AES_CBC_CMAC_128, - ID_PACE_DH_IM_AES_CBC_CMAC_192, - ID_PACE_DH_IM_AES_CBC_CMAC_256, - ID_PACE_ECDH_GM_3DES_CBC_CBC, - ID_PACE_ECDH_GM_AES_CBC_CMAC_128, - ID_PACE_ECDH_GM_AES_CBC_CMAC_192, - ID_PACE_ECDH_GM_AES_CBC_CMAC_256, - ID_PACE_ECDH_IM_3DES_CBC_CBC, - ID_PACE_ECDH_IM_AES_CBC_CMAC_128, - ID_PACE_ECDH_IM_AES_CBC_CMAC_192, - ID_PACE_ECDH_IM_AES_CBC_CMAC_256, - ID_PACE_ECDH_CAM_AES_CBC_CMAC_128, - ID_PACE_ECDH_CAM_AES_CBC_CMAC_192, - ID_PACE_ECDH_CAM_AES_CBC_CMAC_256] - - var oid : String - var version : Int - var parameterId : Int? - - static func checkRequiredIdentifier(_ oid : String) -> Bool { - return allowedIdentifiers.contains( oid ) - } - - init(oid: String, version: Int, parameterId: Int?) { - self.oid = oid - self.version = version - self.parameterId = parameterId - } - - public override func getObjectIdentifier() -> String { - return oid - } - - public override func getProtocolOIDString() -> String { - return PACEInfo.toProtocolOIDString(oid:oid) - } - - public func getVersion() -> Int { - return version - } - - public func getParameterId() -> Int? { - return parameterId - } - - public func getParameterSpec() throws -> Int32 { - return try PACEInfo.getParameterSpec(stdDomainParam: self.parameterId ?? -1 ) - } - - public func getMappingType() throws -> PACEMappingType { - return try PACEInfo.toMappingType(oid: oid); // Either GM, CAM, or IM. - } - - public func getKeyAgreementAlgorithm() throws -> String { - return try PACEInfo.toKeyAgreementAlgorithm(oid: oid); // Either DH or ECDH. - } - - public func getCipherAlgorithm() throws -> String { - return try PACEInfo.toCipherAlgorithm(oid: oid); // Either DESede or AES. - } - - public func getDigestAlgorithm() throws -> String { - return try PACEInfo.toDigestAlgorithm(oid: oid); // Either SHA-1 or SHA-256. - } - - public func getKeyLength() throws -> Int { - return try PACEInfo.toKeyLength(oid: oid); // Of the enc cipher. Either 128, 192, or 256. - } - - /// Caller is required to free the returned EVP_PKEY value - public func createMappingKey( ) throws -> OpaquePointer { - // This will get freed later - let mappingKey : OpaquePointer = EVP_PKEY_new() - - switch try getKeyAgreementAlgorithm() { - case "DH": - Log.debug( "Generating DH mapping keys") - //The EVP_PKEY_CTX_set_dh_rfc5114() and EVP_PKEY_CTX_set_dhx_rfc5114() macros are synonymous. They set the DH parameters to the values defined in RFC5114. The rfc5114 parameter must be 1, 2 or 3 corresponding to RFC5114 sections 2.1, 2.2 and 2.3. or 0 to clear the stored value. This macro can be called during parameter generation. The ctx must have a key type of EVP_PKEY_DHX. The rfc5114 parameter and the nid parameter are mutually exclusive. - var dhKey : OpaquePointer? = nil - switch try getParameterSpec() { - case 0: - Log.verbose( "Using DH_get_1024_160" ) - dhKey = DH_get_1024_160() - case 1: - Log.verbose( "Using DH_get_2048_224" ) - dhKey = DH_get_2048_224() - case 2: - Log.verbose( "Using DH_get_2048_256" ) - dhKey = DH_get_2048_256() - default: - // Error - break - } - guard dhKey != nil else { - throw NFCPassportReaderError.InvalidDataPassed("Unable to create DH mapping key") - } - defer{ DH_free( dhKey ) } - - DH_generate_key(dhKey) - EVP_PKEY_set1_DH(mappingKey, dhKey) - - case "ECDH": - let parameterSpec = try getParameterSpec() - Log.debug( "Generating ECDH mapping keys from parameterSpec - \(parameterSpec)") - guard let ecKey = EC_KEY_new_by_curve_name(parameterSpec) else { - throw NFCPassportReaderError.InvalidDataPassed("Unable to create EC mapping key") - } - defer{ EC_KEY_free( ecKey ) } - - EC_KEY_generate_key(ecKey) - EVP_PKEY_set1_EC_KEY(mappingKey, ecKey) - default: - throw NFCPassportReaderError.InvalidDataPassed("Unsupported agreement algorithm") - } - - return mappingKey - } - - public static func getParameterSpec(stdDomainParam : Int) throws -> Int32 { - switch (stdDomainParam) { - case PARAM_ID_GFP_1024_160: - return 0 // "rfc5114_1024_160"; - case PARAM_ID_GFP_2048_224: - return 1 // "rfc5114_2048_224"; - case PARAM_ID_GFP_2048_256: - return 2 // "rfc5114_2048_256"; - case PARAM_ID_ECP_NIST_P192_R1: - return NID_X9_62_prime192v1 // "secp192r1"; - case PARAM_ID_ECP_NIST_P224_R1: - return NID_secp224r1 // "secp224r1"; - case PARAM_ID_ECP_NIST_P256_R1: - return NID_X9_62_prime256v1 //"secp256r1"; - case PARAM_ID_ECP_NIST_P384_R1: - return NID_secp384r1 // "secp384r1"; - case PARAM_ID_ECP_BRAINPOOL_P192_R1: - return NID_brainpoolP192r1 //"brainpoolp192r1"; - case PARAM_ID_ECP_BRAINPOOL_P224_R1: - return NID_brainpoolP224r1 // "brainpoolp224r1"; - case PARAM_ID_ECP_BRAINPOOL_P256_R1: - return NID_brainpoolP256r1 // "brainpoolp256r1"; - case PARAM_ID_ECP_BRAINPOOL_P320_R1: - return NID_brainpoolP320r1 //"brainpoolp320r1"; - case PARAM_ID_ECP_BRAINPOOL_P384_R1: - return NID_brainpoolP384r1 //"brainpoolp384r1"; - case PARAM_ID_ECP_BRAINPOOL_P512_R1: - return NID_brainpoolP512r1 //""; - case PARAM_ID_ECP_NIST_P521_R1: - return NID_secp521r1 //"secp224r1"; - default: - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup p arameterSpec - invalid oid" ) - } - } - - public static func toMappingType( oid : String ) throws -> PACEMappingType { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid { - return PACEMappingType.GM - } else if ID_PACE_DH_IM_3DES_CBC_CBC == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid { - return PACEMappingType.IM - } else if ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return PACEMappingType.CAM - } - - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup mapping type - invalid oid" ) - } - - - /// Returns the key agreement algorithm - DH or ECDH for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: key agreement algorithm - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toKeyAgreementAlgorithm( oid : String ) throws -> String { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_DH_IM_3DES_CBC_CBC == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid { - return "DH" - } else if ID_PACE_ECDH_GM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return "ECDH" - } - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup key agreement algorithm - invalid oid" ) - } - - /// Returns the cipher algorithm - DESede or AES for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: the cipher algorithm type - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toCipherAlgorithm( oid : String ) throws -> String { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid - || ID_PACE_DH_IM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid { - return "DESede" - } else if ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return "AES" - } - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup cipher algorithm - invalid oid" ) - } - - public static func toDigestAlgorithm( oid : String ) throws -> String { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid - || ID_PACE_DH_IM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid { - return "SHA-1" - } else if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return "SHA-256" - } - - throw NFCPassportReaderError.InvalidDataPassed( "Unable to lookup digest algorithm - invalid oid" ) - - } - /// Returns the key length in bits (128, 192, or 256) for the given Chip Authentication oid - /// - Parameter oid: the object identifier - /// - Returns: the key length in bits - /// - Throws: InvalidDataPassed error if invalid oid specified - public static func toKeyLength( oid : String ) throws -> Int { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid - || ID_PACE_DH_IM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_GM_3DES_CBC_CBC == oid - || ID_PACE_ECDH_IM_3DES_CBC_CBC == oid - || ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid { - return 128 - } else if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid { - return 192 - } else if ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid - || ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return 256 - } - throw NFCPassportReaderError.InvalidDataPassed( "Unable to get key length - invalid oid" ) - } - - private static func toProtocolOIDString(oid : String) -> String { - if ID_PACE_DH_GM_3DES_CBC_CBC == oid { - return "id-PACE-DH-GM-3DES-CBC-CBC" - } - if ID_PACE_DH_GM_AES_CBC_CMAC_128 == oid { - return "id-PACE-DH-GM-AES-CBC-CMAC-128" - } - if ID_PACE_DH_GM_AES_CBC_CMAC_192 == oid { - return "id-PACE-DH-GM-AES-CBC-CMAC-192" - } - if ID_PACE_DH_GM_AES_CBC_CMAC_256 == oid { - return "id-PACE-DH-GM-AES-CBC-CMAC-256" - } - if ID_PACE_DH_IM_3DES_CBC_CBC == oid { - return "id-PACE-DH-IM-3DES-CBC-CBC" - } - if ID_PACE_DH_IM_AES_CBC_CMAC_128 == oid { - return "id-PACE-DH-IM-AES-CBC-CMAC-128" - } - if ID_PACE_DH_IM_AES_CBC_CMAC_192 == oid { - return "id-PACE-DH-IM-AES-CBC-CMAC-192" - } - if ID_PACE_DH_IM_AES_CBC_CMAC_256 == oid { - return "id-PACE_DH-IM-AES-CBC-CMAC-256" - } - if ID_PACE_ECDH_GM_3DES_CBC_CBC == oid { - return "id-PACE-ECDH-GM-3DES-CBC-CBC" - } - if ID_PACE_ECDH_GM_AES_CBC_CMAC_128 == oid { - return "id-PACE-ECDH-GM-AES-CBC-CMAC-128" - } - if ID_PACE_ECDH_GM_AES_CBC_CMAC_192 == oid { - return "id-PACE-ECDH-GM-AES-CBC-CMAC-192" - } - if ID_PACE_ECDH_GM_AES_CBC_CMAC_256 == oid { - return "id-PACE-ECDH-GM-AES-CBC-CMAC-256" - } - if ID_PACE_ECDH_IM_3DES_CBC_CBC == oid { - return "id-PACE-ECDH-IM_3DES-CBC-CBC" - } - if ID_PACE_ECDH_IM_AES_CBC_CMAC_128 == oid { - return "id-PACE-ECDH-IM-AES-CBC-CMAC-128" - } - if ID_PACE_ECDH_IM_AES_CBC_CMAC_192 == oid { - return "id-PACE-ECDH-IM-AES-CBC-CMAC-192" - } - if ID_PACE_ECDH_IM_AES_CBC_CMAC_256 == oid { - return "id-PACE-ECDH-IM-AES-CBC-CMAC-256" - } - if ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 == oid { - return "id-PACE-ECDH-CAM-AES-CBC-CMAC-128" - } - if ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 == oid { - return "id-PACE-ECDH-CAM-AES-CBC-CMAC-192" - } - if ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 == oid { - return "id-PACE-ECDH-CAM-AES-CBC-CMAC-256" - } - - return oid - } -} diff --git a/app/ios/AwesomeProject/DataGroups/SOD.swift b/app/ios/AwesomeProject/DataGroups/SOD.swift deleted file mode 100644 index b4f779aac..000000000 --- a/app/ios/AwesomeProject/DataGroups/SOD.swift +++ /dev/null @@ -1,234 +0,0 @@ - -import Foundation -import OpenSSL - - -// Format of SOD: ASN1 - Signed Data (taken from rfc5652 - https://tools.ietf.org/html/rfc5652): -// The SOD is a CMS container of type Signed-data -// -// Note - ideally I'd be using a proper ASN1 parser, however currently there isn't a reliable one for Swift -// and I haven't written on (yet?). So for the moment, I'm relying on the output from ASN1Dump and a -// simple parser for that -// -// Sequence -// Object ID: signedData -// Content: SignedData -// SignedData ::= SEQUENCE { -// INTEGER version CMSVersion, -// SET digestAlgorithms DigestAlgorithmIdentifiers, -// SEQUENCE encapContentInfo EncapsulatedContentInfo, -// certificates [0] IMPLICIT CertificateSet OPTIONAL, -// crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, -// SET signerInfos SignerInfos } -// -// AlgorithmIdentifier ::= SEQUENCE { -// algorithm OBJECT IDENTIFIER, -// parameters ANY OPTIONAL -// } -// -// EncapsulatedContentInfo ::= SEQUENCE { -// eContentType ContentType, -// eContent [0] EXPLICIT OCTET STRING OPTIONAL } -// -// ContentType ::= OBJECT IDENTIFIER -// -// SignerInfos ::= SET OF SignerInfo -// -// SignerInfo ::= SEQUENCE { -// version CMSVersion, -// sid SignerIdentifier, -// digestAlgorithm DigestAlgorithmIdentifier, -// signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, -// signatureAlgorithm SignatureAlgorithmIdentifier, -// signature SignatureValue, -// unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL } -// -// SignerIdentifier ::= CHOICE { -// issuerAndSerialNumber IssuerAndSerialNumber, -// subjectKeyIdentifier [0] SubjectKeyIdentifier } -// -// SignedAttributes ::= SET SIZE (1..MAX) OF Attribute -// UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute -// Attribute ::= SEQUENCE { -// attrType OBJECT IDENTIFIER, -// attrValues SET OF AttributeValue } -// AttributeValue ::= ANY -// SignatureValue ::= OCTET STRING -@available(iOS 13, macOS 10.15, *) -class SOD : DataGroup { - - public private(set) var pkcs7CertificateData : [UInt8] = [] - private var asn1 : ASN1Item! - private var pubKey : OpaquePointer? - - required init( _ data : [UInt8] ) throws { - try super.init(data) - self.pkcs7CertificateData = body - datagroupType = .SOD - } - - deinit { - if ( pubKey != nil ) { - EVP_PKEY_free(pubKey); - } - } - - override func parse(_ data: [UInt8]) throws { - let p = SimpleASN1DumpParser() - asn1 = try p.parse(data: Data(body)) - } - - /// Returns the public key from the embedded X509 certificate - /// - Returns pointer to the public key - func getPublicKey( ) throws -> OpaquePointer { - - if let key = pubKey { - return key - } - - let certs = try OpenSSLUtils.getX509CertificatesFromPKCS7(pkcs7Der:Data(pkcs7CertificateData)) - if let key = X509_get_pubkey (certs[0].cert) { - pubKey = key - return key - } - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Unable to get public key") - } - - - /// Extracts the encapsulated content section from a SignedData PKCS7 container (if present) - /// - Returns: The encapsulated content from a PKCS7 container if we could read it - /// - Throws: Error if we can't find or read the encapsulated content - func getEncapsulatedContent() throws -> Data { - guard let signedData = asn1.getChild(1)?.getChild(0), - let encContent = signedData.getChild(2)?.getChild(1), - let content = encContent.getChild(0) else { - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - var sigData : Data? - if content.type.hasPrefix("OCTET STRING" ) { - sigData = Data(hexRepToBin( content.value )) - } - - guard let ret = sigData else { throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("noDataReturned") } - return ret - } - - /// Gets the digest algorithm used to hash the encapsulated content in the signed data section (if present) - /// - Returns: The digest algorithm used to hash the encapsulated content in the signed data section - /// - Throws: Error if we can't find or read the digest algorithm - func getEncapsulatedContentDigestAlgorithm() throws -> String { - guard let signedData = asn1.getChild(1)?.getChild(0), - let digestAlgo = signedData.getChild(1)?.getChild(0)?.getChild(0) else { - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - return String(digestAlgo.value) - } - - /// Gets the signed attributes section (if present) - /// - Returns: the signed attributes section - /// - Throws: Error if we can't find or read the signed attributes - func getSignedAttributes( ) throws -> Data { - - // Get the SignedAttributes section. - guard let signedData = asn1.getChild(1)?.getChild(0), - let signerInfo = signedData.getChild(4), - let signedAttrs = signerInfo.getChild(0)?.getChild(3) else { - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - var bytes = [UInt8](self.pkcs7CertificateData[signedAttrs.pos ..< signedAttrs.pos + signedAttrs.headerLen + signedAttrs.length]) - - // The first byte will be 0xA0 -> as its a explicit tag for a contextual item which we need to convert - // for the hash to calculate correctly - // We know that the actual tag is a SET (0x31) - See section 5.4 of https://tools.ietf.org/html/rfc5652 - // So we need to change this from 0xA0 to 0x31 - if bytes[0] == 0xA0 { - bytes[0] = 0x31 - } - let signedAttribs = Data(bytes) - - return signedAttribs - } - -/// Gets the message digest from the signed attributes section (if present) -/// - Returns: the message digest -/// - Throws: Error if we can't find or read the message digest - func getMessageDigestFromSignedAttributes( ) throws -> Data { - - // For the SOD, the SignedAttributes consists of: - // A Content type Object (which has the value of the attributes content type) - // A messageDigest Object which has the message digest as it value - // We want the messageDigest value - - guard let signedData = asn1.getChild(1)?.getChild(0), - let signerInfo = signedData.getChild(4), - let signedAttrs = signerInfo.getChild(0)?.getChild(3) else { - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - // Find the messageDigest in the signedAttributes section - var sigData : Data? - for i in 0 ..< signedAttrs.getNumberOfChildren() { - let attrObj = signedAttrs.getChild(i) - if attrObj?.getChild(0)?.value == "messageDigest" { - if let set = attrObj?.getChild(1), - let digestVal = set.getChild(0) { - - if digestVal.type.hasPrefix("OCTET STRING" ) { - sigData = Data(hexRepToBin( digestVal.value ) ) - } - } - } - } - - guard let messageDigest = sigData else { throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("No messageDigest Returned") } - - return messageDigest - } - - /// Gets the signature data (if present) - /// - Returns: the signature - /// - Throws: Error if we can't find or read the signature - func getSignature( ) throws -> Data { - - guard let signedData = asn1.getChild(1)?.getChild(0), - let signerInfo = signedData.getChild(4), - let signature = signerInfo.getChild(0)?.getChild(5) else { - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - var sigData : Data? - if signature.type.hasPrefix("OCTET STRING" ) { - sigData = Data(hexRepToBin( signature.value )) - } - - guard let ret = sigData else { throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("noDataReturned") } - return ret - } - - /// Gets the signature algorithm used (if present) - /// - Returns: the signature algorithm used - /// - Throws: Error if we can't find or read the signature algorithm - func getSignatureAlgorithm( ) throws -> String { - - guard let signedData = asn1.getChild(1)?.getChild(0), - let signerInfo = signedData.getChild(4), - let signatureAlgo = signerInfo.getChild(0)?.getChild(4)?.getChild(0) else { - - throw OpenSSLError.UnableToExtractSignedDataFromPKCS7("Data in invalid format") - } - - // Vals I've seen are: - // sha1WithRSAEncryption => default pkcs1 - // sha256WithRSAEncryption => default pkcs1 - // rsassaPss => pss - return signatureAlgo.value - } -} diff --git a/app/ios/AwesomeProject/DataGroups/SecurityInfo.swift b/app/ios/AwesomeProject/DataGroups/SecurityInfo.swift deleted file mode 100644 index 5b1c651dd..000000000 --- a/app/ios/AwesomeProject/DataGroups/SecurityInfo.swift +++ /dev/null @@ -1,130 +0,0 @@ - -import Foundation -import OpenSSL - -@available(iOS 13, macOS 10.15,*) -public class SecurityInfo { - // Active Authentication OID - static let ID_AA_OID = "2.23.136.1.1.5" - - // Active Authentication Signature Algorithm OIDS - // Specified in BSI TR 03111 Section 5.2.1. - static let ECDSA_PLAIN_SIGNATURES = "0.4.0.127.0.7.1.1.4.1"; - static let ECDSA_PLAIN_SHA1_OID = ECDSA_PLAIN_SIGNATURES + ".1"; // 0.4.0.127.0.7.1.1.4.1.1, ecdsa-plain-SHA1 - static let ECDSA_PLAIN_SHA224_OID = ECDSA_PLAIN_SIGNATURES + ".2"; // 0.4.0.127.0.7.1.1.4.1.2, ecdsa-plain-SHA224 - static let ECDSA_PLAIN_SHA256_OID = ECDSA_PLAIN_SIGNATURES + ".3"; // 0.4.0.127.0.7.1.1.4.1.3, ecdsa-plain-SHA256 - static let ECDSA_PLAIN_SHA384_OID = ECDSA_PLAIN_SIGNATURES + ".4"; // 0.4.0.127.0.7.1.1.4.1.4, ecdsa-plain-SHA384 - static let ECDSA_PLAIN_SHA512_OID = ECDSA_PLAIN_SIGNATURES + ".5"; // 0.4.0.127.0.7.1.1.4.1.5, ecdsa-plain-SHA512 - static let ECDSA_PLAIN_RIPEMD160_OID = ECDSA_PLAIN_SIGNATURES + ".6"; // 0.4.0.127.0.7.1.1.4.1.6, ecdsa-plain-RIPEMD160 - - // Chip Authentication Public Key OIDS - static let ID_PK_DH_OID = "0.4.0.127.0.7.2.2.1.1" - static let ID_PK_ECDH_OID = "0.4.0.127.0.7.2.2.1.2" - - // Chip Authentication OIDS - static let ID_CA_DH_3DES_CBC_CBC_OID = "0.4.0.127.0.7.2.2.3.1.1" - static let ID_CA_ECDH_3DES_CBC_CBC_OID = "0.4.0.127.0.7.2.2.3.2.1" - static let ID_CA_DH_AES_CBC_CMAC_128_OID = "0.4.0.127.0.7.2.2.3.1.2" - static let ID_CA_DH_AES_CBC_CMAC_192_OID = "0.4.0.127.0.7.2.2.3.1.3" - static let ID_CA_DH_AES_CBC_CMAC_256_OID = "0.4.0.127.0.7.2.2.3.1.4" - static let ID_CA_ECDH_AES_CBC_CMAC_128_OID = "0.4.0.127.0.7.2.2.3.2.2" - static let ID_CA_ECDH_AES_CBC_CMAC_192_OID = "0.4.0.127.0.7.2.2.3.2.3" - static let ID_CA_ECDH_AES_CBC_CMAC_256_OID = "0.4.0.127.0.7.2.2.3.2.4" - - - // PACE OIDS - static let ID_BSI = "0.4.0.127.0.7" - static let ID_PACE = ID_BSI + ".2.2.4" - static let ID_PACE_DH_GM = ID_PACE + ".1" - static let ID_PACE_DH_GM_3DES_CBC_CBC = ID_PACE_DH_GM + ".1"; // 0.4.0.127.0.7.2.2.4.1.1, id-PACE-DH-GM-3DES-CBC-CBC - static let ID_PACE_DH_GM_AES_CBC_CMAC_128 = ID_PACE_DH_GM + ".2"; // 0.4.0.127.0.7.2.2.4.1.2, id-PACE-DH-GM-AES-CBC-CMAC-128 - static let ID_PACE_DH_GM_AES_CBC_CMAC_192 = ID_PACE_DH_GM + ".3"; // 0.4.0.127.0.7.2.2.4.1.3, id-PACE-DH-GM-AES-CBC-CMAC-192 - static let ID_PACE_DH_GM_AES_CBC_CMAC_256 = ID_PACE_DH_GM + ".4"; // 0.4.0.127.0.7.2.2.4.1.4, id-PACE-DH-GM-AES-CBC-CMAC-256 - - static let ID_PACE_ECDH_GM = ID_PACE + ".2" - static let ID_PACE_ECDH_GM_3DES_CBC_CBC = ID_PACE_ECDH_GM + ".1"; // 0.4.0.127.0.7.2.2.4.2.1, id-PACE-ECDH-GM-3DES-CBC-CBC - static let ID_PACE_ECDH_GM_AES_CBC_CMAC_128 = ID_PACE_ECDH_GM + ".2"; // 0.4.0.127.0.7.2.2.4.2.2, id-PACE-ECDH-GM-AES-CBC-CMAC-128 - static let ID_PACE_ECDH_GM_AES_CBC_CMAC_192 = ID_PACE_ECDH_GM + ".3"; // 0.4.0.127.0.7.2.2.4.2.3, id-PACE-ECDH-GM-AES-CBC-CMAC-192 - static let ID_PACE_ECDH_GM_AES_CBC_CMAC_256 = ID_PACE_ECDH_GM + ".4"; // 0.4.0.127.0.7.2.2.4.2.4, id-PACE-ECDH-GM-AES-CBC-CMAC-256 - - static let ID_PACE_DH_IM = ID_PACE + ".3" - static let ID_PACE_DH_IM_3DES_CBC_CBC = ID_PACE_DH_IM + ".1"; // 0.4.0.127.0.7.2.2.4.3.1, id-PACE-DH-IM-3DES-CBC-CBC - static let ID_PACE_DH_IM_AES_CBC_CMAC_128 = ID_PACE_DH_IM + ".2"; // 0.4.0.127.0.7.2.2.4.3.2, id-PACE-DH-IM-AES-CBC-CMAC-128 - static let ID_PACE_DH_IM_AES_CBC_CMAC_192 = ID_PACE_DH_IM + ".3"; // 0.4.0.127.0.7.2.2.4.3.3, id-PACE-DH-IM-AES-CBC-CMAC-192 - static let ID_PACE_DH_IM_AES_CBC_CMAC_256 = ID_PACE_DH_IM + ".4"; // 0.4.0.127.0.7.2.2.4.3.4, id-PACE-DH-IM-AES-CBC-CMAC-256 - - static let ID_PACE_ECDH_IM = ID_PACE + ".4" - static let ID_PACE_ECDH_IM_3DES_CBC_CBC = ID_PACE_ECDH_IM + ".1"; // 0.4.0.127.0.7.2.2.4.4.1, id-PACE-ECDH-IM-3DES-CBC-CBC - static let ID_PACE_ECDH_IM_AES_CBC_CMAC_128 = ID_PACE_ECDH_IM + ".2"; // 0.4.0.127.0.7.2.2.4.4.2, id-PACE-ECDH-IM-AES-CBC-CMAC-128 - static let ID_PACE_ECDH_IM_AES_CBC_CMAC_192 = ID_PACE_ECDH_IM + ".3"; // 0.4.0.127.0.7.2.2.4.4.3, id-PACE-ECDH-IM-AES-CBC-CMAC-192 - static let ID_PACE_ECDH_IM_AES_CBC_CMAC_256 = ID_PACE_ECDH_IM + ".4"; // 0.4.0.127.0.7.2.2.4.4.4, id-PACE-ECDH-IM-AES-CBC-CMAC-256 - - static let ID_PACE_ECDH_CAM = ID_PACE + ".6" - static let ID_PACE_ECDH_CAM_AES_CBC_CMAC_128 = ID_PACE_ECDH_CAM + ".2"; // 0.4.0.127.0.7.2.2.4.6.2, id-PACE-ECDH-CAM-AES-CBC-CMAC-128 - static let ID_PACE_ECDH_CAM_AES_CBC_CMAC_192 = ID_PACE_ECDH_CAM + ".3"; // 0.4.0.127.0.7.2.2.4.6.3, id-PACE-ECDH-CAM-AES-CBC-CMAC-192 - static let ID_PACE_ECDH_CAM_AES_CBC_CMAC_256 = ID_PACE_ECDH_CAM + ".4"; // 0.4.0.127.0.7.2.2.4.6.4, id-PACE-ECDH-CAM-AES-CBC-CMAC-256 - - public func getObjectIdentifier() -> String { - preconditionFailure("This method must be overridden") - } - - public func getProtocolOIDString() -> String { - preconditionFailure("This method must be overridden") - } - - static func getInstance( object : ASN1Item, body: [UInt8] ) -> SecurityInfo? { - let oid = object.getChild(0)?.value ?? "" - let requiredData = object.getChild(1)! - var optionalData : ASN1Item? = nil - if (object.getNumberOfChildren() == 3) { - optionalData = object.getChild(2) - } - - if ChipAuthenticationPublicKeyInfo.checkRequiredIdentifier(oid) { - - let keyData : [UInt8] = [UInt8](body[requiredData.pos ..< requiredData.pos+requiredData.headerLen+requiredData.length]) - - var subjectPublicKeyInfo : OpaquePointer? = nil - let _ = keyData.withUnsafeBytes { (ptr) in - var newPtr = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self) - - subjectPublicKeyInfo = d2i_PUBKEY(nil, &newPtr, keyData.count) - } - - if let subjectPublicKeyInfo = subjectPublicKeyInfo { - - if optionalData == nil { - return ChipAuthenticationPublicKeyInfo(oid:oid, pubKey:subjectPublicKeyInfo); - } else { - let keyId = Int(optionalData!.value, radix: 16) - return ChipAuthenticationPublicKeyInfo(oid:oid, pubKey:subjectPublicKeyInfo, keyId: keyId); - } - - } - } else if ChipAuthenticationInfo.checkRequiredIdentifier(oid) { - let version = Int(requiredData.value) ?? -1 - if let optionalData = optionalData { - let keyId = Int(optionalData.value, radix: 16) - return ChipAuthenticationInfo(oid: oid, version: version, keyId: keyId); - } else { - return ChipAuthenticationInfo(oid: oid, version: version); - } - } else if PACEInfo.checkRequiredIdentifier(oid) { - let version = Int(requiredData.value) ?? -1 - var parameterId : Int? = nil - - if let optionalData = optionalData { - parameterId = Int(optionalData.value, radix:16) - } - return PACEInfo(oid: oid, version: version, parameterId: parameterId); - } else if ActiveAuthenticationInfo.checkRequiredIdentifier(oid) { - let version = Int(requiredData.value) ?? -1 - if let optionalData = optionalData { - return ActiveAuthenticationInfo(oid: oid, version: version, signatureAlgorithmOID: optionalData.value) - } else { - return ActiveAuthenticationInfo(oid: oid, version: version) - } - } - return nil - } -} diff --git a/app/ios/AwesomeProject/NFCViewDisplayMessage.swift b/app/ios/AwesomeProject/NFCViewDisplayMessage.swift deleted file mode 100644 index 94ad49b72..000000000 --- a/app/ios/AwesomeProject/NFCViewDisplayMessage.swift +++ /dev/null @@ -1,50 +0,0 @@ -import Foundation - -@available(iOS 13, macOS 10.15, *) -public enum NFCViewDisplayMessage { - case requestPresentPassport - case authenticatingWithPassport(Int) - case readingDataGroupProgress(DataGroupId, Int) - case error(NFCPassportReaderError) - case successfulRead -} - -@available(iOS 13, macOS 10.15, *) -extension NFCViewDisplayMessage { - public var description: String { - switch self { - case .requestPresentPassport: - return "Hold your iPhone near an NFC enabled passport." - case .authenticatingWithPassport(let progress): - let progressString = handleProgress(percentualProgress: progress) - return "Authenticating with passport.....\n\n\(progressString)" - case .readingDataGroupProgress(let dataGroup, let progress): - let progressString = handleProgress(percentualProgress: progress) - return "Reading \(dataGroup).....\n\n\(progressString)" - case .error(let tagError): - switch tagError { - case NFCPassportReaderError.TagNotValid: - return "Tag not valid." - case NFCPassportReaderError.MoreThanOneTagFound: - return "More than 1 tags was found. Please present only 1 tag." - case NFCPassportReaderError.ConnectionError: - return "Connection error. Please try again." - case NFCPassportReaderError.InvalidMRZKey: - return "MRZ Key not valid for this document." - case NFCPassportReaderError.ResponseError(let description, let sw1, let sw2): - return "Sorry, there was a problem reading the passport. \(description) - (0x\(sw1), 0x\(sw2)" - default: - return "Sorry, there was a problem reading the passport. Please try again" - } - case .successfulRead: - return "Passport read successfully" - } - } - - func handleProgress(percentualProgress: Int) -> String { - let p = (percentualProgress/20) - let full = String(repeating: "🟒 ", count: p) - let empty = String(repeating: "βšͺ️ ", count: 5-p) - return "\(full)\(empty)" - } -} diff --git a/app/ios/AwesomeProject/OpenSSLUtils.swift b/app/ios/AwesomeProject/OpenSSLUtils.swift deleted file mode 100644 index b0b4851f3..000000000 --- a/app/ios/AwesomeProject/OpenSSLUtils.swift +++ /dev/null @@ -1,697 +0,0 @@ -import Foundation -import OpenSSL -import CryptoTokenKit - -@available(iOS 13, macOS 10.15, *) -public class OpenSSLUtils { - private static var loaded = false - - /// Returns any OpenSSL Error as a String - public static func getOpenSSLError() -> String { - - guard let out = BIO_new(BIO_s_mem()) else { return "Unknown" } - defer { BIO_free(out) } - - ERR_print_errors( out ) - let str = OpenSSLUtils.bioToString( bio:out ) - - return str - } - - /// Extracts the contents of a BIO object and returns it as a String - /// - Parameter bio: a Pointer to a BIO buffer - /// - Returns: A string containing the contents of the BIO buffer - static func bioToString( bio : OpaquePointer ) -> String { - - let len = BIO_ctrl(bio, BIO_CTRL_PENDING, 0, nil) - var buffer = [CChar](repeating: 0, count: len+1) - BIO_read(bio, &buffer, Int32(len)) - - // Ensure last value is 0 (null terminated) otherwise we get buffer overflow! - buffer[len] = 0 - let ret = String(cString:buffer) - return ret - } - - static func X509ToPEM( x509: OpaquePointer ) -> String { - - let out = BIO_new(BIO_s_mem())! - defer { BIO_free( out) } - - PEM_write_bio_X509(out, x509); - let str = OpenSSLUtils.bioToString( bio:out ) - - return str - } - - static func pubKeyToPEM( pubKey: OpaquePointer ) -> String { - - let out = BIO_new(BIO_s_mem())! - defer { BIO_free( out) } - - PEM_write_bio_PUBKEY(out, pubKey); - let str = OpenSSLUtils.bioToString( bio:out ) - - return str - } - - static func privKeyToPEM( privKey: OpaquePointer ) -> String { - - let out = BIO_new(BIO_s_mem())! - defer { BIO_free( out) } - - PEM_write_bio_PrivateKey(out, privKey, nil, nil, 0, nil, nil) - let str = OpenSSLUtils.bioToString( bio:out ) - - return str - } - - static func pkcs7DataToPEM( pkcs7: Data ) -> String { - - let inf = BIO_new(BIO_s_mem())! - defer { BIO_free( inf) } - let out = BIO_new(BIO_s_mem())! - defer { BIO_free( out) } - - let _ = pkcs7.withUnsafeBytes { (ptr) in - BIO_write(inf, ptr.baseAddress?.assumingMemoryBound(to: Int8.self), Int32(pkcs7.count)) - } - guard let p7 = d2i_PKCS7_bio(inf, nil) else { return "" } - defer { PKCS7_free(p7) } - - PEM_write_bio_PKCS7(out, p7) - let str = OpenSSLUtils.bioToString( bio:out ) - return str - } - - - /// Extracts a X509 certificate in PEM format from a PKCS7 container - /// - Parameter pkcs7Der: The PKCS7 container in DER format - /// - Returns: The PEM formatted X509 certificate - /// - Throws: A OpenSSLError.UnableToGetX509CertificateFromPKCS7 are thrown for any error - static func getX509CertificatesFromPKCS7( pkcs7Der : Data ) throws -> [X509Wrapper] { - - guard let inf = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToGetX509CertificateFromPKCS7("Unable to allocate input buffer") } - defer { BIO_free(inf) } - let _ = pkcs7Der.withUnsafeBytes { (ptr) in - BIO_write(inf, ptr.baseAddress?.assumingMemoryBound(to: Int8.self), Int32(pkcs7Der.count)) - } - guard let p7 = d2i_PKCS7_bio(inf, nil) else { throw OpenSSLError.UnableToGetX509CertificateFromPKCS7("Unable to read PKCS7 DER data") } - defer { PKCS7_free(p7) } - - var certs : OpaquePointer? = nil - let i = OBJ_obj2nid(p7.pointee.type); - switch (i) { - case NID_pkcs7_signed: - if let sign = p7.pointee.d.sign { - certs = sign.pointee.cert - } - break; - case NID_pkcs7_signedAndEnveloped: - if let signed_and_enveloped = p7.pointee.d.signed_and_enveloped { - certs = signed_and_enveloped.pointee.cert - } - break; - default: - break; - } - - var ret = [X509Wrapper]() - if let certs = certs { - let certCount = sk_X509_num(certs) - for i in 0 ..< certCount { - let x = sk_X509_value(certs, i); - if let x509 = X509Wrapper(with:x) { - ret.append( x509 ) - } - } - } - - return ret - } - - /// Checks whether a trust chain can be built up to verify a X509 certificate. A CAFile containing a list of trusted certificates (each in PEM format) - /// is used to build the trust chain. - /// The trusted certificates in this use case are typically from a Countries master list (see the scripts for more informaton on how to prepare this) - /// - Parameter x509Cert: The X509 certificate (in PEM format) to verify - /// - Parameter CAFile: The URL path of a file containing the list of certificates used to try to discover and build a trust chain - /// - Returns: either the X509 issue signing certificate that was used to sign the passed in X509 certificate or an error - static func verifyTrustAndGetIssuerCertificate( x509 : X509Wrapper, CAFile : URL ) -> Result { - - guard let cert_ctx = X509_STORE_new() else { return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Unable to create certificate store")) } - defer { X509_STORE_free(cert_ctx) } - - X509_STORE_set_verify_cb(cert_ctx) { (ok, ctx) -> Int32 in - let cert_error = X509_STORE_CTX_get_error(ctx) - - if ok == 0 { - let errVal = X509_verify_cert_error_string(Int(cert_error)) - let val = errVal!.withMemoryRebound(to: CChar.self, capacity: 1000) { (ptr) in - return String(cString: ptr) - } - - Log.error("error \(cert_error) at \(X509_STORE_CTX_get_error_depth(ctx)) depth lookup:\(val)" ) - } - - return ok; - } - - guard let lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_file()) else { return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Unable to add lookup to store")) } - - // Load masterList.pem file - var rc = X509_LOOKUP_ctrl(lookup, X509_L_FILE_LOAD, CAFile.path, Int(X509_FILETYPE_PEM), nil) - - guard let store = X509_STORE_CTX_new() else { - return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Unable to create new X509_STORE_CTX")) - } - defer { X509_STORE_CTX_free(store) } - - X509_STORE_set_flags(cert_ctx, 0) - rc = X509_STORE_CTX_init(store, cert_ctx, x509.cert, nil) - if rc == 0 { - return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Unable to initialise X509_STORE_CTX")) - } - - // discover and verify X509 certificte chain - let i = X509_verify_cert(store); - if i != 1 { - let err = X509_STORE_CTX_get_error(store) - - return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Verification of certificate failed - errorCode \(err)")) - } - - // Get chain and issue certificate is the last cert in the chain - let chain = X509_STORE_CTX_get1_chain(store); - let nrCertsInChain = sk_X509_num(chain) - if nrCertsInChain > 1 { - let cert = sk_X509_value(chain, nrCertsInChain-1) - if let certWrapper = X509Wrapper(with: cert) { - return .success( certWrapper ) - } - } - - return .failure(OpenSSLError.UnableToVerifyX509CertificateForSOD("Unable to get issuer certificate - not found")) - } - - - /// Verifies the signed data section against the stored certificate and extracts the signed data section from a PKCS7 container (if present and valid) - /// - Parameter pkcs7Der: The PKCS7 container in DER format - /// - Returns: The signed data from a PKCS7 container if we could read it - /// - /// - Note: To test from the command line using openssl (NOTE NOT THE default mac version as it doesn't currently support CMS): - /// extract the SOD Base64 from an exported passport (you will need to unescape slashes!) - save this to ppt.b64 - /// convert to binary (cat ppt.b64 | base64 -D > ppt.bin - /// extract the der file from the SOD (which includes header) - tail -c+5 ppt.bin > aq.der (blindy discards header) - /// convert der to PEM - openssl pkcs7 -in ppt.der --inform der -out ppt.pem -outform pem - /// verify signature data against included document signing cert - openssl cms -verify -in ppt.pem -inform pem -noverify - /// the -noverify is don't verify against the signers certifcate (as we don' thave that!) - /// - /// This should return Verification Successful and the signed data - static func verifyAndReturnSODEncapsulatedDataUsingCMS( sod : SOD ) throws -> Data { - - guard let inf = BIO_new(BIO_s_mem()) else { throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("CMS - Unable to allocate input buffer") } - defer { BIO_free(inf) } - - guard let out = BIO_new(BIO_s_mem()) else { throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("CMS - Unable to allocate output buffer") } - defer { BIO_free(out) } - - let _ = sod.body.withUnsafeBytes { (ptr) in - BIO_write(inf, ptr.baseAddress?.assumingMemoryBound(to: UInt8.self), Int32(sod.body.count)) - } - - guard let cms = d2i_CMS_bio(inf, nil) else { - throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("CMS - Verification of P7 failed - unable to create CMS") - } - defer { CMS_ContentInfo_free(cms) } - - let flags : UInt32 = UInt32(CMS_NO_SIGNER_CERT_VERIFY) - - if CMS_verify(cms, nil, nil, nil, out, flags) == 0 { - throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("CMS - Verification of P7 failed - unable to verify signature") - } - - Log.debug("Verification successful\n"); - let len = BIO_ctrl(out, BIO_CTRL_PENDING, 0, nil) - var buffer = [UInt8](repeating: 0, count: len) - BIO_read(out, &buffer, Int32(len)) - let sigData = Data(buffer) - - return sigData - } - - - static func verifyAndReturnSODEncapsulatedData( sod : SOD ) throws -> Data { - - let encapsulatedContent = try sod.getEncapsulatedContent() - let signedAttribsHashAlgo = try sod.getEncapsulatedContentDigestAlgorithm() - let signedAttributes = try sod.getSignedAttributes() - let messageDigest = try sod.getMessageDigestFromSignedAttributes() - let signature = try sod.getSignature() - let sigType = try sod.getSignatureAlgorithm() - - let pubKey = try sod.getPublicKey() - - let mdHash : Data = try Data(calcHash(data: [UInt8](encapsulatedContent), hashAlgorithm: signedAttribsHashAlgo)) - - // Make sure that hash equals the messageDigest - if messageDigest != mdHash { - // Invalid - signed data hash doesn't match message digest hash - throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("messageDigest Hash doesn't hatch that of the signed attributes") - } - - // Verify signed attributes - if !verifySignature( data : [UInt8](signedAttributes), signature : [UInt8](signature), pubKey : pubKey, digestType: sigType ) { - - throw OpenSSLError.VerifyAndReturnSODEncapsulatedData("Unable to verify signature for signed attributes") - } - - return encapsulatedContent - } - - /// Parses a signed data structures encoded in ASN1 format and returns the structure in text format - /// - Parameter data: The data to be parsed in ASN1 format - /// - Returns: The parsed data as A String - static func ASN1Parse( data: Data ) throws -> String { - - guard let out = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToParseASN1("Unable to allocate output buffer") } - defer { BIO_free(out) } - - var parsed : String = "" - let _ = try data.withUnsafeBytes { (ptr) in - let rc = ASN1_parse_dump(out, ptr.baseAddress?.assumingMemoryBound(to: UInt8.self), data.count, 0, 0) - if rc == 0 { - let str = OpenSSLUtils.getOpenSSLError() - Log.debug( "Failed to parse ASN1 Data - \(str)" ) - throw OpenSSLError.UnableToParseASN1("Failed to parse ASN1 Data - \(str)") - } - - parsed = bioToString(bio: out) - } - - return parsed - } - - - - /// Reads an RSA Public Key in DER format and converts it to an OpenSSL EVP_PKEY value for use whilst decrypting or verifying an RSA signature - /// - Parameter data: The RSA key in DER format - /// - Returns: The EVP_PKEY value - /// NOTE THE CALLER IS RESPONSIBLE FOR FREEING THE RETURNED KEY USING - /// EVP_PKEY_free(pemKey); - static func readRSAPublicKey( data : [UInt8] ) throws -> OpaquePointer? { - - guard let inf = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToReadECPublicKey("Unable to allocate output buffer") } - defer { BIO_free(inf) } - - let _ = data.withUnsafeBytes { (ptr) in - BIO_write(inf, ptr.baseAddress?.assumingMemoryBound(to: UInt8.self), Int32(data.count)) - } - - guard let rsakey = d2i_RSA_PUBKEY_bio(inf, nil) else { throw OpenSSLError.UnableToReadECPublicKey("Failed to load") } - defer{ RSA_free(rsakey) } - - let key = EVP_PKEY_new() - if EVP_PKEY_set1_RSA(key, rsakey) != 1 { - EVP_PKEY_free(key) - throw OpenSSLError.UnableToReadECPublicKey("Failed to load") - } - return key - } - - /// This code is taken pretty much from rsautl.c - to decrypt a signature with a public key - /// NOTE: Current no padding is used! - This seems to be the default for Active Authentication RSA signatures (guess) - /// - Parameter signature: The RSA encrypted signature to decrypt - /// - Parameter pubKey: The RSA Public Key - /// - Returns: The decrypted signature data - static func decryptRSASignature( signature : Data, pubKey : OpaquePointer ) throws -> [UInt8] { - - let pad = RSA_NO_PADDING - let rsa = EVP_PKEY_get1_RSA( pubKey ) - - let keysize = RSA_size(rsa); - var outputBuf = [UInt8](repeating: 0, count: Int(keysize)) - - // Decrypt signature - var outlen : Int32 = 0 - let _ = signature.withUnsafeBytes { (sigPtr) in - let _ = outputBuf.withUnsafeMutableBytes { (outPtr) in - outlen = RSA_public_decrypt(Int32(signature.count), sigPtr.baseAddress?.assumingMemoryBound(to: UInt8.self), outPtr.baseAddress?.assumingMemoryBound(to: UInt8.self), rsa, pad) - } - } - - if outlen == 0 { - let error = OpenSSLUtils.getOpenSSLError() - throw OpenSSLError.UnableToDecryptRSASignature( "RSA_public_decrypt failed - \(error)" ) - } - - return outputBuf - } - - /// Reads an ECDSA Public Key in DER format and converts it to an OpenSSL EVP_PKEY value for use whilst verifying a ECDSA signature - /// - Parameter data: The ECDSA key in DER forma - /// - Returns: The EVP_PKEY value - /// NOTE THE CALLER IS RESPONSIBLE FOR FREEING THE RETURNED KEY USING - /// EVP_PKEY_free(pemKey); - static func readECPublicKey( data : [UInt8] ) throws -> OpaquePointer? { - - guard let inf = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToReadECPublicKey("Unable to allocate output buffer") } - defer { BIO_free(inf) } - - let _ = data.withUnsafeBytes { (ptr) in - BIO_write(inf, ptr.baseAddress?.assumingMemoryBound(to: UInt8.self), Int32(data.count)) - } - - guard let eckey = d2i_EC_PUBKEY_bio(inf, nil) else { throw OpenSSLError.UnableToReadECPublicKey("Failed to load") } - defer{ EC_KEY_free(eckey) } - - guard let outf = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToReadECPublicKey("Unable to allocate output buffer") } - defer { BIO_free(outf) } - let _ = PEM_write_bio_EC_PUBKEY(outf, eckey); - let pemKey = PEM_read_bio_PUBKEY(outf, nil, nil, nil) - - return pemKey - } - - - /// Verifies Active Authentication data valid against an ECDSA signature and ECDSA Public Key - used in Active Authentication - /// - Parameter publicKey: The OpenSSL EVP_PKEY ECDSA key - /// - Parameter signature: The ECDSA signature to verify - /// - Parameter data: The data used to generate the signature - /// - Returns: True if the signature was verified - static func verifyECDSASignature( publicKey:OpaquePointer, signature: [UInt8], data: [UInt8], digestType: String = "" ) -> Bool { - - // We first need to convert the signature from PLAIN ECDSA to ASN1 DER encoded - let ecsig = ECDSA_SIG_new() - defer { ECDSA_SIG_free(ecsig) } - let sigData = signature - let l = sigData.count / 2 - sigData.withUnsafeBufferPointer { (unsafeBufPtr) in - let unsafePointer = unsafeBufPtr.baseAddress! - let r = BN_bin2bn(unsafePointer, Int32(l), nil) - let s = BN_bin2bn((unsafePointer + l), Int32(l), nil) - ECDSA_SIG_set0(ecsig, r, s) - } - let sigSize = i2d_ECDSA_SIG(ecsig, nil) - var derBytes = [UInt8](repeating: 0, count: Int(sigSize)) - derBytes.withUnsafeMutableBufferPointer { (unsafeBufPtr) in - var unsafePointer = unsafeBufPtr.baseAddress - let _ = i2d_ECDSA_SIG(ecsig, &unsafePointer) - } - - let rc = verifySignature(data: data, signature: derBytes, pubKey: publicKey, digestType: digestType) - return rc - } - - /// Verifies that a signature is valid for some data and a Public Key - /// - Parameter data: The data used to generate the signature - /// - Parameter signature: The signature to verify - /// - Parameter publicKey: The OpenSSL EVP_PKEY key - /// - Parameter digestType: the type of hash to use (empty string to use no digest type) - /// - Returns: True if the signature was verified - static func verifySignature( data : [UInt8], signature : [UInt8], pubKey : OpaquePointer, digestType: String ) -> Bool { - - var digest = "sha256" - let digestType = digestType.lowercased() - if digestType.contains( "sha1" ) { - digest = "sha1" - } else if digestType.contains( "sha224" ) { - digest = "sha224" - } else if digestType.contains( "sha256" ) || digestType.contains( "rsassapss" ) { - digest = "sha256" - } else if digestType.contains( "sha384" ) { - digest = "sha384" - } else if digestType.contains( "sha512" ) { - digest = "sha512" - } - - // Fix for some invalid ECDSA based signatures - // An ECDSA signature comprises of a Sequence of 2 big integers (R & S) and the verification - // is a linear equation of these two integers, the data hash and the public key - // However, in some passports the encoding of the integers is incorrect and has a leading 00 - // causing the verification to fail. - // So in this case, we check to see if it is actually a valid BigInteger, and if not, we remove the - // leading prefix, check again and if a valid big integer this time then we use this otherwise - // we keep the original value - // If we change any values then we re-generate the signature and use this - var fixedSignature = signature - if digestType.contains( "ecdsa" ) { - // Decode signature - if let sequence = TKBERTLVRecord(from:Data(signature)), - sequence.tag == 0x30, - var intRecords = TKBERTLVRecord.sequenceOfRecords(from: sequence.value), - intRecords.count == 2 { - - var didFix = false - for (idx, rec) in intRecords.enumerated() { - // Only process if the first byte is a 0 - if rec.value[0] != 0 { - continue - } - - // There is a feature in TKBERTLVRecord.sequenceOfRecords where the 2nd record.data call - // contains the data for the whole data not the actual record - // (reported as FB9077037) - // So for the moment, work aroud this and create a new record - let fixedRec = TKBERTLVRecord( tag: rec.tag, value: rec.value) - let data = [UInt8](fixedRec.data) - - // Check to see if a valid Big Integer (we need the whole record including tag and length for the d2i_ASN1_INTEGER call) - data.withUnsafeBufferPointer { (ptr) in - var address = ptr.baseAddress - let v = d2i_ASN1_INTEGER(nil, &address, data.count) - defer { ASN1_INTEGER_free(v) } - if v == nil { - // Not a valid BigInteger, so remove the first value and try again - let newRec = TKBERTLVRecord( tag: rec.tag, value: rec.value[1...]) - - let data2 = [UInt8](newRec.data) - data2.withUnsafeBufferPointer { (ptr) in - var address = ptr.baseAddress - let v2 = d2i_ASN1_INTEGER(nil, &address, data2.count) - defer { ASN1_INTEGER_free(v2) } - if v2 != nil { - // OK, we have a valid BigInteger this time so replace the original - // record with the new one - intRecords[idx] = newRec - didFix = true - } - } - } - } - } - - // We only reencode if we changed any of the integers, otherwise assume they were actually - // correctly encoded - if didFix { - // re-encode - let newSequence = TKBERTLVRecord( tag: sequence.tag, records: intRecords) - fixedSignature = [UInt8](newSequence.data) - } - } - } - - let md = EVP_get_digestbyname(digest) - - let ctx = EVP_MD_CTX_new() - var pkey_ctx : OpaquePointer? - - defer{ EVP_MD_CTX_free( ctx) } - - var nRes = EVP_DigestVerifyInit(ctx, &pkey_ctx, md, nil, pubKey) - if ( nRes != 1 ) { - return false; - } - - if digestType.contains( "rsassapss" ) { - EVP_PKEY_CTX_ctrl_str(pkey_ctx, "rsa_padding_mode", "pss" ) - EVP_PKEY_CTX_ctrl_str(pkey_ctx, "rsa_pss_saltlen", "auto" ) - } - - nRes = EVP_DigestUpdate(ctx, data, data.count); - if ( nRes != 1 ) { - return false; - } - - nRes = EVP_DigestVerifyFinal(ctx, fixedSignature, fixedSignature.count); - if (nRes != 1) { - return false; - } - - return true - } - - @available(iOS 13, macOS 10.15, *) - static func generateAESCMAC( key: [UInt8], message : [UInt8] ) -> [UInt8] { - let ctx = CMAC_CTX_new(); - defer { CMAC_CTX_free(ctx) } - var key = key - - var mac = [UInt8](repeating: 0, count: 32) - var maclen : Int = 0 - - if key.count == 16 { - CMAC_Init(ctx, &key, key.count, EVP_aes_128_cbc(), nil) - } else if key.count == 24 { - CMAC_Init(ctx, &key, key.count, EVP_aes_192_cbc(), nil) - } else if key.count == 32 { - CMAC_Init(ctx, &key, key.count, EVP_aes_256_cbc(), nil) - } - CMAC_Update(ctx, message, message.count); - CMAC_Final(ctx, &mac, &maclen); - - Log.verbose( "aesMac - mac - \(binToHexRep(mac))" ) - - return [UInt8](mac[0.. [UInt8] { - - let obj = OBJ_txt2obj( oid.cString(using: .utf8), 1) - let payloadLen = i2d_ASN1_OBJECT(obj, nil) - - var data = [UInt8](repeating: 0, count: Int(payloadLen)) - - let _ = data.withUnsafeMutableBytes { (ptr) in - var newPtr = ptr.baseAddress?.assumingMemoryBound(to: UInt8.self) - _ = i2d_ASN1_OBJECT(obj, &newPtr) - } - - return data - } - - @available(iOS 13, macOS 10.15, *) - public static func getPublicKeyData(from key:OpaquePointer) -> [UInt8]? { - var data : [UInt8] = [] - // Get Key type - let v = EVP_PKEY_base_id( key ) - if v == EVP_PKEY_DH || v == EVP_PKEY_DHX { - guard let dh = EVP_PKEY_get0_DH(key) else { - return nil - } - var dhPubKey : OpaquePointer? - DH_get0_key(dh, &dhPubKey, nil) - - let nrBytes = (BN_num_bits(dhPubKey)+7)/8 - data = [UInt8](repeating: 0, count: Int(nrBytes)) - _ = BN_bn2bin(dhPubKey, &data) - } else if v == EVP_PKEY_EC { - - guard let ec = EVP_PKEY_get0_EC_KEY(key), - let ec_pub = EC_KEY_get0_public_key(ec), - let ec_group = EC_KEY_get0_group(ec) else { - return nil - } - - let form = EC_KEY_get_conv_form(ec) - let len = EC_POINT_point2oct(ec_group, ec_pub, form, nil, 0, nil) - data = [UInt8](repeating: 0, count: Int(len)) - if len == 0 { - return nil - } - _ = EC_POINT_point2oct(ec_group, ec_pub, form, &data, len, nil) - } - - return data - } - - // Caller is responsible for freeing the key - @available(iOS 13, macOS 10.15, *) - public static func decodePublicKeyFromBytes(pubKeyData: [UInt8], params: OpaquePointer) -> OpaquePointer? { - var pubKey : OpaquePointer? - - let keyType = EVP_PKEY_base_id( params ) - if keyType == EVP_PKEY_DH || keyType == EVP_PKEY_DHX { - - let dhKey = DH_new() - defer{ DH_free(dhKey) } - - // We don't free this as its part of the key! - let bn = BN_bin2bn(pubKeyData, Int32(pubKeyData.count), nil) - DH_set0_key(dhKey, bn, nil) - - pubKey = EVP_PKEY_new() - guard EVP_PKEY_set1_DH(pubKey, dhKey) == 1 else { - return nil - } - } else { - let ec = EVP_PKEY_get1_EC_KEY(params) - let group = EC_KEY_get0_group(ec); - let ecp = EC_POINT_new(group); - let key = EC_KEY_new(); - defer { - EC_KEY_free(ec) - EC_POINT_free(ecp) - EC_KEY_free(key) - } - - // Read EC_Point from public key data - guard EC_POINT_oct2point(group, ecp, pubKeyData, pubKeyData.count, nil) == 1, - EC_KEY_set_group(key, group) == 1, - EC_KEY_set_public_key(key, ecp) == 1 else { - - return nil - } - - pubKey = EVP_PKEY_new() - guard EVP_PKEY_set1_EC_KEY(pubKey, key) == 1 else { - return nil - } - } - - return pubKey - } - - - public static func computeSharedSecret( privateKeyPair: OpaquePointer, publicKey: OpaquePointer ) -> [UInt8] { - - // Oddly it seems that we cant use EVP_PKEY stuff for DH as it uses DTX keys which OpenSSL doesn't quite handle right - // OR I'm misunderstanding something (which is more possible) - // Works fine though for ECDH keys - var secret : [UInt8] - let keyType = EVP_PKEY_base_id( privateKeyPair ) - if keyType == EVP_PKEY_DH || keyType == EVP_PKEY_DHX { - // Get bn for public key - let dh = EVP_PKEY_get1_DH(privateKeyPair); - - let dh_pub = EVP_PKEY_get1_DH(publicKey) - var bn = BN_new() - DH_get0_key( dh_pub, &bn, nil ) - - secret = [UInt8](repeating: 0, count: Int(DH_size(dh))) - let len = DH_compute_key(&secret, bn, dh); - - Log.verbose( "OpenSSLUtils.computeSharedSecret - DH secret len - \(len)" ) - } else { - let ctx = EVP_PKEY_CTX_new(privateKeyPair, nil) - defer{ EVP_PKEY_CTX_free(ctx) } - - if EVP_PKEY_derive_init(ctx) != 1 { - // error - Log.error( "ERROR - \(OpenSSLUtils.getOpenSSLError())" ) - } - - // Set the public key - if EVP_PKEY_derive_set_peer( ctx, publicKey ) != 1 { - // error - Log.error( "ERROR - \(OpenSSLUtils.getOpenSSLError())" ) - } - - // get buffer length needed for shared secret - var keyLen = 0 - if EVP_PKEY_derive(ctx, nil, &keyLen) != 1 { - // Error - Log.error( "ERROR - \(OpenSSLUtils.getOpenSSLError())" ) - } - - // Derive the shared secret - secret = [UInt8](repeating: 0, count: keyLen) - if EVP_PKEY_derive(ctx, &secret, &keyLen) != 1 { - // Error - Log.error( "ERROR - \(OpenSSLUtils.getOpenSSLError())" ) - } - } - return secret - } - -} diff --git a/app/ios/AwesomeProject/PACEHandler.swift b/app/ios/AwesomeProject/PACEHandler.swift deleted file mode 100644 index f4f408fa4..000000000 --- a/app/ios/AwesomeProject/PACEHandler.swift +++ /dev/null @@ -1,614 +0,0 @@ -import Foundation -import OpenSSL -import CryptoTokenKit - -#if !os(macOS) -import CoreNFC -import CryptoKit - -@available(iOS 15, *) -private enum PACEHandlerError { - case DHKeyAgreementError(String) - case ECDHKeyAgreementError(String) - - var value: String { - switch self { - case .DHKeyAgreementError(let errMsg): return errMsg - case .ECDHKeyAgreementError(let errMsg): return errMsg - - } - } -} - -@available(iOS 15, *) -extension PACEHandlerError: LocalizedError { - public var errorDescription: String? { - return NSLocalizedString(value, comment: "PACEHandlerError") - } -} - -@available(iOS 15, *) -public class PACEHandler { - - - private static let MRZ_PACE_KEY_REFERENCE : UInt8 = 0x01 - private static let CAN_PACE_KEY_REFERENCE : UInt8 = 0x02 // Not currently supported - private static let PIN_PACE_KEY_REFERENCE : UInt8 = 0x03 // Not currently supported - private static let CUK_PACE_KEY_REFERENCE : UInt8 = 0x04 // Not currently supported - - var tagReader : TagReader - var paceInfo : PACEInfo - - var isPACESupported : Bool = false - var paceError : String = "" - - // Params used - private var paceKey : [UInt8] = [] - private var paceKeyType : UInt8 = 0 - private var paceOID : String = "" - private var parameterSpec : Int32 = -1 - private var mappingType : PACEMappingType! - private var agreementAlg : String = "" - private var cipherAlg : String = "" - private var digestAlg : String = "" - private var keyLength : Int = -1 - - public init(cardAccess : CardAccess, tagReader: TagReader) throws { - self.tagReader = tagReader - - guard let pi = cardAccess.paceInfo else { - throw NFCPassportReaderError.NotYetSupported( "PACE not supported" ) - } - - self.paceInfo = pi - isPACESupported = true - } - - public func doPACE( mrzKey : String ) async throws { - guard isPACESupported else { - throw NFCPassportReaderError.NotYetSupported( "PACE not supported" ) - } - - Log.info( "Performing PACE with \(paceInfo.getProtocolOIDString())" ) - - paceOID = paceInfo.getObjectIdentifier() - parameterSpec = try paceInfo.getParameterSpec() - - mappingType = try paceInfo.getMappingType() // Either GM, CAM, or IM. - agreementAlg = try paceInfo.getKeyAgreementAlgorithm() // Either DH or ECDH. - cipherAlg = try paceInfo.getCipherAlgorithm() // Either DESede or AES. - digestAlg = try paceInfo.getDigestAlgorithm() // Either SHA-1 or SHA-256. - keyLength = try paceInfo.getKeyLength() // Get key length the enc cipher. Either 128, 192, or 256. - - paceKeyType = PACEHandler.MRZ_PACE_KEY_REFERENCE - paceKey = try createPaceKey( from: mrzKey ) - - // Temporary logging - Log.verbose("doPace - inpit parameters" ) - Log.verbose("paceOID - \(paceOID)" ) - Log.verbose("parameterSpec - \(parameterSpec)" ) - Log.verbose("mappingType - \(mappingType!)" ) - Log.verbose("agreementAlg - \(agreementAlg)" ) - Log.verbose("cipherAlg - \(cipherAlg)" ) - Log.verbose("digestAlg - \(digestAlg)" ) - Log.verbose("keyLength - \(keyLength)" ) - Log.verbose("keyLength - \(mrzKey)" ) - Log.verbose("paceKey - \(binToHexRep(paceKey, asArray:true))" ) - - // First start the initial auth call - _ = try await tagReader.sendMSESetATMutualAuth(oid: paceOID, keyType: paceKeyType) - - let decryptedNonce = try await self.doStep1() - let ephemeralParams = try await self.doStep2(passportNonce: decryptedNonce) - let (ephemeralKeyPair, passportPublicKey) = try await self.doStep3KeyExchange(ephemeralParams: ephemeralParams) - let (encKey, macKey) = try await self.doStep4KeyAgreement( pcdKeyPair: ephemeralKeyPair, passportPublicKey: passportPublicKey) - try self.paceCompleted( ksEnc: encKey, ksMac: macKey ) - Log.debug("PACE SUCCESSFUL" ) - } - - /// Handles an error during the PACE process - /// Logs and stoes the error and returns false to the caller - /// - Parameters: - /// - stage: Where in the PACE process the error occurred - /// - error: The error message - func handleError( _ stage: String, _ error: String, needToTerminateGA: Bool = false ) { - Log.error( "PACEHandler: \(stage) - \(error)" ) - Log.error( " OpenSSLError: \(OpenSSLUtils.getOpenSSLError())" ) - self.paceError = "\(stage) - \(error)" - //self.completedHandler?( false ) - -/* - if needToTerminateGA { - // This is to fix some passports that don't automatically terminate command chaining! - // No idea if this is the correct way to do it but testing..... - let terminateGA = wrapDO(b:0x83, arr:[0x00]) - tagReader.sendGeneralAuthenticate(data:terminateGA, isLast:true, completed: { [weak self] response, error in - self?.completedHandler?( false ) - }) - } else { - self.completedHandler?( false ) - } -*/ - } - - /// Performs PACE Step 1- receives an encrypted nonce from the passport and decypts it with the PACE key - derived from MRZ, CAN (not yet supported) - func doStep1() async throws -> [UInt8] { - Log.debug("Doing PACE Step1...") - let response = try await tagReader.sendGeneralAuthenticate(data: [], isLast: false) - - let data = response.data - let encryptedNonce = try unwrapDO(tag: 0x80, wrappedData: data) - Log.verbose( "Encrypted nonce - \(binToHexRep(encryptedNonce, asArray:true))" ) - - let decryptedNonce: [UInt8] - if self.cipherAlg == "DESede" { - let iv = [UInt8](repeating:0, count: 8) - decryptedNonce = tripleDESDecrypt(key: self.paceKey, message: encryptedNonce, iv: iv) - } else if self.cipherAlg == "AES" { - let iv = [UInt8](repeating:0, count: 16) - decryptedNonce = AESDecrypt(key: self.paceKey, message: encryptedNonce, iv: iv) - } else { - throw NFCPassportReaderError.UnsupportedCipherAlgorithm - } - - Log.verbose( "Decrypted nonce - \(binToHexRep(decryptedNonce, asArray:true) )" ) - return decryptedNonce - } - - - /// Performs PACE Step 2 - computes ephemeral parameters by mapping the nonce received from the passport - /// (and if IM used the nonce generated by us) - /// - /// Using the supported - /// - Parameters: - /// - passportNonce: The decrypted nonce received from the passport - func doStep2( passportNonce: [UInt8]) async throws -> OpaquePointer { - Log.debug( "Doing PACE Step2...") - switch(mappingType) { - case .CAM, .GM: - Log.debug( " Using General Mapping (GM)...") - return try await doPACEStep2GM(passportNonce: passportNonce) - case .IM: - Log.debug( " Using Integrated Mapping (IM)...") - return try await doPACEStep2IM(passportNonce: passportNonce) - default: - throw NFCPassportReaderError.PACEError( "Step2GM", "Unsupported Mapping Type" ) - } - - } - - /// Performs PACEStep 2 using Generic Mapping - /// - /// Using the supported - /// - Parameters: - /// - passportNonce: The decrypted nonce received from the passport - func doPACEStep2GM(passportNonce : [UInt8]) async throws -> OpaquePointer { - - let mappingKey : OpaquePointer - mappingKey = try self.paceInfo.createMappingKey( ) - - guard let pcdMappingEncodedPublicKey = OpenSSLUtils.getPublicKeyData(from: mappingKey) else { - throw NFCPassportReaderError.PACEError( "Step2GM", "Unable to get public key from mapping key") - } - Log.verbose( "public mapping key - \(binToHexRep(pcdMappingEncodedPublicKey, asArray:true))") - - Log.debug( "Sending public mapping key to passport..") - let step2Data = wrapDO(b:0x81, arr:pcdMappingEncodedPublicKey) - let response = try await tagReader.sendGeneralAuthenticate(data:step2Data, isLast:false) - - let piccMappingEncodedPublicKey = try unwrapDO(tag: 0x82, wrappedData: response.data) - - Log.debug( "Received passports public mapping key") - Log.verbose( " public mapping key - \(binToHexRep(piccMappingEncodedPublicKey, asArray: true))") - - // Do mapping agreement - - // First, Convert nonce to BIGNUM - guard let bn_nonce = BN_bin2bn(passportNonce, Int32(passportNonce.count), nil) else { - throw NFCPassportReaderError.PACEError( "Step2GM", "Unable to convert picc nonce to bignum" ) - } - defer { BN_free(bn_nonce) } - - // ephmeralParams are free'd in stage 3 - let ephemeralParams : OpaquePointer - if self.agreementAlg == "DH" { - Log.debug( "Doing DH Mapping agreement") - ephemeralParams = try self.doDHMappingAgreement(mappingKey: mappingKey, passportPublicKeyData: piccMappingEncodedPublicKey, nonce: bn_nonce ) - } else if self.agreementAlg == "ECDH" { - Log.debug( "Doing ECDH Mapping agreement") - ephemeralParams = try self.doECDHMappingAgreement(mappingKey: mappingKey, passportPublicKeyData: piccMappingEncodedPublicKey, nonce: bn_nonce ) - } else { - throw NFCPassportReaderError.PACEError( "Step2GM", "Unsupported agreement algorithm" ) - } - - // Need to free the mapping key we created now - EVP_PKEY_free(mappingKey) - return ephemeralParams - } - - func doPACEStep2IM( passportNonce: [UInt8] ) async throws -> OpaquePointer { - // Not implemented yet - throw NFCPassportReaderError.PACEError( "Step2IM", "IM not yet implemented" ) - } - - /// Generates an ephemeral public/private key pair based on mapping parameters from step 2, and then sends - /// the public key to the passport and receives its ephmeral public key in exchange - /// - Parameters: - /// - ephemeralParams: The ehpemeral mapping keys generated by step2 - /// - Returns: -/// - Tuple of Generated Ephemeral KeyPair and the Passport's public key - func doStep3KeyExchange(ephemeralParams: OpaquePointer) async throws -> (OpaquePointer, OpaquePointer) { - Log.debug( "Doing PACE Step3 - Key Exchange") - - // Generate ephemeral keypair from ephemeralParams - var ephKeyPair : OpaquePointer? = nil - let pctx = EVP_PKEY_CTX_new(ephemeralParams, nil) - EVP_PKEY_keygen_init(pctx) - EVP_PKEY_keygen(pctx, &ephKeyPair) - EVP_PKEY_CTX_free(pctx) - - guard let ephemeralKeyPair = ephKeyPair else { - throw NFCPassportReaderError.PACEError( "Step3 KeyEx", "Unable to get create ephermeral key pair" ) - } - - Log.debug( "Generated Ephemeral key pair") - - // We've finished with the ephemeralParams now - we can now free it - EVP_PKEY_free( ephemeralParams ) - - guard let publicKey = OpenSSLUtils.getPublicKeyData( from: ephemeralKeyPair ) else { - throw NFCPassportReaderError.PACEError( "Step3 KeyEx", "Unable to get public key from ephermeral key pair" ) - } - Log.verbose( "Ephemeral public key - \(binToHexRep(publicKey, asArray: true))") - - // exchange public keys - Log.debug( "Sending ephemeral public key to passport") - let step3Data = wrapDO(b:0x83, arr:publicKey) - let response = try await tagReader.sendGeneralAuthenticate(data:step3Data, isLast:false) - let passportEncodedPublicKey = try? unwrapDO(tag: 0x84, wrappedData: response.data) - guard let passportPublicKey = OpenSSLUtils.decodePublicKeyFromBytes(pubKeyData: passportEncodedPublicKey!, params: ephemeralKeyPair) else { - throw NFCPassportReaderError.PACEError( "Step3 KeyEx", "Unable to decode passports ephemeral key" ) - } - - Log.verbose( "Received passports ephemeral public key - \(binToHexRep(passportEncodedPublicKey!, asArray: true))" ) - return (ephemeralKeyPair, passportPublicKey) - } - - /// This performs PACE Step 4 - Key Agreement. - /// Here the shared secret is computed from our ephemeral private key and the passports ephemeral public key - /// The new secure messaging (ksEnc and ksMac) keys are computed from the shared secret - /// An authentication token is generated from the passports public key and the computed ksMac key - /// Then, the authetication token is send to the passport, it returns its own computed authentication token - /// We then compute an expected authentication token from the ksMac key and our ephemeral public key - /// Finally we compare the recieved auth token to the expected token and if they are the same then PACE has succeeded! - /// - Parameters: - /// - pcdKeyPair: our ephemeral key pair - /// - passportPublicKey: passports ephemeral public key - /// - Returns: - /// - Tuple of KSEnc KSMac - func doStep4KeyAgreement( pcdKeyPair: OpaquePointer, passportPublicKey: OpaquePointer) async throws -> ([UInt8], [UInt8]) { - Log.debug( "Doing PACE Step4 Key Agreement...") - - Log.debug( "Computing shared secret...") - let sharedSecret = OpenSSLUtils.computeSharedSecret(privateKeyPair: pcdKeyPair, publicKey: passportPublicKey) - Log.verbose( "Shared secret - \(binToHexRep(sharedSecret, asArray:true))") - - Log.debug( "Deriving ksEnc and ksMac keys from shared secret") - let gen = SecureMessagingSessionKeyGenerator() - let encKey = try! gen.deriveKey(keySeed: sharedSecret, cipherAlgName: cipherAlg, keyLength: keyLength, mode: .ENC_MODE) - let macKey = try! gen.deriveKey(keySeed: sharedSecret, cipherAlgName: cipherAlg, keyLength: keyLength, mode: .MAC_MODE) - Log.verbose( "encKey - \(binToHexRep(encKey, asArray:true))") - Log.verbose( "macKey - \(binToHexRep(macKey, asArray:true))") - - // Step 4 - generate authentication token - Log.debug( "Generating authentication token") - guard let pcdAuthToken = try? generateAuthenticationToken( publicKey: passportPublicKey, macKey: macKey) else { - throw NFCPassportReaderError.PACEError( "Step3 KeyAgreement", "Unable to generate authentication token using passports public key" ) - } - Log.verbose( "authentication token - \(pcdAuthToken)") - - Log.debug( "Sending auth token to passport") - let step4Data = wrapDO(b:0x85, arr:pcdAuthToken) - let response = try await tagReader.sendGeneralAuthenticate(data:step4Data, isLast:true) - - let tvlResp = TKBERTLVRecord.sequenceOfRecords(from: Data(response.data))! - if tvlResp[0].tag != 0x86 { - Log.warning("Was expecting tag 0x86, found: \(binToHex(UInt8(tvlResp[0].tag)))") - } - // Calculate expected authentication token - let expectedPICCToken = try self.generateAuthenticationToken( publicKey: pcdKeyPair, macKey: macKey) - - Log.verbose( "Expecting authentication token from passport - \(expectedPICCToken)") - - let piccToken = [UInt8](tvlResp[0].value) - Log.verbose( "Received authentication token from passport - \(piccToken)") - - guard piccToken == expectedPICCToken else { - Log.error( "Error PICC Token mismatch!\npicToken - \(piccToken)\nexpectedPICCToken - \(expectedPICCToken)" ) - throw NFCPassportReaderError.PACEError( "Step3 KeyAgreement", "Error PICC Token mismatch!\npicToken - \(piccToken)\nexpectedPICCToken - \(expectedPICCToken)" ) - } - - Log.debug( "Auth token from passport matches expected token!" ) - - // This will be added for CAM when supported - // var encryptedChipAuthenticationData : [UInt8]? = nil - // if (sself.mappingType == PACEMappingType.CAM) { - // if tvlResp[1].tag != 0x8A { - // Log.warning("CAM: Was expecting tag 0x86, found: \(binToHex(UInt8(tvlResp[1].tag)))") - // } - // encryptedChipAuthenticationData = [UInt8](tvlResp[1].value) - // } - - // We're done! - return (encKey, macKey) - } - - /// Called once PACE has completed with the newly generated ksEnc and ksMac keys for restarting secure messaging - /// - Parameters: - /// - ksEnc: the computed encryption key derived from the key agreement - /// - ksMac: the computed mac key derived from the key agreement - func paceCompleted( ksEnc: [UInt8], ksMac: [UInt8] ) throws { - // Restart secure messaging - let ssc = withUnsafeBytes(of: 0.bigEndian, Array.init) - if (cipherAlg.hasPrefix("DESede")) { - Log.info( "Restarting secure messaging using DESede encryption") - let sm = SecureMessaging(encryptionAlgorithm: .DES, ksenc: ksEnc, ksmac: ksMac, ssc: ssc) - tagReader.secureMessaging = sm - } else if (cipherAlg.hasPrefix("AES")) { - Log.info( "Restarting secure messaging using AES encryption") - let sm = SecureMessaging(encryptionAlgorithm: .AES, ksenc: ksEnc, ksmac: ksMac, ssc: ssc) - tagReader.secureMessaging = sm - } else { - throw NFCPassportReaderError.PACEError( "PACECompleted", "Not restarting secure messaging as unsupported cipher algorithm requested - \(cipherAlg)" ) - } - } -} - -// MARK - PACEHandler Utility functions -@available(iOS 15, *) -extension PACEHandler { - - /// Does the DH key Mapping agreement - /// - Parameter mappingKey - Pointer to an EVP_PKEY structure containing the mapping key - /// - Parameter passportPublicKeyData - byte array containing the publick key read from the passport - /// - Parameter nonce - Pointer to an BIGNUM structure containing the unencrypted nonce - /// - Returns the EVP_PKEY containing the mapped ephemeral parameters - func doDHMappingAgreement( mappingKey : OpaquePointer, passportPublicKeyData: [UInt8], nonce: OpaquePointer ) throws -> OpaquePointer { - guard let dh_mapping_key = EVP_PKEY_get1_DH(mappingKey) else { - // Error - throw PACEHandlerError.DHKeyAgreementError( "Unable to get DH mapping key" ) - } - - // Compute the shared secret using the mapping key and the passports public mapping key - let bn = BN_bin2bn(passportPublicKeyData, Int32(passportPublicKeyData.count), nil) - defer { BN_free( bn ) } - - var secret = [UInt8](repeating: 0, count: Int(DH_size(dh_mapping_key))) - DH_compute_key( &secret, bn, dh_mapping_key) - - // Convert the secret to a bignum - let bn_h = BN_bin2bn(secret, Int32(secret.count), nil) - defer { BN_clear_free(bn_h) } - - // Initialize ephemeral parameters with parameters from the mapping key - guard let ephemeral_key = DHparams_dup(dh_mapping_key) else { - // Error - throw PACEHandlerError.DHKeyAgreementError("Unable to get initialise ephemeral parameters from DH mapping key") - } - defer{ DH_free(ephemeral_key) } - - var p : OpaquePointer? = nil - var q : OpaquePointer? = nil - var g : OpaquePointer? = nil - DH_get0_pqg(dh_mapping_key, &p, &q, &g) - - // map to new generator - guard let bn_g = BN_new() else { - throw PACEHandlerError.DHKeyAgreementError( "Unable to create bn_g" ) - } - defer{ BN_free(bn_g) } - guard let new_g = BN_new() else { - throw PACEHandlerError.DHKeyAgreementError( "Unable to create new_g" ) - } - defer{ BN_free(new_g) } - - // bn_g = g^nonce mod p - // ephemeral_key->g = bn_g mod p * h => (g^nonce mod p) * h mod p - let bn_ctx = BN_CTX_new() - guard BN_mod_exp(bn_g, g, nonce, p, bn_ctx) == 1, - BN_mod_mul(new_g, bn_g, bn_h, p, bn_ctx) == 1 else { - // Error - throw PACEHandlerError.DHKeyAgreementError( "Failed to generate new parameters" ) - } - - guard DH_set0_pqg(ephemeral_key, BN_dup(p), BN_dup(q), BN_dup(new_g)) == 1 else { - // Error - throw PACEHandlerError.DHKeyAgreementError( "Unable to set DH pqg paramerters" ) - } - - // Set the ephemeral params - guard let ephemeralParams = EVP_PKEY_new() else { - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to create ephemeral params" ) - } - - guard EVP_PKEY_set1_DH(ephemeralParams, ephemeral_key) == 1 else { - // Error - EVP_PKEY_free( ephemeralParams ) - throw PACEHandlerError.DHKeyAgreementError( "Unable to set ephemeral parameters" ) - } - return ephemeralParams - } - - /// Does the ECDH key Mapping agreement - /// - Parameter mappingKey - Pointer to an EVP_PKEY structure containing the mapping key - /// - Parameter passportPublicKeyData - byte array containing the publick key read from the passport - /// - Parameter nonce - Pointer to an BIGNUM structure containing the unencrypted nonce - /// - Returns the EVP_PKEY containing the mapped ephemeral parameters - func doECDHMappingAgreement( mappingKey : OpaquePointer, passportPublicKeyData: [UInt8], nonce: OpaquePointer ) throws -> OpaquePointer { - - let ec_mapping_key = EVP_PKEY_get1_EC_KEY(mappingKey) - - guard let group = EC_GROUP_dup(EC_KEY_get0_group(ec_mapping_key)) else { - // Error - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to get EC group" ) - } - defer { EC_GROUP_free(group) } - - guard let order = BN_new() else { - // Error - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to create order bignum" ) - } - defer { BN_free( order ) } - - guard let cofactor = BN_new() else { - // error - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to create cofactor bignum" ) - } - defer { BN_free( cofactor ) } - - guard EC_GROUP_get_order(group, order, nil) == 1 || - EC_GROUP_get_cofactor(group, cofactor, nil) == 1 else { - // Handle error - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to get order or cofactor from group" ) - } - - // Create the shared secret in the form of a ECPoint - - // Ideally I'd use OpenSSLUtls.computeSharedSecret for this but for reasons as yet unknown, it only returns the first 32 bytes - // NOT the full 64 bytes (would then convert to 65 with e header of 4 for uncompressed) - guard let sharedSecretMappingPoint = self.computeECDHMappingKeyPoint(privateKey: mappingKey, inputKey: passportPublicKeyData) else { - // Error - throw PACEHandlerError.ECDHKeyAgreementError( "Failed to compute new shared secret mapping point from mapping key and passport public mapping key" ) - } - defer { EC_POINT_free( sharedSecretMappingPoint ) } - - // Map the nonce using Generic mapping to get the new parameters (inc a new generator) - guard let newGenerater = EC_POINT_new(group) else { - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to create new mapping generator point" ) - } - defer{ EC_POINT_free(newGenerater) } - - // g = (generator * nonce) + (sharedSecretMappingPoint * 1) - guard EC_POINT_mul(group, newGenerater, nonce, sharedSecretMappingPoint, BN_value_one(), nil) == 1 else { - throw PACEHandlerError.ECDHKeyAgreementError( "Failed to map nonce to get new generator params" ) - } - - // Initialize ephemeral parameters with parameters from the mapping key - guard let ephemeralParams = EVP_PKEY_new() else { - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to create ephemeral params" ) - } - - let ephemeral_key = EC_KEY_dup(ec_mapping_key) - defer{ EC_KEY_free(ephemeral_key) } - - // configure the new EC_KEY - guard EVP_PKEY_set1_EC_KEY(ephemeralParams, ephemeral_key) == 1, - EC_GROUP_set_generator(group, newGenerater, order, cofactor) == 1, - EC_GROUP_check(group, nil) == 1, - EC_KEY_set_group(ephemeral_key, group) == 1 else { - // Error - - EVP_PKEY_free( ephemeralParams ) - throw PACEHandlerError.ECDHKeyAgreementError( "Unable to configure new ephemeral params" ) - } - return ephemeralParams - } - - /// Generate Authentication token from a publicKey and and a mac key - /// - Parameters: - /// - publicKey: An EVP_PKEY structure containing a public key data which will be used to generate the auth code - /// - macKey: The mac key derived from the key agreement - /// - Throws: An error if we are unable to encode the public key data - /// - Returns: The authentication token (8 bytes) - func generateAuthenticationToken( publicKey: OpaquePointer, macKey: [UInt8] ) throws -> [UInt8] { - var encodedPublicKeyData = try encodePublicKey(oid:self.paceOID, key:publicKey) - - if cipherAlg == "DESede" { - // If DESede (3DES), we need to pad the data - encodedPublicKeyData = pad(encodedPublicKeyData, blockSize: 8) - } - - Log.verbose( "Generating Authentication Token" ) - Log.verbose( "EncodedPubKey = \(binToHexRep(encodedPublicKeyData, asArray: true))" ) - Log.verbose( "macKey = \(binToHexRep(macKey, asArray: true))" ) - - let maccedPublicKeyDataObject = mac(algoName: cipherAlg == "DESede" ? .DES : .AES, key: macKey, msg: encodedPublicKeyData) - - // Take 8 bytes for auth token - let authToken = [UInt8](maccedPublicKeyDataObject[0..<8]) - Log.verbose( "Generated authToken = \(binToHexRep(authToken, asArray: true))" ) - return authToken - } - - /// Encodes a PublicKey as an TLV strucuture based on TR-SAC 1.01 4.5.1 and 4.5.2 - /// - Parameters: - /// - oid: The object identifier specifying the key type - /// - key: The ECP_PKEY public key to encode - /// - Throws: Error if unable to encode - /// - Returns: the encoded public key in tlv format - func encodePublicKey( oid : String, key : OpaquePointer ) throws -> [UInt8] { - let encodedOid = oidToBytes(oid:oid, replaceTag: false) - guard let pubKeyData = OpenSSLUtils.getPublicKeyData(from: key) else { - Log.error( "PACEHandler: encodePublicKey() - Unable to get public key data" ) - throw NFCPassportReaderError.InvalidDataPassed("Unable to get public key data") - } - - let keyType = EVP_PKEY_base_id( key ) - let tag : TKTLVTag - if keyType == EVP_PKEY_DH || keyType == EVP_PKEY_DHX { - tag = 0x84 - } else { - tag = 0x86 - } - - guard let encOid = TKBERTLVRecord(from: Data(encodedOid)) else { - throw NFCPassportReaderError.InvalidASN1Value - } - let encPub = TKBERTLVRecord(tag:tag, value: Data(pubKeyData)) - let record = TKBERTLVRecord(tag: 0x7F49, records:[encOid, encPub]) - let data = record.data - - return [UInt8](data) - } - - /// Computes a key seed based on an MRZ key - /// - Parameter the mrz key - /// - Returns a encoded key based on the mrz key that can be used for PACE - func createPaceKey( from mrzKey: String ) throws -> [UInt8] { - let buf: [UInt8] = Array(mrzKey.utf8) - let hash = calcSHA1Hash(buf) - - let smskg = SecureMessagingSessionKeyGenerator() - let key = try smskg.deriveKey(keySeed: hash, cipherAlgName: cipherAlg, keyLength: keyLength, nonce: nil, mode: .PACE_MODE, paceKeyReference: paceKeyType) - return key - } - - /// Performs the ECDH PACE GM key agreement protocol by multiplying a private key with a public key - /// - Parameters: - /// - key: an EVP_PKEY structure containng a ECDH private key - /// - inputKey: a public key - /// - Returns: a new EC_POINT - func computeECDHMappingKeyPoint( privateKey : OpaquePointer, inputKey : [UInt8] ) -> OpaquePointer? { - - let ecdh = EVP_PKEY_get1_EC_KEY(privateKey) - defer { EC_KEY_free(ecdh) } - - let privateECKey = EC_KEY_get0_private_key(ecdh) // BIGNUM - - // decode public key - guard let group = EC_KEY_get0_group(ecdh) else{ return nil } - guard let ecp = EC_POINT_new(group) else { return nil } - defer { EC_POINT_free(ecp) } - guard EC_POINT_oct2point(group, ecp, inputKey, inputKey.count,nil) != 0 else { return nil } - - // create our output point - let output = EC_POINT_new(group) - - // Multiply our private key with the passports public key to get a new point - EC_POINT_mul(group, output, nil, ecp, privateECKey, nil) - - return output - } -} - -#endif diff --git a/app/ios/AwesomeProject/PassportReader.swift b/app/ios/AwesomeProject/PassportReader.swift deleted file mode 100644 index 5f9499c6e..000000000 --- a/app/ios/AwesomeProject/PassportReader.swift +++ /dev/null @@ -1,405 +0,0 @@ -import Foundation - -#if !os(macOS) -import UIKit -import CoreNFC - -@available(iOS 15, *) -public class PassportReader : NSObject { - private typealias NFCCheckedContinuation = CheckedContinuation - private var nfcContinuation: NFCCheckedContinuation? - - private var passport : NFCPassportModel = NFCPassportModel() - - private var readerSession: NFCTagReaderSession? - private var currentlyReadingDataGroup : DataGroupId? - - private var dataGroupsToRead : [DataGroupId] = [] - private var readAllDatagroups = false - private var skipSecureElements = true - private var skipCA = false - private var skipPACE = false - - private var bacHandler : BACHandler? - private var caHandler : ChipAuthenticationHandler? - private var paceHandler : PACEHandler? - private var mrzKey : String = "" - private var dataAmountToReadOverride : Int? = nil - - private var scanCompletedHandler: ((NFCPassportModel?, NFCPassportReaderError?)->())! - private var nfcViewDisplayMessageHandler: ((NFCViewDisplayMessage) -> String?)? - private var masterListURL : URL? - private var shouldNotReportNextReaderSessionInvalidationErrorUserCanceled : Bool = false - - // By default, Passive Authentication uses the new RFS5652 method to verify the SOD, but can be switched to use - // the previous OpenSSL CMS verification if necessary - public var passiveAuthenticationUsesOpenSSL : Bool = false - - public init( logLevel: LogLevel = .info, masterListURL: URL? = nil ) { - super.init() - - Log.logLevel = logLevel - self.masterListURL = masterListURL - } - - public func setMasterListURL( _ masterListURL : URL ) { - self.masterListURL = masterListURL - } - - // This function allows you to override the amount of data the TagReader tries to read from the NFC - // chip. NOTE - this really shouldn't be used for production but is useful for testing as different - // passports support different data amounts. - // It appears that the most reliable is 0xA0 (160 chars) but some will support arbitary reads (0xFF or 256) - public func overrideNFCDataAmountToRead( amount: Int ) { - dataAmountToReadOverride = amount - } - - public func readPassport( mrzKey : String, tags : [DataGroupId] = [], skipSecureElements : Bool = true, skipCA : Bool = false, skipPACE : Bool = false, customDisplayMessage : ((NFCViewDisplayMessage) -> String?)? = nil) async throws -> NFCPassportModel { - - self.passport = NFCPassportModel() - self.mrzKey = mrzKey - self.skipCA = skipCA - self.skipPACE = skipPACE - - self.dataGroupsToRead.removeAll() - self.dataGroupsToRead.append( contentsOf:tags) - self.nfcViewDisplayMessageHandler = customDisplayMessage - self.skipSecureElements = skipSecureElements - self.currentlyReadingDataGroup = nil - self.bacHandler = nil - self.caHandler = nil - self.paceHandler = nil - - // If no tags specified, read all - if self.dataGroupsToRead.count == 0 { - // Start off with .COM, will always read (and .SOD but we'll add that after), and then add the others from the COM - self.dataGroupsToRead.append(contentsOf:[.COM, .SOD] ) - self.readAllDatagroups = true - } else { - // We are reading specific datagroups - self.readAllDatagroups = false - } - - guard NFCNDEFReaderSession.readingAvailable else { - throw NFCPassportReaderError.NFCNotSupported - } - - if NFCTagReaderSession.readingAvailable { - readerSession = NFCTagReaderSession(pollingOption: [.iso14443], delegate: self, queue: nil) - - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.requestPresentPassport ) - readerSession?.begin() - } - - return try await withCheckedThrowingContinuation({ (continuation: NFCCheckedContinuation) in - self.nfcContinuation = continuation - }) - } -} - -@available(iOS 15, *) -extension PassportReader : NFCTagReaderSessionDelegate { - // MARK: - NFCTagReaderSessionDelegate - public func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) { - // If necessary, you may perform additional operations on session start. - // At this point RF polling is enabled. - Log.debug( "tagReaderSessionDidBecomeActive" ) - } - - public func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { - // If necessary, you may handle the error. Note session is no longer valid. - // You must create a new session to restart RF polling. - Log.debug( "tagReaderSession:didInvalidateWithError - \(error.localizedDescription)" ) - self.readerSession?.invalidate() - self.readerSession = nil - - if let readerError = error as? NFCReaderError, readerError.code == NFCReaderError.readerSessionInvalidationErrorUserCanceled - && self.shouldNotReportNextReaderSessionInvalidationErrorUserCanceled { - - self.shouldNotReportNextReaderSessionInvalidationErrorUserCanceled = false - } else { - var userError = NFCPassportReaderError.UnexpectedError - if let readerError = error as? NFCReaderError { - Log.error( "tagReaderSession:didInvalidateWithError - Got NFCReaderError - \(readerError.localizedDescription)" ) - switch (readerError.code) { - case NFCReaderError.readerSessionInvalidationErrorUserCanceled: - Log.error( " - User cancelled session" ) - userError = NFCPassportReaderError.UserCanceled - default: - Log.error( " - some other error - \(readerError.localizedDescription)" ) - userError = NFCPassportReaderError.UnexpectedError - } - } else { - Log.error( "tagReaderSession:didInvalidateWithError - Received error - \(error.localizedDescription)" ) - } - nfcContinuation?.resume(throwing: userError) - nfcContinuation = nil - } - } - - public func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) { - Log.debug( "tagReaderSession:didDetect - \(tags[0])" ) - if tags.count > 1 { - Log.debug( "tagReaderSession:more than 1 tag detected! - \(tags)" ) - - let errorMessage = NFCViewDisplayMessage.error(.MoreThanOneTagFound) - self.invalidateSession(errorMessage: errorMessage, error: NFCPassportReaderError.MoreThanOneTagFound) - return - } - - let tag = tags.first! - var passportTag: NFCISO7816Tag - switch tags.first! { - case let .iso7816(tag): - passportTag = tag - default: - Log.debug( "tagReaderSession:invalid tag detected!!!" ) - - let errorMessage = NFCViewDisplayMessage.error(NFCPassportReaderError.TagNotValid) - self.invalidateSession(errorMessage:errorMessage, error: NFCPassportReaderError.TagNotValid) - return - } - - Task { [passportTag] in - do { - try await session.connect(to: tag) - - Log.debug( "tagReaderSession:connected to tag - starting authentication" ) - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.authenticatingWithPassport(0) ) - - let tagReader = TagReader(tag:passportTag) - - if let newAmount = self.dataAmountToReadOverride { - tagReader.overrideDataAmountToRead(newAmount: newAmount) - } - - tagReader.progress = { [unowned self] (progress) in - if let dgId = self.currentlyReadingDataGroup { - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.readingDataGroupProgress(dgId, progress) ) - } else { - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.authenticatingWithPassport(progress) ) - } - } - - let passportModel = try await self.startReading( tagReader : tagReader) - nfcContinuation?.resume(returning: passportModel) - nfcContinuation = nil - - - } catch let error as NFCPassportReaderError { - let errorMessage = NFCViewDisplayMessage.error(error) - self.invalidateSession(errorMessage: errorMessage, error: error) - } catch let error { - - nfcContinuation?.resume(throwing: error) - nfcContinuation = nil - Log.debug( "tagReaderSession:failed to connect to tag - \(error.localizedDescription)" ) - let errorMessage = NFCViewDisplayMessage.error(NFCPassportReaderError.ConnectionError) - self.invalidateSession(errorMessage: errorMessage, error: NFCPassportReaderError.ConnectionError) - } - } - } - - func updateReaderSessionMessage(alertMessage: NFCViewDisplayMessage ) { - self.readerSession?.alertMessage = self.nfcViewDisplayMessageHandler?(alertMessage) ?? alertMessage.description - } -} - -@available(iOS 15, *) -extension PassportReader { - - func startReading(tagReader : TagReader) async throws -> NFCPassportModel { - - if !skipPACE { - do { - let data = try await tagReader.readCardAccess() - Log.verbose( "Read CardAccess - data \(binToHexRep(data))" ) - let cardAccess = try CardAccess(data) - passport.cardAccess = cardAccess - - Log.info( "Starting Password Authenticated Connection Establishment (PACE)" ) - - let paceHandler = try PACEHandler( cardAccess: cardAccess, tagReader: tagReader ) - try await paceHandler.doPACE(mrzKey: mrzKey ) - passport.PACEStatus = .success - Log.debug( "PACE Succeeded" ) - } catch { - passport.PACEStatus = .failed - Log.error( "PACE Failed - falling back to BAC" ) - } - - _ = try await tagReader.selectPassportApplication() - } - - // If either PACE isn't supported, we failed whilst doing PACE or we didn't even attempt it, then fall back to BAC - if passport.PACEStatus != .success { - try await doBACAuthentication(tagReader : tagReader) - } - - // Now to read the datagroups - try await readDataGroups(tagReader: tagReader) - - self.updateReaderSessionMessage(alertMessage: NFCViewDisplayMessage.successfulRead) - - try await doActiveAuthenticationIfNeccessary(tagReader : tagReader) - self.shouldNotReportNextReaderSessionInvalidationErrorUserCanceled = true - self.readerSession?.invalidate() - - // If we have a masterlist url set then use that and verify the passport now - self.passport.verifyPassport(masterListURL: self.masterListURL, useCMSVerification: self.passiveAuthenticationUsesOpenSSL) - - return self.passport - } - - - func doActiveAuthenticationIfNeccessary( tagReader : TagReader) async throws { - guard self.passport.activeAuthenticationSupported else { - return - } - - Log.info( "Performing Active Authentication" ) - - let challenge = generateRandomUInt8Array(8) - Log.verbose( "Generated Active Authentication challange - \(binToHexRep(challenge))") - let response = try await tagReader.doInternalAuthentication(challenge: challenge) - self.passport.verifyActiveAuthentication( challenge:challenge, signature:response.data ) - } - - - func doBACAuthentication(tagReader : TagReader) async throws { - self.currentlyReadingDataGroup = nil - - Log.info( "Starting Basic Access Control (BAC)" ) - - self.passport.BACStatus = .failed - - self.bacHandler = BACHandler( tagReader: tagReader ) - try await bacHandler?.performBACAndGetSessionKeys( mrzKey: mrzKey ) - Log.info( "Basic Access Control (BAC) - SUCCESS!" ) - - self.passport.BACStatus = .success - } - - func readDataGroups( tagReader: TagReader ) async throws { - - // Read COM - var DGsToRead = [DataGroupId]() - - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.readingDataGroupProgress(.COM, 0) ) - if let com = try await readDataGroup(tagReader:tagReader, dgId:.COM) as? COM { - self.passport.addDataGroup( .COM, dataGroup:com ) - - // SOD and COM shouldn't be present in the DG list but just in case (worst case here we read the sod twice) - DGsToRead = [.SOD] + com.dataGroupsPresent.map { DataGroupId.getIDFromName(name:$0) } - DGsToRead.removeAll { $0 == .COM } - } - - if DGsToRead.contains( .DG14 ) { - DGsToRead.removeAll { $0 == .DG14 } - - if !skipCA { - // Do Chip Authentication - if let dg14 = try await readDataGroup(tagReader:tagReader, dgId:.DG14) as? DataGroup14 { - self.passport.addDataGroup( .DG14, dataGroup:dg14 ) - let caHandler = ChipAuthenticationHandler(dg14: dg14, tagReader: tagReader) - - if caHandler.isChipAuthenticationSupported { - do { - // Do Chip authentication and then continue reading datagroups - try await caHandler.doChipAuthentication() - self.passport.chipAuthenticationStatus = .success - } catch { - Log.info( "Chip Authentication failed - re-establishing BAC") - self.passport.chipAuthenticationStatus = .failed - - // Failed Chip Auth, need to re-establish BAC - try await doBACAuthentication(tagReader: tagReader) - } - } - } - } - } - - // If we are skipping secure elements then remove .DG3 and .DG4 - if self.skipSecureElements { - DGsToRead = DGsToRead.filter { $0 != .DG3 && $0 != .DG4 } - } - - if self.readAllDatagroups != true { - DGsToRead = DGsToRead.filter { dataGroupsToRead.contains($0) } - } - for dgId in DGsToRead { - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.readingDataGroupProgress(dgId, 0) ) - if let dg = try await readDataGroup(tagReader:tagReader, dgId:dgId) { - self.passport.addDataGroup( dgId, dataGroup:dg ) - } - } - } - - func readDataGroup( tagReader : TagReader, dgId : DataGroupId ) async throws -> DataGroup? { - - self.currentlyReadingDataGroup = dgId - Log.info( "Reading tag - \(dgId)" ) - var readAttempts = 0 - - self.updateReaderSessionMessage( alertMessage: NFCViewDisplayMessage.readingDataGroupProgress(dgId, 0) ) - - repeat { - do { - let response = try await tagReader.readDataGroup(dataGroup:dgId) - let dg = try DataGroupParser().parseDG(data: response) - return dg - } catch let error as NFCPassportReaderError { - Log.error( "TagError reading tag - \(error)" ) - - // OK we had an error - depending on what happened, we may want to try to re-read this - // E.g. we failed to read the last Datagroup because its protected and we can't - let errMsg = error.value - Log.error( "ERROR - \(errMsg)" ) - - var redoBAC = false - if errMsg == "Session invalidated" || errMsg == "Class not supported" || errMsg == "Tag connection lost" { - // Check if we have done Chip Authentication, if so, set it to nil and try to redo BAC - if self.caHandler != nil { - self.caHandler = nil - redoBAC = true - } else { - // Can't go any more! - throw error - } - } else if errMsg == "Security status not satisfied" || errMsg == "File not found" { - // Can't read this element as we aren't allowed - remove it and return out so we re-do BAC - self.dataGroupsToRead.removeFirst() - redoBAC = true - } else if errMsg == "SM data objects incorrect" || errMsg == "Class not supported" { - // Can't read this element security objects now invalid - and return out so we re-do BAC - redoBAC = true - } else if errMsg.hasPrefix( "Wrong length" ) || errMsg.hasPrefix( "End of file" ) { // Should now handle errors 0x6C xx, and 0x67 0x00 - // OK passport can't handle max length so drop it down - tagReader.reduceDataReadingAmount() - redoBAC = true - } - - if redoBAC { - // Redo BAC and try again - try await doBACAuthentication(tagReader : tagReader) - } else { - // Some other error lets have another try - } - } - readAttempts += 1 - } while ( readAttempts < 2 ) - - return nil - } - - func invalidateSession(errorMessage: NFCViewDisplayMessage, error: NFCPassportReaderError) { - // Mark the next 'invalid session' error as not reportable (we're about to cause it by invalidating the - // session). The real error is reported back with the call to the completed handler - self.shouldNotReportNextReaderSessionInvalidationErrorUserCanceled = true - self.readerSession?.invalidate(errorMessage: self.nfcViewDisplayMessageHandler?(errorMessage) ?? errorMessage.description) - nfcContinuation?.resume(throwing: error) - nfcContinuation = nil - } -} -#endif diff --git a/app/ios/AwesomeProject/ResponseAPDU.swift b/app/ios/AwesomeProject/ResponseAPDU.swift deleted file mode 100644 index 4ce6dceba..000000000 --- a/app/ios/AwesomeProject/ResponseAPDU.swift +++ /dev/null @@ -1,17 +0,0 @@ -#if !os(macOS) - -@available(iOS 13, *) -public struct ResponseAPDU { - - public var data : [UInt8] - public var sw1 : UInt8 - public var sw2 : UInt8 - - public init(data: [UInt8], sw1: UInt8, sw2: UInt8) { - self.data = data - self.sw1 = sw1 - self.sw2 = sw2 - } -} - -#endif diff --git a/app/ios/AwesomeProject/SecureMessaging.swift b/app/ios/AwesomeProject/SecureMessaging.swift deleted file mode 100644 index 7b3d9e3e0..000000000 --- a/app/ios/AwesomeProject/SecureMessaging.swift +++ /dev/null @@ -1,292 +0,0 @@ -import Foundation - -public enum SecureMessagingSupportedAlgorithms { - case DES - case AES -} - -#if !os(macOS) -import CoreNFC - - -/// This class implements the secure messaging protocol. -/// The class is a new layer that comes between the reader and the iso7816. -/// It gives a new transmit method that takes an APDU object formed by the iso7816 layer, -/// ciphers it following the doc9303 specification, sends the ciphered APDU to the reader -/// layer and returns the unciphered APDU. -@available(iOS 13, *) -public class SecureMessaging { - private var ksenc : [UInt8] - private var ksmac : [UInt8] - private var ssc : [UInt8] - private let algoName : SecureMessagingSupportedAlgorithms - private let padLength : Int - - public init( encryptionAlgorithm : SecureMessagingSupportedAlgorithms = .DES, ksenc : [UInt8], ksmac : [UInt8], ssc : [UInt8]) { - self.ksenc = ksenc - self.ksmac = ksmac - self.ssc = ssc - self.algoName = encryptionAlgorithm - self.padLength = algoName == .DES ? 8 : 16 - } - - /// Protect the apdu following the doc9303 specification - func protect(apdu : NFCISO7816APDU ) throws -> NFCISO7816APDU { - - Log.verbose("\t\tSSC: " + binToHexRep(self.ssc)) - self.ssc = self.incSSC() - let paddedSSC = algoName == .DES ? self.ssc : [UInt8](repeating: 0, count: 8) + ssc - Log.verbose("\tIncrement SSC with 1") - Log.verbose("\t\tSSC: " + binToHexRep(self.ssc)) - - - let cmdHeader = self.maskClassAndPad(apdu: apdu) - var do87 : [UInt8] = [] - var do97 : [UInt8] = [] - - var tmp = "Concatenate CmdHeader" - if apdu.data != nil { - tmp += " and DO87" - do87 = try self.buildD087(apdu: apdu) - } - - let isMSE = apdu.instructionCode == 0x22 - if apdu.expectedResponseLength > 0 && (isMSE ? apdu.expectedResponseLength < 256 : true) { - tmp += " and DO97" - do97 = try self.buildD097(apdu: apdu) - } - - let M = cmdHeader + do87 + do97 - Log.verbose(tmp) - Log.verbose("\tM: " + binToHexRep(M)) - - Log.verbose("Compute MAC of M") - - let N = pad(paddedSSC + M, blockSize:padLength) - Log.verbose("\tConcatenate SSC and M and add padding") - Log.verbose("\t\tN: " + binToHexRep(N)) - - var CC = mac(algoName: algoName, key: self.ksmac, msg: N) - if CC.count > 8 { - CC = [UInt8](CC[0..<8]) - } - Log.verbose("\tCompute MAC over N with KSmac") - Log.verbose("\t\tCC: " + binToHexRep(CC)) - - let do8e = self.buildD08E(mac: CC) - - // If dataSize > 255 then it will be encoded in 3 bytes with the first byte being 0x00 - // otherwise its a single byte of size - let size = do87.count + do97.count + do8e.count - var dataSize: [UInt8] - if size > 255 { - dataSize = [0x00] + intToBin(size, pad: 4) - } else { - dataSize = intToBin(size) - } - var protectedAPDU = [UInt8](cmdHeader[0..<4]) + dataSize - protectedAPDU += do87 + do97 + do8e - - // If the data is more that 255, specify the we are using extended length (0x00, 0x00) - // Thanks to @filom for the fix! - if size > 255 { - protectedAPDU += [0x00,0x00] - } else { - protectedAPDU += [0x00] - } - Log.verbose("Construct and send protected APDU") - Log.verbose("\tProtectedAPDU: " + binToHexRep(protectedAPDU)) - - let newAPDU = NFCISO7816APDU(data:Data(protectedAPDU))! - return newAPDU - } - - /// Unprotect the APDU following the iso7816 specification - func unprotect(rapdu : ResponseAPDU ) throws -> ResponseAPDU { - var needCC = false - var do87 : [UInt8] = [] - var do87Data : [UInt8] = [] - var do99 : [UInt8] = [] - //var do8e : [UInt8] = [] - var offset = 0 - - self.ssc = self.incSSC() - let paddedSSC = algoName == .DES ? self.ssc : [UInt8](repeating: 0, count: 8) + ssc - Log.verbose("\tIncrement SSC with 1") - Log.verbose("\t\tSSC: " + binToHexRep(self.ssc)) - - // Check for a SM error - if(rapdu.sw1 != 0x90 || rapdu.sw2 != 0x00) { - return rapdu - } - - let rapduBin = rapdu.data + [rapdu.sw1, rapdu.sw2] - Log.verbose("Receive response APDU of MRTD's chip") - Log.verbose("\tRAPDU: " + binToHexRep(rapduBin)) - - // DO'87' - // Mandatory if data is returned, otherwise absent - if rapduBin[0] == 0x87 { - let (encDataLength, o) = try asn1Length([UInt8](rapduBin[1...])) - offset = 1 + o - - if rapduBin[offset] != 0x1 { - throw NFCPassportReaderError.D087Malformed - } - - do87 = [UInt8](rapduBin[0 ..< offset + Int(encDataLength)]) - do87Data = [UInt8](rapduBin[offset+1 ..< offset + Int(encDataLength)]) - offset += Int(encDataLength) - needCC = true - } - - //DO'99' - // Mandatory, only absent if SM error occurs - guard rapduBin.count >= offset + 5 else { - print("size error") - let returnSw1 = (rapduBin.count >= offset+3) ? rapduBin[offset+2] : 0; - let returnSw2 = (rapduBin.count >= offset+4) ? rapduBin[offset+3] : 0; - return ResponseAPDU(data: [], sw1: returnSw1, sw2: returnSw2); - } - - do99 = [UInt8](rapduBin[offset.. 0 { - tmp += " DO'87" - } - if do99.count > 0 { - tmp += " DO'99" - } - Log.verbose("Verify RAPDU CC by computing MAC of" + tmp) - - let K = pad(paddedSSC + do87 + do99, blockSize:padLength) - Log.verbose("\tConcatenate SSC and" + tmp + " and add padding") - Log.verbose("\t\tK: " + binToHexRep(K)) - - Log.verbose("\tCompute MAC with KSmac") - var CCb = mac(algoName: algoName, key: self.ksmac, msg: K) - if CCb.count > 8 { - CCb = [UInt8](CC[0..<8]) - } - Log.verbose("\t\tCC: " + binToHexRep(CCb)) - - let res = (CC == CCb) - Log.verbose("\tCompare CC with data of DO'8E of RAPDU") - Log.verbose("\t\t\(binToHexRep(CC)) == \(binToHexRep(CCb)) ? \(res)") - - if !res { - throw NFCPassportReaderError.InvalidResponseChecksum - } - } - else if needCC { - throw NFCPassportReaderError.MissingMandatoryFields - } - - var data : [UInt8] = [] - if do87Data.count > 0 { - - let dec : [UInt8] - if algoName == .DES { - dec = tripleDESDecrypt(key: self.ksenc, message: do87Data, iv: [0,0,0,0,0,0,0,0]) - } else { - // for AES the IV is the ssc with AES/EBC/NOPADDING - let paddedssc = [UInt8](repeating: 0, count: 8) + ssc - let iv = AESECBEncrypt(key: ksenc, message: paddedssc) - dec = AESDecrypt(key: self.ksenc, message: do87Data, iv: iv) - } - - // There is a payload - data = unpad(dec) - Log.verbose("Decrypt data of DO'87 with KSenc") - Log.verbose("\tDecryptedData: " + binToHexRep(data)) - } - - Log.verbose("Unprotected APDU: [\(binToHexRep(data))] \(binToHexRep(sw1)) \(binToHexRep(sw2))" ) - return ResponseAPDU(data: data, sw1: sw1, sw2: sw2) - } - - func maskClassAndPad(apdu : NFCISO7816APDU ) -> [UInt8] { - Log.verbose("Mask class byte and pad command header") - let res = pad([0x0c, apdu.instructionCode, apdu.p1Parameter, apdu.p2Parameter], blockSize: padLength) - Log.verbose("\tCmdHeader: " + binToHexRep(res)) - return res - } - - func buildD087(apdu : NFCISO7816APDU) throws -> [UInt8] { - let cipher = [0x01] + self.padAndEncryptData(apdu) - let res = try [0x87] + toAsn1Length(cipher.count) + cipher - Log.verbose("Build DO'87") - Log.verbose("\tDO87: " + binToHexRep(res)) - return res - } - - func padAndEncryptData(_ apdu : NFCISO7816APDU) -> [UInt8] { - // Pad the data, encrypt data with KSenc and build DO'87 - let data = [UInt8](apdu.data!) - let paddedData = pad( data, blockSize: padLength ) - - let enc : [UInt8] - if algoName == .DES { - enc = tripleDESEncrypt(key: self.ksenc, message: paddedData, iv: [0,0,0,0,0,0,0,0]) - } else { - // for AES the IV is the ssc with AES/EBC/NOPADDING - let paddedssc = [UInt8](repeating: 0, count: 8) + ssc - let iv = AESECBEncrypt(key: ksenc, message: paddedssc) - enc = AESEncrypt(key: self.ksenc, message: paddedData, iv: iv) - } - - Log.verbose("Pad data") - Log.verbose("\tData: " + binToHexRep(paddedData)) - Log.verbose("Encrypt data with KSenc") - Log.verbose("\tEncryptedData: " + binToHexRep(enc)) - return enc - } - - func incSSC() -> [UInt8] { - let val = binToHex(self.ssc) + 1 - - // This needs to be fully zero padded - to 8 bytes = i.e. if SSC is 1 it should return [0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1] - // NOT [0x1] - return withUnsafeBytes(of: val.bigEndian, Array.init) - } - - func buildD08E(mac : [UInt8]) -> [UInt8] { - let res : [UInt8] = [0x8E, UInt8(mac.count)] + mac - Log.verbose("Build DO'8E") - Log.verbose("\tDO8E: \(binToHexRep(res))" ) - return res - } - - func buildD097(apdu : NFCISO7816APDU) throws -> [UInt8] { - let le = apdu.expectedResponseLength - var binLe = intToBin(le) - if (le == 256 || le == 65536) { - binLe = [0x00] + (le > 256 ? [0x00] : []) - } - - let res : [UInt8] = try [0x97] + toAsn1Length(binLe.count) + binLe - Log.verbose("Build DO'97") - Log.verbose("\tDO97: \(res)") - return res - } - -} -#endif diff --git a/app/ios/AwesomeProject/SecureMessagingSessionKeyGenerator.swift b/app/ios/AwesomeProject/SecureMessagingSessionKeyGenerator.swift deleted file mode 100644 index 01d8f5699..000000000 --- a/app/ios/AwesomeProject/SecureMessagingSessionKeyGenerator.swift +++ /dev/null @@ -1,149 +0,0 @@ -import Foundation - -import CryptoKit - -@available(iOS 13, macOS 10.15, *) -class SecureMessagingSessionKeyGenerator { - static let NO_PACE_KEY_REFERENCE : UInt8 = 0x00 - enum SMSMode : UInt8 { - case ENC_MODE = 0x1; - case MAC_MODE = 0x2; - case PACE_MODE = 0x3; - } - - /// Derives the ENC or MAC key for BAC from the keySeed. - /// - Parameter keySeed the key seed. - /// - Parameter mode either ENC_MODE or MAC_MODE - /// - Returns the key. - /// - Throws InvalidDataPassed on data error - func deriveKey( keySeed : [UInt8], mode : SMSMode) throws -> [UInt8] { - return try deriveKey(keySeed: keySeed, cipherAlgName: "DESede", keyLength: 128, mode: mode); - } - - /// Derives the ENC or MAC key for BAC or PACE or CA. - /// - Parameter keySeed the key seed. - /// - Parameter cipherAlgName either AES or DESede - /// - Parameter keyLength key length in bits - /// - Parameter mode either {@code ENC_MODE}, {@code MAC_MODE}, or {@code PACE_MODE} - /// - Returns the key. - /// - Throws InvalidDataPassed on data error - func deriveKey(keySeed : [UInt8], cipherAlgName :String, keyLength : Int, mode : SMSMode) throws -> [UInt8] { - return try deriveKey(keySeed: keySeed, cipherAlgName: cipherAlgName, keyLength: keyLength, nonce: nil, mode: mode); - } - - /// Derives the ENC or MAC key for BAC or PACE or CA. - /// - Parameter keySeed the shared secret, as octets - /// - Parameter cipherAlg in Java mnemonic notation (for example "DESede", "AES") - /// - Parameter keyLength length in bits - /// - Parameter nonce optional nonce or nil - /// - Parameter mode the mode either {@code ENC}, {@code MAC}, or {@code PACE} mode - /// - Returns the key. - /// - Throws InvalidDataPassed on data error - func deriveKey(keySeed : [UInt8], cipherAlgName :String, keyLength : Int, nonce : [UInt8]? = nil, mode : SMSMode) throws -> [UInt8] { - return try deriveKey(keySeed: keySeed, cipherAlgName: cipherAlgName, keyLength: keyLength, nonce: nonce, mode: mode, paceKeyReference: SecureMessagingSessionKeyGenerator.NO_PACE_KEY_REFERENCE); - } - - /// Derives the ENC or MAC key for BAC or PACE or CA. - /// - Parameter keySeed the shared secret, as octets - /// - Parameter cipherAlg in Java mnemonic notation (for example "DESede", "AES") - /// - Parameter keyLength length in bits - /// - Parameter nonce optional nonce or null - /// - Parameter mode the mode either {@code ENC}, {@code MAC}, or {@code PACE} mode - /// - Parameter paceKeyReference Key Reference For Pace Protocol - /// - Returns the key. - /// - Throws InvalidDataPassed on data error - func deriveKey(keySeed : [UInt8], cipherAlgName :String, keyLength : Int, nonce : [UInt8]?, mode : SMSMode, paceKeyReference : UInt8) throws -> [UInt8] { - let digestAlgo = try inferDigestAlgorithmFromCipherAlgorithmForKeyDerivation(cipherAlg: cipherAlgName, keyLength: keyLength); - - let modeArr : [UInt8] = [0x00, 0x00, 0x00, mode.rawValue] - var dataEls = [Data(keySeed)] - if let nonce = nonce { - dataEls.append( Data(nonce) ) - } - dataEls.append( Data(modeArr) ) - let hashResult = try getHash(algo: digestAlgo, dataElements: dataEls) - - var keyBytes : [UInt8] - if cipherAlgName == "DESede" || cipherAlgName == "3DES" { - // TR-SAC 1.01, 4.2.1. - switch(keyLength) { - case 112, 128: - // Copy E (Octects 1 to 8), D (Octects 9 to 16), E (again Octects 1 to 8), 112-bit 3DES key - keyBytes = [UInt8](hashResult[0..<16] + hashResult[0..<8]) - break; - default: - throw NFCPassportReaderError.InvalidDataPassed("Can only use DESede with 128-but key length") - } - } else if cipherAlgName.lowercased() == "aes" || cipherAlgName.lowercased().hasPrefix("aes") { - // TR-SAC 1.01, 4.2.2. - switch(keyLength) { - case 128: - keyBytes = [UInt8](hashResult[0..<16]) // NOTE: 128 = 16 * 8 - case 192: - keyBytes = [UInt8](hashResult[0..<24]) // NOTE: 192 = 24 * 8 - case 256: - keyBytes = [UInt8](hashResult[0..<32]) // NOTE: 256 = 32 * 8 - default: - throw NFCPassportReaderError.InvalidDataPassed("Can only use AES with 128-bit, 192-bit key or 256-bit length") - } - } else { - throw NFCPassportReaderError.InvalidDataPassed( "Unsupported cipher algorithm used" ) - } - - return keyBytes - } - - func inferDigestAlgorithmFromCipherAlgorithmForKeyDerivation( cipherAlg : String, keyLength : Int) throws -> String { - if cipherAlg == "DESede" || cipherAlg == "AES-128" { - return "SHA1"; - } - if cipherAlg == "AES" && keyLength == 128 { - return "SHA1"; - } - if cipherAlg == "AES-256" || cipherAlg == "AES-192" { - return "SHA256"; - } - if cipherAlg == "AES" && (keyLength == 192 || keyLength == 256) { - return "SHA256"; - } - - throw NFCPassportReaderError.InvalidDataPassed("Unsupported cipher algorithm or key length") - } - - /// This generates a SHA-X hash based on the passed in algo. - /// There must be a more generic way to do this? - func getHash(algo: String, dataElements:[Data] ) throws -> [UInt8] { - var hash : [UInt8] - - let algo = algo.lowercased() - if algo == "sha1" { - var hasher = Insecure.SHA1() - for d in dataElements { - hasher.update( data:d ) - } - hash = Array(hasher.finalize()) - } else if algo == "sha256" { - var hasher = SHA256() - for d in dataElements { - hasher.update( data:d ) - } - hash = Array(hasher.finalize()) - } else if algo == "sha384" { - var hasher = SHA384() - for d in dataElements { - hasher.update( data:d ) - } - hash = Array(hasher.finalize()) - } else if algo == "sha512" { - var hasher = SHA512() - for d in dataElements { - hasher.update( data:d ) - } - hash = Array(hasher.finalize()) - } else { - throw NFCPassportReaderError.InvalidHashAlgorithmSpecified - } - - return hash - } -} diff --git a/app/ios/AwesomeProject/SimpleASN1DumpParser.swift b/app/ios/AwesomeProject/SimpleASN1DumpParser.swift deleted file mode 100644 index 90196b4d9..000000000 --- a/app/ios/AwesomeProject/SimpleASN1DumpParser.swift +++ /dev/null @@ -1,166 +0,0 @@ -import Foundation -import OpenSSL - -@available(iOS 13, macOS 10.15, *) -public class ASN1Item : CustomDebugStringConvertible { - var pos : Int = -1 - var depth : Int = -1 - var headerLen : Int = -1 - var length : Int = -1 - var itemType : String = "" // Primative or Constructed (prim or cons) - var type : String = "" // Actual type of the value ( object, set, etc) - var value : String = "" - var line : String = "" - var parent : ASN1Item? = nil - - private var children = [ASN1Item] () - - public init( line : String) { - self.line = line - - let scanner = Scanner(string: line) - - let space = CharacterSet(charactersIn: " =:") - let equals = CharacterSet(charactersIn: "= ") - let colon = CharacterSet(charactersIn: ":") - let end = CharacterSet(charactersIn: "\n") - - scanner.charactersToBeSkipped = space - self.pos = scanner.scanInt() ?? -1 - _ = scanner.scanUpToCharacters(from: equals) - self.depth = scanner.scanInt() ?? -1 - _ = scanner.scanUpToCharacters(from: equals) - self.headerLen = scanner.scanInt() ?? -1 - _ = scanner.scanUpToCharacters(from: equals) - self.length = scanner.scanInt() ?? -1 - self.itemType = scanner.scanUpToCharacters(from: colon) ?? "" - let rest = scanner.scanUpToCharacters(from: end)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - - if itemType == "cons" { - type = rest - - } else { - let items = rest.components(separatedBy: ":" ).filter{ !$0.isEmpty } - self.type = items[0].trimmingCharacters(in: .whitespacesAndNewlines) - if ( items.count > 1 ) { - self.value = items[1].trimmingCharacters(in: .whitespacesAndNewlines) - } - } - } - - func addChild( _ child : ASN1Item ) { - child.parent = self - self.children.append( child ) - } - - public func getChild( _ child : Int ) -> ASN1Item? { - if ( child < children.count ) { - return children[child] - } else { - return nil - } - } - - public func getNumberOfChildren() -> Int { - return children.count - } - - public var debugDescription: String { - var ret = "pos:\(pos), d=\(depth), hl=\(headerLen), l=\(length): \(itemType): \(type) \(value)\n" - children.forEach { ret += $0.debugDescription } - return ret - } -} - -/// Very very basic ASN1 parser class - uses OpenSSL to dump an ASN1 structure to a string, and then parses that out into -/// a tree based hieracy of ASN1Item structures - depth based -@available(iOS 13, macOS 10.15, *) -public class SimpleASN1DumpParser { - public init() { - - } - - public func parse( data: Data ) throws -> ASN1Item { - var parsed : String = "" - - - let _ = try data.withUnsafeBytes { (ptr) in - guard let out = BIO_new(BIO_s_mem()) else { throw OpenSSLError.UnableToParseASN1("Unable to allocate output buffer") } - defer { BIO_free(out) } - - let rc = ASN1_parse_dump(out, ptr.baseAddress?.assumingMemoryBound(to: UInt8.self), data.count, 0, 0) - if rc == 0 { - throw OpenSSLError.UnableToParseASN1("Failed to parse ASN1 Data") - } - - parsed = OpenSSLUtils.bioToString(bio: out) - } - - let lines = parsed.components(separatedBy: "\n") - let topItem : ASN1Item? = parseLines( lines:lines) - - guard let ret = topItem else { - throw OpenSSLError.UnableToParseASN1("Failed to format ASN1 Data") - } - - return ret - } - - func parseLines( lines : [String] ) -> ASN1Item? { - var topItem : ASN1Item? - - var currentParent : ASN1Item? - for line in lines { - if line.trimmingCharacters(in: .whitespacesAndNewlines) == "" { - continue - } - let item = ASN1Item(line: line) - if item.depth == 0 { - topItem = item - } else if item.depth == currentParent!.depth { - currentParent!.parent!.addChild( item ) - } else if item.depth > currentParent!.depth { - currentParent!.addChild( item ) - } else { - repeat { - currentParent = currentParent!.parent - } while currentParent!.depth > item.depth-1 && currentParent!.depth != 0 - if currentParent!.depth == item.depth-1 { - currentParent!.addChild( item ) - } - } - currentParent = item - } - - return topItem - } - - public func test() { - let lines = [ - " 0:d=0 hl=4 l= 758 cons: SET ", - " 662:d=1 hl=2 l= 18 cons: SEQUENCE ", - " 664:d=2 hl=2 l= 10 prim: OBJECT :0.4.0.127.0.7.2.2.3.2.4", - " 676:d=2 hl=2 l= 1 prim: INTEGER :01", - " 679:d=2 hl=2 l= 1 prim: INTEGER :01", - " 682:d=1 hl=2 l= 18 cons: SEQUENCE ", - " 684:d=2 hl=2 l= 10 prim: OBJECT :0.4.0.127.0.7.2.2.3.2.1", - " 696:d=2 hl=2 l= 1 prim: INTEGER :01", - " 699:d=2 hl=2 l= 1 prim: INTEGER :02", - " 702:d=1 hl=2 l= 13 cons: SEQUENCE ", - " 704:d=2 hl=2 l= 8 prim: OBJECT :0.4.0.127.0.7.2.2.2", - " 714:d=2 hl=2 l= 1 prim: INTEGER :01", - " 717:d=1 hl=2 l= 18 cons: SEQUENCE ", - " 719:d=2 hl=2 l= 10 prim: OBJECT :0.4.0.127.0.7.2.2.4.2.4", - " 731:d=2 hl=2 l= 1 prim: INTEGER :02", - " 734:d=2 hl=2 l= 1 prim: INTEGER :0D", - " 737:d=1 hl=2 l= 23 cons: SEQUENCE ", - " 739:d=2 hl=2 l= 6 prim: OBJECT :2.23.136.1.1.5", - " 747:d=2 hl=2 l= 1 prim: INTEGER :01", - " 750:d=2 hl=2 l= 10 prim: OBJECT :0.4.0.127.0.7.1.1.4.1.3", - "" - ] - - let topItem = parseLines( lines:lines ) - print( topItem?.debugDescription ?? "" ) - } -} diff --git a/app/ios/AwesomeProject/TagReader.swift b/app/ios/AwesomeProject/TagReader.swift deleted file mode 100644 index ef9c786a7..000000000 --- a/app/ios/AwesomeProject/TagReader.swift +++ /dev/null @@ -1,349 +0,0 @@ -import Foundation - -#if !os(macOS) -import CoreNFC - -@available(iOS 15, *) -public class TagReader { - var tag : NFCISO7816Tag - var secureMessaging : SecureMessaging? - var maxDataLengthToRead : Int = 0xA0 // Should be able to use 256 to read arbitrary amounts of data at full speed BUT this isn't supported across all passports so for reliability just use the smaller amount. - - var progress : ((Int)->())? - - init( tag: NFCISO7816Tag ) { - self.tag = tag - } - - func overrideDataAmountToRead( newAmount : Int ) { - maxDataLengthToRead = newAmount - } - - func reduceDataReadingAmount() { - if maxDataLengthToRead > 0xA0 { - maxDataLengthToRead = 0xA0 - } - } - - - func readDataGroup( dataGroup: DataGroupId ) async throws -> [UInt8] { - guard let tag = dataGroup.getFileIDTag() else { - throw NFCPassportReaderError.UnsupportedDataGroup - } - - return try await selectFileAndRead(tag: tag ) - } - - func getChallenge() async throws -> ResponseAPDU{ - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x84, p1Parameter: 0, p2Parameter: 0, data: Data(), expectedResponseLength: 8) - - return try await send( cmd: cmd ) - } - - func doInternalAuthentication( challenge: [UInt8] ) async throws -> ResponseAPDU { - let randNonce = Data(challenge) - - let cmd = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x88, p1Parameter: 0, p2Parameter: 0, data: randNonce, expectedResponseLength: 256) - - return try await send( cmd: cmd ) - } - - func doMutualAuthentication( cmdData : Data ) async throws -> ResponseAPDU{ - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x82, p1Parameter: 0, p2Parameter: 0, data: cmdData, expectedResponseLength: 256) - - return try await send( cmd: cmd ) - } - - /// The MSE KAT APDU, see EAC 1.11 spec, Section B.1. - /// This command is sent in the "DESede" case. - /// - Parameter keyData key data object (tag 0x91) - /// - Parameter idData key id data object (tag 0x84), can be null - /// - Parameter completed the complete handler - returns the success response or an error - func sendMSEKAT( keyData : Data, idData: Data? ) async throws -> ResponseAPDU { - - var data = keyData - if let idData = idData { - data += idData - } - - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x22, p1Parameter: 0x41, p2Parameter: 0xA6, data: data, expectedResponseLength: 256) - - return try await send( cmd: cmd ) - } - - /// The MSE Set AT for Chip Authentication. - /// This command is the first command that is sent in the "AES" case. - /// For Chip Authentication. We prefix 0x80 for OID and 0x84 for keyId. - /// - /// NOTE THIS IS CURRENTLY UNTESTED - /// - Parameter oid the OID - /// - Parameter keyId the keyId or {@code null} - /// - Parameter completed the complete handler - returns the success response or an error - func sendMSESetATIntAuth( oid: String, keyId: Int? ) async throws -> ResponseAPDU { - - let cmd : NFCISO7816APDU - let oidBytes = oidToBytes(oid: oid, replaceTag: true) - - if let keyId = keyId, keyId != 0 { - let keyIdBytes = wrapDO(b:0x84, arr:intToBytes(val:keyId, removePadding: true)) - let data = oidBytes + keyIdBytes - - cmd = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x22, p1Parameter: 0x41, p2Parameter: 0xA4, data: Data(data), expectedResponseLength: 256) - - } else { - cmd = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x22, p1Parameter: 0x41, p2Parameter: 0xA4, data: Data(oidBytes), expectedResponseLength: 256) - } - - return try await send( cmd: cmd ) - } - - func sendMSESetATMutualAuth( oid: String, keyType: UInt8 ) async throws -> ResponseAPDU { - - let oidBytes = oidToBytes(oid: oid, replaceTag: true) - let keyTypeBytes = wrapDO( b: 0x83, arr:[keyType]) - - let data = oidBytes + keyTypeBytes - - let cmd = NFCISO7816APDU(instructionClass: 00, instructionCode: 0x22, p1Parameter: 0xC1, p2Parameter: 0xA4, data: Data(data), expectedResponseLength: -1) - - return try await send( cmd: cmd ) - } - - - /// Sends a General Authenticate command. - /// This command is the second command that is sent in the "AES" case. - /// - Parameter data data to be sent, without the {@code 0x7C} prefix (this method will add it) - /// - Parameter lengthExpected the expected length defaults to 256 - /// - Parameter isLast indicates whether this is the last command in the chain - /// - Parameter completed the complete handler - returns the dynamic authentication data without the {@code 0x7C} prefix (this method will remove it) or an error - func sendGeneralAuthenticate( data : [UInt8], lengthExpected : Int = 256, isLast: Bool) async throws -> ResponseAPDU { - - let wrappedData = wrapDO(b:0x7C, arr:data) - let commandData = Data(wrappedData) - - // NOTE: Support of Protocol Response Data is CONDITIONAL: - // It MUST be provided for version 2 but MUST NOT be provided for version 1. - // So, we are expecting 0x7C (= tag), 0x00 (= length) here. - - // 0x10 is class command chaining - let instructionClass : UInt8 = isLast ? 0x00 : 0x10 - let INS_BSI_GENERAL_AUTHENTICATE : UInt8 = 0x86 - - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: instructionClass, instructionCode: INS_BSI_GENERAL_AUTHENTICATE, p1Parameter: 0x00, p2Parameter: 0x00, data: commandData, expectedResponseLength: lengthExpected) - var response : ResponseAPDU - do { - response = try await send( cmd: cmd ) - response.data = try unwrapDO( tag:0x7c, wrappedData:response.data) - } catch { - // If wrong length error - if case NFCPassportReaderError.ResponseError(_, let sw1, let sw2) = error, - sw1 == 0x67, sw2 == 0x00 { - - // Resend - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: instructionClass, instructionCode: INS_BSI_GENERAL_AUTHENTICATE, p1Parameter: 0x00, p2Parameter: 0x00, data: commandData, expectedResponseLength: 256) - response = try await send( cmd: cmd ) - response.data = try unwrapDO( tag:0x7c, wrappedData:response.data) - } else { - throw error - } - } - return response - } - - - func selectFileAndRead( tag: [UInt8]) async throws -> [UInt8] { - var resp = try await selectFile(tag: tag ) - - // Read first 4 bytes of header to see how big the data structure is - guard let readHeaderCmd = NFCISO7816APDU(data:Data([0x00, 0xB0, 0x00, 0x00, 0x00, 0x00,0x04])) else { - throw NFCPassportReaderError.UnexpectedError - } - resp = try await self.send( cmd: readHeaderCmd ) - - // Header looks like: e.g.60145F01 - - // the total length is the 2nd value plus the two header 2 bytes - // We've read 4 bytes so we now need to read the remaining bytes from offset 4 - let (len, o) = try! asn1Length([UInt8](resp.data[1..<4])) - var remaining = Int(len) - var amountRead = o + 1 - - var data = [UInt8](resp.data[.. 0 { - if maxDataLengthToRead != 256 && remaining < maxDataLengthToRead { - readAmount = remaining - } - - self.progress?( Int(Float(amountRead) / Float(remaining+amountRead ) * 100)) - let offset = intToBin(amountRead, pad:4) - - Log.verbose( "TagReader - data bytes remaining: \(remaining), will read : \(readAmount)" ) - let cmd = NFCISO7816APDU( - instructionClass: 00, - instructionCode: 0xB0, - p1Parameter: offset[0], - p2Parameter: offset[1], - data: Data(), - expectedResponseLength: readAmount - ) - resp = try await self.send( cmd: cmd ) - - Log.verbose( "TagReader - got resp - \(binToHexRep(resp.data, asArray: true)), sw1 : \(resp.sw1), sw2 : \(resp.sw2)" ) - data += resp.data - - remaining -= resp.data.count - amountRead += resp.data.count - Log.verbose( "TagReader - Amount of data left to read - \(remaining)" ) - } - - return data - } - - - func readCardAccess() async throws -> [UInt8]{ - // Info provided by @smulu - // By default NFCISO7816Tag requirers a list of ISO/IEC 7816 applets (AIDs). Upon discovery of NFC tag the first found applet from this list is automatically selected (and you have no way of changing this). - // This is a problem for PACE protocol becaues it requires reading parameters from file EF.CardAccess which lies outside of eMRTD applet (AID: A0000002471001) in the master file. - - // Now, the ICAO 9303 standard does specify command for selecting master file by sending SELECT APDU with P1=0x00, P2=0x0C and empty data field (see part 10 page 8). But after some testing I found out this command doesn't work on some passports (European passports) and although receiving success (sw=9000) from passport the master file is not selected. - - // After a bit of researching standard ISO/IEC 7816 I found there is an alternative SELECT command for selecting master file. The command doesn't differ much from the command specified in ICAO 9303 doc with only difference that data field is set to: 0x3F00. See section 6.11.3 of ISO/IEC 7816-4. - // By executing above SELECT command (with data=0x3F00) master file should be selected and you should be able to read EF.CardAccess from passport. - - // First select master file - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: 0x00, instructionCode: 0xA4, p1Parameter: 0x00, p2Parameter: 0x0C, data: Data([0x3f,0x00]), expectedResponseLength: -1) - - _ = try await send( cmd: cmd) - - // Now read EC.CardAccess - let data = try await self.selectFileAndRead(tag: [0x01,0x1C]) - return data - } - - func selectPassportApplication() async throws -> ResponseAPDU { - // Finally reselect the eMRTD application so the rest of the reading works as normal - Log.debug( "Re-selecting eMRTD Application" ) - let cmd : NFCISO7816APDU = NFCISO7816APDU(instructionClass: 0x00, instructionCode: 0xA4, p1Parameter: 0x04, p2Parameter: 0x0C, data: Data([0xA0, 0x00, 0x00, 0x02, 0x47, 0x10, 0x01]), expectedResponseLength: -1) - - let response = try await self.send( cmd: cmd) - return response - } - - func selectFile( tag: [UInt8] ) async throws -> ResponseAPDU { - - let data : [UInt8] = [0x00, 0xA4, 0x02, 0x0C, 0x02] + tag - let cmd = NFCISO7816APDU(data:Data(data))! - - return try await send( cmd: cmd ) - } - - func send( cmd: NFCISO7816APDU ) async throws -> ResponseAPDU { - Log.verbose( "TagReader - sending \(cmd)" ) - var toSend = cmd - if let sm = secureMessaging { - toSend = try sm.protect(apdu:cmd) - Log.verbose("TagReader - [SM] \(toSend)" ) - } - - let (data, sw1, sw2) = try await tag.sendCommand(apdu: toSend) - Log.verbose( "TagReader - Received response" ) - var rep = ResponseAPDU(data: [UInt8](data), sw1: sw1, sw2: sw2) - - if let sm = self.secureMessaging { - rep = try sm.unprotect(rapdu:rep) - Log.verbose(String(format:"TagReader [SM - unprotected] \(binToHexRep(rep.data, asArray:true)), sw1:0x%02x sw2:0x%02x", rep.sw1, rep.sw2) ) - } else { - Log.verbose(String(format:"TagReader [unprotected] \(binToHexRep(rep.data, asArray:true)), sw1:0x%02x sw2:0x%02x", rep.sw1, rep.sw2) ) - - } - - if rep.sw1 != 0x90 && rep.sw2 != 0x00 { - Log.error( "Error reading tag: sw1 - 0x\(binToHexRep(sw1)), sw2 - 0x\(binToHexRep(sw2))" ) - let tagError: NFCPassportReaderError - if (rep.sw1 == 0x63 && rep.sw2 == 0x00) { - tagError = NFCPassportReaderError.InvalidMRZKey - } else { - let errorMsg = self.decodeError(sw1: rep.sw1, sw2: rep.sw2) - Log.error( "reason: \(errorMsg)" ) - tagError = NFCPassportReaderError.ResponseError( errorMsg, sw1, sw2 ) - } - throw tagError - } - - return rep - } - - private func decodeError( sw1: UInt8, sw2:UInt8 ) -> String { - - let errors : [UInt8 : [UInt8:String]] = [ - 0x62: [0x00:"No information given", - 0x81:"Part of returned data may be corrupted", - 0x82:"End of file/record reached before reading Le bytes", - 0x83:"Selected file invalidated", - 0x84:"FCI not formatted according to ISO7816-4 section 5.1.5"], - - 0x63: [0x81:"File filled up by the last write", - 0x82:"Card Key not supported", - 0x83:"Reader Key not supported", - 0x84:"Plain transmission not supported", - 0x85:"Secured Transmission not supported", - 0x86:"Volatile memory not available", - 0x87:"Non Volatile memory not available", - 0x88:"Key number not valid", - 0x89:"Key length is not correct", - 0xC:"Counter provided by X (valued from 0 to 15) (exact meaning depending on the command)"], - 0x65: [0x00:"No information given", - 0x81:"Memory failure"], - 0x67: [0x00:"Wrong length"], - 0x68: [0x00:"No information given", - 0x81:"Logical channel not supported", - 0x82:"Secure messaging not supported", - 0x83:"Last command of the chain expected", - 0x84:"Command chaining not supported"], - 0x69: [0x00:"No information given", - 0x81:"Command incompatible with file structure", - 0x82:"Security status not satisfied", - 0x83:"Authentication method blocked", - 0x84:"Referenced data invalidated", - 0x85:"Conditions of use not satisfied", - 0x86:"Command not allowed (no current EF)", - 0x87:"Expected SM data objects missing", - 0x88:"SM data objects incorrect"], - 0x6A: [0x00:"No information given", - 0x80:"Incorrect parameters in the data field", - 0x81:"Function not supported", - 0x82:"File not found", - 0x83:"Record not found", - 0x84:"Not enough memory space in the file", - 0x85:"Lc inconsistent with TLV structure", - 0x86:"Incorrect parameters P1-P2", - 0x87:"Lc inconsistent with P1-P2", - 0x88:"Referenced data not found"], - 0x6B: [0x00:"Wrong parameter(s) P1-P2]"], - 0x6D: [0x00:"Instruction code not supported or invalid"], - 0x6E: [0x00:"Class not supported"], - 0x6F: [0x00:"No precise diagnosis"], - 0x90: [0x00:"Success"] //No further qualification - ] - - // Special cases - where sw2 isn't an error but contains a value - if sw1 == 0x61 { - return "SW2 indicates the number of response bytes still available - (\(sw2) bytes still available)" - } else if sw1 == 0x64 { - return "State of non-volatile memory unchanged (SW2=00, other values are RFU)" - } else if sw1 == 0x6C { - return "Wrong length Le: SW2 indicates the exact length - (exact length :\(sw2))" - } - - if let dict = errors[sw1], let errorMsg = dict[sw2] { - return errorMsg - } - - return "Unknown error - sw1: 0x\(binToHexRep(sw1)), sw2 - 0x\(binToHexRep(sw2)) " - } -} - -#endif diff --git a/app/ios/AwesomeProject/Utils.swift b/app/ios/AwesomeProject/Utils.swift deleted file mode 100644 index ac3f0af6d..000000000 --- a/app/ios/AwesomeProject/Utils.swift +++ /dev/null @@ -1,415 +0,0 @@ -import Foundation -import CommonCrypto -import CryptoTokenKit - -#if canImport(CryptoKit) - import CryptoKit -#endif - -private extension UInt8 { - var hexString: String { - let string = String(self, radix: 16) - return (self < 16 ? "0" + string : string) - } -} - - -extension FileManager { - static var documentDir : URL { - return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! - } -} - -extension StringProtocol { - subscript(bounds: CountableClosedRange) -> SubSequence { - let start = index(startIndex, offsetBy: bounds.lowerBound) - let end = index(start, offsetBy: bounds.count) - return self[start..) -> SubSequence { - let start = index(startIndex, offsetBy: bounds.lowerBound) - let end = index(start, offsetBy: bounds.count) - return self[start.. Index? { - return range(of: string, options: options)?.lowerBound - } - -} - - -public func binToHexRep( _ val : [UInt8], asArray : Bool = false ) -> String { - var string = asArray ? "[" : "" - for x in val { - if asArray { - string += String(format:"0x%02x, ", x ) - - } else { - string += String(format:"%02x", x ) - } - } - string += asArray ? "]" : "" - return asArray ? string : string.uppercased() -} - -public func binToHexRep( _ val : UInt8 ) -> String { - let string = String(format:"%02x", val ).uppercased() - return string -} - -public func binToHex( _ val: UInt8 ) -> Int { - let hexRep = String(format:"%02X", val) - return Int(hexRep, radix:16)! -} - -public func binToHex( _ val: [UInt8] ) -> UInt64 { - let hexVal = UInt64(binToHexRep(val), radix:16)! - return hexVal -} - -public func binToHex( _ val: ArraySlice ) -> UInt64 { - return binToHex( [UInt8](val) ) -} - - -public func hexToBin( _ val : UInt64 ) -> [UInt8] { - let hexRep = String(format:"%lx", val) - return hexRepToBin( hexRep) -} - -public func binToInt( _ val: ArraySlice ) -> Int { - let hexVal = binToInt( [UInt8](val) ) - return hexVal -} - -public func binToInt( _ val: [UInt8] ) -> Int { - let hexVal = Int(binToHexRep(val), radix:16)! - return hexVal -} - -public func intToBin(_ data : Int, pad : Int = 2) -> [UInt8] { - if pad == 2 { - let hex = String(format:"%02x", data) - return hexRepToBin(hex) - } else { - let hex = String(format:"%04x", data) - return hexRepToBin(hex) - - } -} - -/// 'AABB' --> \xaa\xbb'""" -public func hexRepToBin(_ val : String) -> [UInt8] { - var output : [UInt8] = [] - var x = 0 - while x < val.count { - if x+2 <= val.count { - output.append( UInt8(val[x ..< x + 2], radix:16)! ) - } else { - output.append( UInt8(val[x ..< x+1], radix:16)! ) - - } - x += 2 - } - return output -} - -public func xor(_ kifd : [UInt8], _ response_kicc : [UInt8] ) -> [UInt8] { - var kseed = [UInt8]() - for i in 0 ..< kifd.count { - kseed.append( kifd[i] ^ response_kicc[i] ) - } - return kseed -} - -public func generateRandomUInt8Array( _ size: Int ) -> [UInt8] { - - var ret : [UInt8] = [] - for _ in 0 ..< size { - ret.append( UInt8(arc4random_uniform(UInt32(UInt8.max) + 1)) ) - } - return ret -} - -public func pad(_ toPad : [UInt8], blockSize : Int) -> [UInt8] { - - var ret = toPad + [0x80] - while ret.count % blockSize != 0 { - ret.append(0x00) - } - return ret -} - -public func unpad( _ tounpad : [UInt8]) -> [UInt8] { - var i = tounpad.count-1 - while tounpad[i] == 0x00 { - i -= 1 - } - - if tounpad[i] == 0x80 { - return [UInt8](tounpad[0.. [UInt8] { - if algoName == .DES { - return desMAC(key: key, msg: msg) - } else { - return aesMAC(key: key, msg: msg) - } -} - -@available(iOS 13, macOS 10.15, *) -public func desMAC(key : [UInt8], msg : [UInt8]) -> [UInt8]{ - - let size = msg.count / 8 - var y : [UInt8] = [0,0,0,0,0,0,0,0] - - Log.verbose("Calc mac" ) - for i in 0 ..< size { - let tmp = [UInt8](msg[i*8 ..< i*8+8]) - Log.verbose("x\(i): \(binToHexRep(tmp))" ) - y = DESEncrypt(key: [UInt8](key[0..<8]), message: tmp, iv: y) - Log.verbose("y\(i): \(binToHexRep(y))" ) - } - - Log.verbose("y: \(binToHexRep(y))" ) - Log.verbose("bkey: \(binToHexRep([UInt8](key[8..<16])))" ) - Log.verbose("akey: \(binToHexRep([UInt8](key[0..<8])))" ) - let iv : [UInt8] = [0,0,0,0,0,0,0,0] - let b = DESDecrypt(key: [UInt8](key[8..<16]), message: y, iv: iv, options:UInt32(kCCOptionECBMode)) - Log.verbose( "b: \(binToHexRep(b))" ) - let a = DESEncrypt(key: [UInt8](key[0..<8]), message: b, iv: iv, options:UInt32(kCCOptionECBMode)) - Log.verbose( "a: \(binToHexRep(a))" ) - - return a -} - -@available(iOS 13, macOS 10.15, *) -public func aesMAC( key: [UInt8], msg : [UInt8] ) -> [UInt8] { - let mac = OpenSSLUtils.generateAESCMAC( key: key, message:msg ) - return mac -} - -@available(iOS 13, macOS 10.15, *) -public func wrapDO( b : UInt8, arr : [UInt8] ) -> [UInt8] { - let tag = TKBERTLVRecord(tag: TKTLVTag(b), value: Data(arr)) - let result = [UInt8](tag.data) - return result; -} - -@available(iOS 13, macOS 10.15, *) -public func unwrapDO( tag : UInt8, wrappedData : [UInt8]) throws -> [UInt8] { - guard let rec = TKBERTLVRecord(from: Data(wrappedData)), - rec.tag == tag else { - throw NFCPassportReaderError.InvalidASN1Value - } - return [UInt8](rec.value); -} - - -public func intToBytes( val: Int, removePadding:Bool) -> [UInt8] { - if val == 0 { - return [0] - } - var data = withUnsafeBytes(of: val.bigEndian, Array.init) - - if removePadding { - // Remove initial 0 bytes - for i in 0 ..< data.count { - if data[i] != 0 { - data = [UInt8](data[i...]) - break - } - } - } - return data -} - -@available(iOS 13, macOS 10.15, *) -public func oidToBytes(oid : String, replaceTag : Bool) -> [UInt8] { - var encOID = OpenSSLUtils.asn1EncodeOID(oid: oid) - - if replaceTag { - // Replace tag (0x06) with 0x80 - encOID[0] = 0x80 - } - return encOID -} - - - -/// Take an asn.1 length, and return a couple with the decoded length in hexa and the total length of the encoding (1,2 or 3 bytes) -/// -/// Using Basic Encoding Rules (BER): -/// If the first byte is <= 0x7F (0-127), then this is the total length of the data -/// If the first byte is 0x81 then the length is the value of the next byte -/// If the first byte is 0x82 then the length is the value of the next two bytes -/// If the first byte is 0x80 then the length is indefinite (never seen this and not sure exactle what it means) -/// e.g. -/// if the data was 0x02, 0x11, 0x12, then the amount of data we have to read is two bytes, and the actual data is [0x11, 0x12] -/// If the length was 0x81,0x80,....... then we know that the data length is contained in the next byte - 0x80 (128), so the amount of data to read is 128 bytes -/// If the length was 0x82,0x01,0x01,....... then we know that the data length is contained in the next 2 bytes - 0x01, 0x01 (257) so the amount of data to read is 257 bytes -/// -/// @param data: A length value encoded in the asn.1 format. -/// @type data: A binary string. -/// @return: A tuple with the decoded hexa length and the length of the asn.1 encoded value. -/// @raise asn1Exception: If the parameter does not follow the asn.1 notation. - -@available(iOS 13, macOS 10.15, *) -public func asn1Length( _ data: ArraySlice ) throws -> (Int, Int) { - return try asn1Length( Array(data) ) -} - -@available(iOS 13, macOS 10.15, *) -public func asn1Length(_ data : [UInt8]) throws -> (Int, Int) { - if data[0] < 0x80 { - return (Int(binToHex(data[0])), 1) - } - if data[0] == 0x81 { - return (Int(binToHex(data[1])), 2) - } - if data[0] == 0x82 { - let val = binToHex([UInt8](data[1..<3])) - return (Int(val), 3) - } - - throw NFCPassportReaderError.CannotDecodeASN1Length - -} - -/// Convert a length to asn.1 format -/// @param data: The value to encode in asn.1 -/// @type data: An integer (hexa) -/// @return: The asn.1 encoded value -/// @rtype: A binary string -/// @raise asn1Exception: If the parameter is too big, must be >= 0 and <= FFFF -@available(iOS 13, macOS 10.15, *) -public func toAsn1Length(_ data : Int) throws -> [UInt8] { - if data < 0x80 { - return hexRepToBin(String(format:"%02x", data)) - } - if data >= 0x80 && data <= 0xFF { - return [0x81] + hexRepToBin( String(format:"%02x",data)) - } - if data >= 0x0100 && data <= 0xFFFF { - return [0x82] + hexRepToBin( String(format:"%04x",data)) - } - - throw NFCPassportReaderError.InvalidASN1Value -} - - - -/// This function calculates a Hash of the input data based on the input algorithm -/// @param data: a byte array of data -/// @param hashAlgorithm: the hash algorithm to be used - supported ones are SHA1, SHA224, SHA256, SHA384 and SHA512 -/// Currently specifying any others return empty array -/// @return: A hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcHash( data: [UInt8], hashAlgorithm: String ) throws -> [UInt8] { - var ret : [UInt8] = [] - - let hashAlgorithm = hashAlgorithm.lowercased() - if hashAlgorithm == "sha1" { - ret = calcSHA1Hash(data) - } else if hashAlgorithm == "sha224" { - ret = calcSHA224Hash(data) - } else if hashAlgorithm == "sha256" { - ret = calcSHA256Hash(data) - } else if hashAlgorithm == "sha384" { - ret = calcSHA384Hash(data) - } else if hashAlgorithm == "sha512" { - ret = calcSHA512Hash(data) - } else { - throw NFCPassportReaderError.InvalidHashAlgorithmSpecified - } - - return ret -} - - -/// This function calculates a SHA1 Hash of the input data -/// @param data: a byte array of data -/// @return: A SHA1 hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcSHA1Hash( _ data: [UInt8] ) -> [UInt8] { - #if canImport(CryptoKit) - var sha1 = Insecure.SHA1() - sha1.update(data: data) - let hash = sha1.finalize() - - return Array(hash) - #else - fatalError("Couldn't import CryptoKit") - #endif -} - -/// This function calculates a SHA224 Hash of the input data -/// @param data: a byte array of data -/// @return: A SHA224 hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcSHA224Hash( _ data: [UInt8] ) -> [UInt8] { - - var digest = [UInt8](repeating: 0, count:Int(CC_SHA224_DIGEST_LENGTH)) - - data.withUnsafeBytes { - _ = CC_SHA224($0.baseAddress, CC_LONG(data.count), &digest) - } - return digest -} - -/// This function calculates a SHA256 Hash of the input data -/// @param data: a byte array of data -/// @return: A SHA256 hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcSHA256Hash( _ data: [UInt8] ) -> [UInt8] { - #if canImport(CryptoKit) - var sha256 = SHA256() - sha256.update(data: data) - let hash = sha256.finalize() - - return Array(hash) - #else - fatalError("Couldn't import CryptoKit") - #endif -} - -/// This function calculates a SHA512 Hash of the input data -/// @param data: a byte array of data -/// @return: A SHA512 hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcSHA512Hash( _ data: [UInt8] ) -> [UInt8] { - #if canImport(CryptoKit) - var sha512 = SHA512() - sha512.update(data: data) - let hash = sha512.finalize() - - return Array(hash) - #else - fatalError("Couldn't import CryptoKit") - #endif -} - -/// This function calculates a SHA384 Hash of the input data -/// @param data: a byte array of data -/// @return: A SHA384 hash of the data -@available(iOS 13, macOS 10.15, *) -public func calcSHA384Hash( _ data: [UInt8] ) -> [UInt8] { - #if canImport(CryptoKit) - var sha384 = SHA384() - sha384.update(data: data) - let hash = sha384.finalize() - - return Array(hash) - #else - fatalError("Couldn't import CryptoKit") - #endif -} - diff --git a/app/ios/AwesomeProject/X509Wrapper.swift b/app/ios/AwesomeProject/X509Wrapper.swift deleted file mode 100644 index eb995a900..000000000 --- a/app/ios/AwesomeProject/X509Wrapper.swift +++ /dev/null @@ -1,161 +0,0 @@ -import OpenSSL - -@available(iOS 13, macOS 10.15, *) -public enum CertificateType { - case documentSigningCertificate - case issuerSigningCertificate -} - -@available(iOS 13, macOS 10.15, *) -public enum CertificateItem : String { - case fingerprint = "Certificate fingerprint" - case issuerName = "Issuer" - case subjectName = "Subject" - case serialNumber = "Serial number" - case signatureAlgorithm = "Signature algorithm" - case publicKeyAlgorithm = "Public key algorithm" - case notBefore = "Valid from" - case notAfter = "Valid to" -} - -@available(iOS 13, macOS 10.15, *) -public class X509Wrapper { - public let cert : OpaquePointer - - public init?( with cert: OpaquePointer? ) { - guard let cert = cert else { return nil } - - self.cert = X509_dup(cert) - } - - public func getItemsAsDict() -> [CertificateItem:String] { - var item = [CertificateItem:String]() - if let fingerprint = self.getFingerprint() { - item[.fingerprint] = fingerprint - } - if let issuerName = self.getIssuerName() { - item[.issuerName] = issuerName - - } - if let subjectName = self.getSubjectName() { - item[.subjectName] = subjectName - } - if let serialNr = self.getSerialNumber() { - item[.serialNumber] = serialNr - } - if let signatureAlgorithm = self.getSignatureAlgorithm() { - item[.signatureAlgorithm] = signatureAlgorithm - } - if let publicKeyAlgorithm = self.getPublicKeyAlgorithm() { - item[.publicKeyAlgorithm] = publicKeyAlgorithm - } - if let notBefore = self.getNotBeforeDate() { - item[.notBefore] = notBefore - } - if let notAfter = self.getNotAfterDate() { - item[.notAfter] = notAfter - } - - return item - } - public func certToPEM() -> String { - return OpenSSLUtils.X509ToPEM( x509:cert ) - } - - public func getFingerprint( ) -> String? { - let fdig = EVP_sha1(); - - var n : UInt32 = 0 - let md = UnsafeMutablePointer.allocate(capacity: Int(EVP_MAX_MD_SIZE)) - defer { md.deinitialize(count: Int(EVP_MAX_MD_SIZE)); md.deallocate() } - - X509_digest(cert, fdig, md, &n) - let arr = UnsafeMutableBufferPointer(start: md, count: Int(n)).map({ binToHexRep($0) }).joined(separator: ":") - return arr - } - - public func getNotBeforeDate() -> String? { - var notBefore : String? - if let val = X509_get0_notBefore(cert) { - notBefore = ASN1TimeToString( val ) - } - return notBefore - - } - - public func getNotAfterDate() -> String? { - var notAfter : String? - if let val = X509_get0_notAfter(cert) { - notAfter = ASN1TimeToString( val ) - } - return notAfter - } - - public func getSerialNumber() -> String? { - let serialNr = String( ASN1_INTEGER_get(X509_get_serialNumber(cert)), radix:16, uppercase: true ) - return serialNr - } - - public func getSignatureAlgorithm() -> String? { - let algor = X509_get0_tbs_sigalg(cert); - let algo = getAlgorithm( algor?.pointee.algorithm ) - return algo - } - - public func getPublicKeyAlgorithm() -> String? { - let pubKey = X509_get_X509_PUBKEY(cert) - var ptr : OpaquePointer? - X509_PUBKEY_get0_param(&ptr, nil, nil, nil, pubKey) - let algo = getAlgorithm(ptr) - return algo - } - - public func getIssuerName() -> String? { - return getName(for: X509_get_issuer_name(cert)) - } - - public func getSubjectName() -> String? { - return getName(for: X509_get_subject_name(cert)) - } - - private func getName( for name: OpaquePointer? ) -> String? { - guard let name = name else { return nil } - - var issuer: String = "" - - guard let out = BIO_new( BIO_s_mem()) else { return nil } - defer { BIO_free(out) } - - X509_NAME_print_ex(out, name, 0, UInt(ASN1_STRFLGS_ESC_2253 | - ASN1_STRFLGS_ESC_CTRL | - ASN1_STRFLGS_ESC_MSB | - ASN1_STRFLGS_UTF8_CONVERT | - ASN1_STRFLGS_DUMP_UNKNOWN | - ASN1_STRFLGS_DUMP_DER | XN_FLAG_SEP_COMMA_PLUS | - XN_FLAG_DN_REV | - XN_FLAG_FN_SN | - XN_FLAG_DUMP_UNKNOWN_FIELDS)) - issuer = OpenSSLUtils.bioToString(bio: out) - - return issuer - } - - private func getAlgorithm( _ algo: OpaquePointer? ) -> String? { - guard let algo = algo else { return nil } - let len = OBJ_obj2nid(algo) - var algoString : String? = nil - if let sa = OBJ_nid2ln(len) { - algoString = String(cString: sa ) - } - return algoString - } - - private func ASN1TimeToString( _ date: UnsafePointer ) -> String? { - guard let b = BIO_new(BIO_s_mem()) else { return nil } - defer { BIO_free(b) } - - ASN1_TIME_print(b, date) - return OpenSSLUtils.bioToString(bio: b) - } - -} diff --git a/app/ios/AwesomeProject/masterList.pem b/app/ios/AwesomeProject/masterList.pem deleted file mode 100644 index 033412744..000000000 --- a/app/ios/AwesomeProject/masterList.pem +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFdDCCA1wCCQDFcc+Un66UsDANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJH -QjESMBAGA1UECAwJU29tZXdoZXJlMRIwEAYDVQQHDAlUaGlzIENpdHkxCzAJBgNV -BAoMAk5BMQswCQYDVQQLDAJOQTENMAsGA1UEAwwEdGVzdDEcMBoGCSqGSIb3DQEJ -ARYNdGVzdEB0ZXN0LmNvbTAeFw0xOTA2MjgxMzAyNTlaFw0yMDA2MjcxMzAyNTla -MHwxCzAJBgNVBAYTAkdCMRIwEAYDVQQIDAlTb21ld2hlcmUxEjAQBgNVBAcMCVRo -aXMgQ2l0eTELMAkGA1UECgwCTkExCzAJBgNVBAsMAk5BMQ0wCwYDVQQDDAR0ZXN0 -MRwwGgYJKoZIhvcNAQkBFg10ZXN0QHRlc3QuY29tMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4sTb0Xd20ATso1VffMGK/N2TuEcsZvQkbhr75dd6f77y -3h5r5ikFCcppGwlgEy6/wn0iEiv4iGDm7cxvVSfwZ+Bm7nbYZVHl8G7vYUZRdLnh -tcUpfa+jPyrQ+XXfTygjoE2shAs8Wv+uB/O0oLbltdx5HMcitHj6MkIz3bs6hY4Z -2kSy6JB1Iw0GwB6vfHbD8MUkn0Aqxwdrd5ks61lVpYx3JyvhUXVjC/9rE+dk6+cN -16WvRhCEH6aClgWcfkSfDtZ85ltcyL3glAqX1YMLl4CFRKZ3NLVgXjHj/QYvAXJq -yWoNbAQvCFv5WK8/JjtAzFYKwjGGUhG5tL6etLrfDF/RudrLDIS2Js9cTMbbB10O -UehVksJvYQBaj8VRSsI7GrGydecfBixwqYD5DxcPzZsGcsfzuQYkotG+poDhjRE4 -Ow9zqIG20hgnBn3VTbP21yc4woYLzIK7M7MdWDiDqqcrLwtxolIk6R6lc/3wVR8i -19F5HFwKM0RW3cWZhXqCHrpYBzj8gx7hJAKSFZWDygLFH8h1LtMx93kstxPR7FA6 -99737YU1HF0j7kjKJAIQqoJ43ftUN9q8sDN/rRpEgKnRUuFrvcaTdTZCJ7NT3u6p -edC+8rdbKQO6TX0JC8PEl1FjTiVnb3wpMpWPYaI3hspSN/CMUunypoKRJ5IgSK8C -AwEAATANBgkqhkiG9w0BAQsFAAOCAgEAJtrliSVzukKjUJR3AnZrgcnWZ8kTGH9E -TSfpmc9IkMvwWvBs/vgpKMm3XVzTM1RcI/pQYR9Y4beXf4wgTQIg1I2kWLVcRMzU -rwFWl2/h6uA6G+tJpaVVy30rPcYGqLmBqzCCRb3sf/H77/6nknafA4jMASlIWnTE -R7HBd0cJa50jaTgFaIe734oIMqaAZvFFKK5KDnxSBMHwUf7ej1ibT/rB5Ry80qpJ -FsKlxpjaeUDWsnnjR4Z98rjDsWOSI8tUTStdnPYTw/6VFsf+zPKwE2u2Qe7SXg3S -eUoCQqWYaSMqmAfTVJx7zIDIvxa8+LmtijeqYUZcfnos0xxTEeJ6EH65rAPOi23x -1pg8Z28NAAinqFAo74Hr2hTKESmq0mykF/XP4wLhhaxYHy+FFwm984IIpqbKJmuY -/LapNMi6hZXRXft5PQYe57ZXD9/Lp8pn+19nX0nyv5agius0/R4M3CvuPbdose64 -jm+2325MQAhihrHmcU0YIt1kwSMuiYOqwD5plx+yenCIhdR6Oa5WX7Xf/hiKZult -5UVNVxfG1tZbsk/u2iwd2fDMBGQ3/D36REA5el6GUPpBOaa6gVmpS38qRCTVTBqH -NY8Qy6N+AHsahMtMakwo/EWsDsGTajcrvXX1psLgpRdMNeXgU3nNzJ+wPMUPCTFB -ZhNynFjgmgY= ------END CERTIFICATE----- diff --git a/app/ios/AwesomeProjectTests/AwesomeProjectTests.m b/app/ios/AwesomeProjectTests/AwesomeProjectTests.m deleted file mode 100644 index adc7bf169..000000000 --- a/app/ios/AwesomeProjectTests/AwesomeProjectTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface AwesomeProjectTests : XCTestCase - -@end - -@implementation AwesomeProjectTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - RCTSetLogFunction( - ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); -#endif - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view - matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - -@end diff --git a/app/ios/MoproKit/.gitignore b/app/ios/MoproKit/.gitignore new file mode 100644 index 000000000..49c016dd7 --- /dev/null +++ b/app/ios/MoproKit/.gitignore @@ -0,0 +1,52 @@ +# macOS +.DS_Store + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Bundler +.bundle + +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# +# Note: if you ignore the Pods directory, make sure to uncomment +# `pod install` in .travis.yml +# +# Pods/ + +# Xcode +# +/.build +/Packages +/*.xcodeproj +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata + +# CocoaPods +Podfile.lock +Pods +*.xcworkspace + +# Ignore static libs +*.a \ No newline at end of file diff --git a/app/ios/MoproKit/.travis.yml b/app/ios/MoproKit/.travis.yml new file mode 100644 index 000000000..b2d81587a --- /dev/null +++ b/app/ios/MoproKit/.travis.yml @@ -0,0 +1,14 @@ +# references: +# * https://www.objc.io/issues/6-build-tools/travis-ci/ +# * https://github.com/supermarin/xcpretty#usage + +osx_image: xcode7.3 +language: objective-c +# cache: cocoapods +# podfile: Example/Podfile +# before_install: +# - gem install cocoapods # Since Travis is not always on latest version +# - pod install --project-directory=Example +script: +- set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/MoproKit.xcworkspace -scheme MoproKit-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty +- pod lib lint diff --git a/app/ios/MoproKit/Bindings/mopro.swift b/app/ios/MoproKit/Bindings/mopro.swift new file mode 100644 index 000000000..32127caf7 --- /dev/null +++ b/app/ios/MoproKit/Bindings/mopro.swift @@ -0,0 +1,805 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! +import Foundation + +// Depending on the consumer's build setup, the low-level FFI code +// might be in a separate module, or it might be compiled inline into +// this module. This is a bit of light hackery to work with both. +#if canImport(moproFFI) +import moproFFI +#endif + +fileprivate extension RustBuffer { + // Allocate a new buffer, copying the contents of a `UInt8` array. + init(bytes: [UInt8]) { + let rbuf = bytes.withUnsafeBufferPointer { ptr in + RustBuffer.from(ptr) + } + self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data) + } + + static func from(_ ptr: UnsafeBufferPointer) -> RustBuffer { + try! rustCall { ffi_mopro_ffi_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } + } + + // Frees the buffer in place. + // The buffer must not be used after this is called. + func deallocate() { + try! rustCall { ffi_mopro_ffi_rustbuffer_free(self, $0) } + } +} + +fileprivate extension ForeignBytes { + init(bufferPointer: UnsafeBufferPointer) { + self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress) + } +} + +// For every type used in the interface, we provide helper methods for conveniently +// lifting and lowering that type from C-compatible data, and for reading and writing +// values of that type in a buffer. + +// Helper classes/extensions that don't change. +// Someday, this will be in a library of its own. + +fileprivate extension Data { + init(rustBuffer: RustBuffer) { + // TODO: This copies the buffer. Can we read directly from a + // Rust buffer? + self.init(bytes: rustBuffer.data!, count: Int(rustBuffer.len)) + } +} + +// Define reader functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. +// +// With external types, one swift source file needs to be able to call the read +// method on another source file's FfiConverter, but then what visibility +// should Reader have? +// - If Reader is fileprivate, then this means the read() must also +// be fileprivate, which doesn't work with external types. +// - If Reader is internal/public, we'll get compile errors since both source +// files will try define the same type. +// +// Instead, the read() method and these helper functions input a tuple of data + +fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) { + (data: data, offset: 0) +} + +// Reads an integer at the current offset, in big-endian order, and advances +// the offset on success. Throws if reading the integer would move the +// offset past the end of the buffer. +fileprivate func readInt(_ reader: inout (data: Data, offset: Data.Index)) throws -> T { + let range = reader.offset...size + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + if T.self == UInt8.self { + let value = reader.data[reader.offset] + reader.offset += 1 + return value as! T + } + var value: T = 0 + let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)}) + reader.offset = range.upperBound + return value.bigEndian +} + +// Reads an arbitrary number of bytes, to be used to read +// raw bytes, this is useful when lifting strings +fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array { + let range = reader.offset..<(reader.offset+count) + guard reader.data.count >= range.upperBound else { + throw UniffiInternalError.bufferOverflow + } + var value = [UInt8](repeating: 0, count: count) + value.withUnsafeMutableBufferPointer({ buffer in + reader.data.copyBytes(to: buffer, from: range) + }) + reader.offset = range.upperBound + return value +} + +// Reads a float at the current offset. +fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float { + return Float(bitPattern: try readInt(&reader)) +} + +// Reads a float at the current offset. +fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double { + return Double(bitPattern: try readInt(&reader)) +} + +// Indicates if the offset has reached the end of the buffer. +fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool { + return reader.offset < reader.data.count +} + +// Define writer functionality. Normally this would be defined in a class or +// struct, but we use standalone functions instead in order to make external +// types work. See the above discussion on Readers for details. + +fileprivate func createWriter() -> [UInt8] { + return [] +} + +fileprivate func writeBytes(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 { + writer.append(contentsOf: byteArr) +} + +// Writes an integer in big-endian order. +// +// Warning: make sure what you are trying to write +// is in the correct type! +fileprivate func writeInt(_ writer: inout [UInt8], _ value: T) { + var value = value.bigEndian + withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) } +} + +fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) { + writeInt(&writer, value.bitPattern) +} + +fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) { + writeInt(&writer, value.bitPattern) +} + +// Protocol for types that transfer other types across the FFI. This is +// analogous go the Rust trait of the same name. +fileprivate protocol FfiConverter { + associatedtype FfiType + associatedtype SwiftType + + static func lift(_ value: FfiType) throws -> SwiftType + static func lower(_ value: SwiftType) -> FfiType + static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType + static func write(_ value: SwiftType, into buf: inout [UInt8]) +} + +// Types conforming to `Primitive` pass themselves directly over the FFI. +fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { } + +extension FfiConverterPrimitive { + public static func lift(_ value: FfiType) throws -> SwiftType { + return value + } + + public static func lower(_ value: SwiftType) -> FfiType { + return value + } +} + +// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`. +// Used for complex types where it's hard to write a custom lift/lower. +fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {} + +extension FfiConverterRustBuffer { + public static func lift(_ buf: RustBuffer) throws -> SwiftType { + var reader = createReader(data: Data(rustBuffer: buf)) + let value = try read(from: &reader) + if hasRemaining(reader) { + throw UniffiInternalError.incompleteData + } + buf.deallocate() + return value + } + + public static func lower(_ value: SwiftType) -> RustBuffer { + var writer = createWriter() + write(value, into: &writer) + return RustBuffer(bytes: writer) + } +} +// An error type for FFI errors. These errors occur at the UniFFI level, not +// the library level. +fileprivate enum UniffiInternalError: LocalizedError { + case bufferOverflow + case incompleteData + case unexpectedOptionalTag + case unexpectedEnumCase + case unexpectedNullPointer + case unexpectedRustCallStatusCode + case unexpectedRustCallError + case unexpectedStaleHandle + case rustPanic(_ message: String) + + public var errorDescription: String? { + switch self { + case .bufferOverflow: return "Reading the requested value would read past the end of the buffer" + case .incompleteData: return "The buffer still has data after lifting its containing value" + case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1" + case .unexpectedEnumCase: return "Raw enum value doesn't match any cases" + case .unexpectedNullPointer: return "Raw pointer value was null" + case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code" + case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified" + case .unexpectedStaleHandle: return "The object in the handle map has been dropped already" + case let .rustPanic(message): return message + } + } +} + +fileprivate let CALL_SUCCESS: Int8 = 0 +fileprivate let CALL_ERROR: Int8 = 1 +fileprivate let CALL_PANIC: Int8 = 2 +fileprivate let CALL_CANCELLED: Int8 = 3 + +fileprivate extension RustCallStatus { + init() { + self.init( + code: CALL_SUCCESS, + errorBuf: RustBuffer.init( + capacity: 0, + len: 0, + data: nil + ) + ) + } +} + +private func rustCall(_ callback: (UnsafeMutablePointer) -> T) throws -> T { + try makeRustCall(callback, errorHandler: nil) +} + +private func rustCallWithError( + _ errorHandler: @escaping (RustBuffer) throws -> Error, + _ callback: (UnsafeMutablePointer) -> T) throws -> T { + try makeRustCall(callback, errorHandler: errorHandler) +} + +private func makeRustCall( + _ callback: (UnsafeMutablePointer) -> T, + errorHandler: ((RustBuffer) throws -> Error)? +) throws -> T { + uniffiEnsureInitialized() + var callStatus = RustCallStatus.init() + let returnedVal = callback(&callStatus) + try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler) + return returnedVal +} + +private func uniffiCheckCallStatus( + callStatus: RustCallStatus, + errorHandler: ((RustBuffer) throws -> Error)? +) throws { + switch callStatus.code { + case CALL_SUCCESS: + return + + case CALL_ERROR: + if let errorHandler = errorHandler { + throw try errorHandler(callStatus.errorBuf) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.unexpectedRustCallError + } + + case CALL_PANIC: + // When the rust code sees a panic, it tries to construct a RustBuffer + // with the message. But if that code panics, then it just sends back + // an empty buffer. + if callStatus.errorBuf.len > 0 { + throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf)) + } else { + callStatus.errorBuf.deallocate() + throw UniffiInternalError.rustPanic("Rust panic") + } + + case CALL_CANCELLED: + throw CancellationError() + + default: + throw UniffiInternalError.unexpectedRustCallStatusCode + } +} + +// Public interface members begin here. + + +fileprivate struct FfiConverterUInt32: FfiConverterPrimitive { + typealias FfiType = UInt32 + typealias SwiftType = UInt32 + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> UInt32 { + return try lift(readInt(&buf)) + } + + public static func write(_ value: SwiftType, into buf: inout [UInt8]) { + writeInt(&buf, lower(value)) + } +} + +fileprivate struct FfiConverterBool : FfiConverter { + typealias FfiType = Int8 + typealias SwiftType = Bool + + public static func lift(_ value: Int8) throws -> Bool { + return value != 0 + } + + public static func lower(_ value: Bool) -> Int8 { + return value ? 1 : 0 + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Bool { + return try lift(readInt(&buf)) + } + + public static func write(_ value: Bool, into buf: inout [UInt8]) { + writeInt(&buf, lower(value)) + } +} + +fileprivate struct FfiConverterString: FfiConverter { + typealias SwiftType = String + typealias FfiType = RustBuffer + + public static func lift(_ value: RustBuffer) throws -> String { + defer { + value.deallocate() + } + if value.data == nil { + return String() + } + let bytes = UnsafeBufferPointer(start: value.data!, count: Int(value.len)) + return String(bytes: bytes, encoding: String.Encoding.utf8)! + } + + public static func lower(_ value: String) -> RustBuffer { + return value.utf8CString.withUnsafeBufferPointer { ptr in + // The swift string gives us int8_t, we want uint8_t. + ptr.withMemoryRebound(to: UInt8.self) { ptr in + // The swift string gives us a trailing null byte, we don't want it. + let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1)) + return RustBuffer.from(buf) + } + } + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String { + let len: Int32 = try readInt(&buf) + return String(bytes: try readBytes(&buf, count: Int(len)), encoding: String.Encoding.utf8)! + } + + public static func write(_ value: String, into buf: inout [UInt8]) { + let len = Int32(value.utf8.count) + writeInt(&buf, len) + writeBytes(&buf, value.utf8) + } +} + +fileprivate struct FfiConverterData: FfiConverterRustBuffer { + typealias SwiftType = Data + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data { + let len: Int32 = try readInt(&buf) + return Data(try readBytes(&buf, count: Int(len))) + } + + public static func write(_ value: Data, into buf: inout [UInt8]) { + let len = Int32(value.count) + writeInt(&buf, len) + writeBytes(&buf, value) + } +} + + +public protocol MoproCircomProtocol { + func generateProof(circuitInputs: [String: [String]]) throws -> GenerateProofResult + func setup(wasmPath: String, r1csPath: String) throws -> SetupResult + func verifyProof(proof: Data, publicInput: Data) throws -> Bool + +} + +public class MoproCircom: MoproCircomProtocol { + fileprivate let pointer: UnsafeMutableRawPointer + + // TODO: We'd like this to be `private` but for Swifty reasons, + // we can't implement `FfiConverter` without making this `required` and we can't + // make it `required` without making it `public`. + required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) { + self.pointer = pointer + } + public convenience init() { + self.init(unsafeFromRawPointer: try! rustCall() { + uniffi_mopro_ffi_fn_constructor_moprocircom_new($0) +}) + } + + deinit { + try! rustCall { uniffi_mopro_ffi_fn_free_moprocircom(pointer, $0) } + } + + + + + + + public func generateProof(circuitInputs: [String: [String]]) throws -> GenerateProofResult { + return try FfiConverterTypeGenerateProofResult.lift( + try + rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_method_moprocircom_generate_proof(self.pointer, + FfiConverterDictionaryStringSequenceString.lower(circuitInputs),$0 + ) +} + ) + } + + public func setup(wasmPath: String, r1csPath: String) throws -> SetupResult { + return try FfiConverterTypeSetupResult.lift( + try + rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_method_moprocircom_setup(self.pointer, + FfiConverterString.lower(wasmPath), + FfiConverterString.lower(r1csPath),$0 + ) +} + ) + } + + public func verifyProof(proof: Data, publicInput: Data) throws -> Bool { + return try FfiConverterBool.lift( + try + rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_method_moprocircom_verify_proof(self.pointer, + FfiConverterData.lower(proof), + FfiConverterData.lower(publicInput),$0 + ) +} + ) + } +} + +public struct FfiConverterTypeMoproCircom: FfiConverter { + typealias FfiType = UnsafeMutableRawPointer + typealias SwiftType = MoproCircom + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MoproCircom { + let v: UInt64 = try readInt(&buf) + // The Rust code won't compile if a pointer won't fit in a UInt64. + // We have to go via `UInt` because that's the thing that's the size of a pointer. + let ptr = UnsafeMutableRawPointer(bitPattern: UInt(truncatingIfNeeded: v)) + if (ptr == nil) { + throw UniffiInternalError.unexpectedNullPointer + } + return try lift(ptr!) + } + + public static func write(_ value: MoproCircom, into buf: inout [UInt8]) { + // This fiddling is because `Int` is the thing that's the same size as a pointer. + // The Rust code won't compile if a pointer won't fit in a `UInt64`. + writeInt(&buf, UInt64(bitPattern: Int64(Int(bitPattern: lower(value))))) + } + + public static func lift(_ pointer: UnsafeMutableRawPointer) throws -> MoproCircom { + return MoproCircom(unsafeFromRawPointer: pointer) + } + + public static func lower(_ value: MoproCircom) -> UnsafeMutableRawPointer { + return value.pointer + } +} + + +public func FfiConverterTypeMoproCircom_lift(_ pointer: UnsafeMutableRawPointer) throws -> MoproCircom { + return try FfiConverterTypeMoproCircom.lift(pointer) +} + +public func FfiConverterTypeMoproCircom_lower(_ value: MoproCircom) -> UnsafeMutableRawPointer { + return FfiConverterTypeMoproCircom.lower(value) +} + + +public struct GenerateProofResult { + public var proof: Data + public var inputs: Data + + // Default memberwise initializers are never public by default, so we + // declare one manually. + public init(proof: Data, inputs: Data) { + self.proof = proof + self.inputs = inputs + } +} + + +extension GenerateProofResult: Equatable, Hashable { + public static func ==(lhs: GenerateProofResult, rhs: GenerateProofResult) -> Bool { + if lhs.proof != rhs.proof { + return false + } + if lhs.inputs != rhs.inputs { + return false + } + return true + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(proof) + hasher.combine(inputs) + } +} + + +public struct FfiConverterTypeGenerateProofResult: FfiConverterRustBuffer { + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> GenerateProofResult { + return try GenerateProofResult( + proof: FfiConverterData.read(from: &buf), + inputs: FfiConverterData.read(from: &buf) + ) + } + + public static func write(_ value: GenerateProofResult, into buf: inout [UInt8]) { + FfiConverterData.write(value.proof, into: &buf) + FfiConverterData.write(value.inputs, into: &buf) + } +} + + +public func FfiConverterTypeGenerateProofResult_lift(_ buf: RustBuffer) throws -> GenerateProofResult { + return try FfiConverterTypeGenerateProofResult.lift(buf) +} + +public func FfiConverterTypeGenerateProofResult_lower(_ value: GenerateProofResult) -> RustBuffer { + return FfiConverterTypeGenerateProofResult.lower(value) +} + + +public struct SetupResult { + public var provingKey: Data + + // Default memberwise initializers are never public by default, so we + // declare one manually. + public init(provingKey: Data) { + self.provingKey = provingKey + } +} + + +extension SetupResult: Equatable, Hashable { + public static func ==(lhs: SetupResult, rhs: SetupResult) -> Bool { + if lhs.provingKey != rhs.provingKey { + return false + } + return true + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(provingKey) + } +} + + +public struct FfiConverterTypeSetupResult: FfiConverterRustBuffer { + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SetupResult { + return try SetupResult( + provingKey: FfiConverterData.read(from: &buf) + ) + } + + public static func write(_ value: SetupResult, into buf: inout [UInt8]) { + FfiConverterData.write(value.provingKey, into: &buf) + } +} + + +public func FfiConverterTypeSetupResult_lift(_ buf: RustBuffer) throws -> SetupResult { + return try FfiConverterTypeSetupResult.lift(buf) +} + +public func FfiConverterTypeSetupResult_lower(_ value: SetupResult) -> RustBuffer { + return FfiConverterTypeSetupResult.lower(value) +} + +public enum MoproError { + + + + // Simple error enums only carry a message + case CircomError(message: String) + + + fileprivate static func uniffiErrorHandler(_ error: RustBuffer) throws -> Error { + return try FfiConverterTypeMoproError.lift(error) + } +} + + +public struct FfiConverterTypeMoproError: FfiConverterRustBuffer { + typealias SwiftType = MoproError + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MoproError { + let variant: Int32 = try readInt(&buf) + switch variant { + + + + + case 1: return .CircomError( + message: try FfiConverterString.read(from: &buf) + ) + + + default: throw UniffiInternalError.unexpectedEnumCase + } + } + + public static func write(_ value: MoproError, into buf: inout [UInt8]) { + switch value { + + + + + case .CircomError(_ /* message is ignored*/): + writeInt(&buf, Int32(1)) + + + } + } +} + + +extension MoproError: Equatable, Hashable {} + +extension MoproError: Error { } + +fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer { + typealias SwiftType = [String] + + public static func write(_ value: [String], into buf: inout [UInt8]) { + let len = Int32(value.count) + writeInt(&buf, len) + for item in value { + FfiConverterString.write(item, into: &buf) + } + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String] { + let len: Int32 = try readInt(&buf) + var seq = [String]() + seq.reserveCapacity(Int(len)) + for _ in 0 ..< len { + seq.append(try FfiConverterString.read(from: &buf)) + } + return seq + } +} + +fileprivate struct FfiConverterDictionaryStringSequenceString: FfiConverterRustBuffer { + public static func write(_ value: [String: [String]], into buf: inout [UInt8]) { + let len = Int32(value.count) + writeInt(&buf, len) + for (key, value) in value { + FfiConverterString.write(key, into: &buf) + FfiConverterSequenceString.write(value, into: &buf) + } + } + + public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String: [String]] { + let len: Int32 = try readInt(&buf) + var dict = [String: [String]]() + dict.reserveCapacity(Int(len)) + for _ in 0.. UInt32 { + return try! FfiConverterUInt32.lift( + try! rustCall() { + uniffi_mopro_ffi_fn_func_add( + FfiConverterUInt32.lower(a), + FfiConverterUInt32.lower(b),$0) +} + ) +} + +public func generateProof2(circuitInputs: [String: [String]]) throws -> GenerateProofResult { + return try FfiConverterTypeGenerateProofResult.lift( + try rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_func_generate_proof2( + FfiConverterDictionaryStringSequenceString.lower(circuitInputs),$0) +} + ) +} + +public func hello() -> String { + return try! FfiConverterString.lift( + try! rustCall() { + uniffi_mopro_ffi_fn_func_hello($0) +} + ) +} + +public func initializeMopro() throws { + try rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_func_initialize_mopro($0) +} +} + + + +public func initializeMoproDylib(dylibPath: String) throws { + try rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_func_initialize_mopro_dylib( + FfiConverterString.lower(dylibPath),$0) +} +} + + + +public func verifyProof2(proof: Data, publicInput: Data) throws -> Bool { + return try FfiConverterBool.lift( + try rustCallWithError(FfiConverterTypeMoproError.lift) { + uniffi_mopro_ffi_fn_func_verify_proof2( + FfiConverterData.lower(proof), + FfiConverterData.lower(publicInput),$0) +} + ) +} + +private enum InitializationResult { + case ok + case contractVersionMismatch + case apiChecksumMismatch +} +// Use a global variables to perform the versioning checks. Swift ensures that +// the code inside is only computed once. +private var initializationResult: InitializationResult { + // Get the bindings contract version from our ComponentInterface + let bindings_contract_version = 24 + // Get the scaffolding contract version by calling the into the dylib + let scaffolding_contract_version = ffi_mopro_ffi_uniffi_contract_version() + if bindings_contract_version != scaffolding_contract_version { + return InitializationResult.contractVersionMismatch + } + if (uniffi_mopro_ffi_checksum_func_add() != 8411) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_func_generate_proof2() != 40187) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_func_hello() != 46136) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_func_initialize_mopro() != 17540) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_func_initialize_mopro_dylib() != 64476) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_func_verify_proof2() != 37192) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_method_moprocircom_generate_proof() != 64602) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_method_moprocircom_setup() != 57700) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_method_moprocircom_verify_proof() != 61522) { + return InitializationResult.apiChecksumMismatch + } + if (uniffi_mopro_ffi_checksum_constructor_moprocircom_new() != 42205) { + return InitializationResult.apiChecksumMismatch + } + + return InitializationResult.ok +} + +private func uniffiEnsureInitialized() { + switch initializationResult { + case .ok: + break + case .contractVersionMismatch: + fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project") + case .apiChecksumMismatch: + fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } +} \ No newline at end of file diff --git a/app/ios/MoproKit/Example/MoproKit.xcodeproj/project.pbxproj b/app/ios/MoproKit/Example/MoproKit.xcodeproj/project.pbxproj new file mode 100644 index 000000000..5c436abc2 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit.xcodeproj/project.pbxproj @@ -0,0 +1,670 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2A418AB02AF4B1200004B747 /* CircomUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A418AAF2AF4B1200004B747 /* CircomUITests.swift */; }; + 2A6E5BAF2AF499460052A601 /* CircomTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A6E5BAE2AF499460052A601 /* CircomTests.swift */; }; + 4384FD09A96F702A375841EE /* Pods_MoproKit_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 78B0F9CBE5DD22576996A993 /* Pods_MoproKit_Tests.framework */; }; + 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; + 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; + 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; + 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; + 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; + 7A38AEC233A3880A843B0133 /* Pods_MoproKit_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BE5A40EAC7D019B9C7566CA /* Pods_MoproKit_Example.framework */; }; + CE2C1B8C2AFFCC5E002AF8BC /* main.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CE2C1B8B2AFFCC5E002AF8BC /* main.wasm */; }; + CE2C1B8D2AFFCC5E002AF8BC /* main.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CE2C1B8B2AFFCC5E002AF8BC /* main.wasm */; }; + CE5A5C062AD43A790074539D /* keccak256_256_test.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CE5A5C052AD43A790074539D /* keccak256_256_test.wasm */; }; + CE5A5C072AD43A790074539D /* keccak256_256_test.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CE5A5C052AD43A790074539D /* keccak256_256_test.wasm */; }; + CE5A5C092AD43A860074539D /* keccak256_256_test.r1cs in Resources */ = {isa = PBXBuildFile; fileRef = CE5A5C082AD43A860074539D /* keccak256_256_test.r1cs */; }; + CE5A5C0A2AD43A860074539D /* keccak256_256_test.r1cs in Resources */ = {isa = PBXBuildFile; fileRef = CE5A5C082AD43A860074539D /* keccak256_256_test.r1cs */; }; + CEA2D12F2AB96A7A00F292D2 /* multiplier2.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CEA2D12E2AB96A7A00F292D2 /* multiplier2.wasm */; }; + CEA2D1302AB96A7A00F292D2 /* multiplier2.wasm in Resources */ = {isa = PBXBuildFile; fileRef = CEA2D12E2AB96A7A00F292D2 /* multiplier2.wasm */; }; + CEA2D1322AB96AB500F292D2 /* multiplier2.r1cs in Resources */ = {isa = PBXBuildFile; fileRef = CEA2D1312AB96AB500F292D2 /* multiplier2.r1cs */; }; + CEA2D1332AB96AB500F292D2 /* multiplier2.r1cs in Resources */ = {isa = PBXBuildFile; fileRef = CEA2D1312AB96AB500F292D2 /* multiplier2.r1cs */; }; + CEB804502AFF81960063F091 /* KeccakSetupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB8044F2AFF81960063F091 /* KeccakSetupViewController.swift */; }; + CEB804562AFF81AF0063F091 /* KeccakZkeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB804552AFF81AF0063F091 /* KeccakZkeyViewController.swift */; }; + CEB804582AFF81BF0063F091 /* RSAViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB804572AFF81BF0063F091 /* RSAViewController.swift */; }; + E69338642AFFDB1A00B80312 /* AnonAadhaarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E69338632AFFDB1A00B80312 /* AnonAadhaarViewController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 607FACC81AFB9204008FA782 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 607FACCF1AFB9204008FA782; + remoteInfo = MoproKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1E5E014D70B48C9A59F14658 /* Pods-MoproKit_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoproKit_Example.release.xcconfig"; path = "Target Support Files/Pods-MoproKit_Example/Pods-MoproKit_Example.release.xcconfig"; sourceTree = ""; }; + 2A418AAF2AF4B1200004B747 /* CircomUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircomUITests.swift; sourceTree = ""; }; + 2A6E5BAE2AF499460052A601 /* CircomTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircomTests.swift; sourceTree = ""; }; + 47F8ADB0AC4168C6E874818D /* MoproKit.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = MoproKit.podspec; path = ../MoproKit.podspec; sourceTree = ""; }; + 5DAF212A114DFA0C9F4282B2 /* Pods-MoproKit_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoproKit_Tests.debug.xcconfig"; path = "Target Support Files/Pods-MoproKit_Tests/Pods-MoproKit_Tests.debug.xcconfig"; sourceTree = ""; }; + 607FACD01AFB9204008FA782 /* MoproKit_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MoproKit_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 607FACE51AFB9204008FA782 /* MoproKit_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MoproKit_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 78B0F9CBE5DD22576996A993 /* Pods_MoproKit_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MoproKit_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8BE5A40EAC7D019B9C7566CA /* Pods_MoproKit_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MoproKit_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 90EAF1BEF8AD3C193665DBED /* Pods-MoproKit_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoproKit_Tests.release.xcconfig"; path = "Target Support Files/Pods-MoproKit_Tests/Pods-MoproKit_Tests.release.xcconfig"; sourceTree = ""; }; + 92580ABC3B6DBAD1A9544456 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; + B4016A34BBB20BC381CCFC2D /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + C61628A63419B5C140B24AF7 /* Pods-MoproKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoproKit_Example.debug.xcconfig"; path = "Target Support Files/Pods-MoproKit_Example/Pods-MoproKit_Example.debug.xcconfig"; sourceTree = ""; }; + CE2C1B8B2AFFCC5E002AF8BC /* main.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; name = main.wasm; path = "../../../../../mopro-core/examples/circom/rsa/target/main_js/main.wasm"; sourceTree = ""; }; + CE5A5C052AD43A790074539D /* keccak256_256_test.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; name = keccak256_256_test.wasm; path = "../../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm"; sourceTree = ""; }; + CE5A5C082AD43A860074539D /* keccak256_256_test.r1cs */ = {isa = PBXFileReference; lastKnownFileType = file; name = keccak256_256_test.r1cs; path = "../../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test.r1cs"; sourceTree = ""; }; + CEA2D12E2AB96A7A00F292D2 /* multiplier2.wasm */ = {isa = PBXFileReference; lastKnownFileType = file; name = multiplier2.wasm; path = "../../../../../mopro-core/examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm"; sourceTree = ""; }; + CEA2D1312AB96AB500F292D2 /* multiplier2.r1cs */ = {isa = PBXFileReference; lastKnownFileType = file; name = multiplier2.r1cs; path = "../../../../../mopro-core/examples/circom/multiplier2/target/multiplier2.r1cs"; sourceTree = ""; }; + CEB8044F2AFF81960063F091 /* KeccakSetupViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeccakSetupViewController.swift; sourceTree = ""; }; + CEB804552AFF81AF0063F091 /* KeccakZkeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeccakZkeyViewController.swift; sourceTree = ""; }; + CEB804572AFF81BF0063F091 /* RSAViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RSAViewController.swift; sourceTree = ""; }; + E69338632AFFDB1A00B80312 /* AnonAadhaarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnonAadhaarViewController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 607FACCD1AFB9204008FA782 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7A38AEC233A3880A843B0133 /* Pods_MoproKit_Example.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 607FACE21AFB9204008FA782 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4384FD09A96F702A375841EE /* Pods_MoproKit_Tests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 164B820D208F5EFE221D6A86 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8BE5A40EAC7D019B9C7566CA /* Pods_MoproKit_Example.framework */, + 78B0F9CBE5DD22576996A993 /* Pods_MoproKit_Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 607FACC71AFB9204008FA782 = { + isa = PBXGroup; + children = ( + 607FACF51AFB993E008FA782 /* Podspec Metadata */, + 607FACD21AFB9204008FA782 /* Example for MoproKit */, + 607FACE81AFB9204008FA782 /* Tests */, + 607FACD11AFB9204008FA782 /* Products */, + EEB809FA0FFBEC7559BC7169 /* Pods */, + 164B820D208F5EFE221D6A86 /* Frameworks */, + ); + sourceTree = ""; + }; + 607FACD11AFB9204008FA782 /* Products */ = { + isa = PBXGroup; + children = ( + 607FACD01AFB9204008FA782 /* MoproKit_Example.app */, + 607FACE51AFB9204008FA782 /* MoproKit_Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 607FACD21AFB9204008FA782 /* Example for MoproKit */ = { + isa = PBXGroup; + children = ( + CEB804572AFF81BF0063F091 /* RSAViewController.swift */, + E69338632AFFDB1A00B80312 /* AnonAadhaarViewController.swift */, + CEB804552AFF81AF0063F091 /* KeccakZkeyViewController.swift */, + CEB8044F2AFF81960063F091 /* KeccakSetupViewController.swift */, + CEA2D1282AB9681E00F292D2 /* Resources */, + 607FACD51AFB9204008FA782 /* AppDelegate.swift */, + 607FACD71AFB9204008FA782 /* ViewController.swift */, + 607FACD91AFB9204008FA782 /* Main.storyboard */, + 607FACDC1AFB9204008FA782 /* Images.xcassets */, + 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, + 607FACD31AFB9204008FA782 /* Supporting Files */, + ); + name = "Example for MoproKit"; + path = MoproKit; + sourceTree = ""; + }; + 607FACD31AFB9204008FA782 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 607FACD41AFB9204008FA782 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 607FACE81AFB9204008FA782 /* Tests */ = { + isa = PBXGroup; + children = ( + 2A418AAF2AF4B1200004B747 /* CircomUITests.swift */, + 607FACE91AFB9204008FA782 /* Supporting Files */, + 2A6E5BAE2AF499460052A601 /* CircomTests.swift */, + ); + path = Tests; + sourceTree = ""; + }; + 607FACE91AFB9204008FA782 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 607FACEA1AFB9204008FA782 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { + isa = PBXGroup; + children = ( + 47F8ADB0AC4168C6E874818D /* MoproKit.podspec */, + B4016A34BBB20BC381CCFC2D /* README.md */, + 92580ABC3B6DBAD1A9544456 /* LICENSE */, + ); + name = "Podspec Metadata"; + sourceTree = ""; + }; + CEA2D1282AB9681E00F292D2 /* Resources */ = { + isa = PBXGroup; + children = ( + CE2C1B8B2AFFCC5E002AF8BC /* main.wasm */, + CE5A5C082AD43A860074539D /* keccak256_256_test.r1cs */, + CE5A5C052AD43A790074539D /* keccak256_256_test.wasm */, + CEA2D12E2AB96A7A00F292D2 /* multiplier2.wasm */, + CEA2D1312AB96AB500F292D2 /* multiplier2.r1cs */, + ); + path = Resources; + sourceTree = ""; + }; + EEB809FA0FFBEC7559BC7169 /* Pods */ = { + isa = PBXGroup; + children = ( + C61628A63419B5C140B24AF7 /* Pods-MoproKit_Example.debug.xcconfig */, + 1E5E014D70B48C9A59F14658 /* Pods-MoproKit_Example.release.xcconfig */, + 5DAF212A114DFA0C9F4282B2 /* Pods-MoproKit_Tests.debug.xcconfig */, + 90EAF1BEF8AD3C193665DBED /* Pods-MoproKit_Tests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 607FACCF1AFB9204008FA782 /* MoproKit_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "MoproKit_Example" */; + buildPhases = ( + C880BC635097821F74482E9F /* [CP] Check Pods Manifest.lock */, + 607FACCC1AFB9204008FA782 /* Sources */, + 607FACCD1AFB9204008FA782 /* Frameworks */, + 607FACCE1AFB9204008FA782 /* Resources */, + AE90EE4FFCA95237FBC047A3 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MoproKit_Example; + productName = MoproKit; + productReference = 607FACD01AFB9204008FA782 /* MoproKit_Example.app */; + productType = "com.apple.product-type.application"; + }; + 607FACE41AFB9204008FA782 /* MoproKit_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "MoproKit_Tests" */; + buildPhases = ( + 2A673A4155C4EBC1B609897B /* [CP] Check Pods Manifest.lock */, + 607FACE11AFB9204008FA782 /* Sources */, + 607FACE21AFB9204008FA782 /* Frameworks */, + 607FACE31AFB9204008FA782 /* Resources */, + 2B1BB55A83D0E5B7D03D5DA0 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 607FACE71AFB9204008FA782 /* PBXTargetDependency */, + ); + name = MoproKit_Tests; + productName = Tests; + productReference = 607FACE51AFB9204008FA782 /* MoproKit_Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 607FACC81AFB9204008FA782 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0830; + LastUpgradeCheck = 0830; + ORGANIZATIONNAME = CocoaPods; + TargetAttributes = { + 607FACCF1AFB9204008FA782 = { + CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = 5B29R5LYHQ; + LastSwiftMigration = 0900; + }; + 607FACE41AFB9204008FA782 = { + CreatedOnToolsVersion = 6.3.1; + DevelopmentTeam = 5B29R5LYHQ; + LastSwiftMigration = 0900; + TestTargetID = 607FACCF1AFB9204008FA782; + }; + }; + }; + buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "MoproKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 607FACC71AFB9204008FA782; + productRefGroup = 607FACD11AFB9204008FA782 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 607FACCF1AFB9204008FA782 /* MoproKit_Example */, + 607FACE41AFB9204008FA782 /* MoproKit_Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 607FACCE1AFB9204008FA782 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CEA2D1322AB96AB500F292D2 /* multiplier2.r1cs in Resources */, + 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, + 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, + CE5A5C062AD43A790074539D /* keccak256_256_test.wasm in Resources */, + CE2C1B8C2AFFCC5E002AF8BC /* main.wasm in Resources */, + 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, + CEA2D12F2AB96A7A00F292D2 /* multiplier2.wasm in Resources */, + CE5A5C092AD43A860074539D /* keccak256_256_test.r1cs in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 607FACE31AFB9204008FA782 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE5A5C0A2AD43A860074539D /* keccak256_256_test.r1cs in Resources */, + CE5A5C072AD43A790074539D /* keccak256_256_test.wasm in Resources */, + CE2C1B8D2AFFCC5E002AF8BC /* main.wasm in Resources */, + CEA2D1332AB96AB500F292D2 /* multiplier2.r1cs in Resources */, + CEA2D1302AB96A7A00F292D2 /* multiplier2.wasm in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2A673A4155C4EBC1B609897B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-MoproKit_Tests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 2B1BB55A83D0E5B7D03D5DA0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-MoproKit_Tests/Pods-MoproKit_Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", + "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MoproKit_Tests/Pods-MoproKit_Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + AE90EE4FFCA95237FBC047A3 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-MoproKit_Example/Pods-MoproKit_Example-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/MoproKit/MoproKit.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MoproKit.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MoproKit_Example/Pods-MoproKit_Example-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C880BC635097821F74482E9F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-MoproKit_Example-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 607FACCC1AFB9204008FA782 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CEB804582AFF81BF0063F091 /* RSAViewController.swift in Sources */, + CEB804562AFF81AF0063F091 /* KeccakZkeyViewController.swift in Sources */, + 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, + CEB804502AFF81960063F091 /* KeccakSetupViewController.swift in Sources */, + 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, + E69338642AFFDB1A00B80312 /* AnonAadhaarViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 607FACE11AFB9204008FA782 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2A6E5BAF2AF499460052A601 /* CircomTests.swift in Sources */, + 2A418AB02AF4B1200004B747 /* CircomUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 607FACCF1AFB9204008FA782 /* MoproKit_Example */; + targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 607FACD91AFB9204008FA782 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 607FACDA1AFB9204008FA782 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 607FACDF1AFB9204008FA782 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 607FACED1AFB9204008FA782 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 607FACEE1AFB9204008FA782 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 607FACF01AFB9204008FA782 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C61628A63419B5C140B24AF7 /* Pods-MoproKit_Example.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 5B29R5LYHQ; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + INFOPLIST_FILE = MoproKit/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MODULE_NAME = ExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = org.mopro.examples; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 607FACF11AFB9204008FA782 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1E5E014D70B48C9A59F14658 /* Pods-MoproKit_Example.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 5B29R5LYHQ; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + INFOPLIST_FILE = MoproKit/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MODULE_NAME = ExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = org.mopro.examples; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + 607FACF31AFB9204008FA782 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5DAF212A114DFA0C9F4282B2 /* Pods-MoproKit_Tests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/MoproKit_Example.app/MoproKit_Example"; + DEVELOPMENT_TEAM = 5B29R5LYHQ; + FRAMEWORK_SEARCH_PATHS = ( + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.mopro.examples.test; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoproKit_Example.app/MoproKit_Example"; + }; + name = Debug; + }; + 607FACF41AFB9204008FA782 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 90EAF1BEF8AD3C193665DBED /* Pods-MoproKit_Tests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/MoproKit_Example.app/MoproKit_Example"; + DEVELOPMENT_TEAM = 5B29R5LYHQ; + FRAMEWORK_SEARCH_PATHS = ( + "$(PLATFORM_DIR)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = org.mopro.examples.test; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoproKit_Example.app/MoproKit_Example"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "MoproKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 607FACED1AFB9204008FA782 /* Debug */, + 607FACEE1AFB9204008FA782 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "MoproKit_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 607FACF01AFB9204008FA782 /* Debug */, + 607FACF11AFB9204008FA782 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "MoproKit_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 607FACF31AFB9204008FA782 /* Debug */, + 607FACF41AFB9204008FA782 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 607FACC81AFB9204008FA782 /* Project object */; +} diff --git a/app/ios/MoproKit/Example/MoproKit.xcodeproj/xcshareddata/xcschemes/MoproKit-Example.xcscheme b/app/ios/MoproKit/Example/MoproKit.xcodeproj/xcshareddata/xcschemes/MoproKit-Example.xcscheme new file mode 100644 index 000000000..6db6dc2f9 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit.xcodeproj/xcshareddata/xcschemes/MoproKit-Example.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/MoproKit/Example/MoproKit/AnonAadhaarViewController.swift b/app/ios/MoproKit/Example/MoproKit/AnonAadhaarViewController.swift new file mode 100644 index 000000000..636041410 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/AnonAadhaarViewController.swift @@ -0,0 +1,192 @@ +// +// AnonAadhaarViewController.swift +// MoproKit_Example +// +// Created by Yanis Meziane on 11/11/2023. +// Copyright Β© 2023 CocoaPods. All rights reserved. +// + +import UIKit +import WebKit +import MoproKit + +class AnonAadhaarViewController: UIViewController, WKScriptMessageHandler, WKNavigationDelegate { + let webView = WKWebView() + let moproCircom = MoproKit.MoproCircom() + //var setupResult: SetupResult? + var generatedProof: Data? + var publicInputs: Data? + let containerView = UIView() + var textView = UITextView() + + override func viewDidLoad() { + super.viewDidLoad() + runInitAction() + setupUI() + + let contentController = WKUserContentController() + contentController.add(self, name: "startProvingHandler") + contentController.add(self, name: "messageHandler") + + let configuration = WKWebViewConfiguration() + configuration.userContentController = contentController + configuration.preferences.javaScriptEnabled = true + + // Assign the configuration to the WKWebView + let webView = WKWebView(frame: view.bounds, configuration: configuration) + webView.navigationDelegate = self + + view.addSubview(webView) + view.addSubview(textView) + + guard let url = URL(string: "https://webview-anon-adhaar.vercel.app/") else { return } + webView.load(URLRequest(url: url)) + } + + func setupUI() { + textView.isEditable = false + + textView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(textView) + + // Make text view visible + textView.heightAnchor.constraint(equalToConstant: 200).isActive = true + + NSLayoutConstraint.activate([ + textView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), + textView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20), + textView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20) + ]) + } + + + + @objc func runInitAction() { + // Update the textView on the main thread + DispatchQueue.main.async { + self.textView.text += "Initializing library\n" + } + + // Execute long-running tasks in the background + DispatchQueue.global(qos: .userInitiated).async { + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + do { + try initializeMopro() + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Again, update the UI on the main thread + DispatchQueue.main.async { + self.textView.text += "Initializing arkzkey took \(timeTaken) seconds.\n" + } + } catch { + // Handle errors - update UI on main thread + DispatchQueue.main.async { + self.textView.text += "An error occurred during initialization: \(error)\n" + } + } + } + } + + @objc func runProveAction(inputs: [String: [String]]) { + // Logic for prove (generate_proof2) + do { + textView.text += "Starts proving...\n" + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + //assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Store the generated proof and public inputs for later verification + generatedProof = generateProofResult.proof + publicInputs = generateProofResult.inputs + + print("Proof generation took \(timeTaken) seconds.\n") + + textView.text += "Proof generated!!! \n" + textView.text += "Proof generation took \(timeTaken) seconds.\n" + textView.text += "---\n" + runVerifyAction() + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + webView.frame = view.bounds + } + + struct Witness { + let signature: [String] + let modulus: [String] + let base_message: [String] + } + + // Implement WKScriptMessageHandler method + func provingContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + if message.name == "messageHandler" { + // Handle messages for "messageHandler" + print("Received message from JavaScript:", message.body) + } + } + + func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + if message.name == "startProvingHandler", let data = message.body as? [String: Any] { + // Check for the "witness" key in the received data + if let witnessData = data["witness"] as? [String: [String]] { + if let signature = witnessData["signature"], + let modulus = witnessData["modulus"], + let baseMessage = witnessData["base_message"] { + + let inputs: [String: [String]] = [ + "signature": signature, + "modulus": modulus, + "base_message": baseMessage + ] + + // Call your Swift function with the received witness data + runProveAction(inputs: inputs) + } + } else if let error = data["error"] as? String { + // Handle error data + print("Received error value from JavaScript:", error) + } else { + print("No valid data keys found in the message data.") + } + } + } + + @objc func runVerifyAction() { + // Logic for verify + guard let proof = generatedProof, + let publicInputs = publicInputs else { + print("Proof has not been generated yet.") + return + } + do { + // Verify Proof + let isValid = try verifyProof2(proof: proof, publicInput: publicInputs) + assert(isValid, "Proof verification should succeed") + + textView.text += "Proof verification succeeded.\n" + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } +} diff --git a/app/ios/MoproKit/Example/MoproKit/AppDelegate.swift b/app/ios/MoproKit/Example/MoproKit/AppDelegate.swift new file mode 100644 index 000000000..bd6ad93e3 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/AppDelegate.swift @@ -0,0 +1,52 @@ +// +// AppDelegate.swift +// MoproKit +// +// Created by 1552237 on 09/16/2023. +// Copyright (c) 2023 1552237. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + + window = UIWindow(frame: UIScreen.main.bounds) + let viewController = ViewController() + let navigationController = UINavigationController(rootViewController: viewController) + window?.rootViewController = navigationController + window?.makeKeyAndVisible() + + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/app/ios/MoproKit/Example/MoproKit/Base.lproj/LaunchScreen.xib b/app/ios/MoproKit/Example/MoproKit/Base.lproj/LaunchScreen.xib new file mode 100644 index 000000000..32e97361f --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/Base.lproj/LaunchScreen.xib @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/MoproKit/Example/MoproKit/Base.lproj/Main.storyboard b/app/ios/MoproKit/Example/MoproKit/Base.lproj/Main.storyboard new file mode 100644 index 000000000..2709ffc6e --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/Base.lproj/Main.storyboard @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/ios/MoproKit/Example/MoproKit/Images.xcassets/AppIcon.appiconset/Contents.json b/app/ios/MoproKit/Example/MoproKit/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..7006c9eeb --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,53 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/app/ios/MoproKit/Example/MoproKit/Info.plist b/app/ios/MoproKit/Example/MoproKit/Info.plist new file mode 100644 index 000000000..eb18faac5 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/Info.plist @@ -0,0 +1,39 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + + + diff --git a/app/ios/MoproKit/Example/MoproKit/KeccakSetupViewController.swift b/app/ios/MoproKit/Example/MoproKit/KeccakSetupViewController.swift new file mode 100644 index 000000000..51936e437 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/KeccakSetupViewController.swift @@ -0,0 +1,186 @@ +// +// ViewController.swift +// MoproKit +// +// Created by 1552237 on 09/16/2023. +// Copyright (c) 2023 1552237. All rights reserved. +// + +import UIKit +import MoproKit + +class KeccakSetupViewController: UIViewController { + + var setupButton = UIButton(type: .system) + var proveButton = UIButton(type: .system) + var verifyButton = UIButton(type: .system) + var textView = UITextView() + + let moproCircom = MoproKit.MoproCircom() + var setupResult: SetupResult? + var generatedProof: Data? + var publicInputs: Data? + + override func viewDidLoad() { + super.viewDidLoad() + + // Set title + let title = UILabel() + title.text = "Keccak256 (setup)" + title.textColor = .white + title.textAlignment = .center + navigationItem.titleView = title + navigationController?.navigationBar.isHidden = false + navigationController?.navigationBar.prefersLargeTitles = true + + // view.backgroundColor = .white + // navigationController?.navigationBar.prefersLargeTitles = true + // navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black] + // navigationController?.navigationBar.barTintColor = UIColor.white // or any other contrasting color + // self.title = "Keccak256 (setup)" + + setupUI() + } + + func setupUI() { + setupButton.setTitle("Setup", for: .normal) + proveButton.setTitle("Prove", for: .normal) + verifyButton.setTitle("Verify", for: .normal) + + textView.isEditable = false + + //self.title = "Keccak256 (setup)" + //view.backgroundColor = .black + + // Setup actions for buttons + setupButton.addTarget(self, action: #selector(runSetupAction), for: .touchUpInside) + proveButton.addTarget(self, action: #selector(runProveAction), for: .touchUpInside) + verifyButton.addTarget(self, action: #selector(runVerifyAction), for: .touchUpInside) + + setupButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + proveButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + verifyButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + + let stackView = UIStackView(arrangedSubviews: [setupButton, proveButton, verifyButton, textView]) + stackView.axis = .vertical + stackView.spacing = 10 + stackView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(stackView) + + // Make text view visible + textView.heightAnchor.constraint(equalToConstant: 200).isActive = true + + NSLayoutConstraint.activate([ + stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor), + stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor), + stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), + stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20) + ]) + } + + @objc func runSetupAction() { + // Logic for setup + if let wasmPath = Bundle.main.path(forResource: "keccak256_256_test", ofType: "wasm"), + let r1csPath = Bundle.main.path(forResource: "keccak256_256_test", ofType: "r1cs") { + + // Multiplier example + // if let wasmPath = Bundle.main.path(forResource: "multiplier2", ofType: "wasm"), + // let r1csPath = Bundle.main.path(forResource: "multiplier2", ofType: "r1cs") { + + do { + setupResult = try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath) + proveButton.isEnabled = true // Enable the Prove button upon successful setup + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } else { + print("Error getting paths for resources") + } + } + + @objc func runProveAction() { + // Logic for prove + guard let setupResult = setupResult else { + print("Setup is not completed yet.") + return + } + do { + // Prepare inputs + let inputVec: [UInt8] = [ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ] + let bits = bytesToBits(bytes: inputVec) + var inputs = [String: [String]]() + inputs["in"] = bits + + // Multiplier example + // var inputs = [String: [String]]() + // let a = 3 + // let b = 5 + // inputs["a"] = [String(a)] + // inputs["b"] = [String(b)] + + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Store the generated proof and public inputs for later verification + generatedProof = generateProofResult.proof + publicInputs = generateProofResult.inputs + + textView.text += "Proof generation took \(timeTaken) seconds.\n" + verifyButton.isEnabled = true // Enable the Verify button once proof has been generated + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + @objc func runVerifyAction() { + // Logic for verify + guard let setupResult = setupResult, + let proof = generatedProof, + let publicInputs = publicInputs else { + print("Setup is not completed or proof has not been generated yet.") + return + } + do { + // Verify Proof + let isValid = try moproCircom.verifyProof(proof: proof, publicInput: publicInputs) + assert(isValid, "Proof verification should succeed") + + textView.text += "Proof verification succeeded.\n" + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } +} + +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} diff --git a/app/ios/MoproKit/Example/MoproKit/KeccakZkeyViewController.swift b/app/ios/MoproKit/Example/MoproKit/KeccakZkeyViewController.swift new file mode 100644 index 000000000..ceca744d7 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/KeccakZkeyViewController.swift @@ -0,0 +1,147 @@ +// +// ViewController.swift +// MoproKit +// +// Created by 1552237 on 09/16/2023. +// Copyright (c) 2023 1552237. All rights reserved. +// + +import UIKit +import MoproKit + +class KeccakZkeyViewController: UIViewController { + + var initButton = UIButton(type: .system) + var proveButton = UIButton(type: .system) + var verifyButton = UIButton(type: .system) + var textView = UITextView() + + let moproCircom = MoproKit.MoproCircom() + //var setupResult: SetupResult? + var generatedProof: Data? + var publicInputs: Data? + + override func viewDidLoad() { + super.viewDidLoad() + + // Set title + let title = UILabel() + title.text = "Keccak256 (Zkey)" + title.textColor = .white + title.textAlignment = .center + navigationItem.titleView = title + navigationController?.navigationBar.isHidden = false + navigationController?.navigationBar.prefersLargeTitles = true + + setupUI() + } + + func setupUI() { + initButton.setTitle("Init", for: .normal) + proveButton.setTitle("Prove", for: .normal) + verifyButton.setTitle("Verify", for: .normal) + + // Uncomment once init separate + //proveButton.isEnabled = false + proveButton.isEnabled = true + verifyButton.isEnabled = false + textView.isEditable = false + + // Setup actions for buttons + initButton.addTarget(self, action: #selector(runInitAction), for: .touchUpInside) + proveButton.addTarget(self, action: #selector(runProveAction), for: .touchUpInside) + verifyButton.addTarget(self, action: #selector(runVerifyAction), for: .touchUpInside) + + initButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + proveButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + verifyButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + + let stackView = UIStackView(arrangedSubviews: [initButton, proveButton, verifyButton, textView]) + stackView.axis = .vertical + stackView.spacing = 10 + stackView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(stackView) + + // Make text view visible + textView.heightAnchor.constraint(equalToConstant: 200).isActive = true + + NSLayoutConstraint.activate([ + stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor), + stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor), + stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), + stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20) + ]) + } + + @objc func runInitAction() { + // Logic for init + do { + textView.text += "Initializing library\n" + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + try initializeMopro() + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + textView.text += "Initializing arkzkey took \(timeTaken) seconds.\n" + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + @objc func runProveAction() { + // Logic for prove (generate_proof2) + do { + // Prepare inputs + let inputVec: [UInt8] = [ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ] + let bits = bytesToBits(bytes: inputVec) + var inputs = [String: [String]]() + inputs["in"] = bits + + // Expected outputs + let outputVec: [UInt8] = [ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ] + let outputBits: [String] = bytesToBits(bytes: outputVec) + // let expectedOutput: [UInt8] = serializeOutputs(outputBits) + + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + //assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Store the generated proof and public inputs for later verification + generatedProof = generateProofResult.proof + publicInputs = generateProofResult.inputs + + textView.text += "Proof generation took \(timeTaken) seconds.\n" + // TODO: Enable verify + verifyButton.isEnabled = false + //verifyButton.isEnabled = true // Enable the Verify button once proof has been generated + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + @objc func runVerifyAction() { + // Logic for verify + } +} diff --git a/app/ios/MoproKit/Example/MoproKit/RSAViewController.swift b/app/ios/MoproKit/Example/MoproKit/RSAViewController.swift new file mode 100644 index 000000000..80ddadc93 --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/RSAViewController.swift @@ -0,0 +1,235 @@ +// +// ViewController.swift +// MoproKit +// +// Created by 1552237 on 09/16/2023. +// Copyright (c) 2023 1552237. All rights reserved. +// + +import UIKit +import MoproKit + +class RSAViewController: UIViewController { + + var initButton = UIButton(type: .system) + var proveButton = UIButton(type: .system) + var verifyButton = UIButton(type: .system) + var textView = UITextView() + + let moproCircom = MoproKit.MoproCircom() + //var setupResult: SetupResult? + var generatedProof: Data? + var publicInputs: Data? + + override func viewDidLoad() { + super.viewDidLoad() + + // Set title + let title = UILabel() + title.text = "RSA (Zkey)" + title.textColor = .white + title.textAlignment = .center + navigationItem.titleView = title + navigationController?.navigationBar.isHidden = false + navigationController?.navigationBar.prefersLargeTitles = true + + setupUI() + } + + func setupUI() { + initButton.setTitle("Init", for: .normal) + proveButton.setTitle("Prove", for: .normal) + verifyButton.setTitle("Verify", for: .normal) + + // Uncomment once init separate + //proveButton.isEnabled = false + proveButton.isEnabled = true + verifyButton.isEnabled = false + textView.isEditable = false + + // Setup actions for buttons + initButton.addTarget(self, action: #selector(runInitAction), for: .touchUpInside) + proveButton.addTarget(self, action: #selector(runProveAction), for: .touchUpInside) + verifyButton.addTarget(self, action: #selector(runVerifyAction), for: .touchUpInside) + + initButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + proveButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + verifyButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + + let stackView = UIStackView(arrangedSubviews: [initButton, proveButton, verifyButton, textView]) + stackView.axis = .vertical + stackView.spacing = 10 + stackView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(stackView) + + // Make text view visible + textView.heightAnchor.constraint(equalToConstant: 200).isActive = true + + NSLayoutConstraint.activate([ + stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor), + stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor), + stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), + stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20) + ]) + } + + @objc func runInitAction() { + // Update the textView on the main thread + DispatchQueue.main.async { + self.textView.text += "Initializing library\n" + } + + // Execute long-running tasks in the background + DispatchQueue.global(qos: .userInitiated).async { + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + do { + try initializeMopro() + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Again, update the UI on the main thread + DispatchQueue.main.async { + self.textView.text += "Initializing arkzkey took \(timeTaken) seconds.\n" + } + } catch { + // Handle errors - update UI on main thread + DispatchQueue.main.async { + self.textView.text += "An error occurred during initialization: \(error)\n" + } + } + } + } + + @objc func runProveAction() { + // Logic for prove (generate_proof2) + do { + // Prepare inputs + let signature: [String] = [ + "3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493", + ] + + let modulus: [String] = [ + "13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501", + ] + + let base_message: [String] = ["18114495772705111902", "2254271930739856077", + "2068851770", "0","0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", + "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0","0", "0", "0","0", + ] + + var inputs = [String: [String]]() + inputs["signature"] = signature; + inputs["modulus"] = modulus; + inputs["base_message"] = base_message; + + let start = CFAbsoluteTimeGetCurrent() + + // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Store the generated proof and public inputs for later verification + generatedProof = generateProofResult.proof + publicInputs = generateProofResult.inputs + + textView.text += "Proof generation took \(timeTaken) seconds.\n" + verifyButton.isEnabled = true + } catch let error as MoproError { + print("MoproError: \(error)") + textView.text += "MoproError: \(error)\n" + } catch { + print("Unexpected error: \(error)") + textView.text += "Unexpected error: \(error)\n" + } + } + + @objc func runVerifyAction() { + // Logic for verify + guard let proof = generatedProof, + let publicInputs = publicInputs else { + print("Proof has not been generated yet.") + return + } + do { + // Verify Proof + let isValid = try verifyProof2(proof: proof, publicInput: publicInputs) + assert(isValid, "Proof verification should succeed") + + textView.text += "Proof verification succeeded.\n" + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } +} diff --git a/app/ios/MoproKit/Example/MoproKit/ViewController.swift b/app/ios/MoproKit/Example/MoproKit/ViewController.swift new file mode 100644 index 000000000..934e2266a --- /dev/null +++ b/app/ios/MoproKit/Example/MoproKit/ViewController.swift @@ -0,0 +1,100 @@ +// +// ViewController.swift +// MoproKit +// +// Created by 1552237 on 09/16/2023. +// Copyright (c) 2023 1552237. All rights reserved. +// + +import UIKit +import MoproKit + + +// Main ViewController +class ViewController: UIViewController { + + let keccakSetupButton = UIButton(type: .system) + let keccakZkeyButton = UIButton(type: .system) + let rsaButton = UIButton(type: .system) + let aadhaarButton = UIButton(type: .system) + + override func viewDidLoad() { + super.viewDidLoad() + // TODO: Improve style + + // Set title + let title = UILabel() + title.text = "Mopro Examples" + title.textColor = .white + title.textAlignment = .center + navigationItem.titleView = title + navigationController?.navigationBar.isHidden = false + navigationController?.navigationBar.prefersLargeTitles = true + + setupMainUI() + } + + func setupMainUI() { + keccakSetupButton.setTitle("Keccak (Setup)", for: .normal) + keccakSetupButton.addTarget(self, action: #selector(openKeccakSetup), for: .touchUpInside) + + keccakZkeyButton.setTitle("Keccak (Zkey)", for: .normal) + keccakZkeyButton.addTarget(self, action: #selector(openKeccakZkey), for: .touchUpInside) + + rsaButton.setTitle("RSA", for: .normal) + rsaButton.addTarget(self, action: #selector(openRSA), for: .touchUpInside) + + aadhaarButton.setTitle("Anon Aadhaar", for: .normal) + aadhaarButton.addTarget(self, action: #selector(openAnonAadhaar), for: .touchUpInside) + + + keccakSetupButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + keccakZkeyButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + rsaButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + +// self.title = "Mopro Examples" +// navigationController?.navigationBar.prefersLargeTitles = true + + + let stackView = UIStackView(arrangedSubviews: [keccakSetupButton, keccakZkeyButton, rsaButton, aadhaarButton]) + stackView.axis = .vertical + stackView.spacing = 20 + stackView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(stackView) + + NSLayoutConstraint.activate([ + stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor), + stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor) + ]) + } + + @objc func openKeccakSetup() { + let keccakSetupVC = KeccakSetupViewController() + navigationController?.pushViewController(keccakSetupVC, animated: true) + } + + @objc func openKeccakZkey() { + let keccakZkeyVC = KeccakZkeyViewController() + navigationController?.pushViewController(keccakZkeyVC, animated: true) + } + + @objc func openRSA() { + let rsaVC = RSAViewController() + navigationController?.pushViewController(rsaVC, animated: true) + } + + @objc func openAnonAadhaar() { + let anonAadhaarVC = AnonAadhaarViewController() + navigationController?.pushViewController(anonAadhaarVC, animated: true) + } +} + +// // Make buttons bigger +// proveButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) +// verifyButton.contentEdgeInsets = UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16) + +// NSLayoutConstraint.activate([ +// stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), +// stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20), +// stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20) +// ]) diff --git a/app/ios/MoproKit/Example/Podfile b/app/ios/MoproKit/Example/Podfile new file mode 100644 index 000000000..e27037177 --- /dev/null +++ b/app/ios/MoproKit/Example/Podfile @@ -0,0 +1,24 @@ +use_frameworks! + +platform :ios, '13.0' + +target 'MoproKit_Example' do + pod 'MoproKit', :path => '../' + + target 'MoproKit_Tests' do + inherit! :search_paths + + pod 'Quick', '~> 2.2.0' + pod 'Nimble', '~> 10.0.0' + end +end + +post_install do |installer| + installer.generated_projects.each do |project| + project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' + end + end + end +end \ No newline at end of file diff --git a/app/ios/MoproKit/Example/Tests/CircomTests.swift b/app/ios/MoproKit/Example/Tests/CircomTests.swift new file mode 100644 index 000000000..03e60a908 --- /dev/null +++ b/app/ios/MoproKit/Example/Tests/CircomTests.swift @@ -0,0 +1,109 @@ +@testable import MoproKit +import XCTest + +final class CircomTests: XCTestCase { + + let moproCircom = MoproKit.MoproCircom() + + func testMultiplier() { + let wasmPath = Bundle.main.path(forResource: "multiplier2", ofType: "wasm")! + let r1csPath = Bundle.main.path(forResource: "multiplier2", ofType: "r1cs")! + XCTAssertNoThrow(try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath), "Mopro circom setup failed") + + do { + var inputs = [String: [String]]() + let a = 3 + let b = 5 + let c = a*b + inputs["a"] = [String(a)] + inputs["b"] = [String(b)] + let outputs: [String] = [String(c), String(a)] + let expectedOutput: [UInt8] = serializeOutputs(outputs) + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + XCTAssertFalse(generateProofResult.proof.isEmpty, "Proof should not be empty") + XCTAssertEqual(Data(expectedOutput), generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + let isValid = try moproCircom.verifyProof(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + XCTAssertTrue(isValid, "Proof verification should succeed") + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } + + func testKeccak256() { + let wasmPath = Bundle.main.path(forResource: "keccak256_256_test", ofType: "wasm")! + let r1csPath = Bundle.main.path(forResource: "keccak256_256_test", ofType: "r1cs")! + XCTAssertNoThrow(try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath), "Mopro circom setup failed") + + do { + // Prepare inputs + let inputVec: [UInt8] = [ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ] + let bits = bytesToBits(bytes: inputVec) + var inputs = [String: [String]]() + inputs["in"] = bits + + // Expected outputs + let outputVec: [UInt8] = [ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ] + let outputBits: [String] = bytesToBits(bytes: outputVec) + let expectedOutput: [UInt8] = serializeOutputs(outputBits) + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + XCTAssertFalse(generateProofResult.proof.isEmpty, "Proof should not be empty") + XCTAssertEqual(Data(expectedOutput), generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + let isValid = try moproCircom.verifyProof(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + XCTAssertTrue(isValid, "Proof verification should succeed") + } catch let error as MoproError { + print("MoproError: \(error)") + } catch { + print("Unexpected error: \(error)") + } + } +} + +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} diff --git a/app/ios/MoproKit/Example/Tests/CircomUITests.swift b/app/ios/MoproKit/Example/Tests/CircomUITests.swift new file mode 100644 index 000000000..e5e5d1e32 --- /dev/null +++ b/app/ios/MoproKit/Example/Tests/CircomUITests.swift @@ -0,0 +1,13 @@ +import XCTest +@testable import MoproKit_Example + +final class CircomUITests: XCTestCase { + + let ui = KeccakSetupViewController() + + func testSuccessUI() { + XCTAssertNoThrow(ui.setupUI(), "Setup UI failed") + XCTAssertNoThrow(ui.runProveAction(), "Prove action failed") + XCTAssertNoThrow(ui.runVerifyAction(), "Verify action failed") + } +} diff --git a/app/ios/AwesomeProjectTests/Info.plist b/app/ios/MoproKit/Example/Tests/Info.plist similarity index 100% rename from app/ios/AwesomeProjectTests/Info.plist rename to app/ios/MoproKit/Example/Tests/Info.plist diff --git a/app/ios/MoproKit/Include/moproFFI.h b/app/ios/MoproKit/Include/moproFFI.h new file mode 100644 index 000000000..745221d87 --- /dev/null +++ b/app/ios/MoproKit/Include/moproFFI.h @@ -0,0 +1,238 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! + +#pragma once + +#include +#include +#include + +// The following structs are used to implement the lowest level +// of the FFI, and thus useful to multiple uniffied crates. +// We ensure they are declared exactly once, with a header guard, UNIFFI_SHARED_H. +#ifdef UNIFFI_SHARED_H + // We also try to prevent mixing versions of shared uniffi header structs. + // If you add anything to the #else block, you must increment the version suffix in UNIFFI_SHARED_HEADER_V4 + #ifndef UNIFFI_SHARED_HEADER_V4 + #error Combining helper code from multiple versions of uniffi is not supported + #endif // ndef UNIFFI_SHARED_HEADER_V4 +#else +#define UNIFFI_SHARED_H +#define UNIFFI_SHARED_HEADER_V4 +// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ +// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ + +typedef struct RustBuffer +{ + int32_t capacity; + int32_t len; + uint8_t *_Nullable data; +} RustBuffer; + +typedef int32_t (*ForeignCallback)(uint64_t, int32_t, const uint8_t *_Nonnull, int32_t, RustBuffer *_Nonnull); + +// Task defined in Rust that Swift executes +typedef void (*UniFfiRustTaskCallback)(const void * _Nullable, int8_t); + +// Callback to execute Rust tasks using a Swift Task +// +// Args: +// executor: ForeignExecutor lowered into a size_t value +// delay: Delay in MS +// task: UniFfiRustTaskCallback to call +// task_data: data to pass the task callback +typedef int8_t (*UniFfiForeignExecutorCallback)(size_t, uint32_t, UniFfiRustTaskCallback _Nullable, const void * _Nullable); + +typedef struct ForeignBytes +{ + int32_t len; + const uint8_t *_Nullable data; +} ForeignBytes; + +// Error definitions +typedef struct RustCallStatus { + int8_t code; + RustBuffer errorBuf; +} RustCallStatus; + +// ⚠️ Attention: If you change this #else block (ending in `#endif // def UNIFFI_SHARED_H`) you *must* ⚠️ +// ⚠️ increment the version suffix in all instances of UNIFFI_SHARED_HEADER_V4 in this file. ⚠️ +#endif // def UNIFFI_SHARED_H + +// Continuation callback for UniFFI Futures +typedef void (*UniFfiRustFutureContinuation)(void * _Nonnull, int8_t); + +// Scaffolding functions +void uniffi_mopro_ffi_fn_free_moprocircom(void*_Nonnull ptr, RustCallStatus *_Nonnull out_status +); +void*_Nonnull uniffi_mopro_ffi_fn_constructor_moprocircom_new(RustCallStatus *_Nonnull out_status + +); +RustBuffer uniffi_mopro_ffi_fn_method_moprocircom_generate_proof(void*_Nonnull ptr, RustBuffer circuit_inputs, RustCallStatus *_Nonnull out_status +); +RustBuffer uniffi_mopro_ffi_fn_method_moprocircom_setup(void*_Nonnull ptr, RustBuffer wasm_path, RustBuffer r1cs_path, RustCallStatus *_Nonnull out_status +); +int8_t uniffi_mopro_ffi_fn_method_moprocircom_verify_proof(void*_Nonnull ptr, RustBuffer proof, RustBuffer public_input, RustCallStatus *_Nonnull out_status +); +uint32_t uniffi_mopro_ffi_fn_func_add(uint32_t a, uint32_t b, RustCallStatus *_Nonnull out_status +); +RustBuffer uniffi_mopro_ffi_fn_func_generate_proof2(RustBuffer circuit_inputs, RustCallStatus *_Nonnull out_status +); +RustBuffer uniffi_mopro_ffi_fn_func_hello(RustCallStatus *_Nonnull out_status + +); +void uniffi_mopro_ffi_fn_func_initialize_mopro(RustCallStatus *_Nonnull out_status + +); +void uniffi_mopro_ffi_fn_func_initialize_mopro_dylib(RustBuffer dylib_path, RustCallStatus *_Nonnull out_status +); +int8_t uniffi_mopro_ffi_fn_func_verify_proof2(RustBuffer proof, RustBuffer public_input, RustCallStatus *_Nonnull out_status +); +RustBuffer ffi_mopro_ffi_rustbuffer_alloc(int32_t size, RustCallStatus *_Nonnull out_status +); +RustBuffer ffi_mopro_ffi_rustbuffer_from_bytes(ForeignBytes bytes, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rustbuffer_free(RustBuffer buf, RustCallStatus *_Nonnull out_status +); +RustBuffer ffi_mopro_ffi_rustbuffer_reserve(RustBuffer buf, int32_t additional, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_continuation_callback_set(UniFfiRustFutureContinuation _Nonnull callback +); +void ffi_mopro_ffi_rust_future_poll_u8(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_u8(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_u8(void* _Nonnull handle +); +uint8_t ffi_mopro_ffi_rust_future_complete_u8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_i8(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_i8(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_i8(void* _Nonnull handle +); +int8_t ffi_mopro_ffi_rust_future_complete_i8(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_u16(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_u16(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_u16(void* _Nonnull handle +); +uint16_t ffi_mopro_ffi_rust_future_complete_u16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_i16(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_i16(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_i16(void* _Nonnull handle +); +int16_t ffi_mopro_ffi_rust_future_complete_i16(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_u32(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_u32(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_u32(void* _Nonnull handle +); +uint32_t ffi_mopro_ffi_rust_future_complete_u32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_i32(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_i32(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_i32(void* _Nonnull handle +); +int32_t ffi_mopro_ffi_rust_future_complete_i32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_u64(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_u64(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_u64(void* _Nonnull handle +); +uint64_t ffi_mopro_ffi_rust_future_complete_u64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_i64(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_i64(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_i64(void* _Nonnull handle +); +int64_t ffi_mopro_ffi_rust_future_complete_i64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_f32(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_f32(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_f32(void* _Nonnull handle +); +float ffi_mopro_ffi_rust_future_complete_f32(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_f64(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_f64(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_f64(void* _Nonnull handle +); +double ffi_mopro_ffi_rust_future_complete_f64(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_pointer(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_pointer(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_pointer(void* _Nonnull handle +); +void*_Nonnull ffi_mopro_ffi_rust_future_complete_pointer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_rust_buffer(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_rust_buffer(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_rust_buffer(void* _Nonnull handle +); +RustBuffer ffi_mopro_ffi_rust_future_complete_rust_buffer(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +void ffi_mopro_ffi_rust_future_poll_void(void* _Nonnull handle, void* _Nonnull uniffi_callback +); +void ffi_mopro_ffi_rust_future_cancel_void(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_free_void(void* _Nonnull handle +); +void ffi_mopro_ffi_rust_future_complete_void(void* _Nonnull handle, RustCallStatus *_Nonnull out_status +); +uint16_t uniffi_mopro_ffi_checksum_func_add(void + +); +uint16_t uniffi_mopro_ffi_checksum_func_generate_proof2(void + +); +uint16_t uniffi_mopro_ffi_checksum_func_hello(void + +); +uint16_t uniffi_mopro_ffi_checksum_func_initialize_mopro(void + +); +uint16_t uniffi_mopro_ffi_checksum_func_initialize_mopro_dylib(void + +); +uint16_t uniffi_mopro_ffi_checksum_func_verify_proof2(void + +); +uint16_t uniffi_mopro_ffi_checksum_method_moprocircom_generate_proof(void + +); +uint16_t uniffi_mopro_ffi_checksum_method_moprocircom_setup(void + +); +uint16_t uniffi_mopro_ffi_checksum_method_moprocircom_verify_proof(void + +); +uint16_t uniffi_mopro_ffi_checksum_constructor_moprocircom_new(void + +); +uint32_t ffi_mopro_ffi_uniffi_contract_version(void + +); + diff --git a/circuits/circuits/rsa/LICENSE b/app/ios/MoproKit/LICENSE similarity index 87% rename from circuits/circuits/rsa/LICENSE rename to app/ios/MoproKit/LICENSE index a1c6d7a8c..46df76b78 100644 --- a/circuits/circuits/rsa/LICENSE +++ b/app/ios/MoproKit/LICENSE @@ -1,6 +1,4 @@ -MIT License - -Copyright (c) 2023 zk-email +Copyright (c) 2023 1552237 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,13 +7,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/app/ios/MoproKit/Libs/.gitkeep b/app/ios/MoproKit/Libs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/app/ios/MoproKit/MoproKit.podspec b/app/ios/MoproKit/MoproKit.podspec new file mode 100644 index 000000000..a7be6ace4 --- /dev/null +++ b/app/ios/MoproKit/MoproKit.podspec @@ -0,0 +1,50 @@ +# +# Be sure to run `pod lib lint MoproKit.podspec' to ensure this is a +# valid spec before submitting. +# +# Any lines starting with a # are optional, but their use is encouraged +# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html +# + +Pod::Spec.new do |s| + s.name = 'MoproKit' + s.version = '0.1.0' + s.summary = 'A short description of MoproKit.' + +# This description is used to generate tags and improve search results. +# * Think: What does it do? Why did you write it? What is the focus? +# * Try to keep it short, snappy and to the point. +# * Write the description between the DESC delimiters below. +# * Finally, don't worry about the indent, CocoaPods strips it! + + s.description = <<-DESC +TODO: Add long description of the pod here. + DESC + + s.homepage = 'https://github.com/1552237/MoproKit' + # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' + s.license = { :type => 'MIT', :file => 'LICENSE' } + s.author = { '1552237' => 'oskarth@titanproxy.com' } + s.source = { :git => 'https://github.com/1552237/MoproKit.git', :tag => s.version.to_s } + # s.social_media_url = 'https://twitter.com/' + + s.ios.deployment_target = '13.0' + + s.source_files = 'MoproKit/Classes/**/*' + + # libmopro library, headers and modulemap + # XXX: static library is not in source control, and needs to be inlcuded manually + # Have to be mindful of architecture and simulator or not here, should be improved + s.preserve_paths = 'Libs/libmopro_uniffi.a' + s.vendored_libraries = 'Libs/libmopro_uniffi.a' + s.source_files = 'Include/*.h', 'Bindings/*.swift' + s.resource = 'Resources/moproFFI.modulemap' + + # s.resource_bundles = { + # 'MoproKit' => ['MoproKit/Assets/*.png'] + # } + + # s.public_header_files = 'Pod/Classes/**/*.h' + # s.frameworks = 'UIKit', 'MapKit' + # s.dependency 'AFNetworking', '~> 2.3' +end diff --git a/app/ios/MoproKit/MoproKit/Assets/.gitkeep b/app/ios/MoproKit/MoproKit/Assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/app/ios/MoproKit/README.md b/app/ios/MoproKit/README.md new file mode 100644 index 000000000..98e7a94eb --- /dev/null +++ b/app/ios/MoproKit/README.md @@ -0,0 +1,29 @@ +# MoproKit + +[![CI Status](https://img.shields.io/travis/1552237/MoproKit.svg?style=flat)](https://travis-ci.org/1552237/MoproKit) +[![Version](https://img.shields.io/cocoapods/v/MoproKit.svg?style=flat)](https://cocoapods.org/pods/MoproKit) +[![License](https://img.shields.io/cocoapods/l/MoproKit.svg?style=flat)](https://cocoapods.org/pods/MoproKit) +[![Platform](https://img.shields.io/cocoapods/p/MoproKit.svg?style=flat)](https://cocoapods.org/pods/MoproKit) + +## Example + +To run the example project, clone the repo, and run `pod install` from the Example directory first. + +## Requirements + +## Installation + +MoproKit is available through [CocoaPods](https://cocoapods.org). To install +it, simply add the following line to your Podfile: + +```ruby +pod 'MoproKit' +``` + +## Author + +1552237, oskarth@titanproxy.com + +## License + +MoproKit is available under the MIT license. See the LICENSE file for more info. diff --git a/app/ios/MoproKit/Resources/moproFFI.modulemap b/app/ios/MoproKit/Resources/moproFFI.modulemap new file mode 100644 index 000000000..93b8adffb --- /dev/null +++ b/app/ios/MoproKit/Resources/moproFFI.modulemap @@ -0,0 +1,6 @@ +// This file was autogenerated by some hot garbage in the `uniffi` crate. +// Trust me, you don't want to mess with it! +module moproFFI { + header "moproFFI.h" + export * +} \ No newline at end of file diff --git a/app/ios/NFCPassportReader/BACHandler.swift b/app/ios/NFCPassportReader/BACHandler.swift deleted file mode 100644 index cd35be7c7..000000000 --- a/app/ios/NFCPassportReader/BACHandler.swift +++ /dev/null @@ -1,193 +0,0 @@ -// -// BACHandler.swift -// NFCTest -// -// Created by Andy Qua on 07/06/2019. -// Copyright Β© 2019 Andy Qua. All rights reserved. -// - -import Foundation - -#if !os(macOS) -import CoreNFC - -@available(iOS 15, *) -public class BACHandler { - let KENC : [UInt8] = [0,0,0,1] - let KMAC : [UInt8] = [0,0,0,2] - - public var ksenc : [UInt8] = [] - public var ksmac : [UInt8] = [] - - var rnd_icc : [UInt8] = [] - var rnd_ifd : [UInt8] = [] - public var kifd : [UInt8] = [] - - var tagReader : TagReader? - - public init() { - // For testing only - } - - public init(tagReader: TagReader) { - self.tagReader = tagReader - } - - public func performBACAndGetSessionKeys( mrzKey : String ) async throws { - guard let tagReader = self.tagReader else { - throw NFCPassportReaderError.NoConnectedTag - } - - Log.debug( "BACHandler - deriving Document Basic Access Keys" ) - _ = try self.deriveDocumentBasicAccessKeys(mrz: mrzKey) - - // Make sure we clear secure messaging (could happen if we read an invalid DG or we hit a secure error - tagReader.secureMessaging = nil - - // get Challenge - Log.debug( "BACHandler - Getting initial challenge" ) - let response = try await tagReader.getChallenge() - - Log.verbose( "DATA - \(response.data)" ) - - Log.debug( "BACHandler - Doing mutual authentication" ) - let cmd_data = self.authentication(rnd_icc: [UInt8](response.data)) - let maResponse = try await tagReader.doMutualAuthentication(cmdData: Data(cmd_data)) - Log.debug( "DATA - \(maResponse.data)" ) - guard maResponse.data.count > 0 else { - throw NFCPassportReaderError.InvalidMRZKey - } - - let (KSenc, KSmac, ssc) = try self.sessionKeys(data: [UInt8](maResponse.data)) - tagReader.secureMessaging = SecureMessaging(ksenc: KSenc, ksmac: KSmac, ssc: ssc) - Log.debug( "BACHandler - complete" ) - } - - - func deriveDocumentBasicAccessKeys(mrz: String) throws -> ([UInt8], [UInt8]) { - let kseed = generateInitialKseed(kmrz:mrz) - - Log.verbose("Calculate the Basic Access Keys (Kenc and Kmac) using TR-SAC 1.01, 4.2") - let smskg = SecureMessagingSessionKeyGenerator() - self.ksenc = try smskg.deriveKey(keySeed: kseed, mode: .ENC_MODE) - self.ksmac = try smskg.deriveKey(keySeed: kseed, mode: .MAC_MODE) - - return (ksenc, ksmac) - } - - /// - /// Calculate the kseed from the kmrz: - /// - Calculate a SHA-1 hash of the kmrz - /// - Take the most significant 16 bytes to form the Kseed. - /// @param kmrz: The MRZ information - /// @type kmrz: a string - /// @return: a 16 bytes string - /// - /// - Parameter kmrz: mrz key - /// - Returns: first 16 bytes of the mrz SHA1 hash - /// - func generateInitialKseed(kmrz : String ) -> [UInt8] { - - Log.verbose("Calculate the SHA-1 hash of MRZ_information") - Log.verbose("\tMRZ KEY - \(kmrz)") - let hash = calcSHA1Hash( [UInt8](kmrz.data(using:.utf8)!) ) - - Log.verbose("\tsha1(MRZ_information): \(binToHexRep(hash))") - - let subHash = Array(hash[0..<16]) - Log.verbose("Take the most significant 16 bytes to form the Kseed") - Log.verbose("\tKseed: \(binToHexRep(subHash))" ) - - return Array(subHash) - } - - - /// Construct the command data for the mutual authentication. - /// - Request an 8 byte random number from the MRTD's chip (rnd.icc) - /// - Generate an 8 byte random (rnd.ifd) and a 16 byte random (kifd) - /// - Concatenate rnd.ifd, rnd.icc and kifd (s = rnd.ifd + rnd.icc + kifd) - /// - Encrypt it with TDES and the Kenc key (eifd = TDES(s, Kenc)) - /// - Compute the MAC over eifd with TDES and the Kmax key (mifd = mac(pad(eifd)) - /// - Construct the APDU data for the mutualAuthenticate command (cmd_data = eifd + mifd) - /// - /// @param rnd_icc: The challenge received from the ICC. - /// @type rnd_icc: A 8 bytes binary string - /// @return: The APDU binary data for the mutual authenticate command - func authentication( rnd_icc : [UInt8]) -> [UInt8] { - self.rnd_icc = rnd_icc - - Log.verbose("Request an 8 byte random number from the MRTD's chip") - Log.verbose("\tRND.ICC: " + binToHexRep(self.rnd_icc)) - - self.rnd_icc = rnd_icc - - let rnd_ifd = generateRandomUInt8Array(8) - let kifd = generateRandomUInt8Array(16) - - Log.verbose("Generate an 8 byte random and a 16 byte random") - Log.verbose("\tRND.IFD: \(binToHexRep(rnd_ifd))" ) - Log.verbose("\tRND.Kifd: \(binToHexRep(kifd))") - - let s = rnd_ifd + rnd_icc + kifd - - Log.verbose("Concatenate RND.IFD, RND.ICC and Kifd") - Log.verbose("\tS: \(binToHexRep(s))") - - let iv : [UInt8] = [0, 0, 0, 0, 0, 0, 0, 0] - let eifd = tripleDESEncrypt(key: ksenc,message: s, iv: iv) - - Log.verbose("Encrypt S with TDES key Kenc as calculated in Appendix 5.2") - Log.verbose("\tEifd: \(binToHexRep(eifd))") - - let mifd = mac(algoName: .DES, key: ksmac, msg: pad(eifd, blockSize:8)) - - Log.verbose("Compute MAC over eifd with TDES key Kmac as calculated in-Appendix 5.2") - Log.verbose("\tMifd: \(binToHexRep(mifd))") - // Construct APDU - - let cmd_data = eifd + mifd - Log.verbose("Construct command data for MUTUAL AUTHENTICATE") - Log.verbose("\tcmd_data: \(binToHexRep(cmd_data))") - - self.rnd_ifd = rnd_ifd - self.kifd = kifd - - return cmd_data - } - - /// Calculate the session keys (KSenc, KSmac) and the SSC from the data - /// received by the mutual authenticate command. - - /// @param data: the data received from the mutual authenticate command send to the chip. - /// @type data: a binary string - /// @return: A set of two 16 bytes keys (KSenc, KSmac) and the SSC - public func sessionKeys(data : [UInt8] ) throws -> ([UInt8], [UInt8], [UInt8]) { - Log.verbose("Decrypt and verify received data and compare received RND.IFD with generated RND.IFD \(binToHexRep(self.ksmac))" ) - - let response = tripleDESDecrypt(key: self.ksenc, message: [UInt8](data[0..<32]), iv: [0,0,0,0,0,0,0,0] ) - - let response_kicc = [UInt8](response[16..<32]) - let Kseed = xor(self.kifd, response_kicc) - Log.verbose("Calculate XOR of Kifd and Kicc") - Log.verbose("\tKseed: \(binToHexRep(Kseed))" ) - - let smskg = SecureMessagingSessionKeyGenerator() - let KSenc = try smskg.deriveKey(keySeed: Kseed, mode: .ENC_MODE) - let KSmac = try smskg.deriveKey(keySeed: Kseed, mode: .MAC_MODE) - -// let KSenc = self.keyDerivation(kseed: Kseed,c: KENC) -// let KSmac = self.keyDerivation(kseed: Kseed,c: KMAC) - - Log.verbose("Calculate Session Keys (KSenc and KSmac) using Appendix 5.1") - Log.verbose("\tKSenc: \(binToHexRep(KSenc))" ) - Log.verbose("\tKSmac: \(binToHexRep(KSmac))" ) - - - let ssc = [UInt8](self.rnd_icc.suffix(4) + self.rnd_ifd.suffix(4)) - Log.verbose("Calculate Send Sequence Counter") - Log.verbose("\tSSC: \(binToHexRep(ssc))" ) - return (KSenc, KSmac, ssc) - } - -} -#endif diff --git a/app/ios/NFCPassportReader/ChipAuthenticationHandler.swift b/app/ios/NFCPassportReader/ChipAuthenticationHandler.swift deleted file mode 100644 index c374bf9b0..000000000 --- a/app/ios/NFCPassportReader/ChipAuthenticationHandler.swift +++ /dev/null @@ -1,223 +0,0 @@ -// -// ChipAuthenticationHandler.swift -// NFCPassportReader -// -// Created by Andy Qua on 25/02/2021. -// - -import Foundation -import OpenSSL - -#if !os(macOS) -import CoreNFC -import CryptoKit - -@available(iOS 15, *) -class ChipAuthenticationHandler { - - private static let NO_PACE_KEY_REFERENCE : UInt8 = 0x00 - private static let ENC_MODE : UInt8 = 0x1 - private static let MAC_MODE : UInt8 = 0x2 - private static let PACE_MODE : UInt8 = 0x3 - - private static let COMMAND_CHAINING_CHUNK_SIZE = 224 - - var tagReader : TagReader? - var gaSegments = [[UInt8]]() - - var chipAuthInfos = [Int:ChipAuthenticationInfo]() - var chipAuthPublicKeyInfos = [ChipAuthenticationPublicKeyInfo]() - - var isChipAuthenticationSupported : Bool = false - - public init(dg14 : DataGroup14, tagReader: TagReader) { - self.tagReader = tagReader - - for secInfo in dg14.securityInfos { - if let cai = secInfo as? ChipAuthenticationInfo { - let keyId = cai.getKeyId() - chipAuthInfos[keyId] = cai - } else if let capki = secInfo as? ChipAuthenticationPublicKeyInfo { - chipAuthPublicKeyInfos.append(capki) - } - } - - if chipAuthPublicKeyInfos.count > 0 { - isChipAuthenticationSupported = true - } - } - - public func doChipAuthentication() async throws { - - Log.info( "Performing Chip Authentication - number of public keys found - \(chipAuthPublicKeyInfos.count)" ) - guard isChipAuthenticationSupported else { - throw NFCPassportReaderError.NotYetSupported( "ChipAuthentication not supported" ) - } - - var success = false - for pubKey in chipAuthPublicKeyInfos { - do { - success = try await self.doChipAuthentication( with: pubKey) - if success { - break - } - } catch { - // try next key - } - } - - if !success { - throw NFCPassportReaderError.ChipAuthenticationFailed - } - } - - private func doChipAuthentication( with chipAuthPublicKeyInfo : ChipAuthenticationPublicKeyInfo ) async throws -> Bool { - - // So it turns out that some passports don't have ChipAuthInfo items. - // So if we do have a ChipAuthInfo the we take the keyId (if present) and OID from there, - // BUT if we don't then we will try to infer the OID from the public key - let keyId = chipAuthPublicKeyInfo.keyId - let chipAuthInfoOID : String - if let chipAuthInfo = chipAuthInfos[keyId ?? 0] { - chipAuthInfoOID = chipAuthInfo.oid - } else { - if let oid = inferOID( fromPublicKeyOID:chipAuthPublicKeyInfo.oid) { - chipAuthInfoOID = oid - } else { - return false - } - } - - try await self.doCA( keyId: keyId, encryptionDetailsOID: chipAuthInfoOID, publicKey: chipAuthPublicKeyInfo.pubKey ) - return true - } - - /// Infer OID from public key type - Best guess seems to be to use 3DES_CBC_CBC for both ECDH and DH keys - /// Apparently works for French passports - private func inferOID(fromPublicKeyOID: String ) -> String? { - if fromPublicKeyOID == SecurityInfo.ID_PK_ECDH_OID { - Log.warning("No ChipAuthenticationInfo - guessing its id-CA-ECDH-3DES-CBC-CBC"); - return SecurityInfo.ID_CA_ECDH_3DES_CBC_CBC_OID - } else if fromPublicKeyOID == SecurityInfo.ID_PK_DH_OID { - Log.warning("No ChipAuthenticationInfo - guessing its id-CA-DH-3DES-CBC-CBC"); - return SecurityInfo.ID_CA_DH_3DES_CBC_CBC_OID - } - - Log.warning("No ChipAuthenticationInfo and unsupported ChipAuthenticationPublicKeyInfo public key OID \(fromPublicKeyOID)") - return nil; - } - - private func doCA( keyId: Int?, encryptionDetailsOID oid: String, publicKey: OpaquePointer) async throws { - - // Generate Ephemeral Keypair from parameters from DG14 Public key - // This should work for both EC and DH keys - var ephemeralKeyPair : OpaquePointer? = nil - let pctx = EVP_PKEY_CTX_new(publicKey, nil) - EVP_PKEY_keygen_init(pctx) - EVP_PKEY_keygen(pctx, &ephemeralKeyPair) - EVP_PKEY_CTX_free(pctx) - - // Send the public key to the passport - try await sendPublicKey(oid: oid, keyId: keyId, pcdPublicKey: ephemeralKeyPair!) - - Log.debug( "Public Key successfully sent to passport!" ) - - // Use our ephemeral private key and the passports public key to generate a shared secret - // (the passport with do the same thing with their private key and our public key) - let sharedSecret = OpenSSLUtils.computeSharedSecret(privateKeyPair:ephemeralKeyPair!, publicKey:publicKey) - - // Now try to restart Secure Messaging using the new shared secret and - try restartSecureMessaging( oid : oid, sharedSecret : sharedSecret, maxTranceiveLength : 1, shouldCheckMAC : true) - } - - private func sendPublicKey(oid : String, keyId : Int?, pcdPublicKey : OpaquePointer) async throws { - let cipherAlg = try ChipAuthenticationInfo.toCipherAlgorithm(oid: oid) - guard let keyData = OpenSSLUtils.getPublicKeyData(from: pcdPublicKey) else { - throw NFCPassportReaderError.InvalidDataPassed("Unable to get public key data from public key" ) - } - - if cipherAlg.hasPrefix("DESede") { - - var idData : [UInt8] = [] - if let keyId = keyId { - idData = intToBytes( val:keyId, removePadding:true) - idData = wrapDO( b:0x84, arr:idData) - } - let wrappedKeyData = wrapDO( b:0x91, arr:keyData) - _ = try await self.tagReader?.sendMSEKAT(keyData: Data(wrappedKeyData), idData: Data(idData)) - } else if cipherAlg.hasPrefix("AES") { - _ = try await self.tagReader?.sendMSESetATIntAuth(oid: oid, keyId: keyId) - let data = wrapDO(b: 0x80, arr:keyData) - gaSegments = self.chunk(data: data, segmentSize: ChipAuthenticationHandler.COMMAND_CHAINING_CHUNK_SIZE ) - try await self.handleGeneralAuthentication() - } else { - throw NFCPassportReaderError.InvalidDataPassed("Cipher Algorithm \(cipherAlg) not supported") - } - } - - private func handleGeneralAuthentication() async throws { - repeat { - // Pull next segment from list - let segment = gaSegments.removeFirst() - let isLast = gaSegments.isEmpty - - // send it - _ = try await self.tagReader?.sendGeneralAuthenticate(data: segment, isLast: isLast) - } while ( !gaSegments.isEmpty ) - } - - private func restartSecureMessaging( oid : String, sharedSecret : [UInt8], maxTranceiveLength : Int, shouldCheckMAC : Bool) throws { - let cipherAlg = try ChipAuthenticationInfo.toCipherAlgorithm(oid: oid) - let keyLength = try ChipAuthenticationInfo.toKeyLength(oid: oid) - - // Start secure messaging. - let smskg = SecureMessagingSessionKeyGenerator() - let ksEnc = try smskg.deriveKey(keySeed: sharedSecret, cipherAlgName: cipherAlg, keyLength: keyLength, mode: .ENC_MODE) - let ksMac = try smskg.deriveKey(keySeed: sharedSecret, cipherAlgName: cipherAlg, keyLength: keyLength, mode: .MAC_MODE) - - let ssc = withUnsafeBytes(of: 0.bigEndian, Array.init) - if (cipherAlg.hasPrefix("DESede")) { - Log.info( "Restarting secure messaging using DESede encryption") - let sm = SecureMessaging(encryptionAlgorithm: .DES, ksenc: ksEnc, ksmac: ksMac, ssc: ssc) - tagReader?.secureMessaging = sm - } else if (cipherAlg.hasPrefix("AES")) { - Log.info( "Restarting secure messaging using AES encryption") - let sm = SecureMessaging(encryptionAlgorithm: .AES, ksenc: ksEnc, ksmac: ksMac, ssc: ssc) - tagReader?.secureMessaging = sm - } else { - Log.error( "Not restarting secure messaging as unsupported cipher algorithm requested - \(cipherAlg)") - throw NFCPassportReaderError.InvalidDataPassed("Unsupported cipher algorithm \(cipherAlg)" ) - } - } - - - func inferDigestAlgorithmFromCipherAlgorithmForKeyDerivation( cipherAlg : String, keyLength : Int) throws -> String { - if cipherAlg == "DESede" || cipherAlg == "AES-128" { - return "SHA1" - } - if cipherAlg == "AES" && keyLength == 128 { - return "SHA1" - } - if cipherAlg == "AES-256" || cipherAlg == "AES-192" { - return "SHA256" - } - if cipherAlg == "AES" && (keyLength == 192 || keyLength == 256) { - return "SHA256" - } - - throw NFCPassportReaderError.InvalidDataPassed("Unsupported cipher algorithm or key length") - } - - /// Chunks up a byte array into a number of segments of the given size, - /// and a final segment if there is a remainder. - /// - Parameter segmentSize the number of bytes per segment - /// - Parameter data the data to be partitioned - /// - Parameter a list with the segments - func chunk( data : [UInt8], segmentSize: Int ) -> [[UInt8]] { - return stride(from: 0, to: data.count, by: segmentSize).map { - Array(data[$0 ..< Swift.min($0 + segmentSize, data.count)]) - } - } -} - -#endif diff --git a/app/ios/NFCPassportReader/DataGroupHash.swift b/app/ios/NFCPassportReader/DataGroupHash.swift deleted file mode 100644 index 578fd9f29..000000000 --- a/app/ios/NFCPassportReader/DataGroupHash.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// DataGroupHash.swift -// NFCPassportReader -// -// Created by Andy Qua on 09/02/2021. -// Copyright Β© 2021 Andy Qua. All rights reserved. -// - -@available(iOS 13, macOS 10.15, *) -public struct DataGroupHash { - public var id: String - public var sodHash: String - public var computedHash : String - public var match : Bool -} - diff --git a/app/ios/NFCPassportReader/DataGroupParser.swift b/app/ios/NFCPassportReader/DataGroupParser.swift deleted file mode 100644 index 42b462bc9..000000000 --- a/app/ios/NFCPassportReader/DataGroupParser.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// DataGroupParser.swift -// -// Created by Andy Qua on 14/06/2019. -// - -import OpenSSL - -@available(iOS 13, macOS 10.15, *) -class DataGroupParser { - - static let dataGroupNames = ["Common", "DG1", "DG2", "DG3", "DG4", "DG5", "DG6", "DG7", "DG8", "DG9", "DG10", "DG11", "DG12", "DG13", "DG14", "DG15", "DG16", "SecurityData"] - static let tags : [UInt8] = [0x60, 0x61, 0x75, 0x63, 0x76, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x77] - static let classes : [DataGroup.Type] = [COM.self, DataGroup1.self, DataGroup2.self, - NotImplementedDG.self, NotImplementedDG.self, NotImplementedDG.self, - NotImplementedDG.self, DataGroup7.self, NotImplementedDG.self, - NotImplementedDG.self, NotImplementedDG.self, DataGroup11.self, - DataGroup12.self, NotImplementedDG.self, DataGroup14.self, - DataGroup15.self, NotImplementedDG.self, SOD.self] - - - func parseDG( data : [UInt8] ) throws -> DataGroup { - - let header = data[0..<4] - - let dg = try tagToDG(header[0]) - - return try dg.init(data) - } - - - func tagToDG( _ tag : UInt8 ) throws -> DataGroup.Type { - guard let index = DataGroupParser.tags.firstIndex(of: tag) else { throw NFCPassportReaderError.UnknownTag} - return DataGroupParser.classes[index] - } -} diff --git a/app/ios/NFCPassportReader/Errors.swift b/app/ios/NFCPassportReader/Errors.swift deleted file mode 100644 index 14077db21..000000000 --- a/app/ios/NFCPassportReader/Errors.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// Errors.swift -// NFCPassportReader -// -// Created by Andy Qua on 09/02/2021. -// Copyright Β© 2021 Andy Qua. All rights reserved. -// - -import Foundation - -// MARK: TagError -@available(iOS 13, macOS 10.15, *) -public enum NFCPassportReaderError: Error { - case ResponseError(String, UInt8, UInt8) - case InvalidResponse - case UnexpectedError - case NFCNotSupported - case NoConnectedTag - case D087Malformed - case InvalidResponseChecksum - case MissingMandatoryFields - case CannotDecodeASN1Length - case InvalidASN1Value - case UnableToProtectAPDU - case UnableToUnprotectAPDU - case UnsupportedDataGroup - case DataGroupNotRead - case UnknownTag - case UnknownImageFormat - case NotImplemented - case TagNotValid - case ConnectionError - case UserCanceled - case InvalidMRZKey - case MoreThanOneTagFound - case InvalidHashAlgorithmSpecified - case UnsupportedCipherAlgorithm - case UnsupportedMappingType - case PACEError(String,String) - case ChipAuthenticationFailed - case InvalidDataPassed(String) - case NotYetSupported(String) - - var value: String { - switch self { - case .ResponseError(let errMsg, _, _): return errMsg - case .InvalidResponse: return "InvalidResponse" - case .UnexpectedError: return "UnexpectedError" - case .NFCNotSupported: return "NFCNotSupported" - case .NoConnectedTag: return "NoConnectedTag" - case .D087Malformed: return "D087Malformed" - case .InvalidResponseChecksum: return "InvalidResponseChecksum" - case .MissingMandatoryFields: return "MissingMandatoryFields" - case .CannotDecodeASN1Length: return "CannotDecodeASN1Length" - case .InvalidASN1Value: return "InvalidASN1Value" - case .UnableToProtectAPDU: return "UnableToProtectAPDU" - case .UnableToUnprotectAPDU: return "UnableToUnprotectAPDU" - case .UnsupportedDataGroup: return "UnsupportedDataGroup" - case .DataGroupNotRead: return "DataGroupNotRead" - case .UnknownTag: return "UnknownTag" - case .UnknownImageFormat: return "UnknownImageFormat" - case .NotImplemented: return "NotImplemented" - case .TagNotValid: return "TagNotValid" - case .ConnectionError: return "ConnectionError" - case .UserCanceled: return "UserCanceled" - case .InvalidMRZKey: return "InvalidMRZKey" - case .MoreThanOneTagFound: return "MoreThanOneTagFound" - case .InvalidHashAlgorithmSpecified: return "InvalidHashAlgorithmSpecified" - case .UnsupportedCipherAlgorithm: return "UnsupportedCipherAlgorithm" - case .UnsupportedMappingType: return "UnsupportedMappingType" - case .PACEError(let step, let reason): return "PACEError (\(step)) - \(reason)" - case .ChipAuthenticationFailed: return "ChipAuthenticationFailed" - case .InvalidDataPassed(let reason) : return "Invalid data passed - \(reason)" - case .NotYetSupported(let reason) : return "Not yet supported - \(reason)" - } - } -} - -@available(iOS 13, macOS 10.15, *) -extension NFCPassportReaderError: LocalizedError { - public var errorDescription: String? { - return NSLocalizedString(value, comment: "My error") - } -} - - -// MARK: OpenSSLError -@available(iOS 13, macOS 10.15, *) -public enum OpenSSLError: Error { - case UnableToGetX509CertificateFromPKCS7(String) - case UnableToVerifyX509CertificateForSOD(String) - case VerifyAndReturnSODEncapsulatedData(String) - case UnableToReadECPublicKey(String) - case UnableToExtractSignedDataFromPKCS7(String) - case VerifySignedAttributes(String) - case UnableToParseASN1(String) - case UnableToDecryptRSASignature(String) -} - -@available(iOS 13, macOS 10.15, *) -extension OpenSSLError: LocalizedError { - public var errorDescription: String? { - switch self { - case .UnableToGetX509CertificateFromPKCS7(let reason): - return NSLocalizedString("Unable to read the SOD PKCS7 Certificate. \(reason)", comment: "UnableToGetPKCS7CertificateForSOD") - case .UnableToVerifyX509CertificateForSOD(let reason): - return NSLocalizedString("Unable to verify the SOD X509 certificate. \(reason)", comment: "UnableToVerifyX509CertificateForSOD") - case .VerifyAndReturnSODEncapsulatedData(let reason): - return NSLocalizedString("Unable to verify the SOD Datagroup hashes. \(reason)", comment: "UnableToGetSignedDataFromPKCS7") - case .UnableToReadECPublicKey(let reason): - return NSLocalizedString("Unable to read ECDSA Public key \(reason)!", comment: "UnableToReadECPublicKey") - case .UnableToExtractSignedDataFromPKCS7(let reason): - return NSLocalizedString("Unable to extract Signer data from PKCS7 \(reason)!", comment: "UnableToExtractSignedDataFromPKCS7") - case .VerifySignedAttributes(let reason): - return NSLocalizedString("Unable to Verify the SOD SignedAttributes \(reason)!", comment: "UnableToExtractSignedDataFromPKCS7") - case .UnableToParseASN1(let reason): - return NSLocalizedString("Unable to parse ASN1 \(reason)!", comment: "UnableToParseASN1") - case .UnableToDecryptRSASignature(let reason): - return NSLocalizedString("DatUnable to decrypt RSA Signature \(reason)!", comment: "UnableToDecryptRSSignature") - } - } -} - - -// MARK: PassiveAuthenticationError -public enum PassiveAuthenticationError: Error { - case UnableToParseSODHashes(String) - case InvalidDataGroupHash(String) - case SODMissing(String) -} - - -extension PassiveAuthenticationError: LocalizedError { - public var errorDescription: String? { - switch self { - case .UnableToParseSODHashes(let reason): - return NSLocalizedString("Unable to parse the SOD Datagroup hashes. \(reason)", comment: "UnableToParseSODHashes") - case .InvalidDataGroupHash(let reason): - return NSLocalizedString("DataGroup hash not present or didn't match \(reason)!", comment: "InvalidDataGroupHash") - case .SODMissing(let reason): - return NSLocalizedString("DataGroup SOD not present or not read \(reason)!", comment: "SODMissing") - - } - } -} diff --git a/app/ios/NFCPassportReader/Logging.swift b/app/ios/NFCPassportReader/Logging.swift deleted file mode 100644 index 2201b5404..000000000 --- a/app/ios/NFCPassportReader/Logging.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// Logging.swift -// NFCTest -// -// Created by Andy Qua on 11/06/2019. -// Copyright Β© 2019 Andy Qua. All rights reserved. -// - -import Foundation - -// TODO: Quick log functions - will move this to something better -public enum LogLevel : Int, CaseIterable { - case verbose = 0 - case debug = 1 - case info = 2 - case warning = 3 - case error = 4 - case none = 5 -} - -public class Log { - public static var logLevel : LogLevel = .info - public static var storeLogs = false - public static var logData = [String]() - - private static let df = DateFormatter() - private static var dfInit = false - - public class func verbose( _ msg : @autoclosure () -> String ) { - log( .verbose, msg ) - } - public class func debug( _ msg : @autoclosure () -> String ) { - log( .debug, msg ) - } - public class func info( _ msg : @autoclosure () -> String ) { - log( .info, msg ) - } - public class func warning( _ msg : @autoclosure () -> String ) { - log( .warning, msg ) - } - public class func error( _ msg : @autoclosure () -> String ) { - log( .error, msg ) - } - - public class func clearStoredLogs() { - logData.removeAll() - } - - class func log( _ logLevel : LogLevel, _ msg : () -> String ) { - guard logLevel != .none else { return } - - if !dfInit { - df.dateFormat = "y-MM-dd H:m:ss.SSSS" - dfInit = true - } - - if self.logLevel.rawValue <= logLevel.rawValue { - let message = msg() - - - print( "\(df.string(from:Date())) - \(message)" ) - - if storeLogs { - logData.append( message ) - } - } - } -} diff --git a/app/ios/NFCPassportReader/NFCPassportModel.swift b/app/ios/NFCPassportReader/NFCPassportModel.swift deleted file mode 100644 index a2714b132..000000000 --- a/app/ios/NFCPassportReader/NFCPassportModel.swift +++ /dev/null @@ -1,534 +0,0 @@ -// -// NFCPassportModel.swift -// NFCPassportReader -// -// Created by Andy Qua on 29/10/2019. -// - - -import Foundation - -#if os(iOS) -import UIKit -#endif - - -public enum PassportAuthenticationStatus { - case notDone - case success - case failed -} - -@available(iOS 13, macOS 10.15, *) -public class NFCPassportModel { - - public private(set) lazy var documentType : String = { return String( passportDataElements?["5F03"]?.first ?? "?" ) }() - public private(set) lazy var documentSubType : String = { return String( passportDataElements?["5F03"]?.last ?? "?" ) }() - public private(set) lazy var documentNumber : String = { return (passportDataElements?["5A"] ?? "?").replacingOccurrences(of: "<", with: "" ) }() - public private(set) lazy var issuingAuthority : String = { return passportDataElements?["5F28"] ?? "?" }() - public private(set) lazy var documentExpiryDate : String = { return passportDataElements?["59"] ?? "?" }() - public private(set) lazy var dateOfBirth : String = { return passportDataElements?["5F57"] ?? "?" }() - public private(set) lazy var gender : String = { return passportDataElements?["5F35"] ?? "?" }() - public private(set) lazy var nationality : String = { return passportDataElements?["5F2C"] ?? "?" }() - - public private(set) lazy var lastName : String = { - return names[0].replacingOccurrences(of: "<", with: " " ) - }() - - public private(set) lazy var firstName : String = { - var name = "" - for i in 1 ..< names.count { - let fn = names[i].replacingOccurrences(of: "<", with: " " ).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) - name += fn + " " - } - return name.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) - }() - - public private(set) lazy var passportMRZ : String = { return passportDataElements?["5F1F"] ?? "NOT FOUND" }() - - // Extract fields from DG11 if present - private lazy var names : [String] = { - guard let dg11 = dataGroupsRead[.DG11] as? DataGroup11, - let fullName = dg11.fullName?.components(separatedBy: "<<") else { return (passportDataElements?["5B"] ?? "?").components(separatedBy: "<<") } - return fullName - }() - - public private(set) lazy var placeOfBirth : String? = { - guard let dg11 = dataGroupsRead[.DG11] as? DataGroup11, - let placeOfBirth = dg11.placeOfBirth else { return nil } - return placeOfBirth - }() - - /// residence address - public private(set) lazy var residenceAddress : String? = { - guard let dg11 = dataGroupsRead[.DG11] as? DataGroup11, - let address = dg11.address else { return nil } - return address - }() - - /// phone number - public private(set) lazy var phoneNumber : String? = { - guard let dg11 = dataGroupsRead[.DG11] as? DataGroup11, - let telephone = dg11.telephone else { return nil } - return telephone - }() - - /// personal number - public private(set) lazy var personalNumber : String? = { - if let dg11 = dataGroupsRead[.DG11] as? DataGroup11, - let personalNumber = dg11.personalNumber { return personalNumber } - - return (passportDataElements?["53"] ?? "?").replacingOccurrences(of: "<", with: "" ) - }() - - public private(set) lazy var documentSigningCertificate : X509Wrapper? = { - return certificateSigningGroups[.documentSigningCertificate] - }() - - public private(set) lazy var countrySigningCertificate : X509Wrapper? = { - return certificateSigningGroups[.issuerSigningCertificate] - }() - - // Extract data from COM - public private(set) lazy var LDSVersion : String = { - guard let com = dataGroupsRead[.COM] as? COM else { return "Unknown" } - return com.version - }() - - - public private(set) lazy var dataGroupsPresent : [String] = { - guard let com = dataGroupsRead[.COM] as? COM else { return [] } - return com.dataGroupsPresent - }() - - // Parsed datagroup hashes - public private(set) var dataGroupsAvailable = [DataGroupId]() - public private(set) var dataGroupsRead : [DataGroupId:DataGroup] = [:] - public private(set) var dataGroupHashes = [DataGroupId: DataGroupHash]() - - public internal(set) var cardAccess : CardAccess? - public internal(set) var BACStatus : PassportAuthenticationStatus = .notDone - public internal(set) var PACEStatus : PassportAuthenticationStatus = .notDone - public internal(set) var chipAuthenticationStatus : PassportAuthenticationStatus = .notDone - - public private(set) var passportCorrectlySigned : Bool = false - public private(set) var documentSigningCertificateVerified : Bool = false - public private(set) var passportDataNotTampered : Bool = false - public private(set) var activeAuthenticationPassed : Bool = false - public private(set) var activeAuthenticationChallenge : [UInt8] = [] - public private(set) var activeAuthenticationSignature : [UInt8] = [] - public private(set) var verificationErrors : [Error] = [] - - public var isPACESupported : Bool { - get { - if cardAccess?.paceInfo != nil { - return true - } else { - // We may not have stored the cardAccess so check the DG14 - if let dg14 = dataGroupsRead[.DG14] as? DataGroup14, - (dg14.securityInfos.filter { ($0 as? PACEInfo) != nil }).count > 0 { - return true - } - return false - } - } - } - - public var isChipAuthenticationSupported : Bool { - get { - if let dg14 = dataGroupsRead[.DG14] as? DataGroup14, - (dg14.securityInfos.filter { ($0 as? ChipAuthenticationPublicKeyInfo) != nil }).count > 0 { - - return true - } else { - return false - } - } - } - -#if os(iOS) - public var passportImage : UIImage? { - guard let dg2 = dataGroupsRead[.DG2] as? DataGroup2 else { return nil } - - return dg2.getImage() - } - - public var signatureImage : UIImage? { - guard let dg7 = dataGroupsRead[.DG7] as? DataGroup7 else { return nil } - - return dg7.getImage() - } -#endif - - public var activeAuthenticationSupported : Bool { - guard let dg15 = dataGroupsRead[.DG15] as? DataGroup15 else { return false } - if dg15.ecdsaPublicKey != nil || dg15.rsaPublicKey != nil { - return true - } - return false - } - - private var certificateSigningGroups : [CertificateType:X509Wrapper] = [:] - - private var passportDataElements : [String:String]? { - guard let dg1 = dataGroupsRead[.DG1] as? DataGroup1 else { return nil } - - return dg1.elements - } - - - public init() { - - } - - public init( from dump: [String:String] ) { - var AAChallenge : [UInt8]? - var AASignature : [UInt8]? - for (key,value) in dump { - if let data = Data(base64Encoded: value) { - let bin = [UInt8](data) - if key == "AASignature" { - AASignature = bin - } else if key == "AAChallenge" { - AAChallenge = bin - } else { - do { - let dg = try DataGroupParser().parseDG(data: bin) - let dgId = DataGroupId.getIDFromName(name:key) - self.addDataGroup( dgId, dataGroup:dg ) - } catch { - Log.error("Failed to import Datagroup - \(key) from dump - \(error)" ) - } - } - } - } - - // See if we have Active Auth info in the dump - if let challenge = AAChallenge, let signature = AASignature { - verifyActiveAuthentication(challenge: challenge, signature: signature) - } - } - - public func addDataGroup(_ id : DataGroupId, dataGroup: DataGroup ) { - self.dataGroupsRead[id] = dataGroup - if id != .COM && id != .SOD { - self.dataGroupsAvailable.append( id ) - } - } - - public func getDataGroup( _ id : DataGroupId ) -> DataGroup? { - return dataGroupsRead[id] - } - - /// Dumps the passport data - /// - Parameters: - /// selectedDataGroups - the Data Groups to be exported (if they are present in the passport) - /// includeActiveAutheticationData - Whether to include the Active Authentication challenge and response (if supported and retrieved) - /// - Returns: dictionary of DataGroup ids and Base64 encoded data - public func dumpPassportData( selectedDataGroups : [DataGroupId], includeActiveAuthenticationData : Bool = false) -> [String:String] { - var ret = [String:String]() - for dg in selectedDataGroups { - if let dataGroup = self.dataGroupsRead[dg] { - let val = Data(dataGroup.data) - let base64 = val.base64EncodedString() - ret[dg.getName()] = base64 - } - } - if includeActiveAuthenticationData && self.activeAuthenticationSupported { - ret["AAChallenge"] = Data(activeAuthenticationChallenge).base64EncodedString() - ret["AASignature"] = Data(activeAuthenticationSignature).base64EncodedString() - } - return ret - } - - public func getHashesForDatagroups( hashAlgorythm: String ) -> [DataGroupId:[UInt8]] { - var ret = [DataGroupId:[UInt8]]() - - for (key, value) in dataGroupsRead { - if hashAlgorythm == "SHA1" { - ret[key] = calcSHA1Hash(value.body) - } else if hashAlgorythm == "SHA224" { - ret[key] = calcSHA224Hash(value.body) - } else if hashAlgorythm == "SHA256" { - ret[key] = calcSHA256Hash(value.body) - } else if hashAlgorythm == "SHA384" { - ret[key] = calcSHA384Hash(value.body) - } else if hashAlgorythm == "SHA512" { - ret[key] = calcSHA512Hash(value.body) - } - } - - return ret - } - - - /// This method performs the passive authentication - /// Passive Authentication : Two Parts: - /// Part 1 - Has the SOD (Security Object Document) been signed by a valid country signing certificate authority (CSCA)? - /// Part 2 - has it been tampered with (e.g. hashes of Datagroups match those in the SOD? - /// guard let sod = model.getDataGroup(.SOD) else { return } - /// - /// - Parameter masterListURL: the path to the masterlist to try to verify the document signing certiifcate in the SOD - /// - Parameter useCMSVerification: Should we use OpenSSL CMS verification to verify the SOD content - /// is correctly signed by the document signing certificate OR should we do this manully based on RFC5652 - /// CMS fails under certain circumstances (e.g. hashes are SHA512 whereas content is signed with SHA256RSA). - /// Currently defaulting to manual verification - hoping this will replace the CMS verification totally - /// CMS Verification currently there just in case - public func verifyPassport( masterListURL: URL?, useCMSVerification : Bool = false ) { - if let masterListURL = masterListURL { - do { - try validateAndExtractSigningCertificates( masterListURL: masterListURL ) - } catch let error { - verificationErrors.append( error ) - } - } - - do { - try ensureReadDataNotBeenTamperedWith( useCMSVerification : useCMSVerification ) - } catch let error { - verificationErrors.append( error ) - } - } - - public func verifyActiveAuthentication( challenge: [UInt8], signature: [UInt8] ) { - self.activeAuthenticationChallenge = challenge - self.activeAuthenticationSignature = signature - - Log.verbose( "Active Authentication") - Log.verbose( " challange - \(binToHexRep(challenge))") - Log.verbose( " signature - \(binToHexRep(signature))") - - // Get AA Public key - self.activeAuthenticationPassed = false - guard let dg15 = self.dataGroupsRead[.DG15] as? DataGroup15 else { return } - if let rsaKey = dg15.rsaPublicKey { - do { - var decryptedSig = try OpenSSLUtils.decryptRSASignature(signature: Data(signature), pubKey: rsaKey) - - // Decrypted signature compromises of header (6A), Message, Digest hash, Trailer - // Trailer can be 1 byte (BC - SHA-1 hash) or 2 bytes (xxCC) - where xx identifies the hash algorithm used - - // if the last byte of the digest is 0xBC, then this uses dedicated hash function 3 (SHA-1), - // If the last byte is 0xCC, then the preceding byte tells you which hash function - // should be used (currently not yet implemented!) - // See ISO/IEC9796-2 for details on the verification and ISO/IEC 10118-3 for the dedicated hash functions! - var hashTypeByte = decryptedSig.popLast() ?? 0x00 - if hashTypeByte == 0xCC { - hashTypeByte = decryptedSig.popLast() ?? 0x00 - } - var hashType : String = "" - var hashLength = 0 - - switch hashTypeByte { - case 0xBC, 0x33: - hashType = "SHA1" - hashLength = 20 // 160 bits for SHA-1 -> 20 bytes - case 0x34: - hashType = "SHA256" - hashLength = 32 // 256 bits for SHA-256 -> 32 bytes - case 0x35: - hashType = "SHA512" - hashLength = 64 // 512 bits for SHA-512 -> 64 bytes - case 0x36: - hashType = "SHA384" - hashLength = 48 // 384 bits for SHA-384 -> 48 bytes - case 0x38: - hashType = "SHA224" - hashLength = 28 // 224 bits for SHA-224 -> 28 bytes - default: - Log.error( "Error identifying Active Authentication RSA message digest hash algorithm" ) - return - } - - let message = [UInt8](decryptedSig[1 ..< (decryptedSig.count-hashLength)]) - let digest = [UInt8](decryptedSig[(decryptedSig.count-hashLength)...]) - - // Concatenate the challenge to the end of the message - let fullMsg = message + challenge - - // Then generate the hash - let msgHash : [UInt8] = try calcHash(data: fullMsg, hashAlgorithm: hashType) - - // Check hashes match - if msgHash == digest { - self.activeAuthenticationPassed = true - Log.debug( "Active Authentication (RSA) successful" ) - } else { - Log.error( "Error verifying Active Authentication RSA signature - Hash doesn't match" ) - } - } catch { - Log.error( "Error verifying Active Authentication RSA signature - \(error)" ) - } - } else if let ecdsaPublicKey = dg15.ecdsaPublicKey { - var digestType = "" - if let dg14 = dataGroupsRead[.DG14] as? DataGroup14, - let aa = dg14.securityInfos.compactMap({ $0 as? ActiveAuthenticationInfo }).first { - digestType = aa.getSignatureAlgorithmOIDString() ?? "" - } - - if OpenSSLUtils.verifyECDSASignature( publicKey:ecdsaPublicKey, signature: signature, data: challenge, digestType: digestType ) { - self.activeAuthenticationPassed = true - Log.debug( "Active Authentication (ECDSA) successful" ) - } else { - Log.error( "Error verifying Active Authentication ECDSA signature" ) - } - } - } - - // Check if signing certificate is on the revocation list - // We do this by trying to build a trust chain of the passport certificate against the ones in the revocation list - // and if we are successful then its been revoked. - // NOTE - NOT USED YET AS NOT ABLE TO TEST - func hasCertBeenRevoked( revocationListURL : URL ) -> Bool { - var revoked = false - do { - try validateAndExtractSigningCertificates( masterListURL: revocationListURL ) - - // Certificate chain found - which means certificate is on revocation list - revoked = true - } catch { - // No chain found - certificate not revoked - } - - return revoked - } - - private func validateAndExtractSigningCertificates( masterListURL: URL ) throws { - self.passportCorrectlySigned = false - - guard let sod = getDataGroup(.SOD) else { - throw PassiveAuthenticationError.SODMissing("No SOD found" ) - } - - let data = Data(sod.body) - let cert = try OpenSSLUtils.getX509CertificatesFromPKCS7( pkcs7Der: data ).first! - self.certificateSigningGroups[.documentSigningCertificate] = cert - - let rc = OpenSSLUtils.verifyTrustAndGetIssuerCertificate( x509:cert, CAFile: masterListURL ) - switch rc { - case .success(let csca): - self.certificateSigningGroups[.issuerSigningCertificate] = csca - case .failure(let error): - throw error - } - - Log.debug( "Passport passed SOD Verification" ) - self.passportCorrectlySigned = true - - } - - private func ensureReadDataNotBeenTamperedWith( useCMSVerification: Bool ) throws { - guard let sod = getDataGroup(.SOD) as? SOD else { - throw PassiveAuthenticationError.SODMissing("No SOD found" ) - } - - // Get SOD Content and verify that its correctly signed by the Document Signing Certificate - var signedData : Data - documentSigningCertificateVerified = false - do { - if useCMSVerification { - signedData = try OpenSSLUtils.verifyAndReturnSODEncapsulatedDataUsingCMS(sod: sod) - } else { - signedData = try OpenSSLUtils.verifyAndReturnSODEncapsulatedData(sod: sod) - } - documentSigningCertificateVerified = true - } catch { - signedData = try sod.getEncapsulatedContent() - } - - // Now Verify passport data by comparing compare Hashes in SOD against - // computed hashes to ensure data not been tampered with - passportDataNotTampered = false - let asn1Data = try OpenSSLUtils.ASN1Parse( data: signedData ) - let (sodHashAlgorythm, sodHashes) = try parseSODSignatureContent( asn1Data ) - - var errors : String = "" - // pour chaque dataGroupsRead, il faut que le hash sodHashVal parsΓ© du eContent (signedData) soit Γ©gal - // au computedHashVal qui sort du dataGroupsRead - for (id,dgVal) in dataGroupsRead { - guard let sodHashVal = sodHashes[id] else { - // SOD and COM don't have hashes so these aren't errors - if id != .SOD && id != .COM { - errors += "DataGroup \(id) is missing!\n" - } - continue - } - - let computedHashVal = binToHexRep(dgVal.hash(sodHashAlgorythm)) - - var match = true - if computedHashVal != sodHashVal { - errors += "\(id) invalid hash:\n SOD hash:\(sodHashVal)\n Computed hash:\(computedHashVal)\n" - match = false - } - - dataGroupHashes[id] = DataGroupHash(id: id.getName(), sodHash:sodHashVal, computedHash:computedHashVal, match:match) - } - - if errors != "" { - Log.error( "HASH ERRORS - \(errors)" ) - throw PassiveAuthenticationError.InvalidDataGroupHash(errors) - } - - Log.debug( "Passport passed Datagroup Tampering check" ) - passportDataNotTampered = true - } - - - /// Parses an text ASN1 structure, and extracts the Hash Algorythm and Hashes contained from the Octect strings - /// - Parameter content: the text ASN1 stucure format - /// - Returns: The Hash Algorythm used - either SHA1 or SHA256, and a dictionary of hashes for the datagroups (currently only DG1 and DG2 are handled) - private func parseSODSignatureContent( _ content : String ) throws -> (String, [DataGroupId : String]){ - var currentDG = "" - var sodHashAlgo = "" - var sodHashes : [DataGroupId : String] = [:] - - let lines = content.components(separatedBy: "\n") - - let dgList : [DataGroupId] = [.COM,.DG1,.DG2,.DG3,.DG4,.DG5,.DG6,.DG7,.DG8,.DG9,.DG10,.DG11,.DG12,.DG13,.DG14,.DG15,.DG16,.SOD] - - for line in lines { - if line.contains( "d=2" ) && line.contains( "OBJECT" ) { - if line.contains( "sha1" ) { - sodHashAlgo = "SHA1" - } else if line.contains( "sha224" ) { - sodHashAlgo = "SHA224" - } else if line.contains( "sha256" ) { - sodHashAlgo = "SHA256" - } else if line.contains( "sha384" ) { - sodHashAlgo = "SHA384" - } else if line.contains( "sha512" ) { - sodHashAlgo = "SHA512" - } - } else if line.contains("d=3" ) && line.contains( "INTEGER" ) { - if let range = line.range(of: "INTEGER") { - let substr = line[range.upperBound.. String { + switch self { + case .documentSigningCertificate: + return "documentSigningCertificate" + case .issuerSigningCertificate: + return "issuerSigningCertificate" + } + } +} + +// Helper function to map the keys of a dictionary +extension Dictionary { + func mapKeys(_ transform: (Key) -> T) -> Dictionary { + Dictionary(uniqueKeysWithValues: map { (transform($0.key), $0.value) }) + } +} @available(iOS 15, *) @objc(PassportReader) @@ -58,42 +78,276 @@ class PassportReader: NSObject{ @objc(scanPassport:dateOfBirth:dateOfExpiry:resolve:reject:) func scanPassport(_ passportNumber: String, dateOfBirth: String, dateOfExpiry: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { let customMessageHandler : (NFCViewDisplayMessage)->String? = { (displayMessage) in - switch displayMessage { - case .requestPresentPassport: - return "Hold your iPhone near ann NFC enabled passport." - default: - // Return nil for all other messages so we use the provided default - return nil - } - } + switch displayMessage { + case .requestPresentPassport: + return "Hold your iPhone against an NFC enabled passport." + default: + // Return nil for all other messages so we use the provided default + return nil + } + } Task { [weak self] in - guard let self = self else { - return - } + guard let self = self else { + return + } - do { - let mrzKey = getMRZKey( passportNumber: passportNumber, dateOfBirth: dateOfBirth, dateOfExpiry: dateOfExpiry) - let masterListURL = Bundle.main.url(forResource: "masterList", withExtension: ".pem") - passportReader.setMasterListURL( masterListURL! ) + do { + let mrzKey = getMRZKey( passportNumber: passportNumber, dateOfBirth: dateOfBirth, dateOfExpiry: dateOfExpiry) + let masterListURL = Bundle.main.url(forResource: "masterList", withExtension: ".pem") + passportReader.setMasterListURL( masterListURL! ) - let passport = try await passportReader.readPassport( mrzKey: mrzKey, customDisplayMessage: customMessageHandler) + let passport = try await passportReader.readPassport( mrzKey: mrzKey, customDisplayMessage: customMessageHandler) - let passportData = passport.lastName - resolve(passportData) - } catch { - reject("E_PASSPORT_READ", "Failed to read passport", error) - } + var ret = [String:String]() + print("documentType", passport.documentType) + + ret["documentType"] = passport.documentType + ret["documentSubType"] = passport.documentSubType + ret["documentNumber"] = passport.documentNumber + ret["issuingAuthority"] = passport.issuingAuthority + ret["documentExpiryDate"] = passport.documentExpiryDate + ret["dateOfBirth"] = passport.dateOfBirth + ret["gender"] = passport.gender + ret["nationality"] = passport.nationality + ret["lastName"] = passport.lastName + ret["firstName"] = passport.firstName + ret["passportMRZ"] = passport.passportMRZ + ret["placeOfBirth"] = passport.placeOfBirth + ret["residenceAddress"] = passport.residenceAddress + ret["phoneNumber"] = passport.phoneNumber + ret["personalNumber"] = passport.personalNumber + + // documentSigningCertificate + // countrySigningCertificate + + if let serializedDocumentSigningCertificate = serializeX509Wrapper(passport.documentSigningCertificate) { + ret["documentSigningCertificate"] = serializedDocumentSigningCertificate } + + if let serializedCountrySigningCertificate = serializeX509Wrapper(passport.countrySigningCertificate) { + ret["countrySigningCertificate"] = serializedCountrySigningCertificate + } + print("passport.documentSigningCertificate", passport.documentSigningCertificate) + print("passport.countrySigningCertificate", passport.countrySigningCertificate) + + ret["LDSVersion"] = passport.LDSVersion + ret["dataGroupsPresent"] = passport.dataGroupsPresent.joined(separator: ", ") + + print("passport.LDSVersion", passport.LDSVersion) + + // ret["dataGroupsAvailable"] = passport.dataGroupsAvailable.map(dataGroupIdToString) + + print("passport.dataGroupsAvailable", passport.dataGroupsAvailable) + print("passport.dataGroupsRead", passport.dataGroupsRead) + print("passport.dataGroupHashes", passport.dataGroupHashes) + + // do { + // let dataGroupsReadData = try JSONSerialization.data(withJSONObject: passport.dataGroupsRead.mapValues { self.convertDataGroupToSerializableFormat($0) }, options: []) + // let dataGroupsReadJsonString = String(data: dataGroupsReadData, encoding: .utf8) ?? "" + // ret["dataGroupsRead"] = dataGroupsReadJsonString + // } catch { + // print("Error serializing dataGroupsRead: \(error)") + // } + + // ret["dataGroupsRead"] = passport.dataGroupsRead.mapValues { convertDataGroupToSerializableFormat($0) } + do { + let dataGroupHashesDict = passport.dataGroupHashes.mapKeys { "\($0)" } + let serializableDataGroupHashes = dataGroupHashesDict.mapValues { convertDataGroupHashToSerializableFormat($0) } + let dataGroupHashesData = try JSONSerialization.data(withJSONObject: serializableDataGroupHashes, options: []) + let dataGroupHashesJsonString = String(data: dataGroupHashesData, encoding: .utf8) ?? "" + ret["dataGroupHashes"] = dataGroupHashesJsonString + } catch { + print("Error serializing dataGroupHashes: \(error)") + } + + + // cardAccess + // BACStatus + // PACEStatus + // chipAuthenticationStatus + ret["passportCorrectlySigned"] = String(passport.passportCorrectlySigned) + ret["documentSigningCertificateVerified"] = String(passport.documentSigningCertificateVerified) + ret["passportDataNotTampered"] = String(passport.passportDataNotTampered) + ret["activeAuthenticationPassed"] = String(passport.activeAuthenticationPassed) + ret["activeAuthenticationChallenge"] = encodeByteArrayToHexString(passport.activeAuthenticationChallenge) + ret["activeAuthenticationSignature"] = encodeByteArrayToHexString(passport.activeAuthenticationSignature) + ret["verificationErrors"] = encodeErrors(passport.verificationErrors).joined(separator: ", ") + + ret["isPACESupported"] = String(passport.isPACESupported) + ret["isChipAuthenticationSupported"] = String(passport.isChipAuthenticationSupported) + + // passportImage + // signatureImage + + // activeAuthenticationSupported + + print("passport.certificateSigningGroups", passport.certificateSigningGroups) + + // ret["certificateSigningGroups"] = passport.certificateSigningGroups.mapKeys(certificateTypeToString).mapValues(encodeX509WrapperToJsonString) + // if let passportDataElements = passport.passportDataElements { + // ret["passportDataElements"] = passportDataElements + // } else { + // ret["passportDataElements"] = [:] + // } + + do { + let sod = passport.getDataGroup(DataGroupId.SOD) as! SOD + + // ret["concatenatedDataHashes"] = try sod.getEncapsulatedContent().base64EncodedString() // this is what we call concatenatedDataHashes, not the true eContent + ret["eContentBase64"] = try sod.getEncapsulatedContent().base64EncodedString() // this is what we call concatenatedDataHashes, not the true eContent + + ret["signatureAlgorithm"] = try sod.getSignatureAlgorithm() + + let messageDigestFromSignedAttributes = try sod.getMessageDigestFromSignedAttributes() + let signedAttributes = try sod.getSignedAttributes() + print("messageDigestFromSignedAttributes", messageDigestFromSignedAttributes) + + ret["signedAttributes"] = signedAttributes.base64EncodedString() + // if let pubKey = convertOpaquePointerToSecKey(opaquePointer: sod.pubKey), + // let serializedPublicKey = serializePublicKey(pubKey) { + // ret["publicKeyBase64"] = serializedPublicKey + // } else { + // // Handle the case where pubKey is nil + // } + + if let serializedSignature = serializeSignature(from: sod) { + ret["signatureBase64"] = serializedSignature + } + + } catch { + print("Error serializing SOD data: \(error)") + reject("E_PASSPORT_READ", "Failed to read passport", error) + } + + let stringified = String(data: try JSONEncoder().encode(ret), encoding: .utf8) + + resolve(stringified) + } catch { + reject("E_PASSPORT_READ", "Failed to read passport", error) + } + } + } + + // mrz βœ… + // dataHashes βœ… + // eContentBytes βœ… + // pubkey + // signature βœ… + +// func convertOpaquePointerToSecKey(opaquePointer: OpaquePointer?) -> SecKey? { +// guard let opaquePointer = opaquePointer else { return nil } + +// // Assuming the key is in DER format +// // Replace with actual code to convert OpaquePointer to Data +// let keyData = Data(bytes: opaquePointer, count: keyLength) // Replace `keyLength` with actual length of key data + +// let attributes: [String: Any] = [ +// kSecAttrKeyType as String: kSecAttrKeyTypeRSA, // or kSecAttrKeyTypeECSECPrimeRandom for ECDSA +// kSecAttrKeyClass as String: kSecAttrKeyClassPublic +// ] + +// var error: Unmanaged? +// let secKey = SecKeyCreateWithData(keyData as CFData, attributes as CFDictionary, &error) + +// if let error = error { +// print("Error creating SecKey: \(error.takeRetainedValue())") +// return nil +// } + +// return secKey +// } + +func serializePublicKey(_ publicKey: SecKey) -> String? { + var error: Unmanaged? + guard let publicKeyData = SecKeyCopyExternalRepresentation(publicKey, &error) as Data? else { + print("Error serializing public key: \(error!.takeRetainedValue() as Error)") + return nil + } + return publicKeyData.base64EncodedString() +} + + func serializeSignature(from sod: SOD) -> String? { + do { + let signature = try sod.getSignature() + return signature.base64EncodedString() + } catch { + print("Error extracting signature: \(error)") + return nil + } + } + + func serializeX509Wrapper(_ certificate: X509Wrapper?) -> String? { + guard let certificate = certificate else { return nil } + + let itemsDict = certificate.getItemsAsDict() + var certInfoStringKeys = [String: String]() + + // Convert CertificateItem keys to String keys + for (key, value) in itemsDict { + certInfoStringKeys[key.rawValue] = value + } + + // Add PEM representation + let certPEM = certificate.certToPEM() + certInfoStringKeys["PEM"] = certPEM + + do { + let jsonData = try JSONSerialization.data(withJSONObject: certInfoStringKeys, options: []) + return String(data: jsonData, encoding: .utf8) + } catch { + print("Error serializing X509Wrapper: \(error)") + return nil + } } -// @objc(scanPassport:dateOfBirth:dateOfExpiry:resolve:reject:) -// func scanPassport(_ passportNumber: String, dateOfBirth: String, dateOfExpiry: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { -// let concatenatedString = "\(passportNumber), \(dateOfBirth), \(dateOfExpiry)" -// resolve(concatenatedString) -// } + func encodeX509WrapperToJsonString(_ certificate: X509Wrapper?) -> String? { + guard let certificate = certificate else { return nil } + let certificateItems = certificate.getItemsAsDict() + + // Convert certificate items to JSON + do { + let jsonData = try JSONSerialization.data(withJSONObject: certificateItems, options: []) + return String(data: jsonData, encoding: .utf8) + } catch { + print("Error serializing certificate items to JSON: \(error)") + return nil + } + } + + func encodeByteArrayToHexString(_ byteArray: [UInt8]) -> String { + return byteArray.map { String(format: "%02x", $0) }.joined() + } + + func encodeErrors(_ errors: [Error]) -> [String] { + return errors.map { $0.localizedDescription } + } + + func convertDataGroupHashToSerializableFormat(_ dataGroupHash: DataGroupHash) -> [String: Any] { + return [ + "id": dataGroupHash.id, + "sodHash": dataGroupHash.sodHash, + "computedHash": dataGroupHash.computedHash, + "match": dataGroupHash.match + ] + } + + func dataGroupIdToString(_ id: DataGroupId) -> String { + return String(id.rawValue) // or any other method to get a string representation + } + + func certificateTypeToString(_ type: CertificateType) -> String { + return type.stringValue() + } + + func convertDataGroupToSerializableFormat(_ dataGroup: DataGroup) -> [String: Any] { + return [ + "datagroupType": dataGroupIdToString(dataGroup.datagroupType), + "body": encodeByteArrayToHexString(dataGroup.body), + "data": encodeByteArrayToHexString(dataGroup.data) + ] + } - @objc static func requiresMainQueueSetup() -> Bool { return true diff --git a/app/ios/Podfile b/app/ios/Podfile index c30a8a70e..54addf801 100644 --- a/app/ios/Podfile +++ b/app/ios/Podfile @@ -1,3 +1,5 @@ +use_frameworks! + # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( @@ -5,7 +7,7 @@ require Pod::Executable.execute_command('node', ['-p', {paths: [process.argv[1]]}, )', __dir__]).strip -platform :ios, min_ios_version_supported +platform :ios, '13.0' prepare_react_native_project! # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. @@ -25,14 +27,15 @@ if linkage != nil use_frameworks! :linkage => linkage.to_sym end -target 'AwesomeProject' do +target 'ProofOfPassport' do config = use_native_modules! # Flags change depending on the env values. flags = get_default_flags() use_frameworks! - pod 'NFCPassportReader', git:'https://github.com/yssf-io/NFCPassportReader.git' + pod 'NFCPassportReader', git: 'https://github.com/0xturboblitz/NFCPassportReader.git', commit: 'd36952eeaa2025ff1a9c9abbc244bd5ff53eb0f9' + pod 'MoproKit', :path => './MoproKit' use_react_native!( :path => config[:reactNativePath], @@ -48,12 +51,20 @@ target 'AwesomeProject' do :app_path => "#{Pod::Config.instance.installation_root}/.." ) - target 'AwesomeProjectTests' do + target 'ProofOfPassportTests' do inherit! :complete # Pods for testing end post_install do |installer| + installer.generated_projects.each do |project| + project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' + end + end + end + # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 react_native_post_install( installer, diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock index 782f38982..afdcabe3b 100644 --- a/app/ios/Podfile.lock +++ b/app/ios/Podfile.lock @@ -11,7 +11,8 @@ PODS: - ReactCommon/turbomodule/core (= 0.72.3) - fmt (6.2.1) - glog (0.3.5) - - NFCPassportReader (2.0.2): + - MoproKit (0.1.0) + - NFCPassportReader (2.0.3): - OpenSSL-Universal (= 1.1.1100) - OpenSSL-Universal (1.1.1100) - RCT-Folly (2021.07.22.00): @@ -390,7 +391,7 @@ PODS: - React-jsi (= 0.72.3) - React-logger (= 0.72.3) - React-perflogger (= 0.72.3) - - RNFS (2.20.0): + - RNSVG (13.4.0): - React-Core - SocketRocket (0.6.1) - Yoga (1.14.0) @@ -401,7 +402,8 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - NFCPassportReader (from `https://github.com/yssf-io/NFCPassportReader.git`) + - MoproKit (from `./MoproKit`) + - NFCPassportReader (from `https://github.com/0xturboblitz/NFCPassportReader.git`, commit `d36952eeaa2025ff1a9c9abbc244bd5ff53eb0f9`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) @@ -435,7 +437,7 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - RNFS (from `../node_modules/react-native-fs`) + - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: @@ -455,8 +457,11 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + MoproKit: + :path: "./MoproKit" NFCPassportReader: - :git: https://github.com/yssf-io/NFCPassportReader.git + :commit: d36952eeaa2025ff1a9c9abbc244bd5ff53eb0f9 + :git: https://github.com/0xturboblitz/NFCPassportReader.git RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -521,15 +526,15 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/utils" ReactCommon: :path: "../node_modules/react-native/ReactCommon" - RNFS: - :path: "../node_modules/react-native-fs" + RNSVG: + :path: "../node_modules/react-native-svg" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" CHECKOUT OPTIONS: NFCPassportReader: - :commit: 08f9874f1e3287c9a726225e1e9193ef2b194d93 - :git: https://github.com/yssf-io/NFCPassportReader.git + :commit: d36952eeaa2025ff1a9c9abbc244bd5ff53eb0f9 + :git: https://github.com/0xturboblitz/NFCPassportReader.git SPEC CHECKSUMS: boost: 57d2868c099736d80fcd648bf211b4431e51a558 @@ -538,7 +543,8 @@ SPEC CHECKSUMS: FBReactNativeSpec: c6bd9e179757b3c0ecf815864fae8032377903ef fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - NFCPassportReader: 09906a0f1940f09eea79c141cb5b53a19aa74bab + MoproKit: d1faf8f9495e8e84d085f6c4e57e36f951e6f07e + NFCPassportReader: a160b80e3df3b5325c13902f90405f5eef7520b3 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 RCTRequired: a2faf4bad4e438ca37b2040cb8f7799baa065c18 @@ -549,13 +555,13 @@ SPEC CHECKSUMS: React-Core: 8293312ad137ea82fd2c29deb163dbc24aa4e00e React-CoreModules: 32fab1d62416849a3b6dac6feff9d54e5ddc2d1e React-cxxreact: 55d0f7cb6b4cc09ba9190797f1da87182d1a2fb6 - React-debug: 6c3d27a8aef6df933dff63b0f31fdcf2ad437718 + React-debug: 7e61555c8158126c6cd98c3154381ad3821aaaca React-jsc: 0db8e8cc2074d979c37ffa7b8d7c914833960497 React-jsi: 58677ff4848ceb6aeb9118fe03448a843ea5e16a React-jsiexecutor: 2c15ba1bace70177492368d5180b564f165870fd React-jsinspector: b511447170f561157547bc0bef3f169663860be7 React-logger: c5b527272d5f22eaa09bb3c3a690fee8f237ae95 - React-NativeModulesApple: a1c74fa3d7f0b1f93bbd4102061a93abfc8a739a + React-NativeModulesApple: 0438665fc7473be6edc496e823e6ea0b0537b46c React-perflogger: 6bd153e776e6beed54c56b0847e1220a3ff92ba5 React-RCTActionSheet: c0b62af44e610e69d9a2049a682f5dba4e9dff17 React-RCTAnimation: fe7005136b58f58871cab2f70732343b6e330d30 @@ -569,13 +575,13 @@ SPEC CHECKSUMS: React-RCTVibration: ea3a68a49873a54ced927c90923fc6932baf344a React-rncore: 9672a017af4a7da7495d911f0b690cbcae9dd18d React-runtimeexecutor: 369ae9bb3f83b65201c0c8f7d50b72280b5a1dbc - React-runtimescheduler: 5c392d612fffa213b673e651f886ead35995e262 - React-utils: 2589af83a714e02813d10a4c5fc064a6832c006b - ReactCommon: a34545a02528203cee0839eeb01d754e8c4ad948 - RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 + React-runtimescheduler: ec1066a4f2d1152eb1bc3fb61d69376b3bc0dde0 + React-utils: d55ba834beb39f01b0b470ae43478c0a3a024abe + ReactCommon: 68e3a815fbb69af3bb4196e04c6ae7abb306e7a8 + RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce -PODFILE CHECKSUM: ef3dd3fed039eab5043d469e8f98dbcd0de8a7d5 +PODFILE CHECKSUM: d401e6efe0c933985349c8c115c7edca8fef3182 -COCOAPODS: 1.12.1 +COCOAPODS: 1.14.3 diff --git a/app/ios/AwesomeProject-Bridging-Header.h b/app/ios/ProofOfPassport-Bridging-Header.h similarity index 100% rename from app/ios/AwesomeProject-Bridging-Header.h rename to app/ios/ProofOfPassport-Bridging-Header.h diff --git a/app/ios/AwesomeProject.xcodeproj/project.pbxproj b/app/ios/ProofOfPassport.xcodeproj/project.pbxproj similarity index 65% rename from app/ios/AwesomeProject.xcodeproj/project.pbxproj rename to app/ios/ProofOfPassport.xcodeproj/project.pbxproj index 1db696f46..b9f442f7f 100644 --- a/app/ios/AwesomeProject.xcodeproj/project.pbxproj +++ b/app/ios/ProofOfPassport.xcodeproj/project.pbxproj @@ -7,16 +7,21 @@ objects = { /* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* AwesomeProjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */; }; + 00E356F31AD99517003FC87E /* ProofOfPassportTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ProofOfPassportTests.m */; }; + 057DFC5F2B56DC0D003D24A3 /* libmopro_ffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 057DFC5E2B56DC0D003D24A3 /* libmopro_ffi.a */; }; + 05BD9DCC2B548AA900823023 /* MoproKit in Resources */ = {isa = PBXBuildFile; fileRef = 05BD9DCB2B548AA900823023 /* MoproKit */; }; + 05BD9DCE2B554FA300823023 /* libmopro_ffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 05BD9DCD2B554FA300823023 /* libmopro_ffi.a */; }; + 05EDEDC62B52D25D00AA51AD /* Prover.m in Sources */ = {isa = PBXBuildFile; fileRef = 05EDEDC42B52D25D00AA51AD /* Prover.m */; }; + 05EDEDC72B52D25D00AA51AD /* Prover.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05EDEDC52B52D25D00AA51AD /* Prover.swift */; }; + 0651723A94C70A2B31E3E4F8 /* Pods_ProofOfPassport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAAF621B99F62C9ED35AA07 /* Pods_ProofOfPassport.framework */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 1ADA5CBFFFB043C12B3C4011 /* Pods_AwesomeProject.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F81894AE401F61E2393104D /* Pods_AwesomeProject.framework */; }; + 75E785E6A486EA107852C8A6 /* Pods_ProofOfPassport_ProofOfPassportTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CFAE0EE7E1942128592D0CC4 /* Pods_ProofOfPassport_ProofOfPassportTests.framework */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 905B70052A72767900AFA232 /* PassportReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 905B70042A72767900AFA232 /* PassportReader.swift */; }; 905B70072A72774000AFA232 /* PassportReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 905B70062A72774000AFA232 /* PassportReader.m */; }; 905B700B2A72A5E900AFA232 /* masterList.pem in Resources */ = {isa = PBXBuildFile; fileRef = 905B700A2A72A5E900AFA232 /* masterList.pem */; }; - D5B4CD952178B51C14F77614 /* Pods_AwesomeProject_AwesomeProjectTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 455B3F561C1D3D833AB15B26 /* Pods_AwesomeProject_AwesomeProjectTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -25,32 +30,38 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = AwesomeProject; + remoteInfo = ProofOfPassport; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AwesomeProjectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356EE1AD99517003FC87E /* ProofOfPassportTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ProofOfPassportTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AwesomeProjectTests.m; sourceTree = ""; }; - 0D05C085F8CBAC104F72E160 /* Pods-AwesomeProject-AwesomeProjectTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeProject-AwesomeProjectTests.release.xcconfig"; path = "Target Support Files/Pods-AwesomeProject-AwesomeProjectTests/Pods-AwesomeProject-AwesomeProjectTests.release.xcconfig"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* AwesomeProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AwesomeProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = AwesomeProject/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = AwesomeProject/AppDelegate.mm; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AwesomeProject/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = AwesomeProject/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = AwesomeProject/main.m; sourceTree = ""; }; - 26A432E0434B89485C7E3765 /* Pods-AwesomeProject.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeProject.debug.xcconfig"; path = "Target Support Files/Pods-AwesomeProject/Pods-AwesomeProject.debug.xcconfig"; sourceTree = ""; }; - 455B3F561C1D3D833AB15B26 /* Pods_AwesomeProject_AwesomeProjectTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AwesomeProject_AwesomeProjectTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = AwesomeProject/LaunchScreen.storyboard; sourceTree = ""; }; - 905B70032A72767800AFA232 /* AwesomeProject-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AwesomeProject-Bridging-Header.h"; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* ProofOfPassportTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProofOfPassportTests.m; sourceTree = ""; }; + 057DFC5E2B56DC0D003D24A3 /* libmopro_ffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmopro_ffi.a; path = MoproKit/Libs/libmopro_ffi.a; sourceTree = ""; }; + 05A0773D2B5333CE0037E489 /* MoproKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MoproKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05BD9DCB2B548AA900823023 /* MoproKit */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MoproKit; sourceTree = ""; }; + 05BD9DCD2B554FA300823023 /* libmopro_ffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmopro_ffi.a; path = MoproKit/Libs/libmopro_ffi.a; sourceTree = ""; }; + 05EDEDC42B52D25D00AA51AD /* Prover.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Prover.m; sourceTree = ""; }; + 05EDEDC52B52D25D00AA51AD /* Prover.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Prover.swift; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* ProofOfPassport.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ProofOfPassport.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ProofOfPassport/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = ProofOfPassport/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ProofOfPassport/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ProofOfPassport/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ProofOfPassport/main.m; sourceTree = ""; }; + 22FDF2ADA5789E09558ADB4E /* Pods-ProofOfPassport-ProofOfPassportTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProofOfPassport-ProofOfPassportTests.release.xcconfig"; path = "Target Support Files/Pods-ProofOfPassport-ProofOfPassportTests/Pods-ProofOfPassport-ProofOfPassportTests.release.xcconfig"; sourceTree = ""; }; + 2B01EC4981C171CA304E6D2B /* Pods-ProofOfPassport.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProofOfPassport.release.xcconfig"; path = "Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport.release.xcconfig"; sourceTree = ""; }; + 3DAAF621B99F62C9ED35AA07 /* Pods_ProofOfPassport.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProofOfPassport.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ProofOfPassport/LaunchScreen.storyboard; sourceTree = ""; }; + 905B70032A72767800AFA232 /* ProofOfPassport-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ProofOfPassport-Bridging-Header.h"; sourceTree = ""; }; 905B70042A72767900AFA232 /* PassportReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassportReader.swift; sourceTree = ""; }; 905B70062A72774000AFA232 /* PassportReader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PassportReader.m; sourceTree = ""; }; - 905B70082A729CD400AFA232 /* AwesomeProject.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = AwesomeProject.entitlements; path = AwesomeProject/AwesomeProject.entitlements; sourceTree = ""; }; - 905B700A2A72A5E900AFA232 /* masterList.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = masterList.pem; path = AwesomeProject/masterList.pem; sourceTree = ""; }; - 9F81894AE401F61E2393104D /* Pods_AwesomeProject.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AwesomeProject.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A1B7A34F7E4C3F2D19C5D973 /* Pods-AwesomeProject.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeProject.release.xcconfig"; path = "Target Support Files/Pods-AwesomeProject/Pods-AwesomeProject.release.xcconfig"; sourceTree = ""; }; - BCC787E0FDFB928F9DA23E3F /* Pods-AwesomeProject-AwesomeProjectTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AwesomeProject-AwesomeProjectTests.debug.xcconfig"; path = "Target Support Files/Pods-AwesomeProject-AwesomeProjectTests/Pods-AwesomeProject-AwesomeProjectTests.debug.xcconfig"; sourceTree = ""; }; + 905B70082A729CD400AFA232 /* ProofOfPassport.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = ProofOfPassport.entitlements; path = ProofOfPassport/ProofOfPassport.entitlements; sourceTree = ""; }; + 905B700A2A72A5E900AFA232 /* masterList.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = masterList.pem; path = ProofOfPassport/masterList.pem; sourceTree = ""; }; + 918081ECA23C8F232594E334 /* Pods-ProofOfPassport-ProofOfPassportTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProofOfPassport-ProofOfPassportTests.debug.xcconfig"; path = "Target Support Files/Pods-ProofOfPassport-ProofOfPassportTests/Pods-ProofOfPassport-ProofOfPassportTests.debug.xcconfig"; sourceTree = ""; }; + CE0B085EC65BAFEB61DD9C49 /* Pods-ProofOfPassport.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProofOfPassport.debug.xcconfig"; path = "Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport.debug.xcconfig"; sourceTree = ""; }; + CFAE0EE7E1942128592D0CC4 /* Pods_ProofOfPassport_ProofOfPassportTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProofOfPassport_ProofOfPassportTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -59,7 +70,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D5B4CD952178B51C14F77614 /* Pods_AwesomeProject_AwesomeProjectTests.framework in Frameworks */, + 75E785E6A486EA107852C8A6 /* Pods_ProofOfPassport_ProofOfPassportTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -67,20 +78,22 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1ADA5CBFFFB043C12B3C4011 /* Pods_AwesomeProject.framework in Frameworks */, + 0651723A94C70A2B31E3E4F8 /* Pods_ProofOfPassport.framework in Frameworks */, + 05BD9DCE2B554FA300823023 /* libmopro_ffi.a in Frameworks */, + 057DFC5F2B56DC0D003D24A3 /* libmopro_ffi.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* AwesomeProjectTests */ = { + 00E356EF1AD99517003FC87E /* ProofOfPassportTests */ = { isa = PBXGroup; children = ( - 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */, + 00E356F21AD99517003FC87E /* ProofOfPassportTests.m */, 00E356F01AD99517003FC87E /* Supporting Files */, ); - path = AwesomeProjectTests; + path = ProofOfPassportTests; sourceTree = ""; }; 00E356F01AD99517003FC87E /* Supporting Files */ = { @@ -91,30 +104,36 @@ name = "Supporting Files"; sourceTree = ""; }; - 13B07FAE1A68108700A75B9A /* AwesomeProject */ = { + 13B07FAE1A68108700A75B9A /* ProofOfPassport */ = { isa = PBXGroup; children = ( + 05EDEDC42B52D25D00AA51AD /* Prover.m */, + 05EDEDC52B52D25D00AA51AD /* Prover.swift */, 905B700A2A72A5E900AFA232 /* masterList.pem */, - 905B70082A729CD400AFA232 /* AwesomeProject.entitlements */, + 905B70082A729CD400AFA232 /* ProofOfPassport.entitlements */, + 057DFC5E2B56DC0D003D24A3 /* libmopro_ffi.a */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 05BD9DCB2B548AA900823023 /* MoproKit */, 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, + 05BD9DCD2B554FA300823023 /* libmopro_ffi.a */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB71A68108700A75B9A /* main.m */, 905B70042A72767900AFA232 /* PassportReader.swift */, - 905B70032A72767800AFA232 /* AwesomeProject-Bridging-Header.h */, + 905B70032A72767800AFA232 /* ProofOfPassport-Bridging-Header.h */, 905B70062A72774000AFA232 /* PassportReader.m */, ); - name = AwesomeProject; + name = ProofOfPassport; sourceTree = ""; }; 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( + 05A0773D2B5333CE0037E489 /* MoproKit.framework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 9F81894AE401F61E2393104D /* Pods_AwesomeProject.framework */, - 455B3F561C1D3D833AB15B26 /* Pods_AwesomeProject_AwesomeProjectTests.framework */, + 3DAAF621B99F62C9ED35AA07 /* Pods_ProofOfPassport.framework */, + CFAE0EE7E1942128592D0CC4 /* Pods_ProofOfPassport_ProofOfPassportTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -129,9 +148,9 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 13B07FAE1A68108700A75B9A /* AwesomeProject */, + 13B07FAE1A68108700A75B9A /* ProofOfPassport */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* AwesomeProjectTests */, + 00E356EF1AD99517003FC87E /* ProofOfPassportTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, BBD78D7AC51CEA395F1C20DB /* Pods */, @@ -144,8 +163,8 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* AwesomeProject.app */, - 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */, + 13B07F961A680F5B00A75B9A /* ProofOfPassport.app */, + 00E356EE1AD99517003FC87E /* ProofOfPassportTests.xctest */, ); name = Products; sourceTree = ""; @@ -153,10 +172,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 26A432E0434B89485C7E3765 /* Pods-AwesomeProject.debug.xcconfig */, - A1B7A34F7E4C3F2D19C5D973 /* Pods-AwesomeProject.release.xcconfig */, - BCC787E0FDFB928F9DA23E3F /* Pods-AwesomeProject-AwesomeProjectTests.debug.xcconfig */, - 0D05C085F8CBAC104F72E160 /* Pods-AwesomeProject-AwesomeProjectTests.release.xcconfig */, + CE0B085EC65BAFEB61DD9C49 /* Pods-ProofOfPassport.debug.xcconfig */, + 2B01EC4981C171CA304E6D2B /* Pods-ProofOfPassport.release.xcconfig */, + 918081ECA23C8F232594E334 /* Pods-ProofOfPassport-ProofOfPassportTests.debug.xcconfig */, + 22FDF2ADA5789E09558ADB4E /* Pods-ProofOfPassport-ProofOfPassportTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -164,45 +183,45 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* AwesomeProjectTests */ = { + 00E356ED1AD99517003FC87E /* ProofOfPassportTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AwesomeProjectTests" */; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ProofOfPassportTests" */; buildPhases = ( - 2CEEDB4F696405D4E4B0CA04 /* [CP] Check Pods Manifest.lock */, + 30EF76FEB71F2239D12E988C /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - 4786C99960C198CBC0841652 /* [CP] Embed Pods Frameworks */, + 3407A7677F910117EC6ADA91 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( 00E356F51AD99517003FC87E /* PBXTargetDependency */, ); - name = AwesomeProjectTests; - productName = AwesomeProjectTests; - productReference = 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */; + name = ProofOfPassportTests; + productName = ProofOfPassportTests; + productReference = 00E356EE1AD99517003FC87E /* ProofOfPassportTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 13B07F861A680F5B00A75B9A /* AwesomeProject */ = { + 13B07F861A680F5B00A75B9A /* ProofOfPassport */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AwesomeProject" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ProofOfPassport" */; buildPhases = ( - 141C3B9CB8F4134662795CF4 /* [CP] Check Pods Manifest.lock */, + CC47E87AFD57D7866D1463AC /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - FAF2988CBB80C1B370711DF7 /* [CP] Embed Pods Frameworks */, + A8CC45FE941CED993895A21C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = AwesomeProject; - productName = AwesomeProject; - productReference = 13B07F961A680F5B00A75B9A /* AwesomeProject.app */; + name = ProofOfPassport; + productName = ProofOfPassport; + productReference = 13B07F961A680F5B00A75B9A /* ProofOfPassport.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -222,7 +241,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AwesomeProject" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ProofOfPassport" */; compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -235,8 +254,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* AwesomeProject */, - 00E356ED1AD99517003FC87E /* AwesomeProjectTests */, + 13B07F861A680F5B00A75B9A /* ProofOfPassport */, + 00E356ED1AD99517003FC87E /* ProofOfPassportTests */, ); }; /* End PBXProject section */ @@ -254,6 +273,7 @@ buildActionMask = 2147483647; files = ( 905B700B2A72A5E900AFA232 /* masterList.pem in Resources */, + 05BD9DCC2B548AA900823023 /* MoproKit in Resources */, 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, ); @@ -278,7 +298,7 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 141C3B9CB8F4134662795CF4 /* [CP] Check Pods Manifest.lock */ = { + 30EF76FEB71F2239D12E988C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -293,14 +313,48 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AwesomeProject-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-ProofOfPassport-ProofOfPassportTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 2CEEDB4F696405D4E4B0CA04 /* [CP] Check Pods Manifest.lock */ = { + 3407A7677F910117EC6ADA91 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport-ProofOfPassportTests/Pods-ProofOfPassport-ProofOfPassportTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport-ProofOfPassportTests/Pods-ProofOfPassport-ProofOfPassportTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport-ProofOfPassportTests/Pods-ProofOfPassport-ProofOfPassportTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + A8CC45FE941CED993895A21C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ProofOfPassport/Pods-ProofOfPassport-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + CC47E87AFD57D7866D1463AC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -315,47 +369,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AwesomeProject-AwesomeProjectTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-ProofOfPassport-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 4786C99960C198CBC0841652 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AwesomeProject-AwesomeProjectTests/Pods-AwesomeProject-AwesomeProjectTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AwesomeProject-AwesomeProjectTests/Pods-AwesomeProject-AwesomeProjectTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AwesomeProject-AwesomeProjectTests/Pods-AwesomeProject-AwesomeProjectTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - FAF2988CBB80C1B370711DF7 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AwesomeProject/Pods-AwesomeProject-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AwesomeProject/Pods-AwesomeProject-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AwesomeProject/Pods-AwesomeProject-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -382,7 +402,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 00E356F31AD99517003FC87E /* AwesomeProjectTests.m in Sources */, + 00E356F31AD99517003FC87E /* ProofOfPassportTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -391,9 +411,11 @@ buildActionMask = 2147483647; files = ( 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 05EDEDC72B52D25D00AA51AD /* Prover.swift in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, 905B70072A72774000AFA232 /* PassportReader.m in Sources */, 905B70052A72767900AFA232 /* PassportReader.swift in Sources */, + 05EDEDC62B52D25D00AA51AD /* Prover.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -402,7 +424,7 @@ /* Begin PBXTargetDependency section */ 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* AwesomeProject */; + target = 13B07F861A680F5B00A75B9A /* ProofOfPassport */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -410,7 +432,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BCC787E0FDFB928F9DA23E3F /* Pods-AwesomeProject-AwesomeProjectTests.debug.xcconfig */; + baseConfigurationReference = 918081ECA23C8F232594E334 /* Pods-ProofOfPassport-ProofOfPassportTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -418,7 +440,7 @@ "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = AwesomeProjectTests/Info.plist; + INFOPLIST_FILE = ProofOfPassportTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -432,18 +454,18 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject.app/AwesomeProject"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProofOfPassport.app/ProofOfPassport"; }; name = Debug; }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0D05C085F8CBAC104F72E160 /* Pods-AwesomeProject-AwesomeProjectTests.release.xcconfig */; + baseConfigurationReference = 22FDF2ADA5789E09558ADB4E /* Pods-ProofOfPassport-ProofOfPassportTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = AwesomeProjectTests/Info.plist; + INFOPLIST_FILE = ProofOfPassportTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -457,25 +479,32 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject.app/AwesomeProject"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProofOfPassport.app/ProofOfPassport"; }; name = Release; }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 26A432E0434B89485C7E3765 /* Pods-AwesomeProject.debug.xcconfig */; + baseConfigurationReference = CE0B085EC65BAFEB61DD9C49 /* Pods-ProofOfPassport.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = AwesomeProject/AwesomeProject.entitlements; + CODE_SIGN_ENTITLEMENTS = ProofOfPassport/ProofOfPassport.entitlements; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = G46U6J456T; + DEVELOPMENT_TEAM = 5B29R5LYHQ; ENABLE_BITCODE = NO; - INFOPLIST_FILE = AwesomeProject/Info.plist; + INFOPLIST_FILE = ProofOfPassport/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "$(PROJECT_DIR)/../../cargo/target/universal/release", + ); + LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", + "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/MoproKit/Libs", ); MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( @@ -483,9 +512,8 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.warroom.nfcios; - PRODUCT_NAME = AwesomeProject; - SWIFT_OBJC_BRIDGING_HEADER = "AwesomeProject-Bridging-Header.h"; + PRODUCT_BUNDLE_IDENTIFIER = com.warroom.proofofpassport; + PRODUCT_NAME = ProofOfPassport; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -494,28 +522,33 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A1B7A34F7E4C3F2D19C5D973 /* Pods-AwesomeProject.release.xcconfig */; + baseConfigurationReference = 2B01EC4981C171CA304E6D2B /* Pods-ProofOfPassport.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = AwesomeProject/AwesomeProject.entitlements; + CODE_SIGN_ENTITLEMENTS = ProofOfPassport/ProofOfPassport.entitlements; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = G46U6J456T; - INFOPLIST_FILE = AwesomeProject/Info.plist; + DEVELOPMENT_TEAM = 5B29R5LYHQ; + INFOPLIST_FILE = ProofOfPassport/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", + "$(inherited)", + "$(PROJECT_DIR)", + "$(PROJECT_DIR)/MoproKit/Libs", + ); MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.warroom.nfcios; - PRODUCT_NAME = AwesomeProject; - SWIFT_OBJC_BRIDGING_HEADER = "AwesomeProject-Bridging-Header.h"; + PRODUCT_BUNDLE_IDENTIFIER = com.warroom.proofofpassport; + PRODUCT_NAME = ProofOfPassport; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; @@ -679,7 +712,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AwesomeProjectTests" */ = { + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ProofOfPassportTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 00E356F61AD99517003FC87E /* Debug */, @@ -688,7 +721,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AwesomeProject" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ProofOfPassport" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -697,7 +730,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AwesomeProject" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ProofOfPassport" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/app/ios/AwesomeProject.xcodeproj/xcshareddata/xcschemes/AwesomeProject.xcscheme b/app/ios/ProofOfPassport.xcodeproj/xcshareddata/xcschemes/ProofOfPassport.xcscheme similarity index 78% rename from app/ios/AwesomeProject.xcodeproj/xcshareddata/xcschemes/AwesomeProject.xcscheme rename to app/ios/ProofOfPassport.xcodeproj/xcshareddata/xcschemes/ProofOfPassport.xcscheme index 20f13d11a..80f5bc148 100644 --- a/app/ios/AwesomeProject.xcodeproj/xcshareddata/xcschemes/AwesomeProject.xcscheme +++ b/app/ios/ProofOfPassport.xcodeproj/xcshareddata/xcschemes/ProofOfPassport.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "ProofOfPassport.app" + BlueprintName = "ProofOfPassport" + ReferencedContainer = "container:ProofOfPassport.xcodeproj"> @@ -33,9 +33,9 @@ + BuildableName = "ProofOfPassportTests.xctest" + BlueprintName = "ProofOfPassportTests" + ReferencedContainer = "container:ProofOfPassport.xcodeproj"> @@ -55,9 +55,9 @@ + BuildableName = "ProofOfPassport.app" + BlueprintName = "ProofOfPassport" + ReferencedContainer = "container:ProofOfPassport.xcodeproj"> @@ -72,9 +72,9 @@ + BuildableName = "ProofOfPassport.app" + BlueprintName = "ProofOfPassport" + ReferencedContainer = "container:ProofOfPassport.xcodeproj"> diff --git a/app/ios/AwesomeProject.xcworkspace/contents.xcworkspacedata b/app/ios/ProofOfPassport.xcworkspace/contents.xcworkspacedata similarity index 77% rename from app/ios/AwesomeProject.xcworkspace/contents.xcworkspacedata rename to app/ios/ProofOfPassport.xcworkspace/contents.xcworkspacedata index 575b8628b..74485f6f0 100644 --- a/app/ios/AwesomeProject.xcworkspace/contents.xcworkspacedata +++ b/app/ios/ProofOfPassport.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:ProofOfPassport.xcodeproj"> diff --git a/app/ios/AwesomeProject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/ios/ProofOfPassport.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from app/ios/AwesomeProject.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to app/ios/ProofOfPassport.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/app/ios/AwesomeProject/AppDelegate.h b/app/ios/ProofOfPassport/AppDelegate.h similarity index 100% rename from app/ios/AwesomeProject/AppDelegate.h rename to app/ios/ProofOfPassport/AppDelegate.h diff --git a/app/ios/AwesomeProject/AppDelegate.mm b/app/ios/ProofOfPassport/AppDelegate.mm similarity index 94% rename from app/ios/AwesomeProject/AppDelegate.mm rename to app/ios/ProofOfPassport/AppDelegate.mm index 2cacdcb6e..9fd251767 100644 --- a/app/ios/AwesomeProject/AppDelegate.mm +++ b/app/ios/ProofOfPassport/AppDelegate.mm @@ -6,7 +6,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.moduleName = @"AwesomeProject"; + self.moduleName = @"ProofOfPassport"; // You can add your custom initial props in the dictionary below. // They will be passed down to the ViewController used by React Native. self.initialProps = @{}; diff --git a/app/ios/AwesomeProject/Images.xcassets/AppIcon.appiconset/Contents.json b/app/ios/ProofOfPassport/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from app/ios/AwesomeProject/Images.xcassets/AppIcon.appiconset/Contents.json rename to app/ios/ProofOfPassport/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/app/ios/AwesomeProject/Images.xcassets/Contents.json b/app/ios/ProofOfPassport/Images.xcassets/Contents.json similarity index 100% rename from app/ios/AwesomeProject/Images.xcassets/Contents.json rename to app/ios/ProofOfPassport/Images.xcassets/Contents.json diff --git a/app/ios/AwesomeProject/Info.plist b/app/ios/ProofOfPassport/Info.plist similarity index 86% rename from app/ios/AwesomeProject/Info.plist rename to app/ios/ProofOfPassport/Info.plist index b3165cf22..cf7bd77c7 100644 --- a/app/ios/AwesomeProject/Info.plist +++ b/app/ios/ProofOfPassport/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - AwesomeProject + ProofOfPassport CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -46,11 +46,11 @@ UIViewControllerBasedStatusBarAppearance - com.apple.developer.nfc.readersession.iso7816.select-identifiers - - A0000002471001 - A0000002472001 - 00000000000000 - + com.apple.developer.nfc.readersession.iso7816.select-identifiers + + A0000002471001 + A0000002472001 + 00000000000000 + diff --git a/app/ios/NFCPassportReader/LaunchScreen.storyboard b/app/ios/ProofOfPassport/LaunchScreen.storyboard similarity index 63% rename from app/ios/NFCPassportReader/LaunchScreen.storyboard rename to app/ios/ProofOfPassport/LaunchScreen.storyboard index 1ba1a6464..029abec98 100644 --- a/app/ios/NFCPassportReader/LaunchScreen.storyboard +++ b/app/ios/ProofOfPassport/LaunchScreen.storyboard @@ -1,10 +1,11 @@ - + - + + @@ -16,27 +17,19 @@ - - + + - - - - @@ -44,4 +37,9 @@ + + + + + diff --git a/app/ios/AwesomeProject/AwesomeProject.entitlements b/app/ios/ProofOfPassport/ProofOfPassport.entitlements similarity index 100% rename from app/ios/AwesomeProject/AwesomeProject.entitlements rename to app/ios/ProofOfPassport/ProofOfPassport.entitlements diff --git a/app/ios/AwesomeProject/main.m b/app/ios/ProofOfPassport/main.m similarity index 100% rename from app/ios/AwesomeProject/main.m rename to app/ios/ProofOfPassport/main.m diff --git a/app/ios/ProofOfPassport/masterList.pem b/app/ios/ProofOfPassport/masterList.pem new file mode 100644 index 000000000..bf2ee5c5a --- /dev/null +++ b/app/ios/ProofOfPassport/masterList.pem @@ -0,0 +1,24033 @@ +-----BEGIN CERTIFICATE----- +MIICmTCCAj6gAwIBAgICJxswCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1PSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAxMB4XDTA3MDIyMTE0NDgzOFoXDTIwMTAyMTEzNDgzOFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTU9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEGzr0bpiRq6BGSb4C/CMObuP/JpevjNdv+607QPG++A93 +qFvUsFu6lUUbyriFNrOvZaxpDETgfpkzrO9Hs/JmtqNFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQU0IMmflZl871SGf6W1Q2bnAkg/kAwDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANIADBFAiEAp/qQLwWdWJsEz+heYNeQvRW0462T +QLIlpAZJZAlpPxwCIFlPFYmq4UcD6I5HJzTUvTRR1oMlYqwBC7SjwtwyspKc +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDKzCCAtCgAwIBAgIII+3Lgsfb3yUwCgYIKoZIzj0EAwIweTEUMBIGA1UEAwwL +Q1NDQUVDX0JFXzIxNzA1BgNVBAsMLkZFREVSQUwgUFVCTElDIFNFUlZJQ0UgRk9S +RUlHTiBBRkZBSVJTIEJFTEdJVU0xGzAZBgNVBAoMEktJTkdET00gT0YgQkVMR0lV +TTELMAkGA1UEBhMCQkUwHhcNMTQwNjE0MDgxODU5WhcNMjYwOTIyMDgxODU5WjB5 +MRQwEgYDVQQDDAtDU0NBRUNfQkVfMjE3MDUGA1UECwwuRkVERVJBTCBQVUJMSUMg +U0VSVklDRSBGT1JFSUdOIEFGRkFJUlMgQkVMR0lVTTEbMBkGA1UECgwSS0lOR0RP +TSBPRiBCRUxHSVVNMQswCQYDVQQGEwJCRTCCATMwgewGByqGSM49AgEwgeACAQEw +LAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////MEQE +IP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57PrvVV2 +mIa8ZR0GsMxTsPY7zjw+J9JgSwRBBGsX0fLhLEJH+Lzm5WOkQPJ3A32BLeszoPSh +OUXYmMKWT+NC4v4af5uO5+tKfA+eFivOM1drMV7Oy7ZAaDe/UfUCIQD/////AAAA +AP//////////vOb6racXnoTzucrC/GMlUQIBAQNCAAQKrzt7YOGNNYwqglJhz6Pj +nloN4w7KIIh3w5Z+1sESSJsddif4n2TweuIxZEbR0lHgaIQZvk/pE8tZ2U3THidI +o2YwZDAdBgNVHQ4EFgQUHukRMAwUQBLm/FiSPOY2B/QAdhswEgYDVR0TAQH/BAgw +BgEB/wIBADAfBgNVHSMEGDAWgBQe6REwDBRAEub8WJI85jYH9AB2GzAOBgNVHQ8B +Af8EBAMCAQYwCgYIKoZIzj0EAwIDSQAwRgIhAMVLKwBX4w83P37qASDaNQglaN2x +6ULXgND0oncG+gPPAiEA4S9X2U6/hgwjcuUS0bgvbmgEAwRNHzvvTheWtPbzpJA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWjCCAwGgAwIBAgIBAjAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTEwMTExMDA5MzQ1MloXDTI1MDIwODIxMzQ1MlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAAQCwyxWm6/IzUoU6WuSGnqRZZcugNHy2UvBHzAoP5XAGk/BtRIu +4v25ZkgQdHw6oIcZoc3w/fWYldFwGG0q8rj/o4GrMIGoMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBSfxV4CyOp7zJXtWIiCGIgO7I/IHzAdBgNVHQ4E +FgQUn8VeAsjqe8yV7ViIghiIDuyPyB8wDwYDVR0PAQH/BAUDAwAGADArBgNVHRAE +JDAigA8yMDEwMTExMDExMzQ1MlqBDzIwMTQxMTEwMTEzNDUyWjASBgNVHRMBAf8E +CDAGAQH/AgEAMAoGCCqGSM49BAMCA0cAMEQCIAOFdvHhEF4VUcFAGHLctbecKfUq +C+mnRqs6feNIWQThAiArQRVrgaCEKR0Qzx7I5PWYZJmh6YrV2cVvTBwAtiC4/w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfTCCAyOgAwIBAgICAN8wCwYHKoZIzj0EAQUAME8xCzAJBgNVBAYTAkRFMQ0w +CwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNVBAUTAzAwMTEVMBMGA1UE +AwwMY3NjYS1nZXJtYW55MB4XDTA1MDgwODExMzEzNloXDTE5MDIwODIyNTk1OVow +TzELMAkGA1UEBhMCREUxDTALBgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoG +A1UEBRMDMDAxMRUwEwYDVQQDDAxjc2NhLWdlcm1hbnkwggEzMIHsBgcqhkjOPQIB +MIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5mCpCdg41ybjv2I9UmICggE0gd +H25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbcXGzpSktE8zC12QQgJtxcbOlK +S0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL0q65y35XyyxLSC/8gbevud4n +4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEA +qftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdIVqcCAQEDQgAEnyWKxDv9nyJG +wIGiCkC89KnO2CZkD7GLJDSEBXV9RjoO0ShtHdzj6bi6O+cF+VnaWEUbOwXFE7Yp +5WKjVY2m/KOCARAwggEMMDYGA1UdEQQvMC2BGGNzY2EtZ2VybWFueUBic2kuYnVu +ZC5kZYYRZmF4Ois0OTIyODk1ODI3MjIwKwYDVR0QBCQwIoAPMjAwNTA4MDgxMTMx +MzZagQ8yMDA4MDkwODIxNTk1OVowDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRu +fr6FmOePobBhphJ0qE+e0i7fxzAfBgNVHSMEGDAWgBRufr6FmOePobBhphJ0qE+e +0i7fxzBBBgNVHSAEOjA4MDYGCQQAfwAHAwEBATApMCcGCCsGAQUFBwIBFhtodHRw +Oi8vd3d3LmJzaS5idW5kLmRlL2NzY2EwEgYDVR0TAQH/BAgwBgEB/wIBADALBgcq +hkjOPQQBBQADRwAwRAIgWqNdT/kV12pdGjhF5XIzGi/+U36CYfywgnCsSMivEkkC +IFjK+OTmCwaHs7cwAyUL9qz6ciPT04d3PhxZ6ajFLP6O +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfzCCAySgAwIBAgICAR0wDAYIKoZIzj0EAwIFADBPMQswCQYDVQQGEwJERTEN +MAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMwMTMxFTATBgNV +BAMMDGNzY2EtZ2VybWFueTAeFw0wODAyMjYxMzQzMDRaFw0yMTA4MjYxMjM1NTZa +ME8xCzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAK +BgNVBAUTAzAxMzEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBMzCB7AYHKoZIzj0C +ATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPVJiAoIBNI +HR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkEICbcXGzp +SktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv/IG3r7ne +J+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTHLwRplwIh +AKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABEqUSYF3nd8d +pefFJ+J9JHGpKOtNe2d1rgkKUUUZm9R+oIHlXtSkP2B8alDuNkGKh//NphA5ypV2 +fa7Kw0Q/4yyjggEQMIIBDDA2BgNVHREELzAtgRhjc2NhLWdlcm1hbnlAYnNpLmJ1 +bmQuZGWGEWZheDorNDkyMjg5NTgyNzIyMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUYETyRfLgcdTVZPTld9Y2advrGFkwHwYDVR0jBBgwFoAUYETyRfLgcdTVZPTl +d9Y2advrGFkwQQYDVR0gBDowODA2BgkEAH8ABwMBAQEwKTAnBggrBgEFBQcCARYb +aHR0cDovL3d3dy5ic2kuYnVuZC5kZS9jc2NhMBIGA1UdEwEB/wQIMAYBAf8CAQAw +KwYDVR0QBCQwIoAPMjAwODAyMjYxMzQzMDRagQ8yMDExMDIyNjEyMzU1NlowDAYI +KoZIzj0EAwIFAANHADBEAiAaOXEiepaq55JYiqXcC0iY6RelijCO0evRmhaXlOoE +5wIgKn5Ofpsi85jHKEkFGUlrc9XALkspq2WSKSlS85iUR/c= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIID+zCCArSgAwIBAgIIImPeveaxBkIwPAYJKoZIhvcNAQEKMC+gDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFADBPMSMwIQYDVQQD +ExpTd2VkaXNoIENvdW50cnkgU2lnbmluZyBDQTEbMBkGA1UEChMSUmlrc3BvbGlz +c3R5cmVsc2VuMQswCQYDVQQGEwJTRTAeFw0wNTA5MjYxOTAzMDJaFw0yMTA5MjIx +OTEzMDJaME8xIzAhBgNVBAMTGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRsw +GQYDVQQKExJSaWtzcG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnT3OKLYsTrHJRLUbKeoZCuABgIYSBvHy +MvaKlwvJ18phNsW2RTVKY1MgT10/QuMSjVghPLnb1axJ1exsbUEP2x5EfsLFSi8a +FbMVPJxg6933+frjOViI2Zs/yf6NrO9qTqMjBYS2Ht9aH6UqXfxYW3Wvof3Kwihn +0rCPz9VQUObLcym5Eb41Ry3bhCL+1W6eyQJ2Dk5JXPBP3EbNKJVedwosWE3nl+Ib +vsKOnNnrzYZBVZEbn8puUAhSJ39WPeCN9AH5RoWf2C3fu/hmqYmX9cZFcH3k/zvx +rn50xcJs7WWla4bHgO1F95uVvbjF5lXAmMKC45nN8kWuXk5Q7/zmIQIDAQABo30w +ezASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +OtRdqXuSyO2ch41v7Arfw8gEih8wHwYDVR0jBBgwFoAUOtRdqXuSyO2ch41v7Arf +w8gEih8wFQYDVR0gBA4wDDAKBggqhXBUCgEBATA8BgkqhkiG9w0BAQowL6APMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAA4IBAQCS +lwvA1699I6JNKrqK4Rbr7WTLWxCmJ0ZZ8xq6hqyEsh+IaR72frqRjd0dWjs2kMEB +/Q8zPoFm7Gp0vh+IYs97q9Y2iuOucmU1toR5PWSDGTm6x05H7mYrCZGUkv3SxjYd +yQg2iDaTOYLKYlvwLrMht5l6DewuPfU3u4iSoOSLlFPFy+8wHhBggonuMtPauJta +rylS4F+e5mF2hMb9WYQ1ixHk+S5w5u5/26mzPR4FyHwF4YQWTSsTdDH9NIv6PSvG +FOpMbekwwyO1GyqAjSAJsFqAlmAXO0ZsZ2KBxCubqdyILv7ii2/HLK3OqbwOSe0k +iyuOcEEn7cNtfA0IwPN6 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEIzCCA6qgAwIBAgIBATAJBgcqhkjOPQQBMHExCzAJBgNVBAYTAkNIMQ4wDAYD +VQQKEwVBZG1pbjERMA8GA1UECxMIU2VydmljZXMxIjAgBgNVBAsTGUNlcnRpZmlj +YXRpb24gQXV0aG9yaXRpZXMxGzAZBgNVBAMTEmNzY2Etc3dpdHplcmxhbmQtMTAe +Fw0wNjA2MjgxMDAxMDJaFw0xNzA4MzExMDAxMDJaMHExCzAJBgNVBAYTAkNIMQ4w +DAYDVQQKEwVBZG1pbjERMA8GA1UECxMIU2VydmljZXMxIjAgBgNVBAsTGUNlcnRp +ZmljYXRpb24gQXV0aG9yaXRpZXMxGzAZBgNVBAMTEmNzY2Etc3dpdHplcmxhbmQt +MTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////// +//////////////////////////////7/////AAAAAAAAAAD/////MGQEMP////// +///////////////////////////////////+/////wAAAAAAAAAA/////AQwszEv +p+I+5+SYjgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEE +qofKIr6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3 +NhfeSpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5f +AjEA////////////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrM +xSlzAgEBA2IABN6WVjm3wm2hcdSmRgXpi9tjeGmyc7InpZox/ENoEKLesbNAmTdm +rztedS6zbFFRkrU8OiKSdQNS501I1ZSpsjGoNgBKe6jPHFusagdvjYxhD7Yb6LgY +bn7DXyMiEIB0ZqOB1TCB0jArBgNVHRAEJDAigA8yMDA2MDYyODEwMDEwMlqBDzIw +MTEwNjI5MTAwMTAyWjBgBgNVHSAEWTBXMFUGCGCFdAERAzQBMEkwRwYIKwYBBQUH +AgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83NTZf +MV8xN18zXzUyXzEucGRmMB0GA1UdDgQWBBROyJ2YybTgkPUrW4WXUFa/6CTrdjAO +BgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAJBgcqhkjOPQQBA2gA +MGUCMQD+60RRg8WKkFXI7BeSarETXXI09UCkSGlR5zln/GDC1thrYjD/CB7TT+wy +UfzeXE0CMApVXKI1mpScD2jFa/e3LBrXcQiCW4BTeDoy8Av2haJ4Xu7LWhZzpu1l +d6G1lWDEpA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEJDCCA6ugAwIBAgIBATAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTAwMjE2MTIxNTU4WhcNMjQwNDI5MTIxNTU4WjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAAQBH6xYTAqlp1aTyOtzE4sISRuxgf0MZhqghhJOiatzdBbi35Jk +jxaKbjZubwkctxIP8cuchwAEotwTM1SZCyGHIRZMAHMwPcDr+9ArCg05LsVCo3oo +KnMPez45wYdRb5ujgdUwgdIwKwYDVR0QBCQwIoAPMjAxMDAyMTYxMjE1NThagQ8y +MDEzMDIxODEyMTU1OFowYAYDVR0gBFkwVzBVBghghXQBEQM+ATBJMEcGCCsGAQUF +BwIBFjtodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9wb2xpY3kvQ1BTXzJfMTZfNzU2 +XzFfMTdfM182Ml8xLnBkZjAdBgNVHQ4EFgQUv61P0stSZ1sEEF150srDuJRLJeAw +DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwMD +ZwAwZAIwZCSdadWnOO2gb2j5d4QwEeLmHejjmDAkQABLUaab61xlLEcj6LRLbC3Y +q9i/CfQ5AjB2EVGFSk94wX/uswbnsazImGdVIr8X2XWGlyc8QwzJD7jf6aPWqaYR +Uc1X1t3k15A= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEQTCCA8igAwIBAgIII6qfyMeyn7AwCgYIKoZIzj0EAwMwPzELMAkGA1UEBhMC +QVQxCzAJBgNVBAoMAkdWMQwwCgYDVQQLDANCTUkxFTATBgNVBAMMDENTQ0EtQVVT +VFJJQTAeFw0xNDEwMDIwODUzMjlaFw0zMDAxMDUwODUzMjlaMD8xCzAJBgNVBAYT +AkFUMQswCQYDVQQKDAJHVjEMMAoGA1UECwwDQk1JMRUwEwYDVQQDDAxDU0NBLUFV +U1RSSUEwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKj +OG0oD11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7 +w4LGPYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYE +MASox90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBM +EQRhBB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7Li +R9SvHoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNB +JjxTFQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7 +iDIC6QRlZQIBAQNiAAQF/FafxxJ8Xpb5r91l7Fq75TEde/sOmPROSRLXXHEmvtfG +ocm8j2tYA8LT3Y+4mumLtXiwkWyp5rme1rO4YPyCUaAV5xCmKQw1S11HGHqG49HW +5LP/sPvaFD5h2z4BHVejggFOMIIBSjAdBgNVHQ4EFgQU/43qhq8Y7uWLota6jPqr +OaFpr1swEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBT/jeqGrxju5Yui +1rqM+qs5oWmvWzAaBgNVHRAEEzARgQ8yMDIwMDEwOTA4NTMyOVowFgYDVR0gBA8w +DTALBgkqKAAKAQIBAQEwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5ibWku +Z3YuYXQvY3NjYS9jcmwvQ1NDQUFVU1RSSUEuY3JsMA4GA1UdDwEB/wQEAwIBBjA3 +BgNVHRIEMDAupBAwDjEMMAoGA1UEBwwDQVVUhhpodHRwOi8vd3d3LmJtaS5ndi5h +dC9jc2NhLzA3BgNVHREEMDAupBAwDjEMMAoGA1UEBwwDQVVUhhpodHRwOi8vd3d3 +LmJtaS5ndi5hdC9jc2NhLzAKBggqhkjOPQQDAwNnADBkAjBz1iWgzJoxKSNrkF5K +Be5UYk7aaPuTWn8VTC98SIEtWQ5Q5ckWNcgOVzbn3ReUv9QCMCQIB4di7gb+ViLt +BcC/9PjFlhAzKVtP10IDwFBndsYFhnSllFJlHeSC34VXt1pLCA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEcjCCA/igAwIBAgIBATAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJERTENMAsG +A1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMxMDAxFTATBgNVBAMM +DGNzY2EtZ2VybWFueTAeFw0xMTAxMTcxNDIyMjlaFw0yNDA3MTcyMzU5NTlaME8x +CzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNV +BAUTAzEwMDEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBtTCCAU0GByqGSM49AgEw +ggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZ +f7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieH +E5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc +0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej +537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcL +Kf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHf +FS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUCAQEDYgAEXRVISEwikatM +RXAd9/ALIE/7cj9eUFWH5+3NzWJpVOWfxfv2QYgAB+cQaBCmPaFkZOvQMyxkzpCT +rrrU9KiR26YFuFfPD2/mbwPmbRQe34uVKph4KnBONjGo8tiU9XTmo4IBZTCCAWEw +HQYDVR0OBBYEFON2rmYS/nqB5nIsUThb2INJD8OiMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDExMDExNzE0MjIyOVqBDzIwMTQwMTE3MjM1OTU5WjAWBgNV +HSAEDzANMAsGCQQAfwAHAwEBATBBBgNVHREEOjA4gRhjc2NhLWdlcm1hbnlAYnNp +LmJ1bmQuZGWGHGh0dHBzOi8vd3d3LmJzaS5idW5kLmRlL2NzY2EwQQYDVR0SBDow +OIEYY3NjYS1nZXJtYW55QGJzaS5idW5kLmRlhhxodHRwczovL3d3dy5ic2kuYnVu +ZC5kZS9jc2NhMBIGA1UdEwEB/wQIMAYBAf8CAQAwMAYDVR0fBCkwJzAloCOgIYYf +aHR0cDovL3d3dy5ic2kuYnVuZC5kZS9jc2NhX2NybDAfBgNVHSMEGDAWgBTjdq5m +Ev56geZyLFE4W9iDSQ/DojAKBggqhkjOPQQDAwNoADBlAjA9TKXFMHCky6raf3ix ++pSSsZDTexj4fzpiXOKNQkhjt8jAvQOULvxpeIYYBI5Z2d8CMQCJaQMezRDxF1Fn +lblybiUGakeSdqmInydeTVHs5d2rmti5IaBDM75ibOdus2WDezg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEdzCCAt+gAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJBVDEL +MAkGA1UEChMCR1YxDDAKBgNVBAsTA0JNSTEVMBMGA1UEAxMMQ1NDQS1BVVNUUklB +MB4XDTA2MDYwODIyMDAwMFoXDTIxMDkxMjIxNTk1OVowPzELMAkGA1UEBhMCQVQx +CzAJBgNVBAoTAkdWMQwwCgYDVQQLEwNCTUkxFTATBgNVBAMTDENTQ0EtQVVTVFJJ +QTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMIR9wGRpFaP3ndGcHrG +n074Ng5YmZ9knm2+3dDH1C1BjJIhSxi4xoiUJ4YijmK+/RhA+nt7oBoYN0qny+5q +9Gbc0k2pNDjfOuwxEE1TPpqVLDnhZH1UxVxQj7l4w6VndFuqEAbw3MyiJguVNlcD +W4bA1afbIb83wgWspOybikIq04TzyEUGTArvYZ16N4bsHYFQXxwiM5PelbwLQ7iS +yqMsvyclU1X9/X66sW2P//8VsuUUVNPEcEgycYiEmyhhIQCzoLsrlUwbF5s8NkU6 +EA0o6rllkwmESUPplWFHvAhggGYCfBUygy2zEjqR1E2I/TPmaFoiA+fpQ65KQ3zw +ZK9BsotNJhS8CjOX1opBaIkWLNd0P+nGtoZ+6+GV3jxrKWJumMycVmGucKSN41h6 +GI668vDYkJcJlWAPAAQQuX5s99FQlPVimz+n7sXkd/0olsE9Woz+CLuV27shvo9g +HfcS2xiJijZAfkvBhTGqmIFEdKhADYnf1JRf8xXtIfHtCQIDAKnDo34wfDAfBgNV +HSMEGDAWgBT5fcYFy+GDaxtwf01YApU7AXt1dTAdBgNVHQ4EFgQU+X3GBcvhg2sb +cH9NWAKVOwF7dXUwDgYDVR0PAQH/BAQDAgEGMBYGA1UdIAQPMA0wCwYJKigACgEC +AQEBMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggGBAEvarKyF +DQxy1kmuhhwqh67aRlPYgHG6N5mOnzc7+cyYsJMK0/FZxGdxHZbCY3B/SjyRM43C +pa9Jr02tIdsYG+TBMMEKvLEGis7zPJSuj133Zfd1OVU86VLeLZmr+3j+q4jNFtuF +Ifhsp/4SNla7D68YdzOT8jXzzMtxH8LxZWbDMnaBQUVGYhMH1KmQeuwXWkklTkdQ +XJSNN+IWquF/nyTxSAoOl2Izf46Y5thvCxgzRfn2c6plC4IJE+bKpdXb9utD8jGz +mJAFOVzhUbQiXxlJognaLP8CosaJE4EaNKEuOS4jnnccd+9LjjjnJjOuJEBrjPwf +XYq7q1g7iko5Ty87s8CERjW6HqzUm4BhJV6vCpLbostKzwd7f/pl29GQ3aI0B1uS +3/q0Kdn7Jvo7ZYV9TiM/mPOirq325mGHNftM7AvwF/A5Wz3opldKEuwzEx4gtAoF +GDWXvShMzanQlIDwJGfps4ozohurs9nKsCxWaC6k/BryJN/LAgObgRMfwA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEljCCA36gAwIBAgIQPNiB19U8dO0HEYWVixrNRjANBgkqhkiG9w0BAQsFADCB +0jELMAkGA1UEBhMCSVMxEjAQBgNVBAcTCVJFWUtKQVZJSzEaMBgGA1UEChMRVGhq +b2Rza3JhIElzbGFuZHMxFzAVBgNVBAsTDkt0LiA2NTAzNzYwNjQ5MRswGQYDVQQL +ExJDb3VudHJ5IFNpZ25pbmcgQ0ExNzA1BgNVBAsTLlZvdHR1bmFyc3RlZm5hIGh0 +dHA6Ly93d3cudmVnYWJyZWYuaXMvc2tpbHJpa2kxJDAiBgNVBAMTG0ZlcmRhc2tp +bHJpa2kgLSBJc2xhbmQgLSBHMjAeFw0xMzAxMzEwMDAwMDBaFw0zMzAxMzAyMzU5 +NTlaMIHSMQswCQYDVQQGEwJJUzESMBAGA1UEBxMJUkVZS0pBVklLMRowGAYDVQQK +ExFUaGpvZHNrcmEgSXNsYW5kczEXMBUGA1UECxMOS3QuIDY1MDM3NjA2NDkxGzAZ +BgNVBAsTEkNvdW50cnkgU2lnbmluZyBDQTE3MDUGA1UECxMuVm90dHVuYXJzdGVm +bmEgaHR0cDovL3d3dy52ZWdhYnJlZi5pcy9za2lscmlraTEkMCIGA1UEAxMbRmVy +ZGFza2lscmlraSAtIElzbGFuZCAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsBbFrlwYPweEjQHcAa4ZuJoQSlkxC94WmX60RXHh/UbNjc0RQiZd +78zjWombCH0kAovaRfYG0Dp6d4DjmU92i8pt52yWK3O1PqW0w7kZWT48znbeDNNR +mpRas8CRqsEulPpE9rSXmpJIPQXrGrNC8ZxaEKqhvr3R4eEKkEz/3F6a31xwLC5q +qjOBTYlE/CQL6ukxZiCjdqsN1TE4iZnVPdgvF1jMD7xXr00XPFLeebsPH0W23xPj +yFQ36h27W/GE5lpjwPWiPp46a3/tFqBVEImP7G/xalDKksdytjT/rxLeHpJaYo9D ++t3CgkyLFfZdeExU3/yPpt1gNPNtbJ13BwIDAQABo2YwZDASBgNVHRMBAf8ECDAG +AQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUhX/1alO2xNgzYAXZq16A +IGdzx04wHwYDVR0jBBgwFoAUhX/1alO2xNgzYAXZq16AIGdzx04wDQYJKoZIhvcN +AQELBQADggEBAE2eSsee3izieM31EPL5PPQR8Ip0fU/4w71QEJoyPiFxdF3RbmqB +peUkQyKU548ccko/CNWtXv7yIUroPtC3yb4jVDGdSb0BxzzZ8Ocw2tHAyE38rq/T +Cnp5N5ThMA9PNUdoHytSEGvIeZJ3KW2KULCeCgglLya/crmql6ihjONnHIQQ4JhT +f2Kr9udw5sLijh0YWAL5vfIZ7hUFrb0EUSKgrhW55WXVHdmgQZKzMXd440yjOb9N +mVIl89WvyKqoXnt/H2h3GklGGeBUwhXU1rngsrkWpynTMHSmGQaqpsNsvEPyX/v2 +MsDwbjXxIcR0MYl5Cy0IsombyTZE10aTlF4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoDCCBCegAwIBAgIBATAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJERTENMAsG +A1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMxMDExFTATBgNVBAMM +DGNzY2EtZ2VybWFueTAeFw0xMzEwMzAxMDQ5NDJaFw0yNzA0MzAyMzU5NTlaME8x +CzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNV +BAUTAzEwMTEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBtTCCAU0GByqGSM49AgEw +ggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZ +f7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieH +E5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc +0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej +537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcL +Kf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHf +FS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUCAQEDYgAEa/vuxp3nLGam +aOzhqvGiZKPJsoj7MtBZ6Sw+XVvU17UBSHj0R5wTyIPQVFVc2Q7NE27EzDRkic3W +TmlD8zOGSrnf5ELcv49pwZ5x0DX/MX/AMvwhVcrqpltJPRkdOZrAo4IBlDCCAZAw +HQYDVR0OBBYEFMF7qRX3XN3Saz1gmiNU3hLuPw7GMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDEzMTAzMDEwNDk0MlqBDzIwMTYxMDMwMjM1OTU5WjAWBgNV +HSAEDzANMAsGCQQAfwAHAwEBATBRBgNVHREESjBIgRhjc2NhLWdlcm1hbnlAYnNp +LmJ1bmQuZGWGHGh0dHBzOi8vd3d3LmJzaS5idW5kLmRlL2NzY2GkDjAMMQowCAYD +VQQHDAFEMFEGA1UdEgRKMEiBGGNzY2EtZ2VybWFueUBic2kuYnVuZC5kZYYcaHR0 +cHM6Ly93d3cuYnNpLmJ1bmQuZGUvY3NjYaQOMAwxCjAIBgNVBAcMAUQwEgYDVR0T +AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vd3d3LmJzaS5i +dW5kLmRlL2NzY2FfY3JsMA0GB2eBCAEBBgEEAgUAMB8GA1UdIwQYMBaAFMF7qRX3 +XN3Saz1gmiNU3hLuPw7GMAoGCCqGSM49BAMDA2cAMGQCMArj9pauIPbLaaR8mNbn +DRrrdT9c5XN1ugudoxvtuVqTWWETBqLYOE2MPv8KZFqVjQIwfXnbT0FTMXE4NeCs +k2F77p81/ozjNsw8VLL0UlU6IovX6jhIG02OrMPvvVc9M2/n +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCAwmgAwIBAgIETmVNYTANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJE +SzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQDExJDb3VudHJ5 +IFNpZ25pbmcgQ0EwHhcNMTUxMDI4MDgyNDIzWhcNMzEwNjI4MDg1NDIzWjBHMQsw +CQYDVQQGEwJESzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQD +ExJDb3VudHJ5IFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK +AoIBgQDWLAKeOWC2k7YekC2Vtr4I/+odZsJsxAEXjq+kjXf+qmn02TXDgWI5dKAd +K7o14j+JGQa+0+dnCi0192PjSGeTOZ2BdCqMyMNC2DtnWBwKj/7w9bGTrWVRwSpo +1Aam0X56UKFjPJW53xujnqIDdXhQ04Lhayq2gHfapjE85q629mc91ZaPHJ6M6VI4 +XyQOlaXgv2UCDhgFJyEyKxtpYvmOIIR/rjeXumK9PD0G+lzapZEycs5r3tiXmXlG +aAVCJGB/k7tL1bp0MB6OSw2PY5dRgKF7GGnED+dOfp1StT/o38H5tOMAzIV0boYM +ancQq5QeD0Thq92Zhnmr5RBcJmTvohIjZMokNS6IWOeca22UsoxaTW/7s80xBO2B +0ot6MW3lEJm5aaPrBS8KMs/QifPOQ/Zx3NGRFi6b7LB168blVUs+cm3fGBj6lJrh +CfoxxOb08UCfb6U/ssOagUq4xZTDLbmxe3EvbREQpz4ZUdsGrQOyb512/YIYYvGO +fGtLI28CAwEAAaOBlDCBkTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB +/wIBADArBgNVHRAEJDAigA8yMDE1MTAyODA4MjQyM1qBDzIwMjAwOTA1MDM1NDIz +WjAfBgNVHSMEGDAWgBQ2JW0ZizFhmJI0uRZ4beaXiCp0YTAdBgNVHQ4EFgQUNiVt +GYsxYZiSNLkWeG3ml4gqdGEwDQYJKoZIhvcNAQELBQADggGBADu/hHvCuC3Ph6VR +y8+Uvx56/F4SIiczpAPGuyDIHKLLloRztxzbLQzKcLEBf3jlsJ5bnRqxBjRMLLMT +pw3i3dWyUxIv7BEMyTj0hnPOjJgBDhYUEwopebXbuLsnTdnsr7/6h4svkMRnmf/U +QTzQQ8KOQcOrrPJVqAg4nAYzWXtojDjvIUoZR6+7OEGuhJBOghHqwXqQ4hoq3DE9 +gL2SvVupVPl2TJtuR08/ans+KURCTeau0khrcSM44Ovdrok/7ON+OISiTOMTMgUa +NXC1nrFy+RrX2T9mp1yfTk38u+eHEgCkH5LgsZ6PPaJhnOauIKiSaf3ZoDOPV5am +YwxZp30giE+esKqMTzmT8tQ+PTls3DCxVCwooZRMso7JOlyoHtav/7Gu8t/Fmnz+ +cwNjVs7to6TurL07y/jFC8DYXFg+PSDodcvGtvqZ5cqzGEQLro2lrv4p+1b+eo6m +3BnK+joCy5jGe7zIvusEHKwaiFf2mvAFZAxmBOLB9TLfGSyHog== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIErzCCA5egAwIBAgIQH7Mw2FR7c+pZ/hXlQamjyzANBgkqhkiG9w0BAQUFADCB +1TELMAkGA1UEBhMCSVMxEjAQBgNVBAcTCVJleWtqYXZpazEaMBgGA1UEChMRRmph +cm1hbGFyYWR1bmV5dGkxFzAVBgNVBAsTDkt0LiA1NTAxNjkyODI5MRswGQYDVQQL +ExJDb3VudHJ5IFNpZ25pbmcgQ0ExPzA9BgNVBAsTNlZvdHR1bmFyc3RlZm5hIGh0 +dHBzOi8vd3d3LnRoam9kc2tyYS5pcy9yZXBvc2l0b3J5L2NwczEfMB0GA1UEAxMW +RmVyZGFza2lscmlraSAtIElzbGFuZDAeFw0wNjAyMTMwMDAwMDBaFw0xOTAyMTIy +MzU5NTlaMIHVMQswCQYDVQQGEwJJUzESMBAGA1UEBxMJUmV5a2phdmlrMRowGAYD +VQQKExFGamFybWFsYXJhZHVuZXl0aTEXMBUGA1UECxMOS3QuIDU1MDE2OTI4Mjkx +GzAZBgNVBAsTEkNvdW50cnkgU2lnbmluZyBDQTE/MD0GA1UECxM2Vm90dHVuYXJz +dGVmbmEgaHR0cHM6Ly93d3cudGhqb2Rza3JhLmlzL3JlcG9zaXRvcnkvY3BzMR8w +HQYDVQQDExZGZXJkYXNraWxyaWtpIC0gSXNsYW5kMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAzLXa+uDs7lHJKY4JwuHKQlrwtDbemEby6HkgId6kvrGG +2CanHr0lmzXj8CjHWYlXhdDlAJwXNzpPb2dzpXIL/kkXb5R44fECIfmsrvSOXcA6 +Xa/4C1yeI1hbZV0M0zN39oZ08AzrdXIiPl+AyoGgIkDqug2o/zloGt2IaRMi1K9P +OWBCorx/2xrmTZNAExWmHucRUIw7WYzUgSVvnBg+rksd7BHedmSIMjIQ56R1e8Cb +qc7VzMJOyoH4+903Ecc9dTuJNzDRmDT6olHVELrmnCr8UUHNy37oEWstxC18XB+F +LE7ZILSqu+Gksr5mFT0r+Lf1zJhJTg+SKsC2USN3mwIDAQABo3kwdzAdBgNVHQ4E +FgQU6wU7JxBTWZabvqEcM8xNSxYyCKcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV +HQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgEGMB8GA1UdIwQYMBaAFOsFOycQ +U1mWm76hHDPMTUsWMginMA0GCSqGSIb3DQEBBQUAA4IBAQDAklk3kQ4v+XflS9wq +95ZjWMd2n+T/n31OzcGNVeMJcARSI5ZlAxHjIgY2+GzCIoHreKkF0Q4qWCE9VWs+ +QZdjOGbB5bQWt1xTFiuzncH2ad6FaeiCdveHxLGCA+N6tyxWUdwoqyLlWijeqaiR +KUodqkSsrpH9KGhIFCOAaBohIz6bpVV55vIlwOQA+n8ZVRHk/bayLbZ1JgL1ZTW+ +eU9nEuAnzPLMQIbQVZ+o6jeoba6fwud++ZrNFWXXcA7RO0vIndAF+nGjw1Yxyxgd +48mPf97OwUZ9yIGC1d8NyKOecKCHMLKimJ3HhuH5uWV4DK8PVwWdJmugt2ahJbYN +Z0Y2 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvjCCAyagAwIBAgIBATANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJQTDES +MBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0U3lz +dGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6bnlt +aTAeFw0wNTA5MzAxNDMwMDlaFw0xOTA5MzAyMzU5NTlaMHAxCzAJBgNVBAYTAlBM +MRIwEAYDVQQKDAlJQ0FPIENTQ0ExDjAMBgNVBAsMBU1TV2lBMT0wOwYDVQQDDDRT +eXN0ZW0gV3lkYXdhbmlhIFBhc3pwb3J0w7N3IHogRGFueW1pIEJpb21ldHJ5Y3pu +eW1pMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAuiwpaSSQUCOPtadG +toH0/hcfmSk9/MBfyiaA0ZLKuiTRYqKnX/9b6zytMC6wWrn7Rn7KvAkjUYgfAS83 +xf+vA/qUW7EjEwIao6/Gd3/iJfjvWFV8qIqofDkCfL1ql/Oum3rRXvHm4r5+eieK +9l+Ghz/Fvuw9K9jC0VgSLb+UQcb7UEI/xEiQCTHcPen7XOa8UYRgt1fbtvQJAAJ1 +vFXBCav3FXENobZH2VJCR6a7cBR8LaqV8mAP+ZF4ZR+vlBnYcpOCiHnuhEishStb +acDeOZqMerI+YFSYLPU09V4ItHWhv55Wag4lTyDY1zzP/gQCdDD80zW1jnT54Wum +g4x88Z6L0sd3fV2RKrkWIDJAB/IGJmcycSsOw2xzFLDhgf/BLSP9DMvr3YyflTGy +t6yPXIAWSpo6e6aqbam9KrkHvVU/uJr/okidRqXDh2iUkVsFELkuPQa/gEZomeJg +ZpWD2TH/Wk8ModsbU/LPNYGEeyVRcjm2+iEk2UHUhTiPWEnrAgMBAAGjYzBhMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEdS9KeS +t+LseDNSRSjve8QVpj2WMB0GA1UdDgQWBBRHUvSnkrfi7HgzUkUo73vEFaY9ljAN +BgkqhkiG9w0BAQsFAAOCAYEAa6p8bPDIttB6yiOVeybZBnqz2H5q+4RuK5w/k3ju +7Aj/TZoCtkN5aGrxRVCHDRlatyicA6F//Vp/i9deCPslq9sEfJRyGpKJzmZKiEM8 +u6P2Nk4ydITxsuX5k8eKU+vz1EqoIB4kmbhNV9NWHvvcCXJiLIs/64QrSZoern2F +/7uC6NW6KKGxV3lWtZnfzg+5fgxABMXDVz3zacA2lqsBq7Dpi+2RCBcecMFgQnrE +3feZFicJSUv/uDyjDjxbnlRzFWNgk7Df51Bk8bebDHOf7TrJOanckuS/BUdjRCRS +ok7OeOW3zGgrYDpbuitq+dhJL4tE4jrvEbTZmmiOG+SsaaEXqdy/1g3g9ilIqqnk +l6E2ajwQqJjXsqN2bsvTxD2A+SzdBxwUzsrZ94RyXuJnb8kEG6jkUqX8MXGfjqk4 +XtJype4CFy25lSwInYwX4IbaE3jBfrUAVxHZy26tWussxonGFq6a4WXvoYkl4nfV +oLFqA05rHY2Plov7KtrsLVvz +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAKAwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMDgwOTI2MTEwOTUwWhcNMjIwOTI2MjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALYYRjSdaa2qqt48 +PWMGEMh9CTIj9/BM6iLeMEHZKmJHGLzIzJ8i3SJfIliZxJTPmf72U1tvxYzl6ytd +gsTWx6YKnYpjhSnri6a9vBE2TItr9xELz6u+IOof1o648nttSc2KNE/g+HWv9Oyd +NNY7oZawgSBuU/y8EZdpO7GdvxogSphOXmHeRPRh7keTHEitsz08WmHp2ayj41kR +gtrMuoLqHdmoY8CZFhZxngKRvK6aGz3CtYiailAEiw6mS1nn9VRn2Ont/5Ns6wFi +qwqhSbWMJ4Ssl5Gzooc8tna05IgjLRpuw3Bq3au71y0obvfc9qZounkQmIlLlJx0 +fvey+A4igFYKh9Cuut17LLxJqlerkdqjQlBnkaHFUZs/zXpUJhb/sol8GTd62HzG +AjcPwbPF8rhZLpz0jYhHB04p+ZI1zX25848DcIEbGTTPNFAh4vS6ua+s+rLoOYUv +NydxCnirv45rt6e3psV47SYX8+Kv3W7Hj1t8aF7Yof+Jj/u2AwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIlGhk +hnEQt/yOe4Jn0NWxlwvRbDAdBgNVHQ4EFgQUyJRoZIZxELf8jnuCZ9DVsZcL0Www +DQYJKoZIhvcNAQELBQADggGBABKcSVK2bFVM4Zd4trH2wB+FYc92SpfWCJHOREKu +jcCRCJkcwvsxOH+Rq7AwA9PSbESxsPX7EcP362xLfxn49lryOX9eyAosyVD68YGT +NwRczyAaUvViM7piGDO8oUKE/dFQl7JEuA85zRjBLRjvPhsRqIp8UNCayr7eu2z6 +u6OroI/OTUtOVPqZshzOcUcA46kJ8SZAbVi36OwShY+o7glIp1WmgjyNwM4Rr3CI +OCXzDJyfTfgQ7tCY+kgAlqlPwxKYZ6pfRP9jybO7fRstPaf8P11vn1tFrpRDMfEW +ro04enlQtNGx7b5feikzwVvQfL5lDNxsvgMnnS6GTB9cKgeE1nXmYSm8b4bGAc9V +s1/28ZJqFhvBkzm5Zf3iUNyfnvTualywSrLCAoeawKaPL/mPX2Ra6IcIF8IoHxTy +vhbpVEEQnXXGg89b2MjjJjpYAsoElLvZ4qBWFB8GI49dtHNex/el1CDR4ukb08z/ +e2LdqV+4Qcp9MCMPHz7SY8Pcmw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAaIwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTEwOTIxMDgyODM3WhcNMjUwOTIxMjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAOPxsR7cBgMJgc1F +7usylh0gKpwVjERSG7xYOPICYBWvZIeyPulYCFt6N60WbQmCeAGywv85qt9PGTgy +iXTk1zz9E6qhiLHy5qumwxjSM3nbVSu8fsE1ryvWB2a0R3mRMrHO4MZCBWM8za2S +k2H0W/MFN++uIRYlOCdNvpfVwtGo6hN1wiP0J2WI5FeurnqUWjr7Kne+sygVVpEQ +1z6nGpvZivdB/0aaYAoa6IiBOdoeAmRbqrd0+tm4i6jfP3vj0hP/33JsmBBCaqGI +H+CXlZcTLJ3RrYZlW6yqMzrB/gFsB1kPLNiFjaXRmvQTYEH/K2vu2SEb4wmeQk/6 +5jhqJKrd2fVPHfujKCtIxELEFAKAiTzYqhCr5HL+547BOYx6094sz54Ug2GKvQWg +kS4RHdzxZd2avi9YG++gD1arpO656hY6id33LXW2CLYpBrHhHet5dD7daAOZzADg +a0JwQd2dvmytq4IIEawh3vGpGqrwd2PdSvXpDMIHsYwYpYNTzQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRThXBm ++CUo7sF7ffJk3tDqATIEzTAdBgNVHQ4EFgQUU4VwZvglKO7Be33yZN7Q6gEyBM0w +DQYJKoZIhvcNAQELBQADggGBADHicn0MWBQ6BaUmtRC1i3bJbgLkQYMuqsv4hO5A +hDN/LqG77bW/u0/bnYIxnxvKl4+rV4fnRfKJW8HlLRH1rprSe65yXxyQvl283x7f +JLzu9ScnLVyK9PgzhLq6WCjntFFOBcSBsLx9C8e0OsJIyzDjq0Q3n2oWf43LFnh/ +ZA/AUveJGvQJ1ZxH21PS89bqZUmf6wt9FOul1Ha6ThOdoDlKVHYNlhEPv0GquQap +TASoty3tFu2bnzJGyQkA6O3OBHMaWm1Y2BB3FsbrySs/DTqxhjLXKZWrM+oKLMmP +rHMz8Ht8mcau3+aVgf8mD7QzIv5FiImXwDvv+Fx/1jzFrav9BDO1hxdyARgJMt6A +enMCfNWzm4PnHKDjlmnlxa5Ta33IR6C8SF1Tu9RrkVpUx9L03XaOAa4NkKhPKJKG +upnjpLJN2UAO20BuVh1Je9/osHwdv48zx9xFT87GOXOWiH+6NTJli/UqVyYRHam7 +aauAQ5RnubVsFsozwMkGs5EeWA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAkgwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTQwOTE4MTAyMDE4WhcNMjgwOTE4MjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMgRvOR1bwEQoyWw +Yt+nYRNye/2im99Ryw9ZP2cpv2pDFc/+ND3riyc7NdulbbHWutoM1LiX/dCn/ct1 +PUzeFuc/ER+n+l7aoF1JhbLY0uSbOIuaS+1/8ZCu4oEWktSlJkBJKk6rMgZ39xuW +eS8P0AmJHeiI75RbT1Ccl7iflw2Lt6pIXF++Xc+DZhyckCzxtelZoC4RkbWMzyZ8 +VoQAyIJX1c0Iy1cZrqSUb0LJxrbZuDB73Xq7T7RF4sN8SXpxCHqUXnsLx1MSDaCH +UYky4rv7MBTkLaqusfs0MzEsf7SSJka9/kwXy/cap79NKJ+9aWdEPlXxosHctaRJ +n8DqY52S170gCd5RDONgQzLJ4Ykhbu9zzJXBiAei9+j0+vJXHbe6xKC3rLsbbPIK +m6Q0ozLzv2TsKSxzwnRjfn1lahpUibHV11K3OCYevWV8TC62HKWOBh2jzAS6JVO7 +VqN98D8LfhSBdYiAIPtp1ez1OmuxckMEerJT9Bqr4qdY9ziiSQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSWNUur +wU/HEQ101szKVPuuAxGaJzAdBgNVHQ4EFgQUljVLq8FPxxENdNbMylT7rgMRmicw +DQYJKoZIhvcNAQELBQADggGBAA1y393jGsLhVL5k5+b/hFkphJaqlc7/aYNKj9eX +sgF7iuAoNtRbN5ldxBECndyWNyNhO2fcxeskqzq18AXLmDo1JO7zfQATBEJFg6Iz +N5gSuQzMr/XqINNYzNF0WsF9ajmze+JTzcuf2pBdHqP2p24OgJ6nyy/SMDT8lvBQ +Tnb7xGVVZbMJ3Y2LNbVr87ENoofHQr0mlNfuqKLPZ+H6thUdLnQvfGNxtWZJrUHn +9vw7AA8d+/meW9eH5iGqKKYzPNOat5aBhRwiNpQ6aa94dK3zv86csi/eL//sJKXv +Qj3ODpF6pV4xN3KOAna2Jm+DQ7Y1+1EeVuVWb+OI8DnqqImT5ekI0APRIWLbZwZU +Wbhszfx7i/1GKLaZp5z2ECIRpDA6JWRcctCKtzwUUrUGyLP1BOswwwa5+ahnB1vI +0CpVxSNCvQh8EDeIaoMfPNZ+xGaIHzuaEqCUM6Gb+BlfIfPj5yuD3vBqTB82O8D6 +IsMxgNtovk7tesBSKThrmMeS5w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEzjCCAzagAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgDEKMAgGA1UEBRMBMTEN +MAsGA1UEAwwEQ1NDQTE1MDMGA1UECwwsU2VydmljaW8gZGUgUmVnaXN0cm8gQ2l2 +aWwgZSBJZGVudGlmaWNhY2nDs24xHzAdBgNVBAoMFk1pbmlzdGVyaW8gZGUgSnVz +dGljaWExCzAJBgNVBAYTAkNMMB4XDTEzMDgwMTAwMDAwMFoXDTI5MTExNjAwMDAw +MFowgYAxCjAIBgNVBAUTATExDTALBgNVBAMMBENTQ0ExNTAzBgNVBAsMLFNlcnZp +Y2lvIGRlIFJlZ2lzdHJvIENpdmlsIGUgSWRlbnRpZmljYWNpw7NuMR8wHQYDVQQK +DBZNaW5pc3RlcmlvIGRlIEp1c3RpY2lhMQswCQYDVQQGEwJDTDCCAaIwDQYJKoZI +hvcNAQEBBQADggGPADCCAYoCggGBAJ8AkjdkP0euUKArJ7Rqj7xgLTicXDK7b/vJ +55w6MHMd5elzWv+dhoD0CKnO01Nt80VLTbfmqpnKudUpNiN6Nx53eUnKRvutNt+i +T6ZFBPN4hx39PfRhsgTILA9l4xVLRWri/MkP+soLl1BFRCneNsZ9KWd32jd18QYM +E87YAm3jfuT3dcfCtxoYTRkrGqStP6nX0wMbr+QvfZl8qNosqO6Sr+20Vt8tb0uZ +ri7g6EhrKUn0IiXiqYHLKOrdsh2WBcNPNwK/PrCNlLf7QMnBwE5MegujFLoaJNks +vezJt0dOGwi2ZAGOkGQAeSNzL9qPSc4+f/D+e78sGctAMx2jYHmH8Wq461BjjOes +msekfIh84f8AbLf+3JCqn+J/i9SwyVzCNe+CzyS49/FcgOfvfMLUWWjxAt0L88lT +Vch5MJ10MYWcV3LhorBAXMjJThnnHlZ8M+CxnNfJDYrXJX50J3meQ+J6XZnO3GeC +aKh/vkkzJSfRDaHmuy+/8saJKZoZmQIDAQABo1EwTzASBgNVHRMBAf8ECDAGAQH/ +AgEAMA4GA1UdDwEB/wQEAwIBBjApBgNVHQ4EIgQgzcmGZWZ1McStyth0oqlKcgle +7RygrC7xTVOi0sk2640wDQYJKoZIhvcNAQELBQADggGBAGBPhjazHREZkmBHSDm4 +VDKl+ESz2rpWJF89CwqaxzwBhk5rHQVjgslJcFi74QdmYYA4vJr+N8Ue+N8I1uds +d+9NdHN6RkRBMcEwnVVxZkZYhCoTx3fMWPp9QS3w2x6kgYPWYgv6xFg8odgLVIz6 +kRY4P3SoN9YL+gEJRgrlY5fOs+62WCSVot3227PhKk8ds2n1plgN8M9rDZsl3ss4 +c2F3rikxXk+H56W5gK39X8OrsIK0EG5IE2AkhwGjdytm431Pak46xAbxgNMC2T3r +MadtEYE0BsZnL6SExQKKQxuZnHZ/N/YXLvv+hiO+D0vWAxuG4Hd5YEXLIuwGTqWB +IXDgQSdoLnD+Io3KSaGaeIpWZ+cBmFnNs8uYmhqTFpazC1nLRI/KjYE/H0eUIQcD +JdY26freGTUBjblhhqzRlOwaHZE1EfBcLMu7wl5tbG5dAYyjRYBASaeM9AIXoFr8 +LLs/CTiNNJr102vYlcGtOP64dULfmOtRYXkfcD9+7zeyMw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE1TCCAwmgAwIBAgIBDDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwQTELMAkGA1UEBhMC +S1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDjAMBgNVBAsMBU1PRkFUMQ0wCwYDVQQD +DARDU0NBMB4XDTA4MDMwNzA5MjQxN1oXDTIzMDYwNzE0NTk1OVowQTELMAkGA1UE +BhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDjAMBgNVBAsMBU1PRkFUMQ0wCwYD +VQQDDARDU0NBMIIBoDANBgkqhkiG9w0BAQEFAAOCAY0AMIIBiAKCAYEA1v8yx07z +90mNKAafu1kNKOoRmc9qbIKH0Fjz1JEtu+5A5X65q9NUfm7uWjaX5mQTkRuEjeP1 +xoWy6g3ReAgRd/62GOFeNGDpnBRcfxtUGUyT5yHxQMWhgdyVgT0452LE+LQUr2xu +vrzOWPpsigu5ZeDD13NlNGEeYTUxvtKnkskqizmtP2yinGqInWUh27i2hHNqtyBZ +tcf/CC+E4ilDS6h/lYokhXGpMio8P0QeuPelkQdwRR3+y3Eek87dq2Tb3Uwn0BhB +ccV/ofq3Lr0vn0kJUL9ukGfnz9CEldhRUgDQ51HebCcQwk9IVJbP4DN/wwaJrqun +BRz5k1cfL/aRuvi8AoEDCjoZLdqq+nbC5mHKdhLi6V91AF1p7n6hFqs4huWdlrP5 ++zO53Srp7GDTjpgZu9kjfljZu0w0XGqZxxzi6uIggEJftUUrHvlv09SXTg2KFxp2 +GBSWy08oHHwsrQh6ERxvvzN1idwASBQ1Aq9MMaYyISRcfceH0jv4SrSPAgEDo3Iw +cDAdBgNVHQ4EFgQUjYs7Vu7DbhGsBZ1AnM9ik2QvRzUwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMDgwMzA3MTgyNDAwWoEPMjAxMzAzMDcyMzU5MDBaMBIG +A1UdEwEB/wQIMAYBAf8CAQAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4IBgQCAdkGmB+BN +ZQMIX6A9LjC2tg9Ds6PiyQJKGoryY3PBZ2oUk5XXr0NebxqDpaQ4AtBtveSJqthS +t4o86mp6WOBKkLzAfaG8fpnGz1eb6b/5TMAExOnsdLTLSO7k9PDZQbTsxLeP7Nxw +WWh7smSvGhGy30nljIL4yC3U4KRE4T8xH2K+ugxwIj/q8eUuDdZRuFRnXaFxPYKC +w8vS+fac/H+qUfOlA/cIG4z9lV9bQdUAwDetqjWW6HLcHK62kokhEoZec0ZBTl3t +cL+K7ouUtbKHxFbOO3DJX//r0IWozeLawRmFOPshNYtERJg2FXi/VnPrrn1sHv71 +pAMWZNuLQBitVyq5U8YOt+gAvwlVwd/nXfV8F6f3eCM52N++TF708aPwQqXkvjjG +SN8v66yfJE5x5yPS5tABJGp7loH7TvvWRYfC05gvHg6ses7stDJS9mageS5Po6Dh +jxCzEPIwIs8V2bSN+mBkTahovz434Zu8x2IqtkX5f+55hHPxkws9YCo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE1TCCAz2gAwIBAgIBATANBgkqhkiG9w0BAQsFADB7MRAwDgYDVQQDDAdDU0NB +IE5MMTcwNQYDVQQLDC5NaW5pc3RyeSBvZiB0aGUgSW50ZXJpb3IgYW5kIEtpbmdk +b20gUmVsYXRpb25zMSEwHwYDVQQKDBhTdGF0ZSBvZiB0aGUgTmV0aGVybGFuZHMx +CzAJBgNVBAYTAk5MMB4XDTA2MDgyMTAwMDAwMFoXDTE0MDgzMDAwMDAwMFowezEQ +MA4GA1UEAwwHQ1NDQSBOTDE3MDUGA1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVy +aW9yIGFuZCBLaW5nZG9tIFJlbGF0aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhl +IE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDCCAaIwDQYJKoZIhvcNAQEBBQADggGP +ADCCAYoCggGBAM3JOU25iNJGd97Obv9R1xGz361dNzkPquNhnHR1ModXjV3mDTX5 +qayQSf2/Pzd+MFDp8JPBfocbBUBgEdYWTRdPOv5xzK8TkOk32FgF4NPKuqMQ6r56 +c854HaV97/fmgY25lkv9bKjZeJckjRuSorb9zRgrjyaKzFnXF3qJnd7zzysK9Wv5 +BG7f8Y6Nazrk0BgCwWGQGKcmD0hzSuHMn3oJQRUF5UP2XtqObG2x8DW2KNJX/e6B +JXMKVkACYSzp0Yc14BuQ0p463w0oU7EDqj+2ekxSojJT5oqgadeeYqCV+W3bsJvW +8lHKkeT00EfibEfKyGusu9Ch42VRFPWXV7PcWE+OiSAfkje8LSyBJu6g/LAt5Qxq +XgXArTa3EC84jl6iRPUfp8qf1LslWAa4N3/0Nf4dPQ9QJs0CrkLwpD63dZ+gyIIN +98/3ueRHb8GzRLERscWzqsbyr0fLovmK5+MtH28KinYTBmeGXNnnnxnvNel9BfO6 +/OCkWlvO8/erZwIDAQABo2QwYjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB +/wQEAwIBBjARBgNVHSAECjAIMAYGBFUdIAAwKQYDVR0OBCIEIAr42oYJxgTDYxvM +/KvKNba8qnpk5RftVQZUh+SiMtzJMA0GCSqGSIb3DQEBCwUAA4IBgQAoUqlLbdB4 +gA0utx1x1kcYRlVExyGnWbwX/eDw3DCxE6IRzirh+RqVUlNMavPCf+mkcOVZbsdv +qn01VBBfq30JUZ7C3FzsNpwWZ7gSwtG+A4n3C6BhgE6pLhl94HLCzbZm9LkARDLw +PXTEDQwxE5NltDlr28ewtMZn52E+14v7qCQSgRO1pHNBSNSKfrGu7M9C+J7Eb6Ag +DMSySnmZVv0Ag7UC3oxxSaBfJpl+4f/aOg5EyFefX67l1K63hJEsxLSiZXzEvpRA +L0ntSoN8YI30JAU2GbXd80+hy12WCTdjrJQa+XzjHx1W7kZ7DZA+SOFJXM1k7FHp +vf8YSlyuwH84tNPxeNOjaBlguw/4BR2OHOz4XqsQoh5vuWkv0I4omi0+g08TpYKp +eIe2TEa+WIaPH6PF+UxMTkTstpkcGTgHQdRrUT6B3cmLQeKWxj7HO0ZnOW72OZdC +FF9DtfuI+gq26CN1Glb6NzQzv/OYYLM0ZS/9dJlCh8KTrRF83UfFFkw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8jCCAyagAwIBAgIBATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwVzELMAkGA1UEBhMC +Q1oxFzAVBgNVBAoTDkN6ZWNoIFJlcHVibGljMR0wGwYDVQQLExRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEQMA4GA1UEAxQHQ1NDQV9DWjAeFw0wNjA3MjQwMDAwMDBaFw0y +MTEwMjQyMzU5NTlaMFcxCzAJBgNVBAYTAkNaMRcwFQYDVQQKEw5DemVjaCBSZXB1 +YmxpYzEdMBsGA1UECxMUTWluaXN0cnkgb2YgSW50ZXJpb3IxEDAOBgNVBAMUB0NT +Q0FfQ1owggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCvUZnqqCTF+LC1 +aqVLMoUsigvNhOcqWfKu+XGy4NvS3Je0LICgRZe9A3IUnf5N0ArDN3jdmJrX1ug0 +0XwuRgG+80OifmMH32kFLyB0+RbPFmOJWi3v7mxwMdtLQw1xTdhgv/WMPRaxnlbf +Qm3IZXhwTvrBsZmI6q1y54ibmOc63UsAZdqDc+t9AIX11oFwq3zO4MBxMkCYsEfh +JoylB9Uhufdk5pGEdTWUTs8aRuPFWrS3WzhSmoWDiR8hCiZnYhSJx5I8g/vKfRyj +JtpJXaqvWRbnfnL+iSJl5cCUH9f+bIL026BZY6tF8EsNiloay/qewEKAlNdxXczJ +l9OShkUuKeVrpYlUhD/B9g6vXUMrkznax5l273KS79kk8GgcwZmY87qZwp1wE/Q6 +Rc/iDl4Bcum/nezXVrb+vnMprbSwid7Wt7e5z2rXtsP/56Sa01N/kJ3C+UKlSuhd +9kTOvmLPUMwOVKld75WqRKZbw6B+JtNvBCeyu89wrGkt527RF3kCAwEAAaNhMF8w +HQYDVR0OBBYEFLSBmfXskNo/DW+fOn3n4MF1lJYsMA4GA1UdDwEB/wQEAwIBBjAa +BgNVHSAEEzARMA8GDSqBS7cYAQEBAYnIsmswEgYDVR0TAQH/BAgwBgEB/wIBADBB +BgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0G +CWCGSAFlAwQCAQUAogMCASADggGBAChyozpMnqq+HarcDKatzMbFnbG4YlgbZXfS +kVsAK3y8qWli1oVI6TW8U199xsR/GVACjJ1YLE8hiHjmtG8mSh8MUM7qqf0JnjFo +3g5/q/jJH7+d6BnPGWsc0s/vwzfla1Oa/bozYeOYq9drMkDzTfOGNEDWisWma4RR +B5F7ithB+/7dxnZ3xOrJcoemkw4qeCbZN86FToMo2eNc8CbtlI6AixDzzKC67LS8 +YiObOFwpn5U09aBwcW5oUVGvVmeeQ9XRb7nkocHm6ElpWlhwvFVejFQR0hDSKazf +eFrRYPb7n2MsAg1wLHABOJPoEA7yENjXh5maybtv+ksUFdJ469f4n4cvVyQOeDtZ +XBDmG2YOVyaSOjxVkHsTbR2PTW1s9cvLZwxf/6Nnq9gpzIf+VzBJSxGyrwDWkKnA +tnFnFsk3q93/7t0qmIyf2sxCi95CfTFlR2Brs5GwqCczFT5DzMt4NKXWiAx0DfC+ +6MTSBMSW5O/G5ZryNPNl79qLqhXn+Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8jCCAyagAwIBAgIBOjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwVzELMAkGA1UEBhMC +Q1oxFzAVBgNVBAoTDkN6ZWNoIFJlcHVibGljMR0wGwYDVQQLExRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEQMA4GA1UEAxQHQ1NDQV9DWjAeFw0wOTAxMTMwMDAwMDBaFw0y +NDA0MTMwMDAwMDBaMFcxCzAJBgNVBAYTAkNaMRcwFQYDVQQKEw5DemVjaCBSZXB1 +YmxpYzEdMBsGA1UECxMUTWluaXN0cnkgb2YgSW50ZXJpb3IxEDAOBgNVBAMUB0NT +Q0FfQ1owggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCkpr7fpZae5WRx +FPPmEMq4IseyEJjmFWzgc8ym2lEej5q2ob0dpk7WsFmCJMmG7xATsHnFQal4ZL6x +PW3mOpCjWEjwi69ZlxuWZx+RUxTrYNr7GeAZnFogfWBwPdASvrPBzqF+zUAMYCaq +SJDqxcMR/yeSh9LnVBDQrve3xLxjoQZ+/EkDGsZjkyOx2jAsH0DVm06QDF1wpS6W +FHxph6iifM0c8gQ0X+RJdNxm/5czHCqCwbvH8h39M0D1S/0ME3FfGoLe33ROOoDM +6iyGTfe397zWhmclSlGXcFSaK536+8tZuMl4SimY86oItOgrpMep3lbt1LqzbbV3 +/Tzaf3pKDbtFGHn8+r3FH927g6kdUhtQFmFQSMe6Dk02F35h9Ji69Qq/ZWvxv7fF +m+EjbigUTONmFVxFM2EJHW5ysDXtqQeqatkCH/bpY2CaZpGLvE785kc8sMVEWS57 +gbju+imKqjDprU0CJ+VmYO3/T0VT4h6/wF7hPVVeJrZcyOG/pL0CAwEAAaNhMF8w +HQYDVR0OBBYEFLd4lxmAgngbWQxK6fiEsIv2AkCIMA4GA1UdDwEB/wQEAwIBBjAa +BgNVHSAEEzARMA8GDSqBS7cYAQEBAYnKmXwwEgYDVR0TAQH/BAgwBgEB/wIBADBB +BgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0G +CWCGSAFlAwQCAQUAogMCASADggGBABtL+RZVJvRLQOpAiueTJ6pnaH7+r6IzPdIk +j7r6g22n3p/hdx+nxplM0CNH7duEKkqCo4Chh9hdM6qmrrc11pZ4+ubX0BHXN8rR +UHtXAnON7Yt+UJutZ7Z+M8gn0iio7hJgwhFzPLb/clNta2xpvQtuDsv4PoNbh/x2 ++DTrZhFFYU4u3c1sv4sp5YUxazJgYOsRveivlx8Q887TTeF6RIF1lic2SD3taMFR +HAh9JwMdldwWiaRffXOqR3ra9Ff9L7YxF50dLglATMc6nFGkHnb4eT4KY3M+liQo +CXkTyK1nih3nvQqfPopJiuIpu7qUxK2n4WrF7XkZ+XWv3ByLZouuLpZy9pgtA78p +6EnwRxswATp8P7TjQwY23pBKh8v3ehv1qr7q27KsAFeHPYcFOqBrEUCSpT3J0vN8 +nCMeEwH6P0YaTNh9EJ5L/Sa1GoSQljMVbn9DU/HK8q7hXHxOEi2tAl5Q4I1MT+K2 +jQfqrCY2NhZig/mNG6xprPMfTSSF1w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8jCCAyagAwIBAgIBdDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwVzELMAkGA1UEBhMC +Q1oxFzAVBgNVBAoMDkN6ZWNoIFJlcHVibGljMR0wGwYDVQQLDBRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEQMA4GA1UEAwwHQ1NDQV9DWjAeFw0xMTAzMjUwMDAwMDBaFw0y +NjA2MjUwMDAwMDBaMFcxCzAJBgNVBAYTAkNaMRcwFQYDVQQKDA5DemVjaCBSZXB1 +YmxpYzEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3IxEDAOBgNVBAMMB0NT +Q0FfQ1owggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCdFhq+ScQXepAA +0kp0IwF/nEv+Md3Wx41Y6WRJkTVVyU6CFPlvr/F6XLGX/ILJtM8QL97CgojDVQbE +ccNxUsZ+yjtB4n52ttWYLBN5nktJksP2aBVMu1fqoyTqBhaf0JtkpQjWKNVJYbUH +k2pXkzGUJ+YHG04jOEYIKNclY82f1Ho1Wd7di4gZ1LCBRTzIU9JVPEMOZdmLx1qQ +InOWf8deZ4Gmkj5UqzXt7vGQF/TbIedhmfnbulvyHN3UEDMZgVgzkF2fIOaBwu5s +kfo8e08/J155hZIJtUjXk/moLF8U/4ETo7qER1EkoJ9KIRIvoPwPk2QAI4JP0Hd6 +GgUMEsz0dmTxKHcJZAWXcDaKcwTrG7/xhPTAffdOZnTnOpYQPcKmjUvogqY839VQ +mwYyo+s51tVrAIe2YcdHhIdBY5SLOhHsDNadpRrBYIa8vzUgtfUH50US7dZuwUu6 +WbUiQu5vmDjvGEUa7F6eehCCf9xXkbPJZoE63t/NJYvHSFa1wDcCAwEAAaNhMF8w +HQYDVR0OBBYEFOuhT488aYrathCbEjUoztRlSghZMA4GA1UdDwEB/wQEAwIBBjAa +BgNVHSAEEzARMA8GDSqBS7cYAQEBAYnKmXwwEgYDVR0TAQH/BAgwBgEB/wIBADBB +BgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0G +CWCGSAFlAwQCAQUAogMCASADggGBAEcppLLH0xAkWXbBMXDa1hwqOZfKVdoUVDNT +G20V3VbDT74R2yFCLWBge9rr7S2LfF/w4Xrl3kyZ2Tn0dYoOmBcqVzH6nCYrniGx +apPmSkAexI/bjW55BOMe6CVI9qdKayqm99om/2+R+VSAKaopwOKn9IQ+4itNA0VI +0ZDHbI/pdJClRZ0OPA8DREz7+hZWMNb7S4aAYGdd1fLo0uDKf/siFkUUfkpBtkgr +4Enb1e8NMU0a5abpI25NgURB+OWhfArLB9jFmnlql6TZADLZfw49bEmr4KOddxyk +toBmFgu4/uQXcukNWB487iREvEPPIL7A90W+W3ymtlol76SChKKBGexaaNA1JW+O +sRxoN5FnXTBhyRm96lZOfvF7SjCQHMCaIeYaQ4ajjPJgxB0EbyyJMeSrjh4yJPEH +pKc3AM9MUCxC0LO/qb5oBio8TQqHYnpyvp2CsvPSezPGh/40hxsKTL8GqTxB5m9G +g6qpdcDQxM6VtrnTh08nMjaKnfXVJQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFXTCCA0WgAwIBAgIESVZmfjANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTExMTI4 +MTI0NzIwWhcNMjYxMTI4MTMxNzIwWjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDddU24oqUZpFcPAyatYRE8BhPm1Ud75yQKp7b+X4bPbQR88Sk8 +pH+V3CYwV1CPrUN7DlrdM7tUkmpLNjUyeCHGjSbdjHvYr01n7p5rNZJq7uV4nV/A +PgmV4WRKBLUO0zPz7WH6DJ/qlTu6NGobGSj6qEBpslyazNJ9flZ0+pZuEoRjafnm +4XVluKTPPhI3MPwZhX8nnHVa+SxwA5A68vXEHbqk3Yg/s8+8Uv7hN/ytn6CFxcbr +ECcCXS3klGEyhLxd8yl2Wt6lvGAguFG0T2uj10Dp+/xR6NgKa8bFvtWi+JGIeDY3 +E+0r3+DKTwjdcIILmTl9+ITpTR6zOGizN0uz51o6EWOOc3tz/Bc0WMYZZxbQ6NMj +//QI6lrlKwnYtkas6hUAVcCRcVgq4c2iWvNNTxKjP2LWx7FK0PivNAKbBc8YAVhZ +ElyA5NVnBDjCPHO9JucMpettR/2z8NdBrETwroN7fEMzFC3oItF6ooU7Mj3PbL8I +xQmJ0nSNtV/5TJ2AMrDfH9Sj2sTdnoorIcvpdzyMvu8AA3gBbV1X8mLnTgtBZmK3 +lSregV3JngsxYhQZW4YPqEbLUIkmjMup2oaRoUA1CNCLqU6GIqVeJp7c6ycuAUdV +MLmkRW3g+r/Z7MIEqd0nIq4+O3pEM4y/5G0YvG6ltqPH0+B2smXdq67GPQIDAQAB +o3sweTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAE +JDAigA8yMDExMTEyODEyNDcyMFqBDzIwMTUwODI5MDcxNzIwWjATBgNVHSMEDDAK +gAhKJO4EtR9gIzARBgNVHQ4ECgQISiTuBLUfYCMwDQYJKoZIhvcNAQEFBQADggIB +ACdlyzTidwfIP3A7ItRsdn0ull60EH9iFQLUiyZfL9r8EH4XkTNx3vZGu1Zk2Phh +i53Fnhmx2FPexezcnAXsElqxJ1Z7GWXp3bibnpCylAWQBA0DFQoshrFtprN5z/HP +FmeIR/j33lJeOVA+IGBYmshaUtVHgO++XcX84PPUYOk5ztKjBwlW1wZldkffSFT3 +nIQgu3nayrrBTz0uS5DcqoIMnuGGGQ+ZncCcWLQ5Usizf4JjCve3b+YwUMYM2KIm +gkeY5dR4GqpvcsIBRDlk8rVaP+6JdzpPUuP4wIHpeNOQGyD9Hi7zG34u/MwUDz0o +YY5uxAd2795/mFVVACG8tYQKYHJEs8CbCY23uuDjb9CoqIrCPrcM1AIlpfLcaW/s +GXK9IOkJWX5QRWntO02rTTRpMDgi2sUSyAULXuCrsPYPfgkziaPVNbxcngjbPIoH +4Q18m7/W3jCUu52/vWtAfwc7K+rYLrSnRAre2LXoZLtRKaEskIqe8fsx0ocp1W8P +v1sa99xFdir5AVAYlo9fwjb6TixCE5HnHhskajMyY695URGm0TVTnp6e+9XMXDI2 +/qgwtNlJIZYJeBA90b0u5L62i5pcPXnICVlD0vP0dsqO08GcnP2JPta+PMUBqrAA +1GORRuuHysBLTRoylU/Bgkl8V0tk7iBFG54uvSYShJaX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdTCCBPygAwIBAgIBHDAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTMwMjExMDg0NDI0WhcNMjcwNDI1MDg0NDI0WjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAAR/cqzN7a5RWFIqF37VePaSghiuCCevYhuCUNFwCORTfS5bcGgS +lhSG9hn+yaWnEkRYX3659se17mC+Rcjj5BOncCvyHukza205aOSCai/NXayQ+kNK +LTLZZKt4MCOPUXijggIlMIICITArBgNVHRAEJDAigA8yMDEzMDIxMTA4NDQyNFqB +DzIwMTYwMjE0MDg0NDI0WjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTCBtQYDVR0f +BIGtMIGqMG6gbKBqhmhsZGFwOi8vYWRtaW5kaXIuYWRtaW4uY2g6Mzg5L2NuPWNz +Y2Etc3dpdHplcmxhbmQtMixvdT1DZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzLG91 +PVNlcnZpY2VzLG89QWRtaW4sYz1DSDA4oDagNIYyaHR0cDovL3d3dy5wa2kuYWRt +aW4uY2gvY3JsL2NzY2Etc3dpdHplcmxhbmQtMi5jcmwwHwYDVR0jBBgwFoAUtGxi +0Tyr+nC39ta0zSfbhZa0aKwwHQYDVR0OBBYEFLRsYtE8q/pwt/bWtM0n24WWtGis +MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMAoGCCqGSM49BAMD +A2cAMGQCMA3GHbcTQZ3aebAGwFlQGsfkCAVnsKVaDNcJZUgJeM2Uw4Y0Vrqq/GCO +EsyxJGD8NwIwRESdA3f7elXS9WyeX/kPsfZ5AzSRmOVmEDWGVibxO1dgGEhPhQ+m +GAHK623H7Amh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdTCCBPygAwIBAgIBQzAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTYwMTExMTc0NzAwWhcNMjkwNjEyMTc0NzAwWjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAARYRytgZRQuGrLeH9RMQR0n5qjn9SZvDuic0oOBl/GhVUQN/7LF +HZ663zJyS5KvsHYuq+fg2KLbz6WfuSjj7KeukoJ1r99UWkbvw24U/zxNQsP8cnn5 +hsHUdrLANAuFZYOjggIlMIICITArBgNVHRAEJDAigA8yMDE2MDExMTE3NDcwMFqB +DzIwMTkwMTEzMTc0NzAwWjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTCBtQYDVR0f +BIGtMIGqMDigNqA0hjJodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9jcmwvY3NjYS1z +d2l0emVybGFuZC0yLmNybDBuoGygaoZobGRhcDovL2FkbWluZGlyLmFkbWluLmNo +OjM4OS9jbj1jc2NhLXN3aXR6ZXJsYW5kLTIsb3U9Q2VydGlmaWNhdGlvbiBBdXRo +b3JpdGllcyxvdT1TZXJ2aWNlcyxvPUFkbWluLGM9Q0gwHwYDVR0jBBgwFoAUdwbA +TOVJ8CYHjD/wctApu6BjHpQwHQYDVR0OBBYEFHcGwEzlSfAmB4w/8HLQKbugYx6U +MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMAoGCCqGSM49BAMD +A2cAMGQCMFo4ObqY0HlAe88Q+NOOFaf5iXFzc82f2VjlY0F4HSmfPgC7G3Ez37lE +eNi4Mq/JHQIwIO8KBGC/q6TP73W1WKfMbgYhedzXGw8MTTRPiPh2xuEmRKfFmnTf +hGdxTCdiU4bB +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFfjCCA2agAwIBAgIID9OQB66C9YUwDQYJKoZIhvcNAQELBQAwPzELMAkGA1UE +BhMCQVQxCzAJBgNVBAoMAkdWMQwwCgYDVQQLDANCTUkxFTATBgNVBAMMDENTQ0Et +QVVTVFJJQTAeFw0xMTA0MTUwODUwNDRaFw0yNjA3MTkwODUwNDRaMD8xCzAJBgNV +BAYTAkFUMQswCQYDVQQKDAJHVjEMMAoGA1UECwwDQk1JMRUwEwYDVQQDDAxDU0NB +LUFVU1RSSUEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSE9FIBFmo +J1NPASbZ8X/6vPWynKGDAx4fTZhm1dJ4tUGlqDwZDqB6Xf9r6cJfynMw7j3+Evll +XWxkJCYyVUj0Nv9+uXnXITj0k+PVYx4UCf3ebacOfPTpw2aZBaSKI1Ykh9ReijYB +pKliOWRZpTPeqgPuKWyz0n0N05es5Zf32865wMPazG3gINPU+cHCIM2nTj2enFrA +pwcrRMz8iwfG+0STDcQ9uZ1f38oPPQB/3eKSvfiS6Z63MOZSQy1eZNcpfkfDEfeR +exT2DjHBUohVyanQJyRu2qqgU+UWtZijdGWddZ95pPi3MWs/ybUalfcd0rlVndy7 +bmltYvOOCatiXCyHiE4b2JtLun9GuNDknDjRQlhKBL2IO/luyBP0Vht1j6FNHzE2 +Dz4SMKwOWOCB1vvamLESRXkPDwEX7hZi3jLAD44872qrpBPJ3Ugz6TRSCdyEPzjU +ZM14qB/4Z0lok5cfjMQG6aFSkAQX/CMoO4aymAVbjArhJ0aBWZh23ZC7qPrhzT8C +a73/7MZX44WnDCI+v2eM4gm05957To6rTgYm2J/Etu0WvxYctOFvvLtlUUQZzVcL +FJmwDskkOWx4LJjHVDi4VzAF3vjYSBfNcroPyznNZo1Wth0cLAFI843sRrlpqOUG ++d8lRe/ji4cNXqPTELafIjK8uY2q5B2jnwIDAJTxo34wfDAdBgNVHQ4EFgQUH+FX +Lps1EhNjpQ/uPiziwdGHqN0wEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAW +gBQf4VcumzUSE2OlD+4+LOLB0Yeo3TAWBgNVHSAEDzANMAsGCSooAAoBAgEBATAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAKjWsqHNtDcO7OKiw0Rm +lsvkn/ubichMi93YE7nm6g4+yfQKA6RaQ1pRgNZzYIaP/rh60vQ36yZGO8P89iue +gnBdZM9MY5F57VGOsdBsJpgBSVyHn0PnrS14L8lhz/RRCcr8xl3NrtpKrRDtm1SU +3KaOWfDcOfrgi19vIKbLpLK+SFRI1Ar+uephhIKURzBCSlHv+aSHRFy7uazERIts +0H28y6ikY+qD5yiWAUsaJJpiSPw7m7XgKBW2R5HxlV4yXC3CAM7GbQ7XhoiZ7IWn +MpTHAK8rRg268Z62/5Ya5Sp2C9YcxKBlkARSMmTxl6SZHlnL/8vrN6x+ahhUSX8t +P9SrXQVXGvYwQCx7vZt7CPLeYkHj5aPBZ1JmIu3HcnIOa+AqVgC1Cp3Mlxu54pih +xzOs5jVjucDoRgLr1VbsJqtu0yVSGLHvTREWVi2gESVYKTWQWByvw79qTgaoIJR/ +7Tcblw9DalQYxPuv5za6vuAXUjodAivMpmGhuhjbrYJ6O04XkKwROvtQILQ+M5RP +TTU8RMr7LbhvAzCsIzEJ3ra8GUgVxdm4aQSnEc2DjVsMuwT3ycQ09930dhCWUEwb +zrnWTdkdIuKoP4W83r0S4cqYPeWRjf538Gzj6eg76iH8Xuo0V7R97HaY1Ulqp+8B +YscI/lTNa96OiJE6F5KOKH3x +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFfzCCA2egAwIBAgIQGHzqHiOX3WtP/WTL93cJTDANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJFUzEoMCYGA1UECgwfRElSRUNDSU9OIEdFTkVSQUwgREUgTEEg +UE9MSUNJQTEKMAgGA1UEBRMBMjETMBEGA1UEAwwKQ1NDQSBTUEFJTjAeFw0xMjA3 +MTExMTM0MzVaFw0yNzEwMTExMTM0MzVaMFgxCzAJBgNVBAYTAkVTMSgwJgYDVQQK +DB9ESVJFQ0NJT04gR0VORVJBTCBERSBMQSBQT0xJQ0lBMQowCAYDVQQFEwEyMRMw +EQYDVQQDDApDU0NBIFNQQUlOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA1JREujAXcuKq6BLFOtHTGvPC6uH+mxsSjdQWxSB1Bd8XPvDb0h8Wcu/SPHaz +3MtYdN5g44BbkXMxnEDtxFUq7j8oyJRj7kgpWmIYDEbUnoAaOYRYOYPknfZ/b1IE +Njd4d57+CnVmaD5fhn6dlPxA8gNM94AKVg5DIAhlJTBLGofnp5Ef+Xysnx6LkS9q +2t3g0P0eaUCxnM71ntAiKtXZJcMHxoUxSzd2HWbg3vhYAbGXShc3k2m+G9eVyObk +s1Q+OIFZpGDWXqxGL2inwWnwg6RLSAnrBIujHyfl20EdxRGAMOn0Mt0IAEbUhWLW +GRz8Gau17+lfWbjfHnl4EA4mAZ+bO3zFTSB1pww7vK8Beq5PHgPuEWw7h257Hz+O ++jcluu2fH23Qdlok6w62ckYGU73+7kW+tccx0q1M3DhINVuoWuJ6uYnfx6BKFxT8 +PZN8Ej5l6FssW3hUdAoMCFiYZ9iBkH3+8wYaImDLsXroXLC+7KTauRYadgN3rh17 +G+cbP/wBn27JfaCBpiObrQr5p/25ofSbR01rkYe//9jiXDR6pQEjI9QgcqZO5UGl +HSgWYY5r5vPGRPui7/eU0dY7+OwUMlVDgXNiFGT3ca9ybKsblIjULg+RTO6P/42Z +JbIaB9VkiHzqhU2AlnRIN6NBVGfSr6AyZLuJ7XhPISusRkcCAwEAAaNFMEMwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP+AK+A9 +9A8cF883i0cYDAHpGWPpMA0GCSqGSIb3DQEBBQUAA4ICAQBexyU+7SsxgEsqfMO0 +s/UDNPWvMyKWgSRqBkvzuDrXBOtyG4V5Cm0KDI60mGvLNY6UHe9mswi3XGztmelm +C05QeFrIQxFEsrtaYcXCxFeRp49u+S1eT+KUcculCEWQ9vP2CVdwzkwJ79p9/bzH +8HfWcOnZDtC3y1qhEeh5C45u6uH3n6lxR3BXxGmXyQw3Qd9Vr0wdfwpqE3pYFlpr ++7tToDeMxQCQ11gvKAkxIccrNarkze1kkDuT2tEOErqoX2hqE/wxbFfg0K6LR5La +J5zcHZzTayXrKMAh7I6ilZORQkegccLReybiFxo6ZC/jdRrXC3lYfoKw4S/wV1u2 +t15V8N8gzmJedlcRm4xt+toNaRinWXPOot/kOIDVUv7/JmSOL0brYeXPGtBRI6Fx +gd2kWbnvlXqb8eZl17XpOgMeUvkkX9DWd/eILA/4D6FEtbRZq+Kb923FhP8wMsQk +n5vHsxDSIGSpljtHp2K8zktmq33OBcUTW8jDW9l4MlGpv06AAatxoUD1dXXhEs6X +0ohxmeCV/WlFBzvfqZvUz+WnUr5K38vJvSHJ+Dl0i+TDnyD26RuO0l92zryF6GxG +86rFwefj4EtdD3qdKBSaGLG1mNu5mQ6K6Hq/SZ/lQxqMc6xqm/KrIQWgaBwB7RaG +559rStlXjVevzgS5ASpCFoF/ug== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFhDCCA2ygAwIBAgIEAJiWgDANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJG +STEWMBQGA1UECgwNU3VvbWkgRmlubGFuZDEMMAoGA1UECwwDVlJLMRswGQYDVQQD +DBJGaW5sYW5kIENvdW50cnkgQ0EwHhcNMDYwNjEyMDkzOTEwWhcNMTYwOTExMDcz +OTEwWjBQMQswCQYDVQQGEwJGSTEWMBQGA1UECgwNU3VvbWkgRmlubGFuZDEMMAoG +A1UECwwDVlJLMRswGQYDVQQDDBJGaW5sYW5kIENvdW50cnkgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDT3r0O2OvP0IVFRQhI3LhEoUW0ukHN7AlP +eTmuhfvYRi0vsrBLTyuTlZ8U0XZj4XK6BTkaaiAshStmgTWBrZ+r1IpIgsqQaKCh +M4YmfaMsqfNh8r4yNR0LPY4OVcLMjwfLwSbyEO3bSs0kwjSWivS4au2mYSqEAuy8 +1FIQMA0+08xatAzV1GFgViSUPVfi/iiAAHIYjYU+g/EcsblPQh/C+ExYj17ik616 +TVT6xKIPKORx5tgIBKEM+riZ+9IkoZhyhHcaZLjtHRMR5aSbxVpH5gHVX8d4w2Nn +R6r9o9m7/w4pCwrOgeiCX3CYlbUGvYkre8g3bek9VRv114wj2ZO4ji8UUI4qRsGm +RDPIfa52JbQEMlW/91nlPj4CmDelB8XKFWJkYXDwOk9j7Z4o/+K/3PJPGk8fWWSL +OxHPS8j8Sng6E2x0VDW1N9Ff+1Wcu/uAtjmnkhIaZI2Tz04mfhCwgEGDPkbMQ0c1 +OqzU94H/ONm92C4fpg3gJNpQ8iGuCguetvUpEvWS8fcTj3ucqlKJ5Ivo4npzSc8u +VdsnnJe2VKPxjQbLSnsYnfua3PsS/zN2xOzPa9IxsqwGnp34LaKbjNkUjopzuI0c +zFEf6iD20TeU5zvMeVXDN1v/PSIkDbpvs9JsCMOc5JV6jfw/GHSu+UpogXsgko5b +EkqueLQhDQIDAQABo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE +AwIBxjAfBgNVHSMEGDAWgBT2JHIy9xSB+QBRy0cHJLKZTgx8zjAdBgNVHQ4EFgQU +9iRyMvcUgfkAUctHBySymU4MfM4wDQYJKoZIhvcNAQELBQADggIBAIhHYB5DbzLV ++vgWfGlKmk7PB8UPO6BnPcEVj28sLUUk58k6WopBoAh39rItl+9UVpG23sG9hMEX +NDcr8hTxZM1d41hF/XYRhdaBkoOP8PsNlVWUFMRFUTb5+fTD23Xo1kontPM6V82A +aTWt6a/8kvde3s8pJFPysbs6gjnFYWlbaBIHADSI1ArqiUG6etXdf9g5YEGXbKVQ +0RI83LF2+J4RZibCB8C5qBCuou8y/ElJG0GXgXNwN/ibFox2WSOR1yPF584lqJfP +J4lK/ic5umG7J9WgJrt1EfjfbXx9FD3IpJh2wIWqin6hjM1opcxPT5NYvzuJ7XiM +5Sw7S0eWML4sHLa4r3j3y1ps/7Oa7NQDoResFXUwPGDc8D2hbBeachvv/BnFXv4Q ++wkICwAOPzv/t3Vu1lhhKQDhbOCEzG8qU9luJ6TQT6Xy6ut8zk6S1iMJr8HkQejy +fajzR1OYW2CvpK8TkNOyJAmnDKyRosm/fskv7vpphxLJf+GddbTCAMp7WA85HfzR +QoLRtdB6Z78S1MhtdZ6IEAwtszXLZaNpHSFcqSqGH4iB+3pqjHAOAmyh1kbO3nrX +eG4hfcRk0g3Bf7AaWh6k3EUcIRCTeD3kRZjSVieZLWCfzp/0Bcel5FEc7HLxj5Tx +hUGr51MJQ1Cn/QiiBHGol8dws6iadx+h +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmTCCA4GgAwIBAgIIH7RLt6sHQyQwDQYJKoZIhvcNAQELBQAwWjENMAsGA1UE +AwwEQ1NDQTEdMBsGA1UECwwURWxlY3Ryb25pYyBQYXNzcG9ydHMxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJCRzAeFw0xMDAzMDUwOTQz +MjFaFw0yNTA1MzAwOTQzMjFaMFoxDTALBgNVBAMMBENTQ0ExHTAbBgNVBAsMFEVs +ZWN0cm9uaWMgUGFzc3BvcnRzMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlv +cjELMAkGA1UEBhMCQkcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCq +wnz4njoYJE4WFAHiS+83MUIn3JTQYZCjgsSAH+0cnhRYOKT40xPOQ4MH2bhnlggL +EDUSjnTaZjsAXEmgAuhF4avyXjYsdmCQEP6nmeveKVwgOYsR/01nRwQkXtuA3ojc +Jo9jYhMpVa8Uctx9H/Wi82M2EtQGC77GR3hIQEAqHaBDejbARShQKqFdwqPQzGzW +E9qbNVYwXJSmHvFEbVCJ5lr9l2BGKuIDYYriWJDmdCwl5ne39pUyAEOpBQ7UstGD +9PKLqAQBQu347pcTEOXzyBjJyfWbWO5Mu4BBT+ztNcC6s4hhpts/4Omhlv4yVWKB +9lKCnxjOFRWusz5Q5/BOL35j+FmNYXr3+jlXBXa+D9QCUgyGtLQJjM+DNpYKis72 +nd5qJ66LEtWWu4Z0rpQez5Q1rtVXr6JM1P99SgcO9MGWWEldsUWTzJCkF382Cbia +lfM3abgtPnfh/L9TOS4g0T1KnoJqHUzZlex/vJJLfYwgVfgGVume/UwdR7HaPp09 +g9+lnqfsttwmk/ZncA87fopVgDvCwT2KkBWoDHizmmnjLR3T1yfxvZG/SmN6Rc2G +WIFS99NmzwRjplGGBNRaft6umeZQebVxb3AdoVIzl7xWNrNlX53zNLuoHSC4h4id +1NV1WlmDL8vHLVtsxg0TO0MX1LY+u65+Aj+7t+KozwIDAQABo2MwYTAdBgNVHQ4E +FgQUM+QTgk6UfsUyzN2EbpdRDQN+b2EwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBQz5BOCTpR+xTLM3YRul1ENA35vYTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQELBQADggIBAGAXVqJVkukjvkH8a9JjTrQ+IDoCenAqkeijcliwBzlaG8TL +E2MY+uBBD0obXCvXE5uvg/RO+GNVe4bItO/tLOwu+xPwjdb0z+C4R7invIONWxQ0 +fcr901oOHZmXjOT9em9rv1P8SmUC6J/rMReF04UW43HwGPT5rvzRD3n8jArCxGUP +pyDuVyO9k5z++3tnWLXpiA3kjwPVCpwXLpXyFcmbOIElnpC3x+XzWHh3DGWLzEH+ +g5fnXY9T+1WQV0U2f1Snm2ozRJLvU1ovzQTXS4X5Z3vv2yJK8aPq5/XdTjKBbnUL +4w7kAyAMVFKZYldWvUg6lyWERUBZRcgSmxjDHStso6yPNT6Xtb06pzVH9x9xHNbi +0qgw2VTZaYwF7fU6kAanK9OOR71Qv0OnEezXaIVKw1pbp+bTBwIm/usQwcP9jYuS +yFsQDGmKO/19Vub0fcvsjhnfCFQ7g9MgScrf23BkJe/Eus6dWprdP9yuFU2uQeLu +NiaVRW4+OSpzOAUvBJlO1XSBqxXoNSoGacw2xEoE2cTbKLveSrEY9/3zAi0i2zAt +jr+7O4ZztYp7Qlb+nL2QWh4fsj8Xf7etnDUUNCbYso1yhyCpPvLuCsfCgh3R1d9U +wAiKjOSPS2LmfBtiXg0971kfkqlfoTkjnVF5a1Hp26hIM6WgPhyJnUHHUe8K +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmTCCA4GgAwIBAgIJAPga7XKQBZQZMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0NSTzEXMBUGA1UEAwwOQ1ND +QS1IVU5HQVJZIDQwHhcNMTUwNzAyMDgxODA4WhcNMjgxMDAyMDgxODA4WjBCMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xFzAVBgNVBAMM +DkNTQ0EtSFVOR0FSWSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA +8V6tzZI+CJvZ4OUxBCSzXON99ecbQqKEw3BAKy73JSS7Iyl99y2EVpPi2gk6Qeql +nh+iDJDlEULEi4nNW+XnrO9V33I5oXpNCcOB4aO+nndY6Jr5xx3y9aqL9V8cLrL/ +oAI84cRM8LAVyyDvWiYOBFmGM3leA2uzu/NhGAynvg2UqVDnvmVp0D9lLUH5yG9y +dK56EA+dRF+Divdkey5wxOdJc+d0MBAB+x8tsDKs4FfAcnzehF4SpK31zKe2ngOL +N9OHK5rqNKxMKIyBCfD7RdSYY8ZR6F2T4cl6rcgguht3npOGBzcpSBuPNwIllazQ ++x01jCqy1EkCRajlCh1BrNlFh4ljvLCtM/oYwYP4pwXc4t+q0JHkdNT2d1G2ZUYG +9xMpP86WAW10RyA9McH6NBMnGWY4IteUQ23xapY/Qk6lvEz+93iEOur/nuSCp8Nd +aFZ2NYFseviklB56rIS8nTXS3toBoXSW6cjOlVFLNQuhksM2Ue9dX5YXdR0HCZjk +GP9D66+dWwXeDJPw7NTNNIIvExSfOv0WAj8USPrJY7HEGb4DyuIlD/Ppc612mvS9 +bakt0jIF1tNHbwXrcEMM/VoWTn2sb5RkWj2MF5nhq3ohg4rImnDwnPqstKve+tvv +bvAepbwK4feqd/VfMp09JuxqWFQgr4GugHcWqVTQNp8CAwEAAaOBkTCBjjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBSRA0Y6DB9D5d3sZbh04gQ3FFWQRjAfBgNV +HSMEGDAWgBSRA0Y6DB9D5d3sZbh04gQ3FFWQRjAOBgNVHQ8BAf8EBAMCAQYwKwYD +VR0QBCQwIoAPMjAxNDA0MTAwOTAwMDBagQ8yMDE3MDQxMDA5MDAwMFowDQYJKoZI +hvcNAQEFBQADggIBAFUk6Vq/EL6A1vamL3xtSxI2gQipaP4RmZgVDUJBdxs7+RYN +ssKGNmLYsVzhJauXHfs/4sQlSbSP9THXtZbfOgo6oiJzdHTo4xS8imZdCmhFJk/W +PkVcv/xmYos+dhVURfDT8jmJXgT5fOInhqM5faCQUiDJh3/Zvcxb/kQBb59pHmrB +EQbrE3X4FpcKW3jHLWPREBOstbz2CE9jbJsWcprHC20nUnm1iaN4JvUj7AoeEjXI +owi1+uI4sPoNT5OrOhoerdRpT9g6G0vIfzAMGTUBYCm3HmdeQrvu8/Y5WMUgphZ3 +X0rXUAyjX5TKr2jPZZhITx1z1eaAUPgNqUQF6eFPx9pzZHqLEoyM+uz2BUEuFlyl +iwuirg7C+mpeCBGQP/T8dk512HG7LCnPhpWmy5q152IMs1WrjlonMWIRh/p3N/6Q ++vFe5qKzmc7M1FhkJzaNKmvVhxonm0Z0lEboBp9xxJwfpW/wCrZlJgOBHKgasSs0 +4tzDcKzTyRS1miiyqT7tWYUl/g1XgX9XmhosLGbdg5c8NuarHOPYWW6VCdSkqCPN +HtonxqH3XAIFVp12wjrDSoB9kChHoXpvWdOEqByde6vgVgLAUmmmhsaBwZX14Of7 +7mk3kpjr7wx9Y226RZ8OLi22NWGZQKflYyfdUqIzE4PbCQk2mx8wcHzJ60E1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmzCCA4OgAwIBAgIBATANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJJVDEf +MB0GA1UEChMWTUlOSVNURVJPIERFTEwnSU5URVJOTzELMAkGA1UECxMCUEUxIDAe +BgNVBAMTF0NFUlRJRklDQVRJT04gQVVUSE9SSVRZMB4XDTA2MTAyMzE0MDM0NFoX +DTIyMDExNzE0MDM0NFowXTELMAkGA1UEBhMCSVQxHzAdBgNVBAoTFk1JTklTVEVS +TyBERUxMJ0lOVEVSTk8xCzAJBgNVBAsTAlBFMSAwHgYDVQQDExdDRVJUSUZJQ0FU +SU9OIEFVVEhPUklUWTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALam +hYIZPsrh4PYPlXecIcqpfimaWmrvEoGtsEsW4yK5eB4bKBfY9Yc64IZSq7ImN1f7 +BLqflfVNsD89LSrNrREK13A7g4q6vrK6TDSGXZ/Xl76YXFRHw8+spLzQmMD12fFh +ZrzhSzwCG2cl8drA1ri04OaoZ86v0FE2PJOpm9k3vvT9eZQ1YhGDjXJ9w6gDC4ol +tlzNtRylrtivloAEYLEKiK6udn9HMXeD01zSVV2LzY5TzRRfAxQCj4jO0KAXtgpq +QAHiFOS0QHfjHDHDExuAEywKvtUM4LRvMz6KnPMoLLaHypxtEwOmjFoAMn0MxJiN +Od8YQBREGD22A8x4Z0YFwfK+meyPc0TFOpm7lJ5ohzbW0vKq5Lz8CvpVZjbwNkMd +uXZkzBjwo2uMyJNOtplo27QnRbRqrpnwdGjxWmBkGjcmOIQ3rFz1x4S2B5XZRzLx +W5udhcoAu6VsziTk8QdkiUdk7BHirwhKNKMwaKLgYl26RmzYvu2O+fXDPW1lSo8r +w8cBcPvO0m+jUQG7xEFyMv1R++r213ikDmOBaSNUI5x4Z8/UhVqCf3rVAt1ikXbI +GuN6y3TyzWZDKYXAc6xJvGDAqFPxdn3PvcjPQcMLY9xCqPGLidhN9r9vF2ccVnyL +BSX4RkMPP9yWDOTln1ntYdcDrMFlku8RVd2DLvf3AgMBAAGjZjBkMBIGA1UdEwEB +/wQIMAYBAf8CAQAwHQYDVR0OBBYEFKD1ZVIYDMvMD/19DfOfhgTHyY9iMB8GA1Ud +IwQYMBaAFKD1ZVIYDMvMD/19DfOfhgTHyY9iMA4GA1UdDwEB/wQEAwIBBjANBgkq +hkiG9w0BAQUFAAOCAgEAQSKMpiaEusnOi4W/Dt0dN769mta9ljGpbjQNGSv564Dg +gGYzfuKMdEiRyA3QfWZBCg0N4VhEbwRIIW091s1RyU8e/cAAwJvigY8e2oOwnTzg +gyz2hB/tAqQvT/hwKs4DA9BF6u6+7ct6X1dfPFpG1xlVhZJToRfxW9BbTh5rGTdE +uSJt9oDn6aZCmxYUG5aw6ywqPmFu9KItQ2ylmoGyECEErnJyOI0jVFfIjIwzOz0p +GLStft5m2AB+iX7HCZlan7bVr64IjusLhn7oyww0V0gkNA0ZDu2WqVhtDZWKxW1C +kpFFoY3b1eQGliD5vn35kWEqYw7+bpQ5rQe/auMktQK65/ykzYa4QsgyU7gKgzeA +p+XlPy51zH9LAQwu3uyLjAV6sv5htu7RB9+qN59rNfWD+NTUKmH3Xtd/AUPfxYeN +BRSKjZLPtqY/iU3oF0in3UobCRZbruGiSQNOsykFwrKVaAHKrRKZnWNhHnUjAV6c +u1p2C3pALyrmHOrQO0SVU7Mel5c7J1aMJSwWNJjVBoBr6eytGkz09qVo96L/s6xz +U06Qnd6JEgwLTsb/s+8F2gc2UNTqfM2GMZi1NksU1t/Ct02Ed71h/Az4zdOj5Rf4 +6CXZvF2mxIT09/oV0uz3N/cSLr8MrnR43eUVqvJxCUpSe/E+6tqfvq4YaukTv2Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIICU2qSSrmZfwwDQYJKoZIhvcNAQELBQAwWjENMAsGA1UE +AwwEQ1NDQTEdMBsGA1UECwwURWxlY3Ryb25pYyBQYXNzcG9ydHMxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJCRzAeFw0xNDA0MTYwNzM4 +NDZaFw0yOTA3MTEwNzM4NDZaMFoxDTALBgNVBAMMBENTQ0ExHTAbBgNVBAsMFEVs +ZWN0cm9uaWMgUGFzc3BvcnRzMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlv +cjELMAkGA1UEBhMCQkcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +hk9Hf+MacgAWiyVbLGuCAEE+9H0VwA9RPweOM+PU9wFDBqDoc6wLFKUt16Bhvgs4 +Xsz04VV2ALUYMAeQ1+YB/SZQZPiTifPgTGz4eFSgwkmNMPnkioi6d9uy/IF7oEoC +Xi8NGf1fSLY68mTGdOYs245WfV8mfRHz/rm6VQYBMK5SF/mbAyl0sy52vdrl5FxS +HPMhykFuFmOYVHDGVrATiYlFBMVDJ7Jfx7irvgjT9R0Z3icq6jtWajUvOd5Uz7ik +FdTscRE8tgqTLbAY/EvOvkV9Rgib5sYy+YtrgihUuH1bico7u6GqlFU+eNYXNlSI +nGaH2RftwzloyeXaicIfqiVQlS+t6qNqtWv05HkzQzP0p7XRquX+rMkcjbl8FMYE +tIJr5JMmgjwZv5bc6AJSfQ2Lfxqigc3MWwYoIni/E7uU2ub12cs80WBP74cebUNM +i7FAcKWRVJknfYuvxVgZROwoqoYMe1yhcJBmuCdX6Zf0KTuwaJLPf5QnYKqdjrCX +eVfOq2+s3xRL0CPIe0DuN0XmGAzakDKimVUFdR2WTf/r8c0XOyPcfbAf5ZBhohuJ +Ln+lbwQoXTc9s6iqoUBat/922btzH2xuAS+OfEqekpikq//zS4lt32RHRnNBYTE2 +DL9f115RH2AnT5SLK/qIZh6I3qpVBxcVbg2As1lTmwIDAQABo2YwZDAdBgNVHQ4E +FgQUnuC/3uLT1PztGzko9UqnsyZd+vkwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNV +HSMEGDAWgBSe4L/e4tPU/O0bOSj1SqezJl36+TAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggIBADHDMnwOzf94V8jAqPFwvlyP7gIt+oGAsLccYVfzDLu3 +WBF2FYqwL6Iia4f2QZphLsZxDDsRv+HSmzJsnW19ugZFAV4BnX6v8bo8Wix/6wAc +1ZsOF81ojGitiPGirpMIIc3wQlbOSPELOwldBAtrRiUhf8Pf+3avlobrTLI0wOw/ +UG5zbrfN2dSfmo+TXlo7KMCRYUkdVbB4y172f+ZwUPHfLbL27HOCPKRAUMSONyMt +iZSSR7q8KO7dXbNKpw2myta4iXqFKj0opEqC44Yryoy3e40TrrygFuY3rku198On +3HybDUItc6nUk+eLFOrY9kZHfN9bcQA71a1BOp2Kfvl8kVX7DfxkUopBSmwqeb06 +WlYsJrtNKqy3cpHUofnfBLr64URFIvwU5KQIRtkoOtG5jEgw0Il2UEkoSX3svHex +oxcdW0JumWKC3MkWjcQyuLgj6hPV58pa1OJeWhW+Oki2VAIhnzC25dm6tOtn47hU +5vV5XNQrDWnejJMA2uRjH820hVlewyNTkG4AnuPkSbZzOmtdLPA/GF38RzXmHSe7 +rYmfnQ3MxaVBQQV7wwcbA/E6XLfFdplecExzqP5fRitQj9vVCNBRek70sC81LG4w +9NpjiDB/gQaTXz8Fvfciz4C7Ct9rYoI9Fki1kb5dol5K7Rnub+OWpq6rt370qhmP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnTCCA4WgAwIBAgIQAIfGVvw89CEud1h5m/YmkjANBgkqhkiG9w0BAQUFADBn +MQswCQYDVQQGEwJFUzEoMCYGA1UECgwfRElSRUNDSU9OIEdFTkVSQUwgREUgTEEg +UE9MSUNJQTESMBAGA1UECwwJUEFTQVBPUlRFMRowGAYDVQQDDBFBQyBSQUlaIFBB +U0FQT1JURTAeFw0wNjA3MjAxMTE0MjhaFw0yMTEwMjAxMzE1MzFaMGcxCzAJBgNV +BAYTAkVTMSgwJgYDVQQKDB9ESVJFQ0NJT04gR0VORVJBTCBERSBMQSBQT0xJQ0lB +MRIwEAYDVQQLDAlQQVNBUE9SVEUxGjAYBgNVBAMMEUFDIFJBSVogUEFTQVBPUlRF +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgAFsbDgtxIMuxh+lObDI +H+3kC4MayhlIlR2jaVuk+hwta+N7Z1EKsKVx2BKS/gL49wi0BNPu+YRhAN71hjGp +a8/kc1Hs8nQEuR01T6abgcWPQe6HZlivTvIU0+Cu6xG21mKsvpY/lfWv0NyFCiPg +1WRL19uBGmhZVSip4miQYuySxqpJaT3XSSc/GRp4fzOBAnDzHOCSOyssKUofNbe6 +fbA8x4GF4xRdyYuM59i8tj9eWmgoP23mzd4/36Na9TmJCyI1pYJ9kw2LA6slplmO +LrLGuRdifHXEdOuZWJflFr99oqlhLZN9op+F0b+0Y+92ZEhIEQ2Q5cwcseLCLz5l +Knsy8drN0V3PnAU7E3LnbWRMj5doC1jYCyEKs6Oekd6uiyeYIzODoMKWBVuM2Um5 +Gx0KrSqsd/y+ykETVoOHMoDDoTb5OjDpEhHL6v1B5yoy7Pi4DiJp3vw4Z//p2M2c +4635EcFpYuYc3ElS6pqVb6SCkzXEvtFsrvmEIg33HdklzTw5/KqHKqhWkwxpCnCu +Iy1lgtRvzTdvHuLapv4e4grtZJRkEO6Z6/TvzDVEoLlzi2P5TYQ1hkVOsYbo27g2 +prCjH9TT6IkKXQ9nj4TaVJIOoMfci2WKlHk0ngTeRSDg32682qqL+VMgIW6xbcxY +jQ/XZ/jR/Mf3b67FVkzp6C8CAwEAAaNFMEMwEgYDVR0TAQH/BAgwBgEB/wIBADAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ3MRXa4rW8qSocoAy/zQFj0dMk+MA0G +CSqGSIb3DQEBBQUAA4ICAQBD5vBbo6pxki6b5DjAI1ETAqae3vy1kn7PlGAjoQh3 +my5IB9WxvpUucXsJZu51iB9UxWFol+Ms+1Hzax6U/YiMVFYme1tS6zWdGAfIPPCF +yHwa/OZm/2IjOMET4Pnla3XdPiRd18ozpbzVXrxDttQc3qFdXI8m8gKsBKA+POFB +FXbIN7HAOlcXXaobPdeQaxC97CsXEJtMkLlio/PjE9J4rf9bsrMVQT2S9VP8uTNh +QyaLj9bazBdlVyDGyIEE+NYNf6xJW3ghvKNF2E4zj+yMK/chlDHTWz8kIvVP57NF +pamQqf2AEfylE88McqbNC7M1+92IWTxNEjUeLk6nGgTbDpY8C/ZHAXoRA7YLl009 +ZSKlQ1MuhhUZOZHD1a4xAaZUK+HgdCmdeb0wE8n5gIkLKjycKt9iJcyCPRptWE0d +thDff0RjmhQJuhK9Fi4IEsFOiVKxzpKbZhc20JtILuewkVlLmyjBJiWB3eJ7M9o6 ++nvqvHzG0zZ2RLPRjOLvCWMDMzcUF3MUe3VasepGkw7xEPlvA6Pl/wYq4oj4n5dZ +UERmKx0UagvtVVbMPqqoG5dg/b3tmbQ6udGsBFKIN6QzI6sBltdTR1+pYtTg5hlT +xTYmEpSXINL2lNyA9KdYpFu7QlFJpiqVKLpUYTgrIcZ97C9HtFzLd+NiuzzoUsCg +9Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnjCCA4agAwIBAgIIJurN0mpcf90wDQYJKoZIhvcNAQELBQAwUDELMAkGA1UE +BhMCTk8xIDAeBgNVBAoMF1RoZSBNaW5pc3RyeSBvZiBKdXN0aWNlMQ0wCwYDVQQL +DARQRE1UMRAwDgYDVQQDDAdDU0NBX05PMB4XDTEyMDUxMDExNTAwNFoXDTI3MDUx +MDExNTAwNFowUDELMAkGA1UEBhMCTk8xIDAeBgNVBAoMF1RoZSBNaW5pc3RyeSBv +ZiBKdXN0aWNlMQ0wCwYDVQQLDARQRE1UMRAwDgYDVQQDDAdDU0NBX05PMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp+vVihWD2BDdZqVh9GzYF0a0GvNy +8d+0zYRrKnP6fh6FpUvoW8litbmtkOf/FnjlqavMlwfTRqAAp6rFxiZLxjg7PmZR +JSb9LO2tmg/IDZP5y6K5Zj3puKR6qVTS6AJJNb1a97wkmkjwgf+YIq/CAAGKymcT +xlS4RLvJu+5vFMUM05sj1DEWAZVHXN5EmotydtCDd6AmRyvX+gu0pJ+2Bg5/qJZX +pFKzX576ypHgBekJN6t21PnbuZV3dN8Chl1P+8KSP9L1nvswlfkvu3s8Vm08N+qc +hrYwUv22FfEAViqqehrX0fzBhaENcPJCNiuTu2vUlsYnaYJr8+vbeFvsSZmG/b80 +bZrOH1vnrSkMRHQ7veFJTXppXBJL0IuLeXefH6cIphz7DLdB9mvUYAcJV08y2G8x +x5BZHUaZ7VkwCQlX7mWCIkwy0h+rZPlq88hFRR3AdnN114d8POPKOGf8meOCiikA +xX1v/Syh2zqK+G6HKlxOgunQ2gnU3XX2D7HhQ9PDa8e5NBuo6CGiqK1RCV54RiPg +gz8cO6W20XLO7Mq1qvfS6zlYHZ+bqsDdl3ru+FgbqCmSeIMQoKLKp9ftWaVsJ+bt +DSHMpDfLxTNRpFlch623LkDzC0ryiRtf5G7+0+z7ZDeGtwlx05O0eXsVsOyWipDq +pNjABjiSA6nmK60CAwEAAaN8MHowHQYDVR0OBBYEFIxxfkFxG9KSBITiaSMdCX2p +9ndYMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUjHF+QXEb0pIEhOJp +Ix0Jfan2d1gwFAYDVR0gBA0wCzAJBgdghEIBJAECMA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEAT7tPnxIoLowISmgTG6y7mfNUoCoxOFMkdYvokBEB +0TvVTs9zyC8dPtdeV3A7VzicOdzmL9HdqfHBOhD9QP8GtMhlYReKrul5iXi3K7Ad +irD5YTQ/vLwBw+ROKoF/xvqIUm9gckwViVQ/HLD27f8UgchiolOYikgUWFYjAWWr +HRR4aDWKdEFrrCcL1BtMcgJU1pgOLsXIAlP72mnSJ/FAQo0iHkbBCb4HDCH2DSB/ +hVFclEfZQUTkNCyl6suLiuL9if2KszTxwL8/h96oMmS6pqD9CvxblFcXRIW3UugX +vqy2GEt2bBqxmjERN7/HhGKQm1NYjA7iF8YbHiSf1HRKtdA0Qv/Go3KVQ7ipI+ua +T+8BZJMLp9o8xhI7SF3PhyFfawHvc9R3ZCwsTpD5vMm/iSWOCizc9hetx3CKWLdP +n9RS8aoSdja56yWZ8OHmNB7tfa6cFFs5k7W7jTqtqCIbX/cbiPef3k0Zd6PmEmEJ +/b/CYz5PO4z0PApKp1w+f/lTgKr4hOBFDJMpp/7u0Qo0X0DVukdfvMiipglTzxXs +L2kD88U53VWSoCvjnuiSDLng0+pvmCJcGmL0DWtCsTHJon5Yfg/WfuKSUYGlFBgf +8eUXx8jeOI0qLG0teMxk359tXao43sOoakK/H0s2Ij0cr3uYZeDkV78WEtMBVfVK +rsc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnzCCA4egAwIBAgIQPVG0Oca3C+1h9Rx6N3NTUTANBgkqhkiG9w0BAQUFADBA +MQswCQYDVQQGEwJIVTEMMAoGA1UEChMDR09WMQwwCgYDVQQLEwNDUk8xFTATBgNV +BAMTDENTQ0EtSFVOR0FSWTAeFw0wNjA4MjUwODI1MjZaFw0xOTExMjUwODI1MjZa +MEAxCzAJBgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEVMBMG +A1UEAxMMQ1NDQS1IVU5HQVJZMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAzCRcIAfM8f1afCXvYmfGQS0dytGjYX8VMHLq+6qWhC/c3NwNCsXUc5op/MKD +fSClbH2ecOZS31nOqRbr7h92YzC34Ao/pwPvIS0nxR8NRPN1Ou6hPYjuPYiO1Ft+ +BPQpUC6kKKndqvzPNBSzUuL5t/ND/P89Q270V7Xsf24M6CjkmfhsWlyX9TU4p0ac +H+O2yAWJ7y5LLURcPHOHPvIJJw3E2idLjNWNOyafYS2Acbu35ozb9/QhWWRqfaMI +p2UmloJAYl/50/vNv0yqpgCrZ5Ypqq9nzGqgCXLrIwBqnHC3Je4Azxzv4DmzHyc3 +qlCYgU7EKigKJp6heC+e+ANhEltF7wALAmKIaXB82LSh66qZROpqmSBQk8YXLypJ +atOsZbNbUVck6DJ+bT1GWEH6d9gcjClV2cMgxOJ/Jx0z6Nsn2NQyNP7VVvkR7wJF +gR9b1gAcWi/todGBqG4ssEDrr1X0ICG/7I55fuzP5twVBEewjMtpeJMAvD7fjPY5 +Qh9YDD0jqME4qOFxWR5lrT3QIEhP/XTiJKb8ffBE4kwMoBbbLryVvP2lLMVDn+ju +YeYhgN+YV49/dyL4yExPbcc1aNVBoaibNrbzTGjQVQoHXBKovrjjzmtQ6n+euLUV +MJCnz6OugIBugP+gcUTNhk2SfjsFbtuxPuvRUmVyyc7ar7cCAwEAAaOBlDCBkTAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDA2MDgyNTA4MjYwMFqBDzIwMDkwODI1MDgyNjAwWjAfBgNVHSMEGDAWgBTRI9BK +13kT0VEB6aTTkFmfEJ2/DTAdBgNVHQ4EFgQU0SPQStd5E9FRAemk05BZnxCdvw0w +DQYJKoZIhvcNAQEFBQADggIBAK5rXnkqQva+KWRrgaTLfMZif42KIt/RmBMMN+Og +MBNUNg732U83QOAt8CX8d9VXTfWZY2VDxuAe0krEc71w4zMT5d76pcKb0+aNJwQj +eghMzP/6csgrJqq6MEwFmipSKjSdureuLQjISq80l/DvxgnhSOI1c3mXMwBFljED +z7munufDNGLP0y2Fi/566peq3gSe1oQL/imSpOdNxHttZevqixJCkIDrFa44E5fS +Qc+OL83aJJ32NC+WF1qhHNdY/IAwdTWpGgopwFgYG3IZbLftKA6ehl9DIAT/fE+E +sn2kadkn0SBzbKxEgr+8QjochcXpmna5lHu5gISKlpXSiNp+z0tCQPzxO8sK3KNl +cOycLkyYZuZuDpWVqgwd6C+lrYtbGSoKl2ZTFZE4aZwiiNQYZDBFUM1SyCX3Zly5 +e3RnQuRh1d0hDdVm773t053Rfqo7/i3y8fstmh0Vrbf4yzqKcDl7JtN1/CTqSatE +C7Y/8byTagU/Kroenn7Wu/1SrrCzH2chEycgz4VIo/EeQKJflSHtjMgYqUSMjH0m +LyAo6SanrWHLwafLIvEVcUl11uMNMkZ/Xs/6BSdR3r7xAWJGv8gonQkm8DCfk9fP +DXN2RPLx/WdO0VWP2T5jUoB/PxXzWiiRMIEYiJk6AInRCbkxuicF3i00pWomvBl1 +kB41 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFoTCCA4mgAwIBAgIBATANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJJVDEf +MB0GA1UEChMWTUlOSVNURVJPIERFTEwnSU5URVJOTzELMAkGA1UECxMCUEUxIzAh +BgNVBAMTGkNFUlRJRklDQVRJT04gQVVUSE9SSVRZIDAxMB4XDTExMTIxNDEwMjkw +NFoXDTI3MDMxMDEwMjkwNFowYDELMAkGA1UEBhMCSVQxHzAdBgNVBAoTFk1JTklT +VEVSTyBERUxMJ0lOVEVSTk8xCzAJBgNVBAsTAlBFMSMwIQYDVQQDExpDRVJUSUZJ +Q0FUSU9OIEFVVEhPUklUWSAwMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAMZew8lGUyDceVBx5lNQ86dgwnQnMpC2vr8AH+B7ZTT7TB7DxTFF1+0Z/8FK +R7cfB89/7PHHPe1tAToxN916SQcq3Rhwtm0LWJ2PraNZmcOqiFEZ7gCE5zlh5qhP +2e8v9WmR/kn8opEocAkZklZlNWotV54Qx2ix3BIOOl69/57rpFp8kNywhh8YTfBA +uimZtMMWveab02Xq0pKsmew3oF6gxNSzkSuiwk6MA4WvHY4ionxJHO5DRjCzMm/y +7xrP9wp2gvkemZ6rZ0lXru6719l6rvWTHu2SIkdQC0wh3bj8eaNDkBSeZilFs0aC +E7xPT1YZwETSXwX/n/ojxB1LUbn2R+tcqpddY+eZ9oG/xRb1OVmaor0fswWyB2JM +FMFdbkKY9cchCn3FUIonQ/S3ImWsScxWnsuHdeJUXo68FoKjv9YMvK6hQPmUlt/N +tpeG7l918F1236OQclb/k57cXi7N0+SUGp2wTdxyNOPkDlHhYqSw90HAfKYTbhEJ +qORey/w8D1nCOrgwAp+xWrWmAgDuZUb/N5IzXAcnd/j+LdwCx0FvfCwAtzLiNEG1 +OZQtrTLnde39jmbVguv34Wszd+U8SN8dXQk5PDxivsoMpU9hlDXS6UK+2vmHVN6m +b06OprsMuHkxy/sVOwac/m8KKpZd+S2zBcU05Hxssiwf8dlhAgMBAAGjZjBkMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLC/O7ns68cgl0wdE6WQWhphNYmg +MB8GA1UdIwQYMBaAFLC/O7ns68cgl0wdE6WQWhphNYmgMA4GA1UdDwEB/wQEAwIB +BjANBgkqhkiG9w0BAQUFAAOCAgEAL4YxiYafGtGs1JNMZUX1av30EAivvxxrh+Ho +CIUtXR/Qj7Atu1RcyoZg77JwYV0AowxffCTwxDpmc3ObLr7aqdrI+oSkD2Ruqv08 +gZd6oqsYqeVmYqbWnlTM8fLsiOk8kN7am1RHPTOeKGFSklIEfhrXvBipiewjPkp2 +aiZT9UdSQNtHCiENlkuii3JJTf4whfvU9bzUvOI91az/7/EON6F0Z9646fZyJBhw +k6zjhQ82K16LFIbfW08AdDkwlwErvU41ndH6aGemkokQ4ed3kPxRLFiaQKnc/EEV +VDnnglPEt2DHHYITr2dxwPwppBbI3+QcNFl+atowZuGbwW6yWFC6iJ9NnH6GX4VV +lB88nF0wfc8qiVGL6fB1kRfsvVLMYnfP4H6T3pV09j26V91GpFVociepcNkYXgAW +n9zRE/GLiNbD+RoQ4wQKC/IoXtk0+Z69zBmjyYR2DBtB6O1013aBiQsNDbqKI/Ln +digYvCnR5a3GZ5xPUd9+9UmR+/1C7VCmrZndJCQBNgtLTy4AyImNEKFLzCeojX5W +Kavazz3sfWn2wGFbA9VJgevTHvzM+3SywbgYAJatflMo3hNVtg1IYbCqCLQBps20 +wzKuCoqVWWqu+rHmWQySXkyB8D9n3WeRFf8iaZcb0rU97LLEAKjfpRaQ4C2Zii1M +JVg8ZDA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIRALPYvzp+Q5mYJ0xxme+D4ckwDQYJKoZIhvcNAQEFBQAw +QjELMAkGA1UEBhMCSFUxDDAKBgNVBAoTA0dPVjEMMAoGA1UECxMDQ1JPMRcwFQYD +VQQDEw5DU0NBLUhVTkdBUlkgMzAeFw0xMjA4MDIwNjQ5NTRaFw0yNTExMDIwODQ5 +NTRaMEIxCzAJBgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEX +MBUGA1UEAxMOQ1NDQS1IVU5HQVJZIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQCvOQssgQ6pXcKOPWZ/XvRoQ7FYI6ehZrdgU6n2XfZvWgxaoBzEpFRj +KsKVtrv9czwGJqFc2M3FSdn25H3LVkU+RXrGe1TTo7StTH7Kr6S6z5Jb+2dfTmIp +qpKKXhqUB+D4My0rQGGTGVrOOUP1i5jkeVxXxmKxh8nZ56nfoZ2bMjIQFgtkJjiM +UZyYP47jPpyJEYrLmeAyuUsUFQ4WpmzVTFXnKFsETsQpBLg4V2tU+rKkz/3f0x3D +9g/27KDERns0rm3TI/L9iNY9TZB6g7GuIeTQpS/5ZtwEAV7BkZIXtS6i4wcVyoX2 +WX28CLozTBt6j53HdMEYt8D7fBBc70j9VyA1zPjC6dHWySDx2OGELA1zNw3Mk1nK +93q9pdu2Q/CFlLitM2qKFoqgbs9PupWzPTA4TL3njc01HGpqh6Coci4pXAivSmAC +NtK925cGCsYIF2BBFfLUPb8Y+pnqg2VD7Jy4HQEHomA1c5OwPgndrXSasysVoei+ +Q/TSDZ/mPfulXo4OUJRe/gBYhCEm80m1r3dVaBHHC7n3lwQnH3UtRwKhFm3vnyjq +7P8sGR0IEsRL1cAhrXdguUwj7YpUCj0jVQqtPv2qNJhw39NlHZLdWmlZTmbg6DZw ++udmS/3Ps6FmBGZ/S93pXw3Q59BA2uRMZLuKXSBCFfGXUjDRQa/U6QIDAQABo4GU +MIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTIwODAyMDYzNTU2WoEPMjAxNTA4MDIwNjM1NTZaMB8GA1UdIwQYMBaA +FDD+BwXMhWgbVm5Fv4wrDmQiguwTMB0GA1UdDgQWBBQw/gcFzIVoG1ZuRb+MKw5k +IoLsEzANBgkqhkiG9w0BAQUFAAOCAgEAUJxeFDtS9/J/05MfGAoP2eFHhjlC7RXG +sKHVt/ixBlcMvVVmQSNuQE8yIdhGvx/Dvfh3GEh8/S1pICT2t5cYfvXVLEaZAhXr +D8D1U6fQ1ZPQ1P9Gd9wr2pxksnC/hkPQ1u5EjGgeyQvgOd76ZFGLz4RbOWg2Kvmn +UrF6ZouQ9wLhpghypvZXwbp38+GuDFG/UEku3mgkfwSGKQ2o3Tgd4QpOXQb2vUsW +/3pIQ82rNr6zaMnEiCEhRQEFpgMGKq6zqLaAuWHuEK5RknyuZZC20R3/plXI3ztU +3Mhwa/oQKJ4Zi8zk091WyxsOkKf9W9Nq+K/udknH5vRBws7GyK2tztORLB0lrPnL +e/rS68XspkLLfuSrY4+G44uCIoDNAd8tVRkZZNiHOG+v12lqBTUKXzOjG2Ai0H5H +PIf2EyPt08B0ldrX11xWq0mpMId7ODY/qJO/Rqo82CeG8ms0rA3fOj9s12JbaFD5 +NfrgLvTB3UdWjIo3ZtqniEvIY+1tEwOVMIk9HG1KrmW85jOfl678MuxsRXbeNJkZ +iKXuzLvPSU8+w5J6XrdjAqjhXr7bXQdTg8MK9yjizEiVlF7X2M3x0iAUFLD2fhyV +64OzKj5ShBb6fFw6yGH1xNTg5Bsu1XkroWDgaxazKh5simd+k/K5ZzcoMKU9nfl3 +5DRIWEygDuE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIRANgtqGAx9UY2UPHZ9oQ85kAwDQYJKoZIhvcNAQEFBQAw +QjELMAkGA1UEBhMCSFUxDDAKBgNVBAoTA0dPVjEMMAoGA1UECxMDQ1JPMRcwFQYD +VQQDEw5DU0NBLUhVTkdBUlkgMjAeFw0wOTA4MTMwOTE5MDRaFw0yMjExMTkwOTE5 +MDRaMEIxCzAJBgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEX +MBUGA1UEAxMOQ1NDQS1IVU5HQVJZIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBLuoc28SPj25dwPEC5UiaYRy8M/3Wu4fI1MNcw/NKUwAmdIwtVPxP +tzVDZ6JL8ZT3INUAogAWmCmZLmW+vdDVjOFLmKMb/N5igyVyZdrmvzP6VUU5Qb4R +vHJjws4RUw/xwjnd69Tm/y+IKHjjUM0wMPHH3AGx4PIfL5iKCQfjzH1xlCrduppm +ES7eQP3vzwgutZxpcKlQk/u3+bTgojTYH0JDBO2XZE1OIFiyHCXpW70Vz8gUuao0 +1GPytKHJ/bPUde7nuklPbV2Sweko8KTaMFOD3d48errl2eCkMKfwTlz7GU1oZrtT +tRF14+iRdh+YC+QorjtlbgMKBdtbYItinfeMdjik261dc8X8Mh1ntfsrprNYbsSh +QUY69ILZV3GGJfhkEcAvQjkyprMmX8kaxpf2JpuMfTy6NySzBJM9T6To+rTDI0FI +HF31oOe7p9Hpi/fUw03F+trW4Rio4lv+AMq2OPSvmLqYUQmUhHOQD3viSpEvNJLC +dEElEa7Win+CSB5cGjI3IJLBXDcWajnEciEtAQTXiGZB6FwgNugUvKMTdswbUK30 +0aO1Z0cWDDPTPUTbU0KI46WxH40tBi8yh5ewylmFX50euDcCpFV4puUjJUf33sWa +kHfv3wzVEtWvKxzh9vGMVCDPmZumeToPFjDU+YftXc581hH3BkQmDQIDAQABo4GU +MIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMDkwODA3MDkxNDAwWoEPMjAxMjA4MDcwOTE0MDBaMB8GA1UdIwQYMBaA +FPmnrmsegMC/JBanHHvW0kN2vPsMMB0GA1UdDgQWBBT5p65rHoDAvyQWpxx71tJD +drz7DDANBgkqhkiG9w0BAQUFAAOCAgEAahr3FBtP2h1f81tsBiHGJfg6sTx9I98d +xFhogpLay68gWCpDwSPw8VXTdUWTxCPCc07BYSOrAtfKdsWuEdRF1h0BfLhGNwcz +3SrrLETYu+b9Ps7pFzpgfYO35jBNrlkyD3uSII/ZH/WpDyNe8Qf3gBb+9BSTdtEJ +yCUh+wSNQCMgaE0dqW4smoxz/ZxhYGd7t+RbAgKEDc0cYPlYCYV18l41UjFeR46V +WvItkUXcGvqrPdK77HmnQD8fssvXQsB8+pXEWSjuXGGOXb0h7bREt+6UboB10RZH +GSoku/VVdiAFqLW4NqEyZkD4hrRslaqIVCV2E6DsJiQZLl+GtTKruXSjzVk4J2fW +yHbygCjUyM54oyH2wTubmxhQuBdaoxc7UOi3wpvzPrktw+LyAZBLdNc8VBWOXC7y +jnd2mcjSeayJpGNCO45wdAH9//PqCkgJIhGVf7TmgTGmHV6/0DYJtU+XIwIsYflI +R3huuQZa+O9Xb1W0yiWx6XiGg7hzoCX4qIWX1GTRnSvJ9e+kJzZGS99nc2wKRuLd +jmORcJ/TveavLg4rJAWS+Hj1i3Sg5sXuX7kbt21kebdN2HE8R3wE9M0+M6izcZ7/ +ESZyktWwHxg/Yq30bFePcDrO4frZ+ox1paBpQc60+tkSJirkAmlh6/AXFCIxL9CX +9Zn2tv7eIm4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpzCCA4+gAwIBAgIERIgtJDANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJz +aTEbMBkGA1UECgwSc3RhdGUtaW5zdGl0dXRpb25zMRMwEQYDVQQLDAplLXBhc3Nw +b3J0MRYwFAYDVQQDDA1DU0NBLVNsb3ZlbmlhMB4XDTA2MDYwODEzMzAzOFoXDTIx +MDYwODE0MDAzOFowVzELMAkGA1UEBhMCc2kxGzAZBgNVBAoMEnN0YXRlLWluc3Rp +dHV0aW9uczETMBEGA1UECwwKZS1wYXNzcG9ydDEWMBQGA1UEAwwNQ1NDQS1TbG92 +ZW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ7zDQMoc0SxjEWO +kdalo2W4bXfsf9s5LvKJea9N4fhfQc/o0Pbp/7CJcmLE8lBCT2sm0TT/E+yLLU0S +DmLz1fOJFd6ShwXEGugl2Vhx0Z573RGEdRXOfmBO4CsiMGS64ruAmfeS6XFEGCn3 +vEVos/QHXKC75jS7aa+XqsCgK8XxMjMGUK+BmdzjLPegsuWJT5Yo6LhPLxGTzf6s +7CeRdDeCPR7yLjF4H6tLXmAMK6TdfO55LcYQuyKPLqcqLPzEaKqwFFzssUPVPAFv +VNI7hSJwb8DpFVfRfHjo6qa07KoHwEZW4VSGh/Xwu6wbj6MzkphnTHSagl3NdBaq +4k3dV3rME1frN7flygqJkN3xwSm353vct4nIaleekEP0eJLmBotCVRJokU87HsDV +mvCfe+CtOOOWXXFs3gIy33pVfEAW/YRLX8Puc+Th1hmIGfOzxiRxuv9g8VOegx/B +CIrJ76/LIMOFOhgD4hgguo4EaC2CGcDgXZziOB/jvWqiHHr/K+dt1/1evsIklbw9 +IafdcxeAUTEoGkPbp2MxkDgolT0idIchuejKvfPWwaKs+E98z66Eb2lo+5cXPyGv +nNE528tsEkWJPRCnW4H9enwaxPgUYYsth/Ju0UxtJFN3Unbd6UUjIwE1Ee7OH8hn +taY8Jl9D19+w2D5Tp9BQ1xVQGkqzAgMBAAGjezB5MBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMDYwNjA4MTMzMDM4WoEP +MjAxMDEyMDgwNjAwMzhaMBMGA1UdIwQMMAqACE9baIg26OenMBEGA1UdDgQKBAhP +W2iINujnpzANBgkqhkiG9w0BAQsFAAOCAgEATRuGLwd7VSFbA3+miFXV9Y19wZOk +LpLf971jbhHQJpxCDiWvXQXFHUKqu1Ps8Au3eNPyiBTYyz0Dw4WC3+gXhgI84L4l +GMNB1YKu5O9k0JngYfG1k4cOEi1QaD1GnV13F4V33PURsSo3alFIcvd3fJX6zAT7 +3RwJj+XAjW7b97vnU95XZKbhQWXlHhBgXQnmuPGkkarTJNNt/2CtnYR7lpQKQzrn +B9WX2tK4Th+lCW7MiAqNiaJkerQoR1dOloiEtD9IeY0CWZeLjM+8AEZUWgPCZwJp +yXWLm/p1jNKEcH/lOPK7YToQ4KqRvHxlGzOqrww8jr3TXNhye2kV79GxcUlZeAPT +5Rh7NN2e2M/ttOu1jXi1RyU5lJHTMWsSWDfY4Sbw+SSB1H4M68zgc7rVWqXGjI8N +LDv633Gz5185BMLy/3ScYL+sBaNR4/hS4FbP2qkwZIrxlI8/ntEy3iIrycBRRuNg +SSgCuqbqJdReaUUhPT5Op6yCTHzR2QKAEhH6NK+OvLqWkp+CWRbag8y3qVuj3YNs +bdCRowtmlX/9CE4KCxrqoLXMJCGA3pZQ+5Ib5tAbJPB4SHpilGH70mhNsLaQFcSK +qgpu3bBO+HvdASzI/b9OBctpRv2OSomg9p6qhtP0DwHD/g3rgRzig9dymfZFSI/v +QadpLUAPmv67amc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpzCCA4+gAwIBAgIERIgx8TANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJz +aTEbMBkGA1UECgwSc3RhdGUtaW5zdGl0dXRpb25zMRMwEQYDVQQLDAplLXBhc3Nw +b3J0MRYwFAYDVQQDDA1DU0NBLVNsb3ZlbmlhMB4XDTEwMTAyNzA3MzMwMloXDTI1 +MTAyNzA4MDMwMlowVzELMAkGA1UEBhMCc2kxGzAZBgNVBAoMEnN0YXRlLWluc3Rp +dHV0aW9uczETMBEGA1UECwwKZS1wYXNzcG9ydDEWMBQGA1UEAwwNQ1NDQS1TbG92 +ZW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMsSVO/FzJRD7Oee +2sHwLZ23Fm/FJEKcoEcIPElpAcYccHNcjWBbBzo1myqr2rWkhcTNg5IEOqCOMExV +F/8K/NRcTDeJ+pfOr1DgSaaIXUJfyzF+bqWznS4ikksHkEMTuMWytgxDY41qFkwx +BrzXU6iEN4qrh/AnBbdsnOZAlZ9gy12aKNdn+ccuop7Kit7tSEqSyrNdadAv8AYF +v+UURBMhjOpw6cEduL9gS7E26RVC6N2Sa4wi0xYgFN5kEvtFYXp85a0qUXBg6oMm +7lXjPq41so7tJ8ccMnL7x1JqBsYVB5+ffyxaVtdpZglxaIYFhf/Uep5RhcAbW/So +bp8tV5PzUZcc9MqYuy3Y4jAPcIjbAEJ/R6L9UmQn2xDagD4r5iVUP2evRTNOIjG3 +FIe2uHEPyQoL4y119ar8zpbVONAI7z4rMjmiMIgCp2noXpMtquHgw8gRL0OPzALu +sOMJ4/9KVqC78Gie4j8BUAJJAQQMO6qKcWGa0cybf51MuhC/2bjCf9fy/WPDRSqD +6UyD4RKAt3+wImvy+eXsaOeO/6Q4KidNSCdJm3s9fbj4yBc3DXiPlJc/BjPwnUr+ +R475Fzrun1OW0Omkp3GX3L/squ0s21d5LvL6AlJHaeeTm5s3hTBE74PDKdsd/u7x +031LFgm1S/TddqPjD3nV2GJ9W/EnAgMBAAGjezB5MBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTAxMDI3MDczMzAyWoEP +MjAxNTA0MjgwMDAzMDJaMBMGA1UdIwQMMAqACEXAJFi+EK3TMBEGA1UdDgQKBAhF +wCRYvhCt0zANBgkqhkiG9w0BAQsFAAOCAgEAgK3l3SuMaoN/nLtNeNdGWTbu7KAT +pGWpJeYX5ghYiFHsK67oWNBk4hqmAVW+L2Q6hBkLGC2Mi3VCBpHtRrGmkeTTK4vV +Yc96pdA5Gwa5On0Kv3NDEZSumtF0DSLG1nt62FO1hYu6TtQj4kkoUFvDIgtFEsQ/ +PZz90B40UTxNZuw3RRo1ppaWWzjCDoNSpqARoZ5tLZKexGRCSYGgf2/K1JX8deko +US1U0zVT2NRAhUgvsku8tTz62nzCYb46wfW8tIUSvM4nHCwYuFV0xdCXk0sLOthD +NpGG5uawEMb2RHxWbGoDI+KRuv+DZC801gA1JyAC9kyqsIYWqVk/5fixSAqLsqJu ++ZfZQidPyklP6hYGgtUVNBJPdRLr2Xc4sXo/tUGWaHGvwfGc/WjQ7nOpxA0DJ25J +/GMg3RBnDXYUkmZ/W/1SuNS4AqbUF321N1Z9Jio5fsw6hfDSgsI2phf/xLdq9Dnq +mQZR9s9/IpkE0g2igcwL49U+yHr76GOzjBjo1j2q98XIIliaYegmfZID3SYg2uMI +oUMQ3Ajd3mbS64CcpoYZs3V4tB0mhIMde/oDpad9vkT/3m1dQKKPoGw9oisFxjjC +WYxVl2D/G8k+vL5qUymttmTpciBsaXLvciBr7Hxl0wmamH66U1rupQSSSS17ZaOK ++5+h+8VZNnR7e2Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFrTCCA5WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJCRTEb +MBkGA1UECgwSS2luZ2RvbSBvZiBCZWxnaXVtMTcwNQYDVQQLDC5GZWRlcmFsIFB1 +YmxpYyBTZXJ2aWNlIEZvcmVpZ24gQWZmYWlycyBCZWxnaXVtMRMwEQYDVQQDDApD +U0NBUEtJX0JFMB4XDTA0MTEwOTA5NDM1MVoXDTE1MDIwNzA5NDM1MVoweDELMAkG +A1UEBhMCQkUxGzAZBgNVBAoMEktpbmdkb20gb2YgQmVsZ2l1bTE3MDUGA1UECwwu +RmVkZXJhbCBQdWJsaWMgU2VydmljZSBGb3JlaWduIEFmZmFpcnMgQmVsZ2l1bTET +MBEGA1UEAwwKQ1NDQVBLSV9CRTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAKp/MA+BfKMUUzCwSdNl0YgFFIwjD7uVfOeYL3IxkWGHFkGLa1BTI4m/VwjJ +9EXaYWIC+Sjh/mSQ4hNT/mi02epTU9pT99bd9EK0T5OsoyHRQVzcY+qEdmog0ctR +nkTU/J8FGEI7rGPTvB5SAjlwt1U7X9xX+RTgmX/BQqcnB3w8zJfQT6cNO1g3lijK +kZ1PlEs3zH8cp+3PYXu7aN1hC738UEV2dcyG4NWB/jOm+AJRrQg2JCwjCqYiFDpi +G74YItH+eCPj6teuvlFQUB3t5DrXj5JHK+lU90lf1yf4lwXB+OJZjG82N/1rdiau +u4+U4iq0TXDsglgQMW8n7FUusilWy3AqEEPh1YB55JANbSOsXLYEP8qzaeo7rVM7 +B7VjGihlOQzU0Z3cSCmAyLtTekqOnySuqxxTT5LNVkJG78Z68DXcnA2FN898nDlE +QgYDZokYNrU5W28xkA/O1nqXfYHXTqwhdSPDvB5+lwwWTiCD9IO5dpIlsFiQUzeN +5to/kv9X7wC88e83HxqwrQMlHtXvzP18RpDvdvlEVKYzKiGQYSiz1br/DOshbB0X +IJP+23SLa272Bd91uQCje6A02cCfssR6M0+2Ys0GXsLS520VV8SGncuansfrDPN1 +oJhR2axei522KS3Tfu9diGooC5FAELRQDvtLKUSvnZGjyRrjAgMBAAGjQjBAMB0G +A1UdDgQWBBQAhBkUss5+Ct46Jvn93R/0AUKoDjAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAgEAcJIjJ7n5qOjaJ5zrYAz+ +zCvb19ZFG1Yjzx1JhpP6K+BQqjoaz+mTgtbkZeUb0frsJ/yhE7yw5twpbUrwkTVf +HNrPsxWxarnDBzuZ5YDs91LRaeRDRmr/ruNroxtN55Fd7Uv+x9eA+k3wHzX/MC7c +BiOdTzlbZSIHL9Fn7nIx2HHAt9VJxYNrLVedv+MDAb0FhZrW1XX1U48Z6wd35lEx +R0U8fImL50ixXZADmCR3oA4YFqo8vYFRMqDkqmOIAMSX4TEYiM0HNrasz8zKa3T3 +p32bnlfZ6z8vyiho3Y3mCrqAnLUJiqzR1F1wL8KFAekN2wMINZ4h6hZQ7TZwyoyU +4Kbxgt22pqYo2FlS50p/y6fqSw3XDsaaXDGSypeKywvVydrqsWLQB3bX/+l90j61 +cfs17x/AUkZzKvFxfRtDUtewl7aHFT7br6uj/GuFbxGFuJwHyT7i9HHLEbdZsYMR +MV7nNLFzf8K6w3+lB+LVcUF1AK/3ITaolMM2ZbESkuZvrVAmYf0UeXsn+0woSQ1y +5u7xgExnBBAwVMYi9j/2vrj9VE28gKRNOMDwsDXEFgHJkWRxfrjgAa5ejkrM6GLS +sGDMaG95B5SeshkgBXHpGXmQWl4zHYZqm4nLBce8h7k7EodZlfih9KgCuvM/IQVZ +uN5STVggOWqVJaJfhHDS4ug= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFvjCCA6agAwIBAgIIGj0j3CQpds0wDQYJKoZIhvcNAQELBQAwXzELMAkGA1UE +BhMCTk8xLzAtBgNVBAoMJlRoZSBNaW5pc3RyeSBvZiBKdXN0aWNlIGFuZCB0aGUg +UG9saWNlMQ0wCwYDVQQLDARQRE1UMRAwDgYDVQQDDAdDU0NBX05PMB4XDTEwMTEy +NjA5MTIzNVoXDTI1MTEyNjA5MTIzNVowXzELMAkGA1UEBhMCTk8xLzAtBgNVBAoM +JlRoZSBNaW5pc3RyeSBvZiBKdXN0aWNlIGFuZCB0aGUgUG9saWNlMQ0wCwYDVQQL +DARQRE1UMRAwDgYDVQQDDAdDU0NBX05PMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAvqVGZf9LgzvdMsgFXOCizxyiMz2TwDajVjtrXi5+MXH227d3nbl9 +SWHqnxZE4mV/1Pp0pIxm8fBjPtKJ+X+ItLzt89WNgy91MUwKq20SoRAV4Ck9Btje +9mov+ost4pMKSaBpE1+gaYyOE/+nynQZaSievxJ+2WQ7bzwxVjYdYdKYFw87f+kb +XGtKUsZTET6tF1QvBqGe7OCxBe7YvQBSkMd0TK3iAuEJw8TVGmoX9QwIONjK1scN +f50/cnlg2cQRtwURUxq0Fe5qs+7UGJCwFH74LrZUKd+iCCGN39TdJp80M5NJ5Pg6 +REP9FXyETEuK9ar/3L7MYc1hOKvKMvUKBZaCVINzN6Rcudf3JbmJaaTulNdOqKlM +a/XCwSzfVpyRGCcN4w6yCOGYIxAbEDxtk993/xvtx9ktMcqaQvfgZ0Qmo3aWmAMX +fD3SugTsVsOVc4zJr+vtlyy+SWZ1u1bO5INjeW0Cce+nVqrdRMFlm9U8Iql1jhK2 +iqRzVrKvVGo9SGDRh5myJ1k56mwIRirGjkD5ATy/6zclAdX4GFGwJLcOoRTvbSmM +9ytqmPwjBxu2R7sAcMfkAWFyIrkWAUgkZ1hFuebAnrNK2F5zHZlMIkZUi5WvyEie +PE+j4u3SpdJjoRvHVztpLoNJFcCpri+HHuuh/uAwltE9YoCI5TKK1+kCAwEAAaN+ +MHwwHQYDVR0OBBYEFJ4THDuoRGWW24a8q9amMOGbN505MBIGA1UdEwEB/wQIMAYB +Af8CAQAwHwYDVR0jBBgwFoAUnhMcO6hEZZbbhryr1qYw4Zs3nTkwFgYDVR0gBA8w +DTALBglghEIBJAECAQAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IC +AQAcTX2mGTxYq6Jd3ZTj41baiDP454Bpx764x5e4uCKMMvb0+p94cj+Wlr5N8Hza +3DXmwoGe97M1OUxRcVNwKTDJZ7FMohi2vajPRw8HHcPCNi5+FrMTdEs0ZQ0dI40m +i4qGj5nSdaMEe6hWsN0nQxNoBNmJu5FDF3i6rZd/uFnmEhjLuKhvArHPTzuB8ANz +U+NHri1zgwKTU/c4wjlHK/Wv9YZcN4iLEeu9Dacz6dJPIRhin0irX6yi35BInfSL +KxORUFIb6ZL15Bna1R876U3ahlzUbSEMpJbouYneq8uoQecPCmbSHFR23gODV9VP +CPHzIECz38aAfjUuaUkqfUgckyywkzHn5f6U21gDopdFK2vsyWuzVHtkg5DIh7s4 +qt9RZj4xpZvO/zmoDbhXikS3Rtzb/pvipmSQJeH1Ekey7hHaOmWOZwfF9vz/X9v1 +kVQLixS07/wDck4/iyLVgK37BLgoGJdiYnfSsTMWXpfqbdW7ej+95sZ6IUGlshKP +4kB6s80+z5t6+f8RAJk7JYGbZeIuiBmiNRCshFq9idahHqqoA3wG5A3S2S5LQS1j +DqRnF/AKgOHjNwn5OJC60OaumShdqlSyy4OBk6w3uLnAJA+eO/lj7DLRJPI8q+iC +uIkWDOaOwG9+CWMIBY5wMgnkZfTO5vOn5EKs+fLCC6TvPQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEQuV2UzANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQGEwJO +WjEiMCAGA1UECgwZR292ZXJubWVudCBvZiBOZXcgWmVhbGFuZDESMBAGA1UECwwJ +UGFzc3BvcnRzMSYwJAYDVQQLDB1JZGVudGl0eSBTZXJ2aWNlcyBQYXNzcG9ydCBD +QTAeFw0xMTA2MzAwMjMwMjNaFw0yMDAxMzAwMzAwMjNaMG0xCzAJBgNVBAYTAk5a +MSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRIwEAYDVQQLDAlQ +YXNzcG9ydHMxJjAkBgNVBAsMHUlkZW50aXR5IFNlcnZpY2VzIFBhc3Nwb3J0IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1/PcPtXhjkcGSLdyaSAC +ay2V/Y7rIqspKnuJUzrL41H1dCPJW0pn678hLWkvPNvaIg29fXuzESPdWRrwpcvj +Ikq+l2GWoHdybHe/gBUyOWX4bQKNnc0RJJ5dH0Xig3MoW5Ok4db9+yzCukjw1kjU +hEiyzxDKVWWCA006USrwTA+QV6kNbJdAwYipXDRdwKfKtZRZEohPr0sv34cE1oFq +lF/tbHnvIM4JNxEcbFkJIe8kuwmogcyS/w6dQAUCdPk5wFBiON5s+myJFJvXrW3e +mm9RyO8bJa3fqV6cMGgHWHdLRW0IBTF2EowjjyW7BfjViMJtrhdXqwyJtgNCwjqa +PvSKEoeqaBhYd57h0D+6wFyXHioNrgOPzrL49exvShhfLr6kDhf69bTPJ5UnkY7l +OPSAseCU8PxPnqqtcFcjdgP8/BkqbHHjwaY5is/kQNwRPRfFCsBTVT99aczeAJwk +GK1BKT6O9DVKdCAFxVSZWWGXsTJA9m6rGmj1SbfAZHDibg8GUPXCox+DFYIpYmzT +ACgOtqIlRLOSWD330oyIDX3A2Vt0YcjCxacAF/iPqj8HqiUUObDi4+jtFkwZdjLe +Hk3tQmWmSiNARUumifQlhvjmbf+Z4AfoLrIANoVBFY7+ur5QMmZ8q+EMgh5PU7js +/rpAgCEsYzB39imzppwK0n0CAwEAAaNyMHAwEgYDVR0TAQH/BAgwBgEB/wIBADAO +BgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAxMTA2MzAwMjMwMjNagQ8yMDE0 +MDcwMTE3MDAyM1owHQYDVR0OBBYEFPBksktsR/MSmTRc0ZZye8Z69I2QMA0GCSqG +SIb3DQEBCwUAA4ICAQCLW7nDFsAivXEb1jcLDoHv05kQAg4O+eE+dSvggTkBYGQ6 +iZJgNj8sGDeafujPAVOl0LAOUwOdYxnHCJYPlt5qnAMC46MZnNcub1/DeH93dS1d +HwkJoi2mVzjyemZ/yhWH047FSWnIxcoYknmoEII1KEe+ce6X2cBK8alymuKVeQ0Q +CQ/LD4gQ6vsNq4qr8GO8+CnJyKwqPcPjEaetU8jsztY0aJqujedkCLhEDyG6/FWB +VqStggcsQ7IApEzi0H672RJFKcUUL1g5NEJ5ebaidxDZ1kAFehr00CzAJ+XlsWRt +I1H88kaOGOShuoxHuABmkfk+qaqtleLO6MkS4sj6jrD84tHiaH4JcJHMBcJ/tqfB +c7zD665O3KqdN5S2sTrXOO+N1ErR7elljP4ea9tzzxYZBRDenSbBMwy3m2Z7rzjD +lQJYPlNm6l/V7Vjn4vy003ShgmxMO/FRnMxohM/uRxleqT/gdyNYDzPQdleThWkI +t2S8r5uAxrexdh0yt0ODFAjtT5PZakJLq+J0FxOXVARZDXX7SC/TX0WBk/vqQqVP +D6CHi1sDeWfrOZllV2CYQSkpn/6EzdV3N5JQQ3gx0oiUgOgtdDQ1Okc0D2l0DDLr +UqRwmjoXTW5Y1YSBwBBYsDUgL4/wvWP8Kjv+KMgtJPwflTlsf4GAZetuzPGKTQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF4zCCA8ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBhzELMAkGA1UEBhMCU0sx +EzARBgNVBAcMCkJyYXRpc2xhdmExIzAhBgNVBAoMGk5TQSBvZiB0aGUgU2xvdmFr +IFJlcHVibGljMSQwIgYDVQQLDBtEZXBhcnRtZW50IG9mIENBcyBPcGVyYXRpb24x +GDAWBgNVBAMMD1RoZSBTbG92YWsgQ1NDQTAeFw0wNzEwMzAwODA2MThaFw0yMzAy +MDIwNzUyNDVaMIGHMQswCQYDVQQGEwJTSzETMBEGA1UEBwwKQnJhdGlzbGF2YTEj +MCEGA1UECgwaTlNBIG9mIHRoZSBTbG92YWsgUmVwdWJsaWMxJDAiBgNVBAsMG0Rl +cGFydG1lbnQgb2YgQ0FzIE9wZXJhdGlvbjEYMBYGA1UEAwwPVGhlIFNsb3ZhayBD +U0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnOqrVDDLisi6mHDu +v9osplOjzb5EaQcjJfgD2UVZ/7vHqEJtA7wXXItYX4NKHngUl7k3P+RTiAMynEK6 +h9rA2C54kAIAEqhSD/rFzsJ70ImNO3toP062UAPuD7voHxoxvsltW7Ak2v2V+b9c +zhGB4XmTxgtAwsjXV3kbPh87Ky34bAwaOl3mvMkicktoP+GNXszDNrySqEu0GUNs +qx+y6L0zoqQW66LqmibWICvmf9huNw4oGdbWGYO/AYUYz8WHAWw06m955X032SKe +A+O+aCBnuoPdOKu6JVGck+2FUjcWQRxIUKrcWsbIYMKKWQ1z1jOf+YGNKo/QFIzU +/BZ0lZEhlEpa6mQmLKYrWasAK8c6g/lm2Ex1GpfGwHXbWMQeE6qIgBxrWZni1tiT +a8lOq2B7uoDjli8/gTm+R8+JPjxB+sJvYpYiHNVD0FSwhsM7FEm6CPxTDuECWNJk +kJlDG/K6yh39rcymhEhSMbss84ybMYHk1nHFjbMjOd6ECvrxvh6lk0vHlhlh5lww +tQaBAv+afv8PxEwoXyptQKOR/eWdjL8CPEqIBLbyr2XwhBXQGWiHga9Y3bL4QG7h +0Rr7o29KqzJL2nm7GdUoq3bxvwLHZar5KA+yBzmcvNNtoLAjbLmcLviJkMtUhGWg +fjrMN9wK3y8GCktGm7lkSMkMhQ8CAwEAAaNYMFYwEgYDVR0TAQH/BAgwBgEB/wIB +ADARBgNVHSAECjAIMAYGBFUdIAAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTD +vh5ZLmugJr88LBxprxrQdpfu2TANBgkqhkiG9w0BAQsFAAOCAgEANPqpiCnzFE1q +KYHlsOWIKvn7cSIsWXb8IQ0P4hleEe4CLuI7WkDwfHangkDZqHrsn/4dz+qipCf2 +aKRDQ6ysvB96YJmM48k101K3tPw2/iExC1S/CF73yyDf2YNVgl377zCFMBRLRiuT +dzkN+4ISHj2QIo4uaZErgkXGok2EjFCtVboOthvmqScIoM81BTxVQwu6FrTh3e58 +dWP7sVHFtb3OglLO702IXczXUyPwGg+jWqExHkScW8PQo/E4jBbyNhpVbrQATIWK +RjWuKrBFO8208HjR//Lwn4rqwAEhRdW1U7O3t9ZDQ1vExyRWbW9Og5GRHCatR3ez +Ma5kgxCHfI9CZbvX5WCzrDF3xs5GUdL6zw7fo9DhGjweCw37887OlfVJL5vWOg/N +meEDq0khG489tGGEY/AG86ANFSejcSgqeag9v7DFZnDJdcrQ5Eqenx9uGi/ruC5M +uGTgau6WPUgRenX38GRp/NoFc1WPZIk+0721d9GVAOApvk8crxmdwNKJCWoXeleS +k7bqbeYTeUZ27HJkdLJ4ZwrAh8gtJF8+e6fPQTWp3+81JgGRuk6Cio4Fz75pDeD4 +EGLJQSbZ9LVslcs5j3L4qKvZLBoqk68+UNaN2ZGE9gMBLI2Dhh0aqJXgF5VnPclb +dN+fKfDxppI+xi8wVsmoWKrQgYmtKRA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF+DCCA+CgAwIBAgIESRfV2jANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC +VFcxGjAYBgNVBAoMEVRhaXdhbiBHb3Zlcm5tZW50MSQwIgYDVQQLDBtNaW5pc3Ry +eSBvZiBGb3JlaWduIEFmZmFpcnMxIzAhBgNVBAsMGkJ1cmVhdSBvZiBDb25zdWxh +ciBBZmZhaXJzMQ0wCwYDVQQDDARDU0NBMB4XDTA4MTExMDA2MDQxMFoXDTIyMDQx +MDA2MzQxMFowgYMxCzAJBgNVBAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJu +bWVudDEkMCIGA1UECwwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYD +VQQLDBpCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAONG/75EAyWXYH2013nfo5qJ +yQiAnZ/ydB0GnNRHtBJHWqckxiMzQT/k3968+Nd4FCgy+M2NLH3ChSPPdx5OSMtK +puAEEenwWFZgzs8rDVP/8t4AJSl2dmhj6qjsnB0/uqLikQzFLFScnWlso0QL/rh5 +sbWE42FSE9mDbyKpBFWlwkvS/Vwqxhr09hEk2vYqp1SvWpjwWZ5rv7KMAriWasoJ +aZPauw3RxFWgmQSrfaHksXykzlvCG1AcF5KCRHdNXw+AWzyiGV48yxIU+7xGA+We +aEOpWNj/phuE4VwKXCYcWvY6Jx5Zx5snHFapVhd8Y+nfioyHcvBzV1PT2TAy1KyL +YVjhK8J1EsliTitx2vCkyZziO5wh6jFVZq3TIdRxNaRkQvlNS8i3Rj5js8WUc3Wf +RplgoBAuoNd7wp6rV+c3UpNOMiQMO6cjjIlqgagU0307+rRh89vc+os+XCVBhyHj +VI4/uCml15UCFYkZ+kg5FyrIElAh+xXtB4EnEU/eOLXe2xfbKDxLNL+FMMV2i9o6 +f9NazaOFtgm+5ar//UKHrSDYJS+mi4PvJaKx8M0Kq2JAaiqnSGRw0mTpKMvFUDAm +4KEtKRl/WokhrPpXRDmC9lyrtWeesZXDvfiJbeJECG2geRT6jZMD5OloFBA2khEG +TQBShK/nZV1LG4b60cJPAgMBAAGjcjBwMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYD +VR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMDgxMTEwMDYwNDEwWoEPMjAxMjA1 +MDYyMzM0MTBaMB0GA1UdDgQWBBR45ANFAdD+k0Mflc9tLEF+loH1BDANBgkqhkiG +9w0BAQsFAAOCAgEAkkQboesrfUxlUqrjNYUPiZXffhF69wuTonEoVVV2yeKd8dqL +806faWS4mp5o7MLIs8Yg4ifMYlkrHlDFTCJ98TXilW7H1LFfLehIZxf2Ii8ewED+ +9l5G/Tc+3Oo7RGSTZqSEgciCwWe4BWMSUtpIRG5G9jv0eJ2Q45tHCp5yN/xXBHZj +sJxjfmzeMtGb7lLHXp5YJVNM/06Tt2tn+pSFVb/H+K9aDrtntOimyUdG9hwQ0Zpa +9IMV8/MwMAUcPaDmKXQ8tQRV5zoeKucTH1hPoBbP8kLo034SUa0g64hVFlWhgIXn +W+EcB3pnomnyCs5oPtbbHHujx8vNahXkNb6NPbabiGO9rJORgC7UFQgW648fFAXt +vQlfvVw/17/qbFxZUi74ipjRJVEmUPWBcTLdcSCdqkodvIaf3flB5mE09fSauDpn +z+EhvyCkxVlic0crWMmbcD1/XNf0pMUhaK3Nc6mwOzIPVkK5/6ENKhIaVdPAVuuu +k1+uFZNbHGsXXw8rRL1l8JgatXAS60qao0UMFlgYoR2TI2vlgvLfiV5cQvxZBnAD +75mMEkSdOQFCGTZ9VP2gOBwsw6O/elwCzDL4GU9stl2QWV8VEi4I8auj76gqTfSb +j7T2Y+htIZba0uxDDi8rOf+ZRJTaEFCrtF2RgWF6ZLvKTIAYupbpttnDcMQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +j/sfUhyHHc9GFJPteLrV +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIIQ05EU0NBAAIwDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xMDExMTAxNjAwMDBaFw0yNjAzMTAxNjAwMDBaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG +Giy88T1JWTgSlGoo8pUgp5HAeILokDmu7QGz3ZKMK+eUK95dAXjQw51WbFZtnCiH +SRkkV/svnlQKDwxBUV+czktfczWIuFTOZlrSn0P4QgXu+v7nxrxHEQTG7K7FO/Fm +wBat31qfKSWYAZeWl2U6MBHfM0/hEFIafM7+8+Pg74u5QMrYG8OOMcJ7ByI3zhyt +8BwBvLOdG3YWy4OQbY2jEJB9gJt9Gw/XhR9p6nlhlyChF8fRnJ76BuwJdkanHlpB +7IY2mXJm+e3ZfwDw0BWhBHhCXiv0f8incalkqZCXM6uk81FXIE/Gco2PDYj6phTJ +ETK8oth7xxXZBHO+p/TJifLSy32+gi3rX40Qt8WL1s0UpWykPXyQgY1ea8Xuiilm +cgVSNXs7P2PtZUA6+k3smuHUnKBubzK8TXrzSU1eo+JDEpZTqMvrlvVp0LDrVgmG +TtzuJpy0J8T4lP58IRmsEAKKlVFpaBH35c4EyqutkAV+yMtlQ2/VVmmKZi2OuLQR +LyCoTTaazRiF0IrcGF1j1KVbLrS565Z86i8eENiA/XOgqo5qn2RpyEelQyNfhvOh +OVh1PT7rJNt0hvOicK5VADHTPDOydB/heqXb57CXNypjDhQlGlZCgtuiOS1RJS6U +KuRzx2Tb6A+N/ukzP+iGE6g9hQSn3uXlXqCcMgMkTQIDAQABo0UwQzASBgNVHRMB +Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQUGx+qWRWI1LVS +C6jnv37GT51tGb4wDQYJKoZIhvcNAQEFBQADggIBAFzh+ocgCrIlZGFpgnApf+rl +6vRB7oYfNk6f0o54MqfqI6fwRzpDlnO1nUvsct2xBcAsll5LJC3eD3w0YJftBWyb +DrnjY77VmTWCO6mMfcEGQaVk9HnwG74E27xpJvvmnIzcmZpzjK3H7JSy2heXdPkq +VHAezGUaG1YZpaJkiqeyQ7bW3085cleZRkX1gT8kXe01qDu1QcmhUpZEmvbHrN4N +hONSv0XvwUj/8HJZhGWaAf7xNTNk9dFA+mVS3PvP7pKO6++ozD2cbq/4ZRyK2O7P +Tfebo7Wdwobzz11f7Fru0x6YkK8sYtIbLlxGBuoGfstYqDLCPqrsjZdvpKECabPt +I8qGlT2gaDTN0lUr+Eye9EXRXOdIcLXagJ7ablSIYdxEyUyLE7bEcHVLYfmHqjKA +tgT5k0BiY2Ji7sNt2xx3S2ziSYso71sZ71B6kV18iRrSte+B22mfldGv9m77HXU1 +17jy7VCL6bXKRc7nO6Zz9VvbdAFeKWNOogQvWFC5DX8vpi4kfbKU9Th44wXDevTk +xDccUl27kX0m/WWHgEDn/JMqAs4IKE968pbEOtIdGE04JIf02za0PslDdMVRk20y +cBJeAhp6Bp3oXSWRXAnHEgjIdEe4J9DuwTj6FYtGeeLiRfpJ8liKKx6V4nOV6kLc +atefeWIFMKQq2b0Ft80n +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIIIrVHu4YWQtIwDQYJKoZIhvcNAQEFBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDQxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE2MDEyNjEwNDc1 +NFoXDTI0MDcyMjEwNTc1NFowgYgxJTAjBgNVBAMMHEVDTiBEb2N1bWVudG9zIGRl +IFZpYWdlbSAwMDQxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMTMwMQYD +VQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMx +CzAJBgNVBAYTAlBUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxHE8 +0xeI0f0Bo5MBGoboE1teBX4KlQxD4cZg5N4j4SNduwxkn5w21xGRiYol5LNbh09V +d8QsJpmcBzm9yiCzjOxGIxuz7WjN626BJxiKVXrQdr2Mo4JuhPlEk+Oi2QvwhMgn +9q+7KxcnHnLmwcbDNRs8XPkSSa/4+W2Ba5swNGbDPPEU7nEpdAWrzBKP9Zhlf1IL +QpP+baz98Ah9kUhyc08Rej8GrnYwKBC3axXmf5lym1VYsjxaVupzmYuc62C+vIV3 +rYoGoyAHm0+MQps1BThU3Zk7LLaAmEUfAjJ7oyJbq+9AIJmKtwC6IixjMmUX0Jqr +hY5NXn6MfVo2jYkRQix0xFIcGbU9wJ73K4LBe4nSuWOlOphrmDnCiREHvjQRTx7C +19sKnd2tH7rJtI8iRYVL38bRS610sKnE169OekHfOlmu8petq6zpfzT9bkjQRDcO +P4Rg1fDieLaD0S9fklHCna99QjsDoewPuLrM+17eOhHirDpGKQWO1OOoiS24UAXf +5S7JlvsdbFHOoYYPgjyWRfaDZ3jWlpCdAJkow7DvufmXBkyecwe+fAX4EFEl62p8 +zEMal9CZ+yNjBwBLSyV4/5yXlVoSFYBd3ePcCbxLv+XnupgJ92quXxNizEHHCIVi +y5YsF5dw7DOtlro75dNLMtFD1m10Lhwt8kg70WcCAwEAAaN/MH0wEgYDVR0TAQH/ +BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFGw/YYO7Ma0ZVHTq +VgavS/Fava5BMB8GA1UdIwQYMBaAFGw/YYO7Ma0ZVHTqVgavS/Fava5BMBcGA1Ud +IAQQMA4wDAYKYIRsAQEBAwEBATANBgkqhkiG9w0BAQUFAAOCAgEAf0R8aS4ST4u+ +Qj+aFb7Xg3ygXaDJD88gv7A505uMn2wI1kEmWihbmdDhTSOLRKh7yLHRLfz3DYu6 ++SxWbjGoaslIwNKDNSyLFcaPml89TMZWBcO5gvVR4+2lKuz46ylFV+3Gc7aBMrbv +yp4qGKE4X+55iSP2Gg8c29rkmDpd7kOY6AnsdRx5jXQtvxrys2PDwbw8e5FbRoDT +tOXbrhED63wspqa7KR4C6Og47CKktf6s/NWpdg4+wehI1yIW7enD97XfsI7ra4cq +IROD8y+GDfHXQcRmSQ+eEOT9xMSrRfWVgyVM4f5FUDK9RPD0+WFamDuA0M1BkReo +Wyy4JpGwK1Hpk/PVO6VY/Ce/ObHetv/iVRff2DIz3de8sCI0pAGyWp4RV1vq7SDB +bHhQa4LC/2vIkkHLHcHC2DJrFOEEx42d+/kn5yMmOweIB5+ZQQ/GwytwWPq1sCtk +aDPt+cKHZTqU4JK97K5Mim2v9zVuQfJC38I5Jc8RInxUVyBixguKTTpP9HYxNntH +d9wDmRXb+WQdFsi7IOJS3sPmS2HrLAycvYWAnZlNIgN0cCmQGgThCt6aOUo03bom +SnhF+HpjZsUXq4Bei9s1L9uRKgDIGWLEhDOoZF4+VnZ96jcyDU6Eaus23v+h0Fom +wEhBNf0RdvJGRfXO15pjD3okHeCRiOQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGGzCCA8+gAwIBAgIBATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwbjELMAkGA1UEBhMC +SlAxHDAaBgNVBAoME0phcGFuZXNlIEdvdmVybm1lbnQxKDAmBgNVBAsMH1RoZSBN +aW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxFzAVBgNVBAMMDmUtcGFzc3BvcnRD +U0NBMB4XDTA2MDIxNDAyMjI1MloXDTIyMDIxNDAyMjI1MlowbjELMAkGA1UEBhMC +SlAxHDAaBgNVBAoME0phcGFuZXNlIEdvdmVybm1lbnQxKDAmBgNVBAsMH1RoZSBN +aW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxFzAVBgNVBAMMDmUtcGFzc3BvcnRD +U0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAm61nE843Wf3ZHahe +Kd17tsvpzt3cFnGYVy3SPDYiBC2QfoJrtOIcfw3O6sPXsK7gWR5KoGnAXfZw3RVo +JPJHgZtjjzNib5b2JZmuoU+d/0wvUrmqVC2w3Mp6QGvG81/0SgX29fkhpmhxU630 +pzZmC/KeEZ4im3sMJ2saQxWNXZd91nON7HgnoHBetHNsV20EKYKGNrtoBPTkQpdG +jhdHI34KMz9xlGuiWJZqB0JZjjzGvsYPdbAYK1EdvEGbh1nf7QIZBgL71SGHYycw +GXNHNFZ83RBl/yltUUWfW7LeW4hr/iw5YsR1+a1aS4xKkOjPX5sKWypiK7cfJ4OF +2pUwgnZwwT1yjjOQpZKn+CvBkBZvQ1w1Th9p8TjXLr/8HH0NBo0zlOCdjTFODXJa +RUeQrE6lX9zYLhsaAjfgcPjogOIqFK0dBZwhxYC0di9/xJoB29CzImayTD4JtqR3 +yFMXaxvfQFapuJXsg0iV4kx//LaHX9hgdg0aZ8tdee352V5ALmUGkuLar4xoN/ai +WBg6nQzT9tlMVRv9nR6gbAOly4u+TmoUSatiuTy30n2HbDVKc2gk2irK8uMBiTGb +wgQb8WNpLxylPz4CflQA8RwG8yJNQ5qldg9L/bsqDgmyecVjYpgW/N1cAtdb0Irx +6yFO0l7wrRVx1pThq0uTLfBC4yMCAwEAAaNcMFowHQYDVR0OBBYEFGJbhox42j4x +leg5Iv51LUB1zqCQMA4GA1UdDwEB/wQEAwIBBjAYBgNVHSAEETAPMA0GCyqDCIaP +fgYFAQEBMA8GA1UdEwEB/wQFMAMBAf8wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAR +6zyDF4lstYNehyCCFEUqRw2UyVTZTVAql1sVv5MmvbDonNx8hUBCQvxeTVqQYY3s +UcXSWuJkd7TSM7RBeIwYggxruHBiQ+WU8GZxeCEPKCrxKyxI0CprDa/rN1wWO5bJ +wfBihF7JkehR1rFjeG/GoVeguJXjCxGKwtj8mJdsH6aQ6tv+YPqqaACldxobBmkT +Vmqx4BailVEQx0bzZWctXblN1FxLYclPGXfellntWuWEV8jzd6Jz8wan3SJ+mSKC +loIaRUD4belfVCLSi8RSwv70O2D5ZOfGKC/mPZY1o0KVomArxtKwYFpRZZBzWHm1 +QaudneaHIOMM7Sr65bcwN1TZ5ZQk46XBa4QwLCBIZECih0wr6NeUI9sDzs89MYMz +yBij853vWpaIp6mEoYJe2H87XUkbzmUD/gDWbhpOKiNPAqWtn6pqvc2/29DIBirU +ZN8Z4q/TKs96UumHRsp5e7pqE5UXqT1SDHg90phLD2qyHQhEFdfZAvOB1Y0zKYDV +7ZgBmxWyS/nvAsEj0nQQZgoozexZsnf7hte1sXAKPIt4Tap/52VW+N+G6HZY1YIa +gk1o44SWnI9Trge3bpE5Re0i+43RK8ELZ2PsBHWr3CjzRxKAPacNxf5XP8O47D+0 +bPfKJZ5EyZcHkouGtpvWuqLw18q98y1pd1u4LnmKzQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGKzCCBBOgAwIBAgIIf4iuQ/iXunUwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNV +BAYTAlBUMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vl +c2UgUmVwdWJsaWMxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMSUwIwYD +VQQDDBxFQ04gRG9jdW1lbnRvcyBkZSBWaWFnZW0gMDA1MB4XDTE2MDMyMjExMjI1 +NVoXDTI0MDgyMjExMjI1NVowgYgxCzAJBgNVBAYTAlBUMTMwMQYDVQQKDCpSZXB1 +YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxHTAbBgNVBAsM +FElDQU8gTVJURCBQS0kgLSBDU0NBMSUwIwYDVQQDDBxFQ04gRG9jdW1lbnRvcyBk +ZSBWaWFnZW0gMDA1MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsHm5 +kipJgL8PHt8ss/afwlaJHpsAkx/T+Jo8ZJhBgARsQWDy/Y4noV/VuTlKCrc16jiw +nodp/wXwsoH+rEzmczYmk+ro/8aMoXNumaInks3c6lqywyULY+ILcOGWNxhBpfLa +k/zEOO0Vks5QYjBn2mfNVpFltSD7JcR5McViyFYvxLNvMKOwXnPddG7od/rcrelb +MFj2FFUDg7vKP/6CkWmvuB5YGekSw+zWLp8p0Pgmr2tf64yb5UMt/kyn+t1wDnnR +rtRDU5/BvKDQQb0OswpsoJupDkSHXxjtnXiBX/2pUBDhoXhtbmCg3Jnkm1c+Lglf +/cum7FCkxueTa1rmOwBgCvxyAv6mMZoAzTYqzBGceqmmdmL/VfdvyYvmExQ6l/y3 +RmNXZzOUv2abeCcBUWvSwJTsfWNqfZYPe7ljC5F+MZV5npQpK1Az6qsKWVnCOXmH +5fBW+ESISARRxzueZKaq10mWXnNPIRjLSgI5/otclkmjQTJeq3aJYVwQ+2S5FD89 +05RN/EYN/vYKQr2CdulU9V6/1fvl85Ch51EoZ1AVQiFx+5iJN7Bqh9Zki2W2yj3t +6m2FuGApZ91ytbO9GA39IQDg7Jq2OBatJGLdi5Yf4j2xsX8hQ9xO2bdmndjTBlFa +X29pOjWZHY1utSS9HeIfmaOIXPS3U3aXuTkG+ikCAwEAAaOBljCBkzAdBgNVHQ4E +FgQUI/UX8ONPajhfCHLeObI2tV5M6/AwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNV +HSMEGDAWgBQj9Rfw409qOF8Ict45sja1Xkzr8DAtBgNVHR8EJjAkMCKgIKAehhxo +dHRwOi8vd3d3LnBlcC5wdC9lY24wMDUuY3JsMA4GA1UdDwEB/wQEAwIBBjANBgkq +hkiG9w0BAQsFAAOCAgEAG/kFHhzKl1Sq8+b9FL96fcnFl1CY/7+DOUcLiq+ZvCZ6 +v83cWp6zp7fNU9FU8iU5oRq9cO20IjJijXq2rw/uMh7jfdv+xmA7rCQbIBJAaFEo +HTQ5MZjIV+QoP8U+sB8Y7ryzud57QZ21yUljpbaTpSDVC1xKIp6LfjxIYZ0sBblI +lVfUJ1MIl3AJu+ej/rzHWTVYrtNJbkJEak/QQ3Znkh6KLA0R4EVzhSSzWxbBWsNt +mxyd+dKXwxaldD/gTDLGzMQTW5w/vBcoViW556frNlfBv3SG+kqVuwA+AmEGqrMc +Ki5l4V0n++09vFhuG3ZlUG4SYoZMpl7CYu86oF9UkjueO3zMK9ZsADI43ktAYDAW +Th11V5ncMQuY2WNdlh8Nn39r7O8sSBcW6FEaGTkHYgeQPX4VjoSx9j0AIxRYiJlc +WfT3aTbwNV5/aijU6UqslDwpCjnFHAeAODg3lL0PPzwOyVU1TovSsHOyY1wVyFFz +2pkhPsdso5MZzTwtGN7C6z/bIJesI3+R10onZyuA8N2JkQxpxeMl6EpBgUGcNXFC +NEU+ofAYrhJf3TgDk+VT/1bmWvaLn1mWNN/r+bGNhTaFttbvYR5Z/z7CzB+pejMi +IZkJy6DfGY/sWHih+BckYPm98V0ceG/GGILIsDk3PtP199OqclGzSdckFOPoHDE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLjCCA+agAwIBAgIBCzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzE7MDkGA1UEAxMyQ2hp +bmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5nIENlcnRpZmljYXRlIChNYWNhbykx +EjAQBgNVBAoTCU1hY2FvIFNBUjEnMCUGA1UECxMeSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MQswCQYDVQQGEwJDTjAeFw0wOTAxMTIxNjAwMDFaFw0yOTAx +MTIxNjAwMDFaMIGHMTswOQYDVQQDEzJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTESMBAGA1UEChMJTWFjYW8gU0FSMScw +JQYDVQQLEx5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxCzAJBgNVBAYT +AkNOMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAk8PyHxaVxnxks19d +k3M7KNsYqdo3kfsWjQzca+nNYPJQZ27dFCiv/zS4kP1V8RB4PHDFwSuPxbHq8hzj +nmkGdhwKTthvwaJ/14VLo4dilfhkdjFr6KaEc4JfTot31cIO0Xpq2Q2ebODcogbn +PawBfPP1M37SFBu3ov7HystedOR29Ko0qWUHst/z/8vIS6TWOq7hUlDaMTJOWGWW +F5Srttokn5gQXn+0wU64Uv6LvLyx41QHm979vqbkXIwnumzVETwDwTLeh7j7JoVV +XWe9aVb0exvvwzR3ZmseMG7xO9VfQ6WEMdMFTuMI/hrt+mxZ6qkNUTinLrKp6Fv7 +HsSLh4IwjJGX+vR+qb0t4bAJbT9Kh5zl0XLUuVRx7be8sDxLiGgSu6AgwUE5fKdK +o2/4BHRA4Er6YcmrQmNhhZ4trdxdPZm/FRyTOdy+fMNI4ftbu87PITEIObS5eQ2H +2SMuN7VZulLgOae6iJZDelZrh3Ci7N0HfXRru1QKIcV+z5KWc0bNY83IiB/ilUeA +EyRftj2qtfhL9YcviG7hr32mRcGpXoxktiQtl0AqhldWmOeTkx+uqrSze4PaBMLP +9i9KLk2GgRyjQmm8EQEaDCaEKTNwBaB9pDmr1jBr903iQUG8MVcGn8R+v5UXHzt/ +iYxjXtY1BKQF3ozz44RgjsK1dW0CAQOjRTBDMB0GA1UdDgQWBBTKh9g4YhxVW2p/ +HR45LL5jtKwnBjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADA9 +BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglg +hkgBZQMEAgGiAwIBIAOCAgEAa72EzcqQGVLnIPbwhqn6g7TbGwPW4XaUkfEHiGWt +njthE51/u0Q/rffR8ua49Ba4DeOo3vGVAJAyZnGQpYPrWs9P6HA7W+YfbO4NZ1px +PCLXHSs84f3czUNHnsIfW0UK5zNVX9/9/J0eG9Q+jYrkVkprFmsTTdCblW3PTYb7 +Ecq+p0euEMcqguSs5P9r9pVJQLhXnua02oUGgwNHX2jbPhmGqcMw2tiCk/2VJMQ6 +ypzPwjrdpDIiS6ThpUlKtH09gZ16RrAVBaio2b7ZENhjW60m7I1OlPSyZ4kgdEMU +h2zJCuTuBjdzSk+cEl/xYCwj5OxQm1yMLS77ZVIhdTdz/JGP+pUNRN0SR5tVXWsm +GYyzqZlSLk8LTO7alBnFonwGCp6cOneyJWmAbo5fNZbhqVGSgX4ToSFrGM26bHlp +lbfWmriNgX6PYUq5toNqBQrb1dW7Kk3JIJ8ItUYjiV5JAB4/G3yJ8ejyQ5UkaBIM +Wj4ml0U4sot5SGViTzTnMnTnhn705Nr5eOgcnMi+3Ps7MXszDgKvxub4la3l09+4 +BM3o7hv2Wn1DUa0bFXkYYnPYZyX3eOmNnTX6CqkHa/0XkzxX2DeHyd4OuK7H/yEY +uw7E9GREiLer7BxPMfTSGcqln8T541tRHDowwF5C69FuKFn+jdVYu8uBsstFNNt/ +F3A= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGNDCCBGigAwIBAgICAc0wQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFcxCzAJBgNVBAYT +AkNaMRcwFQYDVQQKDA5DemVjaCBSZXB1YmxpYzEdMBsGA1UECwwUTWluaXN0cnkg +b2YgSW50ZXJpb3IxEDAOBgNVBAMMB0NTQ0FfQ1owHhcNMTYwMzI0MDc0OTEwWhcN +MzEwNjI0MDc0OTEwWjBXMQswCQYDVQQGEwJDWjEXMBUGA1UECgwOQ3plY2ggUmVw +dWJsaWMxHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRAwDgYDVQQDDAdD +U0NBX0NaMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAseIKY10P+zGf +DgoU0MbZ3Ux3d8wNN7KRRhBJh2xYnIgqDCTO00Gd8ZffEeT1gq0v8bO0jQYV7THM ++zFgC2WsuUq6NAzc6ATLoG3qwd/IOaOI+lQqVfu25ua1WdMJOCK1vk8+MIYBoHQ6 +3rdUEULehQxL1lEqMUc33g97sswr0CeCS+05+nvGxyUKSkIDV37nckO9Vnj3Pkd/ +avMHWb0mSSvJ70dnmH3FmKA9KfU8AFKc9/4R+wnM94YuE9zC5e2J0/2cc8LYcC3L +iRKXeBRx8ZR60Kl2eTtDF/o5lCRUcIlyiQfd/rIZ8PeCIFeQeEyMIy3w1OmMBrTm +pySn7a5Hh/X4ZOzfRM7Zy/FgHG2JInqFhO540yA09apll0EQ31UhPoQInTIi/rw1 +Q3y9dFdoB4PqWireG1SWyvQqvAZfxTqiLSH46eMHH/g6BfSA4uogXgBKuGk8UilE +Wiozq/+dcrOvHSUvhDU+usaUn5w6RQjbRJlVw45lczcd9t5wmKBZAgMBAAGjggGg +MIIBnDAdBgNVHQ4EFgQUphOLMZIFRA6Q3caO9sRL3041fVAwDgYDVR0PAQH/BAQD +AgEGMBoGA1UdIAQTMBEwDwYNKoFLtxgBAQEBiciyazASBgNVHRMBAf8ECDAGAQH/ +AgEAMFgGA1UdEQRRME+BDG5pbXNAbXZjci5jeoYtaHR0cDovL3d3dy5tdmNyLmN6 +L2NlcnRpZmlrYXR5LWNzY2EtY3ZjYS5hc3B4pBAwDjEMMAoGA1UEBwwDQ1pFMFgG +A1UdEgRRME+BDG5pbXNAbXZjci5jeoYtaHR0cDovL3d3dy5tdmNyLmN6L2NlcnRp +ZmlrYXR5LWNzY2EtY3ZjYS5hc3B4pBAwDjEMMAoGA1UEBwwDQ1pFMFoGA1UdHwRT +MFEwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ1pF +LmNybDAdoBugGYYXaHR0cDovL212Y3IuY3ovY3NjYS1jcmwwKwYDVR0QBCQwIoAP +MjAxNjAzMjQwNzQ5MTBagQ8yMDIxMDMyNDIzNTk1OVowQQYJKoZIhvcNAQEKMDSg +DzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKID +AgEgA4IBgQBiN33okPFHvSgFrLJ/XuW2Yd2I/Z9Fsxf6udY9BovENWL+8iK20D1Q +4xW/uKNES8soOVLxKhRDJXu/248vbcZG6hBKNJU37ozYEVvAFvPNKF/Rbab1GnEq +zirv6ah9oWQUmObm22lq0XWv0zLcH96JBb8i+AfAwpq52tfFDVihXdSMxKVVtM5F +3aGdIY41DB+Gua4lJVf3kMemRiMXLxVVxocFAqqabPPwt01zEQqV0v0GjZshbYJz +VUokiXvi0hdjvYK5XUw3EI0Xv0mUJG1CTWaNz/dISD9MkvbUXPRYEgy3hAEcRZpD +JZTKMqMx749WAC8wI7zo/l0wKzkyHnO4OJ5IJgyHafLFDDpwsPTYvFnaBk+OpQbx ++4/ahNmj0thMTFmJxNqwWQOfwFv6RB75MjmVXtPxEeOeOYPRuffGO7LcM4JPRI8E +mx69S/pKMzdSpRQ+5qyLmnybLVmHwCHhM+RN3RL5jOHmg14ouEgB6cQzXdOefGyo +PZaZdmnd2YM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +cdqyD5Z1u81Al3rIsg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGUTCCBDmgAwIBAgIQOo4uZxw32QDx90tZt21kYTANBgkqhkiG9w0BAQsFADCB +mDExMC8GA1UEAxMoTm9yd2VnaWFuIFBhc3Nwb3J0IENlcnRpZmljYXRlIEF1dGhv +cml0eTE3MDUGA1UECxMuTmF0aW9uYWwgUG9saWNlIENvbXB1dGluZyBhbmQgTWF0 +ZXJpYWwgU2VydmljZTEdMBsGA1UEChMUVGhlIE5vcndlZ2lhbiBQb2xpY2UxCzAJ +BgNVBAYTAk5PMB4XDTA1MDkyNjEwMDgxOFoXDTE5MDMyNzEwMDgxOFowgZgxMTAv +BgNVBAMTKE5vcndlZ2lhbiBQYXNzcG9ydCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkx +NzA1BgNVBAsTLk5hdGlvbmFsIFBvbGljZSBDb21wdXRpbmcgYW5kIE1hdGVyaWFs +IFNlcnZpY2UxHTAbBgNVBAoTFFRoZSBOb3J3ZWdpYW4gUG9saWNlMQswCQYDVQQG +EwJOTzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALL4+dBFS3mBHYN9 +eUPo/eOtx/MsuxAvruN63kaXRoEFDBudR1Jp/c9NcUF3Wl+wK73OH3phfmT3cu9P +kdCJUfu1fNAR3sSaHSZMkWnF4Imrf0M+3olYSz8n7a1Q+iUZMfyDWze5TJGU6PRX +WuApStwW/LJrhS04yBsiqyRBmjudKUjmYUJjAnwIMx79/PRIa4AFmtvuIEMJPc+9 +9Gh3dTGXOpZ1OLK2VBH3boillPuXAOOmEy7jcguG5VDE5+r655qTXLbQNkymaNn1 +dsjX2q2CXvEt7d6LamaSjcmYlZKH3THhXZrFTwc0u2qQXvYdu8uckFc6fRDsXb8G +ScVMQ3yXUP3LkPYTq0JPUxBSnA+jQ3pu1Hjg+OdF++Rtd+IIts5Seh2lCNeb2vHF +53rzJitcbw/3qCOQUkd82VunGY8fGmnC0r8LxWkB0Gm3B5105+OnJ2XxcEpdoeD8 +Kc3XXXrjPkW6va11K3x6poWCAt9btWLvj3OIeUukrjGkvq5zT2WsOB+yGItli3+8 +dHDOSW22YVZV84vGR3UaS3T9E+K06fk7yy/g5+KkWmy9AcDFASjWS8N1eErKCV2Y +BR3RmXBSZhKrFs8z1Cspsfl4ixVSAEUcp5m2mL8i6oUYeVSMjdd/u+d4YH/2OBWq +ufEpooY8DRC53iZybCDJghwk2xE5AgMBAAGjgZQwgZEwKwYDVR0QBCQwIoAPMjAw +NTA5MjYwNzQ3MjRagQ8yMDE5MDMyNzA3NDcyNFowEgYDVR0TAQH/BAgwBgEB/wIB +ADAOBgNVHQ8BAf8EBAMCAQYwHwYDVR0jBBgwFoAU6bZdiZLBQtHSvWxAdYL6hEX0 +aAEwHQYDVR0OBBYEFOm2XYmSwULR0r1sQHWC+oRF9GgBMA0GCSqGSIb3DQEBCwUA +A4ICAQAS8pMTYJ/v8aR/k2hStshlMkYroh8ieVYatganuQt7lYnaHUvKGcRpQIxL +9jVYNqZU2zrMJokg4whU5bGyOouDL3TRP7h7EH3hgmINrY6SMCeCIrVIWMXTo0mP +LZ9Zrn9C6az2YnS8Bzff3vhmgNy0yb2ejHhP8dgcZAoubqbXnbvcHbyluMcjT+Mj +PNtnYkGusBVOfZye4OYXU1EEtT1g9tCMPx6OJSZtsCCTzs3gyStQ1pd8CoHns1Ai +ogEy6xNzZgjBYP56ZGOqomxO4hXyYzg3TF5EDut55076thZRUttCHlJZUF9RpHbe +ATm0K8SUjtfpjxjV/Az8las3EHxnuc3sX9lmObN5Sd22PKoEBCF8gMscxGULgoHZ +AiZeP+YfCb0PU3Gx+06JXXZC890WgiTJwlJ6AiGNGO6wmS1E/iU9cdS1y8RidZII +jTSvdGjW+4a/LR2fQ/+e4C+mhMcPoQ599q4Gs5lHja8tGitf+bZgaH9y5wBJscdi +ItGgoit77iOM/mu4fomqw0MB6UhS36Y+/2NywaX2en47F+XFbVkbSXD/rF9Fo3j2 +ROgYfDCJwjYX1SmOlGM9n+V70HWzgQa5vnrgYk/n+ze9J/Ie38ZF8FILthKpVrvV +r3cmW9H5IJtdRAkHpEQpkE40qjVFvbWNgcXGDvP+ra11Qzwmtg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +CL5HB+/4etA4pMWX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGajCCBFKgAwIBAgIRAKeW4H5Dbz2QRZLQBEF9+8cwDQYJKoZIhvcNAQELBQAw +gaQxCjAIBgNVBAUTATIxMTAvBgNVBAMTKE5vcndlZ2lhbiBQYXNzcG9ydCBDZXJ0 +aWZpY2F0ZSBBdXRob3JpdHkxNzA1BgNVBAsTLk5hdGlvbmFsIFBvbGljZSBDb21w +dXRpbmcgYW5kIE1hdGVyaWFsIFNlcnZpY2UxHTAbBgNVBAoTFFRoZSBOb3J3ZWdp +YW4gUG9saWNlMQswCQYDVQQGEwJOTzAeFw0wODA0MDgxMTEyMDRaFw0yMjEwMDcx +MTEyMDRaMIGkMQowCAYDVQQFEwEyMTEwLwYDVQQDEyhOb3J3ZWdpYW4gUGFzc3Bv +cnQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MTcwNQYDVQQLEy5OYXRpb25hbCBQb2xp +Y2UgQ29tcHV0aW5nIGFuZCBNYXRlcmlhbCBTZXJ2aWNlMR0wGwYDVQQKExRUaGUg +Tm9yd2VnaWFuIFBvbGljZTELMAkGA1UEBhMCTk8wggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDWwZCFKuPamJEnOa8cn9sPe4LWuhy9Ns5+dAWp0Z1+lbGl +pjE9Y0aYaTQ4dBDW5wcEa0hz60Mt7O2V1Kg8KGekQhJDux5ztpSLlTxL/cdSVLss +cIH55qbst2l1dpLNyijRJP6jUTY/weBECZMdWdZ4glkQ5BmcbYbwIeWllEUtz3Xj +q0gpxXsr1F2aVivsx9hC4FEe4APNaFlLF5tx2coHX21y7VNRJx8fS6iUKFteS/Es +rXsknipyfhncHNinhie6fWifmeBwRszomqvDIfadSZZyYdwPQilIyul2ZndQ4jlV +9TBFd+dYVFAPOwXwDj1A+SRzw6gqBiDLdEW0+Nv4bvXAjrP52+/HYlj2W0+3EPub +MoYNFsYobBR1Fackhx0XLDkB3YRZh3xy7hzsTjq1w2zWiTuRI01iyEvKekUHttlR +onxwvfAiniTi73LSanANqZulCMqjg5kr8LcYkRGI6M7rsvSHSwH2BfLQiEnEXDdv +9Qb8hUCRS00Cpnm0t9JRTexQ0Bayr/qmoohtcie4Xt+1ae400VT2tp6sDALR0mLt +ODYOrNYWvb5zCTCwsB6mKxI8MujTyvB1oIV+zzYU0A+U1l2b3FGXsrBbM2CzLMXo +8h9HGv93pMpHzwwqU4bNiZKvf+OnytUjIP++xbDrhL971D8OMBDpA2NwZUZxBwID +AQABo4GUMIGRMCsGA1UdEAQkMCKADzIwMDgwOTE3MjIwMDAwWoEPMjAyMjEwMDYy +MjAwMDBaMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB8GA1Ud +IwQYMBaAFAOS8EPY20vpY4zJknJn9KwHzTmPMB0GA1UdDgQWBBQDkvBD2NtL6WOM +yZJyZ/SsB805jzANBgkqhkiG9w0BAQsFAAOCAgEAKKQ94mThYXGzfQPYwZvtPfiJ +MViVC//y1Z3J8W6oRbj2E3LN+/BSYGP9lRgYrvkwvRsVJ0MX6Tkxli+Yyk2O+ELj +U7XdN9KvgtpDFQIfMQ5/CgEy5Ar4PcBo0hA9wIdwvUWkMcmBMhIEHcGt4bKqYcMc +50+T8mFLnUpQvYx84YsIJIyiPYXpxx6UWQF2MWwPjukGGyiyQLQCnWOiQiGFpU1i +3g3vEVkxRTHWlw/VyoGdUgrJoqDeFvUyPymAOqwqC9qFAjR8czF4J7WComaqbSVF +QH4cbmZ4xKEL30fpjbzgNyeZ749NRY5vIMvNo+bl7l6ZnnWEiHU/k05Br0U8kSf7 +q/ahC19KApjpIQI1SLEQ0/+rVrwUi9gqanLA6UHu9KSXXMQuQV4zNCWy/pjnrOtK +CEwjlCtqfV7Mxhb86uGpmHLs8vxyywVeE9EeJhF5lm1mmI+JyYeqKgEEmQLSPBsy +/sB6g+rwgpxhE8qUvCUCyW4TDAsuecy/z1gSHo+frMgo/27N+dKH2K2d3gMjT0Q8 +/mSAzaA6sFqf8fjy+Aqce9/gNZmCxk99/N5S8iGnOGqjPykahc8EbyYaVnRH3JK/ +A7lgNgK+lzuP2DqF+3a2/3Fwf9MvppKe+eyFe4LxylAlCCXWM9Ky5YyRiCIbzt+M +LAQYrKr7QvMCUgTpYgE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGhDCCBGygAwIBAgIIEvJDj5by7BAwDQYJKoZIhvcNAQEFBQAwgYUxIjAgBgNV +BAMMGUl0YWxpYW4gQ291bnRyeSBTaWduZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFs +IEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0YXRlIFBvbGljZTEdMBsGA1UECgwUTWlu +aXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNVBAYTAklUMB4XDTE2MDUxODEzMjE1OVoX +DTMxMDgxMzEzMjE1OVowgYUxIjAgBgNVBAMMGUl0YWxpYW4gQ291bnRyeSBTaWdu +ZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFsIEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0 +YXRlIFBvbGljZTEdMBsGA1UECgwUTWluaXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNV +BAYTAklUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1LeymtfJleSj +QwYQxYPLebKtQrq+6SoYvb0neWm43gDzmAPQgxFveFrJ/k8w5bKsZKZ+OXBLFcNV +oHeGbh0rZkEwaoPcfjE8Mav3hIOViL2urN2mkDJPg/HBE6u3y3KQYyMlApnG5QBS +SWRrSET60eV6KSbqNcWJnob3irNC5J2UsOJeo7lp3HaQksX0IgcNpksjIEro18rM +0AVAGk5YefupqUAssteXz06ATe69WhrqzrBLGNSNeh6GnZJHT/coKd5SA24QMH3p +ktJ5Mb2Ahu/qfTq3A42zRoXV4zW2R6Q/1bYOQpg08WengZ9dcG2QkVrPJy/qvUQp +nW+tzqazqDpVe87b/Lc2kHAM33rL+xADYZzse4SaVcFrqwIMnDwEzTH7/nHdjaZI +In5BIjHk01nuQKPb5JThuHWwFxcJnztNere4ErB6pHXXzNU615pE7luS53XNOiBR +RGGHCPnnzxGzGBOt3iie1MvJE8xywUkx7pLosKUXd168PhkVDQru0rkAm1QNIszD +OGdFIt9sCkj2qiW5R1pZ8doqqrD9k9Xz3JhqkalbUUfuRurVoRdefpC1iSSJ+KD9 +3vLj/+FwRvRSFfXhks3FX0T1x2K5TyCVjJ4/ubEgWQNKh1QHNZzZIBiPuReNmSWk +tQHSkk9UfuQ4X7VkKg7EJUfBjpfFXGkCAwEAAaOB9TCB8jAdBgNVHQ4EFgQUhS33 +pwpRLYMQPfvJ9ijLaxzuVZEwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAW +gBSFLfenClEtgxA9+8n2KMtrHO5VkTBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8v +Y3NjYS1pdGEuaW50ZXJuby5nb3YuaXQvY2VydGlmaWNhdGlDU0NBL0NSTF9DU0NB +LmNybDAOBgNVHQ8BAf8EBAMCAQYwPgYDVR0RBDcwNYETc3BvYy1pdGFAaW50ZXJu +by5pdIYeaHR0cDovL2NzY2EtaXRhLmludGVybm8uZ292Lml0MA0GCSqGSIb3DQEB +BQUAA4ICAQB8lHGKsLvH1Papmd24IyDBLSZS60KsGnseWEfNGrYT6D+bYByQQRNf +f6bniPgocFKBBECJ4Z8MAUPU3hoby6TK8WB5l0Fkam1KvdFpRKCU0JDc6FQgcnTc +4wcQzcOPRv+UPk/YaUbh9R2aDsSTj8m8O+3GuPp0fsX8979PO920QVlB/K4WQNoz +Drt1HCpd2ytTdcD7yN9HwZDc704ZH7PKy6snnzQPq1kRiMx+0T6SZMkt/Uydgv6y +Rs9pef87C8gK5p3Pn7z9y5WcqGZj5HPak97mDfUlUqAVhlm9Mjib8axrarBveiGk +64ohvOLvNtIDuk/knOtwa7Bpu0pJNVc/TyEAgicVNti6+7xu6vmLAruSRNszTjX0 +qU6srvS8Kfhm1EhPkrvvaDwUTUsJ5teSHs6KeKkowiiVRCOrwhmclIppa5/0cGfq +cfNyhg/bolOW6f7qjQfLJSC9Acyifp94DeJF1Njsb7kbVON0UUdRNDoCJYA4pMA3 ++CbfJeAcvEhvL1kKaSExTfsjzbCaAJBeG1IXMwnMtP6j6fZekhyG8fgVmJ6X+IJL +0Jd4EQTZXqpqLiDl9McKnZZX++JI/RxHBYAfF6T5nqP1h8cQ8/iH38p5hboVkntJ +E0WGo9Y0e4BMZ/+CM3w5xPHGkS/Oini9BliZjqsMUf3GxvciHVe93Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGnDCCBISgAwIBAgIEAJujwDANBgkqhkiG9w0BAQsFADBEMQswCQYDVQQGEwJG +STEQMA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQDDAxDU0NB +IEZpbmxhbmQwHhcNMTUxMTExMDkxNjA2WhcNMjYwMjExMDkxNjA2WjBEMQswCQYD +VQQGEwJGSTEQMA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQD +DAxDU0NBIEZpbmxhbmQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC6 +RKja9+xDhQlwd0T8hJdKCp85i4XDQT2ICWFfJ+Z5fsXNs6EcvGjWMGmuc+0GKUlL +l56HGkpkuBB6mWRLV3fmFeqxqoNOvsJ86yuP3y9jrvI+LvZtNmey8zjvw9uXjRgF +IQzo/oHjxe3QBRvlUetAqNoSX5d1qrMecTH6w+yOxEBNC9xYHGHSlzR/AVw5plr8 +J5SfinQDDhxJD09A9okUKSlmB7IsikXXd36XAV0mJCLfLAAFrV/ccpYRYkfF4XZm ++/oROahr5rzS55j7mhvKX9o98/JX1P0GKEUa+og/5JPLpA3FqdNz5GmcSZbWav1D +co41vOJaVVeS7n8Tjhhu0pT63+KUskkoFT9hXsBl6LgbqakL7Z8t8lPDOkGUE3uP +R0RKzHVhsgvWakIh3UczdXPzAibE2rvZudCbLFVUOuHwxEDXKtHHn5iduAtgt59w +b8JGlBi2FL/ftUCPCs6usqmNCqr8P4XI3JdQBD9d0Tull+NXkIhCc2JguW73Dh+4 +zpWX2wyg0+SOautC7ErLbpK+ltBMJ/iJkgow9jwpUp+Atr6hvKsczWn5wDXNVQvQ +/sYYkVA7ytFQ5N109qt21YMWyZfTxj7tNd9UTnW/YP6ZFZtw9+P2GE9wqWDTOPo0 +alXgrpWvjodw/fPhvpTcIyb5NAcxtkUdKvXUx7seRQIDAQABo4IBlDCCAZAwHwYD +VR0jBBgwFoAUweq2GZXUKfiuJmAwQ1PjiksX9dAwHQYDVR0OBBYEFMHqthmV1Cn4 +riZgMENT44pLF/XQMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE1MTEx +MTA5MTYwNlqBDzIwMjAxMTExMDkxNjA2WjAXBgNVHSAEEDAOMAwGCCqBdoQFAgoF +MAAwVAYDVR0SBE0wS6QQMA4xDDAKBgNVBAcMA0ZJToEYQ1NDQS5GaW5sYW5kQGlu +dGVybWluLmZphh1odHRwOi8vd3d3LnBvbGlpc2kuZmkvZW4vY3NjYTBUBgNVHREE +TTBLpBAwDjEMMAoGA1UEBwwDRklOgRhDU0NBLkZpbmxhbmRAaW50ZXJtaW4uZmmG +HWh0dHA6Ly93d3cucG9saWlzaS5maS9lbi9jc2NhMBIGA1UdEwEB/wQIMAYBAf8C +AQAwOAYDVR0fBDEwLzAtoCugKYYnaHR0cDovL3Byb3h5LmZpbmVpZC5maS9jcmwv +Y3NjYWZpbmMuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA+hY8TH4dL1exY+u8niEZU +dkEDGwtcdhSxBRaWx1szqLO0dvWg1SDY9zY0hgNYZ/DB1ZortetlIPDJqR53EUun +AFFPNXlyW5wvWttiKL+m6vd7NfWE7Oa+NJ9RKKS2CqTr+Dy/O+POgkkeSlzim/Y6 +ekgDD2RP/3KmkxodSl6Sxc8Nz1nNZeV9o2JdNeoNj5yV1L/u2nzf7cntGRKk2O2d +nqHU+S3pSdQzr5O6Rrkwo+rN8rjPehvuVY9HTltS0HJlBgJ1SXjTX85Hz3mb1k9f +ReHThMFWgIa34MugZ95277JGBCkQlhMuly84kXAe51DUdcE6n9ee/dOh4FIGSBeS +WzAa+H6CMWbkKDYNDmURb4Ofts/tMpMRN7G6TM0ikB/ecFmJAilGktt0shVnAMY/ +BBP4TxiZmA/ry9VknJw2mhkw8e3rIdMwkj6mAqfmQGif8cR1vuokuZN5uCPa50TH +fCBAl5zeLdh+TFa8jIj/TlgfFMarOWqyAnWXvukcJzzcl5eIzd12JYP3nxvA3vyK +szCGhcPy6DyhqK6DwG54gkHBbIaLwpbeHHcb+fxB+A7H6PH7yt6AFLgKbYB1sYF8 +rK5ru99+X3wzFx3Zt6mZyIgoTdVEvI1Ru6iEYQuK1/Bp1kj5l1HKyxxd4QvaV1zs +1nX1FTOKmJ1BJ1v1ErEvYg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGrDCCBJSgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTFUx +PjA8BgNVBAoTNUdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgTWluaXN0cnkgb2Yg +Rm9yZWlnbiBBZmZhaXJzMTUwMwYDVQQDEyxHcmFuZC1EdWNoeSBvZiBMdXhlbWJv +dXJnIENvdW50cnkgU2lnbmluZyBDQTAeFw0wNjA4MTcxNDMyMDBaFw0xNDExMTcx +NDMyMDBaMIGEMQswCQYDVQQGEwJMVTE+MDwGA1UEChM1R3JhbmQtRHVjaHkgb2Yg +THV4ZW1ib3VyZyBNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxNTAzBgNVBAMT +LEdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyY/bB1joUnWlWUGWCe/NBgRf +CgeW2egzSwGPFyiWSbeQSKTnlxvxd5AGAZZi/LiqdM8tlbtU8LMpyOHN9Wijwl+7 +TZ0+wYxwSXyAzwiFsfXQ/gG+9/8u9H6jSTL8rFIBtjpoA4AhV613WGzowGrO771Q +mqMeM/7W5SJ0B0jM8sX507YF8ReUy7yysik+J+q0GRgsqy9nmwBEMLYTmGy2MV5J +CH1XK/p3WGMOcFCkm3dtp6pDszW+ZVxsSiROuBoUFJt5rq83L7HCz+b5w7MXQrcm +bi7M3E+1mQn3gSQc7O6dSx68PCDBxwDMtIELcFrTWWJiUZMJfb4NtbnNyi1vlwRg +fRIF+dNGvlXYt7ZUP6/BMcEHoNbis4bbhBNTdBOpKhDaCdFjbcGToHGlLfnbSO6P +TC4sAzLn3nkTBiCWSQEwG/PmZt66Df7Qlx0+q49YH+7DdgQu5zw+bOyhOXwzSkf+ +V1EOSwpFHLKtOz30njSdhSzyVir/c9W5X5CJKEC8KVgguB2PSIjE+Kb9UjlglWNz +kTONHxyk4P0STzwyOAJRUyh9fke5X5TGC7ECK5gs3Tj0sLdF1ozUNBQpJzN1vA0K +MCie7wpBs+u2gWSWcR05ZRpmxEAk8CGcfIvwBfEMCJGJZAsZa0iAlyIPFw44Pipm +u2cSfG0e3OCve0zmxx0CAwEAAaOCASUwggEhMBIGA1UdEwEB/wQIMAYBAf8CAQAw +TgYDVR0gBEcwRTBDBgcrgSsBAgEBMDgwNgYIKwYBBQUHAgEWKmh0dHA6Ly9yZXBv +c2l0b3J5LkdETGVQYXNzcG9ydC5sdXh0cnVzdC5sdTBHBggrBgEFBQcBAQQ7MDkw +NwYIKwYBBQUHMAGGK2h0dHA6Ly9jYS5HRExlUGFzc3BvcnQubHV4dHJ1c3QubHUv +Q1NDQS5jcnQwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL2NybC5HRExlUGFzc3Bv +cnQubHV4dHJ1c3QubHUvQ1NDQS5jcmwwCwYDVR0PBAQDAgHGMBMGA1UdIwQMMAqA +CEW8wqWSLBdAMBEGA1UdDgQKBAhFvMKlkiwXQDANBgkqhkiG9w0BAQUFAAOCAgEA +x2Levaeh6pq9liV02Nff0eUFgCovbIzXjlqi4K9XKShI4l6rmLv1YGuyLJEFCYZw +o4QfgTYmydnXVC7Ar06wwnwRjBmwZiZdPWVCOFdUeB1yd6L0RMoa5PLEGGehw1/y +Jvyr4yLepXZEnozQ9YqXQpVXaHNHOeTg9qtkRqHcEW4eG+2qxI2Yxb8V3HH9tIsc +6ZIU1WgX/VFfedWdA03nD1VerqMa8ugB0n80TRriT1Jos5J2qVW0pSA1Fe1QWfOX +esaI6tbCuFFmzB1PldjMe4B/oPU6wtXkqlPlfH7wRnRM2J4OwBU2YskjWuVbnQa7 +Jk4/338dK4Nha3USKyzeizYluNiP/W64JjkN5hUkIWH51URO0+oa1Zlc2UwvH8lF +8fGWGBm3JAvM/1Gc9e+35y+FrPAxNxdbI5gvnQf718lwC8DvYR4f4zy//7kkhi1q +WZp4F2DiSGAf7cBWIzMdKp0l1L8Q2awHRjFVZr+QMKI9J6+abPP5+ZqMt9jESMLn +0yPsUdTwws4DE9R/OZ3jRXY2POaYe2UG9fn8yajaIQTI6PaHdTF9roEG1MC0cyJf +kGwHKhEdW2640PDDYeNiuG/+Aiqex8CHNmmAm+Gu9JXXKmHcNkgcVYjMf5AxXqoo +9nOodu2f9Ds1Q0JAABYPL8D9n3QR0ynGwKf4e17IBEQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +UPc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG8DCCBNigAwIBAgIERIg0WTANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJz +aTEbMBkGA1UECgwSc3RhdGUtaW5zdGl0dXRpb25zMRMwEQYDVQQLDAplLXBhc3Nw +b3J0MRYwFAYDVQQDDA1DU0NBLVNsb3ZlbmlhMB4XDTE1MDQyMjA4MTExNloXDTMw +MDQyMjA4NDExNlowVzELMAkGA1UEBhMCc2kxGzAZBgNVBAoMEnN0YXRlLWluc3Rp +dHV0aW9uczETMBEGA1UECwwKZS1wYXNzcG9ydDEWMBQGA1UEAwwNQ1NDQS1TbG92 +ZW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPeUO2NjQrV7TG+U +C7Kg2RrMiMMCJn3EkphcoYY63vpuzEwDePMaO8kuSn9leJ0JDy7Y+iRo9fwfp0Wt +TeL04Rrzw+1RohugcIuO5zLY4y5whHYBgCquaLugP4JPUdCIe5aolrh6qjpSVzwG +Yur6uUcSpETanHkDAdFqfoxBN2saX/d6/zucL3/um6brJSsQ43wRZcjLx/dy8WKl +aBYqu6WSRC2Zbwm+rIowfeigEhhzbxDGbPvMzCzUkBzGuz+FJ7aDZYTK7ySdEBWQ +XF/y4Kyxqyopduwl1gmIfJdz0u9O0ZwomJ4PXLVlQg4+NlTPjpvjduQWfHfucpG6 +63yCvHfbo9qBuc4rfJLe6h6Ozw72lOl/+WJho0mQm5IaOqlwCSFzWItyt7japR1f +/egslukaahCqXCBUUloW3fvv7oEa8xf7m8illAzt8eZAffTxHhQpOcM/UZdH378J +oLAQUogHxXVWvHNQ+FgRFp0dhZ3oayF1aLBcZDaigmTORni/JynIWrcSrTDmSnCz +1VXWz9M1FD9wM60+V6kheTa35UgrrdWAQmgY/nk0hCEy6BDAdH//CVZMANDHuPoP +p7xTzYGv+iZGUiC4WwoQvs5H8a2rsDQCv+RA+VTU/jmzrsaFI8MuDWN3EeCfeSgs +ENEerzK9qgyL29FQuNK6QDYwVi8HAgMBAAGjggHCMIIBvjASBgNVHRMBAf8ECDAG +AQH/AgEAMA4GA1UdDwEB/wQEAwIBBjBLBgNVHREERDBCgRRjc2NhLXNsb3Zlbmlh +QGdvdi5zaYYYaHR0cHM6Ly93d3cuY3NjYS5nb3Yuc2kvpBAwDjEMMAoGA1UEBwwD +U1ZOMEsGA1UdEgREMEKBFGNzY2Etc2xvdmVuaWFAZ292LnNphhhodHRwczovL3d3 +dy5jc2NhLmdvdi5zaS+kEDAOMQwwCgYDVQQHDANTVk4wgagGA1UdHwSBoDCBnTAr +oCmgJ4YlaHR0cDovL3d3dy5jc2NhLXNpLmdvdi5zaS9jc2NhLXNpLmNybDBuoGyg +aqRoMGYxCzAJBgNVBAYTAnNpMRswGQYDVQQKDBJzdGF0ZS1pbnN0aXR1dGlvbnMx +EzARBgNVBAsMCmUtcGFzc3BvcnQxFjAUBgNVBAMMDUNTQ0EtU2xvdmVuaWExDTAL +BgNVBAMMBENSTDEwKwYDVR0QBCQwIoAPMjAxNTA0MjIwODExMTZagQ8yMDE5MTAy +MjAwNDExNlowEwYDVR0jBAwwCoAIQz3lDj/ssscwEQYDVR0OBAoECEM95Q4/7LLH +MA0GCSqGSIb3DQEBCwUAA4ICAQB+PHyJ30p+Q8MU9ifl4dFDpqouxlmdjUbxoypo +mhSENdstpbcbQoMQ4VuU9B8zhLzzsYlBOjlCZk2viVJmKBJuAaooinNvcVEzzQRk +/lP4IiDmLAwh0SKVpJigkhgqyk4KSWTeVFujok3gOmhq4zLmX1trtkq6G2EwXLmk +XDvVMZr81SW2bqUUp1faEDmnhc2sQhk9gC+s1xfqanLROnSYNzMNLv8+5q85n39B +JNplAoCI03C8Pf9UTmRaU6f9ijfkXM9lkIoSZrq0DEsspA+3SqIUadhKVmsVicHA +OHdQrDVLXg944tBKRefcbWSdllEekY4zZ2z41M4WmdajCgrSrizeYdHPh8krRdB/ +STZgZGUfZ0cMcVkH5YVZ3FuJq4AH3IfLUhupEIeMlQgDGiickIGQDFlJxd1HV8Gm +m+0FvbkICsq6Yr68oUwhC7Dd0cczRFoyTtLIvuOXj2RGi2Elg+nzU28QtjYpDwdK +Bq/+6sTCilJbx5PtUXqRmdpIxLLPY+B9HwWQCB/QgxTb/CcbogjXhZZKvJ3smWFa +UumeSkQk9Mx6a/zzNBbWHRLcon/5NkPkcyu6hBgWliG6coPKQE7JYkUu9Oj3U2JY +C/PKcbiPvKbtTtVchGMnlEdBphPcTcKvPwazV7eUIrJTZ15Db1LtQ0NnpUO1Pe0H +L6Mc9A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHDzCCBMOgAwIBAgIIEmYftqGzCYQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgME8xIzAh +BgNVBAMMGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRswGQYDVQQKDBJSaWtz +cG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMB4XDTEzMTIxMTEwMjA0N1oXDTIy +MDUwNDEwMjA0N1owTzEjMCEGA1UEAwwaU3dlZGlzaCBDb3VudHJ5IFNpZ25pbmcg +Q0ExGzAZBgNVBAoMElJpa3Nwb2xpc3N0eXJlbHNlbjELMAkGA1UEBhMCU0UwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO4Sn5Fl67Cu9bJPCXOjCOGG3D +9DdUqKf1rbej88v/kFGHkRk0bEkRm0CaziRUwPxxQsRrdTSn2IePX8rqm7PBlVg/ +AKHixuXPef9YPx9tp9V1Zd3gKxZThenfIHuoLwkUjto8iADD2WNDhrvkQRl6f9RG +9lFKVsxpENEIMQ/JR2AL1KBqRFcMsyWCga5jq9SJQjUMI/uH9yl6Tk4Z6tTlypMm +j4POS82qRndrOtXPmaDQCt4NTzvlMDXnlOxLmO7Oy2g89Kov6R3yjFJS68GZDfVB +DvNwzeKdimliQwjeO28x7hgeaLTNhXvJ0FxVecDVCisjBEMzKFi+X6KImieCbxCn +Izz+KXns33M0+iBUezqkvbtBhG9U/VtTv3e7RcgcaOXi8MBXtSig89l42WSMDnoM +7EE5hXQDdZyM9n5r5nEZnnIoFCsodDkQcrAiV7/1up6dHjId7JQT50bwL0MAcf5i +DiboqFh3zU1b5HZEiQvFqkLihO5+IyfqL3qleoldmwfImCUq5Xjv8lKxXU5LIL0g +V/c0vLX0O/vqtw74UebvQKQQ9DcZIt8lzaIbj5FrI9Gk5bYbBa4ykHnIqa6jnSxI +PyxQImVmkhaLgOZHQivS9nnUSWxFajdxknhP2bU4qqXdNumzeh+4CX5+5ej8k96u +zlc3rv/mP7qz7ppBlQIDAQABo4IBhTCCAYEwHQYDVR0OBBYEFBP4qm9aUqAbV/LX +bvw6V1wiXiTdMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUE/iqb1pS +oBtX8tdu/DpXXCJeJN0wKwYDVR0QBCQwIoAPMjAxMzEyMTExMDIwNDdagQ8yMDE2 +MDUyOTEwMjA0N1owFwYDVR0gBBAwDjAMBgoqhXBUZAkBAwEBMGEGA1UdHwRaMFgw +VqBUoFKGUGh0dHA6Ly9jZXJ0LnBvbGlzZW4uc2UvQ1NDQS9TRV9DU0NBXzQxMTVm +NDEwNTc5M2RmYjEzMThhZTVhNjgxZWVkZjdlMjc2ODEyN2QuY3JsMA4GA1UdDwEB +/wQEAwIBBjA4BgNVHREEMTAvpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2Vy +dC5wb2xpc2VuLnNlL0NTQ0EwOAYDVR0SBDEwL6QQMA4xDDAKBgNVBAcMA1NXRYYb +aHR0cDovL2NlcnQucG9saXNlbi5zZS9DU0NBMEEGCSqGSIb3DQEBCjA0oA8wDQYJ +YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC +AgEAFweKSNX+2NX3WPfbr9gSh7WIiYc97L9nSpZSL9bWnFp+grUQLrWsWqZPMzkq +nrdSyGHaix1vJV7VDFh0RR+tH9TlewuHyOvgjCSZZ4adyVv5kgK613dEXnn+4neb +pIqVWYAumCPX8AFSSIzm7BaPiP5mDygNnYe1Sm1qHE3qCfhMEU8j7yS2svQEpYlj +PydDbAmN31iTlXdDIbr491llt0KzdqmgH9O34TmQYMsbrWdgmoPnD9OflSvwB+PJ +8OqZrUbafxJWZyr4wDkrQYwAtT1DjRqeIgfUYROLeFznTlSnF3nBi1QKy1NDYX9h +ppfaGEsJrmtSMzKje7LlaODxy5wfypIciW1i1YiLbp0ZBjbsXV8V7B+XY10WqolO +8eDZQai65kWV9VFHqMUDV3TvTLGLrfI2CBzqZqGIn5PWe1Qkzfvl3ME7NGix/sX+ +i1/dy+0/taiLZMg/JSKheITJPeVTHhW8kFLg4ZzPsMBS/9flVC7LQfFDe80BEwra +S/MU8W4e4+91+r6yzd1UD0ae+SwVR7p6/3fVMytu4Xv6CcxhuuxNXQIHaW/Z6eb0 +B7a+Ij2QO4WcnLN8YfpRnJ+s0nbrSq9khg0EfyNNicXmDe2sR5uwDWJw3LrpNewh +IfAHXXedDVIa7+T2tK/E6kUXQNTTQFc7z8+GFCU+cQth+Hk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHDzCCBMOgAwIBAgIIZjSK6/NPzgowQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgME8xIzAh +BgNVBAMMGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRswGQYDVQQKDBJSaWtz +cG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMB4XDTE1MTAyNzEyMzIxNloXDTI0 +MDMxOTEyMzIxNlowTzEjMCEGA1UEAwwaU3dlZGlzaCBDb3VudHJ5IFNpZ25pbmcg +Q0ExGzAZBgNVBAoMElJpa3Nwb2xpc3N0eXJlbHNlbjELMAkGA1UEBhMCU0UwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC4cSXeMAuvtH1wVcrG3cZu/joz +kRWaCwnVM1NcnZpCjfdaVftSvvSlxMZHT0fPpTZswsmCdR4yrHe7d4Z6lj+Y8+Uw +rT6qpSRcDDJFW7mDNYj/iELyeBu1mwphaTwsNE2Gr8ZOV1LvMQjxBe4T+kaIUiRZ +KZWsKajgo1Ipg9ROg+7eTWp0WE7AZstGfqcxAyU9MrxtqRW4KIKCfIbW6NeyWvVj +FTYwFRsU0DjHYwyW2VY+oyDV8KtYNE0FkHH0uI6ygF6ohDntRjqDw2QZrHX8/SPj +vEIOxVG3pEK6nWr/9yqTahwJycGsqPGmsLxAXrzF9FZxfWF+W8mT4XJc2GxqaVYQ +00BY9SsrSyT5aXlZAAfNYlBbAX4lO2vY2r4j3qmubkfwjJY5wlxUZVoLlhlRogL1 +UR9cFgPrZhAx0PT7lf2ZwohVqKFpyjHmpszFvxQi0Q/QxPjUEfQQIKbAgR7WE01Y +L1LALvjDDnI50n7blaHdRuJdiRPxHVWtnvFo9j9YeaRfx4JR6RUCicnrRx2TnLD4 +9OsRik82x/iOt4K1xbXtX1oquh/vEu71AXIe069tnPS2roNYoJnqneFwdDw79hsP +uCg/Y8GhgpxrGcq7OFue6KZk+FLKOFAOHaTou0c9mcRwX0HzgnsQLwz4RYEGhLq+ +dnHdIDzBoBtfHkmVkQIDAQABo4IBhTCCAYEwHQYDVR0OBBYEFA4wULiS85liyEcZ +Lpjk0/qoQxmsMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUDjBQuJLz +mWLIRxkumOTT+qhDGawwKwYDVR0QBCQwIoAPMjAxNTEwMjcxMjMyMTZagQ8yMDE4 +MDQxNDEyMzIxNlowFwYDVR0gBBAwDjAMBgoqhXBUZAkBAwEBMGEGA1UdHwRaMFgw +VqBUoFKGUGh0dHA6Ly9jZXJ0LnBvbGlzZW4uc2UvQ1NDQS9TRV9DU0NBXzQxMTVm +NDEwNTc5M2RmYjEzMThhZTVhNjgxZWVkZjdlMjc2ODEyN2QuY3JsMA4GA1UdDwEB +/wQEAwIBBjA4BgNVHREEMTAvpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2Vy +dC5wb2xpc2VuLnNlL0NTQ0EwOAYDVR0SBDEwL6QQMA4xDDAKBgNVBAcMA1NXRYYb +aHR0cDovL2NlcnQucG9saXNlbi5zZS9DU0NBMEEGCSqGSIb3DQEBCjA0oA8wDQYJ +YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC +AgEAFLPYUFm8KT6VfrcyeoyszYaf0xZYk8TALErw1kCbS/sJR9x3kkQ6gxL0RNtX +Xnc94+SBJQU7Y8jFJiKlPkCLhLVefaaDxRGD0QEkYmGmVHKxMq2oagverzypcz9O +K0x39uskzGtL1Fq2y+5TE53+d9ksv/lFZmgMhEb6mKs+mOW1a01+AG9LCv30L1I8 +3o0r3Wq5aDksKr8NNQgDvcMfgdK0UZYlhTpoPfrU7tqQR7NHgFmkHWgNd+TtYO+1 +GBgqQLK5j/g4VOqq17BaTMvIrL6lEG8o8t7hPGkCeeDdg3pHVm0OwcNjAi2l2jJl +D1NUAnkmLV4ZiY7ifLHUuceQOklUCZ0tgSvpeIvebvqdi6H5OLAXRk9nhh57xgIS +VNEmupANRQclCgg3aapz359/0c2cgawzdrmRzRwsXZERxya+7QKw5UwQc44P7ouW +MQEVuTTC5fgJGvtxU4WkvzJ7VnbeNnvU1k541ZRUGi7iini/lyYNZuUOCAvc0Skd +2aBxAWBsyGJibClD8Gix89qJb5wbC+FIJcjkONf2xKvPCnCYvddNLLifrzDosSuz +NUvo96uBvTaFvZf+l414lFFOH473UrosTXljId/onQD9LkyCHrQgcvMI+7/P+Iio +g2HOhYr8ST5RmTFvH9JNxJQjJ6xW9Tst3wzdvD53uGY6RCk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQTCCBSmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJBVTEM +MAoGA1UEChMDR09WMQ0wCwYDVQQLEwRERkFUMQwwCgYDVQQLEwNQVEIxKzApBgNV +BAMTIlBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBBdXRob3JpdHkwHhcNMDUwOTAy +MDI0ODQxWhcNMjAwOTAyMDIzNTU3WjBlMQswCQYDVQQGEwJBVTEMMAoGA1UEChMD +R09WMQ0wCwYDVQQLEwRERkFUMQwwCgYDVQQLEwNQVEIxKzApBgNVBAMTIlBhc3Nw +b3J0IENvdW50cnkgU2lnbmluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC5GGpurGBUXu/Q3G4WFrMk2nIuLNepIIu3tcNlOm+sks++ +TxKV0cM6Wy7r4WTxChcoB4aq+RQKKnnQqHz959iVdeJ9h024hw5tad/3qd6BPsxU +5sDnGvVJJ28rIiXHsQ+nVT7g4fy7Ejcj+2/QTbAeW5iaR/lyuOFPtGikOlZrplws +l5XT5xM4MwlFPWcAkcYtnRW4MnfPlnOMgWoxPIiQ+TnllxMTydSB4WoT+wyeznkt +twaSByBlSpBCuadGGTcT/K0mJq/jbaej621QzPfSF2fknB0uS69ao4pAQabbAo3D +HV8sXvM29h0+Iobm/szvtZsEQDiqLF721PBZbLXt+eScNQljwnVPovuTyKYYafgd +wry45UKAk7ceYe8/WCqb1eWj7L9MoHU7449AhBdOHmpkb0S5NAGwVLgtnjwHO1hD +D9djNVA7bmhg6zGQBsOnmKoVfKXbKKX8XdPmvo6GCjoJJU62OnJ1V+EBlEbwpCoN +lP9QE+8TPbnAB8Fj0tGK2/QGAOgg+MmObkaPeYC1O57qv7GZ2FOAoEtc7Z1hTx6Q +V3pcLSDI/vN/ZmbySv+DpqWJwHiTkXEzdrlzjSW0ks/65QPcgQapSu2ZLFoBAfq6 +gAKZHZ0CCI9GUIoUltNnSj1zgM8LENr7+q9k6egrJjEny4utKegr4tTKKJlbPwID +AQABo4IB+jCCAfYwEgYDVR0TAQH/BAgwBgEB/wIBATCB8QYDVR0gBIHpMIHmMIHj +BggqJJ+mgV0BATCB1jCB0wYIKwYBBQUHAgIwgcYagcNDZXJ0aWZpY2F0ZXMgdW5k +ZXIgdGhpcyBwb2xpY3kgYXJlIGlzc3VlZCBieSB0aGUgREZBVCBDb3VudHJ5IFNp +Z25pbmcgQ0EgdG8gdGhlIENvdW50cnkgU2lnbmluZyBDQSBpdHNlbGYgKHNlbGYt +c2lnbmVkKSBvciB0aGUgRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMgc3Vi +b3JkaW5hdGUgdG8gdGhlIENvdW50cnkgU2lnbmluZyBDQS4wDgYDVR0PAQH/BAQD +AgEGMCsGA1UdEAQkMCKADzIwMDUwOTAyMDIzNTU3WoEPMjAwODA5MDIwMjM1NTda +MB0GA1UdDgQWBBQ35UU4PlOsrXY2zqkmAMVn6XxyiTCBjwYDVR0jBIGHMIGEgBQ3 +5UU4PlOsrXY2zqkmAMVn6XxyiaFppGcwZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoT +A0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYDVQQDEyJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5ggEBMA0GCSqGSIb3DQEBBQUA +A4ICAQB3/a7TKbSooEOGF9C7zSDCDdrjbKVWIST7oTMk8v3FFzxTysshgRArw86s +ZVCZRrWD6weVQqyv6VG55kZSE0NVEH6+Gme9v1h7cV2Wh+ATiYoi0LbmHnQzTgx6 +HXMijMobms2EYOaCXbMfB2ocvhMhy1kQ6Ow5GBlAI2BEPtt5eb926aVemAFVbfOc +cQ0id62P8xxhcycKSoeVhEtEP+voC2OnxEDTAoAxXGzUAuQqVW3cs2AEd77/be7p +265nkiGjaZGaz+QbkUjvz4LMqd41PSXETQWamb3jgobyN1pP4+5FEvaCjywC1vo7 +VA1jvBMxduDTBWATCK9ww1g7f50KuKOS/62BH/7SY+9/5bq5X5xABE0rOstY9bEE +14HpUoVlulaX9Q1Kqz74z3OCMmxx5DI4MGia6E7sflYxx1AE6/YjEsuKS0gwv3zy +l/mlad9N4Sp1o3HSzIoxIO4ATWaqY7HyUnQoqF8yMYJ/bSSXK//xA7X/fsWc7otw +00rSmFlEWJl7AlVeqnUYt1NfPpDW5rTYCva2qOOq3qXfAOLwyK5XtOgDhh8X0vtt +OOdBc0TOweG2DwJK2O1OF9OBxTp/NEJhm8lLBj6REQALbNLbG6figAeP8HGLHPNM +kscdy7i+WLiNoE1qTuAcvKh2X6wXuj5SJkHpQdnd0fXINoUh2Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH4zCCBcugAwIBAgIBVjANBgkqhkiG9w0BAQsFADBwMQowCAYDVQQFEwEzMRow +GAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxMQVMx +CzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdvdi5n +cjAeFw0xMTA4MjAyMTAwMDBaFw0yMTExMjAyMTU5NTlaMHAxCjAIBgNVBAUTATMx +GjAYBgNVBAoTEUhlbGxlbmljIFJlcHVibGljMRQwEgYDVQQDEwtDU0NBLUhFTExB +UzELMAkGA1UEBhMCR1IxIzAhBgkqhkiG9w0BCQEWFGNzY2FAcGFzc3BvcnQuZ292 +LmdyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4JWyBFqReB9/HDN/ +0DrhLKdMGb5DMMKLtxodnYBDMP6A1of/8/JDNxbCHw9Q9L87pBjG0tqrVtPbmSOf +3z3cChJhH+zmmmS/EO1QYO7J+qSCIpeJ08DR0O1og4pKIj/I7pldloHxP7Ju0351 +Jga02eHfp1WEN0WpeWpGN5+RupVf0nAbGDRqwHBZV3poykKJBU1A92DiRKUpaqyD +bS/AKz9LNAkDMRjo4eBZN9TKdoeb+7McbZS7DTvRwzTeO9NNxwsZ+0n48NsoRTaI +ry6uZgH2YCTqmRH33JwyhF7u0O2h4Nn4nqJpq6fgfqh4vCdzWEkDIiqH4wal0gAQ +rDSQjwsJ8tJ0Z7faABlH5sZwI96pdnJuTCNcJmbdTOE7GTUmpNFH3hEmeK2UvnFt +EjViYeKZHlbmk/fi8YI2/5wN6/YtWi6rY4xn1I1Qf2XIf/bV770+D9N65inFBOoM +3EbwTj4/nultZv1IoblJEUFMhNSCi93c9P9nGorSrkI5VXPfWejr8teef9151MG3 +jMpc/iBOogIZKBgys7ogct0sioLQs56q7YSvT/N+AUl+z5VI7aLcK6/tpo6X+zts +r70NtHoTSQ6nmybLFnLtckn2AyjItq6EzjULpUIu1P3N0UkKjU0txl/hU+xOk53r +I04UiLVK1TxR/dj/uLUGQWI2gGkCAwEAAaOCAoYwggKCMCsGA1UdEAQkMCKADzIw +MTEwODIwMjEwMDAwWoEPMjAxNjA4MjAyMDU5NTlaMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUvSC7Feqn+R7kkN8IelLnqgiw1+YwHwYDVR0jBBgwFoAUvSC7Feqn ++R7kkN8IelLnqgiw1+YwEgYDVR0TAQH/BAgwBgEB/wIBATA5BgNVHR8EMjAwMC6g +LKAqhihodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL2NzY2EuY3JsMIIB +sgYDVR0gBIIBqTCCAaUwggGhBgwrBgEEAapsAQpjAQAwggGPMIIBVAYIKwYBBQUH +AgIwggFGHoIBQgBUAGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAaQBz +ACAAZwBvAHYAZQByAG4AZQBkACAAYgB5ACAAdABoAGUAIAByAGUAZgBlAHIAcgBl +AGQAIABQAG8AbABpAGMAaQBlAHMAIABhAG4AZAAgAHQAaABlACAAQwBlAHIAdABp +AGYAaQBjAGEAdABpAG8AbgAgAFAAcgBhAGMAdABpAGMAZQAgAFMAdABhAHQAZQBt +AGUAbgB0ACAAbwBmACAAdABoAGUAIABHAHIAZQBlAGsAIABDAFMAQwBBACwAIAB3 +AGgAaQBjAGgAIABmAG8AcgBtACAAYQBuACAAaQBuAHQAZQBnAHIAYQBsACAAcABh +AHIAdAAgAG8AZgAgAHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABlAC4wNQYI +KwYBBQUHAgEWKWh0dHA6Ly93d3cucGFzc3BvcnQuZ292LmdyL2NzY2EvcG9saWNp +ZXMvMA0GCSqGSIb3DQEBCwUAA4ICAQCl8hIGOHKa7n2pas8sFy7wEA6BrDKCsy6Z +M28sMeLb4Uy6trqUgS1UXPzx7irL0QR4GX29F2czP1dtiLN/NU4vWmRaE1hBqJw3 +7UG6V+aX8DsXss8l7GgvDPpV5CXSgBZuZeoN+n34xt89DzkfTnbqfRQTFYJ44KqP +rVxIVFFIL0DIbTW1CE9GudWK1mqS0GDLRiLindBPciBXDy+dfYuaBeB4Nb6GjZw/ +UlXkBulNs5bsuN65a9y0ogedO8IuGIUI3GeCrxz5jOk1zMtO6+XoxiEcJ/FfTvy/ +r//vokdv0zSV3OOH5cxSOkxZeXwFPsyVUxxxxvyakT5Q14RDfPWW4gy/Ffo4paN0 +U0HAbHmfETsHjYf6PEHp9iDg0fUsuN6llwt8qIZxQ0DlRBMF5/JmI6Qz1W8VVU4H +TodaU7gh2NPU7taFBu5BoctRIdsc2X8tYhsD424cdna3odkEdWtrATxSLsx5IvpO +EWwoYYErWPcKuOuIEnWf6OvBM85CJqaik/5YmfQciGsa2m7glqjxUO6dhhLF7y5Y +0bKEceAUkGNFtu5vWngm5KwC376GA28pT/oW1XiGd40UTNd0dbXruxqxf+55jJ2W +h28SAX9GupKanzL1uPbindio+IiQOI0oo2aS6bLvdvCqcru1UoDWYi/HzXjr4uln +5CjW+w/3hQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFeDCCA2CgAwIBAgIQBMZIPFMa/oFBkNcCnJprMTANBgkqhkiG9w0BAQsFADBB +MREwDwYDVQQLEwhNTEhBLURJQzEMMAoGA1UEChMDR09WMQswCQYDVQQGEwJCVzER +MA8GA1UEAxMIQ1NDQS1CV0EwHhcNMDkwOTE1MDc1MjQyWhcNMjkwOTE1MDgwMTE1 +WjBBMREwDwYDVQQLEwhNTEhBLURJQzEMMAoGA1UEChMDR09WMQswCQYDVQQGEwJC +VzERMA8GA1UEAxMIQ1NDQS1CV0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCqrKmBNRKHHR47xpX8ArsQxLkzSP+oA1dnbwmbkohYEuaABB3Oy3uchZv1 +H/i7oovrJIKxkx9k4l73urlyKqn2xIZd/Ci+Uj2jDIBaCMAPm/bbOa8deIfnpPsG +DZy9cT08K0eFyAK9yFZs68penXqjxgOZ2fy4SNCOjymgYGkXCBrDo+aquhzeWkSF +WwNuNl5lMVo+7iAa52M+xcnN88O7DN/7VkTvcfGtEFAC08U0L655yqAZF0bl+AEF +laLwtTG+S89FXW0dc7E4a73WAvZYn24kgRj49mCMe9zzS6EyQM/ul2qgiDwisUFT +iGDS79ZkIXj2mceXW+n7Tl7vWCEKzYGG3XAw2w/QtzXLy2GdaByXV/yZ/96FH4tO +ITjA+nyYAn7AfX1TqYvzMS+OgXJQKh/AREY4yAmJFcC130sKvwOwAoXRkTkvzmWS +Tzv7jRw9oqplqgUwW1GWS1JxecvbYXatuW2TPs97VIMpS3leqMFgmuX8pDzE3scp +UdsDJEJrc11RtN46E6zKg5vk9u2+KZkcgq2PEOQecy3VihzcqGk6PayLfum2lGSN +vE4DTz2GpPwF+vPhRBop0HxvqeSkqzi+YUrrVXdkOIXTgf8/6ghFzd6Dux3e2tDY +QJqDKJmfZDs6BB8VL/+ZtfvxdkHvjxK9u7t9hXF2LayBdT91cwIDAQABo2wwajAO +BgNVHQ8BAf8EBAMCAQYwEwYJKwYBBAGCNxQCBAYeBABDAEEwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUbfHPhBy4UzOi6uqn6nYRHAJXkewwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQELBQADggIBAJL0ZUEw4jgf9q1M9h+YyQd05S7E +RXX5rL/LaBo3xF5AkCPeA2fYXcoqBnLkzRMU+BHkzOnWRW3D1mov/Kt91WAWx+5n +9Lyy71s3myPdc/cUXe9uuZ+7jBKtTA8AafRQpuIkrKixF47ax5IN7DP/ihbHdgL+ +i5fkuuszIcHOTGY7QUk7Hp2ME89EJAAVzSTrw0BmarPxwnKSUhW+xRluMrL/+gSS +dZyuW8M1RYsAqlJMmWkxzKP2HPulXNL/fne0U5JPPUMgvB7C4ulFkkRsHL3wlJ4E ++nNKUxQBwIG1X4IkyGq3JSRAaeY2j8qKGXtHZz6BBcnoFm0YBuqIaA8kTRsWBU4H +iTt/mucG0yDZAu9MOO8csp0XKLxKrvGS7AQoGVKhJIo9iP4o0jgNUeADT7P/yr3T +Bp/tp6cpXaGbEXQDP2ITuoWE59R1N18ARFPpW/0edUGcvvtuB7B1xh+oKQ4lEWt3 +sp8+HZgpYcWpdzeQgnb17eUkzhoaw8uZA5NkHzDDuNPzYg0v5F51/gcC7FY8E8pl +qPxmLNKYhVUvO71b/3oxdQGt+KyCfhm2mTNsMxTPYwJP0XwleMVHGnX3xSDLNkSY +IWfhHiU5rQ78P1wo1PWcuUS+tkOg6yIjArNHLo4qYVpTXdHuqAyBt4u9WdwFMuxX +N2PXu5CQFbYW2uTd +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGTjCCBDagAwIBAgIQOFGcgEofbpFK8jifxQuE1jANBgkqhkiG9w0BAQsFADBC +MQswCQYDVQQGEwJCVzEMMAoGA1UEChMDR09WMRIwEAYDVQQLEwlNTklHQS1ESUMx +ETAPBgNVBAMTCENTQ0EtQldBMB4XDTE4MTEyMzEzMTgwMVoXDTMyMTEyMzEzMjc1 +MFowQjELMAkGA1UEBhMCQlcxDDAKBgNVBAoTA0dPVjESMBAGA1UECxMJTU5JR0Et +RElDMREwDwYDVQQDEwhDU0NBLUJXQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBALJuau0gSxwZNpsa2AFSEJs8hP9tjKt33/gsPs+79kFjknPeOAr5PpXL +nWzmrE0Knuhulld9WC9V6KUDsucMB5nkrnE6wBlfSWSn62ovyFyvHZc7HqQArGQI +j0Ktq256jpyU/9tqNF7BgooFYLLeREsbNaeowpST/gpsytAjVxVHcJdRz/97ooVy +0GrRvAoV3Eu/Ztvu3kbrYXvkcVY/CoIyxl2rmcI48Tk/6M9FynQugnQXuZbYUXJp +6SK9FTEky1mw7L1tfRiQeOJbnI6n/b054fDkgmGVeXOgwg8PyWMmTZfHC7gth4G0 +biNd952KPf3ZU+R3kWg/RGsc3m24zNN1SJiw+A7dyfc1pMAAL/KPvy5JWWtIENjg +1B2nVRrYNGC3MKWsh384e+dy30wJPYYIK3tvEYk1xPwahaqAMD7ENnHZ+VmZuBQp +6HVaNdySMLOXFgXuSsLbeIPpc5QA89jTYL54Qf39V6u/SnG7XJ+glTPVztsTVPYw +YurxEsaUEKBeU2ulMS8b/uarSp0LdvNdz8nsMi4gsdg5pag8T0mfLJq/jbJSV7E5 +kaRybFxwUz77z5+8llVaiU65Bh4TQaheecL9JOASDM8+VN/nRIvRgR1v+amEx9WW +5Sts7XCrLLWnz8w5/BXoedaoC+M6g5zm/IcsFXZEYAppTfxf8bexAgMBAAGjggE+ +MIIBOjAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAxODExMjMwMDAwMDBa +gQ8yMDIxMTEyMzAwMDAwMFowGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0JXQTAb +BgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDQldBMGcGA1UdHwRgMF4wXKBaoFiGKmh0 +dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQldBLmNybIYqaHR0cHM6 +Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9CV0EuY3JsMBMGCSsGAQQBgjcU +AgQGHgQAQwBBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOifut3L/ghy +yyT+cvdEt5A3G/48MBAGCSsGAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBCwUAA4IC +AQAinC+VkYXo3NxGeW6DQVUJNI9CUGZqpxDUpP36wAcEfLf0NTT/Q/tcOxmNBU17 +jxga9dGE0bVnS59pNTNBJCpb/jw8CJxk6lSOa0iZcCTdjJk873IOA9BBaa0rXfGy +/ipQBizqUehAbBedcHs+EJ4CAfep7nvxwaN6Hyq8wPLtEYEaZ1bCAgFxKCkDFrJz +WCFAlDBJfNkzMO5MfOasfKFCMcFZHLooY2jJEUTRE7AS5WMTMapwrpHnyqVEss/1 +83cU3ZjCx7tT26glYH+Je4OBCxcCjMADTyzsV42Dlm8xjUiQ9YBLBdfgqPkG7Jpl +AkCS4QYmTlClG9R5JdIk8RC3wEj+LkxGgZEaIcG0lwBER7siBpqYvxl8x58tqXHp +A4v3tdZERol+UTCPS+DhtHH/SX6ravZBwimlaE8ucU44EFGnynOwnUnh9uQJSTB+ +E2ui99sPolC3YEm4Zdwc+zPicE1ciy4vqQ//LXNj6MTIjAJhMqvp56WZca1Wr5w8 +or1SbWQIVNvpInIwJJUnYnh9tt5KR4rOdHQHmGfiBnIotTAeb3KAcO5MwqsxxAQ1 +zghGlkXmJpSI/O+COpWu/mvfBnnglcnts1W40/xtzS6lovrA08PdR31yAj+ODhwB +yQdMRO4jOvWGQAkrGHDC+jJAk+C+t7MyPfZH5Vf+fLPM9g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGNDCCBBygAwIBAgIDGGoyMA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJV +QTEZMBcGA1UEBRMQVUEtMTYyODY0NDEtMDAwMTE8MDoGA1UECgwzUG9seWdyYXBo +IGNvbWJpbmUgVUtSQUlOQSBmb3Igc2VjdXJpdGllcyBwcm9kdWN0aW9uMREwDwYD +VQQLDAhTQ1BEIFBDVTEVMBMGA1UEAwwMQ1NDQS1VS1JBSU5FMB4XDTE1MDMyNDEy +NTc0MFoXDTMwMDYyNDEyNTc0MFowgZAxCzAJBgNVBAYTAlVBMRkwFwYDVQQFExBV +QS0xNjI4NjQ0MS0wMDAxMTwwOgYDVQQKDDNQb2x5Z3JhcGggY29tYmluZSBVS1JB +SU5BIGZvciBzZWN1cml0aWVzIHByb2R1Y3Rpb24xETAPBgNVBAsMCFNDUEQgUENV +MRUwEwYDVQQDDAxDU0NBLVVLUkFJTkUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDH8j4RT9nXeVh2LGBxJynUasebCZlEztPnKAV5KAF+lcPDB1pl0QdQ ++x0vHkCgPncOblpx7kmgMKZexPzEf1JdDj5jl2l0AvPwI6jjeQNZ9er/UirmnXWT +3F5pP8CRC4C4txS6ee5zeB3eKWB1P8+m3nDKUHvBipPWYDXAmMREvjbrRlqJAjoY +tNlDHm83sevTJl/Yym7Cu2TkH2aLUf7WqToLmJT6gMV3xUJr1EaVsUcILC4AOmVQ +S2YiBt8N6QtFcbDd7dZHHON337VY8DZ5M7VCIDrReRosgNftyhjKHHFa4oGAyjzY +KdPCEs5sqnQ3lgA9dpifPn/S8FTm5pcY6OokeQ7qepGiuc4uUlmhXj76iG5VglcI +4iodCp55dcicyHpGSHFAU0AMoNVlFPIK+VoqOqmGIJs6fDPx+pdjl/rrPKqe2jML +jGjUgOqQFJpiHUpsi+K9zyVP+xzH0NKhi+E/Vz6B6MuzHC86bx3NKWhV4shxL62F +pNxVRpndP3I2WRxJRCTXbqDoqxg45hRluQ2tZou41Mq8G8g8xGLt4e/bRcuWM0LF +TiftaexlawkoLYJ4nAvyowfr6VvO984SrwRzLn37cijQnm7NcB2/Avge1LuMRvV+ +VtUa92xLlx/20xQE8omocCXzre54RcocuNik/02ID4lPdiT3xBPlowIDAQABo4GU +MIGRMB0GA1UdDgQWBBRgNP/WOOYC4wrv2JxxON7M0G0g9DAfBgNVHSMEGDAWgBRg +NP/WOOYC4wrv2JxxON7M0G0g9DAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgw +BgEBAQIBADArBgNVHRAEJDAigA8yMDE1MDMyNDEyNTc0MFqBDzIwMjAwMzI0MTI1 +NzQwWjANBgkqhkiG9w0BAQsFAAOCAgEADtyi2cVGhmO5fNcxdy/gjYfOZCT6/b9v +hjXk36Ln6d13TLObi1Pc9icu0xfDj2EsqO9kEFrsOvnBsgG3mCXl/AYQqz8ueJw4 +0L2Yorc+KBcBXbziLgFiAB9EwzF4cMAGoxLPu8gArVSwZVD9IT911EUB02yu/7pG +EMBgvFz2qPBExuXYc0PxYBn7blS3KbNdjvZm4+g0DAu4y9e7jGyweIpGBUMpx16f +EqCzrBpWj1dY40UycaK78GbCDZgv/5GkHFu+2d5e9UJaTtmAFTcpLwvuxO+Nsr60 +paTefrWRmpf9WXNoiAIxxBPfjMEcqTqom116xpO0E4900q28QeVAdwy/sZ9FJOAz +Srv3npBs8sk+M97qS9tkUfbhyc7c+5ZTCFm1fAXqmpcNzyO8EpfURhS2CCvga/5s +QXrgdfaB7lvtjfDoUrmnkGgpRJACXoRNPerxHQu2qHEhf8fKekBCSQrK0Bayacbp +kwVdIETOKAoIn1YSQJbWcSGHwAY/g3s1tH9aXvCnbNcD/ikzAxUiJygbmDngda2U +/akdHhbh8z/YUWdUdMRhU2YLBphsVfk5kqlSvoQi6mW+u7C3vQuxHr/2VXYkeXf1 +jtuJaV5m9XiBX2N89ks8puNO7BlRO9wIeTcsdFljc1iwQMcDIO4YdtfdwEaJP1gR +w6aCFLjz4hQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgICAPMwDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNVBAYTAlVB +MRkwFwYDVQQFExBVQS0xNjI4NjQ0MS0wMDAxMTwwOgYDVQQKDDNQb2x5Z3JhcGgg +Y29tYmluZSBVS1JBSU5BIGZvciBzZWN1cml0aWVzIHByb2R1Y3Rpb24xETAPBgNV +BAsMCFNDUEQgUENVMRUwEwYDVQQDDAxDU0NBLVVLUkFJTkUwHhcNMjAwMzE3MTIw +NzQyWhcNMzUwNjE3MTIwNzQyWjCBkDELMAkGA1UEBhMCVUExGTAXBgNVBAUTEFVB +LTE2Mjg2NDQxLTAwMDExPDA6BgNVBAoMM1BvbHlncmFwaCBjb21iaW5lIFVLUkFJ +TkEgZm9yIHNlY3VyaXRpZXMgcHJvZHVjdGlvbjERMA8GA1UECwwIU0NQRCBQQ1Ux +FTATBgNVBAMMDENTQ0EtVUtSQUlORTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBALb8Xr1NILQ+kspv+x/KEJeSGhOLZSWSwPlDMPELqqNf61XoidNTqTA1 +vbWpy4UX/DzaWLrnVxE3FPCbdGdJVVWPL6SsE1GwTCA4M/F/dLI3YhrpzTH5cNqs +VugnNSqMiWdemuvzRZk28l4e+jrjU+ApRItUxpByPflhVR5rbHxHU6zMgKO+zDNq +pYpQIUbK3P8Le1SavlArybDCfCEL2QTuhVep9qWdvFQBYUIoi9RhG5ejXCSOPM5f +egb5EM3ZPhASF0a8uBPwEeQHIxAdBEmPgUK661v6HKM9Vuu7S/lRqZ7u9LsX1xNr +HoYk4NubevnoH/VxtP19D8G7AvhyLVEdM5YjivHznnkIFVskxTJWT5sWyuIoqoYy +hkJ9HX3I4+8U087VB919ibPuw/orolrDBH1WzGpVInNByhlqsiGf3fRaUvXUei9d +bqSURWLkFqp343cIziyFQYNLPwr1Q4SC+vGZLZ2f37ofs+pKjgepZjtKoynTZcSM +BfOQD/TnM3qcdwmgdbWg1O/U1uTwPSPPHM+7DA7Cyodpz23MDmXqZy1Yb5HfkGEQ +h6GXspePanbnJ2lyEPGRbg7W6GKqfdXPZnT9YgpsTlfR7O/nXx/Hoc3SNebHXotz +EwiOc7LiRnqufFEAk+JFCfXKlFCoY+88X9LIBNmXAuPNTZv0iGeDAgMBAAGjgccw +gcQwHQYDVR0OBBYEFPTOL4ymS2Oz8dDqdR+r7370UjWNMB8GA1UdIwQYMBaAFGA0 +/9Y45gLjCu/YnHE43szQbSD0MCsGA1UdEAQkMCKADzIwMjAwMzE3MTIwNzQyWoEP +MjAyNTA2MTcxMjA3NDJaMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/ +AgEAMDEGA1UdEQQqMCikDzANMQswCQYDVQQHDAJVQYEVcGtpQHBrLXVrcmFpbmEu +Z292LnVhMA0GCSqGSIb3DQEBCwUAA4ICAQBONpDeOYXX+b2yGS+Ur3RFyxSIG0e4 +RrSls3j2wmY+Mkk3asXm/s9vJjPx63vlGSccPW/tKi6B5cb1qte/ZC9W/gbh+LOy +irB47uGa9UvxRu9MopWJeuvzIa2uI52RPj9WpZaDHcdxUsID0egPH0pwn2UyEzvO +IunX42mb4P6Ss+CR8XDp5px91U9bgsyKaqxcQbfKt8Ese7f8aOUmNb5/BebBzPPG +5+IWScqXeAzBdpy9h8gNcZNjrvrQLur6HL6KWGXJjYXFWruB1zWZLQDUUYR5S/we +6UxpWyW49KIcNJYRbI9bbwfof/VJBUeEt50qI1tbat8SMtcu25VkKZZVpdOO8MzQ +KryR7SS7GPMIeGDup/4vf2iwAy1IgikWKIllv4D7+FeQFCWEwy/bcr/BU7X28M68 +8565NRdS3ynyUPB9ju6E5yh0zkZimbPvtpd5HrT2HgRsedvu/JWwT8Nink4thYgz +/VXeFDG7K0Zd4DMMinrnae8fEjJ4q0meGIAhqHRbkj1mdWvsjXgHGK5NnatLajjF +eTXQu/zBZ3/vmg7808oU/AE/OSsoSScOMAugJTsel+FzlL+KRPM/nlud2DlQd8vI +RPdaoupQo77d8FjsMOOC3RK1XKnWOoX7bYBTjsdsSCv6FmTWLm4KrLWFKSFEQBUL +QDksyslSIC+iYA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGmTCCBIGgAwIBAgICAPIwDQYJKoZIhvcNAQELBQAwgZAxCzAJBgNVBAYTAlVB +MRkwFwYDVQQFExBVQS0xNjI4NjQ0MS0wMDAxMTwwOgYDVQQKDDNQb2x5Z3JhcGgg +Y29tYmluZSBVS1JBSU5BIGZvciBzZWN1cml0aWVzIHByb2R1Y3Rpb24xETAPBgNV +BAsMCFNDUEQgUENVMRUwEwYDVQQDDAxDU0NBLVVLUkFJTkUwHhcNMjAwMzE3MTIw +NzQyWhcNMzUwNjE3MTIwNzQyWjCBkDELMAkGA1UEBhMCVUExGTAXBgNVBAUTEFVB +LTE2Mjg2NDQxLTAwMDExPDA6BgNVBAoMM1BvbHlncmFwaCBjb21iaW5lIFVLUkFJ +TkEgZm9yIHNlY3VyaXRpZXMgcHJvZHVjdGlvbjERMA8GA1UECwwIU0NQRCBQQ1Ux +FTATBgNVBAMMDENTQ0EtVUtSQUlORTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBALb8Xr1NILQ+kspv+x/KEJeSGhOLZSWSwPlDMPELqqNf61XoidNTqTA1 +vbWpy4UX/DzaWLrnVxE3FPCbdGdJVVWPL6SsE1GwTCA4M/F/dLI3YhrpzTH5cNqs +VugnNSqMiWdemuvzRZk28l4e+jrjU+ApRItUxpByPflhVR5rbHxHU6zMgKO+zDNq +pYpQIUbK3P8Le1SavlArybDCfCEL2QTuhVep9qWdvFQBYUIoi9RhG5ejXCSOPM5f +egb5EM3ZPhASF0a8uBPwEeQHIxAdBEmPgUK661v6HKM9Vuu7S/lRqZ7u9LsX1xNr +HoYk4NubevnoH/VxtP19D8G7AvhyLVEdM5YjivHznnkIFVskxTJWT5sWyuIoqoYy +hkJ9HX3I4+8U087VB919ibPuw/orolrDBH1WzGpVInNByhlqsiGf3fRaUvXUei9d +bqSURWLkFqp343cIziyFQYNLPwr1Q4SC+vGZLZ2f37ofs+pKjgepZjtKoynTZcSM +BfOQD/TnM3qcdwmgdbWg1O/U1uTwPSPPHM+7DA7Cyodpz23MDmXqZy1Yb5HfkGEQ +h6GXspePanbnJ2lyEPGRbg7W6GKqfdXPZnT9YgpsTlfR7O/nXx/Hoc3SNebHXotz +EwiOc7LiRnqufFEAk+JFCfXKlFCoY+88X9LIBNmXAuPNTZv0iGeDAgMBAAGjgfow +gfcwHQYDVR0OBBYEFPTOL4ymS2Oz8dDqdR+r7370UjWNMB8GA1UdIwQYMBaAFPTO +L4ymS2Oz8dDqdR+r7370UjWNMCsGA1UdEAQkMCKADzIwMjAwMzE3MTIwNzQyWoEP +MjAyNTA2MTcxMjA3NDJaMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/ +AgEAMDEGA1UdEgQqMCikDzANMQswCQYDVQQHDAJVQYEVcGtpQHBrLXVrcmFpbmEu +Z292LnVhMDEGA1UdEQQqMCikDzANMQswCQYDVQQHDAJVQYEVcGtpQHBrLXVrcmFp +bmEuZ292LnVhMA0GCSqGSIb3DQEBCwUAA4ICAQCcUm82vaNEwk0TnIP2EryDKbvP +5lQiVCmxBv/2+FDQpYmuU9xPZHhddnsSbz9JzS/QVabTGVxf73uVsc5Z0k7nAoX9 +r2HmYZOLT78gYwlEk6d1de4ThlYoZ+wukhECeFt6HqMXsnOT3AtHj2uR8/Ilqv8S +6Lgx8nTrXDh1p/BxUDIXAAtIOaZWXvEcjhPLCotv7MLmSK9VKFFcpIOj/pZ53+UC +SCR4X8dKYrB/UP7G5TEtYzXIZkfXV4Or8lFLF4Uxawa+p4xX+CcrmFw1sTafaR18 +UqIEcnbHoUUP+2gu9yqnPxgIsvcZ5SFFNM/yFGStXmBT1N6qWKAiSjI/Gqn2uoRw +FvmPKI+oHeOODZf7gAp90Z6f6sLmfA1/A5EkkG/xGJ60EHMySXKZYxqMqd3IFErk +s7HeiqSgSONFQvbfA3Xj81j7yeii8HFLa0umYl0c3o33oj9IFMO87VxwyuLB6di1 +dAlUWjSe0raD9FOoPWlUYYBb1ne+IQiQXYwZDXzZeE7hefEKeljMm/ILEdFdE/Ni ++y32e3M0vd+xWChTlLhAnjQfEMmzyXxSSpEaoIz5tHfmCfruCIq9Y18UkS0xhCWZ +tdGLSS2hUGpoexTYkANHTo5YAb75588TBdpJyTQGJlZr6uDd0V+Z/yh/QVkfkfoN +OwzAGvFGTB2oSt2mOg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIEAJodIDANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJG +STEWMBQGA1UECgwNU3VvbWkgRmlubGFuZDEMMAoGA1UECwwDVlJLMR0wGwYDVQQD +DBRGaW5sYW5kIENvdW50cnkgQ0EgMjAeFw0xMTAyMTUxMjM2NTNaFw0yMTA1MTcx +MjM2NTNaMFIxCzAJBgNVBAYTAkZJMRYwFAYDVQQKDA1TdW9taSBGaW5sYW5kMQww +CgYDVQQLDANWUksxHTAbBgNVBAMMFEZpbmxhbmQgQ291bnRyeSBDQSAyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArHJCbI1xJzfL47ru1g5S2EPMn8fo +u/a5fFfnOCe/JrVNLX6h3kwetWQnw8JFpX4dX4LUD0WxtZpieIlyAbQlJxv14xUW +F7XXPoCO2CM9ko48Old8Tmj3ZM2WTiw2yWIFJPDEa/1j6FiMZ8J24t00pZm/Z2lo +HV7JMmz5Cg8s5L6u5HpDzLHQbEwza97YWrg9yhlqPl86QfBEPIed5nC4GP2xkRoW +fhflh66KAC6H67o5vB2GklCbiMnbBG7hr4AFIfbKS9Nr8BYqBm3wVEeKEOy+UVaT +4OWqcowjzvybpGo9EMkXI+/rLpI5frVWWomWS34xHIGXqj/Uoxz2xDz/KNbRQ2lO +Hiji2P2fWDmq7XNzTi1y/15M9wMdLy80theiLmtFXiM/aNOncjKkJyWrqEH8lmJO +ulXzGoEyHcHZPJ80LgcDXb1wehXvha6+Kp6vpgEaRG3/qAa3Fb8AFfJ/yexbH+Ks +e/k2+guW1uEGmI6+xkcIEoDse7SR4FKNFggJXhaJC3t4ofrgq7+8/x3BHFGJZ6Jd +cjLt0m1Q9y+UDi5cb1nJJjaqUsQ2eG/h2BeZ3eoANDH0JrWgCp+wGSYdXWCaEg80 +qGcj8QBiqLwNB7fN/UU7vu/U7PGQr8wBJYuoflHyji80v4B+6sQ9L3FPsVx8m/Uf +lTccoClf2W3V7/sCAwEAAaNmMGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8B +Af8EBAMCAcYwHwYDVR0jBBgwFoAURJgGSOH5/XxtuCtrNTwJzybykCYwHQYDVR0O +BBYEFESYBkjh+f18bbgrazU8Cc8m8pAmMA0GCSqGSIb3DQEBCwUAA4ICAQCQkDUa ++FSNsD6ZCaoNGZKkjNv29oUfPVOox88HH6R5R68MKZ+4zIgWUflm3rNjrih10ODw +vSRH4i+kXl5yVMqdALs3twiAdOF+8QORHl78sgSYu5BTtSe4kZS3NtD4VERKWhxT +C5/QirGKstIYhlv670fE9fHCAb1RM2EjhcjYXVoNodG31qXBQfE77cApFh2V9XwX +uynwTWYfHYisviVJQu4XSjgJCJ85FXz5V4shFmZB4Qyji0S6pmgCjh4pQ+rhjW35 +2XVzW2jdQTFet748cDaWwqsk2+RFsmz2uK427J0/nhifuV2TaEumaAGU8M5CPkFb +ApE0GgRSf7BrWdRm/xB7OibHs7UiOWXDYc3LRQfSV8IeuZ0HPuA/JfJSgMZHtLQW +FkRzwhhm8y+1BhIdiPh3+vvCpTIgJTlM1YzoUkPmse3Qd4hMNRRlEGwzqbPsSCsb +YJFZavXO6r8UD91JPCRBwsPob/yuWFfsS9/I6v8JOjLhv4++Bkm/ISsoGDGUj3Sl +8OwcOpiDJBfJYO0QyN2lsI3BUWNxnHzvINwDLaYg+T+uNmNJ9uvoY7v3SRk8X+rA +/b2a6WOXBc7ahVFtLsdGXKDjZMlynsqYiKir7EID37jEqgYa0V4Xh1e8JrVf/WBB +kIr5dEOFNaktQ+kW3Envrow9AOMNw3a52lxnpg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +EZmgkj0LgCZpBe11gHI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +aQiML41OxehS/O3stjE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +CPtyTx8pWeffhgMoIKw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGtjCCBJ6gAwIBAgIEAJpqSTANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJG +STEWMBQGA1UECgwNU3VvbWkgRmlubGFuZDEMMAoGA1UECwwDVlJLMR0wGwYDVQQD +DBRGaW5sYW5kIENvdW50cnkgQ0EgMjAeFw0xNjAxMjkwODA2NTBaFw0yMTA1MTcx +MjM2NTNaMEQxCzAJBgNVBAYTAkZJMRAwDgYDVQQKDAdGaW5sYW5kMQwwCgYDVQQL +DANWUksxFTATBgNVBAMMDENTQ0EgRmlubGFuZDCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxvfSZYWw2JUvExjQmRVTcgW8Yy+a6kKNtTq0TpgcDxllo0 +B4p18az9ovgfpSg+IXT19+7JI6dEih4Sa4m4+x+4qjVT6Rf5jbLpz4GtdlnTMxba +D0qCJ0w53GkkUvUTMaIxG4pzTgfSafYubC0KB0O0ebuV3MnaZl/rUSDqEotRlK4U +mQuW/6A8PNRXHEiPpk3JiY7RZTP+Hw2+KouGMc08WXBIEfKtW/Bz6DXOt5wBAUos +CiAcpPlrjqxtnPEJlWBEuM6S3pH4zEb/4IUbrCL0IrK84PETGud8czHaQGufBzR+ +YhDcediXAxIcNrF1xHqB+bfxJcYODa719+sBAIdce64zKUUw/NAFKPTd/GvxiJ6m +fw7O+X7QHbBULQwgd0ED7sXGH9wYlNEHkNl6c+D+HSdrmxjrvk+qyC0/ABFafoUY +hwKvdkH2P9O/ykJvFXOq8OdszSOk1nO6if+9otdeNsH2dWvVztWDEgyvWeL/fNmG +bDrhXH8wn2J+8HSZV9Gyp0Z5bQQTCdGM7tNaLiMm64dFt8uhAxVSLFzEdFcH+tGK +SlYvO2bHkydCY7IADj7UXa8sJX0PDW7Izj83GjIDqb2ntBAS5JxgHCTLgyDdt42+ +66y/gzWnCmMEUILLaoY29Po6iaQZ8ynlIJWW9dXfWgYFgo3mNptar1beE8D/AgMB +AAGjggGgMIIBnDAfBgNVHSMEGDAWgBREmAZI4fn9fG24K2s1PAnPJvKQJjAdBgNV +HQ4EFgQUmllLW/kpep192amnIVS4WQDSRkIwDgYDVR0PAQH/BAQDAgEGMCsGA1Ud +EAQkMCKADzIwMTYwMTI5MDgwNjUwWoEPMjAyMTAxMjkwODA2NTBaMFQGA1UdEQRN +MEukEDAOMQwwCgYDVQQHDANGSU6BGENTQ0EuRmlubGFuZEBpbnRlcm1pbi5maYYd +aHR0cDovL3d3dy5wb2xpaXNpLmZpL2VuL2NzY2EwgbcGA1UdHwSBrzCBrDAroCmg +J4YlaHR0cDovL3Byb3h5LmZpbmVpZC5maS9jcmwvZmNjYWMyLmNybDB9oHugeYZ3 +bGRhcDovL2xkYXAuZmluZWlkLmZpOjM4OS9jbiUzZEZpbmxhbmQlMjBDb3VudHJ5 +JTIwQ0ElMjAyLG91JTNkVlJLLE8lM2RTdW9taSUyMEZpbmxhbmQsQyUzZEZJP2Nl +cnRpZmljYXRlUmV2b2NhdGlvbkxpc3QwDQYHZ4EIAQEGAQQCBQAwDQYJKoZIhvcN +AQELBQADggIBACV44MiTSATlVckHdyPBVXkH8pClOKz17rSCCqpzVFUhFULj6nst +UKcDmL/rTNd5LoGVS2eTrnzLIf7WH4KBQHsq+Tmfoe170yJ0w5l+51NXB3LNBMDO +8EtN9sF5ABW7iwC7l1GfpJOMr78WeWBrz16EiAX8DPxXAlWuNNFZ0ftO8wYRywkD +CKOwY6jvy7Hkek3C894QXB54egmI41docqo8riQKWhRQsdSyMBz6+EtQJKprcbhC +nIYSjMVcP2Ui+9ahLpbePuKN2mOUWT8W0zINg6sj4XmP9EO73DJYmrNtbWpBt6hm +emrj7AU8nQeDvOt2Ui2ZMziHnqwghFMb+ZRg4GsC1macqVhcdTn51viKNjepJUyz +Vd3VxXAed4rGoADaK8RG1+eJREiJxlAGlpEqLqX5KsaRYjYAvyYqQIKB0a0Nicpf +1VCF8S1Way2nIPf/NRAfFcwglPnJPG+KoSoN0ffAZOhScp+sEQy+qQI7PQ0sF6CV +bwDikozGDFuzKRGRzAauXsR0eLMG146HzngiQeXEPtP7MmuTIlJ7xdl0O1O1v1Ul +UFp9ll5Xw7eG0h27GWEv9gFgX12zRrEPMD4KawpVOwK2pScfrZWpDMoBpPSK2sxL +ISnOp1rk+g4/+XKJ3iO/yuoTYjcyrZ3r4TNjUHqdF3ffCO4S6ATEwt1C +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH+jCCBa6gAwIBAgIQRegVJuRTaiSaNiG8Rk8odTBBBgkqhkiG9w0BAQowNKAP +MA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMC +ASAwgYoxCzAJBgNVBAYTAkVDMUgwRgYDVQQKDD9ESVJFQ0NJT04gR0VORVJBTCBE +RSBSRUdJU1RSTyBDSVZJTCBJREVOVElGSUNBQ0lPTiBZIENFRFVMQUNJT04xFjAU +BgNVBAsMDURJR0VSQ0lDIENTQ0ExCjAIBgNVBAUTATExDTALBgNVBAMMBENTQ0Ew +HhcNMjAwODI0MjAwMjA1WhcNMzUxMTI0MjAwMjA1WjCBijELMAkGA1UEBhMCRUMx +SDBGBgNVBAoMP0RJUkVDQ0lPTiBHRU5FUkFMIERFIFJFR0lTVFJPIENJVklMIElE +RU5USUZJQ0FDSU9OIFkgQ0VEVUxBQ0lPTjEWMBQGA1UECwwNRElHRVJDSUMgQ1ND +QTEKMAgGA1UEBRMBMTENMAsGA1UEAwwEQ1NDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAI0nF5PEKWqC7yGqPIxn+ujZisUXj6IFepMFa2SNf8wXCBXG +dOB1V/lyY+jjYyyO3uWH+OSfMS/Ubc2TX9Bi1tAlsz9RK/ilCXtIcvD9kHsIvVe4 +eMPxdaSCSIOaMz3QyH19iVfP1kFimXv2mITBgbrgaXXbSIeDLvGrTHCQXVjpuI2y +XM7T+I9/w4omG8sUCkd2xuiGdg3QpnrKgiZ5EAbg9iJJsR0tyz5/QScTslviMsCs +gQrLKRCBSjxnvhNCRiZNoAnJ/4pXYujzCU+d/2W9HwuqpCpqoSMyMkmlRX4LerMU +9BfPILHRzdijA1/6Rgx+U2yG+nSwpXkNqS1ZNEhzzrndL26PzdtPIp1CQgOmt2sx +1VsraQarz96GaGQWgBZYULo4x0HrzgoB3dFfMrCT1flVDUeZUad0pVmcEG6DcekJ +GV2uG05tPfKWstQF9j+qgOJ2R2fgFIz5FxI50kB80tdAb7rCiVpn4zkY/ZogEUUy +r56FfUtdbFFqhI9+3Hhzfgq2iYXh9MZsQcWWUw7r6T26WMFGQWWC+OSHurybYsMj +vq2Qca/1/ti6FfiB3ig4I/ejgL6JqzN52M2xB+7weUkl72RI5xCgthLm2m0CnUKj +TCQQ8OLGLzU4AGXmcH1NKJ40RAzqK2ktOr4hXSWOLtRixq+s2Cfy4Ybkl58FAgMB +AAGjggHwMIIB7DAfBgNVHSMEGDAWgBS+J3MGpA5/7orqYn5Rx5CX8hTAtjAdBgNV +HQ4EFgQUvidzBqQOf+6K6mJ+UceQl/IUwLYwDgYDVR0PAQH/BAQDAgEGME4GA1Ud +IARHMEUwQwYMKwYBBAGDsV8BBQECMDMwMQYIKwYBBQUHAgEWJWh0dHBzOi8vd3d3 +LnJlZ2lzdHJvY2l2aWwuZ29iLmVjL2NzY2EwGwYDVR0RBBQwEqQQMA4xDDAKBgNV +BAcMA0VDVTAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDRUNVMBIGA1UdEwEB/wQI +MAYBAf8CAQAwgd8GA1UdHwSB1zCB1DCB0aCBzqCBy4aByGxkYXA6Ly9sZGFwLnJl +Z2lzdHJvY2l2aWwuZ29iLmVjL2NuPUNTQ0Esb3U9Q1JMLGRjPURJUkVDQ0lPTiUy +MEdFTkVSQUwlMjBERSUyMFJFR0lTVFJPJTIwQ0lWSUwlMjBJREVOVElGSUNBQ0lP +TiUyMFklMjBDRURVTEFDSU9OLGRjPUVDP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxp +c3Q/YmFzZT8ob2JqZWN0Q2xhc3M9Y3JsRGlzdHJpYnV0aW9uUG9pbnQpMBoGA1Ud +EAQTMBGBDzIwMjUwODI0MjAwMjA1WjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAHnM +SbuA2JvydP+PRQB4Txgu3nqAMYUZH+aYA7zncLQtvn+2q5Qk8WeXdowC6bnaz1HF +IrqzcwuIh3RMcBQAXZjZP8+aSJLPG93domi1Luz26DhwjIgUgkEFD7qDhKoo25Qw +ynOOml43RORivzzalX3C1LJ+iCRDfqz6A0iL0XXGVFF4LitQJOHe0AvUdvaucV8j +n20oPHjbrux8/PMclCnDJ51YLRVM2JUoK3pNYSjL2gdVbtYG2JOHzwcF7kprMqAH +03NZdRXNZ/TsgAJ9FoFhGg3J5i93J5l+YqZX7XVkBpw94QyCzYWlPhrBgrQHyFBf ++PZpeJZbqeJxri7iU2f8WYrMxJhZgF2+nrKiGsMFR8ZvxarY/j+tfCDW9xc5gebG +3saMyvebhzqfW/cNv5nnAY4BxeCCePH9j0G21Gdlm0Kqu3IrxK8h9kInqp7Q7mgW +R5EitjfQ5d+hVeL+AmDF7FQab3WpuD9+cYplS+DaiywPNohTc5H7bGGCxuAGSost +OwqZnfb+Vkm3gjGW1uvSp2iwL+6mTg5WXHdz/krVMmqfNSno1gKdhfO4lfU+RTM3 +h/dspuiq6fzxZ1coNorvG6n+Hp6MOA9GTSiY195EskgqtmWYjOj0C8GENC/b2Z3U +nrPqx5GQNLCcnrqz2pRmz4MDoH5TQqUq/bJKK8zo +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEOTCCA8CgAwIBAgIIPaO2TduGmXwwCgYIKoZIzj0EAwMwQzELMAkGA1UEBhMC +VVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NBLVVa +QkVLSVNUQU4wHhcNMTkwNTA5MDU1OTAwWhcNMzIwODAzMDU1OTAwWjBDMQswCQYD +VQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMMD0NT +Q0EtVVpCRUtJU1RBTjCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEB +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMx +B+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsE +qMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJ +lDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0 +NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYh +d5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafP +Orava3/DEDuIMgLpBGVlAgEBA2IABCPidx4uk9voaQ6uGpbGisVnf8ckHNyzNBYX +cH5wENZjaEWMIoIvUUKLWco3sijaZAaqKweGj3+ShELaRnFMGe7n5HnEPrsZNs4t +jTGuAU3Er24Q+f2e19/evYvOCTCZ16OCAT4wggE6MB0GA1UdDgQWBBRRRnZ09PL0 +YmhA6gAsEh+IbgcfRzASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFFFG +dnT08vRiaEDqACwSH4huBx9HMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANVWkIw +KwYDVR0QBCQwIoAPMjAxOTA1MDkwNTU5MDBagQ8yMDIyMDUwODA1NTkwMFowbQYD +VR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2lkb3dubG9hZDEuaWNhby5pbnQvQ1JM +cy9VWkIuY3JsMDCgLqAshipodHRwczovL3BraWRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VaQi5jcmwwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHDANVWkIwCgYIKoZIzj0EAwMDZwAwZAIwZlIq0gnQisSRNreIq3beovqFD8gZ +yqprGJ1O6eUOAZR45XutKN+VhJ9H0opmtGjpAjAmnidPa0SaH1Mj6FLUVhjau8ZK +yd8mbWh5hqxxV9zimqxewGVYwSc+luE2CPJSouM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFbjCCA1agAwIBAgIIZtkQdaufpxQwDQYJKoZIhvcNAQELBQAwQzELMAkGA1UE +BhMCVVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NB +LVVaQkVLSVNUQU4wHhcNMTcwMzMwMTAwMDQxWhcNMzAwNjI4MTAwMDQxWjBDMQsw +CQYDVQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMM +D0NTQ0EtVVpCRUtJU1RBTjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALJ+6vSvOrz0i33/z1gRExcpTlVMeAU/OJ4bQtkq6GZuTrXsAhOHBLTDfUD1sz5Z +ZXVUMSVR8lQeeL48yD+ewKSQnKf1Gy93NXM12SUOj6ncwNelzAtPTAaX8R4n9B24 +/pJW6wCMWE2QPxNQ/XOKcrwUuVGsDUDFB/1yucanpeHeRCkbcuRW6PiJNRQ+F3WS +OlYiPaX60SH5J2kBDPfxwOWwJeGoPTCZ45E+bJGpZgQclf0FWR4TOpnrsQNzUoGn +AsYxnDxdCZ8jSwHGowZ1jmuInACaF71M76xBlfarxE4lS88FSWxmY+egft/BbAcf +YzCw3s7XXSyYj0cVRtd8vp8nk01qW43FB9VhO8qqaLRDbhts8pSpgPatfxquiAJ5 +un3gBVK80Ps3069REyzAmpMeLX2S4WZFGpotQ39r4wAdiSTmNVZ4MOSsG/3hulu9 +Rcfm2SzDIgHqEM9Jo4JDuARRHaYUaF6XkjknE5NQa//EWBizpT5UdOJPgWlCx01K +IeVx8gpLYZyeGda8YHE2jbNy/R4g837JFXO7G9X6gkAEJyDfOjPCWOu8WZ3A3WRq +s4NhTR8QckRjNjhMWxN6p44QOiWkqFiwysCLfjK99lxvqipzX18P799BBGA5c51E +rs46Qn2vumUlF4WxGcdVj8MQQ9VpJZwHfwCaWGexhMIpAgMBAAGjZjBkMB0GA1Ud +DgQWBBRL3Da6vTg25mo7xdmQ1p8l8UxA8TASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFEvcNrq9ODbmajvF2ZDWnyXxTEDxMA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEAsaBocnKEvXJUsKHQI3co89CMygITERAtyPaybRYO +nJyhef957PfDGd6ARif56zif0Cm+laDBI3g4gChtbagb3OhRlMJ+7T0EumP2rMvX +DOwZ4heXXcLi4cpxcYB09Ic9CuOq7jOQOOsXLNzzXjOm++J2McsSrQpvL1r40VAK +NvCO7NIdobkZ7mXnL1nhw/YAcBmr9LUhISBgBsfsfSHLs/e+HZs+yA6uD9kYawq+ +/YKAArMaqJRFXLxQsZMDENYdvsRUs5fkUehf9U9b58IN41j9B9JY9QIdghi1NwjD +zx7Rc+50tve/w0aanJawrCNJ5S5aQxFUU6mvONUIzhrmD6DlxD74Tsp8xQkJwv3/ +OpAExQbbLx7iwMDQAiA5chi2mjvU27JVK9nMn2hDqDG/ggKA/nsOvP5XavQi1Tuy ++6uDI3sCw/9cnmSqOe0HncLn16tTIz1sDHrFUJCGNRlBzqWuq4+EgsLX8CtPe3GR +FyDBPg0yDot5a9qYNMZWL08hqHJVBiH4PeqAMw3iRB61stWG4xBup+8sxp3eI8oV +Of/lB4hOzcP8B0XamXuzblGfH9128s4VH8qH/tvnlTpzjOcD9mUysw3sCEcqeubv +IoJmHkXIMCrqIy8Wr8cmjCXxBCnn3UtBhYaO1qsAeyiz7cH6m+nLmmk2cdfrPkWt +hBo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFbjCCA1agAwIBAgIIIGCh/YI907EwDQYJKoZIhvcNAQELBQAwQzEYMBYGA1UE +AwwPQ1NDQS1VWkJFS0lTVEFOMQwwCgYDVQQLDANHQ1AxDDAKBgNVBAoMA0dPVjEL +MAkGA1UEBhMCVVowHhcNMTQwNDIyMDYwMzU0WhcNMjcwNzIxMDYwMzU0WjBDMRgw +FgYDVQQDDA9DU0NBLVVaQkVLSVNUQU4xDDAKBgNVBAsMA0dDUDEMMAoGA1UECgwD +R09WMQswCQYDVQQGEwJVWjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AMZHiAXGBvcRgEK+OMzI7ul4ZQrli1Mb/l5yzYfWNYUWTYTykJCfRV7FEFT4QhQz +ocdFaG7mmKwaskM6e8Z7vO6/x/Za+iwgn6OQwUU0Je/Jte3QqCB7un5MTcCHNuJe +J+D95B/E7TbYFOaofD2aPcAUktWLIJ/qCalxJ6fbs83j33t9p7FBi4eQJ7dWdg1B +SlRUdQX1Jvip1aYgvWcrzsFGxp8aVsyVXkArnbgSzz3EZwM8aZp6iP/U8YITjDjN +T+nsWkpOkx86MAuNNp0oJ37V62f2eyMlhymM6IEyzQF7Q61dNHDt+OcU7aZ9zKT2 +RkIuEpgIfvG8O5ryGKcj9Y0aTlJ0ifvM4FTOWnqRqvKNtzuQMORpM19dhZmbP1Ek +4f2ugc6JGRm0p/Qp5tQOrGY/KEU8jumrwJRm+MhWPUG4zawStmBXTyQMrYWQUnMu +3cvq5JR3aVD6iSJs2/T2G2FGpflphpQjDYWFsW4+dkp7z0TsiQY5jJSr//NDtdKz +sFhYDf9taprTtRy4DqSkEmMPPGKW+SVe+a0OMG7Sg3nZy22F2L/We3ojrOFY0kLO +BWICO5/syqr93sOJqBCbvCGGsxe7NbbuyZ3qxro90yXz2wVIiQNUPO+/hEElOqnC +ETm0hRWFovQ0xnBuem5VP01xqVo14Va41vvy6e/6dYkNAgMBAAGjZjBkMB0GA1Ud +DgQWBBTZOzxEQuUXYMMxRLT4czjFqndQkTASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFNk7PERC5RdgwzFEtPhzOMWqd1CRMA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEAel6PWVbAT7cJasZrgzybFWQeWs1twHz+NGIy7Eyy +xSVQ6HOPY9OAfbYNGHKqxIFMLXI6biR4y2XuSUrznFBNE4zF7wb/BBaAgw6hmb/5 +NfQSiwrDiFTrosJSZfApftxtaol102f8M5VaRBDmVrBfLqQRD2yhUk58nix3SoNx +ae29PiN3GbfnsLOhb/aJsnzuRBtbqhoH/cNfFHSj/kJaVMaYw9BgCDa7hp1Wum0c +3l4JiMQdIHoXBHkTX9IH/Ts6R4U9SBEQkJVu/ExxI2IIEkvA2mG6Hfk7scEPNZSk +T1xsO1WzpfjYyn9JagBwuNCX4m6i0vXo9WwFWMf10qvCcWB3n6WwTJrReFwAsUu4 +1TpayShJvhmT67xH4YG/1wIwurNhl14ZE/A02UZWRb/bbTg/ZCmF0BCONUH++ue0 +Eq7fud7Vn9BGpsT6lEi9Cvyrblb3CmciyhK12ErOmMowcbRICVcDXuxgggTfMKfE +m21EY2oBv+RUkGh0tSUKVz5coDMcPVqElg22weLrh/4A+8Ghf/fH9gFyjloiySNY +YFWaE5zadsInXFLOfJIIon9yxGVIbv6SQutsGyWVYeG+VybXh/N6Dra7aimLmewt +jZvmUvRlPlXX0muY43GcSyqeBxh5yPDmeyNhfFsEkGlIdYoWOR/Bn6ZVdsqB2czq +U30= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFbjCCA1agAwIBAgIINmbGCzDnk5MwDQYJKoZIhvcNAQELBQAwQzEYMBYGA1UE +AwwPQ1NDQS1VWkJFS0lTVEFOMQwwCgYDVQQLDANHQ1AxDDAKBgNVBAoMA0dPVjEL +MAkGA1UEBhMCVVowHhcNMTEwODI3MDU1NTE0WhcNMjQxMTI0MDU1NTE0WjBDMRgw +FgYDVQQDDA9DU0NBLVVaQkVLSVNUQU4xDDAKBgNVBAsMA0dDUDEMMAoGA1UECgwD +R09WMQswCQYDVQQGEwJVWjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AKOXtIaWXo43vsxI8p24D324cdomIgSQufqDmEsnjCNDvDHEtwhuNJQ5Yl4XHKVY +aLk3glomegeh9tDaBn/E9CeKvZ0UNV5gG9eyfw3po/wxU5uWz+hpBD7tkiTmfuSI +B8crEXZertaTy6g+sZNT2R86LTrG/lY7yvlNT54dpyrHqnTEuZJGm2lmCHWsYZBJ +PUBbK7orcf0ZpwiGsfPzSE1Dk7HFf1n5qWgbHRTr32OxPTwTQxOxo+e0eaXMZjMt +zEhdsgnz8ZVlZ1ICgJo4vFS9SOYwZ5aene/XGFLZteQLn11/QX5oHd6VFlCVIGl4 +T4AQSh7Qy+oAttb3lphCSVf+1NgQIZXCEAbOMEBMZHqWEWKTzGZkajlSCA/avJEq +XHMW/9HRaE95vjI0+1Vn9GwdM/pXTrJcXwQUA04hhFn3cH09RbByuvFJYNwi1EYr +VWWnhP8xRuR0tdIfXk61bMbfO6D+qxYAbJvc4FR0OAXqZMb3M2pe28WvyMBstpnP +qVvOU4bfcXvg0sDjnQZSsBtCqbHTed1pmWapweCV1imA4HLMVNtZ4nXgcLf3d+S3 +GzOuybH33+eHkrFuayzClnkRcWrwv+eJ5UqlJAiKxkQCHXkMMp91FQ7lIJWxafln +h/Dkrwd8fuk15r3H4rbWKRs4zo6bS47a0hSA1HsNrSIpAgMBAAGjZjBkMB0GA1Ud +DgQWBBQ/xQkamZV2QcpvUN3VXYHIwS9qVzASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFD/FCRqZlXZBym9Q3dVdgcjBL2pXMA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEABH6M6aQ9XziqoMkeMJPOgASWmKVJmf9KsGH2L9Eu +aOFdC5ZSiyUMkrHN6FAj5uVoE0xYEIn+aG6RQpye5zkPqHARcr7gM9j6qyR9wpyO +x+1HeP9Hl6wu5Z9ORYibCe1I/vQ1lsCXSYIht5IjIS1/E3n7IUSBlMYm3f5eRoRB +i+UkEFvDlVOyeTP6HGqCY5WubecBFchGtlou6Osbrg0xJOyNXDF5l99KPmDFMrEA +6dcEWnGYpKiq8idHgPjO0A7wsKv0wMYbpVoYq7LPmGAdX9M195lXDARwvxd4u9ke +vDRthndoPHuM1K0y+MDT2ZhTIV8A1Pg2LZSFiro232Z8ku2SITN/DwVmiHY1LeB3 +8ZZ9pPx66+Ze/YAs+ZbaI6De1uoBBfKFG8U2kCq1Ed4YnKOwZag5XYSssqu9vD5x +UB/ACQIzzffHwN9AIFFq5kI+ebSd5idKZgvNKmf4ODoPP+0wruDDrOFyJXeDQYzE +He/6dwSrmiP6Hqj6wo7y84TP7GVgf/zLk2CrfCF4aJPGysM8ezq8X/dcFG1QuxhK +rDWDD6cyA2RkgsH3uZFCkxOvg76WS5QMrONw9j1is1v4bWn0TmvQRi9lnSiySoR4 +z9S/BmiulCE1HMU+YLikuqnbMgry9hIvH2iIXPNZ4Rg3So8gSIzzdxVTkhjYsPmF +4vU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIvDCCBaSgAwIBAgIETW5OlDANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +TUQxHDAaBgNVBAgTE01vbGRvdmEgUmVwdWJsaWMgb2YxETAPBgNVBAcTCENoaXNp +bmF1MS8wLQYDVQQKEyZJUyBDZW50cnVsIGRlIHRlbGVjb211bmljYXRpaSBzcGVj +aWFsZTExMC8GA1UECxMoQ2VudHJ1bCBkZSBjZXJ0aWZpY2FyZSBhIGNoZWlsb3Ig +cHVibGljZTEfMB0GA1UEAxMWTW9sZG92YSBlUGFzc3BvcnQgQ1NDQTAeFw0xMTAz +MDIxNDA1MDhaFw0yNjAzMDIxNDA1MDhaMIHDMQswCQYDVQQGEwJNRDEcMBoGA1UE +CBMTTW9sZG92YSBSZXB1YmxpYyBvZjERMA8GA1UEBxMIQ2hpc2luYXUxLzAtBgNV +BAoTJklTIENlbnRydWwgZGUgdGVsZWNvbXVuaWNhdGlpIHNwZWNpYWxlMTEwLwYD +VQQLEyhDZW50cnVsIGRlIGNlcnRpZmljYXJlIGEgY2hlaWxvciBwdWJsaWNlMR8w +HQYDVQQDExZNb2xkb3ZhIGVQYXNzcG9ydCBDU0NBMIIDIjANBgkqhkiG9w0BAQEF +AAOCAw8AMIIDCgKCAwEAxXMRyhyDlTTpiv6BYQlAMkVCsJmK7mcRgiVTAimoZNpP +rjkv9RQQkkC7wBM5KMczdSibH92Pdk4d2iYD0lNvLUd1ParPa+PV5qlixEX4StWE +30Rh9kwjn2JzkvzkcCUo/UDAGRSrs2gPCRF8/3+CsqRZ4TMkSGyRuG2JTx0zvxOc +gNgMw2RY02T6UlbZOalfSCwFXRKPBW6SJqjvoecERuE4x1aJmQytCXTjz+Px2Qf8 +7ooVXWqEGG2zpD9XM2qmdYOk8VFMXoF4yy1qvKhfqWKw8+Y31SHPjMqN72UI6ZQO +b6Pnr5yww8nuT8aJkCOOOpo9bY7Dpv9+zXc3fXaxYQRwha8tEHF6oL8PBfJ0DEEi +CAdCS0Jv/lXLAPNQAa7PlSJati3SUUHiUyOVpY5ZfwQjx17x+ESm4R1vYOT2GxGb +DTpnXWqgWmmr6HL2HPTWoGdpklyIMd7mNL5Zr6GWJs5MUaY3N59rExF0IfT7ecTw +B9y74cMyRtfbE75/iv7Ht7dLqjzKzGzBBBUMr9MS43lbUzPByz6QfWLONs0WG493 +XUvtFA8K+wRtJ2iacTt3X/BDzIX+UOA+tMl76bDhZQzv6tDxz35UEM6qnhhnxb69 +u8BVIqH9aLhwZYtITgn4vkvio9RNwC7DLbiIlLU4Na/ZWroY7Ha+67p0AbmntQcC +kjH/xAy1498+yoBrnYphqPli2bOtH2NO7cWmOzlIClJfH4SENzMaJco1m7oV1M4f +DXQ/cQYon9a9tZO/v/5n8k8r2m/sXLnfq/NqS1p21jp+s3MNd+B+GQ0SjukEpPbv +Q7iS5UudPZ0lf2S4E4YoAZfMBVNQq2rDviwBuEJI2PGPpq43jlhe96o7ziavxdr7 +6/vZAR3CGO18ey+3dl0OUvaudMD8bYvmMPO2lszR93VzB8p7oPCOo59yX25b+aWY +9dg7/r/x/Aj4/AamJ80Vo/xaCAzI6ZthuGSoi2dmT6f29J1fL/yS61Cbe2HmbsUj +V61w/3G16PwDbs55tsynAgMBAAGjgbUwgbIwLwYDVR0fBCgwJjAkoCKgIIYeaHR0 +cDovL3d3dy5wa2kuY3RzLm1kL21zY2EuY3JsMBIGA1UdEwEB/wQIMAYBAf8CAQAw +PAYDVR0gBDUwMzAxBgZgg3JUAQ8wJzAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5w +a2kuY3RzLm1kL2NzcDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMWd1Z7n4Vy8 +LxA9UpnvMZ8++RD2MA0GCSqGSIb3DQEBBQUAA4IDAQBdDq4vLYSg6p3dA311ruWR +EmK1LvmxuHk7ozt2Om5jTorDTiSPvbLMqcTotfIE3uej5isKkBr/8bZbxNLPWR4F +bXWm3AF/KXAqUyh/OfuCGG3d3wJIGb2w95rJTFFVUPwTZMo9u92Cj9ktc3tszwhw +F6nuA58Z64XeS2jsxCFFWWzMSCGrr544OM9ghPEFVgrhhn4fVOLil8LfKT+2VsBf +V2Js83q8JjC0JShBR3YNSNTteWMl6pE2BEQwkQfUDYDSMegiE4ObGZxuyZKiqFoX +uVT1H8WGZhZuntw6vwjHQCLc9tn1EGhrG2+52epvMWrcPzmd1R5Gg6RKaY88lalm +p8ADj3Aq6pX/zakPwzzG9OHKOLR3n3JMNTJaQTtFKcestzoJnUtAoiI0g3+UPJM6 +NBQFzWtCLtQOQ9s4v5PKtCkGc2a73jIHW3UMPugkdK2/gSt9QMgnlxbnXV6teuKP +JhaaMTHXTxPr2zbbFm1HP9xmb00sdfC4gHY8Q7Qevrgi4dsrj8Y7ahSUBzsqFm5g +Mv+prBy9vLyLoSVdG9uMwW22BKgquSjuYo0YhWFj8rZw5/CoqEmzmL6yVGEnE0Dd +rj6MomwcxxNeYUrFMrqnBJqCobcbp0MOuhWzKRdjuV9/Mv693/oOzZBINJjSMKVx +dcVKs2LeZTjLrhW4FEvu6yD92eT7XImsewXGtvQFu9VCsowXT/ZT83qi6dhEqA4l +MsQ4C1noozz9OPdmpV6c+fbjRJB8A75FnLHJKtgDlimI8GMAfuwH9GTuXqG4ASOw +luxVN5Ci7J/1Oi/vYo4NpfSUojDnS4WJeSgEEyvjJ2PUFK18rnv1g0mkdsLIykok +ZyCQNQp8PIzKgQCkBcpm/K877cM1q+xHaIx16dmds5sZMncS8AxtBjJuMH1RMLjL +DY9MqtqWrTFmhmX2RqqPkK/rL5BAC7QvgmA/GF4F5H8w3mbTJaQvAupWJAhHFmSc +0W2p+PydGDdqm9uqN6HINfMjrsSBstV/TOy1ydHosrg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +F44GAWXJRdwjgSjprnLx +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIII4TCCBcmgAwIBAgIIMZeHf0ucSwswDQYJKoZIhvcNAQELBQAwYzELMAkGA1UE +BhMCTUQxHjAcBgNVBAoMFVB1YmxpYyBTZXJ2aWNlIEFnZW5jeTEYMBYGA1UECwwP +TVJURCBEZXBhcnRtZW50MRowGAYDVQQDDBFlUGFzc3BvcnQgQ1NDQSAwNzAeFw0y +MTAyMDMwNzE3NDZaFw0zNDA1MDQwNzE3NDZaMGMxCzAJBgNVBAYTAk1EMR4wHAYD +VQQKDBVQdWJsaWMgU2VydmljZSBBZ2VuY3kxGDAWBgNVBAsMD01SVEQgRGVwYXJ0 +bWVudDEaMBgGA1UEAwwRZVBhc3Nwb3J0IENTQ0EgMDcwggMiMA0GCSqGSIb3DQEB +AQUAA4IDDwAwggMKAoIDAQCOnBO1O+D1eDbPQaaZ5OeCrmBJsSj3vKX5uuV+BqJ1 +hgBlL+4YDSpCR21zd43ADXQMLo2miHAvRarzABFqlsoeYq/pcU/8+wIbEGW/sNtW +qOnTuBiBODkuivkH81aZHq5Bcdm6L0ozhpUEjS5lPl/OnCIpF3eFREAPoH+3m2aO +FlBVDAmO7r4wttB9OsCFHz8kKE94BM9op2fM/BBDkcpsv5gJvL/rKLf6fOCFoiht +3zYSj7rd9+kK7mS8w7YIF3tzQa9EExjX8q2Tsw6fLHOlDkU5Bm4i8cPPnTpFAr1Y +V1PqXzb/Ecax+WwGIZvyHOR4ZoZG923hIfZfLxcP5DFYCcUZBznlgO2s1MQJ8biC +WMhQCkmi33lkZ407AffVfSkCXEHh7SxsoQbcIugtEvvCe9dkJG955Z8UpEPavoOW +LVkrVNgjJOcd4s0C2uqZQ71E03SGQ4pv7mdnYJrrMQ8vows+HvW6GXDv7FTW/3kD +H8LJsxCPIWhl9t5kCvwgCnqz6sFoY+RtSFrIOrGx0UDSY0B78ZoR7fLSjqQ9JXor +lRcX3CWAb21RSWAsIvn+RdhNQfaovzjPnFVJYzep8fEW1qxKBMQDYPehtrHGt2gS +u7nNvGzAYe/2Fq3vL2o6HaeSZyu8M0BMLPZ23M0Jv7M9itDpp7LU4pe7HQu9I3iS +CRP0+9oUaA8wsS3YYajuJcPxipW96IYFAs6TnHvm3+jNMGp3XF7EA/l7Y81z0iIj +nVLyBKlzThZj4yDykKfdbJU+Jb7pxozgCH1yayGT+ZHRefAfUcxm9uFFCI7IW1hU +f8pCOqxlGjfqOcnmKwVF4p8LeD8Oc3woaNPSf1KFiHi90jmFAgqJxdwQYdB3EViw +iTDC3yHzHnw0LOIBvfqKFr4Fnos74V3M5nu5X5Vg0Y3wqDFc6rfOpBoAyLXOlbMD +kMkRw1NPbu9I8K386HV5dA6KgjOQZkeiFaoKpt2abDU17fQykdSVFqV98L+CacJL +WImsqHWf2CgtUNWLzY+r1IcCAwEAAaOCAZcwggGTMB0GA1UdDgQWBBSeCHjb17xS +icOZAqwXLpy62p0jJjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFJ4I +eNvXvFKJw5kCrBcunLranSMmMD0GA1UdEgQ2MDSBD2NzY2FAYXNwLmdvdi5tZIIP +Y3NjYS5hc3AuZ292Lm1kpBAwDjEMMAoGA1UEBwwDTURBMCsGA1UdEAQkMCKADzIw +MjEwMjAzMDcxNzQ2WoEPMjAyNDAyMDQwNzE3NDZaMBMGA1UdIAQMMAowCAYGKoNy +Aw0BMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8u +aW50L0NSTHMvTURBLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNh +by5pbnQvQ1JMcy9NREEuY3JsMA4GA1UdDwEB/wQEAwIBBjA9BgNVHREENjA0gQ9j +c2NhQGFzcC5nb3YubWSCD2NzY2EuYXNwLmdvdi5tZKQQMA4xDDAKBgNVBAcMA01E +QTANBgkqhkiG9w0BAQsFAAOCAwEAOc+bOGDFq7ePjBTEHIRViN+FpfepvQHI5qfo +iid1KNj0YUGRmlfccLVO7hoizT58tgFrdAsYgqxE0V1c6Uw2M6wJfmTlBPdX7dnH +Z+fwQNg2MTRVUX4cDWbItOdF1duubEMvWbwAe/D/Zh+NmktRQW6MwR8VEbdd50+s +SkA+1oavXGnn5hvR6K7fRU7av7VZtDhtUubAHqRs/6NDqztlEM6VAm2j2UdCZRVt +kFhQMuPXxyyMjcgeAKklMBaTYNguqLWYLCTpsXjwcBru5eK7B0tuh9W6d28PP/mX +D1kMhSZfnwrQ2IqdxR8QQaY0O0+wWE/yR585ApUoscj7Fe9x51KGikE/MRTO05h9 +EZ/Bs57uEPX/n5dLr+Kv71lwtlR/MnITdyyeaLUzSIJbb3AiBW0Nbx4Y3Tf1JWst +Nvp89XNmPClzUZ97Fhcp5mNfspRAXxWUhvXBak8vKTjAAR+hZdqQhLaHM9doTpN8 +EztpNXaJeYDjWQhAMSnLZwkWjYH5Iayg+GOjMbIKB7KicB0QJjrMg0mqi1q/myaZ +ezKr67CM21/ohJOmn8w5r6XDO9zmabOf/zmZCxermjMfb/th/Qj0qAgs2tF0V5rc +/EQI7KKXq9fujI2E/2Tgy5+xuLbW7Up6NqChGnEbU0LATy1slBqswskbD6ybhER8 +YGjv6ZQZV5jhJZa+9z0PZXmviziNwa7T1H4jJyAKTpOY86sNWpakCeiO/wcXwl4X +DFOPbtyTrDOk/wL+kn0uGNPesFVmLsgvupd5Y1XelxfhjUtrFQMWzcGTtMAHTIhv +Eh4Np87L9JCUoFzAtpz1iqyWc7x6JGjjT6z2QtB4I50kKRNUspGYpBasT61ZG5rh +8/hOWMpjSGff8qiUwD0DayYweKgUuLyOBXVfkXPMsEtAqyoJpVfgA5uUlA/qXEui +ZOw7VYY86Xb30KcAm/YE+XdT9+Uoz4qO6srbSP6SvXTXmRa2G6sGjPwP5s+4RMk8 +J/8F38z+jQrAmv7tYJI7lsE2NL56 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIII9zCCBd+gAwIBAgIIM4o4P8To+IkwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UE +BhMCTUQxIjAgBgNVBAoMGVN0YXRlIEVudGVycHJpc2UgUkVHSVNUUlUxGDAWBgNV +BAsMD01SVEQgRGVwYXJ0bWVudDEXMBUGA1UEAwwOZVBhc3Nwb3J0IENTQ0EwHhcN +MTQwNzA0MTExOTI2WhcNMjQxMTAzMTExOTI2WjBkMQswCQYDVQQGEwJNRDEiMCAG +A1UECgwZU3RhdGUgRW50ZXJwcmlzZSBSRUdJU1RSVTEYMBYGA1UECwwPTVJURCBE +ZXBhcnRtZW50MRcwFQYDVQQDDA5lUGFzc3BvcnQgQ1NDQTCCAyIwDQYJKoZIhvcN +AQEBBQADggMPADCCAwoCggMBALuIVl9k5qht3Hpfe5pX/RX81POaxcv3Fm5AEnJr +kVdSG8SCU4LpKoM1eboHdPZjSnr6V0GzFV7/iVy2PJsoKB8544r+rp4zg6GxUeyL +GAncEZaTUgZz/Nn/2Nv4vQ+dNNJlFO2pTtOjmGALy1TdMd+gUeLXImiZLGK+hme6 +QeIe6B9Iv0rrLs+ohzVBgmCTTbZiE+Qfs9rAP2h1/s3DNLhWwotsn+AGG6Nxq1ww +DJktv/49Ok30QIaW5L116n7NwavkirRBC4vy5UpU3cdiH7xLvDZSOn8968cOCCj0 +9UWXV4pg86euCTnK4ybHZp/MNbFD3/EonHk0pEAvR1C1ct85RkfKKgxMJqAZ8jTV +4lRr1Q75p8gAG3k9askU381kD1y5KdAejhKlIJAR6sIq7Y9wHLXv4qnjkI5i1DU0 +C2WWUPIrKukci7khjl0bWiQQB856aYku8EVV7gDOnJgEt0iGqIOBXPaES7X3uOyd +pOgjSfhk/O45qgXyet2FWsI/nv1GeShU1fUmdCHrCK/kAzanPIH4uV3nWRfCSV9o +18kKwDrZvriT85QoZ3hyen046j2JJA6lObU09nPAeGjlXhJMrs+I1llvlptOx1+R +HGgL7aVrjBQpdL6wM+KB2yLvcnS+UFIjNBytcgJJbp8TgL5bpReUZDV9ssA6cXC7 +WX84cXc/UC6TU5RrCVEcOMp/Z2SOm35eI389XfNT5dYLhlynhHdCzKXD1XbycLY8 +oHBbBjeSwYnuGHEATC8Vla5htrnkkfHl5q2Rdr8Pz/UVhDNEskEoVQcCLLu8tyA/ +NoiklE+QNjNtLRZ/Xbe0VlGvidvWSn0qVwrUqWzhG97fqVsCthfxuki4+Ls2fqjV +X7RJordM7UA9QS7gy7jJdmieAX7BnKXbZe15vIC7SJhrVRknIb2k4vTSoTSdwdqE +8lH7TRXHwUAwPxXn7Y3JfR5o1vsxVAbpMMgD1GW1wZJCxsefSypn6XvNMsHlnfDq +c7cKO5KJLejtm6fvEYQVvxLXmQIDAQABo4IBqzCCAacwHQYDVR0OBBYEFCtxEGF6 +T51ngeNcB4+FthDyNFlqMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +K3EQYXpPnWeB41wHj4W2EPI0WWowKwYDVR0QBCQwIoAPMjAxNDA3MDQxMTE5MjZa +gQ8yMDE3MTEwMzExMTkyNlowEwYDVR0gBAwwCjAIBgYqg3IDDQEwbQYDVR0fBGYw +ZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NREEu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01E +QS5jcmwwDgYDVR0PAQH/BAQDAgEGMEcGA1UdEQRAMD6BFGNzY2FAcGtpLnJlZ2lz +dHJ1Lm1kghRjc2NhLnBraS5yZWdpc3RydS5tZKQQMA4xDDAKBgNVBAcMA01EQTBH +BgNVHRIEQDA+gRRjc2NhQHBraS5yZWdpc3RydS5tZIIUY3NjYS5wa2kucmVnaXN0 +cnUubWSkEDAOMQwwCgYDVQQHDANNREEwDQYJKoZIhvcNAQELBQADggMBAAeNMEa/ +titr2mfOq6PJmV+neeNAkBngpLeXEPB1w38QTrIEWeVNstm7Y1jTilg2TRDqzuPt +CEgsD4zZNFolJ2Mz1GH3RhYs5jOBIFgycZrY8lqfwt/OBTbdbQpEjhcbB2v7VkAs +PoavM1h34CnftN7svvetHwaegAs+3vNi50z72ZbpD34j7z2iwRnweD+pMBcOKRE6 +bRPZxwr0+oGWHXzPRAnenZozRmtQ87wuuCCZQWQcZc9dozuK2C2OsUXmArEHNVnH +7pxE6ZthQ1hFBHB8YTRbIxW705XQLsCYK0f8T8Yu6OfBjhWcgaUGznls4Fzx5d61 +sBObpjfyQ3f/oYhZMwm7u4X4TA6VBitTD6CHDxb74YFaDoc+RuxfrvcADpn9Ux44 +XnGjqw10+oDPdkwMJUXi4afUZQY2VvjnqWMsz2MLJxDlz8APjbRHpTL47Zqb5QY3 +1UjYYN9kq3d+rH0OEHaQCgaEX5IlU8UIefPWCqrweoukJAT/H1xXbEcFiSbgjPQH +v7hGbbEX+d1IZyLpJCXWtHPeAmOYva5d4BH4z+yOwAiyu/E8iWIN1vyb1nPq0Jcy +l3T0PmkTRdb3IsgVspjYjl1LCOmMvjo7TyNsZ08fPwbcciJ285yQkLDM1Be9AMra +wA1V7V31Wyq6dkR/Wn/CAYC7SHfWgux1/t9dqYdH8U2QCxbj8ymgVSDL+Aa8kjyp +Hh+3FdehRQCPAOffVcdp2yVaUCYwY3oC5Cfas6MX97eZN4SBUpy3TiMwB06CPpUB +RjvQgTvWIiYVjQsVNwt/nFZDOoZLZI9PG0w/l9fI1uc/ptfJWAlFjW7amUcNGon+ +dKaVT4dX7B+JfPG0qCZJJtzNBKQgNyANfFPt64M6Wy9rfqJBRbAZ8a6EbHc1eaBm +xP0eMuSPTHlBuxuy7soAWmmxw3r/KByeiAkniDNrNTuBxnFGdyM/BJ4xxP5A3rrR +ebP1nx/ai01Zc26AykiljPJ2yLiesx09LDb1i89/wj7neShDalEzQcqGZA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIII9zCCBd+gAwIBAgIIR4xiui1FzGYwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UE +BhMCTUQxIjAgBgNVBAoMGVN0YXRlIEVudGVycHJpc2UgUkVHSVNUUlUxGDAWBgNV +BAsMD01SVEQgRGVwYXJ0bWVudDEXMBUGA1UEAwwOZVBhc3Nwb3J0IENTQ0EwHhcN +MTcwNzE4MDcwNjAxWhcNMjcxMTE4MDcwNjAxWjBkMQswCQYDVQQGEwJNRDEiMCAG +A1UECgwZU3RhdGUgRW50ZXJwcmlzZSBSRUdJU1RSVTEYMBYGA1UECwwPTVJURCBE +ZXBhcnRtZW50MRcwFQYDVQQDDA5lUGFzc3BvcnQgQ1NDQTCCAyIwDQYJKoZIhvcN +AQEBBQADggMPADCCAwoCggMBALACNlGjC8iJau6A5RdP0V/9hIAvmB6j5g9HdYaY +eIH3bK6A6hvK+DNOJK/iURlizKneGZIHwWpOOwSCM9tr12DlyCwZvrbTX40xHul4 +Ik5u0g75ld9SfHtYaSFX5k12Ayb5Yk+uM8HiUcVGuNjiMDJ0VsZMIvlOdV+V4lgY +BKvrw7pS8he+RqdT/Dfhkcpf6PQr3R8WkEgPG5HW85al9Cn/f9QCqn22jmIGZqKT +em5NZMkD9Y2A26g8E6S+Wf2z85SA9ypfvN1hlk4GKMrpAw3Se2eHvfjmnA0vlSNF +OJSsBVxKZCbcwf2Ur8/YhG9DTWv2Wt+yEYV7d9d6pyKH3IRFWXAZjJu6nVhY5s4F +3c0D8ymnDY/7ow8ufygDhq4Vo63toyYT/5gO5v4wFvG1kelYb/wU3x+0p7Y8mzkW +rZGse3r+DhEoTK2189l8Zld71P39GAbgBGFKU1HE4ovAZc9ZpUb9THpW2SRFbc5P +MPEoe8X6vS5Lv2jSIZfcmZGvT4ktKKqZxsSua3GzxtluDpl6r+V4n7jocUrm8WEh +Cxg5CyrnpoIGCQFkXDAQAueEdy7DCQGF1nLaRQ16yYoAAWAg8ZX+m1OZCDNjgCo2 +pjMcirLpy8KQT2HVSdkGjztA5/VPdpnqrZAHx6HH5vveN8bPfT784UAJIJOKFwvN +ecKBE/8PleNx9gip1WFsVUSIzGIkX+OSEfXuztJtxoaCoIXw8zOHUmqL26VtIhWh +b4Wm722hTCI8zRFG0lHMSAvqhKGXaBk41kD3oD4R+EacVHNBu/Xajmes4P2yGBDn +NokwpHCV9JT2A+75fGCOn5LDRD12IHtYzH4hqI+gwvsI1ipA/zgdt4pljZ9kaQZH +8GJ5wqmsH/gjyc2lROmTqyWxuyknCuUSG3jdWo2mkgOrgAiS4S1xdIypFFZtJP4i +JBjUdo6DJe6whrQL81TdoIVRJv/3wrn+X66ZbPZ1kJAyX6FyCZYnX01MyLr5GSjo +iOtdiVOB7KR/SLakc3o8GMfZvwIDAQABo4IBqzCCAacwHQYDVR0OBBYEFM08xSC1 +CKRObVGN/zP6NsveEIviMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +K3EQYXpPnWeB41wHj4W2EPI0WWowKwYDVR0QBCQwIoAPMjAxNzA3MTgwNzA2MDFa +gQ8yMDIwMTExNzA3MDYwMVowEwYDVR0gBAwwCjAIBgYqg3IDDQEwbQYDVR0fBGYw +ZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NREEu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01E +QS5jcmwwDgYDVR0PAQH/BAQDAgEGMEcGA1UdEQRAMD6BFGNzY2FAcGtpLnJlZ2lz +dHJ1Lm1kghRjc2NhLnBraS5yZWdpc3RydS5tZKQQMA4xDDAKBgNVBAcMA01EQTBH +BgNVHRIEQDA+gRRjc2NhQHBraS5yZWdpc3RydS5tZIIUY3NjYS5wa2kucmVnaXN0 +cnUubWSkEDAOMQwwCgYDVQQHDANNREEwDQYJKoZIhvcNAQELBQADggMBAFmbtCwW +9dfYlbebunQFXG5ifio1gOe5S1min6sbeXt1QlaCqurK3uDTiifYSKRSS/S6VbrK +XNS0ntjUDIwo/peoQEV6iU+5xYc6FYBARGJYdP3n+G4L6zO9ioSKdeAD+A84cv8e +kbYTShYH/LIZZhDtb90YFTLG0/bLQdo5Y18CnOfUGk/SfdwXuavmjPrh5mmIj176 +S3hr1v8BwrbOSCAiO5dwIIDDf5neMgF/ORXV9R+EKeUuAzHNY3SK0vrAcsHE0Nu0 +y7sVVLIP+kyzTDPuDMML5hgshY928o1jZr7Rw2clglYBaA9hnzkAFNIZ163Qc/Pd +UkQSmsfYy/01sx5Mh+yl/y+Q/P5O93o8z1T3xnjj8UKL/ndEeBe8+izjt2dcCeIj +EB9ZQC0YOok1W71OMyC2dA8SwatD6RjXLIGcE5f+0F8nSPm5erhITVGkCZ8pOJLx +S4WB3R4Ze9yD9B11yUha+yebYQIs9i+kCODxxByphJJWg7jEBDkYRxchBwBOWji+ +ziwBG3+3I0qjaVwoweh2eRui43VQlkeV4u/PTinGKdDPsWivJ1v1oBfQ1RDz/33o +MIsfS0+l19JpSUTaKVBeABuS96xhqjXyH6wzmeCrqrNwWyPjcL1izd3tGfjWpvKD +pGKVEeOn76DrCpCVkdgZQynncgp/dgafdn9M14iutBpUale8es5Gu8d4n7erpmTp +QbeWL1uWAat3p9R/uDEhFv+/UG0r5FjerG48Gu/dyK+UxvWf6WzCZ7sqvvKI1qwd +LEzN/33qzsaw22AJ/0Kh9+1EXWGoaL2pue+7pbZ15kT7bo8b1IemmNgQidQn+klA +EJ8dBbUtRrPTsvxSdGZl41PuoXCJoVqpwm+2Ip+I4Of1QrOsvy2g1FBZPzKwIDVm +oMR250o1ZwIZFLFyrLcs9578b2ab2FHbzk71vEfbbVSNowe1nhC0QlNyk6tyKfIY +tf28xQRcuLrOarQMSU9bRTdXjsog2pWEIL/RihP2KKTmnGRULDaPHMz0zA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIII9zCCBd+gAwIBAgIIdBK2cvP1qL8wDQYJKoZIhvcNAQELBQAwZDELMAkGA1UE +BhMCTUQxIjAgBgNVBAoMGVN0YXRlIEVudGVycHJpc2UgUkVHSVNUUlUxGDAWBgNV +BAsMD01SVEQgRGVwYXJ0bWVudDEXMBUGA1UEAwwOZVBhc3Nwb3J0IENTQ0EwHhcN +MTcwNzE4MDcwNjAxWhcNMjcxMTE4MDcwNjAxWjBkMQswCQYDVQQGEwJNRDEiMCAG +A1UECgwZU3RhdGUgRW50ZXJwcmlzZSBSRUdJU1RSVTEYMBYGA1UECwwPTVJURCBE +ZXBhcnRtZW50MRcwFQYDVQQDDA5lUGFzc3BvcnQgQ1NDQTCCAyIwDQYJKoZIhvcN +AQEBBQADggMPADCCAwoCggMBALACNlGjC8iJau6A5RdP0V/9hIAvmB6j5g9HdYaY +eIH3bK6A6hvK+DNOJK/iURlizKneGZIHwWpOOwSCM9tr12DlyCwZvrbTX40xHul4 +Ik5u0g75ld9SfHtYaSFX5k12Ayb5Yk+uM8HiUcVGuNjiMDJ0VsZMIvlOdV+V4lgY +BKvrw7pS8he+RqdT/Dfhkcpf6PQr3R8WkEgPG5HW85al9Cn/f9QCqn22jmIGZqKT +em5NZMkD9Y2A26g8E6S+Wf2z85SA9ypfvN1hlk4GKMrpAw3Se2eHvfjmnA0vlSNF +OJSsBVxKZCbcwf2Ur8/YhG9DTWv2Wt+yEYV7d9d6pyKH3IRFWXAZjJu6nVhY5s4F +3c0D8ymnDY/7ow8ufygDhq4Vo63toyYT/5gO5v4wFvG1kelYb/wU3x+0p7Y8mzkW +rZGse3r+DhEoTK2189l8Zld71P39GAbgBGFKU1HE4ovAZc9ZpUb9THpW2SRFbc5P +MPEoe8X6vS5Lv2jSIZfcmZGvT4ktKKqZxsSua3GzxtluDpl6r+V4n7jocUrm8WEh +Cxg5CyrnpoIGCQFkXDAQAueEdy7DCQGF1nLaRQ16yYoAAWAg8ZX+m1OZCDNjgCo2 +pjMcirLpy8KQT2HVSdkGjztA5/VPdpnqrZAHx6HH5vveN8bPfT784UAJIJOKFwvN +ecKBE/8PleNx9gip1WFsVUSIzGIkX+OSEfXuztJtxoaCoIXw8zOHUmqL26VtIhWh +b4Wm722hTCI8zRFG0lHMSAvqhKGXaBk41kD3oD4R+EacVHNBu/Xajmes4P2yGBDn +NokwpHCV9JT2A+75fGCOn5LDRD12IHtYzH4hqI+gwvsI1ipA/zgdt4pljZ9kaQZH +8GJ5wqmsH/gjyc2lROmTqyWxuyknCuUSG3jdWo2mkgOrgAiS4S1xdIypFFZtJP4i +JBjUdo6DJe6whrQL81TdoIVRJv/3wrn+X66ZbPZ1kJAyX6FyCZYnX01MyLr5GSjo +iOtdiVOB7KR/SLakc3o8GMfZvwIDAQABo4IBqzCCAacwHQYDVR0OBBYEFM08xSC1 +CKRObVGN/zP6NsveEIviMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +zTzFILUIpE5tUY3/M/o2y94Qi+IwKwYDVR0QBCQwIoAPMjAxNzA3MTgwNzA2MDFa +gQ8yMDIwMTExNzA3MDYwMVowEwYDVR0gBAwwCjAIBgYqg3IDDQEwbQYDVR0fBGYw +ZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NREEu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01E +QS5jcmwwDgYDVR0PAQH/BAQDAgEGMEcGA1UdEQRAMD6BFGNzY2FAcGtpLnJlZ2lz +dHJ1Lm1kghRjc2NhLnBraS5yZWdpc3RydS5tZKQQMA4xDDAKBgNVBAcMA01EQTBH +BgNVHRIEQDA+gRRjc2NhQHBraS5yZWdpc3RydS5tZIIUY3NjYS5wa2kucmVnaXN0 +cnUubWSkEDAOMQwwCgYDVQQHDANNREEwDQYJKoZIhvcNAQELBQADggMBADKw/fMO +0XWDf+ASK7LAAW9euZqCUf9v8myNvnK6twp7yuf1yUrMrQg0EjscNbHdEVuwxqr4 +tjwskaFjoJ5IyWTJ++akBS7jBtfYDG8mFZq1mNj8cFDkT2fhU4qPCXWMUInU4hDh +Om8cTQfxMIy6pWfkVtb/P1PGTyqQmcnCw73rMh9Ctd/fMawuncz2mjH1xSoR93Pt +AUOpL+Smap7rtESHRN+4WljceVg6+ivzxhChpdWSlvabvAAHbuug5vwv8RJFLSgl +sBJK/vQiXR7frie4wr/2ZnrSXxfbJh2I0uz5gQ2tigpVku+mFNR3s1uQDJe5oHaf +cWbrr5eBJOKC9qMSUSzPa2ruQ9PBUXhlg0J0vXdP8H+RAxAGzVEHwntDBYcf8Tv/ +jiSCGOzuyaLTMq9JwI6UZLtTCswnoLMztLtmMd9X4lytNZfQ5Ee7E+9GCXl+QmoF +lWyZcioxzMi1br2TqOMNxNH6mOmUzflUnSDqdhj/eaFFQMTXDIAuxqupI4X9OkzL +h3RCud85jrDYhmpjMlFZo3FpUQDMNUWsKcZsAcvfQm8c6WeQ4bLTwwcMS1G95B2t +aq4IrmxkQ4swLnD41rOz40850L3IdptFz41gLB1qQft6JkOGntJnxe1KR2B7waOK +RBqeO19wAdeflq3NJ331Pi6wIMj0DEiLYjt2blS9Joop0z/SJcphw0TGJlhRIA+w +S9X5KxeYcdkBF1yvePmJMvligJ71DvBlhjU8b/ziw7A14Jvppk9+TzOa8hr3eqA4 +cqb/EnkzLUdlLMXqk3VZJtOQjFjfGK12vSS9FH0tpT9PfWokhYrATDDWpAjNlNmo +KZ5WtD6qighWU7+Y3UH4Vd4UWpOy+6z/WWv5V1k7D0kAfTwyuU88y8xLcPpksnNw ++28XJS4Two10u9Zy2YkuWW9xKVhrU4DVmTScpaFOhoX+EaaF9AzffXuU3m3l/Kgd +r43jqYCdMk19tbT1OAIbTix4BZNUnRwNt9//WJzZCeyXCgWnyTNb7Rnwcw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIJETCCBfmgAwIBAgIER2mtwTANBgkqhkiG9w0BAQUFADCCASUxCzAJBgNVBAYT +Ak1EMRwwGgYDVQQIExNSZXB1YmxpYyBvZiBNb2xkb3ZhMRAwDgYDVQQHEwdLaXNp +bmF1MT4wPAYDVQQKEzVTRSBDZW50ZXIgb2Ygc3BldGlhbCB0ZWxlY29tbXVuaWNh +dGlvbnMgMTAwMzYwMDA5NjY5NDEgMB4GA1UECxMXQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAkTFjE2NiBTdGVmYW4gY2VsIE1hcmUgYmQxHzAdBgNVBAMT +Fk1vbGRvdmEgZVBhc3Nwb3J0IENTQ0ExFzAVBgNVBBQTDiszNzMgMjIgMjUwNTQx +MSkwJwYJKoZIhvcNAQkBFhphZG1pbjEtY2VydEBiaW9wYXNzLmdvdi5tZDAeFw0w +NzEyMTkyMzQ4MTdaFw0yMjEyMTkyMzQ4MTdaMIIBJTELMAkGA1UEBhMCTUQxHDAa +BgNVBAgTE1JlcHVibGljIG9mIE1vbGRvdmExEDAOBgNVBAcTB0tpc2luYXUxPjA8 +BgNVBAoTNVNFIENlbnRlciBvZiBzcGV0aWFsIHRlbGVjb21tdW5pY2F0aW9ucyAx +MDAzNjAwMDk2Njk0MSAwHgYDVQQLExdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEf +MB0GA1UECRMWMTY2IFN0ZWZhbiBjZWwgTWFyZSBiZDEfMB0GA1UEAxMWTW9sZG92 +YSBlUGFzc3BvcnQgQ1NDQTEXMBUGA1UEFBMOKzM3MyAyMiAyNTA1NDExKTAnBgkq +hkiG9w0BCQEWGmFkbWluMS1jZXJ0QGJpb3Bhc3MuZ292Lm1kMIIDIjANBgkqhkiG +9w0BAQEFAAOCAw8AMIIDCgKCAwEAp4JnOVyhVq6UjPcq87XEJpNqFppdCOlSWuw5 +43eovEzhydHBt9YAJaPfKhhIZQJ33+K/SOtWRd8Mh2SFBfKsvQhM61w3og14Bi2N +HADhXiU6q36yXMQjoDHJX7oyqm0uEU+SyI8QqLj4HU0oMsIicbTFZQk7EaNS41cB +YL2OAjr530eHR7fgNJHvW266nYq20LHBkggsWkmvfH7qd6eagIbzQ5gJPQo/TN3s +OLzG6ZWsLqyXP07YPlHmb3pIX2ZCbvALLFEsn0Mc5y+n/NB5UGeNnXVwhphzXfrB +aB1X0s8TQ1U16duez5TzUQBPs9Il87UQZKc9gbbJxgGXdsTTcYnAvzP1p4hDuKxc +11dvqTM5SS5I1dEtc/wjWprcV/H7I64xT4L8HAdg/wPUDPsXqDV1wLt2szAYXUCJ +1w+Qqch5LOzkm1eVma9ahQV/JZBGqWCu5uldMwmb295abPrPHiBBH7s10t1QrHYA +VtcS4jikAoJdcBnGEVw6KhWj10wGGJQliO46cT7CRkqM6RMI7N7Cl2wYE5dkspDI +zU9Z26WJ6/99bOvgOpTJxicl377RwB7qn3nwARdQuJtXAU+XPO4PpABnKFc8DtOK +7mfThDk71cCgP6quHRtMVkSD1s4g/0Udmys4GNdjMrGRhu+DuoU0uFsOWiy/T9d1 +QCAwMJNPvq3fC+ewjx0TPFWbXz4D4mM51mwv9At+EfFR6/gsArA6RLV9ZxsAQDQz +J6YXHWQnJaou0fZVkzkDpvLhDqB5Or+N6pUjoP0iHNR56x/A3oVV86zLJprK0pJE +dgB7v73lZNV+WrcdVDyE5x4G3l6i+6f7+96Tuc8+0peITQxlu4hOb+Wsm6Px+BW/ +rtdjvDo/KvLj8fc/WHchb78Xxpz1wJu5dVDj2+Yj57Kv2xnZo79IwQgR4r2ChZ82 +YmMi8GcSCCqm4quOYAJqbSAKUORFa/C2IoLqXoMSjUmpXsVswXY/b/61XlbEjlyU +fEGGPmWj3kD/3mO3k8ZVcID5vlqDAgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTeLNaNri1a/w9to5yHxwNONMAa +pTANBgkqhkiG9w0BAQUFAAOCAwEAA8RUm9ky2b8OIjuqb2J0EUAG9IYJOLvQtpJt +XPh1z9+RnVPzRQdt6i6eb3/zxXDwRkET2Pq7fafSD6m/WP2rVgPiHvinigh78/+P +Pm1LYVXskjH7fcnGVjSMU1muWt5a5DQ5j4IaOlhG+cmVWYH9qGhsDdFDNjz2dPZP +zAH2U3eUgUH8q9Ctmh+pC277ZIY2ko8anz6xUpCP8/k8ApwR/lFBTVGU93OGqqnR +UYFUpNV5+rtjrmzcSzbAOCBJtjeOFfvd1RnLxGf4hFM5CCyFPWUm7rfjoGtbgJFh +XBFPVUzkck3RGPtL3PXilJ2N/dKHoz+pTw7WXOqn31c+SZk8uHHsjaq5kQisT2R7 +IVD1uxz9XShp48X3Q+9FXPWvY2APvCqOqcYBSbQI9GN6gapjeVRMTkbo67pefjjz +7lgWTmb6j61KPJdUYaI0srfs98Cl+Fn2Qp4t1s+0L+v9xDzj4RtuYj5aT+X2n9eb +lcmTEvejgJ8cJ60INVoBggtMQdNuvihu/u3nduYBcTcXPqId+CzMclw5G+YoRSmK +HTY1lgYJsI6UTPBtXUPyQurzj7sTiARBxPJcvIRSWDrJF3BXG4rI3qBm4n4mSmnE +JXqbyVYQbbhgH13sqeTN3JPo2eTN7ASvH3bjoh7Lx+vEfUoANd/6VTeyy9zPnfHD +QT3EbvIKoCp+zb7C9FyuMvGk2jbTaqw5vHyPvg5dJI1dDbRgvf1YLIghVZmBqZ6V +6CZ7Jolar5N1vwmHFLddv7MwLljBDYdQ2bmfwINa/9YzdtMQFs95ROxylxVarhqc +ZpSdFZntutAzbWJSEOgGH933yEloWZS1NrJiJWqc5gww2WaHnweuHfmWPliJkixj +DA5vmcsKhh7UNwN2D9hgnxoS0Itj3jsPN7ltKtOgucxdzonL+MNY+z1h/nk7RKcs +6ddUwO5+DCim4ayf14hJbEbg+xsE9NDXi515uRE0smXzehCrzKykH02jY8TriC05 +nJY5Mhd8ZNsuTTYj58zfbKUQf0MA +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICmDCCAj6gAwIBAgICJ0cwCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAyMB4XDTExMDMxMDEyMDAwMFoXDTI0MTExMDEyMDAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDIwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEINgHC7WdEbTtUXBQE2AmniAtslzgGT/TKB9+6LtTysow +kCnTJQn7wkfTxl2rIwGtsfUsXI/B4ZQ2EpY9FH6My6NFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUJeuQkvhe5uc+R1imh5wcnwJx8wUwDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANHADBEAiAspbIMik14u37zCGgncLMh3mI2WzKl +7PrATshlSGcIlwIgd501eVBRxOzMdytdGjrHFuFxEis08RGtdlu8wKMMc4E= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICmDCCAj6gAwIBAgICJ2AwCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDA0MB4XDTE1MDYwNjEwMDAwMFoXDTI5MDIwNjExMDAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDQwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEgDXw5TsxtdZ4wGpqt+W9/EjOTDhD4BdKDzARs570VVVD +Fq1myy4ptRGfWns8W4BYUSjXPLvxXY+OQNxUvMAxvKNFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUj73K7tZpBjJ4J1e0HIDFHXMgN1cwDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANHADBEAiAgTNmdSPxuaYI3/1y/x1NB9r4VkfnT +Mlfa79GX8WhNAQIgNrV4ob4TQ7CP/J0xEcc/Ybz2bmnm53ruahqvVjxJ2Pw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICmDCCAj6gAwIBAgICJ3cwCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDA1MB4XDTE4MDYwODA2MDEzNVoXDTMyMDIwODA3MDEzNVowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDUwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAED6PKSqxTf+QAK8jnKPqPAAEr1Lrm4Fbo+BJrU1FBd81P +pZ/BVhNxOdUJbl8FCmwMOAiklczjW+BvlQ/ZrGNypaNFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUcxkRK8SgFeVZR8CZ7yc2RS9m6z4wDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANHADBEAiBGp7XEhv0fpbT0XwPiSk952BuMMwzh +wbhHI1tNiHbp5AIgPGDamwSGntQHjeftOZ24LRsupX8qprK1ToIDFNpfEfA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICmDCCAj6gAwIBAgICJ4swCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1PSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDA2MB4XDTIxMDYwNzExMDYwOFoXDTM1MDIwNzEyMDYwOFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTU9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDYwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEOmIWwWZm78vtlw9CDFENjmTkJh0S7ooP1lilUuWOz3B8 +hqVsrSZW+qjEyA7ygmx1uOqa1kuetM26nHD4IjIWy6NFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUnSxc6TvhgYf7so4HqIG/PrJjOrgwDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANHADBEAiB/bzNd/2v/VDq01DeS5s+PHwHLVRFi +qAifb5Ja3uo7ywIgP8y1m+v2biDSbMbXOc9eDdxX+iskJOtiHHZnJcjjmwY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICmTCCAj6gAwIBAgICJ1owCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAzMB4XDTE0MTEwNzE2MDAwMFoXDTI4MDcwNzE1MDAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDMwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAELX+Bpegt/csaktDAp0eDH/HCIaiw9/vSHU9qpgVWYLsZ +rmUB40RBAMFjKAb0bwDDsbt2lTMcdsvpwTLlIlqwfqNFMEMwEgYDVR0TAQH/BAgw +BgEB/wIBADAdBgNVHQ4EFgQUteI9O6ECp3t3tVsOatN7jp1DTS0wDgYDVR0PAQH/ +BAQDAgEGMAsGByqGSM49BAEFAANIADBFAiEAkP5ofdFnj9rupcZXwbfjyxKY9lI2 +/+2BmZMZ+pEGQQcCIEbzKwHj7Fk5rfYfXN0wW+EEHDugLJWGU1+oQTDYNmi2 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwDCCAmagAwIBAgICJ10wCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDIwHhcNMDkxMTE2MjIwMDAxWhcNMjIwMjE3 +MjE1OTU5WjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDAy +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABEJLmld5qgzcwbAp4PJAUAafHfpnKDaZEC8EqGoXBAYsSZ83JDcHfv66 +sT6WFEYV4cdGVULJEY5VgUG6/BV9cTSjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFJexLqpFB8O+KXUn/cMUc4PNgzkyMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADRwAwRAIgQxwVXcHvrvaUCoboCOEbpA48w7lixsHnI70sGRdG +oGgCIFJN1xNEUiizvUAziGkiTuOCcrSIpY9Ej4csvdzj3GmQ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwDCCAmagAwIBAgICJ4cwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDMwHhcNMTExMTE2MjIwMDAwWhcNMjQwMjE3 +MjE1OTU5WjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDAz +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABFlCwbVdZWyLUEL19B8nw4d6e28C5s58kmmoL11xOXqglBsqHW6IFI4n +SGkdj5PRVTM3Ruz6MYz+r0xDj6PSDaejRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFFmW3hwouR5Tzmic/z4S4NXEzg0yMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADRwAwRAIgL4cYN+ozqt5+ij58l4w7FLGDbwbIK7euaPrMATY1 +9x8CIA3B8h4932qY+ZjVxpBiGM9geVv9dmvBn/iG7Hichjuf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwDCCAmagAwIBAgICJ6YwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDQwHhcNMTMxMTEyMTAwMTIzWhcNMjYwMjEy +MTAwMTIzWjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDA0 +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABA+sKVRUdOyRdDI4iUnVZUgSvWoOccIGSh6XtuN27quqMYerAa5o5I+7 +HztPh2/SQiONBHBXHoYD0nvhLl17fr6jRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFHu/oc2nU9arw+X+bq/Xt0q+9q8IMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADRwAwRAIgdUdgcOns5Qyxl5wjwGIY5Ofm6cvXsDSiChH1bhj6 +LyMCIEiaAB2rREJyMHv0NO2sCTQib41U5/pYNDjz5MLddAnJ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwTCCAmagAwIBAgICJ8UwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDUwHhcNMTUxMTEyMTIzNDQwWhcNMjgwMjEy +MTIzNDQwWjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDA1 +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABBbiJGSYrnPPAhD5JROSeqXbvSZT1Vr8DsGSkEkMyY95Vulzmc+QWEh3 +q/hEn8ZpfdqRX2cZWMMS7y03qDpdyVmjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFI9/qgtBjRYrICpx/WMazb2WX/XoMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADSAAwRQIgXDHWZCN0WxKfsXRM1jKu9hBNgd12Me+JpDeEwaC4 +N1UCIQCHfzMmQCn44WjNs9F8OMQ7PaCrRFKiteleOjAqTw2tHw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC/DCCAqKgAwIBAgIBNjAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMTUwNDE1MDUzNjQ4WhcNMjQwNjE0MDUzNjQ4WjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAEesfjPgIkwdQnuATJDFr4dG+XFhxpBILo65NhNhozSMtXYW0Ic7sv +FMY0HTVvaLMUXvooz6dYCCZdlyALcOmeqKOBrjCBqzAYBgNVHSAEETAPMA0GCysG +AQQBgqYPAQIBMB8GA1UdIwQYMBaAFJTAQBtZEvAqsG4sqkrKqOXg9r0ZMB0GA1Ud +DgQWBBSUwEAbWRLwKrBuLKpKyqjl4Pa9GTAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0Q +BCQwIoAPMjAxNTA0MTUwOTM2NDhagQ8yMDE5MDQxNTA5MzY0OFowEgYDVR0TAQH/ +BAgwBgEB/wIBADAKBggqhkjOPQQDAgNIADBFAiEAqS/PaU09s9RSH2fSz1nAyK6e +wVlQKLtJEQNc6xPFSaoCIAoS+tFy7IExiwghH56Bs4qOr7TQ18P+cqUPPfr9F5JK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDAzCCAqugAwIBAgIBATAJBgcqhkjOPQQBMFMxCzAJBgNVBAYTAkJBMQwwCgYD +VQQKDANtY3AxDzANBgNVBAsMBmlkZGVlYTEMMAoGA1UEBRMDMDAxMRcwFQYDVQQD +DA5jc2NhLWlkZGVlYS1iYTAeFw0xNDEwMTQwMDAwMDBaFw0yNTAyMTUwMDAwMDBa +MFMxCzAJBgNVBAYTAkJBMQwwCgYDVQQKDANtY3AxDzANBgNVBAsMBmlkZGVlYTEM +MAoGA1UEBRMDMDAxMRcwFQYDVQQDDA5jc2NhLWlkZGVlYS1iYTCCATMwgewGByqG +SM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8PmYKkJ2DjXJuO/Yj1SYg +KCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXBJtxcbOlKS0TzMLXZBCAm +3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRBBIvSrrnLflfLLEtIL/yB +t6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEdycJ3RRMt7Y5UXB1Uxy8E +aZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6Cl0hWpwIBAQNCAAQs8xW0 +W/A/pHxiESD3lcAN/go0SvdpI/hqQgx2Kh0h1gVtMaFC20lXGWQS4B3p3V+SkWW7 +ksyYvYq85uWk1dX2o4GUMIGRMCsGA1UdEAQkMCKADzIwMTQxMDE1MDAwMDAwWoEP +MjAxOTEwMTUwMDAwMDBaMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUjzJnEQUq +7vQPJuQI4Xc0Bse+SFEwHwYDVR0jBBgwFoAUjzJnEQUq7vQPJuQI4Xc0Bse+SFEw +EgYDVR0TAQH/BAgwBgEB/wIBADAJBgcqhkjOPQQBA0cAMEQCICApmXOISVr/R3JD +t3mQAnbOG5uUg75Lv0T3JjCNChhuAiAWMjT9/DXh86plU7Aol5ZpaDRXmLgZh0qk +IH2gD9AogA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDJTCCAsygAwIBAgIIAj6+LrfkMlkwCgYIKoZIzj0EAwIwdzESMBAGA1UEAwwJ +Q1NDQUVDX0JFMTcwNQYDVQQLDC5GRURFUkFMIFBVQkxJQyBTRVJWSUNFIEZPUkVJ +R04gQUZGQUlSUyBCRUxHSVVNMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJFTEdJVU0x +CzAJBgNVBAYTAkJFMB4XDTEzMDcwMjEyNTYzOFoXDTIzMTAxMzEyNTYzOFowdzES +MBAGA1UEAwwJQ1NDQUVDX0JFMTcwNQYDVQQLDC5GRURFUkFMIFBVQkxJQyBTRVJW +SUNFIEZPUkVJR04gQUZGQUlSUyBCRUxHSVVNMRswGQYDVQQKDBJLSU5HRE9NIE9G +IEJFTEdJVU0xCzAJBgNVBAYTAkJFMIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcq +hkjOPQEBAiEA/////wAAAAEAAAAAAAAAAAAAAAD///////////////8wRAQg//// +/wAAAAEAAAAAAAAAAAAAAAD///////////////wEIFrGNdiqOpPns+u9VXaYhrxl +HQawzFOw9jvOPD4n0mBLBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiY +wpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//// +//////+85vqtpxeehPO5ysL8YyVRAgEBA0IABB6cLbgBSXeRgw6EEQx5a3HVy5lO +Tkcn2ILfEivIju85sk6Guqcg75cUuShzZL+U/kOdfSx9ZjcSvxAFGXP55lajZjBk +MB0GA1UdDgQWBBTQ8UFo5YFIn6UszU7X+IO1qu20CzASBgNVHRMBAf8ECDAGAQH/ +AgEAMB8GA1UdIwQYMBaAFNDxQWjlgUifpSzNTtf4g7Wq7bQLMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAgNHADBEAiBYQ86t7irXyk3p6LC2ivHyPHHAtKBW5mH0 +b1EnxOBHuwIgUyhRmNlRNyDlfKgr+fCTENQoVK1mYM7YqSophhfNIV0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDLTCCArSgAwIBAgISESEnq+2BgxLPNdS51psbpjf/MAoGCCqGSM49BAMEMEEx +CzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTATBgNV +BAMTDENTQ0EtQUxHRVJJQTAeFw0xNTAyMjQwMDAwMDBaFw0zMDA0MjQwMDAwMDBa +MEExCzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTAT +BgNVBAMTDENTQ0EtQUxHRVJJQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABA7TNTCp +SCegd5pun1iGYxQh1ZuZKENX60oDm+aj2RQ3pneiPiyvvjG+SrWJSMCoLNnCqNbp +oJXC847071rQqMUZX0OZ/11h4JkXkLU8KtwlXyAjPDBoj7N8WBsnfwJuxKOCAW0w +ggFpMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTUwMjI0MDAwMDAwWoEPMjAyMDAyMjQwMDAwMDBaMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHEwNEWkEwGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcTA0RaQTCB +mwYDVR0fBIGTMIGQMIGNoIGKoIGHhi1odHRwOi8vaW50ZXJpZXVyLmdvdi5kei9D +U0NBL0NTQ0EtQUxHRVJJQS5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8u +aW50L0NSTHMvRFpBLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9EWkEuY3JsMB0GA1UdDgQWBBSp04/VjhdrWkDGhL+BWKMrVY+EcjAfBgNV +HSMEGDAWgBSp04/VjhdrWkDGhL+BWKMrVY+EcjAKBggqhkjOPQQDBANnADBkAjAR +fajBEygyj7LuVi4wkT2f56pwWjVW2NsSbxazA0f0hFXiP2k0pDefO80j6TmMghUC +MHtFF/xxhxGWZZIILy3DYgKCxS1KEurZXgmRbkVHkvSLYc4taVaKJpbmuBWw8mYf +2w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDLTCCArSgAwIBAgISESE3S6nfxC/Z86iOaeV+n+DAMAoGCCqGSM49BAMEMEEx +CzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTATBgNV +BAMTDENTQ0EtQUxHRVJJQTAeFw0yMDAxMzAwMDAwMDBaFw0zNTAzMzAwMDAwMDBa +MEExCzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTAT +BgNVBAMTDENTQ0EtQUxHRVJJQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIrKX4IR +cPpNgjPH8j95V5KvQueRBFvfVZiWhKoW0QJ9J1QbAibWZcUOD/dvkfWu6/avUXjA +IgQEWqQwAsiT7SuADK+h5Cy0f4CiGm8MOikZvFJCwh2spfTsPCcOViDrfKOCAW0w +ggFpMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMjAwMTMwMDAwMDAwWoEPMjAyNTAxMzAwMDAwMDBaMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHEwNEWkEwGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcTA0RaQTCB +mwYDVR0fBIGTMIGQMIGNoIGKoIGHhi1odHRwOi8vaW50ZXJpZXVyLmdvdi5kei9D +U0NBL0NTQ0EtQUxHRVJJQS5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8u +aW50L0NSTHMvRFpBLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9EWkEuY3JsMB0GA1UdDgQWBBRf7UzTvKlfXI82c8Ya7IN7/isrUTAfBgNV +HSMEGDAWgBRf7UzTvKlfXI82c8Ya7IN7/isrUTAKBggqhkjOPQQDBANnADBkAjBb +PeTwBALfaE9C493mBJxB/1mfBK8qS7jJRcXYvvgZFE9kKIH5c1Sj4zYo/QiabGIC +MAbS1KDYfO1PqBuE24A3uxo/qar5BobNDo6FUynHTIOE0GW2chwOJB8cXzVTgqkD +FA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWTCCAwCgAwIBAgIBVTAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTE4MTEwNDIwNDE0NloXDTMzMDIwMzA4NDE0NlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAASCl37O34fo0GoTNWTcwxqzoP8EBkqqQ7xfKx70GfOeNhj0zDd5 +minsxuYA6zMg2yZDOUS0EDvfdcwCTte7plISo4GqMIGnMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBRauPImozC/8XbIWc+CJ5uwfs2VljAdBgNVHQ4E +FgQUWrjyJqMwv/F2yFnPgiebsH7NlZYwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTgxMTA0MjI0MTQ2WoEPMjAyMjExMDQyMjQxNDZaMBIGA1UdEwEB/wQI +MAYBAf8CAQAwCgYIKoZIzj0EAwIDRwAwRAIgHbvy2cnBtzO2uzWoAl8HZRWo3iqn +6gEIeTSX4h8sWy0CIGzxyAEulDzMzwELCLLgqlawaU2vP5N5wNyLWlGrXVAU +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWjCCAwCgAwIBAgIBFDAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTE0MTY1N1oXDTI1MTAzMTAyMTY1N1owcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAAR08laxRyb/Nbi6NFOTEqxvsKAWlKboNJkm2vHTBcIG5zdV32zr +INnd5UBn3dbwe9m1OwBEl+Lz0x4feU9vbZ4uo4GqMIGnMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBTn2N0XWNVLQqoC24jrcB5ExpJa5jAdBgNVHQ4E +FgQU59jdF1jVS0KqAtuI63AeRMaSWuYwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTEwODAxMTcxNjU3WoEPMjAxNTA4MDExNzE2NTdaMBIGA1UdEwEB/wQI +MAYBAf8CAQAwCgYIKoZIzj0EAwIDSAAwRQIgXr5JjkmgNzpjujRdK8OcT5Iire8I +C2Nj0Mb4g7fYPmcCIQCjOiTZFsXq++k6dP5YamV44QdipWcdsUGa25py4rIxXA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWjCCAwCgAwIBAgIBLDAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTE0MTEwNjAwMzAxM1oXDTI5MDIwNDEyMzAxM1owcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAAQYjhIU5jSqRygqeUW8vRilMSUyBCfHah5FX4UAweUDdKDxsDDL +qbOA4AuZJdaYIuqNwSwzhl2+2opLTf8ytYgro4GqMIGnMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBR27LmVd5N0SQHG45L1UydCb6ELUDAdBgNVHQ4E +FgQUduy5lXeTdEkBxuOS9VMnQm+hC1AwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTQxMTA2MDIzMDEzWoEPMjAxODExMDYwMjMwMTNaMBIGA1UdEwEB/wQI +MAYBAf8CAQAwCgYIKoZIzj0EAwIDSAAwRQIhAKmm0bFNRV6qUQeQ3YRNaMANGXBK +lXaGwRcaumUMG3MBAiBobEamOqpgJ7Xqmv8bpnOsfa15hozoGK3FHnsJVAQCWA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDmTCCAx2gAwIBAgISESAEtYVQSFOvE+Db8axy/YVbMAwGCCqGSM49BAMEBQAw +QTELMAkGA1UEBhMCRFoxDDAKBgNVBAoTA0dvdjENMAsGA1UECxMETUlDTDEVMBMG +A1UEAxMMQ1NDQS1BTEdFUklBMB4XDTEwMDMyNTAwMDAwMFoXDTI1MDUyNDIzMDAw +MFowQTELMAkGA1UEBhMCRFoxDDAKBgNVBAoTA0dvdjENMAsGA1UECxMETUlDTDEV +MBMGA1UEAxMMQ1NDQS1BTEdFUklBMIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwG +ByqGSM49AQECMQD//////////////////////////////////////////v////8A +AAAAAAAAAP////8wZAQw//////////////////////////////////////////7/ +////AAAAAAAAAAD////8BDCzMS+n4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOH +WsZWOY2KLtGdKoXI7dPsKu8EYQSqh8oivosFN46xxx7zIK10bh07Younm5hZ90Hg +glQqOFUC8l2/VSlsOlReOHJ2Crc2F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jET +tfC4wApgsc4dfoGdekMdfJDqDl8CMQD////////////////////////////////H +Y02B9Dct31gaDbJIsKd67OwZaszFKXMCAQEDYgAEed4osd1DfPppZULU3A76SfDh +3v9c3QCocdoG2TvkabkKAtBhOVnnKsSxbUX/1w+DbPYhREPiVRFxMXwCtVWv2mJX +hptMqdvqIgET7/TV1VSmX2m6SnJv74RZSuNFPmuVo4GUMIGRMBIGA1UdEwEB/wQI +MAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTAwMzI1MDAw +MDAwWoEPMjAxNTAzMjUwMDAwMDBaMB0GA1UdDgQWBBSTmwLcO8X79dW7VKzqyH98 +jD0lujAfBgNVHSMEGDAWgBSTmwLcO8X79dW7VKzqyH98jD0lujAMBggqhkjOPQQD +BAUAA2gAMGUCMQDvEWfyFO7B7G3ZvFZuiKcfpKj59gVb4kVdEwt4CAXk4sU6eL1Z +v76j0/fBPRjfkhECMFoo2KtgqO2LFb0JMohPAP2boScS3X3V0OxrAGITtC83A5A0 +sI3Erhc3KdwiOmPy1A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDoDCCA0egAwIBAgIBWjAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMTcxMDA1MTAxNzExWhcNMjYxMjA1MTAxNzExWjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAEB4yd2p3MicAcDEhLqheFnbce5tsykV0ty6DXNM4Mb05gaj1/RFvA +MhmQrfo6h0ealM8x1qa/7Mlh5LtgRtcrsqOCAVIwggFOMB0GA1UdDgQWBBT1qPmx +56mSoIZUCNsqRxwEohX01zAfBgNVHSMEGDAWgBT1qPmx56mSoIZUCNsqRxwEohX0 +1zArBgNVHRAEJDAigA8yMDE3MTAwNTEwMTcxMVqBDzIwMjExMDA1MTAxNzExWjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjBnBgNVHR8EYDBeMFyg +WqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0FSRS5jcmyG +Kmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQVJFLmNybDAbBgNV +HREEFDASpBAwDjEMMAoGA1UEBwwDQVJFMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQH +DANBUkUwGAYDVR0gBBEwDzANBgsrBgEEAYKmDwECATAKBggqhkjOPQQDAgNHADBE +AiAs4EYIKjulZ0QviW+LyXlR28LlRqaS5hWwMnM6aQXOGwIgUyisdqeKtlYAteR/ +GPodNTnpKGOKavXIXpjrsRjq4U0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDqDCCA0+gAwIBAgISESJBZXsisyqmpWhuXnnXgT/5MAoGCCqGSM49BAMCMEsx +CzAJBgNVBAYTAk9NMQwwCgYDVQQKDANHT1YxGjAYBgNVBAsMEVJveWFsIE9tYW4g +UG9saWNlMRIwEAYDVQQDDAlPTUFOIENTQ0EwHhcNMTkwNzAyMDAwMDAwWhcNMzQx +MDAyMDAwMDAwWjBLMQswCQYDVQQGEwJPTTEMMAoGA1UECgwDR09WMRowGAYDVQQL +DBFSb3lhbCBPbWFuIFBvbGljZTESMBAGA1UEAwwJT01BTiBDU0NBMIIBMzCB7AYH +KoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPV +JiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkE +ICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv +/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTH +LwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABCNV +fQI+lv2HS6AHAOCxLlmFRCJOqLD7OLx2Mh3X8KXdaZBuoi0Z7wZ63Q8I9RMpOBtt +CGTeIihojEymHPxR5MijggE1MIIBMTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud +DwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE5MDcwMjAwMDAwMFqBDzIwMjQwNzAy +MDAwMDAwWjAxBgNVHREEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4xDDAK +BgNVBAcTA09NTjAxBgNVHRIEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4x +DDAKBgNVBAcTA09NTjA4BgNVHR8EMTAvMC2gK6AphidodHRwczovL3d3dy5yb3Au +Z292Lm9tL2NybC9PTUFOQ1NDQS5jcmwwHQYDVR0OBBYEFFlOTfYWfKnq0M1QGeuZ +SxXHw2R/MB8GA1UdIwQYMBaAFFlOTfYWfKnq0M1QGeuZSxXHw2R/MAoGCCqGSM49 +BAMCA0cAMEQCIB3IkLBHpiL6cSFDk0vrqzkddts7yP1tcHSwh3nxcw9nAiANE6+X +0QWRO/fr3IMwGuNAA+jAmPQqzt7XVZFZRVR0Hw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDqTCCA0+gAwIBAgISESJkjErdtVa4PkZ3wfDFbBdtMAoGCCqGSM49BAMCMEsx +CzAJBgNVBAYTAk9NMQwwCgYDVQQKDANHT1YxGjAYBgNVBAsMEVJveWFsIE9tYW4g +UG9saWNlMRIwEAYDVQQDDAlPTUFOIENTQ0EwHhcNMTQwNzE1MDAwMDAwWhcNMjkx +MDE1MDAwMDAwWjBLMQswCQYDVQQGEwJPTTEMMAoGA1UECgwDR09WMRowGAYDVQQL +DBFSb3lhbCBPbWFuIFBvbGljZTESMBAGA1UEAwwJT01BTiBDU0NBMIIBMzCB7AYH +KoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPV +JiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkE +ICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv +/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTH +LwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABHN3 +rJbgDDA/sjFHnenTrBAhDn0lLPfHuiMZhbqEW/bqO4qnUAHES5OaCpz5y3Sx37CL +5yonBOXa6mqoXnteLjCjggE1MIIBMTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud +DwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE0MDcxNTAwMDAwMFqBDzIwMTkwNzE1 +MDAwMDAwWjAxBgNVHREEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4xDDAK +BgNVBAcTA09NTjAxBgNVHRIEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4x +DDAKBgNVBAcTA09NTjA4BgNVHR8EMTAvMC2gK6AphidodHRwczovL3d3dy5yb3Au +Z292Lm9tL2NybC9PTUFOQ1NDQS5jcmwwHQYDVR0OBBYEFFw8g1x2dVtUeC0QTsNs +9TYuJt1XMB8GA1UdIwQYMBaAFFw8g1x2dVtUeC0QTsNs9TYuJt1XMAoGCCqGSM49 +BAMCA0gAMEUCIQCL/Nre80ool26kRNCFIeAMIFJ3iqiKhVH6RxJJeRcUeAIgQ4g2 +r5cGbdgnetvu516bdg0kGJ38IgERuzKX0mTki+g= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDyzCCA3GgAwIBAgIIH2gdlCi3UIwwCgYIKoZIzj0EAwIweTEUMBIGA1UEAwwL +Q1NDQUVDX0JFXzMxNzA1BgNVBAsMLkZFREVSQUwgUFVCTElDIFNFUlZJQ0UgRk9S +RUlHTiBBRkZBSVJTIEJFTEdJVU0xGzAZBgNVBAoMEktJTkdET00gT0YgQkVMR0lV +TTELMAkGA1UEBhMCQkUwHhcNMTUwNTA3MTQxNTUwWhcNMjcwOTAzMTQxNTUwWjB5 +MRQwEgYDVQQDDAtDU0NBRUNfQkVfMzE3MDUGA1UECwwuRkVERVJBTCBQVUJMSUMg +U0VSVklDRSBGT1JFSUdOIEFGRkFJUlMgQkVMR0lVTTEbMBkGA1UECgwSS0lOR0RP +TSBPRiBCRUxHSVVNMQswCQYDVQQGEwJCRTCCATMwgewGByqGSM49AgEwgeACAQEw +LAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////MEQE +IP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57PrvVV2 +mIa8ZR0GsMxTsPY7zjw+J9JgSwRBBGsX0fLhLEJH+Lzm5WOkQPJ3A32BLeszoPSh +OUXYmMKWT+NC4v4af5uO5+tKfA+eFivOM1drMV7Oy7ZAaDe/UfUCIQD/////AAAA +AP//////////vOb6racXnoTzucrC/GMlUQIBAQNCAAQ0IfhfgpvO6/MEiAA/ol/w +H2GAt/Mm/fY6yAw0Z/EQt+gM2Y/n46GRUN1EQ6DZPYhktVpcPitjRb8EWDuqOZNw +o4IBBTCCAQEwHQYDVR0OBBYEFAlGctIeyifZC/xAS19NcEID2YBvMBIGA1UdEwEB +/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUCUZy0h7KJ9kL/EBLX01wQgPZgG8wKwYD +VR0QBCQwIoAPMjAxNTA1MDcxNDE1NTBagQ8yMDIwMDkwMzE0MTU1MFowEQYDVR0g +BAowCDAGBgRVHSAAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jc2NhLXBhc3Mu +YmVsZ2l1bS5iZS9jc2NhLmNybDAOBgNVHQ8BAf8EBAMCAQYwJAYDVR0RBB0wG4EZ +Y3NjYS1wYXNzQGRpcGxvYmVsLmZlZC5iZTAKBggqhkjOPQQDAgNIADBFAiEAjLUA +OvtRDQ9HKLqfv4/OB4FU7P7d6xSXkSJO0RzVhkwCIF7nlwF6F8+H755VhcZEOjf3 +fOL7xZpHrNszoRStES3J +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEFDCCA7mgAwIBAgIIeMNMBTkc578wCgYIKoZIzj0EAwIweDETMBEGA1UEAwwK +Q1NDQV9GQV9CRTE3MDUGA1UECwwuRkVERVJBTCBQVUJMSUMgU0VSVklDRSBGT1JF +SUdOIEFGRkFJUlMgQkVMR0lVTTEbMBkGA1UECgwSS0lOR0RPTSBPRiBCRUxHSVVN +MQswCQYDVQQGEwJCRTAeFw0xNzA5MjgwODQ5MzlaFw0zMDAxMjUwODQ5MzlaMHgx +EzARBgNVBAMMCkNTQ0FfRkFfQkUxNzA1BgNVBAsMLkZFREVSQUwgUFVCTElDIFNF +UlZJQ0UgRk9SRUlHTiBBRkZBSVJTIEJFTEdJVU0xGzAZBgNVBAoMEktJTkdET00g +T0YgQkVMR0lVTTELMAkGA1UEBhMCQkUwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwG +ByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/ +////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiG +vGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF +2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD/ +/////////7zm+q2nF56E87nKwvxjJVECAQEDQgAE6rKjexvNXMllt2rZkijpof1i +TR1tB2mtnDZi/Oo7bF405KvXn01KxJx8Lae7RMdCH30OrS+Br7vmghZ85TTj2aOC +AU8wggFLMB0GA1UdDgQWBBRY2lB1MGHAsToViR1O74CphU/LdDASBgNVHRMBAf8E +CDAGAQH/AgEAMB8GA1UdIwQYMBaAFFjaUHUwYcCxOhWJHU7vgKmFT8t0MDYGA1Ud +EgQvMC2BGWNzY2EtcGFzc0BkaXBsb2JlbC5mZWQuYmWkEDAOMQwwCgYDVQQHDANC +RUwwKwYDVR0QBCQwIoAPMjAxNzA5MjgwODQ5MzlagQ8yMDIzMDEyNjA4NDkzOVow +EQYDVR0gBAowCDAGBgRVHSAAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jc2Nh +LXBhc3MuYmVsZ2l1bS5iZS9jc2NhLmNybDAOBgNVHQ8BAf8EBAMCAQYwNgYDVR0R +BC8wLYEZY3NjYS1wYXNzQGRpcGxvYmVsLmZlZC5iZaQQMA4xDDAKBgNVBAcMA0JF +TDAKBggqhkjOPQQDAgNJADBGAiEAkvuSM+WKh2mlvBpqZiLu7b5OSHd9Ngvmwh4D +0aCKRagCIQCM2RO0p2TVuAaVmNc5l18Yo3oKAnclPqes72rBvIOLAw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEFTCCA72gAwIBAgIJANGoCeS7F+mTMAkGByqGSM49BAEwgY4xCzAJBgNVBAYT +AlJVMQ8wDQYDVQQIEwZSdXNzaWExDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMO +RlNVRSBTVEMgQXRsYXMxDTALBgNVBAsTBFVaSVMxFDASBgNVBAMTC0NTQ0EtUnVz +c2lhMR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3RjbmV0LnJ1MB4XDTE0MTExOTEy +MDkxN1oXDTM2MTExMzEyMDkxN1owgY4xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZS +dXNzaWExDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMORlNVRSBTVEMgQXRsYXMx +DTALBgNVBAsTBFVaSVMxFDASBgNVBAMTC0NTQ0EtUnVzc2lhMR8wHQYJKoZIhvcN +AQkBFhBjYW1haWxAc3RjbmV0LnJ1MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYH +KoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////MFsEIP// +//8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57PrvVV2mIa8 +ZR0GsMxTsPY7zjw+J9JgSwMVBMSdNgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEs +Qkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sx +Xs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB +A0IABBKT3M8EzP1UqfWVjiIaMZYrIaQUpEo0iJNsM1yH2imbP6iAig0vSzLCui9o +ju6EnfE3LdT2WjVn91UEKYgN73CjggENMIIBCTAdBgNVHQ4EFgQUoB6HUCdFkidg +4tAxQDdeFHxGwAIwgcMGA1UdIwSBuzCBuIAUoB6HUCdFkidg4tAxQDdeFHxGwAKh +gZSkgZEwgY4xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZSdXNzaWExDzANBgNVBAcT +Bk1vc2NvdzEXMBUGA1UEChMORlNVRSBTVEMgQXRsYXMxDTALBgNVBAsTBFVaSVMx +FDASBgNVBAMTC0NTQ0EtUnVzc2lhMR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3Rj +bmV0LnJ1ggkA0agJ5LsX6ZMwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E +BAMCAQYwCQYHKoZIzj0EAQNHADBEAiBvsuI1mjwsNYCbcmtMyycWPLlGOAtbveQa +CxjkNI/iWQIgKFp9zzAdGQ540Rp1DsWpAAMaxvDB79b1dFpbZRELnVc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEFzCCA72gAwIBAgIJANJ6FD2S+qP4MAkGByqGSM49BAEwgY4xCzAJBgNVBAYT +AlJVMQ8wDQYDVQQIEwZSdXNzaWExDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMO +RlNVRSBTVEMgQXRsYXMxDTALBgNVBAsTBFVaSVMxFDASBgNVBAMTC0NTQ0EtUnVz +c2lhMR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3RjbmV0LnJ1MB4XDTE5MTAxMTEw +MTAyM1oXDTM1MTAwNzEwMTAyM1owgY4xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZS +dXNzaWExDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMORlNVRSBTVEMgQXRsYXMx +DTALBgNVBAsTBFVaSVMxFDASBgNVBAMTC0NTQ0EtUnVzc2lhMR8wHQYJKoZIhvcN +AQkBFhBjYW1haWxAc3RjbmV0LnJ1MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYH +KoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA////////////////MFsEIP// +//8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57PrvVV2mIa8 +ZR0GsMxTsPY7zjw+J9JgSwMVBMSdNgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEs +Qkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sx +Xs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8YyVRAgEB +A0IABFNKqynAeO6Flom8uClFxR7RI5CPZz1qeyBgu0BN/scP+WSMuWygN5KWIQUX +Z5fHfRS0uIfz1qlT+EpL2R996a6jggENMIIBCTAdBgNVHQ4EFgQUhQxT9xYOXe9k +pWd898GEkgXSspwwgcMGA1UdIwSBuzCBuIAUhQxT9xYOXe9kpWd898GEkgXSspyh +gZSkgZEwgY4xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIEwZSdXNzaWExDzANBgNVBAcT +Bk1vc2NvdzEXMBUGA1UEChMORlNVRSBTVEMgQXRsYXMxDTALBgNVBAsTBFVaSVMx +FDASBgNVBAMTC0NTQ0EtUnVzc2lhMR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3Rj +bmV0LnJ1ggkA0noUPZL6o/gwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E +BAMCAQYwCQYHKoZIzj0EAQNJADBGAiEA2WsmDC7lj1/fcXLvGvvueyFzeFS7qe4F +L5xSH7WjKbMCIQDAwpGaLdgW9oDGE4Ntb3lrmmX3nX89abMUVgboa0Pq5g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEKDCCA8+gAwIBAgIJANwdrlnS2BZbMAkGByqGSM49BAEwgZQxCzAJBgNVBAYT +AlJVMRswGQYDVQQIExJSdXNzaWFuIEZlZGVyYXRpb24xDzANBgNVBAcTBk1vc2Nv +dzESMBAGA1UEChMJU1RDIEF0bGFzMQwwCgYDVQQLEwNTWkQxFDASBgNVBAMTC0NT +Q0EtUnVzc2lhMR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3RjbmV0LnJ1MB4XDTEw +MDIwNTA4MzE0NVoXDTMyMDEzMTA4MzE0NVowgZQxCzAJBgNVBAYTAlJVMRswGQYD +VQQIExJSdXNzaWFuIEZlZGVyYXRpb24xDzANBgNVBAcTBk1vc2NvdzESMBAGA1UE +ChMJU1RDIEF0bGFzMQwwCgYDVQQLEwNTWkQxFDASBgNVBAMTC0NTQ0EtUnVzc2lh +MR8wHQYJKoZIhvcNAQkBFhBjYW1haWxAc3RjbmV0LnJ1MIIBSzCCAQMGByqGSM49 +AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA//////// +////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXY +qjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVBMSdNgiG5wSTamZ44ROdJreB +n36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n +60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxee +hPO5ysL8YyVRAgEBA0IABFgXbfjKUQhG14XIHLlpseIqYugSweVrgQWnbbfvlGX6 +pcBrLM/JoDcAOi4WlkILJGGU49ybVJ+83B/vr4TSAnejggETMIIBDzAdBgNVHQ4E +FgQUVlmZiaHMHBPTn7ywyHcAOFAzpTMwgckGA1UdIwSBwTCBvoAUVlmZiaHMHBPT +n7ywyHcAOFAzpTOhgZqkgZcwgZQxCzAJBgNVBAYTAlJVMRswGQYDVQQIExJSdXNz +aWFuIEZlZGVyYXRpb24xDzANBgNVBAcTBk1vc2NvdzESMBAGA1UEChMJU1RDIEF0 +bGFzMQwwCgYDVQQLEwNTWkQxFDASBgNVBAMTC0NTQ0EtUnVzc2lhMR8wHQYJKoZI +hvcNAQkBFhBjYW1haWxAc3RjbmV0LnJ1ggkA3B2uWdLYFlswEgYDVR0TAQH/BAgw +BgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwCQYHKoZIzj0EAQNIADBFAiAEo0jligNV +t8laftPk8x/toeyQyaGBfJHBxXOFNl/UEAIhAPsznr12itghRhgyEE8AROl+WsIT +eOG4EX0HFk0NZXfT +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEQjCCA8igAwIBAgIIFtqXlpn5A1YwCgYIKoZIzj0EAwMwPzELMAkGA1UEBhMC +QVQxCzAJBgNVBAoMAkdWMQwwCgYDVQQLDANCTUkxFTATBgNVBAMMDENTQ0EtQVVT +VFJJQTAeFw0xOTA5MDIwNzEzNDRaFw0zNDEyMDYwNzEzNDRaMD8xCzAJBgNVBAYT +AkFUMQswCQYDVQQKDAJHVjEMMAoGA1UECwwDQk1JMRUwEwYDVQQDDAxDU0NBLUFV +U1RSSUEwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKj +OG0oD11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7 +w4LGPYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYE +MASox90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBM +EQRhBB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7Li +R9SvHoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNB +JjxTFQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7 +iDIC6QRlZQIBAQNiAARDw8YCZxbgqjALOxkz6FpjmsGDSIwjXs08U+qwG5G20Mbe +IYcLHqkuLK+KlwCWz4KMXssQeCxblpdnKh5R22SIPj7EquIwAt3ccXbH6ZQ5Pjwg +bc9RNxCoLKLXCuUtY22jggFOMIIBSjAdBgNVHQ4EFgQUJpLH45ir++NRktPybpox +fR/tU70wEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBQmksfjmKv741GS +0/JumjF9H+1TvTAaBgNVHRAEEzARgQ8yMDI0MTIwOTA3MTM0NFowFgYDVR0gBA8w +DTALBgkqKAAKAQIBAQEwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5ibWku +Z3YuYXQvY3NjYS9jcmwvQ1NDQUFVU1RSSUEuY3JsMA4GA1UdDwEB/wQEAwIBBjA3 +BgNVHRIEMDAupBAwDjEMMAoGA1UEBwwDQVVUhhpodHRwOi8vd3d3LmJtaS5ndi5h +dC9jc2NhLzA3BgNVHREEMDAupBAwDjEMMAoGA1UEBwwDQVVUhhpodHRwOi8vd3d3 +LmJtaS5ndi5hdC9jc2NhLzAKBggqhkjOPQQDAwNoADBlAjA0jEdGV11muX1j6OGk +XeioRMXc7QQbP5niAGoxCU3W7UY/OKeUo+PxaTwm1Yafdo4CMQCFEdJjB28RbLhe +MVT9Oh7MhLbPN6rjSFrpIzLvclb+4Uf1oHty/O6TyP603NUcUZY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIERTCCA+ugAwIBAgIEXQDTkTAKBggqhkjOPQQDAjCBhDELMAkGA1UEBhMCUlcx +GzAZBgNVBAoMElJlcHVibGljIG9mIFJ3YW5kYTESMBAGA1UECwwJZVBhc3Nwb3J0 +MSIwIAYDVQQLDBlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMSAwHgYDVQQDDBdS +ZXB1YmxpYyBvZiBSd2FuZGEgQ1NDQTAeFw0xOTA2MTIwOTU4MDFaFw0zNTAxMTIx +MDI4MDFaMIGEMQswCQYDVQQGEwJSVzEbMBkGA1UECgwSUmVwdWJsaWMgb2YgUndh +bmRhMRIwEAYDVQQLDAllUGFzc3BvcnQxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24g +QXV0aG9yaXRpZXMxIDAeBgNVBAMMF1JlcHVibGljIG9mIFJ3YW5kYSBDU0NBMIIB +SzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAA +AAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA//////// +///////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSdNgiG +5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiY +wpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//// +//////+85vqtpxeehPO5ysL8YyVRAgEBA0IABKr04UQVWQWUjEPRpznLR77AaJeG +mfrRl40rcd6/drccv4M5CtPVLHFr7FGGwByYzvWWClHFpUNMbkhTfROd99ujggFT +MIIBTzA6BgNVHRIEMzAxgR1lcGFzc3BvcnRwa2lAbWlncmF0aW9uLmdvdi5yd6QQ +MA4xDDAKBgNVBAcMA1JXQTA6BgNVHREEMzAxgR1lcGFzc3BvcnRwa2lAbWlncmF0 +aW9uLmdvdi5yd6QQMA4xDDAKBgNVBAcMA1JXQTAOBgNVHQ8BAf8EBAMCAQYwEgYD +VR0TAQH/BAgwBgEB/wIBADBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vd3d3LnBr +aS5taWdyYXRpb24uZ292LnJ3L0NSTHMvUndhbmRhQ1NDQS5jcmwwKwYDVR0QBCQw +IoAPMjAxOTA2MTIwOTU4MDFagQ8yMDI0MDYxMjA3NDAzMlowHwYDVR0jBBgwFoAU +uxxjqYN867AeNN9aRaSlL2HTEG8wHQYDVR0OBBYEFLscY6mDfOuwHjTfWkWkpS9h +0xBvMAoGCCqGSM49BAMCA0gAMEUCICw8QRLq/D9+5he10JWNpbzfR7qNlquMIWNs +lGNkEVcMAiEA4kTsX240Ctf23oi4zDP4OYKhUHGJ6o9TKWZvi6UCSjY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIERzCCAq+gAwIBAgIEAQAAATANBgkqhkiG9w0BAQsFADBCMRcwFQYDVQQDDA5D +U0NBIE1hY2Vkb25pYTEMMAoGA1UECwwDTU9JMQwwCgYDVQQKDANHT1YxCzAJBgNV +BAYTAk1LMB4XDTA3MDMyODE2NDkxM1oXDTIyMDYyODE2NDkxM1owQjEXMBUGA1UE +AwwOQ1NDQSBNYWNlZG9uaWExDDAKBgNVBAsMA01PSTEMMAoGA1UECgwDR09WMQsw +CQYDVQQGEwJNSzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAJxE1y0q +U1svsM1Z4LG8yrys+Qa3XB4iE2KJZk2D/38p41Aoe3XM0eFebp5AV6+bMjo0Qa4S +ii3QgNdJOWJEBg4by8jMqOCW/s5O4jNb3fU105gz2mlizdN25U4wmYVgxMEuDtdP +rm1PTM97vAUs+8zBqcqyZkSN8fF7Tc/5y9R0GtL33Ohj66jmXLdmk79PSJozsY6P +qvrgnc/XLkA5IgcGvC2eJE7fEGShw0DAW7tlqcobeik1eIhYJGB0kOiX02eZbmU+ +e8hp9K4XpA1BfW1MBEwzY5jWCRSGktZ2q39LgI1NedTMQBPt4nNxkq4pqDtQ6PWB +L2NoMRJWVjqh4D+zx2r1VnpvNkYzbDek0+O/1Il72Lj4NsZsGMfYa+TWhwOi9nd4 +gulRLI4eXWbHEof27kAGE+XfgEhXEGuLVpQX+SsW7C2EB5Nuhj2S/D2LFYIqn0Ci +/vkGmHaEqPOpmYlWXHDBFRAYUBYrx58vw5JKibqJSLZVERAcagc/J4+39wIDAQAB +o0UwQzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUlUb7AHMye+lR6AxP0G9tPU5mjXswDQYJKoZIhvcNAQELBQADggGBAGWqg7vi +w4512HcfYqSwZkA/8EfZPtWmSJp9QaVqYvGZNE4Pt77SVMonP5TtbUPHFs85RamY +YphTxqrBQNpooOyw7GitWXYh/wTqKra9rkz0J93EKkJ91GvSbkFluBNRMP3QD2SN +BVCXbNyO4wNEFQ8KfjTiX8y8xnAlHLPysMaOpZVvJbM5eIGVGw4qBsv2Ja8h6IjE +mAC6/96dFBlK6Q6WC2qkg8vBVQflb5IZEBE3mn0VnLVzAVyE41fAsl2J8htvR7Hd +FAnVxQaxNcVjoxu1uggnto6nDeUSYHiGYAyh5p7GoC4/XdJ1Mm8bnb/IYxhbHlGV +0N9t6QB7MoXi7symQV+hrJhfiBIBWbfTNZX25c8jhrQVAXT++i+/5MQBKuXShREC +botIWJ83u6f3U2yjjER1Sxdc5X5/W4yoa7/YUVB+yxNa6eHb9d9F6ym2ji0UE1Ne +WsZSwtcPNHPNiEe8rlzOcpObA9+U8Ft7ZXcEsdKhm87srADVOhXAOQCHVw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEUjCCA9igAwIBAgINANcV9x+HX1uVE5eeCjAKBggqhkjOPQQDAjBRMRUwEwYD +VQQDDAxDU0NBIEhVTkdBUlkxHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9y +MQwwCgYDVQQKDANHT1YxCzAJBgNVBAYTAkhVMB4XDTIwMTAyMDA5MTUwM1oXDTM0 +MDEyMDA5MTUwM1owUTEVMBMGA1UEAwwMQ1NDQSBIVU5HQVJZMR0wGwYDVQQLDBRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEMMAoGA1UECgwDR09WMQswCQYDVQQGEwJIVTCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////////// +//////////////////////////7/////AAAAAAAAAAD/////MGQEMP////////// +///////////////////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+ +5+SYjgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEEqofK +Ir6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3Nhfe +SpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA +////////////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlz +AgEBA2IABIrUa9r93fYmI9mhjcofFPq45Zhgv/eRTOk3wMtvUgbPIrg6QVH9b33h +gC8zVQqwyudfoXlrAmWwI+fAQVndnKXF2Ef2HaUyTA+3kJkUkjdjMr4YsilHMsli +chUCcIIly6OCATUwggExMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBTldkNgouiIHq9OrU8BuHm8RmsuxjArBgNVHRAEJDAigA8y +MDIwMTAyMDA5MTUwM1qBDzIwMjMxMDIwMDkxNTAzWjANBgdngQgBAQYBBAIFADAz +BgNVHREELDAqgRZjc2NhLWh1bmdhcnlAYm0uZ292Lmh1pBAwDjEMMAoGA1UEBwwD +SFVOMDMGA1UdEgQsMCqBFmNzY2EtaHVuZ2FyeUBibS5nb3YuaHWkEDAOMQwwCgYD +VQQHDANIVU4wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL255aWx2YW50YXJ0by5o +dS9sZXRvbHRlcy9DU0NBL0NTQ0EtSFVOR0FSWS5jcmwwCgYIKoZIzj0EAwIDaAAw +ZQIxAK8dZxK7/U3Z1pV2BppVy5vuLYdClVtf6wtmAM/dg5lXYkybbv4up4ptd+GZ +TsOn+wIwSsEuBpc2kC0HIzeG9xAC3fJXN2Gm/67pBGHI5ffpH+7fC/Mvkhjtexyb +uHfzDYVO +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjTCCBBSgAwIBAgIBJjAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA3MB4XDTE5MDczMTA4MDYwN1oXDTMyMTAzMTA5 +MDYwN1owVzELMAkGA1UEBhMCTFYxJDAiBgNVBAoMG05hdGlvbmFsIFNlY3VyaXR5 +IEF1dGhvcml0eTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwNzCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+ +UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUM +PHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLO +KCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk +8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4d +dSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEA +jLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVl +AgEBA2IABIYx+qLf5HTBwPFyHP9594d8Cmn5TflGdnG8tWRXW9ZN+jsZx9HGlWbO +Q2mNSpRUBmnig1e+BydH8ZS7MgH/G6HtINanjJj5YDtQC1RKuwYsXvD8sfQ9NwEE +lxWrq4QdxqOCAXEwggFtMB0GA1UdDgQWBBTEweHhBA3E+w0HThTTg6GY4NmyaTAr +BgNVHRAEJDAigA8yMDE5MDczMTA4MDYwN1qBDzIwMjIwNzMxMDgwNjA3WjANBgdn +gQgBAQYBBAIFADASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFMTB4eEE +DcT7DQdOFNODoZjg2bJpMA4GA1UdDwEB/wQEAwIBBjBtBgNVHR8EZjBkMDCgLqAs +hipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0xWQS5jcmwwMKAu +oCyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvTFZBLmNybDAt +BgNVHREEJjAkpBAwDjEMMAoGA1UEBwwDTFZBgRBucGtkQHBtbHAuZ292Lmx2MC0G +A1UdEgQmMCSkEDAOMQwwCgYDVQQHDANMVkGBEG5wa2RAcG1scC5nb3YubHYwCgYI +KoZIzj0EAwMDZwAwZAIwZglEJbodOCDqRIvu4vudpn5BmRCafasH30JZ+5cu+vMq +d/5CmXDdAjiiH/h8PD0LAjAPCVzl4DtEI/AkvrncQoMisjE0uRIeHWVs7w922LA1 +pb4Jjy6iTslB3xo9lauVd0g= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjTCCBBSgAwIBAgIBNjAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA4MB4XDTIwMDYyOTEzNDU1OVoXDTMzMDkyOTEz +NDU1OVowVzELMAkGA1UEBhMCTFYxJDAiBgNVBAoMG05hdGlvbmFsIFNlY3VyaXR5 +IEF1dGhvcml0eTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwODCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+ +UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUM +PHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLO +KCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk +8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4d +dSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEA +jLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVl +AgEBA2IABGX0imoF0qGn8Dig3JCdVyAj5C4RljjkgJdDYYX29GtAB8qBzpcNZ55B +V0rUciPngg1WC+e72lpwgfcpwPUw7EBT+Emt1Wi78wBHUVMn0mSrr4Z7Nch9JKH4 +7T3AOROMCqOCAXEwggFtMB8GA1UdIwQYMBaAFLcnSNHjUGL39r1bLfQ+uMy4YB6g +MBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYHZ4EIAQEGAQQCBQAwKwYDVR0QBCQwIoAP +MjAyMDA2MjkxMzQ1NTlagQ8yMDIzMDYyOTEzNDU1OVowHQYDVR0OBBYEFLcnSNHj +UGL39r1bLfQ+uMy4YB6gMC0GA1UdEgQmMCSkEDAOMQwwCgYDVQQHDANMVkGBEG5w +a2RAcG1scC5nb3YubHYwLQYDVR0RBCYwJKQQMA4xDDAKBgNVBAcMA0xWQYEQbnBr +ZEBwbWxwLmdvdi5sdjBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL0xWQS5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93 +bmxvYWQyLmljYW8uaW50L0NSTHMvTFZBLmNybDAOBgNVHQ8BAf8EBAMCAQYwCgYI +KoZIzj0EAwMDZwAwZAIwC4wE9tWE8tnyv1O9pcMgqtjcltkEaRA1HL/jlOhpRhWH +H6iXTdIiwuw29i/JgXwpAjBXLHbhizgEgOiuzWd+Sl4TqX7tUrDVnThP6ZIB9fAK +JdcjpjdN31Phm7Bk4hsce3s= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjjCCBBOgAwIBAgIESS7rKTAKBggqhkjOPQQDAzBBMQswCQYDVQQGEwJHQjEO +MAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRob3Jp +dHkwHhcNMTYwOTA5MTAyNjMxWhcNMzMwMTA5MTA1NjMxWjBBMQswCQYDVQQGEwJH +QjEOMAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRo +b3JpdHkwggHMMIIBZAYHKoZIzj0CATCCAVcCAQEwPAYHKoZIzj0BAQIxAP////// +///////////////////////////////////+/////wAAAAAAAAAA/////zB7BDD/ +/////////////////////////////////////////v////8AAAAAAAAAAP////wE +MLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq +7wMVAKM1kmqjGaJ6HQCJamdzpIJ6zaxzBGEEqofKIr6LBTeOscce8yCtdG4dO2KL +p5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/kpLcKfj0Hb0o +mhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////////////////////// +////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IABGCi/3XqrTwye7VZ +rhZMAYxYsU8TKMTJCCOeSpFyJFKUd2t+/dmnA+A7yFfR/xjeFBGjW1AtkHKP1G0a +Vtt2lFgTGlL1JWT2As7I7l9RvGywXzCSA+TXPUIfD/CfvC4sIaOCAYIwggF+MA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEAGA1UdEQQ5MDeBI2Rv +Y3VtZW50LnRlY2hub2xvZ3lAaG1wby5nc2kuZ292LnVrpBAwDjEMMAoGA1UEBxMD +R0JSMEAGA1UdEgQ5MDeBI2RvY3VtZW50LnRlY2hub2xvZ3lAaG1wby5nc2kuZ292 +LnVrpBAwDjEMMAoGA1UEBxMDR0JSMGcGA1UdHwRgMF4wXKBaoFiGKmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvR0JSLmNybIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDIuaWNhby5pbnQvQ1JMcy9HQlIuY3JsMCsGA1UdEAQkMCKADzIwMTYw +OTA5MTAyNjMxWoEPMjAyMTEwMDIyMTU4NTVaMB8GA1UdIwQYMBaAFNsdFlfHYCMI +mwE54mE8CCE0tXyhMB0GA1UdDgQWBBTbHRZXx2AjCJsBOeJhPAghNLV8oTAKBggq +hkjOPQQDAwNpADBmAjEAqn+jBkjRRg3R4wNsB9G9RGoQNyRcURJFz5jiy1EX7DHE +7iQkvO9FKbHFVlw6RFipAjEAt0vN2ZqvRdo/nPs3yYTkR8bwH5chaiAQOUOulzW1 +BoA5LSiqPfMV6+EPfBMtiahc +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjzCCBBSgAwIBAgIBATAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA2MB4XDTE3MDcxOTA3MDg0N1oXDTI5MTAxOTA3 +MDg0N1owVzELMAkGA1UEBhMCTFYxJDAiBgNVBAoMG05hdGlvbmFsIFNlY3VyaXR5 +IEF1dGhvcml0eTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwNjCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+ +UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUM +PHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLO +KCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk +8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4d +dSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEA +jLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVl +AgEBA2IABC5F8Cxy3+yuPTq5Wt6R+q9M5Z4PmAK2hCjxrU533v5gmGMllotYmOZY +kT6Y+YsonQwSdcR0Nl2Aeh5zBuKqJQo0fl8FZmzPy/0nMW5UaI3p3ZTs3b4vac54 +AqU/F5YTzKOCAXEwggFtMB0GA1UdDgQWBBSWY40USDp+AaurQM6C3Zt1b0ZxlDAN +BgdngQgBAQYBBAIFADASBgNVHRMBAf8ECDAGAQH/AgEAMC0GA1UdEgQmMCSkEDAO +MQwwCgYDVQQHDANMVkGBEG5wa2RAcG1scC5nb3YubHYwHwYDVR0jBBgwFoAUlmON +FEg6fgGrq0DOgt2bdW9GcZQwDgYDVR0PAQH/BAQDAgEGMG0GA1UdHwRmMGQwMKAu +oCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvTFZBLmNybDAw +oC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9MVkEuY3Js +MCsGA1UdEAQkMCKADzIwMTcwNzE5MDcwODQ3WoEPMjAxOTA3MTkwNzA4NDdaMC0G +A1UdEQQmMCSkEDAOMQwwCgYDVQQHDANMVkGBEG5wa2RAcG1scC5nb3YubHYwCgYI +KoZIzj0EAwMDaQAwZgIxAIOcTMQoFIvmHAm47HEsaPZAW+AcOzg/e2WWEbWQ1Brf +a6PYNEYCdSLIMqRjPxJa6QIxAIqtoJtEIBd+FjhAWMq80nLBv1WoRz+jZ/Xduyyo +gM8p3MeyWVS+jfbMF+QYp7BhEw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCAwmgAwIBAgIETmSvwTANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJE +SzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQDExJDb3VudHJ5 +IFNpZ25pbmcgQ0EwHhcNMTEwOTA1MTA0NzIyWhcNMjcwNTA1MTExNzIyWjBHMQsw +CQYDVQQGEwJESzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQD +ExJDb3VudHJ5IFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK +AoIBgQCws6lEwWGit/eldQWQNSOczigv/GPjJrEz8vJXC5LRU39WlgubZG4mSYZn +gyN/fcis9W9MrokkqEx2AIJWLOE4Xc0kfMFcQ4FVGZgKy7VqAE6x8BfBkflQmms0 +W0m+epruQ8eCY97+8+xEvezamO3H7jvs/JUsB2AHNtsTn2EHL96vu8MsB+uWjXGY +pEX+zWJqoQXS4QgO+5LodNm1QxWyQNcNL/fjnPkQN+4LDywtb3EpLFDHA3r1DXRc +Oqse1pXjsXLmARSAsJGNNeYdZmJ8F/n09UDBQkfOWrv4P2LV8gd9kLbzoxxp1ct2 +San/aTNjVex85wrBYrxgCweQJ00iMmx9a+Dx+1QYCnq0SVqW7JqSmW59LMG5iOeR +SolxL6ngzoVFGz1tIA+a42gfATmn7HHmK9k2qUW5PJNN5drG17M/ZxbZq4ahDRcA +LARA5zBoH8BkEHq7eJkxnjvdiieC74AU0siIHPDiOWWFvrmG/9cF2RFt6S052rRe +easixGcCAwEAAaOBlDCBkTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB +/wIBADArBgNVHRAEJDAigA8yMDExMDkwNTEwNDcyMlqBDzIwMTYwNzEzMjMxNzIy +WjAfBgNVHSMEGDAWgBRew4itPMuRPoo7xGEDTKVYup8pFzAdBgNVHQ4EFgQUXsOI +rTzLkT6KO8RhA0ylWLqfKRcwDQYJKoZIhvcNAQELBQADggGBAC634bSFPpsT++nf +2rGtO7suLerVlXls2IYQEoIvyZnrqyL+56lAUblgVz673NnGg0odg6upiU3BBAhs +DXj3bPL0Bg2UvcbloF2f/Z8iNN2szLcCUCsip7D8OlZ8sUHlC4BiQnDjdzn10FZZ +nuqKoJrs+uW1vkI5NMKWfmXEMMkF0pZ7fW2v9XHdP/rXLstryKjC171YFZxlmJoM +Z3g+VaQ4Wq9dXEY8CM8A9Rkd6MRf88waTmJpTK630fnR10O/Mob19WyK6CYPuLUG +2uoF3AJwlbs+u/5jrJHYHHK4cEPRgN3MVMv98vct0BKUAup4++hFN6X3vED7mbMV +4e1oY6D8Jjq/dyNft6H5JYUcqW/0ljSokq86vjSoGoWX90M+tohr6XfF7WBojpnC +Yer/uUo8K8gZpAsrh/45WN3l11KFssbZ9c6cnefOA0rgOiHY8L6NdV448XmnqFgi +YIw76iThDCyjNPMEDbq7yuKQv+FI+a+zVdXZdlkGzXmlqCSNZQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCAwmgAwIBAgIETmXq6DANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJE +SzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQDExJDb3VudHJ5 +IFNpZ25pbmcgQ0EwHhcNMTkxMDIzMTEzNjUzWhcNMzUwNjIzMTIwNjUzWjBHMQsw +CQYDVQQGEwJESzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQD +ExJDb3VudHJ5IFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK +AoIBgQCf75+5Gs7V68Gx4aClx9u4gzLtwcCDkMfylUmsgWfZKFdew6/2ZJLRRdhe +G3ii14lvBlZG6uBRmhrsTV361+1LaG0gRFHIL6h9yzuB7YIc+j9j61o9BHJD7rhX +3JWgx7ZG6/I/RDGCgtOeNN44WA/2mXqUdyyg2uHi1urc1m4GIVlEQHQgXQydh6gr +JZzrn+z9MzqHR1ZJpf9vW5RXsdHBPRv55UJn/kpYU3YZj4jj5httsa2SanBAWYz4 +X4oWRNcNmZI3KeJvTCSEE1voPpuCBZgCFJN2kBDvwX9bLMMfOCStvTmugmcxtb1B +oQshribiTPpnB9rrSSRgyjuY3HfN8Q/C8cmPrF/byfrcEDQCKeoCfXWVjtHGqy5f +Nukd4z9fW0txlgNwbD5e//6N8+4PGiroJzmwTifxMjOQnvOyHBlrb598cq+Np/en +4zCWN/rH3REMxQZZhg20Wvmo2zNIrF6JlPSxl+g9iVmLAfjtzbZYD6ImAXBMur03 +57u+LtcCAwEAAaOBlDCBkTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB +/wIBADArBgNVHRAEJDAigA8yMDE5MTAyMzExMzY1M1qBDzIwMjQwODMxMDcwNjUz +WjAfBgNVHSMEGDAWgBTonafsJy2eXWVWRVvVf1joilPnMjAdBgNVHQ4EFgQU6J2n +7Cctnl1lVkVb1X9Y6IpT5zIwDQYJKoZIhvcNAQELBQADggGBAD1bsEDHScaL0Gwv +uhh/jEOQ5pnzUxd3KstLTuEgdcbv16J5lTg0pcGuPzWWLxGG3G9rkebqtP7wfZcE +QMiDsg9BLeS7SABkbr9X2CJxK7gFEXAvPplar57pIWlncXX2XmazK4ef0r+SXeky ++hW3gffqIuWpdPTvSw6/nEGDhwLJjSjYvJGdnzckF3EidCSNQx05qXUxMkhGGnYF +BEQXH9VH8/AL1Q9E8qGY/hbxZHQM0+s+X360lOLyoxsodgQODXyV2VaBT0lbFXKk +e9iCLZ1KOUal70X8Qe1POT0zSRKubkQRLENK1C4TMsdOuY1oUicPqG+fNaeyBcCf +4kngN6hFr7+Ynydx/HH/lSC2Fr9CfPIJGi8DNl3cvHHoQhxhRimmv+aDX64PzeY4 +uuA3rp0T8sbNNkuMvbFBsVRcjhpbd0mSdd9pHYKayDEau2m0kS6AILvJnZc572VL +G/l5u4DbvU07ILXHeVhO9+2sOAC4uzRXSpHWG5kSAboAh2N83Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEojCCBCigAwIBAgICA+gwCgYIKoZIzj0EAwMwTzELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoGA1UEBRMDMTAzMRUwEwYDVQQD +DAxjc2NhLWdlcm1hbnkwHhcNMTYwODIzMTEyMjU2WhcNMzAwMjIzMjM1OTU5WjBP +MQswCQYDVQQGEwJERTENMAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYD +VQQFEwMxMDMxFTATBgNVBAMMDGNzY2EtZ2VybWFueTCCAbUwggFNBgcqhkjOPQIB +MIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHa +GX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7In +hxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH +3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hH +o+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3 +Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB +3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABBIQYNt+G0f9 +fVZYErtxzRVfYo7OAAhV/FsztJ69ml1+dq0glVWiSQO/GeXKlkdzdV7R8CaRNk5j +UPbkBhYAxsTMP2dEwRSLcE9AaMRulNgDwfypesmAcIozJJNxEuXSQ6OCAZQwggGQ +MB0GA1UdDgQWBBQbx1CxR6dV+i8leSBuVdIv4uQnnjAOBgNVHQ8BAf8EBAMCAQYw +KwYDVR0QBCQwIoAPMjAxNjA4MjMxMTIyNTZagQ8yMDE5MDgyMzIzNTk1OVowFgYD +VR0gBA8wDTALBgkEAH8ABwMBAQEwUQYDVR0RBEowSIEYY3NjYS1nZXJtYW55QGJz +aS5idW5kLmRlhhxodHRwczovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgG +A1UEBwwBRDBRBgNVHRIESjBIgRhjc2NhLWdlcm1hbnlAYnNpLmJ1bmQuZGWGHGh0 +dHBzOi8vd3d3LmJzaS5idW5kLmRlL2NzY2GkDjAMMQowCAYDVQQHDAFEMBIGA1Ud +EwEB/wQIMAYBAf8CAQAwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3d3dy5ic2ku +YnVuZC5kZS9jc2NhX2NybDANBgdngQgBAQYBBAIFADAfBgNVHSMEGDAWgBQbx1Cx +R6dV+i8leSBuVdIv4uQnnjAKBggqhkjOPQQDAwNoADBlAjBPBmtA44RXQ93f5jW7 +RAhleQOYA4RFzAMtUnSCBgx3Bb66o9groGA8NXM/zS+zLp0CMQCKq3oTwyToIkyj +oAuB3rwZKOH6XJsJ+KeNFitaLd5aEm8AgBqHM43/4IRwJYEG+co= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEqDCCBCugAwIBAgICAOMwDAYIKoZIzj0EAwMFADBuMQswCQYDVQQGEwJKUDEc +MBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEoMCYGA1UECwwfVGhlIE1pbmlz +dHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEXMBUGA1UEAwwOZS1wYXNzcG9ydENTQ0Ew +HhcNMTkwNjE5MDUxNTE5WhcNMzUwNjE5MDUxNTE5WjBuMQswCQYDVQQGEwJKUDEc +MBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEoMCYGA1UECwwfVGhlIE1pbmlz +dHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEXMBUGA1UEAwwOZS1wYXNzcG9ydENTQ0Ew +ggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAP////////////// +///////////////////////////+/////wAAAAAAAAAA/////zBkBDD///////// +/////////////////////////////////v////8AAAAAAAAAAP////wEMLMxL6fi +PufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq7wRhBKqH +yiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX +3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+gZ16Qx18kOoOXwIx +AP///////////////////////////////8djTYH0Ny3fWBoNskiwp3rs7BlqzMUp +cwIBAQNiAAShziPCcOjKP6lZL1eCZwpuZRnJpqg7HYoMmu97k1wTQDgsg6gT6juf +cqCpWFHWc7Nn40+ewBIeg2VS5ErkOa/3krrUQEOt8mlcsdrm/HoYBNvNWVxacckf +bjPxMvziNDajggFXMIIBUzArBgNVHREEJDAigQ5wa2lAbW9mYS5nby5qcKQQMA4x +DDAKBgNVBAcMA0pQTjArBgNVHRIEJDAigQ5wa2lAbW9mYS5nby5qcKQQMA4xDDAK +BgNVBAcMA0pQTjAdBgNVHQ4EFgQUarTykoK9lkf2/yoC95RNdJ6XhGMwDgYDVR0P +AQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTkwNjE5MDUxNTE5WoEPMjAzNTA2MTkw +NTE1MTlaMBgGA1UdIAQRMA8wDQYLKoMIho9+BgUBAQEwEgYDVR0TAQH/BAgwBgEB +/wIBADBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMS5pY2Fv +LmludC9DUkxzL0pQTi5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmlj +YW8uaW50L0NSTHMvSlBOLmNybDAMBggqhkjOPQQDAwUAA2kAMGYCMQCqewlcwiws +GJ/lCsLSSwn6JfDlgWBFF9T6/GASt/wa944f32wULLri+PXbq0PmMdcCMQDr7Xk7 +9rnMW1p+e0/lApBGlpcRZhwgY5FwKSQWeWufbQoBzV89A8eHNsoNJ7H4vLw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIErTCCAxWgAwIBAgICA+kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEwx +IzAhBgNVBAoMGk1pbmlzdGVyIGRzIGluZm9ybWF0eXphY2ppMR0wGwYDVQQLDBRD +ZW50cnVtIENlcnR5ZmlrYWNqaTEUMBIGA1UEAwwLQ1NDQSBQb2xhbmQwHhcNMTkw +MjIxMTEzMzI0WhcNMzMwMjIxMjM1OTU5WjBnMQswCQYDVQQGEwJQTDEjMCEGA1UE +CgwaTWluaXN0ZXIgZHMgaW5mb3JtYXR5emFjamkxHTAbBgNVBAsMFENlbnRydW0g +Q2VydHlmaWthY2ppMRQwEgYDVQQDDAtDU0NBIFBvbGFuZDCCAaIwDQYJKoZIhvcN +AQEBBQADggGPADCCAYoCggGBAJpspX4b1AtJ8Ltjqtt+L0UjT7GN/TcG5DmtZ+gZ +fCnN9ZfOoVC+vvs6612TnwlH5ZtSDwSPe/Nc11S14FevcjDkXhPiW+gNTZVyv7jh +FHTpbXpG2cczNUF0Rd4uR6alWsliUXSiopp1m20xoqwIMhNG52wsegLJbJj5+4/0 +RZlzYojk7CDwAsRG2vZDZ68lKMg8uDYYYIFaX7VtRsMBJD7exq4gkkRPWC1IeW2V +SJ5D7XgJpYv2qbKdl4LUFTPz/QAM7uVXVwqADb/eO1l7pW/Pyl7/w1Oh5octA10I +uQcW79b/xPVWAttiD+uYNTKjOyvmO+t7c/UxaZNlZg4fbVgoH0Vawj8qogSOJHJQ +9Cf0w6bNkeA3oJk4Qn12bwT679EgIvddOzoOa9UkGCW87GiqGkcY2BQwwNvsCqyJ +9agnsjkmafWQ1foDc/wIr49sNkeqq+yKBhVV79UoZOMbN4xyRFAiyRe/kvc5lNA+ +C2ds0W9Nt2ZwdQnqK8bP+AkZOQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRoE3cmX3Hzyp+3reZaxyrSq+5gOTAd +BgNVHQ4EFgQUaBN3Jl9x88qft63mWscq0qvuYDkwDQYJKoZIhvcNAQELBQADggGB +ABpcjgkJjGdpKbGqyJE0JxJhYAUqcX7Rbj/c73QNTwd5+7UqmeumleFwwm1OBG2C +8RLZnDpSG9vXAAssIKrBM0tA8XThb7XT/V8uCNPWyCFmhnY+jKH1OdBb66E746pN +yGYChrgL+iozuuKrUNWrR5J2Yjo0gPeKvjRWm4+HUH7HTOcsnF3u4ahjDHcLJVRT +b7pgGb7lGe8onrMgnnLd4RabJvtvIy0PSdUE6mwsn2AP/Fg8lTWDWgnU6/MHRbTq +bbiWzgg2DShbJMZ9ozA+W7/Jg7VL9J4rPPAxK/BTkbCYqpAo0onG9i9pT0oAARsu +r45ZJSK4CR89FUcAlKbz72yUurgXd9Pu85DPJrwkyQAzNfhcfgwnADP+DDb6ZNVf +keuF7/XUSeqeprsd75RB4HbTetmWxtgyyzR5gMcRBeRKKfAQ83dipynLOSeHKfqh +noYen0Z6zrcS7VwJmBtn4tR8r1d70ijpZLXdjQ858OmMhLwmDYNfvx9/402DY/p3 ++w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEtTCCBDygAwIBAgIEVhWadjAKBggqhkjOPQQDAjA7MRAwDgYDVQQDDAdDU0NB +LVVZMQswCQYDVQQKDAJNSTENMAsGA1UECwwERE5JQzELMAkGA1UEBhMCVVkwHhcN +MTUxMDA3MDAwMDAwWhcNMzEwMTA3MDAwMDAwWjA7MRAwDgYDVQQDDAdDU0NBLVVZ +MQswCQYDVQQKDAJNSTENMAsGA1UECwwERE5JQzELMAkGA1UEBhMCVVkwggG1MIIB +TQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0oD11vflDmQd8V +L3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LGPYwVDDxyCArO +Ba+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASox90izigmizm1 +VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRhBB0cZPBoz0X/ +oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9SvHoq+HXUg+cKk +XLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxTFQIxAIy5HoKj +OG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC6QRlZQIBAQNi +AAQyp4yzOPQDYQi/vyQNKX31kfAu4IjjE0zfL0fiwOerFez6ervYSImduu2915bY +iYZLDuZSNver3vbFi7AE8lJS9du9FHJCSYwadSSTHYgNRBzspGgKsQx035XY2xRA +QuqjggHOMIIByjBmBgNVHSMEXzBdgBRGq1M0aXU7t9I1aKrHQjtBFig9J6E/pD0w +OzEQMA4GA1UEAwwHQ1NDQS1VWTELMAkGA1UECgwCTUkxDTALBgNVBAsMBEROSUMx +CzAJBgNVBAYTAlVZggRWFZp2MB0GA1UdDgQWBBRGq1M0aXU7t9I1aKrHQjtBFig9 +JzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDE1MTAwNzAwMDAwMFqBDzIwMjAxMDA3MDAwMDAwWjBXBgNVHREEUDBOhiBo +dHRwczovL2ljYW9wa2kubWludGVyaW9yLmd1Yi51eYEYaWNhb3BraUBtaW50ZXJp +b3IuZ3ViLnV5pBAwDjEMMAoGA1UEBwwDVVJZMFcGA1UdEgRQME6GIGh0dHBzOi8v +aWNhb3BraS5taW50ZXJpb3IuZ3ViLnV5gRhpY2FvcGtpQG1pbnRlcmlvci5ndWIu +dXmkEDAOMQwwCgYDVQQHDANVUlkwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cHM6Ly9p +Y2FvcGtpLm1pbnRlcmlvci5ndWIudXkvY3Jscy9jcmwuY3JsMAoGCCqGSM49BAMC +A2cAMGQCMGk9GOOFKCadGXP1U/RnyQEOK5WsPckOeJ5sgj8lhoXEzFj0n76XprA6 +O2PqYceyTAIwRLW1Yd0TV83efiYKbTDRU5Wvz+4fQ7SKtQdi7LTK67d54OQ9k5tj +GLAMG2/349GE +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAt8wDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTcwOTE5MDkxMTU5WhcNMzEwOTE5MjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKrcRO4rN8BAJsCg +WNZcClIoucmna+XOL24Ibz0uIGl0WNMGUtE1To027Je7YZ0EjJ48QdZYD1uGYLXC +w7jBFmAWd5NxS18dUHvS/j9t9xVO+Ehy44GNaVNhjpST84TQBiW/nJ6FYESeQNCB +YLaytIZ2pN4j5O9kWynB5xQoRNy367S08oor67vGxTaXoJpeLm03Qu6/AAZDokT6 +csTvX6AhOIWg6vp27lrkJvYT3H5ER2sHhPcZDVxCs1Beiw8DH9BxS2UOZTk37MLX +NUFSVy2ES1ecnzviH+ytC4yweJxP/y3X2UrrVyxYgMNMuFc1fcfBMvJmSGfwvhnG +T1XffKsBjNbKT6R6AnuzGOXBDjlrOiRcWAvsAKB8ibVP8IrPh8ZP7kCYqxrLRjrU +K7abJ/LxfzBki8vjO6AbajdzFA0ZJNsM/MtYxobL2r00H3S3MeS/FgXUXHmhj8bX +ndfCM7fz5o1AC7fYeF2lypO8BxlSBxXc22EAubbqiNvBxA+coQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSqW1+f +QNbRn7emT2QHzJyBh260PzAdBgNVHQ4EFgQUqltfn0DW0Z+3pk9kB8ycgYdutD8w +DQYJKoZIhvcNAQELBQADggGBAKaV/LAPTJb1LRhUnSIjsl5xiAd20qIbTYkMCcG5 +urFNV0SgpOqSEgvnu9rv2S4Ak5D7OXYdRmd9sX6/E9uGKYq7ENqfK6FCi53d5SEb +r+lxptu+yKfBuT2QKaUZYFiiGW+xGGE15YrjLFb9FafKVh3d1dJeH9BkY6nJTOfa +qTuGiHv8Nt18kb53S6B5q29qT0ZHR5OmlKNwjPl6DVcg3MFDcgiYHMdcST/k+cwk +hwEgllC9B6Lmn0ScbD4F8bA1qZhKIfQM2IttDaSUo6ZRaUjw7i6vPWTacM8xvA9o +jURTUH6R0szsoGurF1GnYug/D3Gqnjq3FAZa9eb+gL+3xdpM72QOG0hYprwKuZTj +3BwGBRC+PY+VQGmMH9oR+ozC83wX9yPOMtMC0AhIInSjwpdnzKLVEpIKKgoZOunQ +Q4XXNGmm5SI3rQ2KyctZEg5UzMcMCaIKVcocKYCoQF6NMb9G/OXbwu1MzsNd5Brc +vAJAKd9h4XTOX+4IaVg18giBoA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIExTCCAy2gAwIBAgIETzVc7DANBgkqhkiG9w0BAQsFADBZMQswCQYDVQQGEwJh +cjEMMAoGA1UEChMDZ29iMRQwEgYDVQQLEwttaW5pbnRlcmlvcjEQMA4GA1UECxMH +cmVuYXBlcjEUMBIGA1UEAxMLY2FwYXNhcG9ydGUwHhcNMTIwMjEwMTczODQ3WhcN +MjcwMjEwMTgwODQ3WjBZMQswCQYDVQQGEwJhcjEMMAoGA1UEChMDZ29iMRQwEgYD +VQQLEwttaW5pbnRlcmlvcjEQMA4GA1UECxMHcmVuYXBlcjEUMBIGA1UEAxMLY2Fw +YXNhcG9ydGUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDJphBe3/vy +HpHOQtwpsCTKj7LAwouo/MBxDYJ1lDoFhJTLeFyqFzX3LSM2ThxVgFAfuuooNFjE +c2P830dbn4bbgDyBLYeSEULDjrGZtHh6CVc2jo1FR5TBbKGCQx43OrhT5fIdd2a4 +ZhTjANSFMymqG/iAgtEPXAlbzy/GCzcfKo834bvITO/ZiSa39JmRTdWveXe5oRE6 +/rib9G0RYr9b96qaR8Wpsil5wfr9neQ0OVzvfkbqE2A9qUlYJxPpNH344VEHnBCI +YIVEhqsxpRGG7tQsqvY75plFLhE81YZZF/ccD9NS+vL2z2myijlRAq0ORxgo4IJ2 +QT79RwF9G8UStLVXtPsDhogVQsjvT3XP1Kx4f/NFyIYCfVTKDSOJT/z5zCGM5+AC +bhswTAOLGrEgUunvIX06Ag7IUUHglIqX17h7kB7bRqj20nt8UsLqonu1yjLfmv/X +O7pBNMLZxk1B4c70S1019p214x3wyHE4at/4e5NLWSOt9evLRpFAxJ0CAwEAAaOB +lDCBkTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAE +JDAigA8yMDEyMDIxMDE3Mzg0N1qBDzIwMTcwMTIyMTkwODQ3WjAfBgNVHSMEGDAW +gBTBwzRUOqa8Xz2yqHldhlq5bnv2/jAdBgNVHQ4EFgQUwcM0VDqmvF89sqh5XYZa +uW579v4wDQYJKoZIhvcNAQELBQADggGBAIoRsd1dRj2YmcM5JEzv0rdTZe6TEuXx +6VcDgUrfAduF8kyZ0IAtenKMVHpC/G8ibedqWXY6KgCgXvD+kPLxQ7o37VHtcSqV +QmvtOXC9DZpgKJsOs5v+N8Kj4NCQgubK1dUx6Zj9MBZg+TD+VT/luJQHprpMyjE+ +hE5gBLZyThi3d/3PiYPlFPuadqPWgI8+LWdwjcsM5HSwVvc+XzrHZ+brHQSIqEpe +KyUkogU6K5njTWNZtx9gED0oRrKwiWh6MVNVvAtLpTBskDI1tqstmlHkAiRnbAkT +WqZ0TBudFC4zhVDK/FfvJfJ1cYpB8GHFYDNcN4/364qdSoRs/HUyK1fVLLXoEmmL +aUSTGqL/EqttWbMzCb1ylLVTOhP3toqE/+zWaXPoL7oF890/EOLJf/YwXef6jXv7 +62unPH7c3cq+fRlldq6qYmevgwC/zL95HJMjtcm5lL/82MJRSs+zWdJtslX2N8oL +xUcmIXPC9gp9vaj5CtvkQfL091JRqAv2AQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIExTCCAy2gAwIBAgIETzWCzTANBgkqhkiG9w0BAQsFADBZMQswCQYDVQQGEwJB +UjEMMAoGA1UEChMDZ29iMRQwEgYDVQQLEwttaW5pbnRlcmlvcjEQMA4GA1UECxMH +cmVuYXBlcjEUMBIGA1UEAxMLY2FwYXNhcG9ydGUwHhcNMTIwMjEwMTczODQ3WhcN +MjgwNTI0MTUwMjQ5WjBZMQswCQYDVQQGEwJBUjEMMAoGA1UEChMDZ29iMRQwEgYD +VQQLEwttaW5pbnRlcmlvcjEQMA4GA1UECxMHcmVuYXBlcjEUMBIGA1UEAxMLY2Fw +YXNhcG9ydGUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDJphBe3/vy +HpHOQtwpsCTKj7LAwouo/MBxDYJ1lDoFhJTLeFyqFzX3LSM2ThxVgFAfuuooNFjE +c2P830dbn4bbgDyBLYeSEULDjrGZtHh6CVc2jo1FR5TBbKGCQx43OrhT5fIdd2a4 +ZhTjANSFMymqG/iAgtEPXAlbzy/GCzcfKo834bvITO/ZiSa39JmRTdWveXe5oRE6 +/rib9G0RYr9b96qaR8Wpsil5wfr9neQ0OVzvfkbqE2A9qUlYJxPpNH344VEHnBCI +YIVEhqsxpRGG7tQsqvY75plFLhE81YZZF/ccD9NS+vL2z2myijlRAq0ORxgo4IJ2 +QT79RwF9G8UStLVXtPsDhogVQsjvT3XP1Kx4f/NFyIYCfVTKDSOJT/z5zCGM5+AC +bhswTAOLGrEgUunvIX06Ag7IUUHglIqX17h7kB7bRqj20nt8UsLqonu1yjLfmv/X +O7pBNMLZxk1B4c70S1019p214x3wyHE4at/4e5NLWSOt9evLRpFAxJ0CAwEAAaOB +lDCBkTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAE +JDAigA8yMDEzMDUyNDE0MzI0OVqBDzIwMTgwNTA2MTYwMjQ5WjAfBgNVHSMEGDAW +gBTBwzRUOqa8Xz2yqHldhlq5bnv2/jAdBgNVHQ4EFgQUwcM0VDqmvF89sqh5XYZa +uW579v4wDQYJKoZIhvcNAQELBQADggGBAL0ei0vpjVCruAEhUdM7fe/QD/5c82jB +FBqsZQBN/yynxGgdWR7DkjiXtqGrHtgZweH6pegvN1IOncv77SzJCrEUTCh1l5QO +W5ATtPt5vxcjkXwRaixJHyRE+VQKBztAsdvPoKAX/F9p+QVeX7LAfH8k5hE/gQn6 +4DFpiJLamwWmVZ4XR04RmjoMUUGpDzONhfCi8IXV6CiXu0Q+rSp65APriEr3idPG +2F9UDPBW2YxJAPBEXpofCnwUT5GjEyDHLEStZ74f9atZIopa3BnKVXANGHJ7zG48 +iTDEBV/jw1dm0fb3j6ik4X26f6sZbEO45ODLHlVFxVwjpQwg/J1UkTMjIezx1xsu +9/AsZgdFmgHZE2COLu0HLlbovQvOkuZtimMCp586EdNRjT15mAvq3sqcNI2l8wrI +8mO9weAJzxbfgIbu/OBVaCj55vGu8ZczAZTZYrI29cY5RPU84250IYzNxNdkSXCP +s4NwpIGjNYad/3Zhouriqv7gmg9GzanJJQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEyTCCBE+gAwIBAgIESS7/ezAKBggqhkjOPQQDAzBBMQswCQYDVQQGEwJHQjEO +MAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRob3Jp +dHkwHhcNMjEwOTE3MTIxNzU4WhcNMzgwMTE3MTI0NzU4WjBBMQswCQYDVQQGEwJH +QjEOMAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRo +b3JpdHkwggHMMIIBZAYHKoZIzj0CATCCAVcCAQEwPAYHKoZIzj0BAQIxAP////// +///////////////////////////////////+/////wAAAAAAAAAA/////zB7BDD/ +/////////////////////////////////////////v////8AAAAAAAAAAP////wE +MLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq +7wMVAKM1kmqjGaJ6HQCJamdzpIJ6zaxzBGEEqofKIr6LBTeOscce8yCtdG4dO2KL +p5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/kpLcKfj0Hb0o +mhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////////////////////// +////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IABFaTH9fUKULuySKY +1ykTcc26wpxgIwyfY10BCTmrf49dl3zP6QvXUoyvpTr61iJb9h4q9NIIMa7R5rV4 +zLAOFTQYL20e5r9ST71ivQVtDVOMJOt/KkNuM24TnwCgcrC6GqOCAb4wggG6MA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMGMGA1UdEQRcMFqkEDAO +MQwwCgYDVQQHEwNHQlKBH2RvY3VtZW50LnRlY2hub2xvZ3lAaG1wby5nb3YudWuB +JWRvY3VtZW50LnRlY2hub2xvZ3lAaG9tZW9mZmljZS5nb3YudWswYwYDVR0SBFww +WqQQMA4xDDAKBgNVBAcTA0dCUoEfZG9jdW1lbnQudGVjaG5vbG9neUBobXBvLmdv +di51a4ElZG9jdW1lbnQudGVjaG5vbG9neUBob21lb2ZmaWNlLmdvdi51azBdBgNV +HR8EVjBUMFKgUKBOhiBodHRwczovL2htcG8uZ292LnVrL2NzY2EvR0JSLmNybIYq +aHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9HQlIuY3JsMCsGA1Ud +EAQkMCKADzIwMjEwOTE3MTIxNzU4WoEPMjAyNjEwMTAyMzUwMjJaMB8GA1UdIwQY +MBaAFEmeRzAnhSDFfPwRgCThTBVioknWMB0GA1UdDgQWBBRJnkcwJ4UgxXz8EYAk +4UwVYqJJ1jAKBggqhkjOPQQDAwNoADBlAjEA+F6OflESysM5RzsJ8vctMMH7Einc +FVwFgcc7sg0BI8yIwUJLlKdtu+EwnqN5W60SAjAe3oRb4Jo+g2D0YqfltWE8zFcs +8e94iaQcifRANdaZhtQa4J1TS7dcsxxvhEmUcaQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEzTCCBFSgAwIBAgISESH0cc5h93vtw8rEUJhXr7mVMAoGCCqGSM49BAMDMEEx +CzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTATBgNV +BAMMDExFQkFOT04gQ1NDQTAeFw0xODA3MTcwMDAwMDBaFw0zMzEwMTcwMDAwMDBa +MEExCzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTAT +BgNVBAMMDExFQkFOT04gQ1NDQTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8Bgcq +hkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0a +cYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWB +SlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8 +tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9 +EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mR +KSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZu +bKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABCEQdj6vj7u/Is1woNHeBAL2PlQy ++z+M/jSKJc03q2EJwGX+ZMN6GgKgWZ9HgGR2/2QflcA5mfrkUjVLvyVbNDmtpHRT +ty4pOGl1bHni+AHxKiou1pTglJubmw/zTx0XfaOCAcwwggHIMBIGA1UdEwEB/wQI +MAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgwNzE3MDAw +MDAwWoEPMjAyMzA3MTcwMDAwMDBaMGEGA1UdIARaMFgwVgYHZ4EQAQFlCzBLMEkG +CCsGAQUFBwIBFj1odHRwczovL3d3dy5nZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYi9Q +S0kvQ1AvTEVCQU5PTkNTQ0EtQ1AucGRmMEEGA1UdEQQ6MDiBJGxlYmFub24tY3Nj +YUBnZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYqQQMA4xDDAKBgNVBAcTA0xCTjBBBgNV +HRIEOjA4gSRsZWJhbm9uLWNzY2FAZ2VuZXJhbC1zZWN1cml0eS5nb3YubGKkEDAO +MQwwCgYDVQQHEwNMQk4wTAYDVR0fBEUwQzBBoD+gPYY7aHR0cHM6Ly93d3cuZ2Vu +ZXJhbC1zZWN1cml0eS5nb3YubGIvUEtJL0NSTC9MRUJBTk9OQ1NDQS5jcmwwHQYD +VR0OBBYEFGwXIRwgkBRk0764M6qDxTjCp1e+MB8GA1UdIwQYMBaAFGwXIRwgkBRk +0764M6qDxTjCp1e+MAoGCCqGSM49BAMDA2cAMGQCMEDHjaos1rzPT/L3ClGVPIXX +RsafacvThEs1kKmPYimwQkXv0USaQOOB/FGVnWhZnQIwFA5YRFmvNX50ORChiX2d +f56j0teGZeVV2eHDCJcGfDUwVMsjDwr9BA4BhBSynpaf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEzjCCBFSgAwIBAgISESGkZqwJX+nZ1Eem/FdxV8TEMAoGCCqGSM49BAMDMEEx +CzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTATBgNV +BAMMDExFQkFOT04gQ1NDQTAeFw0xNjA1MTEwMDAwMDBaFw0yNDA4MTEwMDAwMDBa +MEExCzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTAT +BgNVBAMMDExFQkFOT04gQ1NDQTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8Bgcq +hkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0a +cYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWB +SlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8 +tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9 +EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mR +KSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZu +bKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABDnOSMIpCnQ3kzTJir3hNYHhVrQk +6cJjCm9Dp6fCF/aKylPGuSNBwXQizNsGp8uum4AblJDzHoFZmCBJHx7qOMqXPUpK +ZetJFbdgCLU5Vo9+XzmrfEORHeJyi86yarjapqOCAcwwggHIMA4GA1UdDwEB/wQE +AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIwMTYwNTExMDAw +MDAwWoEPMjAyNDA4MTEwMDAwMDBaMGEGA1UdIARaMFgwVgYHZ4EQAQFlCzBLMEkG +CCsGAQUFBwIBFj1odHRwczovL3d3dy5nZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYi9Q +S0kvQ1AvTEVCQU5PTkNTQ0EtQ1AucGRmMEEGA1UdEQQ6MDiBJGxlYmFub24tY3Nj +YUBnZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYqQQMA4xDDAKBgNVBAcTA0xCTjBBBgNV +HRIEOjA4gSRsZWJhbm9uLWNzY2FAZ2VuZXJhbC1zZWN1cml0eS5nb3YubGKkEDAO +MQwwCgYDVQQHEwNMQk4wTAYDVR0fBEUwQzBBoD+gPYY7aHR0cHM6Ly93d3cuZ2Vu +ZXJhbC1zZWN1cml0eS5nb3YubGIvUEtJL0NSTC9MRUJBTk9OQ1NDQS5jcmwwHQYD +VR0OBBYEFAGw21FFhwlp/SXjbK9G+hg8RNKsMB8GA1UdIwQYMBaAFAGw21FFhwlp +/SXjbK9G+hg8RNKsMAoGCCqGSM49BAMDA2gAMGUCMDg9bgkla/PkLbQLIxXGpIqa +FeXzXvdcAhyJzERzgbKXM5zgx8YY9hrcijTeO3IazAIxAIBJ/qNWFGeLJ8J7SgC4 +eW9XeecsreFI8r2KJdOgEYdEnP8MmhiieXZwZHThQXnNmw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE0TCCBFigAwIBAgIIeoUvw/k9z2swCgYIKoZIzj0EAwMwcjELMAkGA1UEBhMC +Q1kxGzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwg +UmVnaXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NB +LUNZUFJVUzAeFw0yMDA3MDIxMTAzNDJaFw0zNTA3MDIxMTAzNDJaMHIxCzAJBgNV +BAYTAkNZMRswGQYDVQQKDBJSZXB1YmxpYyBvZiBDeXBydXMxMDAuBgNVBAsMJ0Np +dmlsIFJlZ2lzdHJ5IGFuZCBNaWdyYXRpb24gRGVwYXJ0bWVudDEUMBIGA1UEAwwL +Q1NDQS1DWVBSVVMwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfs +UzBkBDB7w4LGPYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH +3SLOKCYEMASox90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6 +t4aW+lBMEQRhBB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbW +Rqrvh7LiR9SvHoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeR +gRFCggNBJjxTFQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2 +r2t/wxA7iDIC6QRlZQIBAQNiAAQ13JQpxiPCO2YwXVBCay7bu/bX3xw3yQ632S0i +bZ+bnmhBu+cVQ0pVFAFQLQBkNrWIx2sktD5AwaC7UjiZuqHd1ZUwcckhGhOc1dVc +Q6S9kJJg7C1zrY0b6mJHcOJSssOjggF4MIIBdDAdBgNVHQ4EFgQUn/Mwn6M27ClE +aBbAwnTKi2qOiBowEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBSf8zCf +ozbsKURoFsDCdMqLao6IGjBSBgNVHRIESzBJgRhjeXAtY3NjYUBjcm1kLm1vaS5n +b3YuY3mkEDAOMQwwCgYDVQQHDANDWVCGG2h0dHA6Ly9jc2NhLmNybWQubW9pLmdv +di5jeTArBgNVHRAEJDAigA8yMDIwMDcwMjExMDM0MlqBDzIwMjQwNzAyMTEwMzQy +WjA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3NjYS5jcm1kLm1vaS5nb3YuY3kv +Y3NjYS9jeXAuY3JsMA4GA1UdDwEB/wQEAwIBBjBSBgNVHREESzBJgRhjeXAtY3Nj +YUBjcm1kLm1vaS5nb3YuY3mkEDAOMQwwCgYDVQQHDANDWVCGG2h0dHA6Ly9jc2Nh +LmNybWQubW9pLmdvdi5jeTAKBggqhkjOPQQDAwNnADBkAjALHYJGT7E1TY+HyBsJ +w1fCZxGEj5YsTfpfMrDJrtGqUrz54bCSE3Vr0g6whE2snSsCMDVvhHzzOoM64DAU +v1vWnci2Qb7FmCuXe6hzIUpTm7H0P08jy23FnGmPf6lEIHYRjQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE1DCCAwigAwIBAgICAKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMEAxCzAJBgNVBAYT +AktSMRMwEQYDVQQKDApHb3Zlcm5tZW50MQ0wCwYDVQQLDARNT0ZBMQ0wCwYDVQQD +DARDU0NBMB4XDTEzMDUzMTA4NDE1NloXDTI4MDgzMTE0NTk1OVowQDELMAkGA1UE +BhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNVBAsMBE1PRkExDTALBgNV +BAMMBENTQ0EwggGgMA0GCSqGSIb3DQEBAQUAA4IBjQAwggGIAoIBgQDH/nWcas+e +p0xr3OGgYFg0z0lziSszRIEfBPVm5MXT4I+6zRpttP1rT+bOQSyJw6ceEGTDNVmC +bEKKENsLXMBnPwJPRUCNtTUoOLTAx3ydLwbjyu4OxMkTXl3LnhwFZkx+aNmmmFXX +ik/KiybEK60bdKzvBFffAUMwJ4dWidt4tsAsDMpzqbIskX/rUTk30EHu+oxQVfjA +8T3E/wY2Ftlw7HMQJ+Hpt+YS6FSIMxov0mOOTuASLQH0yNRT8aKreRL5Li7tIYwJ +0iymEHWs6ZAHNlRyJVrkhlzmZBMmH0n59ljd68e7RZtebcF+2/j82aYNG1QYdey3 +pIYR32WR7Evpl6dVdzBDSZuJfvXU5qO7hyMrkb+AG29MUZUGMsQwQAhw2y/mGylv +H3mWzOjtRqXeLLfAc1kdwrVCWqRo/HJmAyh0bRMTQq4qbZf59Bct4tXE83+pqqWn +nJh7l8TGl5UQ8Z9dcWaqiOSgu6YXrKabTxTr6cEp0KSLFSY89wMVYI8CAQOjcjBw +MB0GA1UdDgQWBBR8BiYa433jP/rWFHDlq79tFH0n8DAOBgNVHQ8BAf8EBAMCAQYw +KwYDVR0QBCQwIoAPMjAxMzA1MzExNzQxMDBagQ8yMDE4MDUzMTIzNTkwMFowEgYD +VR0TAQH/BAgwBgEB/wIBADBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBADgilI6lg++h +Ksepo0VexD4+zwQFYaygu+dpMLtd5fbyL/ewqYAPt9NReNK1m8mcl5k3isKvcOvp +p36hxn+DQioBHOEruBxEsmS6yueyE6ZHOANJ0caU31+GO1g+pggmEjjzA+TxhMG8 +AcJsBgquDZmLVGryb5VvbAfotXe6FwiiPtLsHzB1dYoiy1Uyu2HT8cYHRZ5l1v43 +sVqhz+TcdVN+i2E/O8H/ctQYje9ePbepLRetXbiwgpOlYEY90E1XtYeRGpD+91K6 +jKJv6H1PTs88wgMvtDVrPSNHCSz/xWDHylBjwR24ycYMArq6h9hdhOKsXsQHllht +CA9hr362OsNfHEDxQAYfSoOCz9v13IyJBFtUY8trDVBVO7RWmChZh0OT5ocEGNW3 +mAO5FRtkWQ9O8vdlPdxBkpWX9rn1B2epyPRmH78wo79Ar49d4rLSnR+M1xLt0ClO +KhV8xz1D7zCkDtel4dbPmFeyCHXDE5AtgTlSGb/Sfr/gz4bwghJWVQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE1jCCAz6gAwIBAgICAZkwDQYJKoZIhvcNAQELBQAwezEKMAgGA1UEBRMBMzEQ +MA4GA1UEAwwHQ1NDQSBOTDEpMCcGA1UECwwgTWluaXN0cnkgb2YgU2VjdXJpdHkg +YW5kIEp1c3RpY2UxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRz +MQswCQYDVQQGEwJOTDAeFw0xNDA4MTcwMDAwMDBaFw0yMjExMjYwMDAwMDBaMHsx +CjAIBgNVBAUTATMxEDAOBgNVBAMMB0NTQ0EgTkwxKTAnBgNVBAsMIE1pbmlzdHJ5 +IG9mIFNlY3VyaXR5IGFuZCBKdXN0aWNlMSMwIQYDVQQKDBpLaW5nZG9tIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCiskFD5ng2ZNtaYIWrtO2dzXywp4lHVf6ietxAiItcMuRtkUUF +TV0SrcI814PTtWNcx6gnTLuijQW3UC4uQfOKJ2vpF09sQOZrdN/mdtkRnHqP6xpL +HLsLBjo9eJ4lPufKPa8/z/JjICaMSX42a62RQJHJLQ+MFFNzxqyul/MFrHDmLQ8m +eFIO6tFyaSzAzoY4DnwJ1KLZPFhS/zifDxZdsLTXv8g8A9plEsXbCShlfPGPnbtR +oXnCMAQwkorGxM0bb870x1CQyagBk4tfm98HUpjZi6zHct3AlgYGOtAULSvkBiIu +sH94ZDlaTRzqzyvgZOz2uWaz44ZOnmQzxo9GKQ8T9KGXGhFOtZbBhuK/1mPK+AD7 +AF0CmNwYXxPQfnx6zRMd/wUgeew8zslHAV4zhxbxZhOv4Wede5qehv7NMt3TJOJ6 +bdfixzg+5wM2956ENyY5Y0pkaXGK7n6BbtmbMf+wx5St/KPqNfAETvCDyNZERD1Q +MenAWS6iMcSfkEsCAwEAAaNkMGIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8B +Af8EBAMCAQYwEQYDVR0gBAowCDAGBgRVHSAAMCkGA1UdDgQiBCDnlDBY+j3XKGYM +CIin/0Ea11deOFL4Ihi/Tjk0oxmXVTANBgkqhkiG9w0BAQsFAAOCAYEAinXV3nXp +3+9XS5CF0oRHlj1y73D+7AOc8/4NdpNI15SPg3Kb81UBPxecgsFr56QZrdt0NHo+ +B2KiJ+GdOXmOtB3yCpQE9RwatqPwrw+2ZNxg26d1Cka6CuWlIfhd8N0sKkftDPYH +/MbuXXQch+Tj2zzR//I2SSxI2jfOuxvdaUpRiFSZY8fR8hnkcxyQ1SaRPhSuyabQ +DPznuMZS55LvjNr8vhuTjhzD70guGWCxBVLb+R7+WcSIzi8D9CeBSskI6r6GwbRQ +nZPHWUxQH+CjRmFoMWw3QNXPqWZHc3AJk+jpwi7umJOGlbnEuIbyrSfPMQ+v390V +HE8jedUbTisDrIqx/AsTZ/Qbi0jcjfP1lk7JULaKhaNKDomj/NX5OWXI9rVrXSZp +NdJGN0stNP4H3ifIrw6OLeshHwWLO7rafXk2akPzKt06BEIcLqD4giJDU7KiqF4c +8CRfy73B6u+1gfxmWI5f/jz8Qi1hsD5Suv+eh+Y4ukfPmtaKIE4b/r/q +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE1jCCAz6gAwIBAgICAtQwDQYJKoZIhvcNAQELBQAwezEKMAgGA1UEBRMBNDEQ +MA4GA1UEAwwHQ1NDQSBOTDEpMCcGA1UECwwgTWluaXN0cnkgb2YgU2VjdXJpdHkg +YW5kIEp1c3RpY2UxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRz +MQswCQYDVQQGEwJOTDAeFw0xNzA4MTcwMDAwMDBaFw0zMDA4MjYwMDAwMDBaMHsx +CjAIBgNVBAUTATQxEDAOBgNVBAMMB0NTQ0EgTkwxKTAnBgNVBAsMIE1pbmlzdHJ5 +IG9mIFNlY3VyaXR5IGFuZCBKdXN0aWNlMSMwIQYDVQQKDBpLaW5nZG9tIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQC4n4dRYkZ+jqWukulMrvNYhY/KH2IIMYhy2KYqFGNkQf+ZoK3g +Er8mwb/cIo9uYo93lNsGhIrFJ4xbTprjjSATUeN9YePentBBb8PhoMUYfOpH04ck +piXykUHp/SRHIiBbhFY4YMjyaZzkn9m9nDIlfo5QWXUl3fRXttfbB+djZlLMr3El +aX9b6CjAkK39/EhuJo5tseAdoW3WuuYTcRhdHqSnamcVPHqgf0WZ0n06Saj/jWY3 +KBxNZu9jOwP//Z7u5ONiagzZGaTw7x+AoeWm6MdFqOWZzbGyVH0njqM8BJg30WSI +mhhFd3f6koxZS9XgZ41y1rhPjBH81QEDKppiKkthSuTpuTT2sGso18tEhGWmbSzN +uBKswby4sndGkGwa2sGAFFUl+QmxTd+doa5W4kdcrF3E97d1Zi55rcvM8i1NWWVB +JemTC6yX9tRFoZqqljvUjpcey/NUfOpmlgbjqY5vUZMAQTcfGdQ9htXjUKAfi/0t +Z4+QAocriUZkunkCAwEAAaNkMGIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8B +Af8EBAMCAQYwEQYDVR0gBAowCDAGBgRVHSAAMCkGA1UdDgQiBCAgXYdQKkv73Pr2 +hcP4vBQV2UagN95VLTEwVFfDPOSHJzANBgkqhkiG9w0BAQsFAAOCAYEAjhTt1mT2 +wgjrvJW4bTfGxCMjBdYz0Y9Bi6p6Ys74y+Z1xi0O7ja9R0VdZ9M6xODOyTaqYyFn +Nzy6SgHrWHchySlMmgUuzq0xQc0tfXq6xihJ10vtCE8jei9N+zlIpIkIk+49PbWt +7RIsnmc3jogq+XNOsIMrqq3J4sFwT9gP8RNSzxSc7Av+lQkmLi5WjVi529gxROsp +7+CbwWOe9gaq17BejT3bFNP+5JSok/RBtHCd77TqEpeOpg1D0+8XtoCSNn5wK/Zs +jWzG8wwc6Luu2ggWTxq40uh2lUMrXD96RipKdd/NmDIEkOQh5YD4/Zg1+Rhxq3sO +aXHMp/piCOuFE6fiACmaf2Vk5n1bpnBjrbKV/vgZHUG3AYkNiKQL0+QDnh5WwtVb +jKbnvSBLRjtPKPtFhHeEGvR4l6BQ+q4EShM3I+vLsnTT0O/u/zCeSW1PIMjTr9aO +7mNbkJXoNerU6Ts4aBdDlzLn8MIgVIRI2CcTzmc2BALbwPaEOMcCOItb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE2TCCBGCgAwIBAgIQafeis11UobcRYdKbzVZZlTAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJUSDEkMCIGA1UECgwbTWluaXN0cnkgT2YgRm9yZWlnbiBBZmZhaXJz +MScwJQYDVQQLDB5EZXBhcnRtZW50IG9mIENvbnN1bGFyIEFmZmFpcnMxFjAUBgNV +BAMMDVRoYWlsYW5kIENTQ0EwHhcNMjAwMzE4MDMwNjUzWhcNMzUwMzE4MDMwNjUz +WjB0MQswCQYDVQQGEwJUSDEkMCIGA1UECgwbTWluaXN0cnkgT2YgRm9yZWlnbiBB +ZmZhaXJzMScwJQYDVQQLDB5EZXBhcnRtZW50IG9mIENvbnN1bGFyIEFmZmFpcnMx +FjAUBgNVBAMMDVRoYWlsYW5kIENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEw +PAYHKoZIzj0BAQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOn +KZAdGnGHRwATMQfsUzBkBDB7w4LGPYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5 +D4qlgUpQOtTrBKjH3SLOKCYEMASox90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+ +62LVfLQ5ApXbyZQ6t4aW+lBMEQRhBB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/ +yv4MvRDo6CbgNDbWRqrvh7LiR9SvHoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGc +BU/5kSkoDkZGIXeRgRFCggNBJjxTFQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRW +sx8WbmysBCWnzzq2r2t/wxA7iDIC6QRlZQIBAQNiAAQpxoNwplvrRviDTADj+MDT +MTCED1YpNST9m1ckDfJYHwZPjqV8FGSxf8iGXxQIC9U1g/inUAZuRlnfF6oYWkHV +Zc8ExKTMSa6j9PUTblWJRX6HrvpPj2XeAI/J8B5qDc6jggF0MIIBcDASBgNVHRMB +Af8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFFBdTFBq/5XSIQeAsVq90aS81ql7MDYG +A1UdEgQvMC2kEDAOMQwwCgYDVQQHDANUSEGGGWh0dHA6Ly93d3cuY29uc3VsYXIu +Z28udGgwNgYDVR0RBC8wLaQQMA4xDDAKBgNVBAcMA1RIQYYZaHR0cDovL3d3dy5j +b25zdWxhci5nby50aDBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL1RIQS5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93 +bmxvYWQyLmljYW8uaW50L0NSTHMvVEhBLmNybDAdBgNVHQ4EFgQUUF1MUGr/ldIh +B4CxWr3RpLzWqXswKwYDVR0QBCQwIoAPMjAyMDAzMTgwMzA2NTNagQ8yMDI0MDgx +ODAzMDY1M1owDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCoXFxfD +V2PPijEkq+YCkewWbh1TaDIQ4jEQiOz5Y29yMo5lIE48Oh+PoTWBQPmudQIweL/j +G0tCUD7pqYtyyuPwwa2Ptp0S0wPjAWNu+2Tm544vn81MmtrQqeXa2o8IrQJk +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE2jCCAw6gAwIBAgICAQEwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMEMxCzAJBgNVBAYT +AktSMRMwEQYDVQQKDApHb3Zlcm5tZW50MQ0wCwYDVQQLDARNT0ZBMRAwDgYDVQQD +DAdDU0NBMDAzMB4XDTE4MDUxNDA2MjcxMloXDTMzMDgxNDE0NTk1OVowQzELMAkG +A1UEBhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNVBAsMBE1PRkExEDAO +BgNVBAMMB0NTQ0EwMDMwggGgMA0GCSqGSIb3DQEBAQUAA4IBjQAwggGIAoIBgQDY +MYYLabgMvhGp8VxF2hGCQxvdVBPixJNUDHBwgnTfusFSwLxSLGkoaItuWw95CzhP +P1jb11d6j6z45CS+ozjE/kGxIGAKvkOiiJHQXL8vTVqKJ5hTuGBwdGOUc5jicTOf +/He7Akq3JKZ9Lc9oS+YgLY3FgLHQUXxtdzQt97AdZBsUnKGf7c2s3tjuXZbiikmR +0SVYQ+SREi2CmfhXoJkBEUHdism01uJE81Bq+ES7qivfiXWEEP/JOT1KsQkUM5Qt +GzUpJDWFMg1isBFZb4vEJfjqTVLjYeLeRKr0hO2XTb3Z6uB45irwpzdkYbtusQe+ +uO6vjT9BF/mhWQurFpKyhfkzeiXW8nwiGOpfN6+zLifG4EtqslIiZfvrV1wnYKw6 +LuLSNvzAJ1/7IR1e8iKpoAryWjSUQbbTw5PZsd1xkU65+3q6lIg1QRRELfvjeCzN +kstSCvscJlnkL+d9ebhTeXWiJUbAJLrt5G6mcmyxAkM3OPsK1BkC9JTKEyMn/I0C +AQOjcjBwMB0GA1UdDgQWBBTzfxicV1tiawQYNfX6wkaOjGh6FzAOBgNVHQ8BAf8E +BAMCAQYwKwYDVR0QBCQwIoAPMjAxODA1MTQxNTI3MDBagQ8yMDIzMDUxNDIzNTkw +MFowEgYDVR0TAQH/BAgwBgEB/wIBADBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBAG8w +OsFPCDPi2j9h/JfQkw/2PhwW10rEfiUEajfAZMfc1RMvXPcc96tps+qKpUTro53A +nlqDSVhlwLFq5IGcjcEcPmsToWzQdleyr8znwXW4E2KaUs9zf9r/uravH2RWev8O +YltK0l1xGnHfVFTPXwFrxGpJCD38FEuj6+FMoZdGbKoz3bxSTIhUPdJUIcHfGlRJ +Mz2KJTtmk+4jvPrgW+VOkwGtUOogjMl9fMf98vrYn9rytrO0C+RK5+5Ke11ntQ1/ +D6t82+8PG2luNccTiDvXz89wzuykV9Jo3Y+jsyj6Wcw0ChSbjRC2vdlnTQ9aKkW7 +idnREgV9Nl79jzhvtFuQ+ESY/2+mUINevoDqqVkAZBPSxXMcj5hh/0FIJMfRO2iK +uH2Q3SpFWmEnzqVGBxc1mXJALWObDSALTnnjtAmTh5iv14vBTpWO5ZYDB/M13+Nn +VDSRcjwnX4vBLvAKr+9h/mIYEzeZyvEyndxVait7E3Ek2/nXvxSn7gZJLtDsEg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCAx2gAwIBAgIEAQAAATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwXzEUMBIGA1UE +AwwLQ1NDQSBTZXJiaWExHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRsw +GQYDVQQKDBJSZXB1YmxpYyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMB4XDTA4MDQz +MDE1MDAwMFoXDTIzMDczMDE1MDAwMFowXzEUMBIGA1UEAwwLQ1NDQSBTZXJiaWEx +HTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRswGQYDVQQKDBJSZXB1Ymxp +YyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMIIBojANBgkqhkiG9w0BAQEFAAOCAY8A +MIIBigKCAYEAoP4WE6fX9TnY9pieRvSy6bYobHNixwISlSUOEpofL6baoJsv0QY0 +CF1imUWdS9cBJ8EXTCaMek1o528A+15KB6IpuqQiqFw9nJYIxheWdUlCtH/OAbXE +AzT+tQ+fgyL2Chvm2iTPEQtlqw4NoPq6c3h6AUQCJCeU/ge9oEDB2hZAjUD+CHG0 +JWbVDZCm9408pRzZ4JNOa1nEcD5gA1CQb64FhlFPHKctI8PhBjSkfN0rhYnUoOnr +faEsTakHQB187EwdxhzpW41yw5PKW6jA9aFJGUO6KmioLV7gqhQ/eOjXIfdNU/2z +dIsgGiTM/P66nGOPRW3ejGqxbXy0sRfTEBgHoKCveuFirpeE0GbgOMF32viaIpTx +TIYczQM/y2oeSrMYRzbwklCygq3CzdLm57lMg0BtjwVX81L5+/UBfQSJGf7i5xSz +bjoNA4AeR/Z9v85k/CwBO2XCWxD8jZf0UB6uh758OOJEFFgVoidK8r52cEtRdA/W +69lk9KTyZkSBAgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBSziw0bD8MQoxFsRap/woMyknYr9DBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AgUAogMCATADggGBAHzgZwhw7fUxO0UlhMCDONPnn5P7oHXMBMvgecL9SauMBJMJ +t6hMY+6zso1gINW903V5W3Cx/n3P94fb2g2hqCfRRQJmsiLov3F6cxuB21YORN7m +/kgUc3lSlZXO1V+mz1tcMI2epfi8cbfZfUNUEFrl3Ppf25OiryDScrYY0HM0/iGF +I7WldYsS8tDqJaM0xLVXWU84AwYAHfkixfH2IoWCvqMn4va8FGi3gLqFCQ0f7aOW +rQQDRtygoS5c+bfg6l1UFW/q6sD9QUwjSYdajFyrMEfQDRYjiIG1Py8bNnWl1sQr +0mHAnfvnFNsQT7ukYe73PM9WZ/msL6SxuVihMJgVu5yHl7B8+3D1jtqRqtkqYsuU +gg6QwTVYMnBH65YhT8siAlv1nfUcmDt4rSrpHoaDTKiBVfW/2cZTR8YZgTCZedP6 +hys/suZigPbhrsZGn39xFngHteI8WulYIIFPBfnLYGhNnDDVM4H4Tqo9WudrK73z +CIkjXpy6Qyuq+ffgEQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCAx2gAwIBAgIEAQAABDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwXzEUMBIGA1UE +AwwLQ1NDQSBTZXJiaWExHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRsw +GQYDVQQKDBJSZXB1YmxpYyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMB4XDTA4MTAz +MDExMDAwMFoXDTI0MDEzMDExMDAwMFowXzEUMBIGA1UEAwwLQ1NDQSBTZXJiaWEx +HTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRswGQYDVQQKDBJSZXB1Ymxp +YyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMIIBojANBgkqhkiG9w0BAQEFAAOCAY8A +MIIBigKCAYEAsZxHWknuRqDDgHEJlBVVHGv5UDEAYcu7VSdbvnqJ8OxoOBM0QP5f +YZZpWxtXY0dy4ny9eZiQXVVFw3lKzgWnSYRqcaSkaYhgrjsF71S701U68lr/wPEX +cnqb4UP7M6ZF2TJkDlFdZRLFAZ2Xm/BVCClBvikmMfwHHgxYamP+o/oHB0xzGfLL +1xC+R0MZzjCn4WaduVYLp05+UsmDFANxmm3Q6UNJoR5aH6ajRux5GaTXu3JYSOAD +Dai/SA/a+ZxJVuzNO98JaLgvzw7Cvr9KyoOD2nPMBGSjSeLfvevX9tMc7XYFoS7o +khGqn8VQJz6xYrmQIwbAJlz5os+OYJqVbE7W1oqSJfeTTkQy6eE+rq9fIKMX/nCL +ujN5Tmj87cm2x4jqZD3u/+4PKXHGmNjCVQVe6KqcKUg6C7tWG6lhRIenIVT1AcEu +JQCSzzI/RYYcSzfj2yQYbz8cQtO6Gr3/rP5BB2BSWmLQxiAQ3IUN8h9FJVdQLxzj +QM7f0Rz7AYFfAgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBR/tJ/Vzw/j4SyudCzJLiBc+SgOajBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AgUAogMCATADggGBAHy1/DjTFSl/rdNB39lcV21YUHKzXBq9u1oB0dXIncQ503pI +6u3mWf5vSO7cFrsBO5azjPcw4ShVBqw+5GyT9kcBBskpBUaC0rSi1SUfJMP2/1AK +KG6cc/P6FvEF9uk+LRXK5i1wBHz47INEyzC6G5KTTKNLWbdbKdHX73MIwlZ5vrbb +/6n6P8xQmfcFhLgMU21bpTdoRnL+2xL9LBhMRqai/FWq9PdNjVtCNUEQhdvJTZ0x +2yZYPOe0ZPKeNeMhAeEAFfyn+8ctnxsIoyAkN+aSNV7cKH09VFa7js/+cuEQN9nj +RJeb9JD+Q7sUEZFMFPQDwc2D2DYUO5vwBZcGHIlfIdcsXVgb5PqC7pl4w+qqI2tg +h3q1P+YU5Od5Btt8m7Soou15HqI9w+TrApMQesawzJBUUZy7o3lq5a+zrpXITVL5 +xFiXUKUzji/CfILkQxBdk7t1zlTv4lUtq4MRGgGnuNr/WYbSykpKJkcwp0s7UbZo +U4b17jPsOSvCkbjZzQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCAx2gAwIBAgIEAQAAGTBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwXzEUMBIGA1UE +AwwLQ1NDQSBTZXJiaWExHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRsw +GQYDVQQKDBJSZXB1YmxpYyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMB4XDTEzMTAz +MDExMDAwMFoXDTI5MDEzMDExMDAwMFowXzEUMBIGA1UEAwwLQ1NDQSBTZXJiaWEx +HTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRswGQYDVQQKDBJSZXB1Ymxp +YyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMIIBojANBgkqhkiG9w0BAQEFAAOCAY8A +MIIBigKCAYEAlFu2GQrap3u1ZfOwf+7NVIKEOzozJEAEbDHcrWMoHpMkiLT3O4+U +f6e2yHvHhDX+DAp8lNSM4DEMMV2PxhvsRf9U+ogZqUks0fdn2b4pep6pQ70RmW2o +16Ue7W0tvICzI0+dltbovC8U2MvaUYwtu7nwLFMqfo4esoj6gYzTZ4rzeYJgd4lY +M9r8S98QFy70tSJN4FJaQ4/10OB1Ow/Gmfs/+M98QR64kmDdh0bdN3BJkmXvRE// +i8o3/l73IT+O9CLt/F0ioRalRXxKyFOUKmFr1eMW2QNBUGqZLJ9cgDqJNlMtV2oH +aeux7MB8Ltn+fvKU+iSH+63k3wPkFaPtE/0ENc1OuQHilQIoHHuMKynGZ0CX+CTc +euUYp59mG7rypS6zV98nwiuTqs1U7XmpOwLmst3HXvtj+yNfdfclzBQ7gj3urXQ3 +QqGlrxLV76qEHkeXhgIWp3RUjyEpS13Ik5thKu0OHsyfFILLM1pZ9M9141QGDk3W +HJFuRQ3/gtnNAgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBQ6Fad2JCBVQMY3NIL0eYMw6YIcMzBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AgUAogMCATADggGBAFtXgew9BHp8YrexvwMofJqTfdtqOahJb2C2HBxfOQNnoQhu +sWWT3i1ithnJ9kro0On0BKSuSTJqZyOMo8gCn14itOsUOQFnajxlnA8E5OwC88NB +kYrRLDWxijCLGk0rxfft7cQ2jQM5YvGFyt9rvt3tObru2l9QEMDAm5TJXfpOOzZL +ZGFg+XPAC4mdyHFgEcoEKlt5ejDFcrMEq/IhNmf8Pa7FMtRYCJFFpcjF9FSfYBz6 +CwsWPJS1qVIAIKRHfqlm/dqVRdxb2x4eUB36W+sw/UPuKpmBhCkKOLG1KC00r7ZG +ajuXaWhmqWcpDoYXzNlx/tUGoWvTbCr4HqJwiHW6zHFI+DNsmSzlaT4vfG6AswiY +lRqJoRbmI4PMmwroMCtftwYRrk+iDZFal82i9Wz/xpQP5vr+H0b3dLuQu9z2cnk6 +amuv92kV+MpRj+Dztv+d5KYWtkGSycBCiHYESWsB7fzUDe5xYcp6LldxNfr1jl6W +4F5CRGX3eydWtIawow== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCAx2gAwIBAgIEAQAANTBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwXzEUMBIGA1UE +AwwLQ1NDQSBTZXJiaWExHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRsw +GQYDVQQKDBJSZXB1YmxpYyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMB4XDTE4MTAy +NjExMDAwMFoXDTM0MDEyNjExMDAwMFowXzEUMBIGA1UEAwwLQ1NDQSBTZXJiaWEx +HTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRswGQYDVQQKDBJSZXB1Ymxp +YyBvZiBTZXJiaWExCzAJBgNVBAYTAlJTMIIBojANBgkqhkiG9w0BAQEFAAOCAY8A +MIIBigKCAYEAuOVBr64eMBNMR9L6CkFpvutX/avVcnMMfOkDXsQsFKjNeQhjl14u +4f3xkbyqxrtuNBeRux2pgT4qemChZQddC89MjF7Nh3DxPJjRaPGS9xGOlH5j7BCt +fO3l7swHV78CrDXaub3ksk/Q4Kow5UEnQL8CjryrmULDTiKuWzZI8UafXInKB/eu +BWnBpPJgKW911b4Ku+EqgBQDLV0a+9o16YoKKin4ZL6gQH+JZYCt4u9J6AGYUsMn +tR+77Urkt0x1KanTVmlB2+nkuVXkLnOhwkoeqDVIqJ3XKLQr0e2aEOLrmaavy6vB ++KwrHVLinxonob28rGZPciE1Hnj7q++4VtK93CRqPSFCrxtR8lgm2uEN4jNsaN2p +29oHaBhq/yjbRVqXN01BEkB6aDkpzG4DhSl5yC5HFO+Vv9MgmL/z2jEMIs/IjkWv +4wTtUPg8ykJ2rABOCy7qM9ejIgU/roHstJyH5rIwfvkQIYXgaBkIM9AmT4MIksoQ +fJRnJuCDwvk1AgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBQqCOb5m9L6KDoeszq0gYgRxStQATBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AgUAogMCATADggGBAA0OmFE4U8jDZeFsTrOrxWVMRRik0W3Gazht38XMjfQ0RfNQ +xZY2b5fzG2hbTqA49qP5ojzupKmtUG8p6mF4BH4L3ZOl0cDlIAFYVhrfcskOtYMv +dB3/3TUDyIwWYRrtYXyVD4TUQ/3kH2BIw3hRdovAJSVr8qH4qOTMgmWRWJeFN69e +Y/K9hhQ3CSMivqW0WEA2YM5mUKyLp0RO5yuLmxyaKP9eTtMpqNFFN1SM95JdYTNg +3e3SFmfw1pkSqMPgVSJNmPdazmmY/jRPK0d/D1uYjbVvggoQ29DDeAcS42jVR4Uz +f+co8vDRLwSkteVgtVcL3FeNEhRIimw9qv6lKvwMm0k7r7i02qnlmjbbkde+0r8/ +AxQ2bUJ+MocEM03BOC4SF/uQDPKDGUTVyGYaVAQ1gpZklWzXkB7u46+TfjPWSlUL +1JBQEfDUusz1wqiOfs6zAWpP7PegSU7yuPnRi3F0U0Likxjwsnvgbgg1xB64kGCl +ge3QULrcC2E+5f4RBQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCA1GgAwIBAgIDAuzfMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRL +MR8wHQYDVQQKDBZEYW5pc2ggTmF0aW9uYWwgUG9saWNlMR8wHQYDVQQLDBZEYW5p +c2ggTmF0aW9uYWwgUG9saWNlMR4wHAYDVQQDDBVQYXNzcG9ydCBDU0NBLURlbm1h +cmsxCjAIBgNVBAUTATEwHhcNMDYwNjA3MjIwMDAwWhcNMjIwMTIyMjI1OTU5WjB7 +MQswCQYDVQQGEwJESzEfMB0GA1UECgwWRGFuaXNoIE5hdGlvbmFsIFBvbGljZTEf +MB0GA1UECwwWRGFuaXNoIE5hdGlvbmFsIFBvbGljZTEeMBwGA1UEAwwVUGFzc3Bv +cnQgQ1NDQS1EZW5tYXJrMQowCAYDVQQFEwExMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAxdCHI+1cmj6H6nNanQ5BjgHNmmaUKdDHnzBmOZ9OzXOZVt99 +RgbVcnJIYw694IKXK1KV0aWqh+WjQ+epn2GXFLjL9Ris0TKXhVT8EZDnznv3KeX6 +wme137YqZlY9y2A6oF///rR9JaW4evZoVERMmWSlhpfn/ANkHr3sfP6aFqZHR3On +pT+ZYujJMzQK6S4rhsIgwYsA9tqVrgl7psVGySorHlsjer8YrnVDwenH1xHBZ5fD +gJ1Vb4YUqbR4JbPitEC0W8sfC48wZeF0psFHLKErZbGChgAuO0H7bELuXgSxs2HT +8mDbpgUu2gGdba4PMN/q8vg63d7SYzgH2B/Fc91GUlm0hQ/RCBsJsa/O/HZy4dcm +5vNyEms3HUgVs5+ytEW+0vCwZnDUU3U+r6SV943w3qByLkp9JzZZiPqFRJP+DU16 +Ve7SOEOqY6X5ReqorutO8LDm5r9Rc9+AJtY8OHbBF+BH59CWUItkRjQdUxwTbyCn +IWw7AQLqldpremxZAgMBAAGjdjB0MBIGA1UdEwEB/wQIMAYBAf8CAQAwEQYDVR0O +BAoECEaVrRhxkYIfMDsGA1UdIAQ0MDIwMAYIKoFQgSMCAgEwJDAiBggrBgEFBQcC +ARYWaHR0cDovL3d3dy5wYnMuZGsvQ1NDQTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQELBQADggGBAGsuKUtj8pkgaYfEpxj28YHTQB5weH12PtRykRLvHUjuwoAF +HoNB7PbTjoqrXRymopQYw7gNMVIk/brLZ8Not+3S150uI8DoCtr4ru6nhfrC8Ai3 +MxZdQtihtv2A1ughClPmdQjtBZGAY1uO9njIlJIPZ2lqHeEZJ4wuRS80+GQDEQ7C +GLG9rCaiocZRjhtu4GF9uHCIqNskAaXBLw9MGi3xcYOQrETt4p3whB+GnWuVNtsF +LLmL0UKNwMBJSEE/QYmxkqEgbEcUMUVw9VmO2B3XZys4nzM719BG8MrAga5Mfn76 +SpBZ8gTOKIYCU1MFJ+SiMJwNx3ATSH7P/NgFWqgnduKmm/LGUO+Prw2is89UsIDs +k0DIJZNbHvmUHrjgQHJlqbWqW0IY8dnkxHWWfydmO0scIEL1bbgQTH/zdiBUKrjw +3XuZmHciYT2fJfpJbPQaVMhQLI29nGqCsjeRebHSVFhQNfDbzKlqsp56ap5gEkGd +O33dl3DFGAQ5T1iIuA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCA1GgAwIBAgIDBekEMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRL +MR8wHQYDVQQKDBZEYW5pc2ggTmF0aW9uYWwgUG9saWNlMR8wHQYDVQQLDBZEYW5p +c2ggTmF0aW9uYWwgUG9saWNlMR4wHAYDVQQDDBVQYXNzcG9ydCBDU0NBLURlbm1h +cmsxCjAIBgNVBAUTATIwHhcNMDkwNjA3MjIwMDAwWhcNMjUwMTIyMjI1OTU5WjB7 +MQswCQYDVQQGEwJESzEfMB0GA1UECgwWRGFuaXNoIE5hdGlvbmFsIFBvbGljZTEf +MB0GA1UECwwWRGFuaXNoIE5hdGlvbmFsIFBvbGljZTEeMBwGA1UEAwwVUGFzc3Bv +cnQgQ1NDQS1EZW5tYXJrMQowCAYDVQQFEwEyMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEA9Hvc9foxl/7GwiBqtKRZuGkSrnusuQygfC0b9A3A741kVb8x +hbhNx5btsaU5VXUrJ8iaxz6/8hTicT/OriAaJve/NjP+qF0xKv1JZmBoIOEQZprz +u3lV85gNb313Wv41Ewu4SInNQc47lsHOwczFc5N7kTl+8MVfVFfgocrq9LStcNDE +x5jOleVYc7Su95M/SdKD9/8nHhIbEmgh5/j8U9WhRpJ1aVWrRGP7aNVvv2366JDn +96i7qJJdC1HB1n7+jS+62xCmZgDcdkup5BH4BsMxvzxU2Um1LiXj1G67SWN2dGLx +OwuSUyu2UmDgAuZWrzkzOr3mXsbv6yA0l90po1lVq+76362650eF1aw+sJonmBoQ +5FBLPeUlDhZQnsOxP/LTom4NahsUE86oeW56YBI5a+MzVFIAR1ezv3Yi00Hk4tkg +EvzRKUzE/CvcwJXYiCzQcAchgwjDI7y7j+35CsJ7oSvMfPwgDZ9rToeHcVlo8wq6 +pNvn5O8ee4aOQNAFAgMBAAGjdjB0MBIGA1UdEwEB/wQIMAYBAf8CAQAwEQYDVR0O +BAoECEuVn1TvS/gtMDsGA1UdIAQ0MDIwMAYIKoFQgSMCAgEwJDAiBggrBgEFBQcC +ARYWaHR0cDovL3d3dy5wYnMuZGsvQ1NDQTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQELBQADggGBAK0/ucPx0RS57DV7MYv6MguOAgCU2ijmeUh2BtxtbMxjNjog +v9lEgxDDeeV54dph19A5GagzcUzuX/ID0xmydx7WiPVEHSqArV0HxasUQ8g4E1AN +nz03FmboNsclxYlFkwssed1iNFdKJGRTTzVBTuFlkhL3DlQkSl2v3/K55anun6BF +XTo15vpoiuUW8pj0s6c5axO8CSBlrUep0Be9u3NDScbeETzKjfXlb5ZIUgPg/iz6 +jUAaDVooWzqvE2RlGL6SAiBV42VQTstqhxzE+vFm//yOMgO5WQgaMOFAMvWz9z9d +uSxpA37nVWE+s2coeqbo4g1C5UdzrnaysyO0klGfzdhAsY7bgnd3gvJrFM4h9yTS +0mZ1MIGrsVugD7aiJ2VYXjPeKR19h5bAH8av+uPHHDz7ogt7IDULP0oQcl2HoFzN +sTps90CZL40GOf2lkuY7Mhfq0mpys7832kY65XH6vOoIUDkitqxWVQ68AH3AQDuO +knBKjUE5vGgEQvwWdw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6jCCBHCgAwIBAgIIPnDBgy/ErH4wCgYIKoZIzj0EAwMwgYgxCzAJBgNVBAYT +AkNOMRgwFgYDVQQKDA9Ib25nIEtvbmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0 +aW9uIERlcGFydG1lbnQxPjA8BgNVBAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5 +IFNpZ25pbmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTE5MDIyMDA4NDAxNVoX +DTM0MDYyMDA4NDAxNVowgYgxCzAJBgNVBAYTAkNOMRgwFgYDVQQKDA9Ib25nIEtv +bmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0aW9uIERlcGFydG1lbnQxPjA8BgNV +BAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5IFNpZ25pbmcgQ2VydGlmaWNhdGUg +QXV0aG9yaXR5MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCM +uR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMw +ZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90i +zigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreG +lvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq +74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYER +QoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9r +f8MQO4gyAukEZWUCAQEDYgAEdMq1HQji+mKnCvv+7amuN0Kr+ILgA8qqKCvdjvmY +aiOZnzzuxaAgEA0Xw0J/Mz3KaeoSgT7QdBwPnigUNtaN+V++eyt6yd9zotKY1ICD +cRIhv0CTH8GuvGIDdD+r4g40o4IBYjCCAV4wEgYDVR0TAQH/BAgwBgEB/wIBADAf +BgNVHSMEGDAWgBQcokd772w1rt9ATttdsnMMNHunczApBgNVHRIEIjAgpB4wHDEM +MAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANIS0cwKQYDVR0RBCIwIKQeMBwxDDAKBgNV +BAcMA0NITjEMMAoGA1UECAwDSEtHMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwNKAyoDCGLmh0 +dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwHQYD +VR0OBBYEFByiR3vvbDWu30BO212ycww0e6dzMCsGA1UdEAQkMCKADzIwMTkwMjIw +MDg0MDE1WoEPMjAyNDAyMjAwODQwMTVaMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAW5ssiYJkXCMuNFf8nqzQNJwhMOS0D8xzUoJzvAZ+l1AV2cApG +wqe2kNPXWiUO1ZYCMQCFfPejIhXGYyYA8owPNj0Re6cT0267YsbcMUUuLapwXKX/ +Nhn35EmK9D7LijgjPUI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFAzCCBImgAwIBAgIBezAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTgxMDAyMDgzMDU5WhcNMzIwMzAzMDgzMDU5WjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAARqcLTNDz1nuiuc31pDI2IYPjHFIPm70llBBI3bAu5qdjez9UXV +mQSW7d6VS86BHDkwDiG3lONXCy1HUjh9vR3X2GY8UOsuNEOQg1He8tzCfeMYi9NG +JWIAkzMrG/FSdtGjggGyMIIBrjArBgNVHRAEJDAigA8yMDE4MTAwMjA4MzA1OVqB +DzIwMjExMDA0MDgzMDU5WjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTBDBgNVHR8E +PDA6MDigNqA0hjJodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9jcmwvY3NjYS1zd2l0 +emVybGFuZC0yLmNybDAfBgNVHSMEGDAWgBSXEaxF5Xr+bg0/rNmssmt1njV7pjAd +BgNVHQ4EFgQUlxGsReV6/m4NP6zZrLJrdZ41e6YwDgYDVR0PAQH/BAQDAgEGMBIG +A1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwMDaAAwZQIxAIiNWMPTeFI3Xd6e +5cESIPmqUK3sNcryF39K9GX4TtAHTCiOjTFP9RNfrqjIljiMogIwQ6R+om/aSv6c +/ghb22ZybLtrcBYrxGVQnz3ItUqy8NBrwYQfsqUXTEuOmj2Lov09 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFAzCCBIqgAwIBAgICALwwCgYIKoZIzj0EAwMwcTELMAkGA1UEBhMCQ0gxDjAM +BgNVBAoMBUFkbWluMREwDwYDVQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2VydGlm +aWNhdGlvbiBBdXRob3JpdGllczEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFuZC0y +MB4XDTIxMDgyNDEzMDUxM1oXDTM1MDEyNDEzMDUxM1owcTELMAkGA1UEBhMCQ0gx +DjAMBgNVBAoMBUFkbWluMREwDwYDVQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdGllczEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFu +ZC0yMIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCMuR6Cozht +KA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OC +xj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAE +qMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEE +YQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfU +rx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8 +UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gy +AukEZWUCAQEDYgAEYD75/vAe/cJBEN3usF784OiTEbJ7pGs2pUmzKcV5gXKMMfU5 +O0FHlg/FvI1MIzA5CTvPyWxbZbMy9uTSm+ZQ/albrGUTDWPRI4mW3srOE8H7lgZv +AaTP26t4dyKtg3T8o4IBsjCCAa4wKwYDVR0QBCQwIoAPMjAyMTA4MjQxMzA1MTNa +gQ8yMDI0MDgyNjEzMDUxM1owYAYDVR0gBFkwVzBVBghghXQBEQM+ATBJMEcGCCsG +AQUFBwIBFjtodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9wb2xpY3kvQ1BTXzJfMTZf +NzU2XzFfMTdfM182Ml8xLnBkZjA5BgNVHRIEMjAwgRxlYWMtc3BvYy5jaGVAZmVk +cG9sLmFkbWluLmNopBAwDjEMMAoGA1UEBwwDQ0hFMDkGA1UdEQQyMDCBHGVhYy1z +cG9jLmNoZUBmZWRwb2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwQwYDVR0f +BDwwOjA4oDagNIYyaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL2NzY2Etc3dp +dHplcmxhbmQtMi5jcmwwHwYDVR0jBBgwFoAUp6n4SJ8IaBDPvx0G5201pVtLDlYw +HQYDVR0OBBYEFKep+EifCGgQz78dBudtNaVbSw5WMA4GA1UdDwEB/wQEAwIBBjAS +BgNVHRMBAf8ECDAGAQH/AgEAMAoGCCqGSM49BAMDA2cAMGQCMGR1WWpItYirQtzh +cfPw7AZRTg2JcH8liXic4Ywvb9G8nOKPIATPqwRydeTEj/pOXwIwJJ3DDnBk7eV6 +pmT9PAQbbzXN7x0vznCHUtAMAk+MLrqTLSvsiriJMfZiQN/Pl4py +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFBzCCAzugAwIBAgIEAQAAATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwbjEYMBYGA1UE +AwwPQ1NDQSBUYWppa2lzdGFuMSQwIgYDVQQLDBtNaW5pc3RyeSBvZiBGb3JlaWdu +IEFmZmFpcnMxHzAdBgNVBAoMFlJlcHVibGljIG9mIFRhamlraXN0YW4xCzAJBgNV +BAYTAlRKMB4XDTEwMDEzMDEzNDkyMloXDTI1MDQzMDEzNDkyMlowbjEYMBYGA1UE +AwwPQ1NDQSBUYWppa2lzdGFuMSQwIgYDVQQLDBtNaW5pc3RyeSBvZiBGb3JlaWdu +IEFmZmFpcnMxHzAdBgNVBAoMFlJlcHVibGljIG9mIFRhamlraXN0YW4xCzAJBgNV +BAYTAlRKMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAohbH2ngtcEVo +gofwUKMo0ZiekFXjkuUeXfKNMnZ2ESC8IZhGO2wK1EjxsW0of0BWGT+e3Of0gyTf +kXbdjWVpXm/8txWj+V1p0JGfac0bfWnf+AKHbMWtgqqVxvVPaC5ESFIF9uVRlWrx +mJHQbs1l9zL2mhfRiDf8uU8y5tGFNbCLqulIyxh5b5KJU0DakZz/kIs5CC0v71DT +q4XsgyAN+TZbDB39bzZPO7qRjykLs5m81qfigWilQOZPbpIH2ypvN9ziFOHk6aay +SAK23e8EJhWSLLcvH7/f6PXbcSOmiJ6MAIFhPfWrq0fYDTYqWqa6K/7R1ZJS/0Ab +z3/bsRhT91/wdZi0O1CsQhjN9WcEoMS2UOzn+AMiTyoOBDg4gDUuB/qFhBm5OqFZ +QH9Ugi3/WJa2CJZP9SQG7tPHfnnNZhGFu9eAejMb4uto6LO1YUYDHpGtW9JcvbwE +dN+lCavygLkE1ShLbj6a5docnB3dOQkPTFktA7xxAEvDU7Q6n6gFAgMBAAGjRTBD +MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQi +rKl79kH4sIVWUEy6Y+7KURqkETBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATADggGBAI6XPDfN +3WdrqUvwiBP23o4vO7AO6WWSJI5JFnl0lWPewCJNPfTA0Mq13+3Sri6UsA6mfrjo +MKOkM6VAKLmKqKEi0CqyMMAl9v5fd3fZOiieeUov/wM4qei70WJo7KbQSgSfrWM8 +qBRmKk1aK9UuRxXbg0ORZLY9py1rt9RuptHzUYOj19Iaj2Ms5UmziDSSL8PEW7bC +KVf7dztYLZw+c0jb0b797P0ZERZpZs6DULn7XFs5OpUiTwQjy0MG/1AYLstcQTLY +0NYxWzLY7Xh1SkP/6kH+lkR4t8IyUyqT8/A/96NCb85i14qDq1K2Ju8I2+8mj+vj +7jG4YcDRsiTCQfbqHOr0AcWuQ1FWg8pITHXQN1ZHadllkIcIzNrxQVD8tZ5M39wC +r7n8MKUShr7e4hIgbwxamEayPSL9sXF/e2pSvPDOc86dZ6AaQZZGK/s7F4cLClrr +dyiNoW8LUDRZUqV7O4pB2i9gEyLbVk3zL0wr3qpj/x+xQdLXVLErV1YL8w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFDzCCBHOgAwIBAgIBCjAKBggqhkjOPQQDBDCBnjFEMEIGA1UEAww7QXV0b3Jp +ZGFkZSBDZXJ0aWZpY2Fkb3JhIE1pbmlzdGVyaW8gZGFzIFJlbGFjb2VzIEV4dGVy +aW9yZXMxNDAyBgNVBAsMK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJy +YXNpbGVpcmEgdjQxEzARBgNVBAoMCklDUC1CcmFzaWwxCzAJBgNVBAYTAkJSMB4X +DTE1MDQyMzE5MTkxOFoXDTM1MDQyMzE5MTkxOFowgZ4xRDBCBgNVBAMMO0F1dG9y +aWRhZGUgQ2VydGlmaWNhZG9yYSBNaW5pc3RlcmlvIGRhcyBSZWxhY29lcyBFeHRl +cmlvcmVzMTQwMgYDVQQLDCtBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBC +cmFzaWxlaXJhIHY0MRMwEQYDVQQKDApJQ1AtQnJhc2lsMQswCQYDVQQGEwJCUjCC +AjgwggGvBgcqhkjOPQIBMIIBogIBATBMBgcqhkjOPQEBAkEAqt2duNvpxIs/1Oau +M8n8B8swjbOzydIO1mOcynAzCHF9TZsAm8ZoQq7NoSrmo4DmKIH/Ly2CxoUoqmBW +WDpI8zCBhARAeDCjMYtgO4niMnFFrCNMxZTL3Y09+RYQqDRByuqYY7wt7V1aqCU6 +oQou8cmLmsi1fxEXpyvyx7nnwaxNd/yUygRAPfkWEKg0QcrqmGO8Le1dWqglOqEK +LvHJi5rItX8RF6cr8se558GsTXf8lMrcCD5nmEBQt1665d0oCb1jgBb3IwSBgQSB +ruS92C7ZZFohMi6cTGqThe2fcLXZFsG0O2Lu9NAJjv87H3ji0NSNUNFoe5O5fV98 +bVBHQGpeaIs1Igm8ufgifd44XVZjMuzA6r+pz3gi/fIJ9wAkpXsaoADFW4gfgRGy +3N5JSl9IXlvKS9iKJ2Ou0corL6jwVAZ4zR4POtgIkgJBAKrdnbjb6cSLP9TmrjPJ +/AfLMI2zs8nSDtZjnMpwMwhwVT5cQUypJhlBhmEZf6wQRx2x04EIXdrdtYeWgpyp +AGkCAQEDgYIABBI2PMjVDGfKcuxUeTgnExogYBYtRxydeQ6fDAK7AU0gK3x2/2Ps +w3kzV/AmUnConlFkgeKuKVFtjUSr9s63M3E3JmLODFQoXL6pjgedmeBM7gl+knLn +FODsoth4VRzj1pXq7li8qxO6aTULv+EdvnFHWOdoGcRZVNT0oSi61+1So4G+MIG7 +MB8GA1UdIwQYMBaAFPxM4PdrZVek2e3IynKtBTVRe2dMMB0GA1UdDgQWBBT8TOD3 +a2VXpNntyMpyrQU1UXtnTDAOBgNVHQ8BAf8EBAMCAQYwVQYDVR0gBE4wTDBKBgZg +TAECBBYwQDA+BggrBgEFBQcCARYyaHR0cDovL3JlcG9zaXRvcmlvLnNlcnByby5n +b3YuYnIvZG9jcy9kcGNhY21yZS5wZGYwEgYDVR0TAQH/BAgwBgEB/wIBADAKBggq +hkjOPQQDBAOBiQAwgYUCQAuJBHrPqyAbnBmSySBsA2gOTlnT7DGDqtX/gc+mx4nR +owVDUoEzw6P0KgT5H0RwBKLHW3qt4QlJ+ax+1DatesACQQCdroAVl0VDX/X367Z0 +IxPhfVnS1LS/9Bqcjhv5FKyxF07q0/NUW+sp9I0NSrliNb9zCWxGz7Riw+N09ZJI +JTk1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHTCCA4WgAwIBAgIEUBadIDANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJa +WjEXMBUGA1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwHhcN +MTIwNzMwMTQxMTM2WhcNMjIxMjMwMTQ0MTM2WjBoMQswCQYDVQQGEwJaWjEXMBUG +A1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwggGiMA0GCSqG +SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCwi6YcKoW8+LhlTRArB582osXDUtJsCNpL +5BYnHhy4ND8QQ0xs64OnrUHORZXs1Sl7tgJQjFPMx8SQXOMBeYZ4nY79iLRMDQcq +STQprSrAUw0XwHs7ae09qjo134iaL+k8Q38c4q6bdmCCV7nTyHl3B7KAB/TT7r4z +rr0qdrt58kPJUV8xwsVgU12yG4x4P/DwqKbzyBhnkhfXJ94q10EeeL8mFrXR0Y7n +J/QVfDlTEscjBUedNdGZnmcV9pDCOGpZIaGKZjZjJsRF65Fj4KRymbm0Axrl4v8d +VUkMnGhIrybq5kjk3FMmrl0xYhLDkTFpnyJyL4krgqyJ50pjO9OlhiiqDLXp44HG +t2/UbpmHP/v16sfdTSHd2U+fkRmruDzUliiL2Am3W4axNWrLFiQcEIFh0H2DJ+zs +rAvpShgZ0KO4Z9MXCpBBWEninysxXOcWw7j2DlL2X1WBi0Qd0Fo254WzO+eI6wja +OhCsk/C53SXai5/MbDkk8Wxig+xZv3sCAwEAAaOBzjCByzAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwD +VU5PMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANVTk8wKwYDVR0QBCQwIoAPMjAx +MjA3MzAxNDExMzZagQ8yMDE3MDczMDIzNDEzNlowHwYDVR0jBBgwFoAUyWb7wejY +GSOxEpCDhh1DIQ52K8YwHQYDVR0OBBYEFMlm+8Ho2BkjsRKQg4YdQyEOdivGMA0G +CSqGSIb3DQEBCwUAA4IBgQCUAj1TpStp28Su6h3FvPVsZmJOWW823lpgnTaQuLXp +/YyuDdWmnTfn65FS302GWon83vvpx5Ss2XK64USTlEQ/CLBeQ4RM99hUcBkprky+ +JsDbRBOWLVM0iBpe64gt4zV3/hH2tGWnPIFCjjtRcahzCwV1q6FCE3Ongz+ssoVJ +6w1HxlyS8zdD/gd8Hezby3pTyPPJ1K67jJFGYrBEUfLVDxSmNmQNptJ5sguQaB7/ +l7jpgbu6+1Hcm1/42EW2IeQEgE0m/4bSPudZZO1GxfZpCpspLYKktE9PyXTa4s19 +oNQRTFNtGi0oT/RjelSPWuj+nkiSxQ4XKRRPiTGX5+hMlHzH/CMIwYlQxDVwgiZ6 +teR0+8KKSoVeQ2BfquIJ7GYNgrfHaAnNbbtKjnww8Z/m4jBuOnxMOQwflOnVciek +51bm6EcCr3xRx5eV819xl1FnlhkK5j0+cakXIb1D5dyPHfP3Iov/mmVKaBvn1x9+ +atn6Axf8icG4a11DJKeQa5w= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFKjCCBI+gAwIBAgICBE0wCgYIKoZIzj0EAwQwQTELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJtYW55 +MB4XDTE5MDUyMDA5MjYyMloXDTMzMDIyMDIzNTk1OVowQTELMAkGA1UEBhMCREUx +DTALBgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJt +YW55MIICODCCAa8GByqGSM49AgEwggGiAgEBMEwGByqGSM49AQECQQCq3Z242+nE +iz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcX1NmwCbxmhCrs2hKuajgOYogf8vLYLG +hSiqYFZYOkjzMIGEBEB4MKMxi2A7ieIycUWsI0zFlMvdjT35FhCoNEHK6phjvC3t +XVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTKBEA9+RYQqDRByuqYY7wt7V1a +qCU6oQou8cmLmsi1fxEXpyvyx7nnwaxNd/yUytwIPmeYQFC3Xrrl3SgJvWOAFvcj +BIGBBIGu5L3YLtlkWiEyLpxMapOF7Z9wtdkWwbQ7Yu700AmO/zsfeOLQ1I1Q0Wh7 +k7l9X3xtUEdAal5oizUiCby5+CJ93jhdVmMy7MDqv6nPeCL98gn3ACSlexqgAMVb +iB+BEbLc3klKX0heW8pL2IonY67RyisvqPBUBnjNHg862AiSAkEAqt2duNvpxIs/ +1OauM8n8B8swjbOzydIO1mOcynAzCHBVPlxBTKkmGUGGYRl/rBBHHbHTgQhd2t21 +h5aCnKkAaQIBAQOBggAEEERozJeK4nstSM5WcswLo7XmgwufavFGedmYQpZdonhC +5trUBNLYkNNW69vl5va9oTRr1fU95eJ/nKJQy5I3cRRuw1hOp+rSUUfk2V9ACscN +pIMKLTVp9kUOKrLObvnjaDes+4eNV3WiCv6MiD77pMmSx6ek9IPqd7KxU5/iW42j +ggGUMIIBkDAdBgNVHQ4EFgQUdBpErUvXtvzVuu7xHoJ+WKWYHCQwDgYDVR0PAQH/ +BAQDAgEGMCsGA1UdEAQkMCKADzIwMTkwNTIwMDkyNjIyWoEPMjAyMjA3MjAyMzU5 +NTlaMBYGA1UdIAQPMA0wCwYJBAB/AAcDAQEBMFEGA1UdEQRKMEiBGGNzY2EtZ2Vy +bWFueUBic2kuYnVuZC5kZYYcaHR0cHM6Ly93d3cuYnNpLmJ1bmQuZGUvY3NjYaQO +MAwxCjAIBgNVBAcMAUQwUQYDVR0SBEowSIEYY3NjYS1nZXJtYW55QGJzaS5idW5k +LmRlhhxodHRwczovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgGA1UEBwwB +RDASBgNVHRMBAf8ECDAGAQH/AgEAMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly93 +d3cuYnNpLmJ1bmQuZGUvY3NjYV9jcmwwDQYHZ4EIAQEGAQQCBQAwHwYDVR0jBBgw +FoAUdBpErUvXtvzVuu7xHoJ+WKWYHCQwCgYIKoZIzj0EAwQDgYgAMIGEAkA4qqxp +icREnfeRLiNJBGAmOmRmT2JyNx76ttqogtx31bS6ZOGF+08akTb6J2gdXTuTfQ05 +buVwKjA8HMI0J463AkB+iwO2+J/NaYUdr014wTu5ZHcbSMA2QpaSl2v+Gzp0+Qpe +P2a/2gvGZoiVpfTT4mfEmtcCN5QwRWmXpMyB2IsO +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFKjCCBLCgAwIBAgIIEp5CTxaKCOYwCgYIKoZIzj0EAwIwcjELMAkGA1UEBhMC +TloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxJzAlBgNVBAsM +HklkZW50aXR5IGFuZCBQYXNzcG9ydCBTZXJ2aWNlczEWMBQGA1UEAwwNUGFzc3Bv +cnQgQ1NDQTAeFw0xODA0MTUyMzM5MjJaFw0zMTA4MTAyMzM5MjJaMHIxCzAJBgNV +BAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYD +VQQLDB5JZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBh +c3Nwb3J0IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AP/////////////////////////////////////////+/////wAAAAAAAAAA//// +/zBkBDD//////////////////////////////////////////v////8AAAAAAAAA +AP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0q +hcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9V +KWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+ +gZ16Qx18kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoN +skiwp3rs7BlqzMUpcwIBAQNiAATYOcPrJhRUGUmEZ58G4mmolHmoXCSZjd8yzVKr +Hc4ofPPq5cV7zPSoGfiPaxuZd2VsDLYO2NOhDO+Bvmjr4jJv2b7THK0HZaWEq+U7 +kUd+/eklpoTLy6m2H8pud6rGbkejggHQMIIBzDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFNaeFTvflJhsGtLpga2twzGvcb5xMDoGA1UdEgQzMDGkEDAO +MQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0cy5nb3Z0Lm56MDoG +A1UdEQQzMDGkEDAOMQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0 +cy5nb3Z0Lm56MFIGA1UdIARLMEkwRwYIYIQqZQgBAQMwOzA5BggrBgEFBQcCARYt +aHR0cHM6Ly93d3cucGtpLmdvdnQubnovcG9saWN5L2VQYXNzcG9ydHNfQ1BTMG0G +A1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NS +THMvTlpMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9OWkwuY3JsMB0GA1UdDgQWBBTWnhU735SYbBrS6YGtrcMxr3G+cTArBgNV +HRAEJDAigA8yMDE4MDQxNTIzMzkyMlqBDzIwMjEwNDE0MjMzOTIyWjAOBgNVHQ8B +Af8EBAMCAQYwCgYIKoZIzj0EAwIDaAAwZQIxAOsoBcqmACat7OqHGFiHjEnLPYY0 +OMdtIzBJJ2fgmUN19j/m4xDz8Mah0AJXn7I7uwIwHQbufJhFs4SUN4lPajEk27x7 +W+w9ULqxW9eKnBxRteW3PiYu106wBzgFreRvDYZh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFKzCCBLCgAwIBAgIIDJDpIyfj9qIwCgYIKoZIzj0EAwIwcjELMAkGA1UEBhMC +TloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxJzAlBgNVBAsM +HklkZW50aXR5IGFuZCBQYXNzcG9ydCBTZXJ2aWNlczEWMBQGA1UEAwwNUGFzc3Bv +cnQgQ1NDQTAeFw0yMTA1MTMwMDMzNTJaFw0zNDA5MDcwMDMzNTJaMHIxCzAJBgNV +BAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYD +VQQLDB5JZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBh +c3Nwb3J0IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AP/////////////////////////////////////////+/////wAAAAAAAAAA//// +/zBkBDD//////////////////////////////////////////v////8AAAAAAAAA +AP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0q +hcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9V +KWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+ +gZ16Qx18kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoN +skiwp3rs7BlqzMUpcwIBAQNiAATZQon1shj+p0q+5z2lAITS/VG35sb6cLN7Tlgq +Qcy5+wt95K1qK9C5mLUkXYsHX+rrMMHRG4zgpWoyBsozAfDkYkJJhmvanY0c2deb +lXQMlG0yhkS4NB/AdkTuKHcFORGjggHQMIIBzDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFK5pPyZZ65qDZS0R9/9GMaw7FKA1MDoGA1UdEgQzMDGkEDAO +MQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0cy5nb3Z0Lm56MDoG +A1UdEQQzMDGkEDAOMQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0 +cy5nb3Z0Lm56MFIGA1UdIARLMEkwRwYIYIQqZQgBAQMwOzA5BggrBgEFBQcCARYt +aHR0cHM6Ly93d3cucGtpLmdvdnQubnovcG9saWN5L2VQYXNzcG9ydHNfQ1BTMG0G +A1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NS +THMvTlpMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9OWkwuY3JsMB0GA1UdDgQWBBSuaT8mWeuag2UtEff/RjGsOxSgNTArBgNV +HRAEJDAigA8yMDIxMDUxMzAwMzM1MlqBDzIwMjQwNTEyMDAzMzUyWjAOBgNVHQ8B +Af8EBAMCAQYwCgYIKoZIzj0EAwIDaQAwZgIxAPf56o3PIsp8U5/rtLtXsqa5cWi3 +NgTP9ukNT5bJWk8OdLCk8UW8sCwxOHHz38EMIAIxALELUoUj/uf2WB1yH5jkA9Cq +kj6x+wlsbe6m43l5KPl0iHQpMAJEHBdwqMADBeER9w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFQTCCA6mgAwIBAgIJAJQM01A/geTqMA0GCSqGSIb3DQEBCwUAMGQxCzAJBgNV +BAYTAkxJMRYwFAYDVQQKEw1MSUVDSFRFTlNURUlOMSAwHgYDVQQLExdBdXNsYWVu +ZGVyLSB1bmQgUGFzc2FtdDEbMBkGA1UEAxMSQ1NDQS1MSUVDSFRFTlNURUlOMB4X +DTExMDUxNzE3MDA1NVoXDTI2MDkwMTE3MDA1NVowZDELMAkGA1UEBhMCTEkxFjAU +BgNVBAoTDUxJRUNIVEVOU1RFSU4xIDAeBgNVBAsTF0F1c2xhZW5kZXItIHVuZCBQ +YXNzYW10MRswGQYDVQQDExJDU0NBLUxJRUNIVEVOU1RFSU4wggGiMA0GCSqGSIb3 +DQEBAQUAA4IBjwAwggGKAoIBgQCYTMZTJ4KLFx9/00eMGfG3m2rq0qiAeGVHCWCy +lly5r0P/lw4HknryCN0Ay4jLcWaizcynT5o5bv1xeVQxuilcKGdcFFr/C54kRI9b +uq90UysFxIGIC6oOeT5Sfo7/9q2jrDvLb8GywC2eOkwhkNOHqdmdsdLm+6s+xSQY +y3oEcABADLGIQRt0MJnxNO7hsHPySC0JpvVppQ3BtiX6ACfKRVc6xkYBnjrOur5P +igdIrdP5q0ySBpweCz1HypXC0UMiU9eo5Ltkwl/nOi7stOP3dhoNoK6W244yyirj +nhzIqdduRymCzPLMglqK6kX1beq0hPnt76qf074pl1vbCB9lxpttICujWIB6XyFb +EXKxNSDC98rjGsHSm0OceKyRtyonHKf9ivRrf13kkU9yfFEeB9KDqhN3srtAmXv/ +Kwv78gbbTLNr12cI+1Rm0rgfGDjlSN3TbvozT9zKbcDZJBgFlOwb981ySvfvuTq1 +CGeGq2vWZRKoFykmz3eUAFCj2rUCAwEAAaOB9TCB8jAdBgNVHQ4EFgQU8REhBhyw +UCe86cwGCvLBxj/3F9YwgZYGA1UdIwSBjjCBi4AU8REhBhywUCe86cwGCvLBxj/3 +F9ahaKRmMGQxCzAJBgNVBAYTAkxJMRYwFAYDVQQKEw1MSUVDSFRFTlNURUlOMSAw +HgYDVQQLExdBdXNsYWVuZGVyLSB1bmQgUGFzc2FtdDEbMBkGA1UEAxMSQ1NDQS1M +SUVDSFRFTlNURUlOggkAlAzTUD+B5OowEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV +HQ8BAf8EBAMCAQYwCQYDVR0RBAIwADAJBgNVHRIEAjAAMA0GCSqGSIb3DQEBCwUA +A4IBgQCMhIwQl2rTpE2PHSNXXo/JaFXwBFa3XD+MJYjGaNhHPF3EbpUi3ZWlmWlL +l8VBWPFOYMO4RyfeCmACg29PY2z7vVALubHAa8FvHNbVJeIy/kZr7FcSOw34wElg +EWUNxHzOGn7FpjRlovbiACuHzZHhbdQKS6V7OVHTld6qhU7pu2gk6sQlOonAc888 +LeF6dxcOoBZH+k2IoR2SIXBUU9iPDN53hteOGrl1Ck/o5rp6D48I64hyv/LvSj74 +340zbyUJGadi8U+hvwGXAC728WLa7FjPzC+2gz0arMGhOTuoEpnJ8s7Hhi7YFWgo +EsApJrguFQ+jfC7oHqUYIYg0MxIGz8Bnx4U4wRDTqNSQD+pSW/MV5um1mShNXUZ3 +jMYZV2QjO4h9qMZAmMqPM5fRyC/6BJQiuwCmjY18IiX7XLZpOolt/u1tbIzGKyZO +LJhMtCguLfOlnPFk2NSDbg0nKuMqg849ktzHCuhp8T/eFq/wpnm7BiPjPyHwjrPE +MbUU7jk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFVTCCAz2gAwIBAgIIB6g9Qspe2FYwDQYJKoZIhvcNAQELBQAwODEUMBIGA1UE +AwwLQ1NDQSBUdXJrZXkxEzARBgNVBAoMClR1cmtleSBHb3YxCzAJBgNVBAYTAlRS +MB4XDTEwMDUyMDA5NDkxOVoXDTIzMDcyMDA5NDkxOVowODEUMBIGA1UEAwwLQ1ND +QSBUdXJrZXkxEzARBgNVBAoMClR1cmtleSBHb3YxCzAJBgNVBAYTAlRSMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAooq6xLJXL5vooo4n9/eJx4sdJskq +D8zJ6o+1YJ4DvePCaVG4IHG5aCyYDMxiZYNEfP/0Po700cJ9jgWB7IHaPdPHBTOZ +bUqZaqRnbExik0ZsbefjNuj9g7qQ5Xbyng3bUv8qtCo7kc47DDE3joQL+A90BjIq +DV0hh5z9OvNNCi8yUMeH0oBPFITLAsFabREKd4uCcFtGznIPiX04yDoxlWvAEUGO +MDHZQWEE1S5C1wN5OpsFGC7cgwti7tMpS5RMzsOdLM6VNU98A6rcWJHx3yaepEuq +ueIcRgqDoCMWsTp5qZPoP4y0XqzPRA7YL0xD1axHPOCmNNxPeEz4ZMcSTQvjfSX3 +hlQClJQtd+GcLajEhVhLeYz6nC0xEkYfXXQAwMpYqrGoq8YQrN+xyq25EDpj3wNr +4U6aw3xWAC8V0PsvlpJCqcJdrFXNHqA+io9JYhMBSzdfkDs0y0RE99uFg/4RrT+s +9waUgTgDknRlOeuSfo556SRAXREhT7sx38A24N4Y2m+VMlyDb14a6bNfebbjb+dV +Mt+haVAAN36+21JNyAT5bjyckR0H431nD9gXpqZApxuEgwFjljGCCkZz/UY/9TAm +eXB3E+h1swi0r9dBvL8aLNREt7seJ7hmHG4LqKdvmeZc4MOHS8WCF/rubIYyUUnu +f1pSCO6FGkAkELUCAwEAAaNjMGEwHQYDVR0OBBYEFMRgFT0NzPulUP/io/DfvIG+ +TAVlMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUxGAVPQ3M+6VQ/+Kj8N+8 +gb5MBWUwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAvCB1Z6WaC +allI6deFVzk4552RiLZyeX4iXYBNiPmtGxQYxdusQODgTSwTe5KPDyg9xTpf+9ea +LP11IZJK6N0KswE8OjBgKc7CIy46C9kyI3KCEvp1WDajq3fkslOjiq8dNsToHo3y +J/bGi0EZusPynBtODcj7bmcQDp2uAxDD5KD4n0BzlZBmWvRT8tckkHkAEaTUYVrU +NvesGinzJaSIzwMH4qViVC0S4Brn/pM4eLCocaCo72clAQx7C4PnV862Nny+Jf+A +o2ZHd8Bzw9sO4yS13DYaa6Pjh5ZCaZkWRmvlE3xjiGqxu0hB0ZB4GXhTHqjZnK8b +8/PBtmXmbxoaxpiPdCQagYRZoHYIGZ10AkIp++125pnZ4CBH2UYSo0JDsPM0Z6ML +VDTAHhjQWZdSOBwtupIIR6dKaeT2hcr5BmH41tN9Rs8bKGGL+ambX7kpdsHGddDW +SY0iRk4CQsD9nOxJ3KDSkWHwyW6rcMXAdUmLSorgmJ3Tn2lzT//eBdg4lYcKBxa+ +kyaW/v4i3yYIWo6ixuQZpmx644BKLdc909YZTZIJw0k80RnRVyWqQVUyqhnE10DV +fkHiYzNqLVQRKJIgnmnpjMs7l+V/9PScAZ9V98zL0VYknGsCHDJ4bE1M7ILBSH0j +Zg0aG4HvuvNlD8imhQeifXJAtp/IwBNmug== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFXTCCA0WgAwIBAgIESVZeljANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMDgxMjI3 +MTYyODQyWhcNMjMxMjI3MTY1ODQyWjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDYsJ0CEdT7RCz4aGvz/27uCF/YUe0KF9vnXb895G5fjmvJfiO6 +QibzATZseJhsye/pkRYyATwyqteJi1auzeZPOYQv9AZ44p64pb9aezXd9N+g9Fl+ +9Q810EtdNNqsfJ5llqs05fBCfr1chQs1VmLlIoMIELu7YjSep72YOPcjA26yJbBN +nKMbxU1Ji7x1xTG+WKJb986AJ+WiBSbp3iVD6MQXTwN1haD3XYG9sFn//DB7qsJy +sDpEb+NYa+MFs6LA05/uOPY1gk99O66UCYrOeS4QGaiyUdXjDZsZ1lV2yBPr1oR8 +Cb5DHNTjwRIPueho7+i4RY1gH4N9v2LWuCmnubyno1EwQ0RyXksVqYeC/zq+33Ka +EEgHKhih1XxrIQA+YQaMjwXXf1v8owf7qyToyBJ/oFlKpzibIJzv5ioUMQWxYm1R +7Ylz5UBQSzNvaSy+rsABSlDdfGOxtf/VxKc9RBv3FXaSNMkgpOoP9ZaNExkW5ct3 +68wdRFiRCIxkDPm2SMuwgewFI3VqyCNg9g0igzCChJLpIVM4oj3hygjaTbvXVC1J +ylmh60FaycGOD0IyQz0XrdSOcJBjdmRDrnbPlGZpMADg+Quic8/v79qG0aj8p0tq +jtBGx5h6SLGB9fwlPNEdUKHb/MVIO9Hqwy2wCDz4a5KD1S5EN6ScV192WQIDAQAB +o3sweTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAE +JDAigA8yMDA4MTIyNzE2Mjg0MlqBDzIwMTIwOTI3MDQ1ODQyWjATBgNVHSMEDDAK +gAhCvcjdDjNAojARBgNVHQ4ECgQIQr3I3Q4zQKIwDQYJKoZIhvcNAQEFBQADggIB +ADGVvmfm2snGFo5QZTN7y0i/bB1Om9H4UVa5wq2T4ZFm9I+eCz4pWjVqnRfVWpf0 +waL0oh72gHoOtZA9t9Au5LxLrObVEDJiDXdXJh6dgqdMGNfI3cdpYHseG6QkYYqj +QYx3MfGtUqWxQ+yPKOJ+KHzbgOmrpgu5O9LOKtc3fFG5ys0V+49RqumQkIjdHFKf +vwqJ3OmAYxY0MAfHZtnqK4gNw1fwzC9cXApGfHb035p6hklU0jJP3NSXsI34kWDv +nvxAKvpUNlR4unnFiNkYGkIgrMNgeLPFbdfcsXjkSFFE2byPqj93W3cPj8o6uNcZ +CNH+AjbXhLrGjwD3ByLgHVHbsW5Wz2JL3E4pDbJbdMHRXR0mJJ9TkLuWiOFOPCM1 +/NHM8ARftyxKh6NJhQav5KCzuStoI6wQHbTNKrazJlGi1oz3hf4XfIFIXvt68+O8 +5g9pElFrSvnREycVJWYY7hGnRKA2Ivi0MFIhFyzYWjvnIJdBYf7y/xZrCS5/WHQm +EHqIY9/Ldj/96aTbLDy1Jf0autcNqmNFkeGe4sikWQNO+QcsjyISCchuMCquJCgD +q/5TeeqvG8T0uhPpawqBBNGzuAcfDsS8VVDbW8FJfky4uDywdolTQfPogUkTvzwB +D/5X3s77hueuxWvlbtdCUVcoRbXGEY8bqJR4X4YEGDCX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIBATANBgkqhkiG9w0BAQsFADBNMREwDwYDVQQDDAhDU0NB +IEFMQjEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3IxDDAKBgNVBAoMA2dv +djELMAkGA1UEBhMCYWwwHhcNMDkwMTIwMDAwMDAwWhcNMjQwNDIyMDAwMDAwWjBN +MREwDwYDVQQDDAhDU0NBIEFMQjEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJp +b3IxDDAKBgNVBAoMA2dvdjELMAkGA1UEBhMCYWwwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC5jXfEuX85IBFU7OuYpk/Yq/uQk+3N6QSgM8PpHwYMTwJZ +xo7Wq9RlZhxAlmYaLjamjs7VGOw6RNoSX/20jsyOhu0+SHSawN/YG1kZqZNzDr4O +c/i8kdQs1R20nQX7yTgVtwFrTkYCPLOWMaCuT2Mwz3yYdnNinov1UGJ8gxbJaqtJ +oGm/KduDLKnmxlHDW9N/27ooeBMp2yfadjodwRFgzDHucYZBB8t7C+vZRgcnUhZe +Y1XX2P8xE3mkIFBy57v7s5SWEIPrBc3sYQyR9G/yIGCAOK53dWpuFxSxsr7lKqXO +N37uG52nKAPNBhj+TQ5JOo8zmicP0sRHoM8EC35p+ffoamdArFnmAXCLNByEgRns +RyR1rexNnkFYm8kbtJ1Jp4VoBCgeEcmC9ZyNpS4TLMCorioTk47fZyCIWLmLwjNp +3hAwmK7U3puLK7OPz7tBladzK3eP5nhJvyv9/llmU1quUS8LobJukszTFeS6xDLL +2QCM+D3XP1U8ngBS2M6ZnKJf2zYrHBtmLzRGEXEV8bXfOmmK1dOu1m6b6ALvHkuh +KCT3/a+ou8K0C92zsamb6hkxkWVlFk+5yRQWOGjRMyLlX97sLqnSl338bjrsd5oV +APF0cMJ/dNnPfnJ5VD7Y+6fSvxIGkglKCjjx/hfgpenzkK5MGhW7yW63+arb9wID +AQABo1EwTzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjApBgNV +HQ4EIgQgHpe0DnRabrCddjzK2P34MRtzUHyCnJKoqzJVC4sFIgYwDQYJKoZIhvcN +AQELBQADggIBAEeNG+55oHK1P2EygWtXzadAJyLxOTsbCK3qMzBFC0GYTNgR17G5 +W1CHh9GHZRYPUc17iQwNsrHc/ggISjwWWXA/mrTRBOdfOCdkvUqF5C+J0k5jnCGx +0X6TEARGGDft1FJMugLHddnrRcwwR3JFk0DFH3O5lNL5ITemCs0dm3iuZGfWINtB +uwAhpv1ZwKrJXL+JYRoeEsiCRvbu3luvqbIgmPlSheufIlRrLcPmkv+EvZTEIv8e +94xh9htU8bLkJR90/UawjsYmlcn09uvlYs4+RjBeSwS4WwytX/pFm6lPufwQSfaC +nYRRua9Z7Cg1bKhtpGf+a50QX4h3r6cu+UxDSa7DNW9sv/HBrjGKEG3UUVptWEH9 +y3/eaV8vhnj2u7gHDCsth4h6zZEGWQhmABd81FA4FlvvrA09grbMdthGMQbvbkg+ +7Q9QmsGBYCVBF+k1zlWFOQ1hXHDxM0kysfix4DM2z5XUty1v4HgyHQyqagZjX5ut +Bd0Dd7HZKee27zTyI8OOscPtD8+czK0TSSM3qooGydTto/NI83WwU9SPqrzuNzBt +5umquy1y/CR3R/uv/Vssqk3r1Kam/yVVLVnIMkscLVV+fDKFkb2SeHDmgljvganN +yQYz9VuhLJ4FX5FrsSoENduZ4o92i3FvFBQssIbj9F3yGG67slUuZVlP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBADANBgkqhkiG9w0BAQUFADBVMRAwDgYDVQQLDAdTRUdT +VEFUMSAwHgYDVQQDDBdDRVJUSUZJQ0FUSU9OIEFVVEhPUklUWTESMBAGA1UECgwJ +SFNWQVRJQ0FOMQswCQYDVQQGEwJWQTAeFw0wODAyMjExMDE3NDVaFw0yODAyMTYx +MDE3NDVaMFUxEDAOBgNVBAsMB1NFR1NUQVQxIDAeBgNVBAMMF0NFUlRJRklDQVRJ +T04gQVVUSE9SSVRZMRIwEAYDVQQKDAlIU1ZBVElDQU4xCzAJBgNVBAYTAlZBMIIC +IDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAnE/5ogBt9/dj91pAuy88uLab +OdzQuwHWVndo5AP/dAgrfXosx4gFs7tJnVk2T0IoAVmP4a9FPPYoKjF2t5xqmWLT +DGEKxtgPcab1kFZ9zADeg34xTAlVig9xeG7qEH0+x4/DL9Rzil2huoHxRtGug6t/ +XiYP0P3iVQVca6GLH1SY0+soMOGlivbhW6f6H53lLHPrtcTTI+Mo5XJt7CN7yGvl +4LJNSYUvpuG8wNJArYZJQw+kuc9LVmZ15Vg8kZhVyJbc1Y/YujsPt/BXClfUCvX0 +xMk8Dvqt4AJ2ZKUxF8pJvjFlBOimtDNG8O9BqdUlCzu1STm8x6Xe4x2QVt2oymkK +ykETRVKW4NS9fHa2gYWlm1h/UCR4t+IeiAPur69r2BUdKp4BPgDeSG9HzbLhLCTV +i8murTR+hLLrPIG8ZxpNyFc76Ge8fendtneI39tMRbGuuTQ2vEE0r03/Vy3IQ5IB +5g+MDqcQkiAUII56byhhJra0Loc9MVSUPbLeCut5XZtU22Vfg6nygjxjn2YnV4ro +ju57RMSbBlnkXvEehwq4Unw+z1RheG3h8rMmFYi688dZos9TurkcCziOE1iWBmLj +Ms0KJWGmHVGszo02xNVBfMd4/DoVHAr+EVRxdV6gEHRy/A6otCV4drR0hqCSfa8M +BQNb9hevmgjYSqz2HJ8CAQOjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0O +BBYEFK2pB6RVq8ExJpcitbtQIQPbKLb9MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG +9w0BAQUFAAOCAgEAU+mIVsxpKQU6JCChIj85nW/osbzuaqMRgYgXdoPuobgAbTPL +x89VP685X08H5p7HdcQgjXV0mTohL0LC7QAIkoge2I6BE4sfbIBFBQ/ooRaJVWfe +v3IWcmP5HxEXvVGQaUULWdC/SOJ6XqAJ7HU2pJdn/WHvdkvzKEzP/J9v+BSfhYfG +OaZYTGpTw6LMjWssdPyECuYqChHR7W7s7mkE1K5owixFWysRr+T5dwDqfNqNKWgj +wQ1W2uvwR7/N32X3tg7VT9SMlJDGNAscxHbIbGJmD6LgvfyGygmeyvKGExW7BmlS +eHLn1VevUlS4ygFAJ+u1GWlKtoY5cUP2Vpiy7eGlMzYWig5xeY2vHnNPfavW1Ud+ +V+8LdXTxpdumxcvkE+00CwmcJrHyAIfDdzu/haY69b4SlB1ZUXmu36a1mwyDEW0g +LnysFKiKc0LQt4Rw356hNuQDshMaDAmQWkCMO80V9AJQ63jfXGTXyJWJqJQoVhuW +MBnQPN8xfId4oZccvxESFVUORn1ONoiSHBJAgpQtcliSB1ycklRdZuo9sa2lQPBF +j88RCqfzAu1MqZKPiQxea3XkciT6ZNdIN3lyggccHITVhVlgBjrENrvV10uW8yT/ +mVMNoFdccsRzY6dk+RFs1Scc8HeZcREzggveJ3wrVMvG058OXlbBMUgXCkw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIMSFQePWQrrcsXuIIKMA0GCSqGSIb3DQEBBQUAMEIxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0NSTzEXMBUGA1UEAwwO +Q1NDQS1IVU5HQVJZIDQwHhcNMTUwNzAyMDgxODA4WhcNMjgxMDAyMDgxODA4WjBC +MQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xFzAVBgNV +BAMMDkNTQ0EtSFVOR0FSWSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA8V6tzZI+CJvZ4OUxBCSzXON99ecbQqKEw3BAKy73JSS7Iyl99y2EVpPi2gk6 +Qeqlnh+iDJDlEULEi4nNW+XnrO9V33I5oXpNCcOB4aO+nndY6Jr5xx3y9aqL9V8c +LrL/oAI84cRM8LAVyyDvWiYOBFmGM3leA2uzu/NhGAynvg2UqVDnvmVp0D9lLUH5 +yG9ydK56EA+dRF+Divdkey5wxOdJc+d0MBAB+x8tsDKs4FfAcnzehF4SpK31zKe2 +ngOLN9OHK5rqNKxMKIyBCfD7RdSYY8ZR6F2T4cl6rcgguht3npOGBzcpSBuPNwIl +lazQ+x01jCqy1EkCRajlCh1BrNlFh4ljvLCtM/oYwYP4pwXc4t+q0JHkdNT2d1G2 +ZUYG9xMpP86WAW10RyA9McH6NBMnGWY4IteUQ23xapY/Qk6lvEz+93iEOur/nuSC +p8NdaFZ2NYFseviklB56rIS8nTXS3toBoXSW6cjOlVFLNQuhksM2Ue9dX5YXdR0H +CZjkGP9D66+dWwXeDJPw7NTNNIIvExSfOv0WAj8USPrJY7HEGb4DyuIlD/Ppc612 +mvS9bakt0jIF1tNHbwXrcEMM/VoWTn2sb5RkWj2MF5nhq3ohg4rImnDwnPqstKve ++tvvbvAepbwK4feqd/VfMp09JuxqWFQgr4GugHcWqVTQNp8CAwEAAaNmMGQwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJEDRjoM +H0Pl3exluHTiBDcUVZBGMB8GA1UdIwQYMBaAFJEDRjoMH0Pl3exluHTiBDcUVZBG +MA0GCSqGSIb3DQEBBQUAA4ICAQAsUvYKrYjxnhhapvreleWS2vrxizszoQFRMfuS +yao3eASWXubMGUu9SibLdZ6+tp9nlxqgBK7kqvszPMkiTpdBn+hZuYcihZzJ+VZM +SVSrksJgpjqN7xefnhEoe/AHF1L7U4yNN+YAkac6zde3BDuaoSBQkMqTde+7HADw +byLBdebm0CnrP+baWeROLlwg5s5hh8mpGXuGPUHHgCwsB4EhC9JT1KZeL4C3pWuT +m7AwyFxRxBiJ9gr6UnsO8f1LhwZxorg2xVrwfm50sQa+PInvqYpqpjaG3sjxKTV3 +PQjhjLITUa1e+j94RDNP5EWJG0O2wDUON93E1p/IeWV2z11qfKDuwQjfUPJAX6jr +nQbH3MzWJSjYMzBZYDPe4RtpPKLzd8SHvN3BITc/qsKQW8fjxH+CRhoJzGukEnJl +BhmwonALXnW2SJqGA6HymY0Ygp0Kp6+JjtoUZeg/clSjBu3sSvEPHyLn1sT1UcFW +DJ4a2xdTrlctHxOvlFdL2Kt/hBcPHIdSkoVhWsG6hNNSAotKPBlDF5eNHWEgw6a5 +eAT8hivGH7ZFfWZPwstaTJt9CEsn3DN6rMQIcNAdMrnQKxZ88VLw217JR6Oszy8b +l5v417disugerSfw+NmTLNP37nZ6hY28I3dDsGnuUrbN0zT3APbxL9bBBMbQledt +TVts9g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIJAIGECgojjJWJMA0GCSqGSIb3DQEBCwUAMEgxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDjAMBgNVBAsMBUtFS0tIMRswGQYDVQQDDBJJ +RC1DU0NBLUhVTkdBUlkgMDIwHhcNMTgwMTE4MTE1MTQ5WhcNMjgwNDE4MTE1MTQ5 +WjBIMQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQ4wDAYDVQQLDAVLRUtLSDEb +MBkGA1UEAwwSSUQtQ1NDQS1IVU5HQVJZIDAyMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEA5OddfOmrX++mEBOHEpXV816dwCuXt70pwSbrmmpPRC9kaOGx +0+ZJrOH7KSlh95Gbxu/nS48u57YnltMvcnmXtbsjxKyxyNmBnF3ZDZlMbugyAoSQ +tE0IFUnTrvMd44xPuA3nUmVherHaM47q2ZU4h2BLkVIi43Vo+eVOH0EBr41Iqpp9 +GoKdzZ+rsNe//gldQNrXdkwuAGJ7CJs8c+DVQCiK5pyjPA0Kyzf5t72jV/DDDYaS +LmwvSPniOLkWiTBSwi1lTq+/5ROfaNy1XI8/VhLRov1KvkmLb4XXybPPgc0fqUnC +HkoXoxr5yPc+M0y4kPksUGCylvmXC9KpIgUWHvY0ImySfBJwNuQL1LSeiMQJ4zMh +Gs7aI2Q7dI7gO9sbIGONbqbpqZy9IP9ef0qVMkLzJBY0lJHDDZXxycvYasO0YMFp +wmxSda3lbOjdR54mnzvTPdPoRDh3HIiwbY0yDAIRu7uDXUFQRx5+J+m17TIZQh5h +IFVbhwAeLsQxL0bvzRRtEiZ0fRGpBqlbbqMzLzJl1LrGbaIYy/tmU33pxy1UYfN+ +FKxnUlJ5UHlrnXld00WiTkWL9qMKwIvCa4AABPD1ahajMYfrUWA4oxAV65b75Qxm +8PtLhG69FkaPBLEWqCITIBr8qgBPng/ZC3zYUov/322IOgml4JJF7/dDjasCAwEA +AaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoSrjJvwrDXaoXItHEbnB +wiBhyRkwHwYDVR0jBBgwFoAUoSrjJvwrDXaoXItHEbnBwiBhyRkwDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQCu7rVLSMlfRggIMfuMM5haQxacsL/a +P5bYr55eiihYIwtTyE/KQhJC7qgz8mDEwbi2mPF8RZGNkWOn0/ANXm++U0lwQ5iq +8m9tFZBsO8eH7J6qgrcJp0QZpa6Fzw0024J1e+drojHmZtR02dKo68Tlq/5mlkSr +B1Q5FEv93lXbYv1MqGNxOKhnowMAfpTJQ/aCKuxFIoSdp8YUrQ4rOpHmhdg3pq+T +jHTH02eiXyUUjg860T+2iM4Dd196yMfL6NlE3ULXD9kLAZPcJLbSF/6o6/IgMFuG +vWq13f4EvWPiT46xlpi3Stf66dqQ4KX5V5ji7v15agsPl4sLXMTMOaNhP4egrdBk +c24GR72ImY014N+kFfux8AbT8zLW659bDkT3VUX9g6ZxsTJXaRaRu7cNRNT2hJZJ +jrOOMdrqSW42Sj7RdXgBV7CvJBbzq2zOops3HwUwetjUdsD4/URh58X8YCbqdxnB +XdFcOdO5Ei/5RXO4yU5SwjysF63iRpvqvMUW8TCpb+dQ9TScSzBy9Le/wv8ZFiEc +wh7kv1ju7objMTfp4OaHDcGxRetGN1vX1lF1MUsDnIO2njYY8CsFt8SNBQJPthbE +wfqXENr1ic1LnXhcw+EdO53EttbM8E9CxXUNzrkRqlK8ecPNTeplk2fX8j+/qgOu +il4Tx3Z84n74Yw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdjCCA16gAwIBAgIJAJbyTXa8Y2yMMA0GCSqGSIb3DQEBCwUAMEgxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDjAMBgNVBAsMBUtFS0tIMRswGQYDVQQDDBJJ +RC1DU0NBLUhVTkdBUlkgMDEwHhcNMTUxMjIyMTEyMTExWhcNMjUwMzIyMTEyMTEx +WjBIMQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQ4wDAYDVQQLDAVLRUtLSDEb +MBkGA1UEAwwSSUQtQ1NDQS1IVU5HQVJZIDAxMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAowNcZ0nr+ylY3O/UtdhQtTzE2UlQz1Cypx2oB/loAjW1/XeE +SDFw9CzIolKxmRAyQ/kl3FzlxpJzfCzQ66jjatK5TR0piAYKbtrvY17+R+Zx2WCv +wv9j8f/P/xfuZROi+cIvdQFfa8QkBtB4WSrHQOmpiymjXMOmKQMuetpLNzuyKsoe +K2gXub1TZvpItSiDd408EhaW5jNtBKh6cbleLu49AedixfQdaa8zxi+PcT4OzcZ8 +hTJQ7OoX8mvN3cRXbxD6x70pSMuyHK33NPffALPlK8EpMctUfPz4z0IfbnNiq56/ +FRAAB/8McZfZW0PRptlMVlPWYrWw+j5P79nyVsKHsWW3uYZQ1azJKbZqwQctAhhu +ooEDqHHtDI584kuoVSs7fs2Wds5Gg7BIi6ov+w3zd7DSQHHGhZeRDIWIVk4m8rJB +xe5kGflAfqb4O23/VJF/oMy1XzRBREA/M/hoQIy0X2a3gVc1QiwhyQJZop6cRU8V +JVlkkU+vr0H96I91hLzjDkpRI0fizUYXFEAZEdra2H2zk4A6ppggFyZnYPvTLB5d +f6KcAZz6yhH1VLsbolXErfxXnwabZlzB1z2/FUhSPS9iFkHi/IbyImXxgccskkVz +JaS7r1sEWuUrvXQsjDfFrBaxX5jujlSPmZ2xrAOHWvi5FN5G4XD+uFJy/acCAwEA +AaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUUeeM/urlV+nSGxvwFiG4 +jYl5LV0wHwYDVR0jBBgwFoAUUeeM/urlV+nSGxvwFiG4jYl5LV0wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQCaeKpNP3veU3dpJp2tHiWGUzoN+gJm +H9Ft6o5lcuwYvof15KTv6RH5c5ttLi9vOi/TbLcWipjaSzNsecz5ieAofCvdvGh9 +Vq/dNQC/R8vIXtz82BtmYPJlCz87c65NIjnVgvyeXt3hQFCD/TIyuzItB/N/U8+z +QBgsI7E89tVjtmgRs5fAiwtxPomK1FbgbkNINxt/Bbh/GIOkaHF+a/jkrp9NHnqQ +C3iYtzssCA/gMwwqYPOlmywZQx1JTjja5WXPBHHKLcKjMmL2HEHYMhWdydLLVuR8 +jU5HqlFYm1b7pHj3RY5J62bKwO/eAp/bM+t4wNS2QEjdTfonNwBRvZXyhlcEcOgx +Ddrs7+qbRD/ZwJL3e/8OcYByv9XzUqWGlsTWV2cH4cVVJIa2u0kw/Uxybvq6i9sK +vFKZiljB13brl5mcdkcI/Xz2rTq0Kk3BOvnm32Dm22BwhqZm423Bp6RUoPVmGkU8 ++PcFzEiwLGVhM8YhLfq2EQFxgvyzEJ30hW2aL0eEsaBzThlsMABo4cnuO2UJtoHm +X577Bwe6JyHkAqUKb6WmSsclbxB8YapsAZOAI+sxv1gwRr3mkc80ZKvTlKsrwI59 +6XbHBo0Dwa2KbybKD0x8tceMMMfzZsazeAKklp9JCPpV9VKkwwa1iJ0XVc29hMK3 +avAkdkTG76Nr7Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFfzCCA2egAwIBAgIQVLrCs5Z+VNJP/WfCcAoDdjANBgkqhkiG9w0BAQsFADBY +MQswCQYDVQQGEwJFUzEoMCYGA1UECgwfRElSRUNDSU9OIEdFTkVSQUwgREUgTEEg +UE9MSUNJQTEKMAgGA1UEBRMBMjETMBEGA1UEAwwKQ1NDQSBTUEFJTjAeFw0xMjA3 +MTExMTQ3MTRaFw0yNzEwMTExMTM0MzVaMFgxCzAJBgNVBAYTAkVTMSgwJgYDVQQK +DB9ESVJFQ0NJT04gR0VORVJBTCBERSBMQSBQT0xJQ0lBMQowCAYDVQQFEwEyMRMw +EQYDVQQDDApDU0NBIFNQQUlOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA1JREujAXcuKq6BLFOtHTGvPC6uH+mxsSjdQWxSB1Bd8XPvDb0h8Wcu/SPHaz +3MtYdN5g44BbkXMxnEDtxFUq7j8oyJRj7kgpWmIYDEbUnoAaOYRYOYPknfZ/b1IE +Njd4d57+CnVmaD5fhn6dlPxA8gNM94AKVg5DIAhlJTBLGofnp5Ef+Xysnx6LkS9q +2t3g0P0eaUCxnM71ntAiKtXZJcMHxoUxSzd2HWbg3vhYAbGXShc3k2m+G9eVyObk +s1Q+OIFZpGDWXqxGL2inwWnwg6RLSAnrBIujHyfl20EdxRGAMOn0Mt0IAEbUhWLW +GRz8Gau17+lfWbjfHnl4EA4mAZ+bO3zFTSB1pww7vK8Beq5PHgPuEWw7h257Hz+O ++jcluu2fH23Qdlok6w62ckYGU73+7kW+tccx0q1M3DhINVuoWuJ6uYnfx6BKFxT8 +PZN8Ej5l6FssW3hUdAoMCFiYZ9iBkH3+8wYaImDLsXroXLC+7KTauRYadgN3rh17 +G+cbP/wBn27JfaCBpiObrQr5p/25ofSbR01rkYe//9jiXDR6pQEjI9QgcqZO5UGl +HSgWYY5r5vPGRPui7/eU0dY7+OwUMlVDgXNiFGT3ca9ybKsblIjULg+RTO6P/42Z +JbIaB9VkiHzqhU2AlnRIN6NBVGfSr6AyZLuJ7XhPISusRkcCAwEAAaNFMEMwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP+AK+A9 +9A8cF883i0cYDAHpGWPpMA0GCSqGSIb3DQEBCwUAA4ICAQC9jBqYliE2lzJzgyPq +fhzndkCe8hyzRl/JeqT1Jw6fJ99vvY9Wo+OIk2bgF1QjEpikA0dhm9UofInhhJ7x +MItcYMTAi6lU2Rai2atHEUTx5RfHnPDdAdyONVh3Reif3IOlE77sQplaiQbQNoSR +Mzqrd34vQwhfooR+slwaa4QYDF9NhCC24Q+zBQiJPfCxjpSSSr3jwgfxELL1na1u +aG/tRpQ24jmI0jmxl+bjWJ6+HsR2b6OfVAvxRuJ/IYzqLnOk3H2ibli3VHiuQvx6 +jVxFApVJGdgnAuoX8ZDM+IAIqyFKboXBgOYqq+mvkqWM4FS1Gs6DjPSPk7xP0FYs +DHDmdknBxl9b/D3jH4iHOnleTjcD4VFRLQlnpj3RxjRtRqJDMDXo+syPwN2ILa7Q +n2nECByfGJ64wIXhE/esQJ4QAXjLZTCWkeOo4L1MP4IcL4d1myxAIasV2RG9T+8t +L5+HRggN3TT8bgdMfD5SZUE68SosdakEW0z6P2nKfVKWX5HUOYVSo15Wq0R/K5F5 +F6PaY8gerMqiM+0EMbAMgsRDu5uwtMncN64lY/RKATaGQWnfyzIvCvSx0ITYt9xd +vY1SzjJWA1t4BaL1vWpS03YZjIGqck6VVxPNTMKIRIawbHTWNdT9lhTD6l85I1PX +p2hag1Lb5nI7r0tpcnGwGGrBxA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgDCCA+igAwIBAgIIY9KwNpcEODUwDQYJKoZIhvcNAQELBQAwbjELMAkGA1UE +BhMCVEwxLzAtBgNVBAoMJlJFUMOaQkxJQ0EgREVNT0NSw4FUSUNBIERFIFRJTU9S +LUxFU1RFMQwwCgYDVQQFEwMwMDExIDAeBgNVBAMMF0NTQ0FlUGFzc3BvcnRUaW1v +ckxlc3RlMB4XDTE3MDMxNzEwMDA0OFoXDTMyMDYxNzEwMDA0OFowbjELMAkGA1UE +BhMCVEwxLzAtBgNVBAoMJlJFUMOaQkxJQ0EgREVNT0NSw4FUSUNBIERFIFRJTU9S +LUxFU1RFMQwwCgYDVQQFEwMwMDExIDAeBgNVBAMMF0NTQ0FlUGFzc3BvcnRUaW1v +ckxlc3RlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAiStIxXZpEqdr +ZkwBH3lfqBzZByWlWFyOSJiAikxtzVnQpUXWlJBTwjFCxxtAsCh4g34Oyjtj9RP+ +hTylIEqydHGr+NZiO2qpiv2JDzOpz5v/iKCEu/m99CFWkBWW7dlhabSk7LBG/TIl +9QMc+jC7fthcQdx4+pNCiXoKuUYHGiPTE9V0H7WiLLFkCRLtzQp49Lxb0aZ70m7e +T48uyCk4U6+APqTUYxREjealJYvSAA4zHjVLzaIwewoKLhVfvcMtOLXWa26qDOrY +v2e9zlGIeCRe4brX+e1Pjzp/kYR1Xtng5786CBvm5Xpbyn5zm277EqpEuw499sJZ +w0RM6jWB2u5wwHJTIFMVLxH/btI2go9rRhn3q6dMtVjLYBfinGU79SBcWdQRheFT +W2N3pdAfPtOW4Z4YnZns+eNhhmW1RzHOqWbQdTF2bOTAeG5fnIgwJDpQa/kxWunA +M+WuyAJPX0YliAQKIjWt27rc/PY+1qnQDHCt72CDu6tW9OSMUywrAgMBAAGjggEg +MIIBHDASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFGtstDPyXJRGymYO +YdAnhFtXmU+KMDcGA1UdEQQwMC6BGmNzY2FfZXBhc3NhcG9ydGVAbWouZ292LnRs +pBAwDjEMMAoGA1UEBwwDVExTMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly93d3cu +bWouZ292LnRsL2VwYXNzYXBvcnRlL2NzY2EvQ1NDQWVQYXNzcG9ydFRpbW9yMDAx +LmNybDAdBgNVHQ4EFgQUa2y0M/JclEbKZg5h0CeEW1eZT4owKwYDVR0QBCQwIoAP +MjAxNzAzMTcxMDAwNDhagQ8yMDIyMDMxNzEwMDA0OFowDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4IBgQA0rfnYss6JQgrRrrHm4f6LRWzMlGQNZW4qRVvN +Toz//G20xX0rDX6Ff7ydUUKGN2Z0f493z98MtI5k8Gmki2GKpmCQOoHh0OeN0wD5 +IgHmGvK/bdmTxuLYEIKh8E5pu3wMh7bqRLi40XoJJ+KVGamOdPF5AF7+fkQ5GAzw +n105Wm21HXoGXvox7cnHzgQXktD4Py67WP2KDROFsyiDv/VbmS78QtpfgWa7pOkF +fesD1Kp/5sIfvdYUUp2apGdkI891jnSGE5po/1glTMNzF+ztayEwYBA1kpflCQe4 +jolyQTTQbGARuWC5zI7w5+3lqvvcxlcrrZbkaoKIU0Ah8r3T2bWS3s0MeV1l8IDM +i6DOx9wgN1WH0xIrlMb5EMltt6VYzcvte1V7ZWfMsiyBBjbLCh2Bg5M/fTBvUQ/8 +5zs42PcS91berUT9Enshp+S3/EmMLVNAH1BZt+wgJ0NYMGGeyl+xG+GK+bk6my5a +m1WlFuWYnSAiGziPbZKk5bxVq08= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCA2mgAwIBAgISESC6kP0LdZjT1Yb90wgWUfN1MA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAlFBMQwwCgYDVQQKEwNHb3YxEzARBgNVBAMTCkNTQ0EtUUFU +QVIwHhcNMTQwMjA2MDAwMDAwWhcNMjIwNDA2MDAwMDAwWjAwMQswCQYDVQQGEwJR +QTEMMAoGA1UEChMDR292MRMwEQYDVQQDEwpDU0NBLVFBVEFSMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAlLrNzqY90BMX6PKLRuTPtxKQ2F69wdDNvbWy +UEHpEy+9zFkH3CZ+3ozAkJWGvjlu9oKa+R05jLC/c3VsMpb4WoHd1S6cliFHqjnt +i/yeqlnvFxuijlO7vIovb29Igo2UJ0RB80v1OP0eDn4Zoel/copycccdzyYdh20q +RjiU1pKiyQZXMWU21+Bkj+gxZpaQk2Fg0ogC2LQZ6DGKaGM1LTtUvUuX8eD6ME32 +SRZkiq2KvqT3onayfPTlbr2CaXU6Jv0fRYoN4AZILzvLwLoq4+BLyz+iejx/Gmci +lFxmuNXkpp1zKmaEmEB5xQQLg4aBqgthaoBCinb/+3Ar68BEMWiwJCFLfoAjtsfj +OIjyyrGiJdFLXpD1qQx94mypPWA6xTcPTlF4hcR6fa+1BFiPUmWBLMHotLnL3Y05 +bcYBcK8zJuRJ6pHDC5kyD5s6picF+JcdnWSNPqKaALV1NLk9us6GQqsdmtDAdz0m +ANVvMqy4hV1+2cdGe0CYFXHTxP18YbZap5/9WXR7a3+LmE78vUJXwFEuFOx+0tYb +WUZmw6MFtYjKgywG4LmRPBK7Z4haVSRSNgrh5GDSU1/6VMt7rzsUGoSd9vjGGUsT +nPMmzHJ+MKSxXmVrEv4wMdhPwnd3cWpQNvu/SBKbK9PZMUNugOScz6WtbgwiK/7h +XI/SQsECAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDE0MDIwNjAwMDAwMFqBDzIwMTcwMjA2MDAwMDAw +WjAdBgNVHQ4EFgQUwzeZEay/GRmPZBmNGvKOnWNCWtIwHwYDVR0jBBgwFoAUwzeZ +Eay/GRmPZBmNGvKOnWNCWtIwDQYJKoZIhvcNAQELBQADggIBAAhyrZs9ym+Hg7Dq +e3WdZ7JCinuZKjHK5+AyfNhYjU8uRqP/wkHUpiS5zWlfyk7K7Zw0RIJasXs2BmG8 +PD3xj1AwsFfvufjGuv4i+qpfawq9OWEn7XmYLgjBXL6CkQY4uHoCJf10bubaXuit +QtFuszt7etf9t6SRMcgnwbLVC6Q5GHcw+WWwmObwv/LhLOIC8OmdMDSn6xkPEUkx +CAISDmq9GUyju6ZWBAJDAO+Y0tY0GRAEvNXe6w4iJiuZZE0tOljOhXeVtv+HU4vN +2aA0FUwX61/tVdSKNaQypWuWpQTp3xdv+BjoyAP5C5ISwqNMFa0x6jE4QeDHXsc4 +sDFDOkKOypUTNKiwp7BvUcY/MmV+57bAfABsErdxmLJ74nl6zLuI1JGyfVP6NQqS +ovqs/uaqgtLdZu6dbfi4EVSFmfK4cvjjrfncdtAFnktI2uJ5kl9umdmYnSYidJcZ +/rBceTEk4ZLESUUpLGegBYFX4D/xELGx7vPnd0espWj/JHIv24MzXRVIyUB7Gat3 +gMQRU8QYSkELAOmjbvgXofXUrxycmblOFVrqwgKoJplf5yUEj9K2f0qTXRlcIs9g +IWVC39Ds4puwPbcMicTWxMCEgct0SXAq4WaVUqpcTxuPEj3Aq8T8jvRFE6hb2cBj +whPi2zS/oR5XR0xsyd1RlLQJIleO +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCA2mgAwIBAgISESFi4bqWkWuOpcuXdLJ0otFSMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAlFBMQwwCgYDVQQKEwNHb3YxEzARBgNVBAMTCkNTQ0EtUUFU +QVIwHhcNMTcwMjIyMDAwMDAwWhcNMjUwNDIyMDAwMDAwWjAwMQswCQYDVQQGEwJR +QTEMMAoGA1UEChMDR292MRMwEQYDVQQDEwpDU0NBLVFBVEFSMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAq60PYeWbvQOV9qB2VT53Qam7K9FuCbl7DAe/ +sx3aNYfVZ8le2tX8E6tKGEWl0R5KoH31mIVJve+juPAoePm1wzE82mKOVmD0xoqD +aV6SqHeCk/ubhYc/4HQkOdClZGrDveCKzCGta7UfZcberZfppwc6ioAk/9mHd+3E +LW8t47D4Ulr768KX3ehMHTkGeDqGGFsZwqFlFhov/xP1b06f5545MdTwzMazXx+X +B77QmecxCBo7hybZa6vWjNOux+GnPUq2NUvJjSxfH/Wl81vjKSynMUwXplyK7xgQ +TEudp1x+MCVN/ePLOZRmV2X9h4HyCzxQSLRGCNMwbWsEtUg2Z1iNOJKUCTLQWlUS +XXviyV6aEqSkJGhAb7s0sYqDMW7h4S6G5RtmYUlXOMP6Rg1mmRp+2ZCeSP1CCW2Q +MBXYiQpuebK8AkKH81YYob157I1k6U2enFOoyL5f3HWn2eHx7zPuegIm/wv2GmLW +SNER8j0z9+Lc1DOxnOnk9lhCpe4yVy5pSKnSweHl4jiXNS2BgQJDMIW0kjMOJG4D +7vQXlBtSUdTgSAhJ7H2CoynXoxwoMdgB61UajrM0wc8BzP2Wz90d5Du/DQaRMMr9 +Pds6FN2MjDUMYKGNSmwP7ZKbeOtld59CfGpPeZmgCUWf1a4fEFEOoyYpBjLpVE7t +3oi1ul0CAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDE3MDIyMjAwMDAwMFqBDzIwMjAwMjIyMDAwMDAw +WjAdBgNVHQ4EFgQUgBPwrpfq8p5xB3VDJhLccqd/X9IwHwYDVR0jBBgwFoAUgBPw +rpfq8p5xB3VDJhLccqd/X9IwDQYJKoZIhvcNAQELBQADggIBACnC/muxORk5gvuU +h+etIe7U7Rr3sbrHuwdQNROf+i5FP2geMgAC2uIzcnCjlkHrdT+ODLxDKMELKfGy +A1EWmwK3bL7tHTPVj152OPzMgemCgdTw0sjEv2pGOGiAbjl5qfaCAcckWLBoRnBK +FhSwyrMYZNGr+jUaKrjzScXiZH2ykglRqxirjlvw/f0oSO1Ft8tOZaQLvdexzDna +mzJJv7QyzzMiP08duFHYIo6eUKap70+7HGixEXEFopvsYwFrBBc7GTVYDYTkTRCT +EY0Bdy+P94esUHffkbXh4diPVxU1cNDhKLygnuGPPhB+A6GtrQKvszW1qBqz8ecI +goBSJqG6A8Rrnqe9Vzw13fqHompMPIzpMuGZcVpRd+H/4PO9dYQ2GRjWmevuXJUH +HT9jFvOqBdEXMRxEy1Aq8wITX9NDJndx9bcdyW5Fb1UmYZ2uR0f222R80Jhqek61 +OYs/L500TEtPTCuyFYokLA/eiqYLCcVj5M7/kkvIZF/6D6Rw7a9ixrOyNxnzvdGS +E9tEQGpuu8KVEVvadqAPUP60AtVID4gJaVI8K2rVYw8lfhKoLTsXSf3H3aUqRWeS +p10YWq8O3kUOq1g/sl/fpZpYs33kpBv5+UUsIkAFXz1vPRlnhb86E70n4L6zTYrf +EuUPax1SzQPpoZUnF2AphQvvHLmd +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIIVi1lQe5V1d4wDQYJKoZIhvcNAQEFBQAwVTEgMB4GA1UE +AwwXQ0VSVElGSUNBVElPTiBBVVRIT1JJVFkxEDAOBgNVBAsMB1NFR1NUQVQxEjAQ +BgNVBAoMCUhTVkFUSUNBTjELMAkGA1UEBhMCVkEwHhcNMTgwMzAxMTA0MDQ2WhcN +MzMwNTI2MTA0MDQ2WjBVMSAwHgYDVQQDDBdDRVJUSUZJQ0FUSU9OIEFVVEhPUklU +WTEQMA4GA1UECwwHU0VHU1RBVDESMBAGA1UECgwJSFNWQVRJQ0FOMQswCQYDVQQG +EwJWQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKzw+qXAAPJvxOxP +usBGhd9QJkdHibtxE0AcL7Zq3VIlhUPchbzfMZXHaP2+Pzf7dRIvM8wPwAT6nR6Y +D80jyhmPdrwkQHx6I+H0jjHs5LzugrMPcr2WYovZEYs0pV+h1DX5M5bVuH5WV4Zm +TJUs7+JKFW3ymXVbkobt7UfnbEi0NsTWrzohXJSB7XDCAkv49fVxceNqcNEnRv4y +ntdOIfvLQgJiGFMTcZT+A/yWLhU8dftSoXU3WOPXckMIlO/pvMepCqxDnc6NTA2Q +WbI1Cp6eI+qlqJebf4SyIAC+CwXszQVDIFjq4zIKcqGjLhFxzzWf5KadqC5AdBUF +OFyMyFQGK8rY4Th2x0TibyUI7K8qDyusyoiZ0s7Crqi2mHAwj8PjrKjVLuB6NQ6k +iKIa5DV5u3N7sXvnYRiMlRElk2beRcamkujAoJNWeibN+tN9tYL/HUX9RMIxf9ya +ACQKz0hE9a2ClHm9iAQpQoI1a88zIylZwGfWMjd3WDt9g1gRBuTy0rSMjjXsnCEq +cZM5AexANQbmnyG+B4MAlTs42IWCCU8IrRRSZyK1fgUzJeXvibbuPOiUbHrGdviB +v1aPbgsf0SfyaD/5Rap9bvWlUxLGaYWe9DxqYuKfvvrbTYXxWa28PtkX4K+zw7WD +Svh2qqkhhhYQZ7WJW0wHzSqfbqnpAgMBAAGjZjBkMB0GA1UdDgQWBBQvzhZuIh1S +33f/8c26tamTBVHhwTASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFC/O +Fm4iHVLfd//xzbq1qZMFUeHBMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUF +AAOCAgEAThupcw/ckNUD5Oy0bcn4Q4vyPoSK2GXF0ybrW7BNBfmMjNCCvT7r3+4F +vPzHL9MGH7kxy1bhAhRR8cWaPwfq/n9/xrMvb9hIzQZH02CTmcyUdIyI/9BkoiSR +9VqBLcIJ/Wvhteo8sn4RVDG8lqoHlUtJQIu4FaXzAPQwzbYshKNCmGsfmewAs1zm +0lmms5GgyPf1IKQikopldMxpl8rjkQXbUj2yyMRWjFVGed85hRxYl6OeBhPC9L6o +LQdmgB63WSyDTiWQofOBTTm+jqsfJYHxgkfpaYTYZRa2lFJIcqt33pp32NSExVwm +tar3g0wJMxxB27Ly60YVlXQ5rTlHqFWUOe3QAYycWPAKKDXbepfIcDbGh5YOFy3B +wjGF7jk8tPdvnWFV/3VWgJhQeNKhUVoR3J6Pc1S5ote1sl2UXlaXKAbLkdN1sMPO +8X1qxyeJ+sKK0F2MFfasIJtWWtTv0eXQFHMnWgyhaOnTL2r6VoYIU8lY1hwcuega +Ufc5KH2FJyp44YNlMWPzVwydHJJagsMeRHba4l+DZM4RrGEnHIpfBhTJX4F6pvE4 +FSMF9kVgXwdzSOdnB542G++Xhczweac0roODJGGyVcUEudpN4D4waFtOX5xKHXV8 +nBp0vaUj0BfuPpiY27w8qcYzFOO0hnu9bSyvKHl1+3g26d0X3qo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFkzCCA3ugAwIBAgIIIfghsEwhO6swDQYJKoZIhvcNAQELBQAwZjELMAkGA1UE +BhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsM +GEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAe +Fw0xODA1MzAwNzQ0MTNaFw0zMTA4MjgwNzQ0MTNaMGYxCzAJBgNVBAYTAk1DMR8w +HQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMSEwHwYDVQQLDBhGb3JlaWdu +IE9mZmljZSBvZiBNb25hY28xEzARBgNVBAMMCkNTQ0FQS0lfTUMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDdpnVwp3uW3+UEYit/rLbTvRFaFH4JlWSe +9e9ODgqR/riaZMRmu67COTWZg26UEPARrL9MH44xx17QjeriOnwlTAnolZVLW/88 +FgxedTZFSK9k4sII9rMN6dh6dQaKgA4qo7DX6i23+fNRHF/VA+443Jq4r+HnXgQN +0zea0EJxxYhuCN9HjSxS4s9Pwk4aZoGsmh/v5XZiC8c7i3wVKnnk6kYkpT+XZVec +U8vc/LpI+OzzmNRHl4xCnk5Dz3QdzqcCeR64TEXb7qSmODMW/rH3avfiGogyqIfF +tLi6rfmKIw7YN7B5Gx6tp1ADWMCHgm4TKhXEjJHCa4lcDm9ipysdR7wt/nE2PLIP +dVVeTVHb9qvno8itobYDljXhN42sMPjrvvI4QhDfSr4pYNpirB4ULs8gJPXLYNSj +fEcu7Z5qRh7747fe04sii04zsbBxxyCDlxI3+9o7sXAHsxNWgEbWD9os3CRB8ad9 +tKn67yBtDE21LShD1lOi8I5hZqAL7aXsZJXgFhGFiKJZPC3ASecpPnAexxELmvcn +T1qYhQ1RmowcoZDNWRggii5fHzFBkTQLJ1cMEgPIriiIfwp0WrgYRjghkXpp4t/9 +G0RfVP0ui3RogVwvge+BG8TaY5yc5en3Ju9OPrJfQbv+sj+csaeCj6bXj4W4TIs+ +82PH5yBUoQIDAQABo0UwQzAdBgNVHQ4EFgQUtmdeJLzo5r0soo4MG7IT39dTID8w +DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQEL +BQADggIBACnbph/POqL6lrbeQHIJGwSmjcjl2AUPaCvQK9a6jVa53xLwH37NOrI9 +R2KVzbqOEWY3TtcYrLFN0jR1YKOWtX8KM3lLPg9KUL0y3uMwwRJ3h2i0mr4gnwfo +mtrqmkBIR4zq3g603G8X8HFA6xms5NX4OQvE8mgOyn/Yv+N3F9ucUD8EnC5DGJhl +5WrKde66ep0xosXy6ty0xyo6BkXF+LkNx78w0n2ygdUK9gt7+hyauJCPa8xO0djH +q/2XqTRx3B+/cxdDKaF3YeGsx4PnnUGI1744hicBeGN+tGajL6IBz9djPUxKC7iR +2qkDvzSO2bE4BiY0kVXZFJnrlREbOur8ApZ+4ab74qlhpgG60++82ggZTAKbXeJD +qljF1poGgAJAQVeTtl206NS4w5GnsNfdyMPmQGjcACIW/AsvXapqgB2xQjoof8/p +eGpgj1pdkmbzbrb1csGvJgCQv8rlvjUGGgyV2hFmeCKR+BNR3UeWB92pHschKuqe +Qqfl05H1xH1pHBigjnTRbbvZy9Mf3wvjjHg2Jw0XOlhco+oo6jOsoJRFmCb3stPD +T1vwDqB4ZyvTxZOQ4LLAFCXlVwVyfu3nIL+PLonO82lU5KTbwcyJET/Z27MKzmxf +FrS/FaocamOEyKQUWdbBBuQszP32GZ5b66kq+fUi+nA779R1HkuN +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFkzCCA3ugAwIBAgIIfh46GH6nsigwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UE +BhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsM +GEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAe +Fw0xNTA2MTExMzMzMzFaFw0yODA5MDgxMzMzMzFaMGYxCzAJBgNVBAYTAk1DMR8w +HQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMSEwHwYDVQQLDBhGb3JlaWdu +IE9mZmljZSBvZiBNb25hY28xEzARBgNVBAMMCkNTQ0FQS0lfTUMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCqnZin/C/4FiWD7iwFTmBGbwm5B0PZ8QhX +snsn5aGDj/LbTO1cGL0RgE67M2sulkWlgytstjX/UUw3U9V4fCgyUyxZJ4QzKGG4 +Hz/1yohR90uXSaT/r1MKsPACFOzyJAzSFI5zb9cmOn0Gqco+mr54hHNt3EEafki2 +Uln8xvck277ou80G1mnbzvCn8kURsSt9cRbnsJRFTezjJILBq0CA/lum2eHs8m6N +FLFn5/+JlUIfuUS5syOFGQe8WarxLFnujVFUDNUqNBL4J/eHmc9F/49fRzclUoEp +1jW8Vn4rPDWzJypZX1Mz2pu+3ocIRV2A4WrQ7tw5eQ3GGlIcARK5NVeXEP1WbQR1 +XLS+rHehznKzG2fz/0H1GO7xIPq9DmCiiqPjwcmGVJoQNA9WdC98VJoRW51eCiov +EUCqsQ7+IOLq7S+pvLcfaGwFO3RPsQn+7W6KqnzV9dpTm3nx1ISrs8xW1gNxbkrS +L/eNiAuHkT9g94SVYtNqOgzv46h57Sxoq5BPT/mk+aGIUbr5yA/LEviZuNUm43Ml +yTL4Dw9XWrT/HSxHa087d5QiTzyn+um0q/8czCS0fRWbrvmyheeKRQOi3QATRdNx +DAwRwf/S6pnhKHCRDKkWxBtTBx1fUetBm7hz+UXvubgs4zsmjpy7s0k0JTe6b81i +wPfDBP3OnwIDAQABo0UwQzAdBgNVHQ4EFgQUotNgQPDQfySzbf7EEePXfkSr04Ew +DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJKoZIhvcNAQEL +BQADggIBACu8V/y/fB+R+XHuhG9kmYRCZrAjlBCRixQxFEuawHuMlnbc7ESFFcEL +hebpQr4Dlqokt0Tlakirj6z9amCnJ4wW3K8g1/DPb5PtNfdz11H3J1GOajad9K/R +3dAZSmYBCK6vqeb8qbPgwdOAC1dobETe9EF6F5kKuuKmyZwwhZs2ocBfFLJysxli +e8ifsA3yOVRH1m8a7bZ1nN6CdIsHbfPOIp7eMBiJFD17uXZXRPQHnwpI0jGFlc4H +NGuHB3s8xyRikYCLbQLcY+eqnvI2To33WSOVfsRXUGOVYkvFbhEq++iz8z3Z0zw1 +rNjLjK006oaeM7XGpAOJE4Z328LngvUXXwYxfKjan2khuO+hAsdRHosuszyr2/p3 +WSeAPadkyPN603ni8YO4KiHq2YvYzJ3O5HLUOzDeAzOZpQkz9fJ7EiqHWxJxn2G9 +96P2T6aDqqjbVkrM7RqIOOAANyCbAiHdKHBXDBEPTCfM3GYZDdvktFNkhAA2UtsE +hBBSOt/V+OEKGtcS9eHoKrlKEui2ZQo8MSmwKCiOewOa0JSyAIqQjf6wglNvF6YV +D38mL+BmZqyk5x98ymOSjTeMbiQ4qeBPDZxKnynJGhbRQgVogJ5RDhZN+0dEPzw1 +hNCdd9Ybe/KTCozr5BdFRvGzGvXLdcX++o+2M9pNFAN6Og4pjas9 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFlDCCBRugAwIBAgIBATAKBggqhkjOPQQDAzB+MRIwEAYDVQQDDAllUGFzc0NT +Q0ExMTAvBgNVBAoMKFNVUEVSSU5URU5ERU5DSUEgTkFDSU9OQUwgREUgTUlHUkFD +SU9ORVMxKDAmBgNVBAsMH0dFUkVOQ0lBIERFIFJFR0lTVFJPIE1JR1JBVE9SSU8x +CzAJBgNVBAYTAlBFMB4XDTE2MDIxNzAwMDAwMFoXDTMxMDUxNzAwMDAwMFowfjES +MBAGA1UEAwwJZVBhc3NDU0NBMTEwLwYDVQQKDChTVVBFUklOVEVOREVOQ0lBIE5B +Q0lPTkFMIERFIE1JR1JBQ0lPTkVTMSgwJgYDVQQLDB9HRVJFTkNJQSBERSBSRUdJ +U1RSTyBNSUdSQVRPUklPMQswCQYDVQQGEwJQRTCCAbUwggFNBgcqhkjOPQIBMIIB +QAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3 +ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxOR +Ze+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKm +LogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+ +8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+ +7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUv +cQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABIJ95cuduUbRZXYF +Oh/pdCpmz3rbEw33tTNy3ckMnHDWt9unsDIWIHtKMEvLmjqaWVgRellAXHOOzwnB +47n7wxAjYdzzDymXDKvAMVNcloWKNrKEIoOp8Dij2Hmq/m74bKOCAiowggImMIGq +BgNVHSMEgaIwgZ+AFPSqJOWsyzucDxdOkT3kP95smnvYoYGDpIGAMH4xEjAQBgNV +BAMMCWVQYXNzQ1NDQTExMC8GA1UECgwoU1VQRVJJTlRFTkRFTkNJQSBOQUNJT05B +TCBERSBNSUdSQUNJT05FUzEoMCYGA1UECwwfR0VSRU5DSUEgREUgUkVHSVNUUk8g +TUlHUkFUT1JJTzELMAkGA1UEBhMCUEWCAQEwHQYDVR0OBBYEFPSqJOWsyzucDxdO +kT3kP95smnvYMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsG +A1UdEAQkMCKADzIwMTYwMjE3MDAwMDAwWoEPMjAyMTAyMTcwMDAwMDBaMGEGA1Ud +EQRaMFiGKGh0dHBzOi8vbWlncmFjaW9uZXMuZ29iLnBlL3Bhc2Fwb3J0ZS9wa2mB +GmljYW9wa2lAbWlncmFjaW9uZXMuZ29iLnBlpBAwDjEMMAoGA1UEBwwDUEVSMGEG +A1UdEgRaMFiGKGh0dHBzOi8vbWlncmFjaW9uZXMuZ29iLnBlL3Bhc2Fwb3J0ZS9w +a2mBGmljYW9wa2lAbWlncmFjaW9uZXMuZ29iLnBlpBAwDjEMMAoGA1UEBwwDUEVS +MEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vbWlncmFjaW9uZXMuZ29iLnBlL3Bh +c2Fwb3J0ZS9wa2kvY3JsLmNybDAKBggqhkjOPQQDAwNnADBkAjBNhJLs3prIcyl6 +Ir8kKpUknTQQxuX6WIRue1NgQQfoiP1Jiso4qgItzS9CY+BhlMwCMB9C+4p8C8Nt +jhX30uIkHaUj0tSgU/WuWG0nSLh/8DsiLePo8Tp7q/RF90+2Cj+Sag== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmjCCA86gAwIBAgIETydbzzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwgaAxCzAJBgNV +BAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTELMAkG +A1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdpYW4g +S2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENvdW50 +cnkgU2lnbmVyMB4XDTEyMDEzMTAyNDE0MVoXDTIyMDEzMTAzMTE0MVowgaAxCzAJ +BgNVBAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTEL +MAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdp +YW4gS2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENv +dW50cnkgU2lnbmVyMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsmCW +X0c6LqdU9K8fM2t5HPzhlR/1SoHffSPCUlcfpefSfpQyMFi2XKuZrYAVFGnkBQ05 +iO4gYOsYxmYxFQA3Pp5tX5tFK34UNeJDa9lpc1EME89WWLtxwE2nleaCTo5hrtpZ +8JpN71Ib11799xkhVBbI78HIVkxQsMmDAPR97HPp/0bgYfHMJOUbYh4LnYdztI/s +sQzvmP1aw/NvTlkMPoH3Qs4sMbrSUi5sNy2xRIdT8lsBdwJCwNwgKRuRfqTsl3I5 +DCF3lyfhmUzPYeq/GlZwzQgYsAyKmqi45Q4npqFQsWa8XhoyutN044Dd3Z2HDzjk +al2xD6h8OIhB8DBJORPPcIHrbDItfX36mnGAePziysB8Osy0FMiRZI6q/5l7gXo+ +abwCaGDa241rkQ0ZlrgKRwbR4kgOmyYVg+Pr3iRPzV/uZy5lD011d+/NG6qoYaEY +mimDcIHnDToK+dYthlc9WhxpN6Ho4Lq0XROvPoqAnKmiDw3aYcKGmgZABZlfAgMB +AAGjcjBwMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1Ud +EAQkMCKADzIwMTIwMTMxMDI0MTQxWoEPMjAxNTAxMzEwMDExNDFaMB0GA1UdDgQW +BBS2NPNSni7V7Xdzeahb5kpdreD1nDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBAAt7 +soo2p/8tG7VWwaFinxm+gUTkBtu5ZhJzGOlxOSwHjt6xwrKkilAyb17/Y9CpSach +XNieFUvVGqrEXaHFdSjjttdRfpuYmf2t8agY2kyNZ0QhaPYsYZbW+hu01Po0bQLK +DXCHGNttQRCx01aMdpklF79EUr5+ISNdntv7TreoRQp+20/lXaW8dGqegnpbszZ1 +jHjuk2O/5+PfGH9fb5vFxNeT922Veb58IGzXDvSOq/21nylIjSk+JKIeQXjxeF/2 +xqZDKcdZLlck0ueiDIVFiBkLnL3PExHPgnCVRLTyovVij1dVydbvp3zbpDV7ZX4C +aenM5GijYPcC26BhSucayId2pScz4nAUy/twgqUVH7tjGHKR4vZp8vy+1OZuWi/w +T6mHDw/O/XAlqnMHgKR2zOS+FDB8cipjbi5Kfqm4VtLxLl9Akgnsn+fFnWXpygqx +vz1GqP8kMIHJT7TWZtWGu4LR8uDhA/VF6w7OikQ4z8avtm5kCZwOIeNNF2nJcA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmjCCA86gAwIBAgIETyfFjTBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwgaAxCzAJBgNV +BAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTELMAkG +A1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdpYW4g +S2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENvdW50 +cnkgU2lnbmVyMB4XDTE0MTAxNDAzMzAzMloXDTI0MTAxNDA0MDAzMlowgaAxCzAJ +BgNVBAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTEL +MAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdp +YW4gS2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENv +dW50cnkgU2lnbmVyMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyjTj +0smBAi13CocOD5rY7HjvaUT7YFGHdnpInezRas0h0wy/5OLr0/Dt3ik9RAmdmdn9 +9gFtla5xbX5uIzJ6aGTFE9C0s3ajfkiJu5YI+K9y3MJbelmCgyCHHM6LsIAQkgvp +/CNn4dOQxcsLlOGU0zWNWkJQFUKzQN+AZ1xCnQbMzrUw+pWNPV5O+VGomzhobRP0 +n5nQT7YhZgEH+UFT1nQz+1FZcydyQU+XbBt6sVu/V6Ty1TLlE5GdHJbZPT7iyIHY +MgqqmWbbmt4FQpSmSjB5aPz9uLC/EhrkDQygrnPQ0fQ5ld3FfmYn5iFTystw4SKg +6JYJOYl9ntml0NmTwsjfRQWHm65GJAZnySVcGlwBtkuqmqHlmdLwabNm+zkh+y+B +M9sn0hbnt7RjRAf7P0ujCQ0zaJ3e3jKePpZlggGqxiYO6IMda4qKfq8tFRL0uMO7 +xHUwP4N0XdS8xfpzW+PjumvuFCWlLD4FwEIdbV29s9N7l6+zdoxlErD65TaFAgMB +AAGjcjBwMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1Ud +EAQkMCKADzIwMTQxMDE0MDMzMDMyWoEPMjAxNzEwMTQwMTAwMzJaMB0GA1UdDgQW +BBSwUH4L9jMGYpP3Sbk5LEssSjjS/jBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBAGXN +mF36lTCZeo3uqN7AZFc/czK5w+F/rYTFh7FJ/UCXgAT22+IiWZA2LKkf5qLJdc7H +U1WujA+blmeckWCpsWEVhooHHYi1q+ULEq8sKa9Hyh7ApEVfeZIaqZxAHjfYLucz +fzh8p6JWyub+Rt5sf+h24tS9eidhi8EuG+eoUKadbiZSRguf5jw77OUuK5A54hUd +kkseDUGyqjTmSY+bInsA7jrjs3sAR6+ZZaF5oY/7/5z6X9BJ2H3RQ6MGJG7AOGms +XPnIG4vXlf4ZzquyR+aONZnbLfOxX+VICrdi+Mavq1juTkvLMp38VLqCII4K1FGs +9+D8FIeW9mpvTu08z2WGoAfEMZ41+Hzca+KujA3zUcNZ7/poPofPq9QmWFGKWJJx +1dX9mKKtJ9IhQ7LeYBoCjnZCuRj6hHl8pX2XlwvJqzVzGE7QqVgfx7K3ScUzlSht +CgOrPcXHPRkweS9O9xsXf+HlQIr3bsq9u+3xkrt9RgR1H0mWO6wJr53ii1DFHg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmjCCA86gAwIBAgIETygy/jBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwgaAxCzAJBgNV +BAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTELMAkG +A1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdpYW4g +S2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENvdW50 +cnkgU2lnbmVyMB4XDTE3MDcyNzAyMDkzMloXDTI3MDcyNzAyMzkzMlowgaAxCzAJ +BgNVBAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTEL +MAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdp +YW4gS2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENv +dW50cnkgU2lnbmVyMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA5V2T +yCVJbCZF12n6GI+bir1sfHvSUhHJIL6+ArbFaUuMd51dD/Iq2B/Y/pXtW4Yh4kkQ +0kqNixrbz2l9VwkVM4QhZ5qTYaHKifAypyrnCTfeNa4PhgY1qYxpera5eYesaAVq +ps8sFZcE5Y8GbnrPsSF7gvd6kZIhHIvn2p5Zq7wDB+3Oc/1c0stAXN/FMV0vyrTc +Bo85rvg/S3M8mA53ceERzlDJ1/W2cpkZbxu/nFvfKlOfe4oN8fSuUvpqNOur5lQ1 +3ITGCPqWq5C8AAWI1vUNOwUuHBUX0rIErQN5Vk/nRszziq7HBhd03hvqQ1ymuoom +0cGxq/QG15jjkh5lip8t7oW3J/3dyDLakHOCZUGZG+yw1xj47XqTRStRzOZQEpR6 +MvHQDNSVgkCUzxHQYwH4V/P3Mv570f95jBNSaZEDwGeCfgrOYUNzLdqXWi31Ijap +Ut6aRLpvJQZHXXhXc9fE0QuQNQuYh8Pl3WgGQyz5CZUARrVOeaJeQ1m9PPT9AgMB +AAGjcjBwMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1Ud +EAQkMCKADzIwMTcwNzI3MDIwOTMyWoEPMjAyMDA3MjYxNjM5MzJaMB0GA1UdDgQW +BBRA/a+cAXA4oPNk6Z8mSD5XYTwVczBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBAE7a +SxNT1a3bIT92kkPwAIowdZQDgBvRbNKu7HIWVi4p7R0yZ1lyo2O7Yud3GCSRSNbr +gsqbCIVRS7fO18Q2+BT3QduOgOyfwkWddoWesvKohF+BxbZ//XocKBY/crWMQjWc +ZBNYzL3MRJF8CdV7ZSjSj7H/Zabes7366EW786wbJDq5KLvrOypzyAwNqBvRIrXP +BCRDMqqFMcLRGOeBps6TE55RdTl/hE/zpgix9Bkl+kc8MGqUlMfd3ckbWwEvR/jW +vcMKfADYFsvNJDthF8d5rlI5vikIQS2k9adtyX0Y771/fjnG/X7SMTDt0gMYgZVX +yOsQLORq8ZSPamsnB8dii5ne1I2s8Apzo8eRc84U9ZtYX0TMQSZxYgTPjDgc/X+2 +Fr/WJYM+wRUppfGgWWPd95DX10V4TT7uiExEtjrKynDoEJDsNBawZYI2V3cnERox +SpQI1gZcBskbtXGE4VI0YnQ4a1LXxUQfl9EdCRsozS/hGB/8HAiTJeIddl19Cg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmzCCA4OgAwIBAgIJAKQencwOYdWeMA0GCSqGSIb3DQEBBQUAMEMxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0JBSDEYMBYGA1UEAwwPQkFI +Q0EtSFVOR0FSWSAyMB4XDTE0MDQxMDA5NTk1NloXDTI3MDcxMDA5NTk1NlowQzEL +MAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQkFIMRgwFgYDVQQD +DA9CQUhDQS1IVU5HQVJZIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQC4R2xf+M1CPk414Wy0OqwrtiTJi9NgHalLcLrS5TGTz8O5shTdglc+6uN3oXag +MsGTyblqe8DNdvlb8HQUHypuuJtlC3WjoJBVJkkA0kBfHST/E+F+quQD2zJ9OOIG +E7xf6+wWplHh9exJEghyy489k8vqolWfmGF9Z0nZZExUKp+KX1Qx5FCJucknhjx+ +r/h6CJgeodSl19Br9cikA5863h4my4+2CfXzMk26Yx6WIhrLqJw4geCGmkPaScpr +fY1t6v+5IxuKhzX+n0U/d5SwgEus5yqXT3NIP7QEFkXQ9GmF0gdFVjevk6xhabO/ +kO/a0RAhtXeYooUb7VmCT/jHO1ouuw3RcYzx44JsqZ2VWXwV5u2LMFS4SNx774sb +o8ZkAtDWLqOhsua33XMKFEvM8IQAAVe3ZJQVz7H1fVwSDXBekciJeG+/2ohRNmKq +iDlDrxRDLQ7UggP3ZdavnGCCNZHUSO2aLz1mwebrsJqUGuq3+5rtdIfWeaLOFfFN +Fa8GpRHj5uqza106Fk+QW02h0X17XX/WuucO5Y3uaFzWKQa0cTNvcIuJX00Xw6QI +FMXqBXwZQ7IpqQEZ1M5y6ZTbE2JzNrGyglkcOuxWv/fJWear3XdhI5Syr8WAYPXO +9m3bFBebDGrfda/dUzOXm7hiAMxuaWi68VwFDsDkuSL1lQIDAQABo4GRMIGOMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFF5X7VOeSw/YtuHsjvchIeO/immYMB8G +A1UdIwQYMBaAFF5X7VOeSw/YtuHsjvchIeO/immYMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDE0MDQxMDA5MDAwMFqBDzIwMTcwNDEwMDkwMDAwWjANBgkq +hkiG9w0BAQUFAAOCAgEAsO71gO8Wn/ILnO13/GCKWUgIBNMf6MCkqrDdwc6spnl8 +Kzn+qQEqbtjXzPrgZod6jssfuDPUkThvVYZThi5fUJ696oI2lsqczwke9iQhxP7u +f8OzGslmaDyfuXPv2Je/et5pqKPmRVHPzlXo0Nj63ZEriivq9ZOW7zXl76QGMf7r +75X6eRXgxa1fbtapiuiwp+PdjMtSRY/plwyxvcMgdzUTapQzbJEFfrG94YHdbxXe +KNO76C0V2DcH+uZVlZTBkhNbvK1+nEhhtUQvW54UAaqWst75A71CiAuQlr2MKBqM +tYMss/4YMRYlSbs3DvMX9Nl9ro2VSAfGJ0VZkv7gU5q8uwTrrC+CDAWxFq9GLgBu +9p/TXfR41wq0Ye+WLGm/0fzUE1sEBjNP2taToeKmscNGURx8W9c/ffpXLJKDaFF8 +fAugGYVLbYe4Ltw2rzL3HbAGuG1QCNVPW4k5rongv5hMBDJUV4vuxRe+0r/D2ziB +wajutDTlrev3WlJRmKQ0/gs+isw2jwUYHgG9Pm1emMW/O6BJ95c4sqhb7s9nYOs9 +2yfI2gU51K+NBz/tKXNqctD2urO96vMtlOJnLAjtszC7NHD+I5zxBQ92CViGeJvJ +IEY4XSJxHZJtQvy9miPkPNCsoXquF40upJId505CKdUjna3ZeoTglcVxQurKm1Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnTCCA4WgAwIBAgISESJIJ+Wl5YaetgpzQSpdyGWAMA0GCSqGSIb3DQEBCwUA +MD4xCzAJBgNVBAYTAktTMQswCQYDVQQKEwJHVjEMMAoGA1UECxMDTUlBMRQwEgYD +VQQDEwtDU0NBLUtPU09WTzAeFw0xMTEwMzAwMDAwMDBaFw0yNzAxMzAwMTAwMDBa +MD4xCzAJBgNVBAYTAktTMQswCQYDVQQKEwJHVjEMMAoGA1UECxMDTUlBMRQwEgYD +VQQDEwtDU0NBLUtPU09WTzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALaIgwC8QbyUlLE5u30GhXUPfGYdLvETCgnbqeMrruN0Ua0QaSJAP+y414Q82ea3 +tNM78/LTfm6uiAvtugM3Xe8/IS/rb6BSA/Y0CJ7/RS2xVWTQHMtOHs6TGh+Uu+GC +3ZHNwrKkX2EY8O9PuuLuyOxyV/keb7oQBpsH9p6dmLbOy5A/fPMIwGFExPuleVIF +plytuPU4WBAXnvkJly/BSoLOkqdlNeJDQ4v2vHJPdiRE2yDmrD5zSxbXaaUliYHY +AU4wmmEYH9BWpr1IulMwafPtmGEa9kEFSZUqVU7kHDYsHeobiTksXKHf8b1m8G1c +jPO/QckKyOnCg+ED6d4BL8pQWhkuqNQgDR10QiDf/HRdksX7LUrncXYtxgmrJgsV +REJMB8TsXF6DYfi7KeR5O/qMpPZfNkkHXPFtYxuzSWI9whExtMHjebtMSa9IIhZM +XRbScJaehuZSxeiwEhvo9EB+F4LFDDM9cyZX2Jy/gWKzPKXSlpQwYltOGzMyymLV +2ZVGusct5n7dvmfrXz83akAFibx9aaBiKyiM49LyrtzER9eN/hV1OFx9OkWYfWvF +Ke0oxyKJm33bMuRhkyPsmi51BKnQ5iw6zEtBTbdJvumBnExWu2aWq64WGzrzhbgw +FSXbLpA+PLULyJfMYO/QdU7Ivx29BhihGg8T21UMWfNFAgMBAAGjgZQwgZEwDgYD +VR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTExMDMwMDAwMDAwWoEPMjAxNjEw +MzAwMTAwMDBaMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFHEZFR5UbErH +bjdY2HX8FQG6faqQMB8GA1UdIwQYMBaAFHEZFR5UbErHbjdY2HX8FQG6faqQMA0G +CSqGSIb3DQEBCwUAA4ICAQBy0KuTlffh45niVS2Jm+mTfGZTtN73IyY7pljg3uia +zEiicOeYTxU4e+QpL3cUMQgUPFsKZQF94mw734xL+8bSg/HwvTYa7m8GqIwDgRRy +bYcCw7H1j4YU+cV25v2/psZJF1s9LZ7sNRNFfz6dUGkiVcVN558fXc09Xls6Fh9e +z96t0XsF5Ha8rw1YWIiTMc+oKkkBEg1K2bTZFlugJQ1Cx+lgS9PeidQm2yJp3Njv +Wo3PqxOTY/8T8dYKojHMdbOLb8uRxvrdLSIf10gKmDZ3xD2Pk7mpvaQkikhl7QEN +WqHgMPQpWblbO2zwYFUTvz09TZcheIaIN3E/dxGe3Q+Eva1lnDxG7Rgunw0fjxHZ +yiXL5tPnan1Y0qzv2VvJPK+Fb/x++HmgjUoMsxzbAC0EuX3r+ZQGeAU44qnzYP6H +6MQ1t5iV2Ppkx3xMXsn6ODkUyYr6a2oKv9zoOnk1oKpluJu3NYHxeEc1E4OIYcKG +E9LVH7a/HftAlHTeQLivMEgzb79Fz2tUH7Ddd2JW3LGGM2Hdmw+QGUcbzHHaI5VJ +70LJw/9EAl+Kd518hm3RY6sUAKKUBEE2dD8T+6gmE3UAgQjZfstvPloIoxaT4E4S +YZlHapFALE2YntJCg+nuyaFX4vYtgelLKffqSniOuiCMWPJROn8xEu7mP096k355 +DA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIRAKZBIObrA/+HqjKJJqhq99gwDQYJKoZIhvcNAQEFBQAw +QTELMAkGA1UEBhMCSFUxDDAKBgNVBAoTA0dPVjEMMAoGA1UECxMDQkFIMRYwFAYD +VQQDEw1CQUhDQS1IVU5HQVJZMB4XDTExMDUxMDExNTEyMVoXDTI0MDgxMDExNTEy +MVowQTELMAkGA1UEBhMCSFUxDDAKBgNVBAoTA0dPVjEMMAoGA1UECxMDQkFIMRYw +FAYDVQQDEw1CQUhDQS1IVU5HQVJZMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAlVPWhWLc29lve4gQB6BWfP7C/lH/Vrnl/PKI7T5cccYFwfu/JfwDMEZi +ufbbSPE5bZ27b5KkYdV/Ji+Hdt1xvOigAOTBeMk0XSREdSuVGHj0kXBPwj2Pk3i2 +UORmrE9CrQyEWcglmAB0icXW7+o0tqAL33MPJuVNpRVfhCyWMxBg8DKQbGCUU8w8 +cy9xVBcLbxxmn1PJOj84yFcex/U/F1AkJb8ICabHpvIzgbISNR7RhGM3fVAP1lGQ +zk88RYIp+2nOOXlkoKhx0THkuaLo4P4KWkajJxybgtPYhvOBqnh4O38tGH1O83ot +X2w4HENgRjQBXsvMdlOLrnUHuQtd0e3gI6yct7QzjEdWN/8eLYgq5j1P0zHJkzLJ +FuG8qG+RKIh+H6qY9OyFr+Z9RTyvjxIX3n1hVrZwd3teAn/VIKVenHi0CSNjKvms +/B29XQJQfmSfdAIw5sHslpeRwje54WPvpCHafMkle61wBv2TkMxPmxlnr6/iuY5e +i4ujwNTUgDNTtXAeY3mg65fHrjBwlLfzLhp2mVIZsByG7Lw1aEtQLSowXWWAugNi +e9+3g5U0R7hM1rg8553k8qYEKrI1XH9R0br7G2gJSBen42sT8z3ADT20KHtUgW4Y +IPZ5Z4wXIqsuIXRxZ3RLQabFomnm9bgWpkLdTlptgO3iBUQy8WsCAwEAAaOBlDCB +kTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAi +gA8yMDExMDUxMDExMzEwMFqBDzIwMTQwNTEwMTEzMTAwWjAfBgNVHSMEGDAWgBRp +Hns1JMpD+RAGKsyuR3FeWUFstzAdBgNVHQ4EFgQUaR57NSTKQ/kQBirMrkdxXllB +bLcwDQYJKoZIhvcNAQEFBQADggIBACzTDstwWvjrh4nTffsOTwMgwmlXZtiQ1mIf +2uzaJQ8j/Vz0rrUsevyI3l2LY9PucSQeg5vPHTBBuAUO6/y5BBcfDC92vFMk47xJ +93hsSxM9031Em8u3PxgWlKQbJlEZr1sMKSKTEKFZDG8dPxOo/LQysEBgmhql2YCM +L7ub6cN8tOr14pSD4nSA4NaoktuiGjLwc/4msCejqAv5TM7rP3CBLd4jRrKxJJps +kUYwEAGzARwD/sJZiXr/ZFzMOlzyrRpmNBBA1Hn4tc76w+XgJ5Qc/8D+rgzRLHfE +QHu7QTvZSY6TaUxhJ48bnX0hiPmS/WUVuxsfvU+cLP4qmG+QxabCJ9u3jfyEphtb +US4AYdS767LMrckEnHTzNYtl9Q6lEvRcaQ8xRqj02JybULtWTkBxQeLeTYNtDjIP +rffE4ZDJdeiOUe1Y8nSeqgvNsXdVkDLtQ9NgbQwl3j5GUDZTTTQRgfsrTjLZzouP +4z7XKg49pXRI0aDQ2OXxquomxQU5ojEeSZu0h60AUycEYMzOIgntLvAw8N6fXvWp +CkeePkSAx7wLL3JZzgI8E746ydt0Sok2+OBbHw8Ja2ukRTN69u3OeDp1Ewf73bhM ++D12Y3YsUP5w1qwv4kKOh1IafZMm6QqIaycVHXLGDBe0OvJBNE5c+0BXBa/5T+5w +4G9Pby2L +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIMZmVYtVM75TXjxMkKMA0GCSqGSIb3DQEBCwUAMEUxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0NSTzEaMBgGA1UEAwwR +Q1NDQS1IVU5HQVJZIDIwMTcwHhcNMTcwNjEzMTIwMDAwWhcNMzAwOTEzMTIwMDAw +WjBFMQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xGjAY +BgNVBAMMEUNTQ0EtSFVOR0FSWSAyMDE3MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAjnq7oGg/BM3kajVMTPZPbzTul4S07fxVhggfHD6vYllrNBXvRp8E +25aLVX3Jc1TPAX/nyH+6g3kleFvUdpjp5ALSB2tkpc/V5lhs0g5ydLC2vQRq5xif +76usSaT7ZYYBLQ4gdwLeo+n+KZW/oZ+O9l7doXNXOdDrEXT7A1+GQqde6CZC1hXY +CJVLGjw96pkO69KcJwitc8qLHrCCjK2ufAMNmSrlyKTiyPlwNw/Sw1da75IEedXn +Z16C5m4KZnKEjt8uSgTvue7hfDUo9VJ58LdKgLKnOXLLtsPxiTsyCYF7KF/IHA5F +jUvoWNzdprWLlg25WoPAZv/WWl1I7knSzFcjgahtxo5NTbjMiG5aaqwyMWwJqs5K +IyF0lkzT35rhhUU4RoBuGssSY8xfVeZnUzJG2aG40YdHeogIjD995adfFSqkRW8e +O+b6ahKougAxBWRRGVcZGbNs44x0mqs/dMJCAY3yisXIYVQHwLNZrF7IXoYj103U +sJm7jhiTSEvhRhLDg/VWJ+0Uas3S0hEz37pV0BL8/GkMIq9gMY83hBJFlgzXBijN +4IwebqqUupYQbUzTji5MzzAqUWZ5V2gXeNnPLiHSDf3A6JyBBL2MKESyPWjo2XzB +Yr6s0k6kc/41ZXvG1nyDF1j/1dCTq47PDPOmG6f/Pq+8MGc3/GIqJSECAwEAAaOB +lDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUE7qripbOn0IuYAWMJAetc0qBRBEwHwYDVR0jBBgwFoAUE7qripbOn0IuYAWM +JAetc0qBRBEwKwYDVR0QBCQwIoAPMjAxNzA2MTMxMjAwMDBagQ8yMDIwMDYxMzEy +MDAwMFowDQYJKoZIhvcNAQELBQADggIBAC4vC+9txlBjNoXqDxRmilg/o0OJzybE +yaO377DnXQ8jKbk2Sj43U/0LRhURQoMyUaWcX4FYQJqfi3Yu9+ah/NGEw37ymlJo +boJ8mxbIZZeVoNYosAw3WKtYvypQG0pWlCAAeGeRZDuN9nOxs6pM9CQzbvHHhAaV +qk6oYq4oIYs03aBMLlk/0r5n7JJMBS85QLdzBePybykLDwo3eFyHNWrGQwXudCJN +hZDM6SzH2wgVHI0uyP28iHqqcXhdX74k4XacUAYxarSvOxzsYqsLs8MnPVez5whD +OAhiigIWxbviUJcZCtcbPBbE1GpY5TC+Wd/0h52h1xAPimh6NZgUtYZT7bVvqD8A +lx4PvQHXh54mFBLMeCCnkpArVeAwY7ZmbC84kIysr532F0/42EjllcCLHLkoErM4 +gvUYsHz+p6H3FVjH8DHonzb34hkwZ/PGwkRPcoYNzh+h4Hoo9yurg5M7NP1gzAr9 +LM2XaXKfmxCBCulIwQrts6vjEroA7dQRDPySWf3EzTOmGCPKXiAWSYpScRj8gHO8 +7aJUKg4TEyb4D+GAHhjCZh7gkRBHA4WQEQIWmjtdpG6YDcFCgKntxat2scaOFAED +gn0ZBy0iAr/fq170hChpoUeHXyuQ1meBPb+6WUYw4Fg5UMT85K9Hay1RjNEKkY0n +QioDLz97d23a +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpjCCA46gAwIBAgINAKCtbgwBWk7Nj6yXCjANBgkqhkiG9w0BAQsFADBFMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xGjAYBgNVBAMM +EUNTQ0EtSFVOR0FSWSAyMDIwMB4XDTIwMDMyNDEwMzAwMFoXDTMzMDYyNDEwMzAw +MFowRTELMAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQ1JPMRow +GAYDVQQDDBFDU0NBLUhVTkdBUlkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALcX6QmvDwHV8SACYE/c3LFTpE+sSfy7J6mDIAPbKRTklA17SHPk +O/ixGilYmsEArSDs4oagS8evQYrSl2Ok4LxSprla84mEgrN6SyAvNSsrV0F+wPaW +nekBY/FwOKoLj0DvvrR+Cqvkp75TDQ6N1SyyS32LhwBEqXQyXDE+ufoSwvm1GbFt +ctXyClc5AhI1vWv7aUUY0M1c2sujB4UwNF9QRk/oax9tF/474lIcfjHoVfqK8W7j +yn1zFFJHc26AxFWKEJ7GWiKJ477A0VFLasukXQL7pFgNopWznz075BUPvGrCoBNp +Jq17kGDSZu0PvSZPGrGfLKfzoc1iaistBvR+nd/oFEVQpxP3jV4teLHsRz2pw5Wh +v/YwAyS1P6dHR/N1jCLfWyOjlSZIxcZinkMplspTsAEnS8y1vZqrPURz/hAfdLLW ++erjR1AD8K3K7V7WMfK4QvmVHgD3zjs+JcZo1aD60LYNnqy4CWRc8fiiMW9uDzWX +FHtIJHfHAryMJilvgS6Gl7xiquTm/euebM5GU2cgs6572rJTsZhWzH9KXUaImjOi +XVCUaikWKVpGSkkQG8sEGNOBYubozHA3PfAWuPS3s5dZE2sBwdArZdbbeSq2Amta +wInu3SKEvK9lVz9SEuSh3Op3bdoa4BZx7eXU7GApSe5IsflVQXGMXaiLAgMBAAGj +gZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFIn1Vohm7xEUeCV2YIMQQfiDVDHiMB8GA1UdIwQYMBaAFIn1Vohm7xEUeCV2 +YIMQQfiDVDHiMCsGA1UdEAQkMCKADzIwMjAwMzI0MTAzMDAwWoEPMjAyMzAzMjQx +MDMwMDBaMA0GCSqGSIb3DQEBCwUAA4ICAQCbVaD2vxpjqha+xvW3G8QYVbSttU2u +Ygggch84AhvyXrLcETZc033bw4PDz9Ibohrk3OHLIUbR0wn7iDZJOtIARry2TPiG +bLVduzKqOOPQh8JoCqHDjmmgKFY3mleLLxJwn2Rg82aY8gMbCc26HgcznrsNyHS0 +uoo2E8OJuuWWDn8Yyf5GO+UJ8RyXD+ngZLA72xBXsFaiCoiO6yeJ39YkADUiKcca +y3GQhs+r8hN37mjPh1zUKeOY1ZxgQ8y5gWUYYk8L15S3uJtZ0AUdsCDMHMAPQCxw +EReIsakOp5AbDrXKKjhD3LFOtaHHwxi41h54/ImjNdg2AF9WDU44p7phAwiTG+5T +K0dC74KXipKtKcnd8VlWLhTBbAEFnzxU6ZAD27FvWjon83T2Y1+i4l1CP7rD14Zx +Wu2tIm6tnBn8InWm9zpqUaU/4lqsuxL6N+ELqKazJYe6fyRtjXcJc5ys2yRAAN7J +CUkQHLa1h/msOD0SnnMame511U8HI8gRZ6/2dSPYYdFCOu9cZkdFemK1bd6phw1K +is8ktc89tDTNdju0Hlqn3EiE3/RPu8n/ItIhoFSEG01msQ2mA4gv5/7lYY+6JbD3 +Ykif+46ggZoRC5xfmiCkMjD12MSqlImQOi2UMpwP9DZ0oZ5TnjzU44hJK2CuaAPU +pF+pmKXc/IlkNQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQA0Cg2rLTQ7BN9V08geDU4jANBgkqhkiG9w0BAQsFADBG +MQ0wCwYDVQQLEwRTTVNUMQwwCgYDVQQKEwNHT1YxCzAJBgNVBAYTAlRNMRowGAYD +VQQDExFDU0NBLVR1cmttZW5pc3RhbjAeFw0wODA2MTcwOTMzNDRaFw0yODA2MTcw +OTQxMTNaMEYxDTALBgNVBAsTBFNNU1QxDDAKBgNVBAoTA0dPVjELMAkGA1UEBhMC +VE0xGjAYBgNVBAMTEUNTQ0EtVHVya21lbmlzdGFuMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAxkSp3KCeD+95x+spy7hojslH5tQV/mc0Wn0+tRFHwkOu +AUViL5nwk7/+u0eLCjgNhsRJ6fojL1D1hRBfQvRtwCSGrA0+JXpCZW2ohkbaZd5l +dlQhgDzPo0YrlbmeH+CDgYVTZp9tMcHcmCYY0tAw1MSNsc2KwT3MU0rQOipUKJBa +3ZjfcvZLFguHhKZgokhRC53xrY4MEmDSO4tThKl9rrZpw+5oVaR5Jd0z9OjjOrNX +f8bXQH2jchwwx5w1j3+Cd9PJrWXEh4GdvRUd9O8r3q+skdmbxu59xmGp/GD+RzMK +O19ipsO4j7WnrKJ6heTTI7qvzQCgo1M7vKy4GWoP7rN3Cs4mbNYUDkT61tSitzPt +xwR4Zh9PHMUIKRHIiDXZqo5NzZzzDO3EfyFMjgeuGjjwBpxFYvy/mEn7+zZCaOBX +xaEO71qhR6DbR1KOxFOVEPHOc5GccMH8UIgtFAvKGmi4sU2p+kAL7CmUHpnyqQ8V +3vdTdzhzlVMCnAG+C9/DLSLJf743Kd4X7n/mJrTVSTIHNnZ8LVdgsAq2PHNqCpPH +q+xRLzVO5CDQHJu5Wcjs2FzjP/kDQLs9b7YIT22orbGvO9VtEmrZLEWPeujK2+gb +zO0obRfvENbwm7uVchFJbndyKk3TQTGqmC8eQGs07nnMdm9r4vy2e4CVg0MYem8C +AwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCAQYwEwYJKwYBBAGCNxQCBAYeBABDAEEw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU/e/aCStidpANJOV+MvLXwqLr1Ogw +EgYJKwYBBAGCNxUBBAUCAwEAATAjBgkrBgEEAYI3FQIEFgQUGR/+LDbGszCE/Uy6 +yXwFVxfDrKQwDQYJKoZIhvcNAQELBQADggIBAAvnDtLxh1UO496yxv9KwWkDaCd9 +7/fieZrRTtawBfNqt4cLWU9dPY2L25tbGRpLpztuXe7EakP4v1szDuGvi765r+yM +SCAvZGb1+kWgwBqXrz4wUq2oYKpTqOx46Ah0qvfJmMnie4iUH2OtH2JD5RbMTGUf +c+wlL67lROxEu9ME22znnyLGQbfeMMcFp9lbxBZyl5nXi5UJummu+niW0NscdaoY +nsdxFgK04/3zT6SrzWIT7pGa1Kmi7YRGTb/TWowsk4fQMakciTDhg7K0+lo3Vf2r +TbeBpHdLme89+kIezpjMmYpTTXwEJC70lBYwKlMJWr58weqTtWlFxwAsHg27XVWv +bukQtslzGAv47Hb41rHGx4W4twyi99lnHMnxNBSBCg6q9a4JQMdvlTYAWLh8gija +pVG0L1ef6CwVEHgy08cqYl5rS18SHdHtwj24j9q/iFUh/sQS8CAQnXNtjq+qhJyg +u7bzFwTY2550O0NGOHyjifRQmVw4jycTcy8EehDgdZ8IukfZsp4x+mvv9EERjxhg +6RGPTCHYGptC3D3GC4URGyVra/gJH0cHW5HLBWZrKQFq8XD45drTFHN+PUuFCepx +enf1r6axXAHqNLi07VZ0Rxp8zrIhzNNoiQVljXzEagnShlG4StbMy5zlWXM4oO3i +WXQSnXcoO21RrVqW +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFrDCCA5SgAwIBAgISESKsunl1tfghqXUjWE8cGgiAMA0GCSqGSIb3DQEBCwUA +MF0xCzAJBgNVBAYTAk1FMRMwEQYDVQQKEwpNb250ZW5lZ3JvMR0wGwYDVQQLExRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEaMBgGA1UEAxMRY3NjYS1tb250ZW5lZ3JvLTIw +HhcNMTIxMjI4MDAwMDAwWhcNMjgwMzI4MjM1OTU5WjBdMQswCQYDVQQGEwJNRTET +MBEGA1UEChMKTW9udGVuZWdybzEdMBsGA1UECxMUTWluaXN0cnkgb2YgSW50ZXJp +b3IxGjAYBgNVBAMTEWNzY2EtbW9udGVuZWdyby0yMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEArqHpZqKUwgUgjJDWhzFgQnCO5NQB+lxxw80USBipXG/d +ojgrlVac6HNxxbUODITeA/cyBejcVZa+qBmAL6iZF9sZboebNYci1F9Fx0Z/NyW/ +BKwDuXzs9mHty5fxiYHgzQNoT/uUX2fZHZEncqb3KqeE/bcHs9+g4XREeRj5HgcO +cwNJNILg6EFhQc7rCzz6qDK/mFXNxKDqJHvvtDRUMjfif3PQc6nWV7g7opDtB0qN +R5ZGTcGLa1WiPL7RWKh/Tq9mLothjq2P8jn9n/RrkgTkFIdxC1CMp+7BDvGdvw0T +tLXSBoqrsLGZCY3SQkBrHrmHpkERE/+hcRMpBZDZp4O8xQogU+z7q6zNgULG/8Pa +IVrdsEVsDouzDXniHYHMGh3T4I/Ff9IMY0qVkrUkntMkKQ5OtJIOjRPUh5SnCu3R +Zrli1PTSZKzjOqFFMKwAlpCoWlpviE/Fkg2Z3DcPg9LKnIzf6oKUHAcvtwxurEx8 +1l6pgk9ssSP3J7KOLgcZ4LJaMOMICyPzah9MJNmAfLEMmLVTMxkou51d1Ef04Iwx +GT4ni2joFaFudcRTe5kTEzOZi0bo7M1qpJvSMZR9MNvvdUeuWurZI1omBH4JsBoX +o1J5g5goRwbANkXD5ihKrOBHkvo8T1Bbe0bY2eTbN8mzcl65hq7pk8SMUtXq9EMC +AwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYD +VR0OBBYEFG1Cf4+CtgKm24r/e4/iG2SaxOdbMB8GA1UdIwQYMBaAFG1Cf4+CtgKm +24r/e4/iG2SaxOdbMA0GCSqGSIb3DQEBCwUAA4ICAQCgFHMA614NO8bquEEAzEnA +/lo/X9aSvXziOzAZMzBEM9Q7lm999OoPU+5zryNVG/17MGBycWu+sYpME2OMaHm4 +T1KpCLeiP2o4H/yI2JS09FbvbCBXpAtXu4C67s3VT/BJOniWvtG5ysmT7SpUEbv8 +mWSmcNWmDBMdyh396b8pBCBG1Wvyw1bRaSDsRBEA1TqHd6B/TVB7ZMjmeAaZVx02 +AEnc7HX1NMiRMEL8sxvXngtYbnN0XKHZzkoTuY2TVu9NlqaJcJ9pibVCoeTal+9p +ujLQC15SU28zEqSeYHWSUFA1EjHzWDUMIpvLrbZcNbuueXoaM0qMd/0xZltFt/5C +lU3J8in36GaBp8SAMuti73yiOMTmqWvWtCS3/SCSWyvhjsW+lGWuS+Nm5y0ecHCH +CvcycE2x/pOCIRk8M3vkpxpZ23jPfEalujNm/lEYlVDywRNUk0aRSvmEvmZ8Lcdz +59QITUowUulfWvbjqZu3fTI4mi8rf09CPj0npf+HCHPx8Yx0jeYJ9XtAAKPwT2B+ +JVxenERiZ9xbXIb8Mw9CaPc9omXLsfCGpPJkkhCwxHU6htaau5gEwU7OVRU1gkhp +7Dr45vlH2zdDt62fSukh/cnJIZbx4KRENScbRiqZJovm9jLOzoysulneQJNlqO5y +MHY4jbAOktvE5VOEKOmWhQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIETVoj6jANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJT +RzEhMB8GA1UECgwYTWluaXN0cnkgb2YgSG9tZSBBZmZhaXJzMR8wHQYDVQQLDBZT +aW5nYXBvcmUgUGFzc3BvcnQgQ0EyMB4XDTExMDIxNTA2Mjc1MFoXDTI2MDgxNTA2 +NTc1MFowUTELMAkGA1UEBhMCU0cxITAfBgNVBAoMGE1pbmlzdHJ5IG9mIEhvbWUg +QWZmYWlyczEfMB0GA1UECwwWU2luZ2Fwb3JlIFBhc3Nwb3J0IENBMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMLLZ9dI1IQXTUnJszOceNoJlYz6UzgF +l3Vcy4btt+IvF8Y87Uoeyu4Eo4ewEeUxEGsudtrDSggJjTW2CmuBEpEqxlf8UHmb +EDBj5Py2XV/hv1hsFAT3QyMLmhUbM6ua6UzbhO2KYAg1WNBkeRx6WHQtjNa95Ws6 +QpW/ooE48vL1e7enM8F+VlycZA4bCtaKn3cuzkYPcljQMzwmiW/yA14u22NE1960 +bSV+qBaHjBE8KQi5WAobT3K1gAtEzMYP5F3n45/0MFUJ9CrfrV+mSvv3YzMd72uh +ehVIfep6egcl5swfjb5r1B+ML8tXDPpM+T69kCUrlePPPiqYy7a/ovvRF329jRsw +Nd8kQm3D4uNwxxzkBT38H3ZfyRro7NjM1mWf4yNrC0faAT/7ripKXM2QpT44WtJm +HtihbAez83vtMfmoMThLqxWYr1agdJMyBiXDdiXdXxXPHMoetMX0zR72Vy5eLw5j +PU7TjwlkP4ZNDoXxnRMqjAF12oPLNo+Z0TQW4g3UXxyYKMCWL4/GYl3+Eu0staU0 +GEVQ8obCbGKy0XF43s0/QCBmFFqDCfs25yZ5J1+7b7vGGX2Wj7cT9DXkC7aWHhtc +9VrY48ScwdbiB12nBkJrN+r5dJxOc8N2Q/XewK7SUGIVF9VFC6xUqa7Etfz6KMU/ +WcmULlTXaDSvAgMBAAGjgZQwgZEwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQI +MAYBAf8CAQAwKwYDVR0QBCQwIoAPMjAxMTAyMTUwNjI3NTBagQ8yMDI2MDgxNTA2 +NTc1MFowHwYDVR0jBBgwFoAUivvl2dj8bNEuFajLH+0gX/wtrDUwHQYDVR0OBBYE +FIr75dnY/GzRLhWoyx/tIF/8Law1MA0GCSqGSIb3DQEBCwUAA4ICAQCWHUROrY6v +bZUx15f/L6noLjbpwnJlozt1FvjqLO08tsuohFJkWkKwD0BwPBxh/FgXetSkf3cv ++2irtLq+qNpeXiDfySdb5N4G1dREroBjfelnlJr26mHJegOw9qOpjrxHYxIyT+jF +23YrliAi2ssxbaqrjU0rLoOQJUYIp8rSvxcjmLRaTYkRJLHcPgYXiLS9a2I38Cf4 +iYmJKGwdlTy49CbQvYhP7cXIARN7DvGJVgE8BFCe5losaeVqJcpZShn1aha5Gy7N +WQJr9gy8IkrRrunH0o/Q8xd5Ab59TQ0sPaew4OaGVWsjLE6j6/VnidD4Um74BG8i +rzj1FhbcS4+K3N65xeOtlenM+a9wvm9ECf75BCXcFXTbW+/C3cP8RDH3g07jb1S+ +k/o0ZZIcK0MfNtS6bmN+cd9aOB2a3pbFOyc3ClWzRa8rmFDWPI8hP/Nm/nSst9Le +PBapML+7SHMGRA0G09HE1RhQ7Ovx6MGs3U/D7N/j8ugd0Z/bTVZWpv4IGyI7x8+r +iiy5rT/ev0GnwpkuvHd6QZB9pxPRvZgSLlx/uSvNqC4Fcv6+cgJptpV+9WtMPGfr +Up2osgQdKd8nDoVFRnCwwo9gw2eRXwuCw6Bo7YSDPDHKRLlyHBqDHVaKCi4170DM +KpTMtsb7CdzcFZQoWy1Hu2qKd9948Yscjw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtjCCA56gAwIBAgIIaWN9DfaYbbEwDQYJKoZIhvcNAQEFBQAwZzEUMBIGA1UE +AwwLQ1NDQVBLSV9NQzQxITAfBgNVBAsTGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFj +bzEfMB0GA1UEChMWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzELMAkGA1UEBhMCTUMw +HhcNMTQxMTI4MDkxNzQ5WhcNMjMwMjI4MDkyNzQ5WjBnMRQwEgYDVQQDDAtDU0NB +UEtJX01DNDEhMB8GA1UECxMYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMR8wHQYD +VQQKExZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMQswCQYDVQQGEwJNQzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMw+teifWJxk5OnsZOy2Imu3Ezsv2K7z +2tFuBexl7ckQr2DOayuNAvIwsqR58RDBvTHNZkNYimj32XFHQcI5F0RhpLiDC0W8 +fbu4ag+Ak9BWxC0oIVQXZcTCnHLaaAViPepFypLStoVWVfN2ujw4sohNxptbczem +nlxgRJ+Fi0jrwpPXAKE9SW8Wb7NPcqoa+06RYDAElfg4XH8BRj3sang/mkSJBlnf +GvRNAZ1+9SUC8s+vqgJ+HZKgwByW/Vl6BsMlqC1UaL51E61YjJ0BDzRStMOGN9DU +umgN90FLgGqXo1s6ms97zvAjxuhSIvpgJ7blDrAgGfGnfXNgjbQo0K+zFlv9EixQ +d8bB4tQZWnWGLsnj67ysJASyJB7iZPJzNm+sQI6tgoEAILtAOyLHlhKgjOL585oz +RI75KAsNPYZ6SevLMm1cRcFLyYph0rxK8X59IlkaCFyee2fa6IbJB+I/8UHSxqGq +K3JOaNrTH2gg5uXg/s5V39eg4X7M5ZC2j7JxqModaszz1XeVKkt+3wyr+X419jWK +TgLeLJKBHDrLIRjwCdAKdnY/68iqEhPHM6JDtQMTzbzHYHjcreZEdS6c2qtZolY+ +U9kyqJceHVuWnNDJe4q8mwJK6g93dhxbkQ2qNP58AJeySvAZ2g9SspwyIxalLB7R +tDedN1wz06spAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBT1x8HD2lxbCWggrHN72JJY6yVx7TAfBgNVHSMEGDAW +gBT1x8HD2lxbCWggrHN72JJY6yVx7TANBgkqhkiG9w0BAQUFAAOCAgEAVsZdhPfk +T1Ffe69C+ufqXQLxsnqAu3HQ7Ve0u2sRUK6ej9ejFvaOavVpVtbAyyqeqxmHqnMd +yh3/F63pSNuTGwPn2/+WyZvUPOVcDNh6bEZoVE5gd16IYUPqfA7hp8GmYmhk5Rzo +fYYdG+o0g6FoKt++Ktiy2zELqwz72klgWa2BQl7NdEbfsKNMwxAtNG+evYQ9+bK9 +INuweb0boi5NRgmHa7luQIEA+vP7AiTNIX9ro2PneHMi7VIY2Q7kia+M5xNSsQ3K +Rh4MFn8cYFp/tQu3SXDQtwMmdqrs7U010b0tZ3Iyzm/x3LYUp8MCjv5sgy0EPqDE +UUsuGlzTy3S6xPTaeQOebWIV2rbPL1E/9Wvok4XRef6bvCE0z1AMpmprtQ7P6L8q +bZ58+6ci3qzfCfM3et6wFXzTvyuvuSDloLMPbhUEous1GAUdadqYz/meUxTat8WA +CE8Rz6wPr6dVN1nyOsi3ll/kNRQT4QfVReJ7YG6i6EnS15qBMn7Q6JMQg0UxxEKD +kOd9xxu7E8NQCSfYCnqE2KfT2XO1UEPpba0OcZDCzfd6C6JW/1D8kB3+CMEnIJAi +X6leOSbz9JEy1RrKEV3DfEAbeD1lKGqXHoYt+2ur+Mif7mUKcM8zTn0O3niKVEd3 +rIjE6JHA7vHuBrPBi1f4NaP+97RnKJ8h+BU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFyTCCBDGgAwIBAgIEVXcLWjANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJD +TzERMA8GA1UECgwIQ29sb21iaWExIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxJDAiBgNVBAMMG0dvdmVybm1lbnQgb2YgQ29sb21iaWEgQ1NDQTAe +Fw0xNTA2MDkxOTEyMTBaFw0zMTAxMDkxOTQyMTBaMGoxCzAJBgNVBAYTAkNPMREw +DwYDVQQKDAhDb2xvbWJpYTEiMCAGA1UECwwZQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dGllczEkMCIGA1UEAwwbR292ZXJubWVudCBvZiBDb2xvbWJpYSBDU0NBMIIBojAN +BgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAqEucckuMr7vZEbsQTsOM1+JtwB2I +27en2MR9E1fUW1G+LacKWvqultz+AKaXmvlgY0cEe3UUreE2lqs5ICc6UUCEdiyG +tSlj86e6ggnnwjo7wmOod6KprfzaMqQZpA+RtMooC6Le1h5XBruvE1zygKSoeoOv +/sV4NYYnjmrthSrnrOGsgeZUsXxTUNGXnKmk4f6WYuj1bPHyCE/4wWImnHDnP1y5 +7OTcY04ARbxH2AonGwQ5arbyMeUv9Vpkti0sS+33bePa0SK4dd4eWrjBRiK5fBEj +uWZcCZrWDR8pJ26iZWZgT+ClGPtl6YwGwjocHy7eumeX6bWdw2KGKvq/JHXTkvoS +V4aESQGpeDahaIrAEnSad+WjLUyRRKDZJ8uwVP5GD6bcH5o586gOeZATTbZ88d/0 +pnJTDFS/Dm52/muEQLvGPNDyfrly/hJ34OUl1wzHUjESry52novvG/2xZywFU99g +dJ8qP9xPGmZPw1ZKjaaDe6+9rQPi43Jb1SBdAgMBAAGjggF1MIIBcTAbBgNVHRIE +FDASpBAwDjEMMAoGA1UEBwwDQ09MMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDAND +T0wwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwgaMGA1UdHwSB +mzCBmDCBlaCBkqCBj4ZMaHR0cDovL2NvbG9tYmlhY3NjYWNybC5tYW5hZ2VkLmVu +dHJ1c3QuY29tL0NSTHMvR292ZXJubWVudG9mQ29sb21iaWFDU0NBLmNybIY/aHR0 +cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9Hb3Zlcm5tZW50b2ZDb2xv +bWJpYUNTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMTUwNjA5MTkxMjEwWoEPMjAyMDA2 +MDkxNjU0NDFaMB8GA1UdIwQYMBaAFI0gVBjSqpI33LMHJSAXa01J8qbRMB0GA1Ud +DgQWBBSNIFQY0qqSN9yzByUgF2tNSfKm0TANBgkqhkiG9w0BAQsFAAOCAYEAeDwX +vVorO8s9w8omuzaGpw9Z61JYkZw05tJ5HePIMJefExWBsCz2HFvaq7P9n+EWH22S +JbfSrF2/3YzXt2FnO0TXTXHwj/AohJlTePMVHbJ64PaM35S8kHAA4wCG3C4yJJi1 +i7wUleTTA2RgrGyz7NBIC8aiP1+nucWWZzmyi5645VPCdjoRcNu9P0lhEdKrKtmh +5oTtNpZfyP+U9hBouAjjDoJWVUF9Cvh7KBC6n8Ebo9BkoBp7rEdKo8ODV//tsRON +g9uawtxPIHxmV1+xFPxphDaf90XXOD/ScexAHpL7+gpvRy0J8+dzIgwBDDDLqJXk +z2yDCnZuWiU+tW2BUpaP2YhzE6ewcaEkPMk59ZixB8t0pWrHxmW1zeijrOEk7Xtk +x3KIWuO4BwIRlwDr4IulCdw6YIkragIKcl0Zc6aHPKYUNGS20OgngAVNPEMCogIB +gp8g6ZfISOiS+utwrcXPchts7T2RDM7H4RYqzpyzZzcVNCD7qlxkg6rYZVAv +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIBATANBgkqhkiG9w0BAQsFADB/MQowCAYDVQQFEwExMRcw +FQYDVQQDDA5QYW5hbWEgSUQgQ1NDQTErMCkGA1UECwwiQXV0b3JpZGFkIGRlIFBh +c2Fwb3J0ZXMgZGUgUGFuYW3DoTEeMBwGA1UECgwVUmVww7pibGljYSBkZSBQYW5h +bcOhMQswCQYDVQQGEwJQQTAeFw0xMzEyMjAwMDAwMDBaFw0yMzEyMjkwMDAwMDBa +MH8xCjAIBgNVBAUTATExFzAVBgNVBAMMDlBhbmFtYSBJRCBDU0NBMSswKQYDVQQL +DCJBdXRvcmlkYWQgZGUgUGFzYXBvcnRlcyBkZSBQYW5hbcOhMR4wHAYDVQQKDBVS +ZXDDumJsaWNhIGRlIFBhbmFtw6ExCzAJBgNVBAYTAlBBMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAxGY/nYqZ2Zv2ztp0iM5h0Oq61McC6A6LINpgCc1D +ZqkH3dUIA1tgFDBoQmznsoFDlTJJI+CHKsEJ7tSbuLtYKUHjbCnAdRsdP/LcXZvU +uzHvJL2SoJzte6/FroA+zLG6XGIcEOnkvHvht1Oks3TZCzw6dpt04pZ6uYWFhATJ +jDvBXrvFd4gF7kXV2Es2YsrYN2fvn0QKwD2NRRYOIZ7yniBvSAvWRIwS83HZy+xr +1goA6tLE53+x2e0WdBVeVgMsE411H+kARZmKnGALOqSpbNyeI4f9dSPaGHm8j7oT +0GUQqErQ8F16yDR1P6TvAEUNLKkcoeQ1RWKbG6Stijix0y3KDZLdOsdQFSzzCV7L +vPaNb7ZG2ptFpSzYHnKl8XxDzJQJY/4wWg31wTAnjuhzpHlhXM1joxfPHTp5EuZ+ +KX/nw6vUocq7wmHhsJ3JzDKrIlSpO7Oy5OtFf04sx+sL6+e8bp9Vi+a3ZJXtz70A +tqnJhgPkr2mUy9BO10bcIb0H7OpcoPdq+hKVV6s47poD1ppdhLATozyvM3l929kR +lxQVMq1pTA1HINCHYNbYC4c86kkv8QGXAJ1u8sUOgFOIRzZKZoSWu/v8nsvRNi0A +QxHLtut5Gt4s9NNkHeljgbaFrPcQP9CQz78Ue3a8gztyMv9QCJj7yE+oU+iCttbW +JNsCAwEAAaNRME8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYw +KQYDVR0OBCIEIF7nmYrf8o0vHMhErMpUjycppP1zu6Zugn0zagSZsafhMA0GCSqG +SIb3DQEBCwUAA4ICAQCMmtiMfqj0+6s4qvy/q2h8suUoTEtk8nDVPXauwbxTCTTK +y6nxeRfcM5/S26OcOs5F/l7BlIOkYiLoq7jFinO6wEfD7VN8Up387cOv30U08hga +4zE+fppZxhJxgfjrv0yAFuqDrnjTx/VpO1k0/1zSUJdxYsv33JaXfiMMZ1ASH2iZ +ynaywzFIVyL2AQxvanDxujj3jQL4puccykucTd+PAqQ6gpK1sYC+6iZbOmoEf9q0 +DYJbegFnFA7faPgbAS3mtC5GVGZh+2zPMKYD1Nv4gmYnZD8RV377MT93hX/Ceaga +cZ7mC53H650XwS+/fHHm/mG4H+cWMHDH8GN5xyApfUxVX56dyocXjHpFO+okYhsl +sy8obcdsQveu82w81YWb+kDodPfJLcGAxjegGWV0HT9g7dPaOD60xlFHJpCP1K1T +YZPHBQL+EBCvHiiOeJCp1+aewX6+mWWUhwcEimyNo9f3PypC8/3Y9sqC9DH+m2I3 +1bnTcHXVGBmmCrcAORzEsECqpHaCPCqmo4Yk28BksYaGXsZuZNKgpb/42QpNFoSv +SLtZmzwBSNmEHfKizXMUAo+Kl/71HwdAHWLxjsYHkdslVHppQ7NyoBckkMUooWTb +sFiU7FfTgx+c/ZJxyIs4HxfQhnP3tV151bCwgqjsAClo4uKg45oDYra23dMT7Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIBUDANBgkqhkiG9w0BAQsFADB/MQowCAYDVQQFEwEyMRcw +FQYDVQQDDA5QYW5hbWEgSUQgQ1NDQTErMCkGA1UECwwiQXV0b3JpZGFkIGRlIFBh +c2Fwb3J0ZXMgZGUgUGFuYW3DoTEeMBwGA1UECgwVUmVww7pibGljYSBkZSBQYW5h +bcOhMQswCQYDVQQGEwJQQTAeFw0xNDA3MjkwMDAwMDBaFw0yNDA4MDcwMDAwMDBa +MH8xCjAIBgNVBAUTATIxFzAVBgNVBAMMDlBhbmFtYSBJRCBDU0NBMSswKQYDVQQL +DCJBdXRvcmlkYWQgZGUgUGFzYXBvcnRlcyBkZSBQYW5hbcOhMR4wHAYDVQQKDBVS +ZXDDumJsaWNhIGRlIFBhbmFtw6ExCzAJBgNVBAYTAlBBMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA05UGx3Tayt4UTT2vRROaqZ9xUSB7llslMByZ45dp +5L1qTPWkHfeIPcn/ZhuT0Y1TQU/fRf4vRswFfav3acz0DwFAhqaqbINcQWZBSyZu +xvsQSGka5NHJh7gk1WpOPxevYckMbSmpkubDVgMgtU5SXOF8pdc9iPhx5zIY1cvs +WYLCRwrrO3V6LD9aYW5K8mlF3E40hHzQjAhgTuDvnA5k2dlHwtvHPlBibW/bda+V +dqqZPOu6jmbJwLHQe5ZkaEU1+SCEOB4cHXRkiuZHjP+3j9AtZBR0rg9N4CbmXvh6 +J19hQetXOkRh8jnVFbWbZh9DWrdV2Ano6VSYuBnQaDba7fhGK4OJwDgmwMg6vmmc +621+avjybzGg5qX9WoNn/zhlQnOuvZ1tjbvWhzxzcGVt9ShPBNwCV59v4vMsNho0 +KyilVWCzu4yNUlj+OSRTGZBK2rmud+nvMlnuRUHk+WmRhX0j5t+xmHiafbcLrfBv +SJi8Z1qL1lbwQLjUvlGPNhwV1RaPA9vAmt6Cg6kAGVQJKHQNO6ouIALaFAl83Gu8 +dcMQrmPptNgB1y6zd0YtQSDAAAv0CRzheRDrphI2LpLBTUDfTyJ/v5V0jmA/0BIw +ALifDzSzWvgK/zjh0aunKd7xgZnkmedseh3H+trwhxjeROjGqDvBi/9dXtzc3bU9 +yg0CAwEAAaNRME8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYw +KQYDVR0OBCIEIC4SUqLBLDxKB54AtgSjkHSXAtDwFN0o94tAhaIp7v3xMA0GCSqG +SIb3DQEBCwUAA4ICAQCY1QTL5eL9X4uE3T1mxHX8BSShMeV5VRa8MtzHy2UMPbdn +xo6TFno/5zBM2qT9367uOqxQQBeH4W8xkEpGrcRiEJgvapC7kKzQFYD2rfscyTa7 +T2jQmI/ptrBRoZjMCjZiNH/lJ7LseC4LKQTdfmKBk4IhhtcbkpkMJX83W1sF9Gl3 +hKxzn5jf1YqbsRSYasyt9gnVgjd0W1Br3sTuKgR8DD3gI8GfJ2kfCRj9if/VtebU +U26h1JXIs3lusjE00/e/6WkkAVwcdszGXOo3TIyYqae1GqnIgGUnhbNvNXEIP9j1 +F9TSeE7CYPRUx+ncq4GRcfM9bn5/F12SasAdiDiUTpuN1f6d5l9K3b7SJRrguhlJ +ZGB26iYSPdCCNFL00mylDQ4XlhvpWfw3Ucmu9rnTiQH20oTVKOFHZxsAnUWQDDX2 +fC+gKYAu4ZqsfWUkiLhLk8xx7ZPOYGxD4vMeVU9rUNjZQ5W8Z8cQXWmHZfoPNKGr +7W4kAKOHCUETcYHA69s/fQoWvGfQZka6FgUSkwKr+xjhmyvdLeIjLN+J4l7KGrX2 +BdPin43Lkix5bL3pOf7G4BJuqEpgxSPV2KeNZjdZWNSLb8Z0zTACsMG2Z6hoPh39 +cCjrjpm9clnvpdYjOt9jRe79g9zPNNp/yzbQr2izhZ6LAQ0pY+5pgzB0VTsehg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFzDCCA7SgAwIBAgIQZbmHZ4SNVi1YSTp14kUXrzANBgkqhkiG9w0BAQsFADBw +MQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNl +IGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMTYxFTATBgNV +BAMMDENTQ0EgRXN0b25pYTAeFw0xNjEyMDgxMDQ4MjFaFw0zMDAzMTUxMDQ4MjFa +MHAxCzAJBgNVBAYTAkVFMRAwDgYDVQQKDAdFc3RvbmlhMSYwJAYDVQQLDB1Qb2xp +Y2UgYW5kIEJvcmRlciBHdWFyZCBCb2FyZDEQMA4GA1UEBRMHMDEtMjAxNjEVMBMG +A1UEAwwMQ1NDQSBFc3RvbmlhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAtDGGqxMcgnEU7pUmFoJsJHuo8SdE3VfwVCqb5f/Ny09WQwvLh+5cW3TVnJIj +Y7HUsnZSeMc2leHV6FTD2V0/j6N5Cq2/d4uC0r+U/LWgJMGFfGJceijFn5csGifB +YjIAsATOpl6cG4P7ko+3Wumw8bDpKCogICUm9fwoA8AkUqRxs+r+ioe3ugSgzuMQ +PXlwBCchhDNlpGlicVsqCOPE3UgevOGpXX/WfgC51nlw9Dp0RWWXL2vLaw028q5o +mW44gEEQyZbqF6Znu4b2XssU1j5Vy2CGzBR+KN51QfwkgfX1lO0OhOhIwcRDx2s0 +PH3WB/2hgyAAHlSFWJe7q+dKRIMhfjq5W9IXfxmbpBJgEIcr96QtajVEuKvl7TNC +n7TyO29p7Z2a4oc0EbrE8qGtJcR1mMd1/wLpUnVBTuxRvDcrBO6WEpKOCxOghG4H +VoXdtogTHIQshnN/cEhj7KCSFNyuH+8tKd7ZXmxu8pmlVA5W43R/72oF/HiflYaJ +E6yttBnxwPmcu8e5tbHcSkxjn5g9zGMH8oPftD6U9CAuh0uuQYWNkIsMQRBRm1g7 +AQuQKoHeBIkMTs1vw125SIf+Te7fOLGR1GBuBpPJanhz63LEKl8370v/xvxItS8y +iUISoLqkXjK6oLlkV1MRoXGWePZtsNrhLZ+DDdYeyq1ptisCAwEAAaNiMGAwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFO6gfpQW +wx8/gF1K6i3qfCqUbZLDMBsGA1UdEQQUMBKBEGNzY2FAcG9saXRzZWkuZWUwDQYJ +KoZIhvcNAQELBQADggIBAFvkGW8RXzyFBBnO3R8RlJrlXBV4GVpdzAVJNTZJUuVx +CBN+8N4cwYa6kb5ivjMRhBr+p2wgNOczVRpir7QE45gF0mL0IQBafEPOd0xPeVx/ +14J4ClhQxLIceXgvIL4samm0e31hrPpvipifK9XWT67Cb7YSBne/2z1TcuvCHDPT +mBlc670Z5aD78dZN38QFruVo0OvqOV2dLUeMaF8QR9Xr9YTuQvs1dpwsUw/Ww2uE +rp9sJuF38ivWjjkKKR9UYAXOBgO3YoM1f3Lgfj+e5LtMKMdoEDAGNjcLwEvSDcJc +4CK8Xx+vyxHw9RZzdUW7sq3GTs4efwuVIDGba6ZrDL2D+bqK47Oqd6jQ4dMmWePC +wrKcUB0JpH1HYY+22Xd0Wmk45s1bL6yaLIAykXF2XVrB/8tHcltpcwSUbaV+0Eoh +kt57yKKxY9hNnHR4+lX3HLxbCMlElAwvzNi0y0ml1B3ru+SSR85RhU9pbQMMShCY +TID9WVMxNsDsQFTHye3zipCPv34pH/siUae8GnQXoyGeoBZiwdQg0WNmnqKeS31B +nZw2fSj/2k3MOlrb+sMlbs1zp9OHjPLleVirQtVxWerLwlx4Ed2a9vJ2ZHvTC12B +uJdmA8c0xxdbyp4tCiKl2HvFFxr1iFXA1sTPhGZeL5JogoktFlp8dRrbIQCODgyn +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF1jCCA76gAwIBAgIIFEBZXRFMaZgwDQYJKoZIhvcNAQELBQAwdzEfMB0GA1UE +AwwWR0VPIENvdW50cnkgU2lnbmluZyBDQTEeMBwGA1UECwwVQ2l2aWwgUmVnaXN0 +cnkgQWdlbmN5MScwJQYDVQQKDB5NaW5pc3RyeSBvZiBKdXN0aWNlIG9mIEdlb3Jn +aWExCzAJBgNVBAYTAkdFMB4XDTExMDcwNzE0MzkzMFoXDTI2MTAwMTE0MzkzMFow +dzEfMB0GA1UEAwwWR0VPIENvdW50cnkgU2lnbmluZyBDQTEeMBwGA1UECwwVQ2l2 +aWwgUmVnaXN0cnkgQWdlbmN5MScwJQYDVQQKDB5NaW5pc3RyeSBvZiBKdXN0aWNl +IG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA1MfBv+UGfalZ9wymt0IJANVfzl9bWbL78svrJc1nnEkaEQKUmwJn +C03zua3UohRLz9D1fkGHlTW0VY78itM4MxDEczuBdoJhIxWDe9tNHjaTE8YqdaPK +4gFlIKjd3EJwhLwBtR5/24BjtmsBDLBarAyO2mp71V61gN8sYQ2aXBnjpsv3r8hp +2pw9BBi92uVAnnuLDcQxUWypc87b7nQqw3dCXRN/XSG9Zz3nrN1ktLKY04U0CiFx +Wb9+bNqcfNaFG7eNF92r9XsL+OvBsj6cTCDZhCfXnDu2ScSfF0QveyLJt0WSUsXc +xf4HSsjpCNSDU4riKCP8I+Y0oDjrnvIlSjsXXVIj+gnDE6NvEZaiIDwNHPverVbC +ugXEVj9qp1bKt57D4wUVbV4nXxtZoBDjMXtV3JEM/LeUqDFGD+qQZaUgYeVD4iOh +LCZcg3/4VAVL+ZoKtYxNj6SbWU0EiCAVYKTuWbGFwALNq8hGp0NkcESEh/0+2ynT +YrHYwh2H//LyhGzlmA6CWpTdD6OAGy5a+XnimI0rU4RyTUWMEt2VrfKMD4jCVwIx +s8g6r8vnxbYUdAeWILF8nnDHLQwUtGYawn1hMpQL2faQzrKw+FpIeH9Zc/8puybl +YXdVIQ/PhVaRJHZ9OjuMJKHCG2I6H5egebWjgiwo4xoKUUzxlew5AvkCAwEAAaNm +MGQwHQYDVR0OBBYEFPnT4DHsT1gf/IVC1IpvAaUvcssoMBIGA1UdEwEB/wQIMAYB +Af8CAQAwHwYDVR0jBBgwFoAU+dPgMexPWB/8hULUim8BpS9yyygwDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAkWfGz1AuUPyYlpvfEs8MtwlhgisqJ +cD6xchLHjM5FijXTvuc+CawCCasn/q0gk2sVLxxa4M3czzu3MQ5Z0muGxmMmGGAS +6GCixE30J+Y2ZLsPTSiMQJnN1z7BZdSJU5Fxl2cqCCSYWs53UzjT0K94EyEGMQxY +PZp618Ol9JTda/TrVIgSW0W2W0d8NKF/EblAcIo6Bf9AY+AH5ZTU3JSF+0LJD8tV +TS3JjZuGXbY3RChLDNsmsSUuFN3oiicV7+E9lX/tcssR4mAkBTaTnRGtCwWvH6s/ +6fdpIEmpPfo1kF0lqHX1LaJsFHlXquI+80AUx9zYbu8JUo94DWl0/jGFutA58OXJ +pCCT1AStFva8XouHogFDOSCC+keMnmf9XvNDDDey2xDG3mUbszrbCPXHzbKvsdAI +zvzXdZhLek8VnnF/F7B8ckjbfrtr/FA91qDR5Xf/IJxY64wQVkx4zOJ6IkfKApK+ +qpKmiSsvibSRFdzZWL/16A9ppBoheYpDY4ol3bJ2xgozPhlLK1kOXlGZ1JtbY0ja +ASrpxuDw+1Wgv02mHXRXWbDegbl0+uSjwxSFevhCpxQ2fLOY6JJZxR8b8Kwvv9pb +WSEPMERVdsOkwbS0OML5kBi/P7vtmtCno6VqmKqxFhdgVuyd2jig33sfSH0pJPVz +e+tX7kSAUvQxfg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF3zCCA8egAwIBAgIERQqCUTANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTEx +MDEwNjExMzkzMVoXDTI2MDEwNjEyMDkzMVowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAKE/M5q3nsxafeKTP+IUkbZaKTMc7fYY7fzNCqzR +DdF5CLyTZ8RvcbYqU7H9klbFEnYFRrgEUjPL0idYqlZ3Z+hmtO6ujqSjaU4kv7YR +oDU1u6mpqxBqnh9CvarH0ODuTVInJUnmcDI8N02DbKHGZUINn/tosQfX1surKjJw +cx2PmKzJDsqLF4yHTj4Ifj4myrfN3aN98ltlU2huIEXvTIeyzDNyeAL+6WKWPmOV +pcAnudOivMrs0j8BnfGxKIupHVylR2BruXkSlK0oLvjiCa55dI8y0elAZhFWT6eb +MlldR2stESKyk5dIQ5zYyja+fl7qTEDLUr+/wx19T48rfH2mi4TXD1y1nUbMIpoo +Hl1GC7ZkFrAHM8zPI6Ab+mawjn3NTCltKttN+3haw1hpjZxVFwKgSDDGl8e3Jty0 +B+WaW3jhCQ4ribxhSIADZ7v0LlTrA5AMn3U6TsL3j5BWiNauPCfypcAzhw4Om+au +pyfltXV2/uFSGymF1fkVRmJfYJhX68uE3AW1YxzriZnzfyHRd9jj0GhpSHc02PzA +jYxC0KTdj/nwk79NWSL84ZWaMJarBu/es0O7tzmbDy4XbWwqK2OCavtts30TNJ/T +3zOy3QecEeVwZYV7LQC4MH22odhrpOtXJpAGrU98Uf4Qx7Lhx7PCRujfstxTsC1Z +2lQTAgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwKwYDVR0QBCQwIoAPMjAxMTAxMDYxMTM5MzFagQ8yMDE1MDcwODA0MDkzMVow +HwYDVR0jBBgwFoAUyhUncxwsTwZLP5roiL6mIrA+Ws8wHQYDVR0OBBYEFMoVJ3Mc +LE8GSz+a6Ii+piKwPlrPMA0GCSqGSIb3DQEBCwUAA4ICAQAqG9GZKb+P06SH7elx +c2Ae39M02fz49/1LbTO3njyr+b7UDxspqlwFH7p6T3XHKZMclbNsu+imAymcJItQ +HbK1xiWNX5rmWAOSJSGtuqcC030M0gK5Bi6mq13Fn4n4MPqzRF7hji2sTZjLQ6Tx +5jub7VXR2ys9T1n64hIGgOihRa4mTPqMyMCxa+RbpEQE79hpGLcgCmuaJ6czXXyF +6X25mTTSc93e5BpJYAELMKJ9By+wEJy7fj2mzRoYxgPdAYzfqzTCyMQYrUNaG+cG +c/f4y+Q8/eFapIkXFhZmIqYzNYuXRBvxXmzcWzRN695qOEZa0LGRlSaAUIo+SSV6 +kz/Ch2AF1DnK1PfFoRFOZAuhyeHrfXMCYWpJFj9WJ9K8U/+GPulp5UEOzqHar6Mj +lH1Nh8RzqOxD7PHA9LqrMAm4qpS7wpRrpnGf177kCgPvJiMGY8RB4fptYSObxyPX +44jec1hhUwa4Z/fZ3m37mTInIyDM2oKdLHw83fek6sNfr2h/aZQzRjTERZQ9Gqca +EbhvRdCNT4qQwVpZVj4xidY192T5soLIO/XfQjPMxxX39eFUxOvsMRnEIN0VABSl +7/fak4kG7vhDvxpFfE3BZw9Xu1veQjSNGdZVZbENzeUlcu0vByPvWvZeNtp5ldS9 +gTACRC8Hz7k1CM9+0vof9E/utw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF3zCCA8egAwIBAgIERQqOFzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTE1 +MTIxNzE0NDE0MloXDTMwMTIxNzE1MTE0MlowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBALZD0U3UckregSd5BSEQ7xU/J2gNt6Q6sCUg1NXp +msfuCpy7hpnxYHVYX8hnOJKrIhLsMJBb8A4neKcG/jfUk7EvBftNt5OEaBq2f10K +jFZevueA1Zoz2W9MQuN/BVQIJgfLe/yN+cccSCRgo/6AcG48eobLbocNFhPpHhNy +rid/480dIZWu4EfWxdkj0X7Ia0prdGmybIj1CGQyLvHC0CP+A2jBrsnQ2mCb7vSi +Ny70Igpc2b/6KVXW04I5n0UEkZjbr9pQM+KYL+fScidZEyBCfzGkw26goEjpqdUQ +l7Ns/QChGEqKAT9HyC0R7qT10CYqN06Iv2eEYiSKqz4wOo1dSFORvcqLomCsO8uk +njHvDCldu1IlC+v+i8rd+OfJMi9IEq9aYILM7I7wttk/yRYuzVtdmYGYFt4F+W+d +OXF+SF+l/6YMKrOjkOWyXT8b8I/7WRlWRH9bGPgiLBYd28O/dhBefruvYtluW/It +HhVCBj0ZQ7FhKQxsnjUBW2dJnqKfRaabc61pjzGseUVIS7EP/L6vD7ELpMp82FOt +s6cCVdMCbTe0VmJ8Y8DoOBakggBlb5hxXHIjLKUXHe5y1XgusD79KYsZjREQ/GYP +hqbcEdnAUa7udcJ5iQiL5euMWM2Ao6unwN1jwbWGX/FjaVhyUdWSRpqS2RV7LDgn +1fnRAgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwKwYDVR0QBCQwIoAPMjAxNTEyMTcxNDQxNDJagQ8yMDIwMDYxNzA3MTE0Mlow +HwYDVR0jBBgwFoAUheaFV2nAp9k1J72KTdObORSI1XQwHQYDVR0OBBYEFIXmhVdp +wKfZNSe9ik3TmzkUiNV0MA0GCSqGSIb3DQEBCwUAA4ICAQCqwa5rt5PNXYCmqvG1 +8uHwYy7+d35b02uT4uQ0+DfIz6PjOWdvveLJChQVUAbYPSLWxiicNblPGEyLu+Y+ +q1XpqdZd41tjQY57EoB1zzZNBYE/68xhclcDAlCpWM8t+ilD3qTRSuqkCgm+CCL3 +lCCNxxx1QDfPHB5xVpQHygUWqEYUnTKAt+2lPh081wwAxvAtTTVsxzxlcBQyCGjG +RaU/zsGn/GN4bC1xft/aBcEfoxCaoTOmlcAOvEbpCo49HLUqLYuOuCs/ibnXghEw +i6uoccIpw/wSUIgm5bAhPm89MDmR7h/pzRgoa6g7VnS7Xx8WU38tnFDZR101eg/o +ilgigx2/tNVQDKAmXjFU8av3PNwBQTi8JIjnBUm+Ru3WMK9p0GPqZdd5qnwHkT48 +Jwd9LYP6OTKR5GMY2RzbNCYTSqwQRPPmZjHglWB+Yk5Ze/jaACrqHZgOkEzXU9Kl +GdzhPti/TA9bZDWm0Qg8OCFkh5ODSDpQ9A3irb+zIfLXN6EmbyN1LojlUoPitlFK +eatBuqFu+Es6JjzM1y3U9Fo8Gnu45eWAjfpqsfTrAzg78/kIasrOKM27Rr+jJxN6 +woOhBhlhA1pmkv5d/6C8hjDRLXvj9oh6l2os4oHRqszpXNWpxAV+8VQba7H4XwIr +0ta77EunRgJAzmHDsTCZDNz0LA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF3zCCA8egAwIBAgIERQqXMTANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTIw +MDYwODEwMjQ1MFoXDTM1MDYwODEwNTQ1MFowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBALQp1xF4U/Z4nVKicbxTGE4oqaMqayQLbTl2ngQ3 +wWImv+kEVZkxVtS6OPziWsRVnAIpPham1ykA61MmTmqYOZA09UxHHsP1fiQfOOfi +R8WAwwu8LxTwebqlcvjl6Ls24m7p6CJqIpfk+48VT/U09KRDf48tu38vEhRHsXCg +7EbhWq/IQ2MtA1eOULzKhm0CaGCd5u+Em7cQ5+xFluqMhLFkSwLFcxdcIlGAvSig +/WCJUEvm+1CAG+vEsIqajFUX2aKYYxDc/nG42WHKvdxi/0L6EZ9++W3Zb9naLL/R +avNp3vdD9PVoooTkUdYQRqY64wVyrFf/r/0KuSRRKGfQg1dR17Oyn+DaGkUa6LYq +wGWrEzITfjWJMwbTKJO8uDJUfqbH1e3KoM0TUf6Tj6OP4PtH+rtcskZdbr5UFH3p +dKSGFL+34uieuJLWgawdCFJUMiyZlSc4akVcfkqf9xN4lc+bPavt/awQBwBeghjZ +Kw+2/aVqeGYrxxNzs4h6Roc1iLFUtoOndgYBhFcOty8FyYGt4ZqGRiyfA+QBBdvE +05XP9umx0vbwaoQEW8kdmchGHFiT8w7u86VGvuxqiycP/hDcnbK8BQJlJZNVAF+g +VmEdqPGbElHjCkSi8+UNFBqUn1K6SGfVBclVqUWMipzaQJSisAKepRfuHXmnSTLl +YHhXAgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwKwYDVR0QBCQwIoAPMjAyMDA2MDgxMDI0NTBagQ8yMDI0MTIwNzE5NTQ1MFow +HwYDVR0jBBgwFoAUsHla6/e+3QP2Mlpzz2KJhkDWKOQwHQYDVR0OBBYEFLB5Wuv3 +vt0D9jJac89iiYZA1ijkMA0GCSqGSIb3DQEBCwUAA4ICAQBo344/a37V6YV2BAHI +pTGz/kn8Mig+F2iQu/tUMgqMzgsBP0DUl65jCH9SUNno2/PX9k7MLFhDxeAvFmE1 +2kViTRoZi+myGorw9deXqmp9M+lw8eIzBKCww8R5TDhgAHpKgiVlehkCl3uG9Jn0 +W7XIfaRruMXxGIcTnoVoItMLleiFBXmjFPnxdxEz+NsY22b8uK1epkEJsYjRej8C +amBowS4XaXnSZlzMJ+x4uo6gvSY2Raqxd/lvf7NrAF3o0IEVWOVJ83PpsH/hWj4y +L7wE12zpF1EtgC861oKmfAM6OCWowCFpr364XAQ4j38PDdA9J6O2pAYodvpr+9+c +s2Rm3edIwDaRSUwegLpuPDvrU3FTX50Vt3FtNHH90cqsfGkww+21ZrWW5V58TRCw +tRiQLFXrGxir0RjALH0tydlV8DrtGUF3B/UE0GIOQQz9s2TZQyVgbtq4LgeyewsP ++9Z5hz2IkA7Wvdvb/hexbqDWx4xFRN/0dYe4cl3hzCzrW65Q12yiftF/8SE3Wvq3 +8bVGXx6gj4rv5SfOptDkFpiE5TvLzst22cOTJfzI14yml1z8vVXyJ+EVa80T0TnE +PR60xHzS1ufOPPQ705U1PfFrfUUve4yXh+8N9W4/l4MNAmASTwaFltL3WNUlKuSc +HZ1mbsLmOslt1KfLYz45YMfWhw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF7TCCA9WgAwIBAgIBEjANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMCQ0kx +MTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRFUklF +VVIxMTAvBgNVBAMMKENTQ0EgMjAxMTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkg +Q09BU1QxEDAOBgNVBAUTBzIwMTEwMDEwHhcNMTEwOTE0MDAwMDAwWhcNMjUwMTE0 +MjM1OTU5WjCBhTELMAkGA1UEBhMCQ0kxMTAvBgNVBAoMKENPVEUgRCdJVk9JUkUg +LSBNSU5JU1RFUkUgREUgTCdJTlRFUklFVVIxMTAvBgNVBAMMKENTQ0EgMjAxMTAw +MSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkgQ09BU1QxEDAOBgNVBAUTBzIwMTEwMDEw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDdJ1qjXuaMyILS9wetg52Q +z4fvQdtYbQ/r/c1YNA2mhOotuX0ZpcUyG9/+HY3I7z7Hjhc/O1stIYUBfXy1Fw6w +qozR9zK5KtypW5TGWlbl1LiI2WHC2bUN3U+xzgb7MruenR6jXaBXByC8et2Vx8W4 +lsaDsl4EuPIrzZ4xIxUKVjwXIcFUx+XxqkJO+wfu78IYLx8efMvqKmKDcrUGXcsY +FYf2wBSq9huWVZf2FoBQNLunL65M02rwzfGEjlxJ4kLXG/YFMkhzBOLVMkz9n3yh +wNylwAFwuuts6J/AHM811MTb3J61g5CjsT57l6QmAe5Te5UMPdv6ZEWGCZwQcAPM +HYrAWCVFBkZYDq2E6aCRTIx0HPcCUAW3sQf5FjFy2W3q90NvViOt6XwbpNxjkg5U +UD6aXMJQvpBVUIxLKUpieHinN+KOvPrivyJez9cK7hxT4RoY3vAbmQjfY5B80t8T +GgqvKSl/3l49hEGhedvWPX0asktP45ZJISKfGaNq6wV9L1P6BRWk3gqZ4lCkICRJ +87H6YSAdA9RjsRO/y5E7uKbrTVIhOIXxa9f0AVBi9SzSqsy2tzIm66b0erw361OX +pG6s8FLj1km07C9lAT7O3OtbCjkFWpR8oDauBf5YRAlU7inYDev4xY+wH24L3N3k +S2BekkRXxy2uzw2QqNdeGQIDAQABo2YwZDAdBgNVHQ4EFgQUF6JTOOFDSbFe7uhE +LkzU3F+gUscwDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYD +VR0jBBgwFoAUF6JTOOFDSbFe7uhELkzU3F+gUscwDQYJKoZIhvcNAQELBQADggIB +AFscQVnb2ZBOGznlc8sA8DUb/p5IKer10squV0GlkgSGH8h3NGEZB8VszES25zp7 +Ut4X3FZuvzO3cSBC/zExvbzpg6nrI4EgH4vrJGvTrIC0jU8TW9PpYdpjhzXmiKiB +sDsvmINi91vJOdH3CpfhZKQonO+RktR0m2e5NBUmjxeB54cVzPYCRUcEJ8nHeUm7 +swTpZQFHbN0Cl6cnkqRoHbVtXuKxz6qOFXJuhc8bLZmyScxP6EU6jC5XCjaBmRQi +wAMkvBJ3FQnErVwBk0uyuA7Bmi4FoAwJSrbFlsL2LsUeUl6CKKpdxOyvJG0n9KE8 +Uu1r8ezDr4ehotgYG1BvfbU6P9yqJaLdMbgPO8LqsTOyLow6ID+nsvKRuwiuy4f+ +9KqgigckqbVV7hrvAGyI38j4GEM0/tdmHZIMItg4KwNIKKyulaZ0Kwaa+QrrDNUn +NbByP0Y+no1SUDzOcWwNdRoVnMruZCmbm5KK1VftgQmn0Ca0o2QUUcL6uJJdzTSo +RANFKnGDSPWTLxniLquqU1fWsclbv/1z7GpUZ2t/nQAXpGni2uraiVV8PtG6N4GK +Hw18nBXlTGiZB1DIkLLtfh/zH/fvxE14YALLGCdxnR63c6C04GGXtU4DD5GgCvEn +ePiMRHIPVYHAdJaIqmFk3PWj8ubjp25ULYJbSE4dJ9/L +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF7TCCA9WgAwIBAgIBIjANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMCQ0kx +MTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRFUklF +VVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkg +Q09BU1QxEDAOBgNVBAUTBzIwMTUwMDEwHhcNMTUwMzI3MDIwMDAwWhcNMjgwNzI3 +MjM1OTU5WjCBhTELMAkGA1UEBhMCQ0kxMTAvBgNVBAoMKENPVEUgRCdJVk9JUkUg +LSBNSU5JU1RFUkUgREUgTCdJTlRFUklFVVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAw +MSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkgQ09BU1QxEDAOBgNVBAUTBzIwMTUwMDEw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCkDq/+VqvU67mNGxOY7JR0 +bkmd+cIV0eVpWuhMwu1aNd5gqVMUW2lb9hFSG9kqUWj6lVFYpyR+oMiMtRYnzVcv +BQ0diWLSurfORcB1ruNlgk5dc2BaPlcwUUl3W8aTNX/+g8hF88VH1jJl7l0AKH0b +jutcKKgku7Juf7fsLLZ+Qj/yU/C+oGgOgc0ndfPCH+WwetkHea/4l/SU5AMYYV8V +T99Aei0Ghd9PxHntjMWBte5fM9b/i8zB4gWRI8brXBROA9sxupxIchwmjHYh7Fl4 +rvBtutqwzpMONjo0K3WfKh0AN8DA74cw5oPCcU5NEYfyMmmRj4yw39Xg7hcdo8aG +HrTUKkTXgtZq5BFADZjqQpcYoOTA9j1eR6loT607WzVz6iJNQui/lUH4dwUfWJNx +WtL1NcEkWZa2iscl/Un8bX2fVczDhPhzan9VSZJLDWesCMRjesRPtyzbanFxlBGu +fsE8sCBFHWiCi2BSz6xXzlTRNy1RFtKxtkQMWJp4coygScK0w0YhPJtndxext1+Z +5kss5ZhZ7cfaNLoE9SFwYhHtDIvfmq5c+vdImZ6HctqkIreKsuVzAqfiaXvqtfbg +K/e59I7CuJGucrKkfkjtd146LcrAVB3EDB6az4vXrYdU1lBxfd/uSPYIvceb4s68 +9rlxHCeDdgXsWvv4mW8M1QIDAQABo2YwZDAdBgNVHQ4EFgQUJUebZlhE7Z5YKYBV +fGlrN+uDFCIwDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYD +VR0jBBgwFoAUJUebZlhE7Z5YKYBVfGlrN+uDFCIwDQYJKoZIhvcNAQELBQADggIB +AIb11CFkMKC2s+ybBSExJ1bTCHm0aqpMqEaKW4bsIU2qxGcbzAgNQTc9EZ+2BIR1 +M451jlAFm9peSJDs9kbSs9zx9On/jUBerF2EQztcc5VKHRJ8iIw/HYMI1jV2EOUT +YHXUV6j0TK6SoD3Y0cYCerR8mtnQzU51SU9pOeFxCVfz8kyFOPKiTJzt3LC8TksP +hmedVHacJbKe2QEQ2Qi+bdkVPAWEUVESe2ePIB5ldcUN1N+xpGXwjHYVQOSj26iD +MrG9Ig3Bw10Xk2o+D8h28iLWiEDrCI4n2amjScwclyc72Xw7csoJClbUFwpr5xr8 +D8IcA5gfu9LUzkv9LNsSUw/JSZmjd/0YrzUipKk/a5xdoa+5M2i8JO0vOH6uFpa4 +W4O5+pGCl1utQ5x2e4u0vS28UOj2DFGigJFUE/DQUb9QRObq8aKWaPvrjc0IW/38 +1mM0lHK/AZd3ymzZftEJSiDC6qkTFdn0gpbPOalsaLSvMe+giFj8bBPdzFA3umfI +D9MWZcp/h+AXx7IkAKovMuOl7c8pXgsr/VTH6oeriKVIzG5UzLWyy3hKx+DLzurh +LPARKJfOyYgqZn8iITLUk1Ny198ZfNKAejd/i3YxLLSRsn3zsX9HUN9TJq0UOziT +E0f7/Dfqxw7BgsWzwwYYssdxJSqNDD2cPMgahlyS1aeK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF8DCCA9igAwIBAgICAywwDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATQx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTQwMjIxMDAwMDAwWhcNMjcw +MzAyMDAwMDAwWjCBhzEKMAgGA1UEBRMBNDEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOgOIoah4mu0doKD +E9QFb8XEnhrA3uzzy4llbGUKdICRfJcnl9W48gu+x0Crhul3MCVc7DUqyeuDUBUT +mFZvdY814ybX5GGKYmMsRFirJBDkEWY/YEwlXZN2Np2Qnqwka3n56d/EcDToEPzq +Q9eqp9oEQb6jeRGbOHd1+AekVryh/xGbht4OrjP94J7abpBDOUDspfGmzUdNZhk8 +ZgZ/WUstFlTOR+BEaU72pbUb54lJBDUhBy4UkBC2+VukNKwG6Cgi28lckDuA8WTb +mRsCia12/8f4oVMXRG6uo6BjDqOTHUT2hBrNu9+ukSruIe8MdfUfVqB8l7oqFIZc +o+JvY9wvn3XZV+ykQmrG9gv+1hgxTY9pXQpDN3L9/YHkkGrCC9X9IqdobGsp1Cg4 +VU6tTf4U2I2+jNWit3vbY320vFLOgADSo+pPgMtW7DMRLku4nET00ocZOX4IpNxj +hYKrNwiST0OhbAofW2stnTBkIcp1L8J1wB61DA2KZ4wGE2Ey1sQlvqxUQWz4ogE/ +XtMvZtb2v5tgl1rqu7qB75d1UDrM7KsrHbRPUxI3Zet1H8sviEnzCyIA5AwtS3vg +NMQ03jodJYZMFS7ysKcIL9XpoM5yhtzC/f9DDTVHo84dwvz9tLUOj4suxBeRIN1b +BcOyYtHe8gwDKZblggXrB1V+fY9NAgMBAAGjZDBiMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMBEGA1UdIAQKMAgwBgYEVR0gADApBgNVHQ4EIgQg +R7u4G/DDmECWrPfz7e+SV96ndTT+Vt4NgMx8k4BfQkEwDQYJKoZIhvcNAQELBQAD +ggIBAIdgu6tEt0ukayOLO4FvBYmm9GxVdGEVf81C87Qe8QwLif1h7LdB8NA18OPa +lVScXGLaWvyJQ9DZu34jUt3m+AepvJWrxf8Ey5qzCrtocC9+6lPypYGpSIvsk5KL +ht9AgTLSbeVz8olH/2YOcfJGUJAQAMazrKffLjEzap739fv8LlVbMcUYErztp5J8 +jtx6EuzcD9U/gVAqfAw6ps98Gj0pUjTobbM/pRWZHE7bw+SrHFf9CPyQj8ZS0lHp +NfBGDgCVpRRHogr0aylapazcMke+UFbyiCi69JlcPns/V3U7AXLA+btcSTIhZ+DP +VcNwuDg3WcuEkJBq/ZNDeg2M9l47k3EzRinRmFf+pt06x8zpjZ/8/t+0PPsj8Ccr +WzTeRky3klffKl5EpM6J08Z1NQzk0D8gy0hY0OmmROftzEdkVSOfDAOA3rTvpe41 +57zFTgXAnWaMB4QOGkSm5ZIFNZLFIL/kNWJtzKobOIn3bEtTL7co/AC3+R8ZYAtz +tvlGD20s9RLuNZqG1tUTRAE96pUrGBVzygo0UHoRUZRwl1knQED3h11/YjpDRGWF +RaSPtyKT6Wht59eE4RPsxpKZJQE75UkpoxJQ66A6t8ajtfGg4wx7QTfLyZTE1psE +G602U6+evq+4XtTcPIcmANdaJJCly4qY07Jb1kkbIH9PlHFY +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF8DCCA9igAwIBAgICBGQwDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATUx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTcwMjIxMDAwMDAwWhcNMzAw +MzAyMDAwMDAwWjCBhzEKMAgGA1UEBRMBNTEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMZVunXL6FFloIZi +weDvxis6piuUWqB14367V8wmpFXjDQpx8ENVZ7RBDlIStIJ+QvvK7RZmMDHrua5I +N9oQYeBnsChXmT7vII0sZKQgNq0y5UKToxRcoOjdPhA49TVkzmratmxZfBxZHk69 +xEcYHKCMy/bhgSs6our+4zYOcnZYkvUTnrkrcmOGI3UftIuMHFVT7V/m7WRCsaJQ +Vhauy5Na/MBKR7K+B3hAeSOZhWuT8DvklTNrYiTVIxthDdt1H438Av1VHrQHHLc5 +rvomdcznW+vXX8WfjmmuMYUH3JVgMT2byWnpPnbGZ5r8DPZBiY/OYn4zSCyZ2J62 +giuNmO8IX6WibmbW+FSUadwLtm4EgzoN+8p9RhCNz7atcSzrK149ohr8WpoKbiCi +6eVdd6XwYgcl+XA+g0cojl36Dgi5NkvZtbHhSsh7LnCjOINX3MAN+7+qCY2/5Pks +pv3OYrK7RcK7VYbaJC0HKmQnXXmSGsXdFsZABF8TMnm/dulsXtYj33AnXusDzqow +2EmWjbvoWd4f9PJNXaQTkSFSAVFSBUU94eSgoua/kHLJW1Ac8uCC6mYu3xqT9USE +5CnoOPmeSTuSKOLgwbqA7tZODNIJ1FRJXre7iQfu4oeMcWDORZplLnUen7+gSl6K +ZEhyf9dfWeLgVG1JNl0OAVaL9P5BAgMBAAGjZDBiMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgEGMBEGA1UdIAQKMAgwBgYEVR0gADApBgNVHQ4EIgQg +GADA687i5eO/LxUPdaW2JF1UmXB4hkluKvLON4UOLTAwDQYJKoZIhvcNAQELBQAD +ggIBAHAFP5wmLnLk4nSaKc7lDX1ioehz7MWj7kk5hGVTA73zUwH5jWyQuXSw46/U +Jzv/6ObpBopXNRLKHPxNlUeIUHdLmYsl7pbPmxirDyr8k4oBkH41xaHwS+NmCR0d +bmYMYYmbo4GcsD0bXBmgsOaBsq8w7WHPeqfkLD/kZGOZxM6Wum02u+V8C+c9fBwY +/F5mee5Fc5b0+oWv8hw4g+NkmLVKt4tsG5jIDmRMe6XWjGut0XP8oyvC8FZU5jFI +t/97mRVUbESak1OJZk5k3wZhUo/VteugMQpaGyNU5lBbP5zXI0ERSBY2zuqIXTcc +Y/a94ZL4oV+wDygUj6bFCP0eKYK56c+0ss5z/bCKyW6EEWIFPtIp6AbZSeDSojxR +r6BCFUZe7dk+pSOYcRB8kF+Eix1bqV2UhKf6eAMLWZeN4h+KBuA20X4jraF1K2Mb +Hwm+rEgk2Fw73YALM7OazmXs+CufiSFkIqnVMJy2ErX77uR4wO782lTDNFLJKfnn +zwPT2l2dTUejdIya6LB98muP0qv6h3AsaJQEZDUiLbO5tkXeeP38EtLRaea9CWE5 +8LLaguNjVI0xtOaZluzxlQVf5leFirOQjhs6y83X5jlz84bQmwq5XwUb7j2E1wEU +sAO0tBCI4WzEvxYxKVQ3xN+FMUG/Q+OHp9PCTRsNTJ9HAcqa +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF9DCCA9ygAwIBAgIIAU55PqVdzaIwDQYJKoZIhvcNAQEFBQAwgYUxIjAgBgNV +BAMMGUl0YWxpYW4gQ291bnRyeSBTaWduZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFs +IEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0YXRlIFBvbGljZTEdMBsGA1UECgwUTWlu +aXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNVBAYTAklUMB4XDTE2MDkwNjA5NDMzMVoX +DTMxMTIwMjA5NDMzMVowgYUxIjAgBgNVBAMMGUl0YWxpYW4gQ291bnRyeSBTaWdu +ZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFsIEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0 +YXRlIFBvbGljZTEdMBsGA1UECgwUTWluaXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNV +BAYTAklUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfZw01ist+eN +/R1yrKEmpJaeGWa/cXQLW+ZyAWOFQHiDFhDzGuMEx8Fz4Rxx90AZv9H6J6rD9r3c +iadSBA2tm0qBzsGz57jaruTw2ZbatFjZhDzsuFGviXsYRLkmioPfwJDB4X/hLsSk +3X1d70ZPb+wphM86wldXRe6rXBrIud8O+5acUOgeO7haHARuQWsZ30vkFcaRghra +2TvAQpQX0mzjmq86D5aVCLauGA/sX1K48bIEA6SdhpEAFwRxNrNhIUNZstqsom1I +AUeqvLTjtBIVRS8JAz1u8CdVVn7mMgndPVVFvKUi8vrDcQliWVYx1CxcFaDO4mxl +zsIxPoSBR5gD3ooUNcgtXFB1sO5p1URYqaQxgXkKHR4PEKa3SGWqO7xpkCHG7x5b +FSNoBY/PTeqfEKVN2viDBvOvksHUuqFfOtB0Th1/AsjXnrL061COYfkv5YaUjtOg +OOSGGdZCDUdYbNRrtHR9A2p0BaCQ/HOkTEF+Tzu0H9wM+IumVfAB/cQQTGf5Iuet +BwWZZ6jjkOso06XzSmsVvbmRoppi844rwkDwrF49L8KuElRi+ZSj+16mrf2CDvbG +At/aOJ6Khxx4/NcatXgn9zOw3TcM0IW+OiO+IqTTkdu+R3Ua+H4aj6aUx+FLxiFZ +l1wVgZW2tBMlpIXNsaQGYA32cziSD4UCAwEAAaNmMGQwHQYDVR0OBBYEFENs45Id +EJIjB+/XovV37XUkRn8bMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +Q2zjkh0QkiMH79ei9XftdSRGfxswDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4ICAQBVr86sqlokkXP7hSL7hp1J9UUc1CPEaZDW6/+K4mHwKFv/0fso0U07 +IruVD7sTsCJ6lJ2bTCWfvo0jSo2PpMgtWZ4ateKcEYBN27k/k/lKcMZKuF6xmZpQ +/WwM5lhQxWkvL7CiqhO3T+vDrhjZwnfxv0/x9bYYr2Ge/0tE1Mlu0kVhg8W+xOcY +wRozVl/Zn8B6FEbpKFXWzHRh9KNiP0t6QzcWND/xKCzngpJgXurRRowWIjZiAzQo +WQlYbxM9hg/EbZAvEYz4YBnn5R+ojrxRoETi/nX70jZ8t7bxXvV5NAyJP/BgalaL +T9Ge+k9GXHGwU6HkKmlqZAFHL8iJtfgGG2suVgRISfl8H9zpGJQlGoz1n2iOEcQ4 +y9SfRGXJKwH+adX6kLrEYXUmU/lJ9vc0BG15avebmoqzEPETC5ZqCcSQSkzOpjmQ +EU3fdQvrGGG2Wm5ahHKixxJvlAuQSfzH4uuvxPdVC4iZvZlZV+9PLPKzFtmR5DfQ +V5yb1VFtzrEr6f8/IbGDIhDs0r5bpnd/yNJBhjdcEzFGSduap5Tl+eCxhEKZJpd4 +f3RPk66cNxQNjtLQ6akGaj+6NQG/S+wnilePYPsxqLE6PEpqPgaxfQVjGe9LUhMU +Wb6zdr2YjrI8UuwWEMzL0H/wc3nLpIlRr0f6hQ1kG6ZQLQKfhwq+hA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF9jCCA96gAwIBAgIISqqMnd2bc4MwDQYJKoZIhvcNAQELBQAwgYYxCzAJBgNV +BAYTAkxUMTswOQYDVQQKDDJDb25zdWxhciBkZXBhcnRtZW50IG9mIE1pbmlzdHJ5 +IG9mIEZvcmVpZ24gQWZmYWlyczEnMCUGA1UECwweQ2VydGlmaWNhdGlvbiBDZW50 +ZXIgb2YgTUZBIENEMREwDwYDVQQDDAhDU0NBIExUVTAeFw0xNDA4MjUwNjQwMTBa +Fw0yNDA4MjQwNjQwMTBaMIGGMQswCQYDVQQGEwJMVDE7MDkGA1UECgwyQ29uc3Vs +YXIgZGVwYXJ0bWVudCBvZiBNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxJzAl +BgNVBAsMHkNlcnRpZmljYXRpb24gQ2VudGVyIG9mIE1GQSBDRDERMA8GA1UEAwwI +Q1NDQSBMVFUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuY9VL2Cs+ +XvY/zaxtpW5SkgVbWMVJX249eDJBad6IB98Bz9fBwlC4285Q5773A6wRphqX2xpi +Hc1Nk6aWLRPeQ0GZL9yPmE9cNJfyc8BdPeVm3+hqD/Lg/r+4eEtcLagYJsI3kR+m +CQnT2XhDGpbG9Z6Xpc4Nu7DF8ChWrJyjDqTN2Hojh2eK/stQ0PvXiHp/mlpQp4WL +5YtBEbJFxJ8lmk3pPhAu3Mr6UNDINHydQ6vMGtvQc0a6+mSX2qs1mIlPMsH4Sa6g +fdmPk9740wnUoTDRDESl8fTz4CGmIdMh8ZbfqxPG3YTu68s5h5AKSLRlKufQvIwX +Fv0Nh7AN2qNr/8C2oTbZa2vC9grdclDrw9c/j5wH5iCsnRTGLZ0qKWAUXz2Gn5+A +FBa4oQlRuRhWVkI/Q4qxI//PkmNHpgRU6oTXrbIwqmgUsHt3AOb20bBMrK1NySJ4 +dfCOhPpFCFS4sww47BTIICJk5Ml/lLoiCuqRZhZwNILP63YIdeJt1TTCqgSVQ5hC +M25swGTu+FMU6m8Flqi5CAuB780sKl2W1v6LFuk6qnHSF/nBkroplRlCjqqz4wOY +p6HGUnHpJNJfJ+/BhICQ1uP9jqrmFqAB/R80E4yk+tmTEDZgBdPe/OY2yJIwGnGl +3peyqlwFfnQEZcOxTNeh7G1SMgW56Kn+yQIDAQABo2YwZDAdBgNVHQ4EFgQUdbZb +FYjpTo/PDaIVb4QcQwwH7EEwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAW +gBR1tlsViOlOj88NohVvhBxDDAfsQTAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN +AQELBQADggIBAFt+g74ABUsTPuv+WmLHal+fepjBCeBTl5uieupNBaSgZyrWY7Wj +Wsfjk5OZ7RSPgkX18nusXb2a8ZRdPOvb4NUv3NMoLJQqLqltoO+c7ARc0IwwNzR4 +f+v4NbtcbAOHA08/lnzG0iPwFIQKIxy3HsmaWvzGU1X0ZrK7YnPCNCXPUCgOk3wT +rYa4XTLvyvsF8ygFBwaHJmGbTJNZTKWzdLkTfWRZmUyoN60eWZbRiBbI2LoLRt5A +x7jf/MxjMZJ0xT4Ju4HlzbIeakUwIjsaP9+02reerWNzC3iHm5uOmi9jVakurF5h +Y99/ASh03ptFKsWJ+/qja1+kxpMpTx1Qg7yiI8S9kdbR56ut1R5WHC7ji0Rf8l/s +7cVG9+2CzssisG1Pjm+4EhF+lfD6x/MOUIhIx8tf5fj2eO7LjCxkd5w+o58EpZJd +SBCCHfGsk1tUuAvR916gaHM1/3mG0B5UEimKP4omls/r1FloSJMf7Q297JGM8vl1 +pmNwmOeUvODHVB9YQfBrNcoQLRCCfzJoIkjG/5rSjiggr+5kM5DFAVmE0TNKacCc +ykv4/Lh1RpRHUWHp3CSFs0eOzv++ITPAdVDuf4YxgUvIke4G1AwR8w75W/hqJuzm +wYBOo6cp1OE0S3pCnb8azgl0Z6lZFwBwcX92SISYeoejJIxCo+50vO9G +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF+DCCA+CgAwIBAgIESRfYsTANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC +VFcxGjAYBgNVBAoMEVRhaXdhbiBHb3Zlcm5tZW50MSQwIgYDVQQLDBtNaW5pc3Ry +eSBvZiBGb3JlaWduIEFmZmFpcnMxIzAhBgNVBAsMGkJ1cmVhdSBvZiBDb25zdWxh +ciBBZmZhaXJzMQ0wCwYDVQQDDARDU0NBMB4XDTExMTIwMjA3MTM0NFoXDTI1MDUw +MjA3NDM0NFowgYMxCzAJBgNVBAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJu +bWVudDEkMCIGA1UECwwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYD +VQQLDBpCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPVReaWqjO5TwE9WDxofldFv +8ZzkFs7RzmQZnbIA8CpqHQgSs4fdncfDz4UkbfmOpGF4HcbmkpZ91qLD33j3MTY3 +fg66ck1L7+wnSHdFo9Bvua8Yih978UzE/6jwpuBcFWL95j7srzy0+hOnm4FfO3Ku +stUlX9O9ZQsWEKMEXpawJDryrSYaJ+hpOWbtySVBlmeIzFSI+2eZS6t+zZNYgu6n +gCqIT8LWuJhPgMmCW4T84vhlgQ8lQ0sDn86/skNoZtaELv4pFiW2fcqnT+w67zI2 +9aDTXGf5XCdJQUOgTP1aE63/x5H0g0TCX/WK4Hd0TFt15ZnjuNKphlir3esH2lYk +5a/dh2pwf+7jqUKSqdEnrwWbDFkeLU7nqie99NLszcNfezPsO0bH7Bo1w2mWXYU6 +/3IHy6f3Ic4pfXi2tEnZ9nMV2QwOwUvKOA/hMMcjR5lM4hTsVGmHSYvqZxo4Aypo +d4GzF54xfULL7P343taH6eOwzf49rgKHV+ByCxrftBaZ1213yKyqA2GaIAiKtbAj +BcIHFj+2BCljGEgEj6Td3hLTJk7B8J1YDwW9DvA/PnA1tlim17jgtwu7UCOl9vUG +KZOGw6FGynDJAI5VunjJnV5w+LnnBtoGbbwPulyD5Du9D+o12zGBOBUo3H3GMCVh +J9YFJzT4YW0SeRFPG3hRAgMBAAGjcjBwMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYD +VR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTExMjAyMDcxMzQ0WoEPMjAxNjA2 +MjQwNzQzNDRaMB0GA1UdDgQWBBTePrSKKi6Nnu8eW6Ew4+GFNNa6HzANBgkqhkiG +9w0BAQsFAAOCAgEAHkOMa6dy8f+zFpsjIxNACTchVie+c6x/qzagqlPl9sRU7FmS +lebfJ8shApelGO+Pthc57cQKPysVOLIGfY6uYx7eGXjfkZ0ddxRCoObkdSrGAmhP +fe8nMzgGGJQF2gcX0JL33QP9Th+w2zczngNRadkdpF2vPKVQ8oRDb4sCaEG9ZWVn +B1VHlO7v0FRlmRkI/dt8U/ccYq4Pdjf3azizakU+O9J3Kjvxwi99KTTqbzRPMXew +rrcLnXZH9HyStFvOJe5yTYje5zaeHHaH+SS/zSBi6mtC8G+7/Vi5msZgqWvLiznE +SbFZt5ipTVwM2BD4W6ytMkb6n6PeYpqrGiTf94BfhqNKyv14TnzAyKLA6yZIw164 +S3MfoXP8faATaiDdSOebJ61WSiE7z2kBnnwtAXpZSECedtP6JKnGXgl3WfAV1+Cy +ujcKAQpTwTilR/gw3azUGs9AgrI9i1fZ0HcYrYAmegWhQAUscNCE768aDWn3pVpC +HDF9IJb+adpytTDWFB3gv+99DynqOutCP1xPEhXKpsbGDoVN1nSzaGOQFu3jLB1t +HNbSVuyj2XlGvaN/cpNfZp7lFZtqB1kegt0cbmS57SwPAr2TacKg3QwCMu4XKjdJ +O2w36e5vIa2QQNxqLyLLMKBe7OZhlfU8DHGIqPIwnGBxMjhVIN/PE4P2STk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF+DCCA+CgAwIBAgIESRfbNjANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC +VFcxGjAYBgNVBAoMEVRhaXdhbiBHb3Zlcm5tZW50MSQwIgYDVQQLDBtNaW5pc3Ry +eSBvZiBGb3JlaWduIEFmZmFpcnMxIzAhBgNVBAsMGkJ1cmVhdSBvZiBDb25zdWxh +ciBBZmZhaXJzMQ0wCwYDVQQDDARDU0NBMB4XDTE1MDIxMjA5MTUwNFoXDTI4MDcx +MjA5NDUwNFowgYMxCzAJBgNVBAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJu +bWVudDEkMCIGA1UECwwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYD +VQQLDBpCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJX01rUlLj3IhziFAXDppJuY +yJ9Rer5sH13xIBEBRbLppikHgTgUi40rITK0LT05uF76mlV0aN3a5LlZ+kuzh9xg +BG2gD1Jx0BGIxj4dBxUm/l/xqEO3QYeCciZHu6jmGoZGCHtMvA4q0kWyIiGYnGbr +G/XPa2/FnlzVlly1lOXXeEZNI2cytdQEA4B2D/xccXuLg+2F2FP3OADR8MFOwAcg +YHJgSizMHatujW5h4IJUzAOuKgsmxe/OU4WEXfGdmKAJ2v8VIv5raO6MZJk00VKb +Rql2cHLNVRQ+r1L77D/Dzl/gnNEwMDktUHLNiEyf3GYpkmKQw5WyrFd4/qmxj375 ++UYuFfdTetBEUIvsCpBdceLs4umE417c8rvG9NKXEENGGn/ffDhjB3u7bQfpLlU7 +oMkMLnN0+mqF/eXfsowO6hUQLkLG/dsvVhDhMBumOAPyaMzFP3RzZeSAhf7NXIUl +I0NilDkO1XzhYzHcVo2xX911EjCqP26tU7nP82aiE59zZlXXlUuLk2n1xRyG7FcY +fJtABNlmfhXj+sf5aQXQGJt419+yht+r+2fYpoL1LhKaFUDK93Hw6ErTXZDcj792 +6B5wa8/mMHfN5ugPf6mmyE4/P7dyCeNmLZixcYQ4kTGmAxMUTcmAzLQbFXdCD+if +0RtcpjRfu3Z5NTSlGlP9AgMBAAGjcjBwMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYD +VR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTUwMjEyMDkxNTA0WoEPMjAxOTA1 +MzAwMTQ1MDRaMB0GA1UdDgQWBBSBwGWSKnTPr5IgXfsIPn5eFQorDjANBgkqhkiG +9w0BAQsFAAOCAgEAg+B1RxWpblV9iMr01BdPCu1tdLWMFx3NrY+PI9b3a/jUkGeL +5Rpt6XE5crhLuzTr/zzqgGLw4Qqg5k60Z7jwwuEBHBW6U7OtQoA9odHZnChvkdFq +SlMZsV95NvZApKptaM5XAWEB+2fmgVmA4qXZS8Cj1wUIFC/jnXxogWwY5wSugABr +Fwazp7b9cifrWylKq0U5qNJiATNw3A6hbcfbfc14ig3g57tcZOsu3+1dq2bp4brn +z7PcZA7O2CFwlQKIWrza9b998KDpFl4QYsQpYS3RQ5+WoxBeN2pZEEV5zrbM9xi4 +DM44emuodft4c1h+S1IRglvwb0ou7to5V7/Fy6cBITMDtkixXVFBtCY6Y7lbBtyz +Z2M93F3ZfJTXDa3ENqSgZj7dfKy2weNPi6Aj3g05d1eiRg6GDPWuUoqeIXTh7zWa +1W/OUC2CRk6curSG5l7A2I1LfKqfvhtNGXTJQAtDXUJnJ4weEWFkJdCA0yUysZND +kRDuPe6yLCyjFGgsQYVPivxm/2zBTw/rhoBsBDKIN2quRzVeXs63qBN4bMvrVge1 +gv+09n+K9EgKUCkc/vBa9dSE6anY0nH08cDa36Nu4h/MYbln7GltmIEsVBV8U+Z+ +rpmkxCC6OdZ0LDkl54+vUBM49yMBgYSrwUlgc8VzMq0wz2sTrEmkbGS8Q3U= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF+DCCA+CgAwIBAgIESRfdwTANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC +VFcxGjAYBgNVBAoMEVRhaXdhbiBHb3Zlcm5tZW50MSQwIgYDVQQLDBtNaW5pc3Ry +eSBvZiBGb3JlaWduIEFmZmFpcnMxIzAhBgNVBAsMGkJ1cmVhdSBvZiBDb25zdWxh +ciBBZmZhaXJzMQ0wCwYDVQQDDARDU0NBMB4XDTE4MDIwNjA0MzgwNloXDTMxMDcw +NjA1MDgwNlowgYMxCzAJBgNVBAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJu +bWVudDEkMCIGA1UECwwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYD +VQQLDBpCdXJlYXUgb2YgQ29uc3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANQzv/5MhkQw+BVkWmu44urR +UEh9ZOjpfcCISYPwZ+oQUcsUErZhxellWY/98oePUT6Y1s08W1rkr71ebQ/P4hp6 +ru9dQ39E8te8TXC9m68Hs+u37BkVdQLXqvIBu/QS/Gg6UAYqIWaYGZ+kuqEa0U71 +u1Rcvnco/26zh/g1zqWTqCqFkmfPWZAIQnToSLbzVh+8rw2rvuYInntvJOklMrdc +wj/VkLqvb50vCxDayiTjV+pcgk8w5Bav2/WXVurePZuUqEYRHGYA1efdJTuAgXrR +6wXaCOJMH1MooTcJL7H97eCZ7pNU1eBmRhsQJhwbxAeNo0tiZp2+XxyzuT9H9kn/ +p3CK4b8C5B+/2klQ8KobFZq0mmJCezMPuWyCB2bTK6XMxsofYwuPf+uy90SRz59y ++upSDF/dyopz5GaatgJ2ukSYJzNH5ilDPYJiHVV/2KR4jYyM2CuYD5rxhIjy75U6 +izYmpl3NGoMg4c4SzM1pSlvdEylzdbd3Gx5diLG84ymDJKjVc+DBHLHe9iu0/JcO +NmsFXwxOQ+FWRuHnKliPtVxTXNQTViThrne7F6DntAuq2Q8ef8pqj7kJIgtwKwsi +zITpHVTeW9IWsh8FYMj0XwjzRtgAv/HNM57md3B3tHUHKgufKjn1RCldt8jetNru +jywYg45WrSQh4AsnEjVTAgMBAAGjcjBwMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYD +VR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgwMjA2MDQzODA2WoEPMjAyMjA1 +MjMxMzA4MDZaMB0GA1UdDgQWBBSDadJfTXzw17y2nFeQlAJmrgdW4zANBgkqhkiG +9w0BAQsFAAOCAgEAOIYby7AReGDen9GVRG8g+9ijGncWRsf1rzafHu7S0d5RUWyt +iCEg606cmhWGy8/ehPQ662Q7VRaMJELt7ktpSKrWOADKHzqNIPyGJfQHexI5qew7 +pYMn2B2/qe4Hp6uVIYMbxs3mPvba3JX7E0+0MDSxAq/EOMwWejmvE+JJBzFmt0uU +GpTlj00SUsBN1NR5L/stV2tshIkD4+Gf5v3lLz+2QDeqL9SzBJrltLAzOXWcZMk1 +l4Fv3aWJXeY/XZR2mpfqAu7HeVv4VHPqI3A7l5o++AJuzPonEeU9h3cu++b8nTDP +BuZ6X2SyiV1Izl3ZKWQwcXgblu6QGjz3c8YSwn3JINpK9KDGMPBXaxzSMgJ9KcX8 +TCnBMZvkBy6aWEh5pXnPb9djnKXpV1UCwqe5LxTvhChHPyGF6KC3iNv//+dkWPEg +erLZFnVD1qsYVM94YcnQMxFyu76sBW+wHEBTw4TYKz3K4kiGDTonpS6DYqZ37SRy +tncP8hBzmaVphBnSKUcvIiFp5uhe+dXK0HNrsknHhFzI9HbisJ2KbS1Q3axIbfVO +QTDmdFZXh+11kOUaGPmUWG8sJzJWSy/xCmpASk7Spq1Fa+4aEBFfrcg9Wj0NA2n3 +egz+cT36dhcA0Df6RmbXgBdnsjE+q6UlzVgKActUabXV7h+4WJf0pJ28laA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF/TCCA+WgAwIBAgIESVaL1zANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTQwOTAx +MTE0NDA1WhcNMjkwOTAxMTIxNDA1WjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQC2llNrwv8I7xvQZU96YR3HtJ47E2FxK2Pkzq2Qbz1ODHgd7M5t +m9ozfoW0kk+RnVJ2eynQRBxQM2oHCgG7E6uHwnl+LlkXSxxehqjowF5dgPqk3chG +BmD/yIZniau8N/d3KL43/eOFsPKul/Uh6w9L3yhDiTz7Eo0VsHG23RuRqGF6RW+d +X2e1ZwkMnUPc/tKxejMz4DZSk2kZT+q+gtylcaKIDoEWTqV+L6HLUOcB4xYmsCpw +wvAC4S+1ECeOje1nPzDd9qP1aMTVPRuhM8SOEYNVxwCR4HNMDusfZdNYS31SNurd +zxNcPe7aqugP4ohMWB3o/N4cI1yshni/NHPZkfaw4QokHroshGZcFYVU4gW3h188 +TvkWi6DZN928Or0O1MriOI3PdO9egRDrQZFEjmSvMB4VzLYjmufc7+Ix5prlSqIL +OvK2ceHDCGLy59nLMwGwQ8OEL8BdW9FTmoP1/945iCjC7iStruxuYooRbO1WJHun +gEMPe1f44FX81Jpq7X0AEwEOBEi9o/H/PH/mWCympdH2IaKlrUaOuOxHsEKjL+9a +ayengoPxnHAdjb9T3qa1U8mqspVJ2uZxK1IBtEVpg4HJgabR5yXZ8YvAs/O/D4St +9J+Iggi0Z0CrxhT6ZzLIwHJMu1aNpcc688QcKHdQewckafR7SaJW3cwinQIDAQAB +o4IBGTCCARUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwgZkG +A1UdHwSBkTCBjjBBoD+gPYY7aHR0cDovL3d3dy5wYXNhcG9hcnRlLm1haS5nb3Yu +cm8vY3NjYS9jZXJ0aWZpY2F0ZS9jYWNybC5jcmwwSaBHoEWkQzBBMQswCQYDVQQG +EwJybzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWExDTALBgNV +BAMMBENSTDEwKwYDVR0QBCQwIoAPMjAxNDA5MDExMTQ0MDVagQ8yMDE4MDYwMjA2 +MTQwNVowEwYDVR0jBAwwCoAIRDPKmBoxb3AwEQYDVR0OBAoECEQzypgaMW9wMA0G +CSqGSIb3DQEBBQUAA4ICAQALrejD1FJofeTQ5eiCZxSRthWCPJTkOasCE+3zdYWW +nQzTB2fRDx77mS9win5DsJnj9dPrwghQ8pzAtZ7bhV4+FekfTjOIffAmv2fm69Xi +nhrF394lYXljaObcTzt1JpFpvbSTa1Rv4z2gOUKu0rJwQsf6/Qr2TJdD4TVQEp2o +xWRBhnMT3WdPxziSpHb3HZ6XpLu29sWxdPZc4VQ63SzHWvi8FDPfTD9MTX6Uin1o +4SqzkSjb4nrDI9nh9BTMeZixpsDyELt80ISY/4q6NcS2I1HBQQ6xE5ISg6wb5zeL +g1HFIAX/y95SFVIg1MsXnQa0Hx0XWC6pn2WzaGUUPFaNISk+8BRfVEbmqU3HXyPE +q1W3liiGedDsKRY2IogMNbqKxst2lJo+7Zy6HrLtEOPwjy+slwVXzIavFonsS4vQ +lDma9GEa8qdDSebbdpb5C4CZrli/H9BW88UF13shxIzUkNFC6iXSqTOLPdJtqkzn +9oGL+MHOxdtWCFlMzzrntx/bbaX+VSns17OKPzmya335MrYSFuMc/pUR+KFl1nkn +r/RRPBryPW+244tNQOBjUllv/wHflJZUdf2YiDVuk6+t771ywx7aKPBG0vKvloa6 +hvaDipYlid+fXn++O5MliGkRiaKXXi8lqrzuhM6LpIn6Dg8HkfYkZQ4+QXRX7FSt +1g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF/TCCA+WgAwIBAgIESVcI/TANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTcwNTI1 +MTAzNTE1WhcNMzIwNTI1MTEwNTE1WjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQC9OchTuFNcldV5FM6KHGEEA7SCpAkMZeLpvmjrYJ0VslzdSt5z +/p2KnHXzf7idFbDLw0ZQTWdmCwWrRMBFIHvJSNbUphvuX02VUuiPNOkhmAq32a47 ++h6xLNBHopyJcU6UbDnNo6wMPAtkthpuLmC/gkTtJgnVOXwIidfauibacOZhyc3u +Ef7Rytc5z4Dqr7Eu8zD0MonWDBnjMLxwzTO3v+tsYFEKSt+a9oE2rSlCDypSUvwk +bQ9X0TPUkcC9htaDWBYZK0sK39Kin5mS7a9jMPzk3+id8WdgAAuTCuQQb5V3YsKw +/52JxwCEOFjYmHFyVfWsuPW9qGpPHSXyPJyp/JjfY9vKAoT+3DXWI3oPmpzUV0Y8 +6y3TChidBwyqnpLvKeZkzO5V9nQ3TbqaGrEaS8hLZykLxn94g/P+siXEkz7wqlfr +PkpbuYFltKpMCUxUY7JtokHvHXQLWpXkPk6px8RiCc3Yb7llRBmIC6vCUqrR8dDu +58DsuM/fLwP5vaDW1sjhy20+jrUFloiqjgkRC3ekm1LdsLO52bIlk1s6O8MDSx+2 +w3ahodOWy0qErkX63it0xaLB2Rfv3WUVJgV88k9qnDJ96mqRHeyvkdS4QF/YU1Jj ++WoZxWX7/Mm+wj7euY2mk9SgK4jj3OrG6tYEQj5nsR4DuTqhCHulaBvx2QIDAQAB +o4IBGTCCARUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwgZkG +A1UdHwSBkTCBjjBBoD+gPYY7aHR0cDovL3d3dy5wYXNhcG9hcnRlLm1haS5nb3Yu +cm8vY3NjYS9jZXJ0aWZpY2F0ZS9jYWNybC5jcmwwSaBHoEWkQzBBMQswCQYDVQQG +EwJybzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWExDTALBgNV +BAMMBENSTDEwKwYDVR0QBCQwIoAPMjAxNzA1MjUxMDM1MTVagQ8yMDIxMDIyMzA1 +MDUxNVowEwYDVR0jBAwwCoAITTCjKkZC4Q4wEQYDVR0OBAoECE0woypGQuEOMA0G +CSqGSIb3DQEBCwUAA4ICAQCTv3msrXiiflo77SDzryg5ea2Gk9/ee5V8r0r3K0q4 +imWW92Mnaou4gsHN0a0QpjpR9GeYh52atCZaYRSPsMU3yxqtmOvhrR5vK33WUcRh +/1BpbhOxwE/ugZ+YeD2ekSyPwRPQtoKXZnQKKblifTrYLq7cgRmF2cda1tPMXv63 +zt01W0u0c2Mi7ELgVVQ4g5m2tbYzNwCZlxt6xYzlexnBiiL142AWbpzbqcN/ptHv +C2bJQh7ciPL/u1+mw47P4bkdXP6q4gE8O6gu5OOR7aMYj+ezoCZRMjVZ6tP5rzos +N9Y6d23gM2BMwkco2UTmhOXqYiYTQq0RBHRs76mC7liHuZRyDkrkeRVoW/Dt7LeZ +eT71S/WrFWU0LGqiIoMLQxUoZ0AGsyJ6SCEAFnsWZyxq9i1U4+urjJ45qVY33D1C +nepXPxiGfYOysU3DrwOtVu5j3jmtFOZBtdXQuRLOukQTocIWZfmRWC1rAZE4pDSj +UZBcxaQSyt2VBMTf9VooiIcoZK53jrGPs5ezCABTDGIKhGtQRLV5r49FGLD8D3xJ +1ymCMzw80OgVSAgClmfzrTpjSYTrku23CylJrG3t/INWt7I5+ZU67kXs6RwvQWs4 +VslCKFqT29/mnCG0RVCDfnTmkmgDyT4EzuWps9IBxwClzZcAJTsszSebSjq0oJS2 +Ng== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF/jCCA+agAwIBAgIBATANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJNRTET +MBEGA1UEChMKTW9udGVuZWdybzE3MDUGA1UECxMuTWluaXN0cnkgb2YgSW50ZXJp +b3IgYW5kIFB1YmxpYyBBZG1pbmlzdHJhdGlvbjEaMBgGA1UEAxMRY3NjYS1tb250 +ZW5lZ3JvLTEwHhcNMDgwMTAxMDAwMDAwWhcNMjMwMzMxMjM1OTU5WjB3MQswCQYD +VQQGEwJNRTETMBEGA1UEChMKTW9udGVuZWdybzE3MDUGA1UECxMuTWluaXN0cnkg +b2YgSW50ZXJpb3IgYW5kIFB1YmxpYyBBZG1pbmlzdHJhdGlvbjEaMBgGA1UEAxMR +Y3NjYS1tb250ZW5lZ3JvLTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDPkcr2bM6mck14583qZL4VgPAnQHP5mRzfhiRkef8QrRhJJuguCMeKELOnmExZ +MSyG9MQ2BuzLZqpXRfqQNbtgkbX1nebOnbcGO5glpvniT5Ni9BELgsiAwUQGb7li +cPBwf6nh8gWIY7Q+3oxbohFltFxrjcjksoFBm1ZmQ38Jwe6CF5oyf/IyFd5UXozX +5h83iU+XOhKu4jfxg54xChS6RE0TwB+XHFzKuToLp3wcyB2QB2pNZ3teuEVTdcUC +2AqKSwC8NRVT33kaIkPjl+d5F4KmoRPbTgAyBCPLUAbBISC8I4HYVcdoCsEu2gak +/eFTjOeAD+0oD3nOYA14TFBXvwg/ZQmB2tv9nPQMyooKVboYxL4cfgm1pOx58Lfj +LQBICgSdknVvtXSb56AUQbUPx0Ejz/So4w4USPuORoGM6tOYxjNEXgMqTTGsuVeA +rGF21VilNYL/zZrnZi8J9rQuCeP56350KNDeb0lLGrAvkjHWoFIleZmSGWIn8Scy +1VoVOOdxloqGBZtxYixNDB7h/2B6P21ACcAZgX4K04BkHbd4zk3dFolmxv1o26nR +2mmzy9NC9fzbE3AK8+giU8sr0x9MtkbsL/8WSArS/hkys5JTQVwIgIZw8CMR34L8 +l0aV0WQ7E8ZeqoqyNJ7SqwNYCgChvir9Wh+3DX8nIBB+TwIDAOLxo4GUMIGRMA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIw +MDgwMTAxMDAwMDAwWoEPMjAxMjEyMzEyMzU5NTlaMB0GA1UdDgQWBBS5VLh/Rowa +hb1FW4aUHu53+oARQjAfBgNVHSMEGDAWgBS5VLh/Rowahb1FW4aUHu53+oARQjAN +BgkqhkiG9w0BAQsFAAOCAgEArZai1N0sPE6xt/IQmJloFKZeve6HzhEeU2R8dn3a +jIGqRSeo8Lksrx6aLDZPT0kLYEZwjYIAhSBhr6/Tjw8JXVKvDhaPDmtT73D9eY/c +dIGvRoU//qyp24U3ddlliqjSxdLxibBw487P3Zi0SDZPRXpA7s3jdnfrLvweyGmQ +rob6mp4NSL/0ayxidCjTGxNdiD70ECqMvw8f2IsE21jK430BvSLLyA7yMaj19taA +yBkVjrugpzG+mnIPmBubg5Mwg9QBnXgAAfRFUY0c4iMSNsCQUTB/eLDFtVqSEITA +wH7ikeZQK0YD5xSB+EAfFb8//FBQ9aHTIAODa1JZ63ujznENo6BLlQd26Vn1cSEn +ecbyacITrTX99b9gQ7oifwCl/mKC8HkUjGxXlK2+P5WfJT88Fkam1YIR6vsInE5H +nLcylJTEsGHZW6GL1katvfqTYU9EH+8VIS/yeHnnzvatHZZ3KKImsMUmdHQHzS/X +ENdAqUrGSTV7gS9PrIm5BKYiO2nP2poKiwBkz/GdBQdh94+S4ItgT2iYhETEc9Cv +znX1FbD7aeHVjp0JOb9NLU8M8eKQj8ph7u8vfw23BjdFNPFsUum/TFYSIWH69fZ4 +r/158/OQPS5W0gUVZSd0jXWsoIXOss3QtjtTiaJJEFAurySupqUqwwzFe45JbQx3 +9hI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +24YnLM+7w0NVPvwClrpt +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +VqR83C6ypq/Vh+NSvQUj +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIIQ05EU0NBAAUwDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xNTAzMjcxNjAwMDBaFw0zMDA3MjcxNjAwMDBaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCw +ErEcqBe7UgPCqEtPlbVeIu82rVPNM2ULMrKxMpYyS639SJmqJ4y2FfM9zKHnbClC +61V90MKRpGf1yiKrzYw21EYPvrTRsM9/LREupd5CEtoHnDM3qtcqu4Z+/nViYwTK ++bRba8ZC5Grbe+wF6rQgUODcYklvO2QL1eRnGOH8Ee/dqJPlidWGKCPUWItHZFmC +8tv89cRd7B33eL7LQQ9OFohFqEmEU7mveE1Hx2LYgC/+zvKweGvc5l4MaJ4Ru2jo +7/Fp3/puwFdc2xR/X/531Qhc1Afboag5rq0QDwO2ODeoxQ6ipwD9olKEHQcUsisR +MHuMpOGeq7l1QL113vUmUhgSzAT3R1sCI4/yMya9yf8XxfsboIR8jL5BIqq8eBe2 +UwMvgWZH7KSRddkDIdNK3DHxduVc4jFJtMXwpvzW4s50zO/cFK3i2prD7/lpVa8E +y6/le5OAss9AD7dNgVoGHTTBxG4K7htzp9XU9y+VwK8eqBIkIQw6P7ovvXfYPAQG +ZL4n9M9KxhCqB4Jjd4Ix45OFwBj8gNd73BXifekooU+aUhqyaQmMAkEW2ekDLHiU +EvT9v4eCwcE2vIXcgfFqtQZjS18Q9aC1I69zFaYe3p9fGpGyeXgwWzYVtD4Ts+dv +TLHm0SYTlAkMI01vL1tOcxvKKVmya2JEpOPUd72h7wIDAQABo0UwQzASBgNVHRMB +Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQUSmc5ih0BIsU9 +QFenYUk0X8PnAjQwDQYJKoZIhvcNAQEFBQADggIBAJ+ufz3nwS6ofAchYUTXd+wD +m4lixiX0pgWDM9NpcDFlxm+HNLCOIPSRpxKmfpWIE76PozVqLdlNNHDjrhJeSG2N +Ec7EXq1na2HUcm2BGljS/jgesJeZj/yjfnckl+1EswwvYx+KARo2aq4u/TX1vs05 +MmyH3B8/c0z00DN5PCEebKobV5bRm6Ii53h5JsBVJioAFVaQvJxs9WhRPZ4VE8Fq +oI7qV5HxfJiRcgRh9Icp5AIeYa9GePfFjh7GAKCO9ybQDcM+lUai4qnU49UUKwJv +SgeV0UyZG15OMb7oI7IUwbIOLxkAvLNlcf6s/hFgrHj+K6GwnMqiP7kS0Zr62DXN +w9qF/+d4i7TxKdCy3+ppx6ERpGTzSfT5QR0gZF4NKTVPZ16tjHxAtiFjg7M+CZxf +EAHCJENkIeAgTw7YORw4Lhf8NICK1+EyHCr5FdhGQoXWl51CmFjq+Hec4hCqGAlR +BE76Ovka5E6Q8WWDCN5W9a8z0dha9LeGLlJgPaNAPS8YIxXNFTkqUMtX7s/+Caag +7BVaMFomUTSNRLv0cTRKAAwVmboijFCfxzzjZd4bPIlQN/nDrJLkCE8v/zEtGFUC +sEWzbeOjFyviQJpNza3qYY3EUGV2pxcid6RcsxYV2G+gDUkc5pKpOUKHXXJlXfpw +bMto8MhsiXWWXOyZOWIe +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIIVf3fb7nGNpowDQYJKoZIhvcNAQELBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xNTA0MDkwMTQzMjZaFw0yOTA0MDUwMTQzMjZaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +783TYrfp5XdO1yrrPgEuulVnUPdCBDBlKhKiLCMHSv04YH6b0yPoVIombGPy89AA +ejDWWR5e64m5aONBk1+KzzYJ88+s/3y27N5An3g/3vaKpDhmqpB43AXR2+qOJu/8 +/2kZtcVhLu/fgj2SHYZNr2c40Jz/JfQrpMoLOAWZ0kv7ohjWpBfIikU3FjQw8zwU +BKxvqbWSxra0+ks6NraOpkuilYumyAEqTiaNTSTNucVtyZnkXh6Wii3ouaixsj3h +D3sZjzTgbCGyp4xhoLab7bTBgtMlGzt0vezBUsqB/f2NvJwopnMQTak0Tqd0UEwU +LzMpKF1JAqYJKT4O5lxlodDoaYUTxtGAJS+86ivYkPNxobfaTEOmo0raa5kAy0xP +iscyQlJ/hcjM3znO1F292hpFvDVobraU5tBSwv0sXEVI6OLI8PbmSEym00dDlDHO +J8rA0ONyIguX7QNsl8lyR7EsaQ9yXNAs32ajdb+4IzTXn1C2ciKmgS1nb/J4V6Vp +nZnita0o08NQM0eDbNNf5C8Moj5iA9Nq7i9T8BRM8eP1cttEOITsYxDGTA77fXBR ++ULVXC8Zgbo6x8UFWIgYzK6qruVg4MawDoPdV/eqSQaVMz5o6qEoq60OF8Qon9XZ +MrTmY+NnKu9oBJ4DjVU/nVLzEnANO06Nkth4shrRGwIDAQABo0UwQzASBgNVHRMB +Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUa2Im5FOU+Pr8 +demnh93q6M22T5MwDQYJKoZIhvcNAQELBQADggIBAHjP2YEB4CyDuc0y8XMrJ2qo +8G6EinFwUZFrdFErSL1Tnt2FWgGRbtxt5hwh8DVecREXG9ZOIqQr+/vTjYu0xJdC +6fO26l08Ql+qGyGkdGVm+ccCNuE+3qdiUysuFbPB7lIyl2DyC1PZz4lcMN0QS/Js +PfCT0mMP6NlguwemgaCJzfgD9QXkyGPUHHYsoNMDPQdcllYNw5moTTQ9ujmMZ5wN +bwhzi+sJm1kz9xp7jHqjGQ7PHSXFWpBgzJ0Nnz7c2W2dwAqOve4StaJrgjgMGJGd +2F0fWe/wQ8tm07a1rAeA1lmPeUnkIOTFRABVEkp3e5z1nErPbVxOH13pwLB+EkGt +bfi+tKCd5FYipdd3suAliVoRjlgHxx2JxBZZJwSFJ1fWp1d3jK5am64+cdtV4055 +Kx3KAOG6ITQEjszckGC1oi0umifWWqGsHBMrqXKt5LFD+HR/mQWELyCMYln93UhJ +Kv+KA0Fn2aoUCf0iQD0WMTiubc+YjBeHv7iJA5Hjexd8nlzQZcxOtSV/+UrCHhM1 +328TyAmkm3feg1dHIHpDmPue/8FWGTEaP/+g8Orhj0gi1KGkC58bQcBDyyptgmeO +v6IQ2JcbcgJckmD7m/cJXsCI6RXVs9wZug45P+oIH3FBipa8IorAfvUjwNxkL5Pm +dHrA7XNQ7Wzm6adSbQis +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIIcG4svCQ2sfowDQYJKoZIhvcNAQELBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xMjAyMjExNzE0MTVaFw0yNjAyMTcxNzE0MTVaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +MPY8gllarFneLwPaKskp9Z6wSE31ZS0VH899Hm1Jg/ecdivqRCNupLuK2PTtuSUP +t3dECfUKvKmi4pV0TMrVUBGtpdWbIutZTkn/cHbyg+V9MgZYOhxnNa91G5YaxPJl +hCcqp40JPaRwUMc/v+kt1KnVF8S6ZAQMKjuMzxKsdt9KMVuBwrf7c5daVLGM31N4 +MA89XlUzJKcZja4Yu88aH+qwUgf6V5DBv2eDDLm+R+ptEMzTI1pI6ueTuAMUDiGg +3+tALTa6DNrXdZUkQqYUgnQkgXgFB1bIwD1bTNfMF/stCaLQTMigSkOm19uLg7H/ +hCNPLei3CEE4tAoyfi51cq2xvHFx3N0kaqS0oWrwtYO29IJWzTf101EeyqtCTsaU ++oIqeF012mWT17hUX2LibOXgb6G3Po1q1ZFjyQ9lbNKkliVLQUyy6H7Do8QRUOzo +WozOxJHA/W6noB2RQmj2+dKn4B5XcOf+ld+zf0IwqBedl7mAja4xWYFZFX/o5lKD +tdEZwAvn2YWF0LcnpkkM7IKAoxCKct0DGUi1UP0EM6vVLmnuFmMC3yPFRMdJ6gaS +BCiD9b0HgX+S6Xl8lGEMYuGFTkZnx8TVulEFbKMeDVbbZldkDvlVZrjzBZkKJDo8 +zAWDA2ZMCs04OT304qAEztdtVPtd2htdUwSOe2g0BQIDAQABo0UwQzASBgNVHRMB +Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7kOvj17OElGi +NdFGjJyJONBWMBEwDQYJKoZIhvcNAQELBQADggIBAFMgi6PBEAhjhm65m5Gq26gC +cK+T+dUXNjDDzihOAzgK+/e55xhpbwsRgkEtjR/LbCd3SbUAOjsUpnOcqoOI7o6q +DTyfyvZTAMqlPw8FgsprVzqSHen58QxFzMizeP4eN6k82hI+vh3BpQg+ArNNUBrp +9RSsk3Kgv5+PtiJf9V0s8VcfMmqR9M6OHa7wxJoHKZ+nqiD2igR/OAh2gWkesRlh +9WtfupJrZ+Plamqa75bHTodhFbXLzT7GMSCLckhzKc4nfUvSWVTHulyrQwlcoKnk +XY4GpCVHJcUypiqdaCtNSBSj1rElcgcx548Q6r3MfEYWvwZeRSXkf1XmsAlhmlcV +3bd0S41B7Vq0wrCuA6Hy759ruo061/69TcclEdBgBjUTDnflE5hs4yV5cb7zcy6R +x71PrR/xYumg37Ya0uxely7rAOvEO9n2+2FBwACbZkfB/jx1YMjcz+MyezKNnPjK +kCYnuGu9E9WBsP0+rHPLmgS38Wz96UZKDKhMwBk9KDhW1XRqONZfcffeRu5w2cfn +H7xl3h0PoswEwFBYMtZKvJ3Dho/nAK9HnG2URJJ+2RBIoebDav98XFbNXOGJcThF +wo0zgsdBT7pAFpUJFN+Ci9YUhkCT14fM/YBR9HKZuE7/miFCcBhyd+rflBwDoikb +DUX/NxlREAfR3YLmkCQL +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGEDCCA/igAwIBAgIIGqo+ZY/ckiIwDQYJKoZIhvcNAQEFBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDMxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE1MTEwNTEwNDgw +OFoXDTI0MDUwMTEwNTgwOFowgYgxJTAjBgNVBAMMHEVDTiBEb2N1bWVudG9zIGRl +IFZpYWdlbSAwMDMxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMTMwMQYD +VQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMx +CzAJBgNVBAYTAlBUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsNSi +sB8N8FbtbgzBK/G5nV+zHw3qj1IV3wb9HgLR5f/TfqlO/O0Mw3r2RuKkLHTYFt+X +v/i52Y2oXYJrT0hWGe8AaQg6m0NzhxDs76tH7hUbB/e5Uet/vG0wkKxtuntoeT75 +fJ5A3gMEkoHsHWt54TQwbuvi9qxzcDm3idA57E9LQbqyDXH4ieHoIz1pkRDW52xB +LgS3Du0K2cUP+137nPuNxHsrtQylIM5f4C6FyWzHjWtUyJf61pa3Tt1ogZr3s+LI +m/6BkjASCMeBtI1IcXXmVxuILoE8SD4cTZSP5W47gaWczOa4UrPOebCux3K4ijMG +FpI3xGS2PkFLajitaBM8eM1KazyZ6WfQecgFoM/ywEbMkQ5lKW6uIyoTC5Y9IyEA +IvcfEHgWZEDZMgjEmwx/PK6IJGVOilLNaNYbTJTgueurU+L18UJPZ2SvBRlGXRZR +XJMEK2t00CwzWo9nuDR7or8A6PaKO2qHGXw6B6kBBMezXIu2S0c6ixm1BF3U8GJK +acOB7MsjtRpNrJeTVAOQT2Y9ALlvSyJNSfoTqwbz/qSfSzUaZyhuznfSXuSg5QEE +Mv8XvsmQNe17nDl153IAhnynHTuyLpYWBXS1scYEaFMxFyFjOQiQg+B5zSenAzFt +JyKgUMwm4VqUO8lzsBMtQk8GTzWs5dhPMDl1aLMCAwEAAaN8MHowDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFKDBYH3X9UWIDqlW/vCh +0y6gNyRwMB8GA1UdIwQYMBaAFKDBYH3X9UWIDqlW/vCh0y6gNyRwMBcGA1UdIAQQ +MA4wDAYKYIRsAQEBAwEBATANBgkqhkiG9w0BAQUFAAOCAgEArmCVCyjcw7Nufsa/ +YsWdWzcLGK0M95DNbTlKUeiV1HB5dK1v/L85NJGTCnhdAnxWWvILSXXaQdrD8APo +Cc8vHWPRMvCMMdeCeelQZ7MaN+CTt4St/bQTZ+QJ+urR27Wn60IufByglAfyl9+d +Cs0EYTPY6UmQaP9oPRpc7mqki0Jolq3EnObCpzwVwsppo6chjgt3ZlJq4oBJVvk7 +bF65SfoLWvCw9M5aSSKe89TcxOyl6Oy9/ZWzzzth+gUfYDmF6bGd8rpfvA6YZ+wE +v3Gh66okk0KrD+6kmbZQRqvdSTkbUxGr+W8tWpMrRwvw1B3aSVYbOlMRwldnmNWj +WCMev/pixBaVPQcNcAU0xfHAhD/+w+dCrMDsWj1KPCkbfmXjvMjhnwMwWL7qScJo +xnaqsrBaePOaawfT/SwvjhND/BODvOxHaY+Mk3jGN0/0FPPHFgr1mW5roHbU46XA +PpRxAZvJHRZNGVWLed8Q+TjNPVm6FtG5tatFmPwyZQ6yvSlMiQ4tpkPcMjgt8JDH +E07JfJTdl+mliRe9fAuKDSW7muJ7hgkCse7G6nLuhWl34lBd7L4bRyBuo+2z3nyK +d5/oPB5V1GZTHj2DeB5JtrK7jXmAwOMOF0juIbEbSPNaGH7GecFyoGMTNX4s5TJC +jCeIuz2z952LJeBPGKTTUP+L/rs= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGEjCCBEagAwIBAgICASswQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMEYxCzAJBgNVBAYT +AktSMRMwEQYDVQQKDApHb3Zlcm5tZW50MQ0wCwYDVQQLDARNT0ZBMRMwEQYDVQQD +DApDU0NBLUtPUkVBMB4XDTIwMDMxOTAyMTcyOVoXDTM1MDYxOTE0NTk1OVowRjEL +MAkGA1UEBhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNVBAsMBE1PRkEx +EzARBgNVBAMMCkNTQ0EtS09SRUEwggGgMA0GCSqGSIb3DQEBAQUAA4IBjQAwggGI +AoIBgQC8yoTBKqq9wjcRk1N9vm3Z2egeyrzTIFRIffap7x3NoCH8quoCjs4P8TWn +D5e0nygNtJf4/1TiGXfwJAFLBJ3uDh3/EwLd/MLsnel7acMgLi6JKFyMiHTwP1Yv +FAFaBlKmt6ylhJNUWSFB3GEp51N9rbCRFkvx8/sRmYB6CNgLkXuDabDHpDXMzKuJ +S71MelOUQ1AOKm+D8BfDZFBuPCiuXbB9rMaDoe7qbq19WRhF6ZNViSFuff7mmA/+ +md9TT1TcexdnPXND1E/QuUPQ3nTkdi2g+Md6vLN9vjKO+MDkLcaO+H0b5N+/dgH+ +z1pjmFtlZvXR3h9loUPMQ4punlY+Wsl8CYdrwWCLm327YTs/aH9Sp5u9OkQjYskW +QQ+XZ0m9EpvkbbY4a681fxtInaIfUeYAqTsKTM6s7CWAzLXR4T+Z11O2YjeZKgVD +fcZS4R+ZtB3QoA7/WepN/ACdcgRvpxKmnQ+VH5BtVGb6x4UlywEl0RSFoPc17wNW +lY7ZZ4sCAQOjggGiMIIBnjBvBgNVHSMEaDBmgBRMMk8c+mUfBztxq8rMXF5/6KRk +sKFKpEgwRjELMAkGA1UEBhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNV +BAsMBE1PRkExEzARBgNVBAMMCkNTQ0EtS09SRUGCAgErMB0GA1UdDgQWBBRMMk8c ++mUfBztxq8rMXF5/6KRksDAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAy +MDAzMTkxMTE3MDBagQ8yMDI1MDMxOTIzNTkwMFowEgYDVR0TAQH/BAgwBgEB/wIB +ADAyBgNVHREEKzApgRVwa2RvZmtvcmVhQG1vZmEuZ28ua3KkEDAOMQwwCgYDVQQH +DANLT1IwMgYDVR0SBCswKYEVcGtkb2Zrb3JlYUBtb2ZhLmdvLmtypBAwDjEMMAoG +A1UEBwwDS09SMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wa2kucGFzc3BvcnQu +Z28ua3IvdXJsL2NzY2Eta29yZWEtNGMzMjRmLmNybDANBgdngQgBAQYBBAIFADBB +BgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0G +CWCGSAFlAwQCAQUAogMCASADggGBAAPTdHi+QrcNBmES87UheVft9V3NJhg7w03I +yZivjfSfKGm/WvS7wN3/B4Hm/n5wBhUHxmoeO2CbmSjCjJA8yZ9WSG7M2J8KReK6 +POGjzv3KqwAwbz9g7NgbpIKt9CS+XPiTiEPtNdMyN9AtLpDaunC4DHFW0/gIxmR5 +M2ffml+ZtrAeqp05Ws5TG8AGGRPvKzmV5GuRYKvBG2wM8Titp8ospcEFhRp9Nl9i +LcLieoK67PZbDyBScM4b+cAW+koFsEOye0fPCfqZ9sSpLvP3eZwpQAauroN7Yu8o +T+Zr1utK7DhEXEJrYu3wJtvyj27fPVA1+Rb3QCN5KPcTjmlysJukQ19PqpewV3yW +LscoGKVRtg9RP8Vgn2sLZAISD/58bAZh/GNg8x5Y3hU2F5JwvQYBpiY2O6yc+FZH +8zWqFQ1tL6BMDAh41KbzWp/2Pgk+Y1p3007aZuiu8M3HXJ+Bh54La6nR8u7Q6bOo +Sej9cQA1k70HTEzj31bV18FWtpJoog== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +/YbQTHFxryK2rr0akPfzP9dW0avqxBe2pQaPdA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLjCCA+agAwIBAgIBDDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzE7MDkGA1UEAxMyQ2hp +bmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5nIENlcnRpZmljYXRlIChNYWNhbykx +EjAQBgNVBAoTCU1hY2FvIFNBUjEnMCUGA1UECxMeSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MQswCQYDVQQGEwJDTjAeFw0wOTAxMTIxNjAwMDFaFw0yOTAx +MTIxNjAwMDFaMIGHMTswOQYDVQQDEzJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTESMBAGA1UEChMJTWFjYW8gU0FSMScw +JQYDVQQLEx5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxCzAJBgNVBAYT +AkNOMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAiGZfE+LBBbhrOYPR +CrFFRW+QLOm85P486V+dwuoVL7Sv7jGaVAfOW5OFQfkxjCV5d9xET1KTSpfKUj0n +w431MR291It8miSCY/IGekamwsfJ7GMZU8KuAI296TPRhkEnWH3svUPmWbIefB2T +gWXK0Yq0TtTtnopKNgkUdxaVcudbQQIJfQMljgrPWAp7CA2wNximJ/6U3D+MJFCI +rHppbzk54C/inj9M5/QMZ3pwRbMtwmeTUToaKueY5HrcTXdSDCY1S6SKZYDvp5rc +0tt9SI+DAI8PcwH5yInLUDKf+KvMb/PcLUJy47AGlg0RYUUa9/Z1STo6IqY9dR3q +UIHq932fhsuaTH2JiPHcHeQmQyDco0xvBEpmBYMU/2Xowc2uXOX5R/56HzKU4ZvJ +HeK9tNr8OFIhRKdvDmuwfaYqdQB1xvWwKv8F0tLVB1kbY/zCf5vUEmEjN9XA+ZOj +c4Ic/QSvkbHNx1RQHX+5ZB7kWwQTwAIH4qiDPHMhItC0gR0fuKrngMTf2GjMn/tF +bMu2gNnei81M99HOtTV30Cm+qAfGkH8tvLr6QH6JnrV40lfqRWWCWGy2yMJm4vDh +b3K846nUXISlSG2YQPI8oSarU0twVfOj6oeLwZGm+wqfvwGhTl+nwnJsB1IBuG4w +CKRtLsd+qv8ffFS6w70uw8pagBECAQOjRTBDMB0GA1UdDgQWBBSEQ1MZ3sS1I27q +xnIOgsIlAFDWvjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADA9 +BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglg +hkgBZQMEAgGiAwIBIAOCAgEAO27lpZDiFEPzUDpTdoKxx5iUl7ZCIjp+56P6jo0S +RnmTETDuKDseNiXk7SbW/1HqidOM28pBOICUZZ+alhXAdHB66oQiFnISFAggbj9Q +y3j/RTk6IzHUTJihOYcVWG3IFrxgTY/+/R1T3rVEOWHdb+J4tI6z6UND2TXw5idq +jYZHH1jKAiCPCyR/4s+xvOXCdFUfTajOPG4w6J1v5ShpiqZcxlaUnU1Q8p41HtiT +wsgbX5HU6n+uUydjsY5C14efRLc5g+2eVG5eqdldhnQCyK1y9rLFX84SBWPzF4QE +QAX3gTKjt2dKIqutDYYRbtBWKD1AJCjbcRYSylS/6qen7I9zD7VxAn2pxGuA49ri +qXnHFtdyd6ifXgoy5TUctmLpBKqna4eSyNUx6l+kxC0990m7mY2jS17OFkpZqC+/ +bi6M4G1TeYfgXDHYwirrAUxKtsNTml9OsSDv+KYmF8tNR0OSTs1ROrL2dKyykv9r +f80IpXPTgjbgDaoSItwWV/b1e1qeePnO/T7eprg1XoMdwjjCU1FT/toUQwqpdVJk +Y4e2622WZJCgG2rqSbPfBVn3s1/EjLHR2xleOvMH4I92fNex86OgHucE3U5Qssnk +A9jNfn+3SqiavAIcxvogsGa0bGqLVA2tK+dkUEfVHuaTBJCMRFpic7wanssQPTOZ +DLQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLjCCA+agAwIBAgIBMzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xMzA3MTAxNjAwMDFaFw0zMzA3 +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAk36aawkcMmYilDNV +N0fuiObdvnW6CnYeLvpuY9PDUMojs6rVrvSJgNX4znqFx3djaXoeunXfxSNUA+Ec +AbJHUTOYxpzUiy7hLT8zPzeoEFtcXhdEBddQ18isujcf1MvSE55MvjOpQ+4OUey5 +cz8uayuarycxF6MVkFRlpYY0k8mRsUQZqzGysNrYNti5fr3T1QbMqvufAeKkYW3n +Dx+0P0Ct+bmBEASnmpor5I9GFC8xocaTnhTXK+X1ruKq13d5IaMisEow6HBq0ym0 +liit+d74Ul6sHt8xz1AmQzYO3m8icqFS0yKbD5CXeAS0j1y8xVXqCtUQO8aTxlEU +NhR4JJqUXTmGuRiF3JMFh8eGT3dAJKt8euwK2xRBNk+Ml8in7typTq+QOrF7Cnn3 +VzGVelw9YzrQR01/nBp/eiIT97ArpSNz1VjNaFNSFtHRQbon4FBwcZbLfJEGl6AL +2iEUOq8G4xq2/kpUaGffzgMyibRujBmjvWv2LeqxKH/ROcKB3Z72sgUiEoxVPIzX +c/RiV5NtngQoI77gRNfiSS3NLdSKopPbVpWKk3bWDeVusmCSy9n55sgQ5KpbhN7R +a5fcmEeKKNYopv9oiwZln0aRmenT5omGY9DP2evkm8KjDmseZ0maMmOfhr0unr7B +bsOqOsIFNKCnPRWJxljH1+GfJLUCAQOjRTBDMB0GA1UdDgQWBBRtckHLKyFzYmEZ +TALTOesDxx1T3DAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADA9 +BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglg +hkgBZQMEAgGiAwIBIAOCAgEAEH2OX7BVQfzVq5wRB69SB3DNuHf1shi3HzMS22oB +px2xrDzxDIisyYrlIjwMXOdA4eK1wz1MUOaPm/P7OsJpGO0gam5WoiNYIatWTcX/ +ojg/ZsMm/83o1/lZKx8/oDS2SeMUIjuILawPynXwxjRAyUbLdlHo9sVbsssWEoI/ +r1eG0UjDvLTnbeFlt+f85fJGv8bM1VN7Wjx+2fDpo9Vpc8CB/A6c3p+r1Omg3/zJ +teLuKE+R7cekDaAQ98TQQJ4QB4kvKDB3EK2hQMKCdCohEhRD3ozemOdJpxBajlEO +6Y/UuItNRyC16+W2XzxzaCkOQbe6UBOVYPM0hQcK/CfQU9FInY6E4ULN1BDzYnbN +eczSWvJbxdHUCEJixpCPdOdslbEM1wStTXxCZsUDJPSwVCYvWM7XcD5waJ5tr4S5 +6EAC/EIk5EkrbeEXQSwKubE+Vs6s3lg5KUXwUP42FWv7rkSOR78F88n9X6Dz2e3h +Di2uGWn3kjgxChKVmvbdF9wG+sw4CjVfBwSbHomoTKj976Y1ddmrlcla9ar9BOLi +7czP8+y0yuOFhzOC5wir897u8rTDneCIIB+qaS9AZBAffHxznP8CYBi7bXflkN+T +3YVlUVPjJZy3v2864F1oUmfqb8Qkzc5Ac7419FdemeMyihSZbdPq4phmRrwXj3vb +3TI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLjCCA+agAwIBAgIBNDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xMzA3MTAxNjAwMDFaFw0zMzA3 +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAuf2AhjjYu/nvT3Pp +0rRLUw3d/V/U5h+cZW/aYVookoMFKpP7fdg50FJj2LV4eEb8XZqOdU+Rwe87A2Bj +SBU3z67S744x1qgV2M8uKgRY7LCOZjV6EU5ZhryB3XMhnlisXDWfnW0cRHDt031+ +7WUSbX1o+cknitVgV85O4btaYmo2Aop+a7OIFhMy1ol1/ZY8qa9SZBY/yYdI1Kb+ +pwFJ16auypVGBpqSZi9bgZ+1fUf1YZTSJYHCuPT/88SYsy5LKF9yo8p4pGy6BMIw +zgvB9z5Pj72kvEab2XMALKH72zaWnTmaXeoXY0H1BLON1xwUb8f0nLgJpPhBRPtm +JOH5tGAFSe4EpW4Qvtp6Y/C7IxNQ1aKJBhnJv6zm8g2/H255/bhK/D11zDotbWtb +B9p7/JFcQIGbV+ayGOZfYFz2ZEsAH7PVBLYwbay/J5ILpE1PfAqsdFCVsUu1rTtI +xMdPoMbkMavL5zD21Z4sQKWZ5zJinPgwxjHXcCNRaFwGz0yboU9BWyxIgHssG+Ug +mJLqFKePEUdDUvF9DMFpx8vT2ZcSb1XkH0ollMxDfQAn8R0c1Q5GUoKagX6rUxr0 +777jw0DfgMOMKOZy9zHXPlgwKsEKxxLdBQe4Erqs21EKDr8n2CDsew0yCi5ex1bw +moN1gZdfXMIq1cR7Bv1H2YyW/HkCAQOjRTBDMB0GA1UdDgQWBBTxUweQqrmQyL+M +NpF+WAscr6lpuzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADA9 +BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglg +hkgBZQMEAgGiAwIBIAOCAgEAnH6fXLBNiJOV/rwYjILzEGQGil8oiGtErXfRnds9 +N4XmkIr4gCOki1GFxYxx6eHn+aJX7ph/WEUiXdcJhksAR9cD4c6ixmvS5c+2PAGP +bS7MBEyrOHEPGjzRpeTaYqGB/5LsFeqaqK3COAdk96zFPOhZ3oYSyCwmWB26Qjyo +onQt+DaA7sbk01fzbXM/9FtJgd99kAeoK9MiwxG/wm43vsKi+U/dWFpoSjbbjREh +OPJeY7VSaQgmLmzC91bgRMokmq9UYUiJTmGSkgwb+VXDG5vLbNLIFfkRR5R25e1M +4JCZ46RZRbrnFXLbhS1RRdU9I7FH5wVWwxh+W3Q9ZCDwTZ18VY4iDLgFB48nok/X ++KOuQmn5rwUQpZnhdDzjOkNGEPEAt5YGri7vmEjR5xKsg07eCl/KP24J7NJaOa/+ +numiDqCMGS8HNn0YrdiNfIO/tGVNYErflD0cOVNBKi1F4pblEierDTjScRuCP9Z0 +e2ODL6oEs1ND4m12Q4CDmg64scfyszSkxEVY5I6jFXd3wOoJtPQb5wH4zYilr6zs +58cRDWZzndc9nfKZjsDxElauQPGiB4GNxbt3VuDfhZ9t+I/XF1BSnVu0/2t3ru3X +f7y3mj0rI3C7cw9Z0gSaYuwgBK+8l84Hjm/ZWnr9aEMg0UNJAy77bcIeZSsk5dw8 +qs0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLzCCBBegAwIBAgIIXwkJZFFkRe8wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNV +BAYTAk5HMQ4wDAYDVQQIDAVBYnVqYTEOMAwGA1UEBwwFQWJ1amExJDAiBgNVBAoM +G05pZ2VyaWEgSW1taWdyYXRpb24gU2VydmljZTEdMBsGA1UECwwUTWluaXN0cnkg +b2YgSW50ZXJpb3IxFzAVBgNVBAMMDkNvdW50cnkgU2lnbmVyMB4XDTE3MDUxNzEz +MTkwOFoXDTI3MDUxODEzMTkwOFowgYsxCzAJBgNVBAYTAk5HMQ4wDAYDVQQIDAVB +YnVqYTEOMAwGA1UEBwwFQWJ1amExJDAiBgNVBAoMG05pZ2VyaWEgSW1taWdyYXRp +b24gU2VydmljZTEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3IxFzAVBgNV +BAMMDkNvdW50cnkgU2lnbmVyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAzH+8uTMc759L4RVGiwlfYiu4Sila+TdwOIxnL2Pj2DoP7PWFIIEHWLU9A+1u +56qdQcFlzLe9XP23p9S8cbFNLe3HPabRLqGr752/H1TOOfJWCdYAwz2ibiGVSjAE +Ku+5a2rUefYX5YfsB8lf4Le5mleDVewSUkdYZtKD3iEmtuu2/4F3j3FMX0UnFXI7 +2Avo5GllqTMZTnSTF9Mh83eyokBSTqfwJfUDoeFGTK76xgGU32h1VUiJHIr9mETx +f8XVcSMzdkBSrEHq1OwIeJOK2vsZNnLzgFLUkyMHY231RTNz7huKTydOZtM61PJH +Az01qzEKUE2nHdxNJCmsqb7xf9L6T5CYBhjxah4IyTbkmD2EnEfXfjOKOrWqaByT +LRHFsQbLjHAC5lwqAKvu4B3ChLeGcqFn1N2DIeEttNQ7p0hFgZtcrGwQUKynFjfs +DRVqfIjKuprFqyKyteQwOeRM90KjJ9X/BvqksuRojdocjSXeWsZh5BoqVfAWLkQ8 +D3V8ku6g27EmhZsf6mFCiaN7NKfLHusohtmtFHoqS0SEYD8h9ImF2cQYNU5sI2sx +MfCfEAoqZYpDduKiSpwsWPHJOVqE0GtGYuqf3Bf93ZyWKhquYeWbRuULyWAm+jVz +WA7QUZSPKXRPPdAbAk7/jYux5eY2vs0P6umv1c/j52NAY+MCAwGlf6OBlDCBkTAd +BgNVHQ4EFgQUrzz6c1ayJXvpsZ3zkHI3Jr58jfwwEgYDVR0TAQH/BAgwBgEB/wIB +ADAfBgNVHSMEGDAWgBSvPPpzVrIle+mxnfOQcjcmvnyN/DArBgNVHRAEJDAigA8y +MDE3MDUxNzEzMTkwOFqBDzIwMjAwNTE3MTMxOTA4WjAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQELBQADggIBAEYiFzLcrF0YW+gdDSKaCLy6y0DsF/BbbJxCaxQO +GYtsjxLSc61MjCihcQGD+kmv/HX6YErVygloYg0LXWg2k6N7RZRAIG8umXuZhD8U +huAIXz8L41xY1Vh9rfMu0WArRMM2FO72siCsx3NhgRwC28lfLhIybiVmhnFQNvBu +Dpsh/LFB5iwevQxmWD3R7zUc1mGa1l96Rt++tHPcCOKD8qXvW8wrnoAaDsFAKED3 +OsK/l+AEuF3R377uUBR2mbNtNeWEk9S0eB4dqE69H1zM/q+oPTrw0qAlWqq7Bc0I +20jHMO48Ge2U2wce3pch6hA4AuvqNMJ5Goviu8o8+LeS8szE50fVspV3JUgZIJpv +CzeGa1745UZel98WyTVWPFEqzjGsRc951nZDNBjUe1PEdy/Y8vT9aAO9ZXmZTIix +T4uPywu5xu7U+210PymqXdNIRS6gMD02/KiT2LYPsjPiD5RGNRQy177i4aOy4Nn8 +87ORZzWMYAKqoKt+D19bBd6ksbiwWv/4MvBPcgWbehGzzvoW8QrnXUsTMxKdJ+ty +8suBET2hQbgtVo1RlpTHq76s3khkARxhVQujQpMIH55CbINrEIP+ycE5ulEVL85+ +XlGy3CfT8b1vlwSI8Grg2Oi9saIVJUhK5GpQdHco2iuroHRooA9H49jtpxE5AgYZ +NcHc +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +qHIS +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +CDWw +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +OTfe +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMDCCA+igAwIBAgIBATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBiDE+MDwGA1UEAxM1SG9u +ZyBLb25nIENoaW5hIENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxGDAWBgNVBAoTD0hvbmcgS29uZyBDaGluYTEfMB0GA1UECxMWSW1taWdyYXRp +b24gRGVwYXJ0bWVudDELMAkGA1UEBhMCQ04wHhcNMDYxMjA0MTYwMDAxWhcNMjIx +MjA0MTYwMDAxWjCBiDE+MDwGA1UEAxM1SG9uZyBLb25nIENoaW5hIENvdW50cnkg +U2lnbmluZyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxGDAWBgNVBAoTD0hvbmcgS29u +ZyBDaGluYTEfMB0GA1UECxMWSW1taWdyYXRpb24gRGVwYXJ0bWVudDELMAkGA1UE +BhMCQ04wggIgMA0GCSqGSIb3DQEBAQUAA4ICDQAwggIIAoICAQCQXKBG8WK3H2t6 +j8+PtWdh6JbpqbS3Bv+BqZ7VngFoUX+iDJlIjAWPuhmUPBLGVQgIk5sGGjrbfixQ +lqLqGK1p27ncsmsd3f1wtXyQlQJbkGzmw/vxb9fX5D3wSWAUggZfK6Eexz47DAls +mrDuY/Cr882eVgrniAIiOXmWqRqV3WUTi0EU6jFNBOKteS0jtohy4c/p2A933w/V +OrIJPse7uZSn232/sTsiRAPWoJiGEozJqakFR65K/OcobBcCcefGcV9vw60OKb9B +ra8yd1IBoZDyK7DXfPIKst1ZI+RZJvVPAhNWG3PxXfztE5D71Ga3UjvPcI2VQ7th +pilXMkn3PB74m9pPhwTXI5qB8r67xGvvMlCZKNV7hBSmAYNH1AvhgLSxHJp2D1wo +Pgf3dShZdHlu6IO01sLTmE5rkhb5t5KuljgxKd+oATr6d5GTqCWH90EfvHZiowRv +6BfjFKwevyJODrD9UctuC6vL1Kh6bF3ZuLUhWO2EpiRw9es9XPgHZ5CW2xGNb2u/ +x3gVed8vaSEukyjMktaZ7HwzKTJk5QquxmGZj+HiI/xzAGQUwvk/GaHQqFfBmOXi +USSr9KnWy6bdojHLC0dESIcJYFqLQbldH9aJZszrwtexsrVHUotPNTsVgMYaxejr +Uzxfcd49wBLcD0UiNnIcAyAtNtn8RwIBA6NFMEMwHQYDVR0OBBYEFDub7Wzic3cE +wmom+bdM6XSw802sMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEA +MD0GCSqGSIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsG +CWCGSAFlAwQCAaIDAgEgA4ICAQAOv7wU3MNJQv41vW16l9zkoT+Y2FomVJNcNLKw +m45B/GPcYDA5B4NCDoqjzl8087oIatrchsTlVFdd59mWO/11YmeUFn4HbpnSQq5n +bVgdKABfLJtjwGPxA22cA5+Q9rpZmziQ9PtgZkhF+oldQgQeht4NG72O2sfN2DLN +SdqfFKx0dzYQJdqca1uDnk0fxQWakuezDXLEI96QDsoM7bFOkQr961yQCW4pZKLr +XOqwXblmdO2FUS7470AnbVrFb8zNdxZc12x648D5oxNY70ZidoeOzgbdwbOWYhBt +7SEU8KZfIJzxkhgMHqlkkBfIqc9aU3XiZ1MAGs5KJtUUoql1DN8v+VZCRknnOYhq +7Vo/U6Ukzb0gPDSlcn1xvHYqwa/SPKT2uB1lHHT/Qz1rHCR3oRMAd3H5OTqVM82A +duvM9dokzAeQYX25e7yU6S6XlBH06a+VHx1jLCoo8bMwlLbleW88Ye49GG7mWdSg +O5AHCUeyr3893VchN+8E4syalN5arZiCiiTt/mqot8trHp2lhNjfT3vxSmytXtzr +JNo3E8LVmHZMAYTvaNyY2Kl8DnQzQlKBTnWPWvjdp4BC18jwKEfJJoqfKpFUCJBh +bZ8+tCznz9pYyvNMPxx8tQV0ELr3KJAOrjBEDd4TLZ+orqRxOZ4HqcXVTYo6zDAq +K1JDmg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMDCCA+igAwIBAgIBKTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBiDELMAkGA1UEBhMCQ04x +GDAWBgNVBAoMD0hvbmcgS29uZyBDaGluYTEfMB0GA1UECwwWSW1taWdyYXRpb24g +RGVwYXJ0bWVudDE+MDwGA1UEAww1SG9uZyBLb25nIENoaW5hIENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTEwNjEzMTYwMDAxWhcNMjcw +NjEzMTYwMDAxWjCBiDELMAkGA1UEBhMCQ04xGDAWBgNVBAoMD0hvbmcgS29uZyBD +aGluYTEfMB0GA1UECwwWSW1taWdyYXRpb24gRGVwYXJ0bWVudDE+MDwGA1UEAww1 +SG9uZyBLb25nIENoaW5hIENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSBBdXRo +b3JpdHkwggIgMA0GCSqGSIb3DQEBAQUAA4ICDQAwggIIAoICAQCgq+637INet9ru +Quy970VFXuRF63ymLaQlLcpTWg7VBAtjdchOUX5q8DBmWzzJtxp6EsDlhFMAz6m3 +6/scHnxsmE7LZGJllnzvPmEmiZi41oWvBxVyHNah91itMMxMGWDurIlH66/1sqkz +0iYVdZItIYktGXtlSt1wPRfUyvbPMRwrGHiF5eUt8vqhVMzw667q2xU0EuBDDv8c +dJam6lE/2Y9a8nEhsL4lJVgvMJl0twLHDzFLlYzWMSNfqxvcdWmq+IT7dLScQJdj +7r3QtBL2XGMxgCvY5fMcYJ+yQ1BhjdCLK36uh3EVevVgXCa7wDeG9gfBFDqBX6Ud +R6C8DOln0dSeoG7kNTDd0iHannA0KiGztEPae12oP1wJQkE1kh/R6jBB2pXW0OF9 +df6h7zkw2vCgBGzKAgm2wDsAxOdo7v2y2rz+dRnBmBTFESNhDyArg8mIwbabfLnp +pHfTQArtXw4JNgEum+nyyfLsw/4f4121rWCzOnpM+51GL2SNzLj0S3XTnX538WE9 +2EfGS8dY68I6cqEUxtyD8zfjSTxKCo5+j940yK5EHUpeKNJRXHE7t7pbm15xHdJS +3QS0oaPf5WnMM+t6hiA0Ga7+k7rTwm66eZAgUMr7QdseLO/VuIY8n5XLUgSlC/nq +0hV/1vPk6kIYS0EvZ8NakODbT/LBwwIBA6NFMEMwHQYDVR0OBBYEFKFLZlBtub35 +wHZ06mGKm1qI2KzfMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEA +MD0GCSqGSIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsG +CWCGSAFlAwQCAaIDAgEgA4ICAQB63sCxn9yon6XPXjMyl0SiDiIQ6SL50/izARIi +ggrPQeY47Sfq4wtEOD+HNy3C2tmF3m+s6FpQG3ZO3eKu5wrWss2Mc0pwTSKSdrdL +c3zfPAgi6A+P+71+hy7axtaUYmlxcU6RT4NYT8H5H8xWZrRCv4gItWfrfyfHlmxA +LETGF6E4zobVVzrlC8IHMrDvNWmcilgLLF6Fh8BTC1TFpBI5G4juFXxGB2f8CWSA +H3nqZ0Aw2kkY4QvQ5guOKVnz0o5d9tgSQKlN6FaYLqVKWqgdd5739MHDe79sKTnN +6ir3WmemK+lGGLgRwS+t61RqBaLsTMl7UOF+xypSkFZCo+WkmAek2XyFYv8R5dSB +Z5ErBWRyty2aRmKBckFnTwgzTw6Yt0nqLtYLQePml2CO+NAhNMIT6ztBxmqlQ/LM +fR3L8r0ke5AJNCWa0FuRsvkNtoxCzirxyEPiSQITuOMpWCqQOKTu3yAK1zCOvC58 +3IfeU2eNI/B30wF1EERZcsWKPybCsLKs3prf85l+W23o/zWSPIVTPd8TIKZnONs5 +zIlEq0sNB6AhmfJm+t3SVtPIwETTHPiFONpxmCViVNbh6+v0WRGLL6+MbYXHj5jU +PQlHenD9lEvYlVA4VKpjOMo8MAiTB9mCe0cmswYr5XBzRPfd8avFq96g/oCmZs/i +xS54jA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMDCCA+igAwIBAgIBLDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBiDELMAkGA1UEBhMCQ04x +GDAWBgNVBAoMD0hvbmcgS29uZyBDaGluYTEfMB0GA1UECwwWSW1taWdyYXRpb24g +RGVwYXJ0bWVudDE+MDwGA1UEAww1SG9uZyBLb25nIENoaW5hIENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNDIwMTYwMDAxWhcNMzIw +NDIwMTYwMDAxWjCBiDELMAkGA1UEBhMCQ04xGDAWBgNVBAoMD0hvbmcgS29uZyBD +aGluYTEfMB0GA1UECwwWSW1taWdyYXRpb24gRGVwYXJ0bWVudDE+MDwGA1UEAww1 +SG9uZyBLb25nIENoaW5hIENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSBBdXRo +b3JpdHkwggIgMA0GCSqGSIb3DQEBAQUAA4ICDQAwggIIAoICAQCcyOqxMTnwaYiO +cq9ZZpAosoTtjGY1rEdY2LeY8DxnwdwD/44HpVTApjHjOp9KvtgNGI11Gv07ePHZ +N4oiM6cZgZsrnkgzgiE+VoexooQ2f8pL2h9qZctBCmudsDC5QZO9ZoQQo3878lyX +o8UqaITmjcF5pXpXThGjrvFd2ne1jpqQ1QYgNUmlPKi9r1tufLFkJusGn2EM/j2m +SJp9+n9S5BTYhgnEzf/IlHJNAPqfADkfy2Tzsv6R4EkQj804qZQryvilppdWMj6E +gz3+0pkONVSeAD6Vmwh6SoDLX7kGSRrNzSFJyERvCyku3rybR77/jGvteXQvBbPx +V3dydzLLn+Fp/OXb+5KFxtbXoovAzXrcbGxH5vws8rrYzPS91+7LnLjxBZY5VnTt +tRyNBU+RD9OvY9GbNXAFrYPwAuiRQabt1utj1sNAj5yhjHjfewy2lTgbvksYP9cg +8C8bHmMns9/M2jHcoapl5pY9FUcqQKrleySUWP8Bj+p9qVQjScaExHVushrSsBYo +ZmxJp3R/pBuGiXLCJR/PTqFg1KR46l8cmWavNzIE3IVS17phO/3vTMK+4iH6TLq0 +rUU0BkDpLfp6tLu7ibORZn16sdqBYuxELNrzKU7VpYRS1gU9XkXB+shqhp0ReF92 +GUaplY9MTZlVQEZom93PjkCAR27X8wIBA6NFMEMwHQYDVR0OBBYEFF2JHnkU9v3/ +1AobxvEKXl3NS8qGMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEA +MD0GCSqGSIb3DQEBCjAwoA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsG +CWCGSAFlAwQCAaIDAgEgA4ICAQBXIDiYzcvWZfjbmwFzkqf4V2bWRP2DjXoQrwBZ +zz4GnCgnZ6nqqXNoIgCGEQi7zo/D87vRyVoWsTAjNzZcjsiKZbf1Pg6K00iOin/M +PwP/5XplMlbjKRBp5GYJIO0N+c6d0bQ1DJ7Z6aRahy8FTeh6PYMk+8nZ8OeJpfuX +N2cXBWvD2gmLyVY7foHuig0BRm9Z6blDS2vFEdvQ4RWNeX3qocmlX7GxKQ+kwcZd ++alydkYdgnY/GXIJrAApVd/DhoG+m/GH9ElbGQpo6t7vCkqKjNXbSgHO0Q7IaPUv +4q8MWtSsfc7KntCOFRGtpHlby06PLi+c9Ui3+JbbwVyPHbrpr+/DSr062v8wqlXL +akXWsRyk0Gqo+m3DLRV8vSSD/taKxTEelr6gfWOhHFGs+DgcQpy4c7ey4cEOiNDg +OJYoaNi0G9m8Fq9NQnYaIr7Ip0ArlOvvzjvTYWy21F7h3kHK97zmNW6g6LSxzu2Z +VLs+ZBOPZRMUtiOjBQi4SDvBdSA3qFaSWjweGARdX6YzQoFm6bpGAaEBcz7RBosi +248BaE0wHsCvf3TeEH84xdfEuFTp7NFSWONIH2ADARpJBu+f2kAhjTiN+ZFVftKK +xvFRzf7o8Pb26Ak6WiFXCudxQ37v6wrfO4tEpr93r4ISlFKIQfZDY/rLinD5m9Ww +xSYBiw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Z/C0TkI+ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +D5Yuz6IW +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGNDCCBGigAwIBAgICAvUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFcxCzAJBgNVBAYT +AkNaMRcwFQYDVQQKDA5DemVjaCBSZXB1YmxpYzEdMBsGA1UECwwUTWluaXN0cnkg +b2YgSW50ZXJpb3IxEDAOBgNVBAMMB0NTQ0FfQ1owHhcNMjEwMzIzMDkwODU2WhcN +MzYwNjIzMDkwODU2WjBXMQswCQYDVQQGEwJDWjEXMBUGA1UECgwOQ3plY2ggUmVw +dWJsaWMxHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9yMRAwDgYDVQQDDAdD +U0NBX0NaMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA5kEDlXh9L/P8 +zE5f4e8O8nvt56DRQLEOEfAnkB3fL6mMBf7jam7ShjjblzAzxNEtp1XLOuJReCpO +xFvLZ1CsxjP7bNnlZT0FuLSHaNtbCkTQlATzM9AOduzc7/gKAniVbZwyqUI7RHve +edFltVWjDPoRwcCEahJdf43tFaMJ4iSOtLuRrxGOavNlC6/sT/Ek2ZM3VUOZX3/N +6UBpXnG13mLfvWHO6n0Q6sfgX1Y/e5Du10Dzmc60khWyOz8XTf6zwFz0lh/53YgJ +KaOpBzi+YJ5LpcCTc9wnUsLIgmWDpSq53kbToZ70cjsb895lKTrHsw12DM7Fry1R +utj2PlKXvC9c+m0cv2V8zlNh4J6XcpGLO7UGRYuuYtXVSKR/5nDpT4YRguLgvZD0 +2JdL1960WGdN8TdTNqgMSBCN3lYG1kEvrkqjHYgGcDWlbc17/bKppRQhL2yhTeju +h++cSR8kEYVxxFycPYnnfyQ4sqayhjYYfcLjuflOUwL0YcPRV3llAgMBAAGjggGg +MIIBnDAdBgNVHQ4EFgQU5OphvrIVpsQC1U5mWE+oqH1Q40EwDgYDVR0PAQH/BAQD +AgEGMBoGA1UdIAQTMBEwDwYNKoFLtxgBAQEBiciyazASBgNVHRMBAf8ECDAGAQH/ +AgEAMFgGA1UdEQRRME+BDG5pbXNAbXZjci5jeoYtaHR0cDovL3d3dy5tdmNyLmN6 +L2NlcnRpZmlrYXR5LWNzY2EtY3ZjYS5hc3B4pBAwDjEMMAoGA1UEBwwDQ1pFMFgG +A1UdEgRRME+BDG5pbXNAbXZjci5jeoYtaHR0cDovL3d3dy5tdmNyLmN6L2NlcnRp +ZmlrYXR5LWNzY2EtY3ZjYS5hc3B4pBAwDjEMMAoGA1UEBwwDQ1pFMFoGA1UdHwRT +MFEwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ1pF +LmNybDAdoBugGYYXaHR0cDovL212Y3IuY3ovY3NjYS1jcmwwKwYDVR0QBCQwIoAP +MjAyMTAzMjMwOTA4NTZagQ8yMDI2MDMyMzIzNTk1OVowQQYJKoZIhvcNAQEKMDSg +DzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKID +AgEgA4IBgQC4Dn5KyCRAZahpH0oRPKRr32XAiU8yGPVGDQ6PCvnV4xnQAqplGWKJ +OEpRT/79EcyhZi0r20liLSlw7vmflNrwu+yAaXWdbwbgaUYkdlKV3jsxbjV8WGKE +qBSg3Ui1xpgS3TLYfSVo2miTZ+JYGMWttt53GU/pKixflrkbbnBqrdxFiOGttAKl +vlSMz0yzf1u0x0txrMneZSif0XKUYpIV5Pj7313hLgaE9SL8WtJ5D0uUNKj0rYIn +tDq9ZDOfROs7uCNMi/kfXxCKEcpZ5NHBVojJtRvkjUiNZNu3RfckO6uRdyEh9pT5 +GwLTmm97B5IOmL2s+z5G2JpSYQ2V5jI8AFvtvgoOFyOru9mOCoDesqBZN5ATDJgf +mCVuhw5g5HIxLwE4/NO6cMXv0g8cIQH5kTzU86gAYbdo1XomfcbiTk1V6ffqOycM +v2PLC8wmzFRmOqqcf/DUEOww+Xm8ZciwgTNkWVb0YpYd2fgCqbFdFwuFYqWom6gL +7st9WescNSM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +4jVnDDii5F7ywHSS +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +gYPFbd/9XZ0twqADbw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +5lH1gf+l9ewaQGxOFw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +rVldISDvDzyISaMp7Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +SinDP8LMwFbBcUDGKQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +fPZJzKRBWURhx2dG4w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +nfSnZL7WSvgLsQ/wZg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +MUiLPo23wnNxgQEGig== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +jNOEAj7hRrcgyhA+KA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +jHPC/lYmuKuFRQFZrw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +siRr2lJAQAct9LNkYDQrdam5XjO28Xo6 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGUTCCBDmgAwIBAgISESJDv4Cygpg9+xotpMximO+mMA0GCSqGSIb3DQEBCwUA +MF0xCzAJBgNVBAYTAk1FMRMwEQYDVQQKDApNb250ZW5lZ3JvMR0wGwYDVQQLDBRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEaMBgGA1UEAwwRY3NjYS1tb250ZW5lZ3JvLTIw +HhcNMTcxMTI4MDAwMDAwWhcNMzMwMjI4MDAwMDAwWjBdMQswCQYDVQQGEwJNRTET +MBEGA1UECgwKTW9udGVuZWdybzEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJp +b3IxGjAYBgNVBAMMEWNzY2EtbW9udGVuZWdyby0yMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAwTp0pNKvCDsoph5q7QfjvFSKcEqnsqOK9g7qjJ4wEifP +nj6bkCDijZQLo41JzYa8EERcGYFADeu/Mq1pslj5o4Q36HxfR6QU/iGGh1vD38aM +guT5ctS5+8IfBjUGNoXEycTTrv8tG1+CwnP52eIEVHI9wL/MoN1YD7dV8ZLlMWrZ +kLQucuOvC0DEpYyVXqSPFZ9U5iOuNY/wZL52Kf+7nTYt0+SNdUuzdyY5gz1KJNwf +Zze8oZL5d7cIO2DuFfj1Cqk2cNtm6+UYx83nHDu87ZsQvHRORyPeC1JehlMaDFQs +YPH0+sNuzdsXydG8pFZs/xJSIaLrKX8bM77CWTz465sJEK906U5QedblJfwsMthO +az1unF6XRIHuC0fRc1N+Azb1lFxYtuNGiUSpLsK+4ylgmUqlyFT5zHz0nyIYIxPA +fjoYil3USwddwsQa3Rj61NVya2yvI+T6sAOLVe2SovLhKPQZtwieaLB1Y7evbzSi +XaY28FnxrbvXrYofpq58Enz6S+jHar6fr/2v+GmcYHWYB9C5x7ONrlHTGZjzioZl +c4e5MBHLvYKz78ET2JbyBMHRWBfAaQX9krMqvNamqeCMgH2STd1uDnWpHotO/0uX +QCqLDIpMx6WqYBQ7tRje7+WWM/18EBlAqg73wKHpfTYrFQcrrRORDVB4PxtqbosC +AwEAAaOCAQkwggEFMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE3MTEy +ODAwMDAwMFqBDzIwMjIxMTI4MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/AgEAMBsG +A1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNTkUwGwYDVR0SBBQwEqQQMA4xDDAKBgNV +BAcTA01ORTA4BgNVHR8EMTAvMC2gK6AphidodHRwOi8vd3d3LmNzY2EubXVwLmdv +di5tZS9DUkxzL01ORS5jcmwwHQYDVR0OBBYEFKnoLB5yGtqPpOgC65lLL4P1SYtB +MB8GA1UdIwQYMBaAFKnoLB5yGtqPpOgC65lLL4P1SYtBMA0GCSqGSIb3DQEBCwUA +A4ICAQCq3a224eQ8b4zwAO0JdEESO43ALlipqqFOKJ4ZhEGUFGwbZF2pa+hHeqg3 +FwLiSvZX21HAMi0iLPUF9BzD9RahvwRtxIcVJCfm3w8jgBYikbHKykj4JqVDBd7y +JsbJ0VP1h4YQES7bKS4VXofKqVI+vJt9BsH6d8wmaKrPWN1hguHn3DZ6lab40pt9 +OBF62HZbMccna//43rP2wV2zpzDsVSIxKkq63Jn+iqDQKvMxnhqOgehsuKZWxQD3 +qQSxvJoVOHS42hHsJC1ktisL6iuIAX9soF699//5F/jhdN52Uqcq/hGMH0w57rNC +mW4WrAI+bGLBF0qgL6s5uLjR3xJU9qaefcO5H6kfTqoEj2xaGnUuNJjfJ9n+SgJe +xTUB00iC2EnjwCkQd1Pk9iMJ1ACUzejQkj9ZefIO5LHVgIFkt2hkup9anaAHU2ow +AjLVR9a0cdAAm3hFHbbKZGR1qd7BwQXRdrJMJ0AL5hM2Urt+2t9d0cpOFmwF/q5M +XXeYjPB/61oNqFWtbKUpQG8cJQbetYgXJ5CEJocS64AFp6IwG/5s5Rd3hGyqHGKE +Tqth7+uu1wVtADyc4ot9U53+bNFl9AbwWZY9deZI6qCSfFvVOQnRVQp3SehuLXE9 +hikZWCmWKh3qwzj67Oe/CzXrZjPQPJVnydg5bwmwPE1Ie4JZ8A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGXzCCBEegAwIBAgIUad/sy3paLAYsC+Vw8/16xNRiY9AwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoMB0ZFREVSQUwxJjAkBgNVBAMMHUJl +bGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDA1MB4XDTIwMDUxODEzNTAzOFoXDTM1 +MDExODEzNTAzOFowRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoMB0ZFREVSQUwxJjAk +BgNVBAMMHUJlbGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDA1MIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAgZMhGmQu7zjwb3vJfpqQ27d+ZqhK/g099t+J +FopXQfFbbzn7pr6KGD9O9jh8BhvDMABIRlPdwl41hvmqRch59A6KXHyLRY85rRck ++7cJSpW+RjpSSrY2uFRerVxR3zK8lQiNOml9F6aT+lN61VdYSyMhAr6bNKfsGTRC +hk5f6A7fw2bzPt3tmRaXiJY5mOiRbwsaQjEo9rsl928wihUoNa6XwaVqeTuZFeGw +goqooLr35uW3TLX9m6tTVhoGBEUx3anJMVnwlyAb7KUTJB95HxNNYPLsl5v/D9dd +p9B6wQUn4oY2Z/U5Ew7KjEW01gWe5ccCVSzPJmdJs+J8IMKTOpKZeNmlahtqZF6I +V4a1JVlotlekUgmPrhLNwww5cx3zT0GeIaTpzc8UIeIlfFJ5Un7SsGSGPOcDYwzV +fief8LplT1kdxHUruADuN43nPWfJ0tlOWEK35QvDr5Kc2v0abmIYsgzb2C7D57Fd +KQnfPvlHucFxn44iQCC1+P3DXBTHqgOUNloneRMqeMhYWME4WiGq6CZV9WwvweOB +6GUaMXs/DFKRPdY4yiRdAcsINqsCgvni+zK198aLaQYFYNgNdu6aJdkIGAhYGD2D +E5jqbiqabyPv6fn2kH/23bR9fYGCf9I/8uxNhvuKOqZsFrv4Fn1Hzl2naJrHQPE9 +r+KzkNkCAwEAAaOCAUEwggE9MBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgw +FoAURAdlwVYsik7HA7reZRoXzt/o+9swMgYDVR0SBCswKYEVSVBJQi1DU0NBQHJy +bi5mZ292LmJlpBAwDjEMMAoGA1UEBwwDQkVMMDIGA1UdEQQrMCmBFUlQSUItQ1ND +QUBycm4uZmdvdi5iZaQQMA4xDDAKBgNVBAcMA0JFTDAUBgNVHSAEDTALMAkGB2A4 +DgEBh2gwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL2NybC5laWRwa2kuYmVsZ2l1 +bS5iZS90cmF2ZWwvY3NjYS5jcmwwHQYDVR0OBBYEFEQHZcFWLIpOxwO63mUaF87f +6PvbMBoGA1UdEAQTMBGBDzIwMjQwNDI3MTM1MDM4WjAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQELBQADggIBAHYdnyneMzWU1Td8KKD2Is7Okr3e4B3sOkRYI/mu +V5gSwX/H0qQs8ZelBzrHHxtgKG2yl1HNCEJfqc9Xy3+KcfO0TeizDWs9sMdI9nRA +h9HYeLu97jjeLgIm3xj9CU/bXb2xO7zURr/3dD9Ht2bC0xcsdyBeleUNTZVZyQYb +Ba6sNht1uRyhq8aaxUCKGFxv1+N5JdigZvhr1zmlYy27gFn9CE3/OLt79EMjfheX +AXl5uMBXIChNId7VtVpjZNXqRExOpNOmOXHiC+bP9kxRazZ5acgx/seZKt5Gb3Nv +JN3JMrmhaVgKN3FcHbffHKwO5WWS4qC3Scz5wjk/EkxJpvpR/DFJdxCXXjFe/Wt0 +cMrwcMaLjJ9rtMceEb30fXHDcxOXsoc7F+JoolZMIZ3M6HD3qH+Rm37T/QWV8NUQ +i+fO0QA0LdJduES7HtB4G8sVhtM5OVJoWId6FqMMgu/oaRSvReUXY445PKZ3ZAoh +9cO2UhU/RhAlN73+NMWom4H3z/zie3DYtu6HlxoFDRQavTO7WYiZaB83WMe10oFl +LZ6l+e6ekL78i4RYwOTo9QzXND+1Hb/DZmvpZkFyR1O8HX9RNzCloTIeymTM7JoT +FXGdJlX02CAU55hptqX8SCzSu3r1eqEz0QRQlEo+CH3bk31Bpeatuf3OUAEWck66 +2hA/ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYDCCBMigAwIBAgIEWZYECTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJV +TjEXMBUGA1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwHhcN +MTcwODE3MjAwODUzWhcNMjcwOTIyMjExOTEwWjBoMQswCQYDVQQGEwJVTjEXMBUG +A1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwggGiMA0GCSqG +SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCXzeLqVKPfHpRPh03kQGK1EY9dd/AfEsOh +5srrgtD2K/5b+b3BO1nPoyjeWkvtAae5ESgpa8Ncj9U9z0M0rgUpy9u6CgViWbDg +tMpBg0W8s7JwXeATpX6GF3OXNANS1c0C0HKJXXuF+DEKEnaPvHNZWEMUnROzlJlT +LAf81sJbNkdEePZWp+kac6Lwy0QaLB4bZkr1FOVVejUQSlGBNk6JeqEeg9KBPZYU +Bbudyt8lA5UkJNVjj1PFlcSIQFRyABjZNTdpDRZPny9IBeDtqI1x7+mZo3SNmX96 +tIoTOQ+R2x/1IqL97qdCrIk0mn6uvk+rIPH/jZCN0Bq337CfiFA4EO19jndDEQ7z +ea6TsBm5Lj34IohaG/SQoQHNJ/NpSnHioxAa3eBvACJQNBVyTEbJCJOHVnTmylJI +1voETOVa6iznDB95fiQcwOE3ugTACuY17d9pLjM9kNpTA6KUow0rIHABkRcsZmzR +e2+ckojoTbKmP8I6kBLjMhANBltyOj0CAwEAAaOCAhAwggIMMCoGA1UdEgQjMCGB +DXRyYXZlbEB1bi5vcmekEDAOMQwwCgYDVQQHDANVTk8wKgYDVR0RBCMwIYENdHJh +dmVsQHVuLm9yZ6QQMA4xDDAKBgNVBAcMA1VOTzAOBgNVHQ8BAf8EBAMCAQYwEgYD +VR0TAQH/BAgwBgEB/wIBADCCAR8GA1UdHwSCARYwggESMIGOoIGLoIGIhi5odHRw +Oi8vdW5vY3JsLm1hbmFnZWQuZW50cnVzdC5jb20vQ1JMcy9VTk8uY3JshipodHRw +czovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL1VOTy5jcmyGKmh0dHBzOi8v +cGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvVU5PLmNybDB/oH2ge6R5MHcxCzAJ +BgNVBAYTAlVOMRcwFQYDVQQKDA5Vbml0ZWQgTmF0aW9uczEiMCAGA1UECwwZQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdGllczEcMBoGA1UEAwwTVW5pdGVkIE5hdGlvbnMg +Q1NDQTENMAsGA1UEAwwEQ1JMMTArBgNVHRAEJDAigA8yMDE3MDkyMjIwNDkxMFqB +DzIwMjMwOTIzMDIwNzEwWjAfBgNVHSMEGDAWgBSnda9ktEDo3ThvLwAigOzt0Z0b +lzAdBgNVHQ4EFgQUp3WvZLRA6N04by8AIoDs7dGdG5cwDQYJKoZIhvcNAQELBQAD +ggGBAIMsnwZuFka+aUPESlWD69aNMD+pLlBvDDV9K2MzczEvGvQrlfm8O+K0gr1g +waA+CrjVRnr2nShOSQi1bdPta7BWguLkbG/QTcScq+i8OcZFE+yWeAN3wUvuIdLk +yYW4FqobTt6hhh6HXgK/EWk58NK3dp2nPmjETvrOikhipSWhVsd4lhLIFLjrKRDO +OJm+uPRM4aBCoGZrSq8TufvBBO6yONihNc1MWIWH3QyolvLKYglTHJ6F9dx7q2jl +1h1o9FqIv8nB/cwTT9CO6HmawCyH3p5iaAQkM9/+92sBPZ+sDeJOlreYfjf1sW3N +22HGskJlGIQFtrPIjFMwkCPx2LRuxQQiy+YtC/bsVwgE+3ADpfcN7zxcncVA9vl3 +d21moxdWflowjl94NFgtmK7y5X5QBngAzkhmev6iHpIYxDpvhYvvjwGikXc3nWVe +M83AVzhVVwRuX/s/Ep8+SC9lhrud5r0JFJJWkZG06DM00FrfqiNo0bZojW3PtYsv +LzYYOw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYTCCBEmgAwIBAgIESVd/DTANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJS +TzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTkxMjA2 +MTA1NzU4WhcNMzUwNzA2MTEyNzU4WjAyMQswCQYDVQQGEwJSTzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDHPQqapi9eJzVxo8UrCBmzJAbBNZASDwc4CkCocmzEVELmosSh +tymxoNaSG1a06DtduQkeLEn50HFgjQ4bHmw0jv25jSzDKj915iD1pHDlSSR7jAHr +hfZd4csTr4xy7gWSo+xf/OIbmKvKSNA031MSoqbuUFoxYjoK4hL9GBvsQW0vsyCN +tJVdeCeOAqwolL3RmurpJTHzpMBPzHq7hdu0+6Ckf/DWckgfTIvcmHR732rk+Dpz +V8AWV4HjPpm4eqXNdqWsoWOpvGdVYQmeApv+RmP77jxwgSUPThwHGGWmRnQH7BS1 +88hLIMBWiSZah5j8MG+CXV50OakwzKgPXIlV0CkJnXpQDD/XZY8lcET3JsWw5ZYk +TzegZp31hUgIweHSuqaLONi481TwgB8KA94zU6M+xxl0T/YIogShBKHwVMdbPaJw +CaJmELwcrqIO5Gd5E9O4iJ4/4P9i/V3Ll8VphAfMjdAn7v2dDmuKB3W7zRrxH7fj +uBtIAzfurHT0TLtGW7MSecvc6umBYD9J4vUxSN43+5L5r5S2ibxMNwnnX9fleEDx +zIGPnGCAI8dqaPqYWxqKUiWorHHqav7YPQW39YrYWsFvn3gy5/J4r6levz0usHtd +un4duufZ/uP7LilJE3gsW31EGafDDeCEKGeeS/0zcgSP4zfZJDRHQEzRUwIDAQAB +o4IBfTCCAXkwVwYDVR0SBFAwToEOZGdwQG1haS5nb3Yucm+kEDAOMQwwCgYDVQQH +DANST1WGKmh0dHA6Ly93d3cucGFzYXBvYXJ0ZS5tYWkuZ292LnJvL2NzY2EuaHRt +bDBXBgNVHREEUDBOgQ5kZ3BAbWFpLmdvdi5yb6QQMA4xDDAKBgNVBAcMA1JPVYYq +aHR0cDovL3d3dy5wYXNhcG9hcnRlLm1haS5nb3Yucm8vY3NjYS5odG1sMA4GA1Ud +DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEwGA1UdHwRFMEMwQaA/oD2G +O2h0dHA6Ly93d3cucGFzYXBvYXJ0ZS5tYWkuZ292LnJvL2NzY2EvY2VydGlmaWNh +dGUvY2FjcmwuY3JsMCsGA1UdEAQkMCKADzIwMTkxMjA2MTA1NzU4WoEPMjAyNDEy +MDUxNzE2MThaMBMGA1UdIwQMMAqACEgcRDUgEyz2MBEGA1UdDgQKBAhIHEQ1IBMs +9jANBgkqhkiG9w0BAQsFAAOCAgEAUpeNvDMx6DvGI0GZYLwZenZ07KFznMjosgR4 +uz82/UcOuuoMWV5jFcSrNBFP4lZ8WTAs7HySe5AibRWsB7+5AjvCj8FVAe1BaUjk +S91iLqkrco51s7ziLu/OWS09yMJxeCJ8neI8PeoaIXiDNwfdVKMWk485S+Y5CkBw +IcMENgfpj+/dPot4NrZN4QZE91opiZTxzOEVnJ9gOI1N9+qHrvUTESJI/0GEx3xo +qTGs/ZY2/5BXoMnGjZIltVrOdqYpC3DInJtG+TPPhlZE699I8n8eUwDwGUAug+Rw +jnTUWRa8o2aoENs2Qtm52Zu//GmcigpBk38eStRDdSbsRycD44dStYL4bGxiG90E +c7avFpZ77QjoK2A19wjRdoR8r3lli+Eg29dloO90TfV0nPv7eH+BdFvAbe4yCUSF +GGOYoxgutFvZvpXAtgLuCXavsb4Vt9ME0rAbbCdGnHQ9tdCXx/UKxI/A3tgnPHTu +50tOe0NH8tf/fDNBRgLjjIZMTME//B8DubAg07ST60YNhjqK20+ON1Yok7soSChA +FdLhPccK9/JN2yd1hmQNw289Oabl2YZaNXbHtOU60VclAsecAiFiHAB72fXTYsq/ +V0t3A48TE1bzZ7KL1HYAt6MUEN46PoqI9/Wv3vC2C3oNmf9rajEQ67hqklCLdN0G +POhXZgg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +CPkoA02OgI15 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGZTCCBBmgAwIBAgIEWEcVgzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwQTELMAkGA1UE +BhMCQlMxDDAKBgNVBAoMA2dvdjENMAsGA1UECwwEbW9mYTEVMBMGA1UEAwwMY3Nj +YS1iYWhhbWFzMB4XDTE2MTIwNjE5MTYxNVoXDTMyMDYwNjE5NDYxNVowQTELMAkG +A1UEBhMCQlMxDDAKBgNVBAoMA2dvdjENMAsGA1UECwwEbW9mYTEVMBMGA1UEAwwM +Y3NjYS1iYWhhbWFzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0JeI +JiwoJscNMBanHHcn+xBJEHA0gns1MajY6YOEQFDXBYzM2o/3r71iSJfhnbePveqU +yhuxxj/l/Q+H0jFAlGf9WiQxETURYhnZo9cnJ+mRpviXr5SsovyokJfWHWQ6/PMs +vasewtKWxlvBNtknntXbS7eSKqHOriWu7ICcnAeHSNYMT2QtL04rK8kURO8q4XYT +8HKwYorLDcWmP4Sswll7/0MHaNYodYMKHfcbD7+XtEwKNCJFG7BmwADCBCQuIWVT +OYodumKozyR8wQTIgfXP5+IRe8YBIUGQT8cqePJ9pymz8L1E/V/+yISVbJxjqNDa +0G0+A8uDcdxSvEUXiT+P6swBvdfmCgqF0ryNyU5w/r4wKv488HpLIu+iIrZOZCMO +JT/SgqlHZR9oylieFZJ2iNwgtlE9NK/3DeZX0X0VogA7ua75QRxdDeLwwuUzUAdF +4/VrxWaFELs4u2Fraxx1+PHLU9MVhh81b6mDmVBT4sWf3HjrhKquDhr8g5PpWu4K +hZe3GmJ2rZG95pXOKQVU8VoaV0enLznWVcdbHl+pFyYEwJwnFPh6aQPLEeKo6nOj +z8VPJ6BT15BQk3p+P7Hp4MwLg+cNdc9gtOxtcTXhJi2bmcihQkevsJ7iV0pwxB9L +BIfKPfdRzxsQ+G8SYL8Px6ie3/QaaEhompu7wz0CAwEAAaOB/DCB+TAOBgNVHQ8B +Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAyBgNVHRIEKzAppBAwDjEMMAoG +A1UEBwwDQkhThhVodHRwOi8vYmFoYW1hcy5nb3YuYnMwMgYDVR0RBCswKaQQMA4x +DDAKBgNVBAcMA0JIU4YVaHR0cDovL2JhaGFtYXMuZ292LmJzMCsGA1UdEAQkMCKA +DzIwMTYxMjA2MTkxNjE1WoEPMjAyMTExMjIwNzQ2MTVaMB8GA1UdIwQYMBaAFGSl +UQSGX98MKXgOBriuvKYLYQE7MB0GA1UdDgQWBBRkpVEEhl/fDCl4Dga4rrymC2EB +OzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEI +MA0GCWCGSAFlAwQCAQUAogMCASADggIBADhuApDQA4PhiEYo5RghJPKN+V0ukSXX +QQiMIVpxws1Cai5H+iI7WO3fgMjszUWWWKlJFMv0CacJIXr4quUBaJIlQ7cp280w +l3NkQOXIRAoenv4y4HtccpaTbZjHTQzaddMw0RmizpTEMGPGGWyNtFO40z1YcIjl +XPDSxPcT9UqJeu4ZHS5LMXEfeeEduUVvBIp+Zy42/PwcOEJ2N9TtQ7PrGynDpnmU +JdEL8mrvIc9HtyUn9cdioH10yxHBLXPYEYJ0jvAgmtJAcpHsA0Z9AkvQl7uLkfZT +rostBDk4kHEa+VOV2xwgHdkyFt3DhAawCStCDh3lXkMw+O3yA5/Wth/bTe+rVkzL +oGQxD3bfwRuXzvx01OiyLSx+NeMr+mz58RNK4+uyDsOQsvma8rh/2h2OZ4DVV4zg +lAZZq+x3UIpfbw2XXPT4Vw9VDEgEUwTrHz1ZlauQf7zLza1P1UJVkTBb7IYdNXgj +J5TS2CvezCFJ0Y8idyuOkj63HQpScWXeVYuFcTACKa0ZUSTCOXCMqyI9Sz9yp5Xh +y2zWCXN9H1Pg0/EAElsikwEiXVpoXOgtaYfNlp4Q21yC4xAS5kRg9OJfzFAgoGnG +7cBYxLEOfXqLEmsHydOnxFpM+Hud0M2mZOefzqKmhHDgG0CZoOx4Oim9SguLrgvs +LqDMmbzn9RUM +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +N9sl3s2Wikpq +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +B3HDSGYEOVdjpaNe +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +YhObe6puoMKDiOx6bgQGGyE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +49x7v63X5uRIAlnsDxTfx9U= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Q5qDALmOAOGWdakTLnfOMdiGBqGB +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGcjCCBdWgAwIBAgICSwEwCgYIKoZIzj0EAwQwgaIxCzAJBgNVBAYTAlRSMTAw +LgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkgb2YgSW50ZXJpb3Ix +QjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2aWwgUmVnaXN0cmF0 +aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3BvcnQgQ1NDQSBUdXJr +ZXkwHhcNMTgwMzA5MTMzODIzWhcNMzEwNjA5MTMzODIzWjCBojELMAkGA1UEBhMC +VFIxMDAuBgNVBAoMJ1JlcHVibGljIG9mIFR1cmtleSBNaW5pc3RyeSBvZiBJbnRl +cmlvcjFCMEAGA1UECww5R2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBDaXZpbCBSZWdp +c3RyYXRpb24gYW5kIE5hdGlvbmFsaXR5MR0wGwYDVQQDDBRQYXNzcG9ydCBDU0NB +IFR1cmtleTCCAkUwggG4BgcqhkjOPQIBMIIBqwIBATBNBgcqhkjOPQEBAkIB//// +//////////////////////////////////////////////////////////////// +//////////////////8wgYcEQgH///////////////////////////////////// +/////////////////////////////////////////////////ARBUZU+uWGOHJof +kpohoLaFQO6i2nJbmbMV87i0iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx +70Uf1GtQPwAEgYUEAMaFjga3BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFL +Xnfv51ko/h3BJ6L/qN4zSLPBhWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZ +mPVESVebRGgXr70XJz5mLJfucple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQ +AkIB///////////////////////////////////////////6UYaHg78vlmt/zAFI +9wml0Du1ybiJnEeuu2+3HpE4ZAkCAQEDgYYABAEDj9snZ74s3ZmGYcTQqwDfYt23 +M2YbKiKcu5z/JBJykQWHcsXbK62F7k4rRQpaOZsn5eL24UMurF5HZTyLlYLMOgBs +v4bhY5Q9DpX+o97qXFtKmwHo/pQhRZYyLHoaKahbEt6Keq2lBlKwumCyV05Z+LWq +LBHq3Fh7G0/2YRBq7Qgo5qOCAgkwggIFMB8GA1UdIwQYMBaAFG+bu8ae7NrZvDHp +UOEe0MoAIgWWMB0GA1UdDgQWBBRvm7vGnuza2bwx6VDhHtDKACIFljAOBgNVHQ8B +Af8EBAMCAQYwgYQGA1UdIAR9MHsweQYLYIYYAQIBAQUHBgEwajAyBggrBgEFBQcC +ARYmaHR0cHM6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRyL0NTQ0EvQ1AwNAYIKwYB +BQUHAgIwKAwmVmlzaXQgb3VyIHdlYnNpdGUgZm9yIG1vcmUgaW5mb3JtYXRpb24w +EgYDVR0TAQH/BAgwBgEB/wIBADBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vcGFz +YXBvcnQua2FtdXNtLmdvdi50ci9DU0NBL0NTQ0FUUl9WMS5jcmwwUwYDVR0RBEww +SoEWcGFzYXBvcnRAa2FtdXNtLmdvdi50coIeaHR0cHM6Ly9wYXNhcG9ydC5rYW11 +c20uZ292LnRypBAwDjEMMAoGA1UEBwwDVFVSMFMGA1UdEgRMMEqBFnBhc2Fwb3J0 +QGthbXVzbS5nb3YudHKCHmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50cqQQ +MA4xDDAKBgNVBAcMA1RVUjArBgNVHRAEJDAigA8yMDE4MDMwOTEzMzgyM1qBDzIw +MjEwMzA4MTMzODIzWjAKBggqhkjOPQQDBAOBigAwgYYCQQjz92A0LonPCVw+GM9U +P3AZ2+vOfqT6dMit12eK3lfV05x0hedfQ5bsOwODhv4iVb+HMHE02pGYNUlZlqIK +GYImAkFolmVGtwvyZXOg6UFUROo8HL+LD8B8OiZ4tm/ShYxUusAHmBHaG/eQ9zyW +RhtzAzCHnF5XSVwA+q5HhDhJsjpcYw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +W5cKYdPGK5zXqp8VbQELr301sN7aKZk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +KYhu0K6DchGZeZwjJq2Y75v+OIztH6LVp2k4vg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGejCCBd2gAwIBAgIKAJFhHVWs4X+hVDAKBggqhkjOPQQDBDCBojELMAkGA1UE +BhMCVFIxMDAuBgNVBAoMJ1JlcHVibGljIG9mIFR1cmtleSBNaW5pc3RyeSBvZiBJ +bnRlcmlvcjFCMEAGA1UECww5R2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBDaXZpbCBS +ZWdpc3RyYXRpb24gYW5kIE5hdGlvbmFsaXR5MR0wGwYDVQQDDBRQYXNzcG9ydCBD +U0NBIFR1cmtleTAeFw0yMTAzMDUwODA3MTdaFw0zNDA2MDUwODA3MTdaMIGiMQsw +CQYDVQQGEwJUUjEwMC4GA1UECgwnUmVwdWJsaWMgb2YgVHVya2V5IE1pbmlzdHJ5 +IG9mIEludGVyaW9yMUIwQAYDVQQLDDlHZW5lcmFsIERpcmVjdG9yYXRlIG9mIENp +dmlsIFJlZ2lzdHJhdGlvbiBhbmQgTmF0aW9uYWxpdHkxHTAbBgNVBAMMFFBhc3Nw +b3J0IENTQ0EgVHVya2V5MIICRTCCAbgGByqGSM49AgEwggGrAgEBME0GByqGSM49 +AQECQgH///////////////////////////////////////////////////////// +/////////////////////////////zCBhwRCAf////////////////////////// +///////////////////////////////////////////////////////////8BEFR +lT65YY4cmh+SmiGgtoVA7qLacluZsxXzuLSJkY7xCeFWGTlR7H6TexZSwL07sb8H +NXPfiD0sNPHvRR/Ua1A/AASBhQQAxoWOBrcEBOnNnj7LZiOVtEKcZIE5BT+1Ifgo +r2BrTT26oUted+/nWSj+HcEnov+o3jNIs8GFakKb+X5+McLlvWYBGDkpaniaO8AE +XIpftCx9G9mY9URJV5tEaBevvRcnPmYsl+5ymV70JkDFULkBP60HYTU8cIaicsJA +iL6Udp/RZlACQgH///////////////////////////////////////////pRhoeD +vy+Wa3/MAUj3CaXQO7XJuImcR667b7cekThkCQIBAQOBhgAEAM+02ULzpF2ptrhm +BNuFBPLH1smVEWlb42BUGc57xR1h/pU77I1IW+3GVMdzrPfxJZzTa2uFHASF5Ngn +JoZMBVEaAQrlhOYG/SummKYVvyyfUmxhbPyufHSJ7kS0Q1T23jT2nnls5Bpzhcps +qVtyHdsN2P3B8u/MKPjD6XCDhp5SbE1ao4ICCTCCAgUwHwYDVR0jBBgwFoAUhx9m +vuJY8ZDfG1LbPNDjxY1FDe8wHQYDVR0OBBYEFIcfZr7iWPGQ3xtS2zzQ48WNRQ3v +MA4GA1UdDwEB/wQEAwIBBjCBhAYDVR0gBH0wezB5BgtghhgBAgEBBQcGATBqMDIG +CCsGAQUFBwIBFiZodHRwczovL3Bhc2Fwb3J0LmthbXVzbS5nb3YudHIvQ1NDQS9D +UDA0BggrBgEFBQcCAjAoDCZWaXNpdCBvdXIgd2Vic2l0ZSBmb3IgbW9yZSBpbmZv +cm1hdGlvbjASBgNVHRMBAf8ECDAGAQH/AgEAMEEGA1UdHwQ6MDgwNqA0oDKGMGh0 +dHA6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRyL0NTQ0EvQ1NDQVRSX1YyLmNybDBT +BgNVHREETDBKgRZwYXNhcG9ydEBrYW11c20uZ292LnRygh5odHRwczovL3Bhc2Fw +b3J0LmthbXVzbS5nb3YudHKkEDAOMQwwCgYDVQQHDANUVVIwUwYDVR0SBEwwSoEW +cGFzYXBvcnRAa2FtdXNtLmdvdi50coIeaHR0cHM6Ly9wYXNhcG9ydC5rYW11c20u +Z292LnRypBAwDjEMMAoGA1UEBwwDVFVSMCsGA1UdEAQkMCKADzIwMjEwMzA1MDgw +NzE3WoEPMjAyNDAzMDQwODA3MTdaMAoGCCqGSM49BAMEA4GKADCBhgJBGThpJWU8 +6BtNFQ2WN0AVzFKBO+OAFv5FUo3d14I2tKRUvJFIezgxtag+BrHUr76YrQ4JVGNN +5/J1zas2xtmt+F8CQTD/rUUlQNba/iIpbKRFmJdirY7amTlZcr9OIogkJ9Ou15yj +b2MKLkMJWwdaUley9nDdu9NtKCqNpLhgDjo8cfdh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGfDCCBGSgAwIBAgIEFTTIVjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +SUQxJTAjBgNVBAoMHERpcmVrdG9yYXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNV +BAsMNkRpcmVrdG9yYXQgU2lzdGVtIGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtl +aW1pZ3Jhc2lhbjERMA8GA1UEAwwIQ1NDQVByb2QwHhcNMTgxMjE4MTAxMzUwWhcN +MjcwNjE0MTAxMzUwWjCBiDELMAkGA1UEBhMCSUQxJTAjBgNVBAoMHERpcmVrdG9y +YXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNVBAsMNkRpcmVrdG9yYXQgU2lzdGVt +IGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtlaW1pZ3Jhc2lhbjERMA8GA1UEAwwI +Q1NDQVByb2QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDxa03wa52I +BXLetbCDXJN798J1bEe5RGzYnp6W9EtXTPkSWA1WjXYuf6bPzNLaAojQK6T3N6vd +X5RDRRAVcH5RQ3ibc2KJM8N2218bdhT3aP7PubmA7iFIUheJFyf1hK4D1eOfRgeK +v9q963LMXELpoWRxL9vieBzJo4gflYEZRw12FGUUJoR+JtaseLZC6TOANCBtqq4K +LsAyACzFr6wVYelQHwdcdV1aLP+SEhGiLEPM0dSAAuKLDF4eZ9VMm8WXRfHh1bGJ +HrOQhraJF3ifbLYhCHnpO9SMCLYcoxY1LtEYSoDEXamO5uuHxx4/znxZZ9rPPA+M ++f5SOYW2Y0gIaZYBkIi4WQHwPzr7/JiDwHJ3O+gVWj52ur0UBsAaLxEfczOtKjjr +iae97HgmuLQqQ4cQ46K8c9AflrgRVYvJGXKRjo3SpW2ZOWM0IwPjN8aQa6QLpiaf +yUFb3QSZZD4VnVYfFOmzoL6BBPaxHH14Qux1C8BPPtfYC7HBUvXBYw5Lt+d6Azbk +cOwnhJiuXDBtuy+j0wMRIsRXSWerpTNHPnTRVftnTIZFL9jGXpCm7M+F/Zx8x7vq +DX04inagnFokO8PCZqi6AGPyCQYrVzjWWwxdaRaI9H538bCmimKace/IxSFfmdKE +5D1em2++CBiWgBKwpE6GA9SeN+u972GPDQIDAQABo4HrMIHoMCQGA1UdEgQdMBuB +GWRpdC5zaXN0aWtAaW1pZ3Jhc2kuZ28uaWQwHQYDVR0OBBYEFC/bOl1gmZrF12lf +UyeYe1urKclNMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsG +A1UdEAQkMCKADzIwMTgxMjE4MTAxMzUwWoEPMjAyMTEyMTgxNjU5NTlaMCoGA1Ud +HwQjMCEwH6AdoBuGGWh0dHA6Ly93d3cuaW1pZ3Jhc2kuZ28uaWQwJAYDVR0RBB0w +G4EZZGl0LnNpc3Rpa0BpbWlncmFzaS5nby5pZDANBgkqhkiG9w0BAQsFAAOCAgEA +HZoA1nq+cRPPeQY4sA8tInCKGQeQBjoG8WLNREzSkQQH7XeyaCdsb0n5p1m3UYYo +IZtkvkOCB9JvrI3Y7vnper8U7yM9yRhwXoiNyp5S6biHADQa79pG4H5FrV31sJg8 ++btm+euvZAJQO2E5IrVJ2RBVEb+Hn+Z4ONizYOZUVE6Ek7nngJeC1bIByvLaCTxw +aDZiMneSBwDiBn3If14DxY/+G5y7lU0lUAGm15KTpODQZgbRzzIDwsRiUgdvOU0S +/P93BjohzCM0nbCb1kavYvAn3yChRVPdGKo2YHvHirQ0MoNo7/HOO9Akt7zPWgMg +cD6Z85dxlnIt9TZWsy/ouC9v4Zr97vNv9Vfq7bkZs+H5/8spjlD23NOzpD4sgPD0 +i2DsH9c1LH8ulpwaHORuZC9NgDAiHRYIh7yrtJMa83e6VXWkoLLY3ZWMhhHR/iJ4 +vONJFJ7dWowS4d126hOLFj7LQrRdw0LeDO7FIIEQ77XI/lpNq2CwU6l/dO1Lx0Rh +mWG/Wfw7+/D0D2s6b5GlC+NImV7wKoj05mIrnpRkZxNrrFNeLBYXeBSLX1b2MHTp +JIYmKXKyah21cyX+muptqE7S67qijHNNlgGCDB/bGN1tGiV9csaC9tNZ6r+4/0pe +sB9g2lIjk5SMoV7blfSD2a3p+ZiF0GwDkQYGmTWwM4o= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGfTCCBGWgAwIBAgIIGijtldQEPagwDQYJKoZIhvcNAQELBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDYxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE5MDYwNDEwMzQ1 +OFoXDTI3MTEwNDEwMzQ1OFowgYgxJTAjBgNVBAMMHEVDTiBEb2N1bWVudG9zIGRl +IFZpYWdlbSAwMDYxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMTMwMQYD +VQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMx +CzAJBgNVBAYTAlBUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1QQJ +F20sFyWhJ0E2+xONc3+KFyOaAt/hbO/JGFn9fIME0NNvp9L1JqEJ4oCopnCLD2G/ +51N33/CuUVUiv1d1wJMFO/jXbKIHHISLPC6g5hh+EMhYVgxDnJ0LlizTJgSskb6l +xOztg/UE6c9T+2GI0C/1bVN/aOlIi2QAJ7EeVNgjnA/vaQsLFDnopstzTv1ykjMI +4NbWkvbt/yZm6ApzjVRU8eGrkgB2o4srvzEH4JhANqLDBVoW/8zyA27Eu9ukELgh +uaYmJkq4v7LOWeisL1VV1gXxsPnAbcBAnyWCBPb0al5DdnndF7sZHknDW0uxL7Jo +bNeBzxbabHDGN5Hu45HD+6DzWKrtcmmrdQCMANFPPxeISNPmePWXNRG+ssvq73ir +N6izxqSVytST7d9SVvNG6lu68RgZp7f4P0pgYpgyfIvVtx2HPvu/5d3MZT3o/f9B +OgutYk53BEqFfvC4MIRFwSIgynYSghm6aGDPX2PvSGI1BvJ6uYji3o3FdFYKKCB1 +UcPZzQaJEhrKhUr9wWTFvn4ivsYpIJHQt7JV5xAQ+j1ZmjXRQQUutwYQj2uAVOL8 +8jBJogWGQWQ31bt48lftLXBIjGVKD6CgQit7WOxpFRKiAIxAy6qrNDYx0xvn97vg +bMa820l0XWHezI2xwh4WXrBjE/1DevXWK/cZt48CAwEAAaOB6DCB5TAdBgNVHQ4E +FgQU30PEnl/bhkxNME0iMv6W+OafYJswEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNV +HSMEGDAWgBTfQ8SeX9uGTE0wTSIy/pb45p9gmzAaBgNVHRAEEzARgA8yMDE5MDYw +NDEwMjQ1OFowFwYDVR0gBBAwDjAMBgpghGwBAQEDAQEBMC0GA1UdHwQmMCQwIqAg +oB6GHGh0dHA6Ly93d3cucGVwLnB0L2VjbjAwNi5jcmwwDgYDVR0PAQH/BAQDAgEG +MBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANQUlQwDQYJKoZIhvcNAQELBQADggIB +ACx+WeRDDuJxIc+3V3zgkNaD3DAfPHAeLV3OHjqsgSxn8e1EHQElZFUJe7EHh9Xp +y4NZaxq9oyTDXTQnAO/Vu2NOHeDa3IDMU2ygRgjlsueIgt6sf7euOCR8a8NcyKlg +nPrdCeFHKYHx9nzGoDu4craVaeQgbHpg0+NRmEt5kRaV+UOG16tQm4BipZkJr90T +TtyO1qg2dx98LZ9CrVvRJhGYXX7dqRc/G24MpaPk3K+wzrxwBXPzosrIqMHj/vqS +ttbYrX82KtTmdUlyJkoeODHX9yFoyprteqVudK8T6VRJ48ZIdOhOX4lwx/oHiPyD +9hx34jZJ/5lVBl+qn91gnSzrDjiMME1Ydp51jjkV4+nl1gcCiFgWRDxnTi+UBdD0 +hsiIojYG7svgNxkqJhuuDr7pF4NmdxHzvIDFb9vB7GiZO6hcM8HakZ00V9UCdHi9 +XDcYfF9FDNB0wmAZ1pNxGirL4be+QNn5NjIefRgkRAER/M+6toAL7KHAoJlTg9fU +TNAJ+lDGZvewDuRMOn9AorZtgpwOPoQNLpmq8fg49XBrEHMwQuzEXSM63QAl34Oc +Tx4e2A313aobeXmVdHKxl+a9jkR2nzDtet5hxeWg/l/76GBS5RMLqB9mYQ44Iyk8 +8TxXny7q6rSeVy8pyBszEtAi/Pl5qw8Naw+TVyqvWysV +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGgDCCBGigAwIBAgIBAjANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJJUjEd +MBsGA1UECgwUTWluaXN0cnkgb2YgSW50ZXJpb3IxGTAXBgNVBAsMEFBvbGljZSBD +QSBDZW50ZXIxCzAJBgNVBAUTAjAyMSYwJAYDVQQDDB1DU0NBLUlzbGFtaWMgUmVw +dWJsaWMgb2YgSVJBTjAeFw0xNzA4MTUxMTQ1MjNaFw0yOTExMTYxMjQ1MjNaMHwx +CzAJBgNVBAYTAklSMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlvcjEZMBcG +A1UECwwQUG9saWNlIENBIENlbnRlcjELMAkGA1UEBRMCMDIxJjAkBgNVBAMMHUNT +Q0EtSXNsYW1pYyBSZXB1YmxpYyBvZiBJUkFOMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEA52a8LhCTejth20l54hgHwlxKOzr3/UvPVBchs6SdEzN/Wxrk +SNWMO2N6+iKA9LB+mDgYqMhubQQcuUuWjALuh0eFFMtvj6mK8I3T+Cli1Jyk3hzk +edXa9wot0Ua/o40/GvrfOplNdz121sqvIgJFM3RN9T4aLvTk07w0FpIw5glmzf1/ +FXk5jhvmTiWOahCNgvl1jdbzLdpkHc9MMJzq7JUqFZ0H//nQi85RHdAz4ztvyola +zLRA3zHhWvjsZYBIQ7KKnapVE7JoYMnac4TNrDemIFgSwarh4GWCJmzwihjewsJy +elJbut0vXngdsQooY6Gt1woiqxi/mjhUgHZagR2LRG0FaF8jjmUyFal7GLtTdNQs +5JEXjl0XW3s4VcTIs0dkCGZmEOjXRFzlaIb2az4Pyftg1dhr4c7MrD7uaWWznuKU +AzVN/nlN/qP3+HMwtIBaeUCTDZkfkSKVd/XWfeTsy8paHWiNBunuij1ITiAWeIaF +giIghI66RJHJMuT0q+M/4nwWgHqnzc5mlNiden2fcSzBjbtzNResdbI2/cclsUtc +REmaowWvpYDmMl/0LfofofiHn3AQOaJmeLm1Ns+PzlfKt+/rTt4WznbBRm159zs9 +2rNmn7Sew0I0XCjDHQi1nLFk0dtuVFZ44LmGybezz7N2DTL4eB/ltN604jsCAwDd +I6OCAQswggEHMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsG +A1UdEAQkMCKADzIwMTcwODE1MTE0NTIzWoEPMjAyNDA4MTUxMTQ1MjNaMB0GA1Ud +DgQWBBRJiS5pTRyWiqzhtkBD3PTMMYJ2uDA3BgNVHR8EMDAuMCygKqAohiZodHRw +czovL3d3dy5pcmljc2NhLnBvbGljZS5pci9jc2NhX2NybDAtBgNVHRIEJjAkhiJo +dHRwczovL3d3dy5pcmljc2NhLnBvbGljZS5pci9jc2NhMC0GA1UdEQQmMCSGImh0 +dHBzOi8vd3d3LmlyaWNzY2EucG9saWNlLmlyL2NzY2EwDQYJKoZIhvcNAQELBQAD +ggIBABJtnVQ8z/DXRgxRw2sBIGKxh9vjYgfCddg1qTJzAnH0u43Zb2NV4omzkPT9 +65IyTjSyIzk4WNcf9lmUPiYR1t8KJYMuZ3e8FuJ+QIKTSEtR3+i8mF0gDoTcukDt +DmRe8tx8MDAoZLiJQ31YRgfpmCi72PZe0sHX9tqbHjqmKpNuev+7lRqjmgRoyphq +n7v/SoQHvDBpwKbJICQ1zckG2nUbVa3as6d6bL1u0824wZu+8+dXuC8iAdqZtDA4 +cSAwFL+RjfEeWxmENXiBL7yEuikRy5GYI5kw+2l8OUmWFbceY4GlHg55thL0CNh3 +Yh833CI+n8W1S+Qk2huGQltYBH9jtPgENW4Hb9sOVNkO8mA+M0XuBCHjqx2V5XLM +lHgguo/KdSqJkg3TmclHIVzazKP0yNmCPgyN0DrIe56pkJ/KTKgKAmxuQDbvXvii +hHiv44v74SUW/X9J++A0kytu2YhTkjIzbJWDMr/2qtY9GAyyRoeOFlQUsks1hZGE +OzgE8kY3KdQ3+WuA93F5ChwMv795lEi9fB3frEwf5KpQmWto7CFFwNRZLuofJt7I +9TPKp3R21h3ywWIsz+bbXlYGe1fHTctRKcX64Syatv1qNF90kBTliLTlt6qVeilk +TPNTVHU9/JKzlmYI0VmSvOZ+KljT5BUHwKX/Y09dmoXGBws/ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGiDCCBHCgAwIBAgIBGDANBgkqhkiG9w0BAQwFADBkMQswCQYDVQQGEwJMSTEW +MBQGA1UECgwNTElFQ0hURU5TVEVJTjEgMB4GA1UECwwXQXVzbGFlbmRlci0gdW5k +IFBhc3NhbXQxGzAZBgNVBAMMEkNTQ0EtTElFQ0hURU5TVEVJTjAeFw0xNjA1MTkw +MDAwMDBaFw0zMjA2MTkwMDAwMDBaMGQxCzAJBgNVBAYTAkxJMRYwFAYDVQQKDA1M +SUVDSFRFTlNURUlOMSAwHgYDVQQLDBdBdXNsYWVuZGVyLSB1bmQgUGFzc2FtdDEb +MBkGA1UEAwwSQ1NDQS1MSUVDSFRFTlNURUlOMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAnd3K4dtsN9KpwrWLY/qFpe9/Q2zYmXPRfZmKN83ck4CZZCzk +2ChEahCyQb/+LHbO0aC9Xkw5mUhpMUHc2PUcBzd8jABXtIf6vIigxHDAp03Fa/Yv +gKy8kIVytRugF95SmWbiYxgUiUvTQqJE/s+AIiBD9hQNUJsV4d//4Uhh4lGVA75/ +mEomiK3xXc5zNQk68rsAhe1I8qhXNOshVz4yJLB3jp4+O+GkU5NVGlPtIEG5itcH +ZDr6fuKVpGkopNLkQGRrIOUO2YUYIdzhRIe0LrN3D+YIgU08lpkmle+imWGUBJyM +uv4Q3gWNhUNMOmxtVnweiRKzN7oDMvaaJwaYiBeZmeRWlZYPYp9ATGKxdDDVt6tO +dWRoB1XfcU+wvnPCG7gLBkkOH+WxQXm0T5fKhtH6UQHhZcFBzRVllG0ZIN+R+7Je +cvJwk7QFmViyzjx9POdaBVjtSwTJyEyWui7izUexSRStjsEj02A3DUWUOiX60NET +VAemW/jnez1RxepNiaFDQlQACFNzBpstEZnX6X25NoujdslPuD6sapVA3f1fMWOf +OZz0FOqhBXFEpaQXPpqY74Lhxze32cQIt3F626a6tbT7chOcvWsBw2QValNXnF7L +KPaXjrOjzIbalsdrrIoiO9BA2G/xQFyn9RmyvraKuvmB9+yJFepmJN0aDjUCAwEA +AaOCAUMwggE/MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB8G +A1UdIwQYMBaAFLNKeaIjpOF9+RL10yM12CnYPxCCMB0GA1UdDgQWBBSzSnmiI6Th +ffkS9dMjNdgp2D8QgjAsBgNVHREEJTAjgQ9pbmZvQGFwYS5sbHYubGmkEDAOMQww +CgYDVQQHDANMSUUwLAYDVR0SBCUwI4EPaW5mb0BhcGEubGx2LmxppBAwDjEMMAoG +A1UEBwwDTElFMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly93d3cubGx2LmxpLyMv +MTIxNjUvZGF0ZW5zY2h1dHotdW5kLXNpY2hlcmhlaXRzbWFzc25haG1lbjArBgNV +HRAEJDAigA8yMDE2MDUxOTAwMDAwMFqBDzIwMjEwNjE5MDAwMDAwWjANBgkqhkiG +9w0BAQwFAAOCAgEAcaT8RKOW/ZBGYejNwEBCZZIQDamQeWmyWP1TH6Y/ys2dqIuO +13i7zd40UZ1Wg9PJ2Vu0BXDbL+waYWZMiSJe9yrAxY8yQijgblBoqIbnDhlA639M +1i74NTjbM/4vYbhqBV8K/H7IVx8fJkZ55recvFltmCjgNVtRfFGO70NClLDcLiGy +uM+fP6CG6QhIVqw3C+yw4SNqm1OhBNPeCoHQu1zLBaVmtCwP6RWw+eas9tr+V9+h +doJqex3/qCJrSQivFN/USFnnvcp71SE11NMCsBoO/i9wHtb6Bd4yx1uqiKOP5NTZ +ynUPkQQStiG+kk7pDAdreiMPl5rdYNEe7htmkZzu9MizBkaNQYiY/izgdGx3WCNN +69gUMvaTwIR50Q6b+e49CzZYRO4vGjt7awfCfNhL16Ojszv/fsKUjgbKLZJC9UmT +AEsFtYk+SS2oIo5flC+ToohgdVejwDH9lHFznZSg5wrAy94ggupXtx2tYvR90c7E +NxjtejP5nV2c/KBn2yHNx1X2Z9Yi37RZtMr5tQFpxN7qFLjzVC3PwYaYqKCBV062 +dldGdSzBFAISSErxkqNQHbbCdhMrDd7xoe/srMZpwO7rourWWqaARDpo2yFk/iv+ +8uaYJIvT2H6yCXBaQ7Laiv4xqTB9BYwKjhGSoPa4Y5y5NwUngFXyUWDW6v8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGiDCCBHCgAwIBAgIBGjANBgkqhkiG9w0BAQ0FADBkMRYwFAYDVQQKEw1MSUVD +SFRFTlNURUlOMRswGQYDVQQDExJDU0NBLUxJRUNIVEVOU1RFSU4xIDAeBgNVBAsT +F0F1c2xhZW5kZXItIHVuZCBQYXNzYW10MQswCQYDVQQGEwJMSTAeFw0xNzEyMjAx +MzIyMzZaFw0zMjAxMTkwMDAwMDBaMGQxFjAUBgNVBAoTDUxJRUNIVEVOU1RFSU4x +GzAZBgNVBAMTEkNTQ0EtTElFQ0hURU5TVEVJTjEgMB4GA1UECxMXQXVzbGFlbmRl +ci0gdW5kIFBhc3NhbXQxCzAJBgNVBAYTAkxJMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAq85bZad/NPFLq1WyGRSzogKvy7SMoDFugd+Ht9e/Y3fZm8xF +OtCsulib3ABcUeNXbnfupAhqTW3JsdHuh7I7polb/xCJFELRDroK+2qlfseaMNA3 +7O5xEmo597HIu2d1I1I36VBpE9H9OuI2nzujy0teZQD2MYZ4bRUxkq58Y8FlkhdP +kqCJakEswKziZ700GmlIfE0XyiTwr7v9GrLKGxbPtsugJ4PB23iHQlpMbsw7N0FW +CyTGNVNNxLa/0G9BMpdE4X5ujlDKxZpJ5CTvIA8LNmowtqk4dGPlLK4H/9VloylD +ULi0tXMLd6rFrB6pEvBQsUYl96ALoX1HcJK3lfnZbIzO9IqXbNQj/HqyF8le1t8q +4ReS38Nv7mbNhhxc1St1Y0U5ELNbnHoHKBJYUrGoaU2t5uez59Qeusxlk826s4UX +bNJzE5DVi7BJxPoPN/4nuFxQByMlB093cWTgCsz5jUc0MvJO6nLWv9xOUpT9HeSS +bJLZ7cE1RvIAdTrT3nVesaPz2gkMDCJgkClvPkIwCZXRz2qyONEI+uI3FbWdALy8 ++N9Zrfe11R7i6+FqC9VV5BEuqdbcpf0tMbyMJwVZLriLDdlB5PiCCq1V/jTjc+Bk +W645yMU5VPPx+s/q6+YrhDTj7weESwBE6JgYj0UQjI9A8YCxgLlBwFKzqvsCAwEA +AaOCAUMwggE/MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFD4rPpfI4nJ6+yn61DVpP7PPP73AMFAGA1UdHwRJMEcwRaBDoEGG +P2h0dHA6Ly93d3cubGx2LmxpLyMvMTIxNjUvZGF0ZW5zY2h1dHotdW5kLXNpY2hl +cmhlaXRzbWFzc25haG1lbjAsBgNVHRIEJTAjgQ9pbmZvQGFwYS5sbHYubGmkEDAO +MQwwCgYDVQQHEwNMSUUwLAYDVR0RBCUwI4EPaW5mb0BhcGEubGx2LmxppBAwDjEM +MAoGA1UEBxMDTElFMCsGA1UdEAQkMCKADzIwMTcxMjIwMTMyMjM2WoEPMjAyMTAx +MTkwMDAwMDBaMB0GA1UdDgQWBBQ+Kz6XyOJyevsp+tQ1aT+zzz+9wDANBgkqhkiG +9w0BAQ0FAAOCAgEAphyu7xkyRPYPHFOyNdeLw9LasrfKMtxSyIykzuBxjfvKAQuY +xu6atuE2XxlDgRFr44XCzMxQyzXMi/9BKJwhrzax6aRALcwwIX6cmfVmmhnxKSBR +A8bKxlZB1ElhCqXMOcSraijaTOUcSBvPcuPrN9peM4+5Rakc7+8EdAybFDL2uV4D +3/vTEYp9BnsDKx/gt2BNfsjMUTlviy19KjfeyAYxdosbIN2AnqRcJhgRDEkr7j/B +k8zrVIOVMHB3RgtMjCcQnt73yeblo1eiG9tvJAIBULtqaESy/3iH37+1g0yu2lXk +plmldGTbmKcEipivAA5WdcCY4ULC7vlozGGBKCaxTgkmaBU8sIMFlT6RqY1c/PO0 +W0jXZ/TDDTsLMkk2yxtAjv+1mkaLuumifBk2qWWbPojgIsoYCsWyuIKkyX5LKmju +QJ/aEuPwaIMtYqkV4fDbw0kddVP9WIG/n0mdq3mBV2RDRFE9UebS7BbELz7uzpKh +ynQqxBM8f0hjKG72FTD4WOyQbfXoPB2NJn6rGeGS+pC6xFpT/g9VB6aTI5OwtaCe +7ke2jKaHv8vPKhYPfGsichjqCf6GTvhY7cV8srkzY4edjdiNXDzxjBxOvQPYSq4D +lAU8nb2P9YXUERC7Y5umoTI6ZlD6TAr8mEx9jkvWeVe1hos7TAextD9MtTY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGkjCCBHqgAwIBAgIUPNm2x+9pmvSrTG0JxVUnS92hlBQwDQYJKoZIhvcNAQEL +BQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25h +Y28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwK +Q1NDQVBLSV9NQzAeFw0yMTAxMTMxNDA5MjhaFw0zNDA0MTMxNDA5MjhaMGYxCzAJ +BgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMSEwHwYD +VQQLDBhGb3JlaWduIE9mZmljZSBvZiBNb25hY28xEzARBgNVBAMMCkNTQ0FQS0lf +TUMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC5DPsHIVqHQkZWcX6d +Ge/dEF3+AvJnukqAF88Mla6NtCzrrIjGbZ3OVpDDWPSnYTho0vY0HIBhlcaAH4CQ +qo+yoJUo4dwTB63vqwCRl4Y64/uKs0f1Y8YgrwWajsblSf3Ic6O5/8IJopSNDRsZ +XKPTsdGASDKPNpKqiOrEvbH/2tX7eYaLsRAvXJNp+QaPWK27LSiHsxye08bBTr8a +JVA6AETrr5M2RNh2EQrwwZh/IUnB7aJvBWbewSh0MqAHMt8WOS693xzDRfVruJdu +Wk5HCglelhL+gFERCumyw4pL09xASOJIMYr4dEUhdjEeKoXiLdYjzIZgi2UdmUX8 +iTTSZXRg6XrWSqpyqGzaL0MfNbh0UWVbzweTrOVJd9jWx/GbXamm6GSj1zXmaRZ2 +R2dwaKEt++ZL3/XyEJgkbPYRrJYg9z7s/hASNrbgfP+FW0AoYXfQaWsIB3gtk5Ya +Cc5XTJTWTmNI9T/9n2jRaiS0M3W0gsqZvVrtZuj8hXYAzPzEeghGqOxO7hDXtHXI +tQeIWgZ1E8Cy/hMgkctGBg4gUzpnDKgLx0JNS+8YnN4b6FIbGZrFEdZzBktKteWY +AaH6hdaiUrvsO9w1Irt1YUJP0XAfK/eKbIktCojYJBCyzM2zxBNGacuLCJedLGBC +EbFJORHZXwRfQDBhyN5FFRPzqwIDAQABo4IBNjCCATIwNQYDVR0RBC4wLIYYaHR0 +cHM6Ly9jc2NhLW1jby5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQu +MCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDIxMDExMzE0MDkyOFqBDzIwMjQwMTEzMTQwOTI4WjAdBgNVHQ4EFgQUMDKcfP59 +jwLtxRJa4OtXv+iFiSkwHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkw +MQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5j +cmwwDQYJKoZIhvcNAQELBQADggIBAH+bqxWACaur7nnopcZ+ppCF/s47qE2x86dl +BITTmJTlou3iSDMPdEaBeuthsqFyipnK19ZzzZ9x259IQWxCWLLjUCVCA75d4zCr +qJ7pJuyuImJ7HT50RCM1mGCgSRRgiqGhcZqtVrxOWpNmsmgNhekbgkBSu+7S/Dub +76U0hJA3AckOopFw2rtKCe1/mMfJXZ64ft7hdV+BsXaNU8UFoay3dNrpqOv2fK4G +NNmJ/OhWXRGS0GU3TZA6ujDwrIf6fgMO1qb4Tau8ucrT9KC6pR3r4Nerz67AguM2 +jj3kmgNyhpprjDrUFxggXWRQ7//7XjsfI0sBls0SokH0O6XutnEBUVo9rzfy7Kys +DLVGtKMx8Cq5Pqb0KkzfDNkDggzLDYMg5may9vmsJXdPOKfj9tWoPb/k9DTahYn3 +3KENztG6H7ofjDY1Rn1m7DqPR1NYUbtniVK2cyZ806mKeAT7u+7GJDTmX2D7sFtI +6WCDX389sG8oz5OP1DQ7O2TyZo8oDbLbErSk9xR+4r4cQ7K0rnRTu32ViGrBswAs +BMMzu+Htr4acNxHIzBFVAq5tfgSxHWk0AxLRJTaBEwmEIYW8jcsvcD0/I3jMVsD0 +aT5tvhIVnvLDj7M/yfRQb7T5htFKuOGpAFAWrBqK5RaNdIf1zDbBamw73RrNOYP3 +5xJvDG0F +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +j5ed6RKXoyrn83E= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGmDCCBEygAwIBAgIBATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwazENMAsGA1UEAwwE +Q1NDQTEnMCUGA1UECwweUGFzc3BvcnQgYW5kIENvbnN1bGFyIFNlcnZpY2VzMSQw +IgYDVQQKDBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxCzAJBgNVBAYTAlBZ +MB4XDTE1MTIxNDA0MDAwMFoXDTI1MTIxNTAzNTk1OVowazENMAsGA1UEAwwEQ1ND +QTEnMCUGA1UECwweUGFzc3BvcnQgYW5kIENvbnN1bGFyIFNlcnZpY2VzMSQwIgYD +VQQKDBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxCzAJBgNVBAYTAlBZMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuvqGVbjosqIqQljnL6Z2jG/y +U4R/BNto9PydJCsQlwFhC6q7mqE01bxNlGqmU5JcQbaOzZ0H7g3VI8p5rqhMGl2U +5z/tKO4iUYlJDV/AF+AIG2wPWwEtiQsS3lgI373V6U9PG7HOv7bzaq0xiycU7HjZ +6r64V3yd9eZoLW0HHTva/ecN8l4Gue/ZiW8laQRlg8pfKEj8tUkr9rrCBQwhIV9q +Vgu7QDhw2LUCJ5KjaAhbLp/y+vsVT8rS+78wuPOSNr0HBDD11ylHjIY7i9lZHzQN +6afUptf8J845A+V4Oh+0uHbatKQAD/CtuuLd4lNbPb9ShgoTSdddhv+6FHgsPGSs +EmNkcsoEpdV+sSlT66hf37t+vmTHkg91lkCNJAsIuE2IUlQcorhYb6DM3g+ZVy9w +BjzPUHxjE2XMUc/2EjpJeMPHKHkxK1YSY7rP08V3LkUYiwmy+/plfl4dj5XndFq3 +38vrimIr9akewNO/xbNCBU8mLdbbBDpSpyLuRjrUanBBM/wdFLzivRgLAgCiRnor +0vvBJh9FCOo7OCS/7xLkaCYiSUKli3Cn/NJHTawbYsUFk3siD5q5CLdo7a9DZccU +YFEPypi6D2DEJP/1XuNflonAOF6gkVuV+Hrgczuqq5Ngff7XJsNlIzL9AGQsydW9 +3ALMbAWJe0Bn7msc+RECAwEAAaOB3jCB2zASBgNVHRMBAf8ECDAGAQH/AgEAMA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtr2A+5AJbi5bo/ZkGT5MK+kYzekwgZUG +A1UdIwSBjTCBioAUtr2A+5AJbi5bo/ZkGT5MK+kYzemhb6RtMGsxDTALBgNVBAMM +BENTQ0ExJzAlBgNVBAsMHlBhc3Nwb3J0IGFuZCBDb25zdWxhciBTZXJ2aWNlczEk +MCIGA1UECgwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMQswCQYDVQQGEwJQ +WYIBATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcN +AQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAuwrH8lc8ESLcMtRFlN7u5O2bvv +BJqvU3E2yYnj+UmsSA+LUFbwnyTri1kKKBmdQetcBWxqCyMtBbvtGCXUo6hTc81M +YkdpBTOhF1SDP//krkjZd7Ra2s7/zNEXJ38pJx32AeTAOlBzR+c3ZbXewxu8o47g +bwcywir3/PgA29aZPKWEUbzTjVFekjNVZW+1QgB5HjUvC4wt2YtM2wtID9cHZ+ry +9sAyJqF3ngpMdLOHTiZbnItMqhXaiY6wKyJF2gomUkUUXDNlpToZB9pFeiqhtxQL +dq3GzlEhxyvPPEaaxcZBypgULtA7EbOiFAp5pnubiS1XVVkLr/vnZOQ9wGZkceAe +4ODEyU+dgY54Qb3ofAzhw/bz5hxWcjavyzjge9uma1/ES17iNYA1ApVkMQycvicM +lkO7sQQf2qufsXe4CVaL5xpu4WWhaxlB3ivQuz9tLoq2DGp7Ixj1YgAzhtgIb5wM +n+9ee7b4R5YHnILMDSTWXQL81njzwCxNjVdbV71/+AhkOv0Vr0LaptKffXQp7h+d +NIRDQsgrWiq7Cu42g3MRJaJd09N7pl7phPP7Fp3ll3PakBcjkD/79WWrS209yP89 +f2ptilUfQkjxPQB/yBm+aIhtOmBnwIbnbRn47FK61n5Et7fk9mYw5TgIocSnjk+2 +c1KN8S9+BQic62si +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpTCCBI2gAwIBAgISESBW1GeTHTgZ1PE0KmCnSsLRMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMjEwMTI3MDAwMDAwWhcNMjkwMzI3MDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAyZfTvYzN4644Hc+pR5WEVVo7E8K2qvF95Cay +571WJ4fZsB0kDpzhXD38jLKw+OSv0hGJ/qmVZfROHs9kHWOqxkxhqWn1kRt0idB7 +uLIH5Y0R6Ea2B8JCKEFFmTrLemAGRP0/o5YwZQC/0+lBZme5IACVu4PLiWOqvglo +6F8pZV98Uv91PZGNmQWTLhc6Ik8bndB6rdl35EWJyATEJYDSpWsP5KQlvgW8hMNH +IlzT/1BoMWzWrEmxZ8yosNK+GNzTKLS5MiRee3O6OEIqllHu7oDTKYysxX2puRbl +dQrevYwH5GTJQfFArz6LHJHgus7vI2KoMW2h8ozz9bnepy8kRPp5Rf+wLHW7rP4g +mUe0Xg1CjxgfCbn0aFOp6THy/GglE+qVq519s/dYFiYiS5g4FcCSN31NjYnABvHy +fowdhrwNO3C6fPdDnonLXsTWp7qmA80Vfi0AINGfXroBQh/AZty7H6zKk4Y1TUas +R6D8behdRu1urvgqtb52p/UTTeMz5SWP7Qfk+Z57NPWEIhvRvnP/UygN2NH92le9 +FC6wuW9Pqw3oRGPnAXLNez3phMvESYnE7kpuaYy+XSuQxDsJSW5uJ54GI+BiJbru +ciK0SsLfUPtt8/yC2FomYzYW5dEG5gV7+nxkpxHa4WoHKhJShYB39H8WB/P6v0gK +dmGOrrECAwEAAaOCAbcwggGzMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDIxMDEyNzAwMDAwMFqBDzIwMjQwMTI3MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjANBgdngQgBAQYBBAIFADCB1gYDVR0fBIHOMIHLMDGgL6At +hitodHRwOi8vd3d3LnBhc3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKg +MKAuhixodHRwczovL3d3dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNy +bDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01B +Ui5jcmwwHQYDVR0OBBYEFJH7Z0uAgv9NVAyasyNLfw7IXevjMB8GA1UdIwQYMBaA +FJH7Z0uAgv9NVAyasyNLfw7IXevjMA0GCSqGSIb3DQEBCwUAA4ICAQAKg1auvFA7 +3PHWLYwQhDsrUuNnuXx6aLUxFi7ubGe/uv1K5koe1/M6SJmanD7KQQi4xEIUdewf +2XLXSHZWOxcqD0hhbXmUlV2DGzrr8Q3TnN2BEPi9XJeEmW8M1l1kQ+VAQuxo4NCt +h7JAlo0poTgNdkqRGkSR9c4RGWgSqoSXnCjiRtI02jzkBnEL4rCKDUiFKQ5yodSe +Allt+mYFz/n5lxJrPpefp+44iNwnjCop7yVK3RYj1myIP2lfV9I6wevfW7Jbf9iw +Dyjf7ybugpd4VfK8zOkmdJ7CNS34sA9kAYX+ZJ6YszXeYXhivciwtB9HN6w3PSsq +NbCOlxCAReKMlhwhZ1ypAVLbyjUrlhLj7M/xERQcQ1kwAyCnsy4KlmJEDDxkN5E5 +1/Nr89L+cjKDv7vslRzz0Ket82rtNSTmKIvvzRkr7v95S8gzx+hkJpTDXPBVve9W +TYljZNL9F31FW7G7NYQta+hVlWoCQ8Lc0x8tqy3zkYIDZJptfBbyLBBdm6FGrjcH +zLwlTWtwBbl6GY7M/8vv11q4I9x45wgABS94NXAdfF03j0zS7NzrXgxG9Z16Ve7g +Ly0zfX8+0t14CH0p+uwvJSCBFLx+lHnLhlSv3YtibhZ0wnnYkG+s69WVJufo2Yot +StIhvEKMjrCnse2P4PejPU9/o0PE8XSuLQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpTCCBI2gAwIBAgISESDev5Cr/7HpCR5EP+a1+QNRMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMTUwNDA5MDAwMDAwWhcNMjMwNjA5MDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEA3XLVxhHDxq2iphmjbuAMt1F74nwE2tXM1iWL +53dbPQi5LbsYyLM8sr/cVO/xKJHCZZnZDw3BloKWoOSysCW+V+0QK2hMT02iLCqF +1wf9EgcTCkj02U6yd5GKJvBI1Haa2mHxg83vGOLAzzl96QMbkRbUohFFPYEG+i0T +xRE6fitbp91ZlMhfY/rzlINjFW22Dt+KUi3DtgRTTa6oTaMXvl08NcOsjXQKR4lt +Z19/H5dkasKTLQdlmCEbJUVyCLFpcpov+3ybzPOk3doxIU6GwWpvxY/WcIeyAQA0 +B1vjcre/zmU4cTaJ6/zCEwmK4tDA4VIQgaYX9RRUQg8q9OlU18miPm2bhd7jaCWu +vO7CSPIDZdRL8TfM8ODgk1w8fys4NNpAaNXqM7CYFoAXAhF/olduKnletAsHv5ZZ +AhpxkrGsDOOneOGDDYGjPQR7vtzWXzm3CkNSXWGbwNtRPQ3dBpcelavJWWCO9Eb4 +lPc5S2Tl9lF4JNVm/FTRl0fn0TpztKZ7q06j8/BJbILytkljqWo9iAy20yTNIH25 +GCok4laicofzikvfFXKkI0pBKTs5b/qMvEyS+eUKrzq1b23Q72QYGi6G7e6wzzQ+ +lOrL20PY9WrMqpuNRYbX6/22yM051aHgH6rlePkscLq1ACrGVH/BVQhHleK9OoyR +0e6SMa8CAwEAAaOCAbcwggGzMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDE1MDQwOTAwMDAwMFqBDzIwMTgwNDA5MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjANBgdngQgBAQYBBAIFADCB1gYDVR0fBIHOMIHLMDGgL6At +hitodHRwOi8vd3d3LnBhc3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKg +MKAuhixodHRwczovL3d3dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNy +bDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01B +Ui5jcmwwHQYDVR0OBBYEFEsiJI+1EHrs8vYFUP9VU+hJRCKnMB8GA1UdIwQYMBaA +FEsiJI+1EHrs8vYFUP9VU+hJRCKnMA0GCSqGSIb3DQEBCwUAA4ICAQCw1YV0sldk +XytNbEs0MMXCGDXq+0WhB31XXcbdZkrgMGz2sPIV0sEXujqa2IG6cvJkTbFPSi9w +98/mDHAbNBytrNemVyXJfDbS+/wd5xGpht53DlqlBpsjsm7yJh9PubO7uES6wVAN +l3iQig+aXyydvBbT7+84YwhZLKXWFlg0qY/Uf21ezbU4q7NgaMR4vjIBPlRVgRzP +kCYbHcdUpfE2o1423QnHSm/EDuFQeAS78aWLio0A2fM4MQo6QBvv0RqkPX+KrxsE +3YxpVudciSdAxs8FEgumA7mILhe4VlJ8wEltd5aLucFdUZG5ayzSAH3KGCRnLQ0o +fMBNCAQY4HlzbpPRLiU/clM48ayp5dQfPS1vi8lBXvJlnZpnnj4rjVMWqepdV6f5 +tyaDzffvBBIrQoxH65KXlYtoM4BtkPFkCQEsfrltSYcNVXtIWGFOEYMIMP8gq/ld +CeEmQmP2IKz3nT9vM1IRlZji/MmmRyemVURH9gwp/C2wRp3ffoelPnrD5OXTJlPL +XtDMtvjLYwHa+VquiI293TIA5Li/mew3zHbv0y4aqeFpsQjc9Ztx4l4ItnV0QjVq +dXm2+2TDFtLiUah+t9vE/Mj2tCQkBxm/8erfzkRmqdAICAhM23IiOuZ4k01lzmgN +k12i28wzfNUkfKZ3Pr5SixzkyLjCzh7T6w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpTCCBI2gAwIBAgISESEJG1Zc4yJ15ijRBtqswDFeMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMTgwMjIyMDAwMDAwWhcNMjYwNDIyMDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEA0Rc1TmoyWClIcIUpKurTQmhzKe3f+L2KbB8z +Fefuu11dc/hMK1He2jNSmY/9dY6wYiU7lAAsCv8+1JoALhc5tWX92WRYB7Ah3Bub +Zz3Z8e9pwk6KsBtts8Ubmc6mHvYOHR64qVMzgRmveRrSyXb68PP41MbzU9E+/Fgo +XMfuhDi1z3z8Coh92Bpg1rYY3ELK7WlSfoVha3VwMcT1Hm0tvhJh23fzu6J/eaIx +115R7VHcrNrB5QtWCZT+hrRnakAnOcifIFRiXrzEd+VYbuvslE1xCI032/XWyY2X +iOJiWR0vndiYsAObayVnSoS/I4BCwppxF/yyMxcixG5mU3E7NKWjwtcQAABmwYHF +3fRELk1zSAjnzQz12IkqAb6ItC2Pb3+qSz7fOP/s9iWXGhbcjmp6DJSqJHP3yf7Z +eUCeP82Yu2C0KMWJby2EjkC1Y2j2/RxsG7Z7dxmb3kQygWyZNGOru/Oc2JS/uyaR +1nWfAHgaqptsEziYjbKwryhooYFT4lFGd9Lm09dR/PZLwLjVXDpT3H4rujpyE6qO +vRamqtRI8jjTsKUXPZeYBnGXLCgvlHsgpYmYeaLQcGyrBLiu7P1Fc96Xi3ghvs8V +kCS+DELZqJblCLMKU6ierQ7vQF9X9d1AT606qX6bLGELprMvHnvHW+1aAI2Mf8LQ +VX3JX3sCAwEAAaOCAbcwggGzMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDE4MDIyMjAwMDAwMFqBDzIwMjEwMjIyMDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjANBgdngQgBAQYBBAIFADCB1gYDVR0fBIHOMIHLMDGgL6At +hitodHRwOi8vd3d3LnBhc3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKg +MKAuhixodHRwczovL3d3dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNy +bDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01B +Ui5jcmwwHQYDVR0OBBYEFNsE2uY1osvs1j+NYMIGDv1d9xnjMB8GA1UdIwQYMBaA +FNsE2uY1osvs1j+NYMIGDv1d9xnjMA0GCSqGSIb3DQEBCwUAA4ICAQBWTwJIhIq2 +kc/d2PvSgqECa9AxSJPnTrFzY1aXkPCdySJCczruaGcV39fTOSKyBe884PKapIx8 +3qHGbbaMlscqmCopB4U8NaOHapknkUVfuYrVJTlxzEf+kVEFjChmP5mi8REqoA96 +zupXrTHD5ws8dnTd++DBVYGKtuEikIuOAKbUAo2FPtlYA4dpRdcrBP7qrSqpMh+A +nNptnLOnlD8gcqMujoiBApErrSuyMTUXHXus9zJxe/mR6X7vbaWDx7Yz7ESJWaB3 +hhyaWcgS0jI7lyUA2Pv+xgPtyBdzsQ0UBVKAPIY2tPMUQt/tFykR1kF63Ph6urWb +PzuGjOr7RWyd/JLl7fsMCbjAAZAJn0jfJiZuCx95DFjkpzaUKiDJSnr4R7R2NPUj +fJJ9kuOk176CBbs1OX65h/i/paoYxYEo+ul+zYlyyYlg/FksRhXUNuJLcllhAo+h +tyI2gtu/CpBDx61WiRL//JJmxOu37KghZMxSDWhU6IzCiIIFK67OncJENzqPKQ+n +0H5ImFeJ5WbI31e7TL6wPGrrQvdJjbCiJCTEzCl6jOWMG1ircPT/ykGi58z23MK7 +eA84tSV7CGeg8eXd0pGaCwVX/v3LFV8XyEr/16IjhxH5d+cqBb0x6eevYcHugwaV +WqnCKthoc88MXnx0BLt4029Yr32e99gefw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGrTCCBJWgAwIBAgIIEBIFtmCt6OEwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE +BhMCTVYxMTAvBgNVBAoMKERlcGFydG1lbnQgb2YgSW1taWdyYXRpb24gYW5kIEVt +aWdyYXRpb24xIDAeBgNVBAsMF1RyYXZlbCBEb2N1bWVudCBTZWN0aW9uMRYwFAYD +VQQDDA1DU0NBLU1hbGRpdmVzMB4XDTE2MDExNTA2NDM0NVoXDTI0MDQxNTA2NDM0 +NVowejELMAkGA1UEBhMCTVYxMTAvBgNVBAoMKERlcGFydG1lbnQgb2YgSW1taWdy +YXRpb24gYW5kIEVtaWdyYXRpb24xIDAeBgNVBAsMF1RyYXZlbCBEb2N1bWVudCBT +ZWN0aW9uMRYwFAYDVQQDDA1DU0NBLU1hbGRpdmVzMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAzpa1Bwy568pyF4GWWrz2yZ7lBUZ33G2Zv8mgcQ1T1Dbr +W5ste6bWLLyk7sz7Ig1tLgZjAxP1RtMtus9djdgAvzGwq3OpDEveNHZp3VgR7z1F ++9uehBgbKcv6gIARYT/E2uVy1zFbzuG/X7fRlraEFhKD0bF3XaO7b0ty/RFf4mjq +J/cmqmyInNTcQDl1GV2+MYO73/yD5hDW1zNGPH5ah6ZVWOBMbEWvdpp0eBSTWtyy +3arEzKiMIpVBvg54FFAxMe7LdLOeJrHjEoQQxAio7O1myF7FZ6yPqwE0zyka016S +CyHvmBt8PHlKBvZ+O0gi6KlSre27jEm4Te+ps08Einl7kZY5oG9Gj5MUs04mhqw9 +c2ngqjDBoh4D2a+kFCRfalE/PCbmbMKLiYJcGnrVuhBV5sIAFBGFjlQoLIt6yRKK +wUu28PoCGKGcd4VZCyVzmvgfw6AzGr09DY9rgFnxR73JCpI4ixZn4n1QJhFvCx5F +NJjgnm/cXSsfyKWsYkiyrkPisGLEKaQq9FNvRd3o9F/RWcgQL+gv3gNmluOBEkxy +98LKKu042zdguhWayGQk568K00yHXvaf6vfi4F965NxQ8BDsSSN9BtdeXPpsPS6h +7bhOOGRRZ7fyHHtz9gKyAwwGeVl0aPG0pWZ2gDOYzB5e3yILRkX+sO5oAdzYvMsC +AwEAAaOCATUwggExMB0GA1UdDgQWBBRhAd54qgWYWRQTfcwC/J+6eg2sdTASBgNV +HRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFGEB3niqBZhZFBN9zAL8n7p6Dax1 +MCsGA1UdEAQkMCKADzIwMTYwMTE1MDY0MzQ1WoEPMjAxOTAxMTUwNjQzNDVaMDIG +A1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly93d3cuaW1taWdyYXRpb24uZ292Lm12L2Ny +bDAOBgNVHQ8BAf8EBAMCAQYwNAYDVR0RBC0wK4EXaW5mb0BpbW1pZ3JhdGlvbi5n +b3YubXakEDAOMQwwCgYDVQQHDANNRFYwNAYDVR0SBC0wK4EXaW5mb0BpbW1pZ3Jh +dGlvbi5nb3YubXakEDAOMQwwCgYDVQQHDANNRFYwDQYJKoZIhvcNAQELBQADggIB +AEs30j+oLx0BIM+iZxK+ohQhGKNPIDUWjsB/8gqYNcrLdSP1bu6n/XfRFiMxV0rd +GfE7gk4HSP20RXOBSeSAGFEAFme7PUfvE+BcPAP83cC2AvaLL1rXcJLVw6tvfW3l +c9VmqWB2il8x/jdY/EXR309vH0cqvr647QgFSr5ZohkPwbxFvvM/Ulqk79ZKYDcc +UStZ0d+s6jrnImLrneV4Ch1TDxaMD3i4+LlJweIxE9cvCCLpHeX9IE3sjN7GftkU +yD0ESRWZfQxGVDQeiyaIRaRNXYGeEwfa2QeUCPmRW4h/y7xsHFHztlZhI0Cm2XJo +chO3bc+vcrTL7qL7Im3p440LTfJxnzqD2XWFukD7i33W7C26JB9i7YnkeBCgo7xq +ZJUTDqjF9xiZnMohuYChqe3gfRNCK9qiHkrCkhaJqqMKkoJvtqMyHhZuUJ5hySaF +AkYJsH2tu/P9HVUa8gRf3JpGVQGXZWISUXWrhi21QDuYBd1yDicURJ5ZAd5pWtbu +8fUYJl0I0BaGcdW74ZvtW0FuaLk7rkBX3ZcwNCzA7AmEbeiAEfNq3qke2TkejJkS +0I6V6s1nY6d+sXrILIODUEpGq3fXOkDUeb8kz52vGvl2Iiqix3YWaV5XaWL6ZyOC +hcFpB9jSOXs44ofSKdpxwIAJfHRPszNwY32nwPD5e2yQ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +y0k= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGyTCCBLGgAwIBAgIIfYBVfrHbuX8wDQYJKoZIhvcNAQELBQAwgYMxCzAJBgNV +BAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJubWVudDEkMCIGA1UECwwbTWlu +aXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYDVQQLDBpCdXJlYXUgb2YgQ29u +c3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTAeFw0yMDExMjcwNzUyNDhaFw0z +NDA1MDMwNzUyNDhaMIGDMQswCQYDVQQGEwJUVzEaMBgGA1UECgwRVGFpd2FuIEdv +dmVybm1lbnQxJDAiBgNVBAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEj +MCEGA1UECwwaQnVyZWF1IG9mIENvbnN1bGFyIEFmZmFpcnMxDTALBgNVBAMMBENT +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvPCNUEPmJPJrd0bCX +YYacgu69ObWV2TGjdN9TjLLHmPG58f87V+JercHY+XXo6syCm2ULHIXBTizJy2w3 +vehznQPugLC4MP4Q9CjtNOAE+YDwsLhpvzv8LWlSphrA1Vtf+CivKqPVH5I7QFfC +f3dXELXnVaF7RCQXmu+uKy8vRfHpQFgbyN6z/vV7ypxa+RAh6iEdR6O/nVYR4Xvl +efChU0/VqL3shJM3AohYPXKg5CWVh7xFbhBs08jXfNrCjjz+PQtcNyqUUUsKstgE +NTbc9VtRGFbW7G0LCwf+ExG4fnDbBaFurpQTWPQ1T7QKdqveoOkl5nBwLIechF6W +7tYZTd3x4Somc1sxe7oK8hy+yURPnlT/mDmpdP0abYib4Cng/feFMpUZ45zN2hDk +AADwl0Tu+XOv7uAVlhKBgJIyZ7Uj1xgF2EWX+kj7xscZFouoEgreotglHJlAjg3H +RpF/u46DqxmmLQ4dK6HNH/mZe+FqgcQr3LFUe9J7h1VloY8TxvHgKGWOp5up21w5 +hL6pyuiyNcIfzctJoQ/y/xALX66u0J4fWyClpUjG9W5T47cIa4yLZmB1KA4AT7Ea +AuDP0lXRWY+Jsoa4xoIu2yFYRkZtOxLGEB7NxPnVxWHBOQ92Z3wVOXryB0F2+H/V +820SrWHoFJKF2a4YPWB64RH6jQIDAQABo4IBPTCCATkwEgYDVR0TAQH/BAgwBgEB +/wIBADAfBgNVHSMEGDAWgBQYQYacOaS/W6+bXEiickJ5qkcHxzBjBgNVHREEXDBa +gRRDU0NBLVRXTkBib2NhLmdvdi50d6QQMA4xDDAKBgNVBAcMA1RXToYwaHR0cHM6 +Ly93d3cuYm9jYS5nb3YudHcvY3AtMjQzLTQ0NDktMjM5MTItMi5odG1sMEEGA1Ud +HwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmJvY2EuZ292LnR3L2NwLTI0My00NDQ5 +LTIzOTEyLTIuaHRtbDAdBgNVHQ4EFgQUGEGGnDmkv1uvm1xIonJCeapHB8cwKwYD +VR0QBCQwIoAPMjAyMDExMjcwNzU3NDhagQ8yMDI0MDQyNTA3NTc0OFowDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQBtoVGlOnEG6ekL6ZSCxjCi2LA/ +JvTO5pCVOCieJEMDAuIgh6g2DAR7OT4Ym8oxvBfK3rOLttBnS53rnH4sffR/xmg+ +ou8vULoTkmCz1mULYc71b6jsAhCNp7P0xScfyBZqD2aXIF4Bgp35GpXjtTxVF4aR +LDwtkhrqdDTz0QEhLcrYfhzn5eGnNaS04FGpUtTn3f7cNyz++k2zfEb6eaHC5O6r +3Dg2TF7Y7X6hNI8m2/WRVn5Ndogzqf1yFItGrNq6zXqvTnTmYdEfX192Hai9ztkT +hbzbmobaK2Hq6kGs+VGUxQyuZC3YkyGDzPaOkfrdoS9Lixbsnq9KPH6EWdvOpFFB +2Vdqjh3YnlGSckXoNKXyZIWzutCW542XW60nP+jZ8yURCGxUEcuOAn1Elx3A+OSZ +aaOJYJ7PzVrOMk1h4+UvohLel3a8TQIcETcYRnPSDjqRYpcj54Cf4UeLV9zYdyoZ +vYxxoVPOvav0pzBhasDN/i8qJivJdNX+IrVxXfEgapG2nCciR/RpfvlNtALSoDmy +cFrlonzVUdcSrRy8JNtcKVuY0MBRg66mo+iVPZFD3wu4B3gdSNyrSV9iA6S3Toxw +JyBBKgMsprJ6cU3sKn3dYtozNLr057COfISTwCbJnkcWocKcNOrNdTSbOIHMzA4Z ++cRmMAefFFezF+fEPg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Ga5r2V/2bfVIXaKRZJv1HBI5bOfEm42w +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG1TCCBL2gAwIBAgIIUHFIGPxYvbQwDQYJKoZIhvcNAQELBQAwWjENMAsGA1UE +AwwEQ1NDQTEdMBsGA1UECwwURWxlY3Ryb25pYyBQYXNzcG9ydHMxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJCRzAeFw0xOTAzMjAxMjI4 +MDJaFw0zNDA2MTMxMjI4MDJaMFoxDTALBgNVBAMMBENTQ0ExHTAbBgNVBAsMFEVs +ZWN0cm9uaWMgUGFzc3BvcnRzMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlv +cjELMAkGA1UEBhMCQkcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +lcm/X/Vfp6/HprGtS2f7jbSH+N1ZONNwFlGTOQyzAzj8XWBB3Kp3pPhqNNJl9sRr +bkN3xIImWljcbYGZ3LRbC2VusMq80WY/Abv3AXogveN5XbFHL7XiTmBJaCeXUF2t +swDgEkKV1Vad4Q9lddSaf3iIE2hujopGPJqKP2i67AP5ryuGswEdRk9T8QM44EpE +pG8UA9R710urY6qQI/BocAuZcLkgiBZ+B6GCjJxVmX4g0Tw5CpALDWvGU8aU3/eR +yCEGFzSx5V9ymGRahRZk+djQLFK73Uw4nszzWHg5UgZQ7c+/gSIoWV47NTPGd5LF +2BXhalaB1e9xDcI1bTr/0Eb+2x9w91glKWQ6LzxbxfHcb8Bx2uzSDrD1Uat3Tlkd +kCsNuqzEDLMYpMjncFWF7VK/yF/6NCYFofXMYZYHG8IgGLns4mWu38aBz0JP/RJX +Q67b/a8CdHPljSEXqQuugVxB7chqgYKqJr+WViVtwCrIE48wy9HftWXnJ2iI5RXC +83kHJ2hoPOJanHP5KwQVoeHzdvEDaQMDiGaAcnM/re3K7XZ7WGVAHNQd/1Haj5YK +OvE4X2ea61SOkOIozOde/O70n9KjR+2OXplWLnyMsttOiB2iPbLv2To6nwwC4VeD +WmsIVNCm8Y1b0iDAcTJ7qDnzPlJkLDG/bOjcmy+GJQIDAQABo4IBnTCCAZkwHQYD +VR0OBBYEFOESnWV/pvd54rQYsgXbJ177nvW3MBIGA1UdEwEB/wQIMAYBAf8CAQAw +HwYDVR0jBBgwFoAU4RKdZX+m93nitBiyBdsnXvue9bcwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMTkwMzIwMTIyODAyWoEPMjAyNDAzMjAyMzU5NTlaMCsG +A1UdEQQkMCKBDmNzY2EuYmdAbXZyLmJnpBAwDjEMMAoGA1UEBwwDQkdSMCsGA1Ud +EgQkMCKBDmNzY2EuYmdAbXZyLmJnpBAwDjEMMAoGA1UEBwwDQkdSMIGrBgNVHR8E +gaMwgaAwOqA4oDaGNGh0dHBzOi8vd3d3Lm12ci5iZy9kb2NzL2RlZmF1bHQtc291 +cmNlL2NybC9iZ2NybC5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmlj +YW8uaW50L0NSTHMvQkdSLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIu +aWNhby5pbnQvQ1JMcy9CR1IuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQBSru/+VoKj +jVeDF73N35vaUMpi1TXEOD1DQOCYHtU3ko1l3pvDcLcETdB8OO4xXkoFAjS9A73f +ig2SuWUV7d7Mp8Ju4gw6312snu1uwcVmJd6XtCtPk5TyqAW5CGnOTpCrandfE1wl +zHdxstDt8WvgNfn1cK21fFyyg5UHeQMC7xluw22Y5zeY2vPnr0e+yYEhrP1N54JB +G9/LTBU7CWbxPBEWhH/7V7LRRMbfD1EX63A4bxxIJ1JL/6117rNK7ExqA1QcaNAW +yW9NdIN+N44m2krAbIPnwrJgZHtHcLEFrrWVqlfJvx5LDA1GnvzAnr4nc3yVSB78 +HJEdXOnI/IJ1+N/rfIv5G+YbAoc3iwJbtYQszvyGTdZJRAz3LFTfOV5OwhYfpGn7 +adv97d9I6E6EIWVyCWYb2172uAAamO70W0tSp7g/exsFQdb1wKl5y894H5F5Ljgs +Y+oeR6LX1bQ6qs524xD7hd6OZ2VnDGeKEKz1Aa2kgZOu3aGKeYQooPMbwd/DgbuR +BJcXeS4cpT+1dpG+Z/2cEvjqZULjruFpqo+5TN2o3lB3KUAR1P68mls6mp7n4w63 +JSPs6hT6pcThgGfvcUPl9HSe2H4zSrSeVvu/ZBElxvQjlwlbuEwOZxvJnU/ybc+/ +yyILOaSm8mbOC4zacu6X+QIoITFzdubjSQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG1jCCBIqgAwIBAgILAMjjoPACCYGRgRYwQQYJKoZIhvcNAQEKMDSgDzANBglg +hkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8x +EjAQBgNVBAMMCUNTQ0EwMTAwNDEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDAe +Fw0xNjAyMDIxNjAwMDBaFw0yNjAyMDMxNTU5NTlaMC8xEjAQBgNVBAMMCUNTQ0Ew +MTAwNDEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANB6PVHisZJX4ZIiuvb8vnoEv5PbZvnmIwblOgCT7P+N +rkikjdBczi0TEJtcn1IbkesR4/iIiRO9/mi6NLIitmEZ+3dlfugioK/hNgxfIneK +AXPv+AnamW6yv+NI7PLxP/7x8yQ6nLElk1a5haiXfttjSEe+/KOVx6PuaPSeDAa6 +OVFoc9dvtyFfy6KyzEIM3EikaTuRKV2OKqPwmEmxFx/q/fsxZGQRxahHZrnhPjOu +9X8n00tKNs1Vgp4VVkFbtJMJO/WlrosRvtkaJF4sFwCrjdcrTk7IY1VR0jh9G48K +/kzaPhlK4npMg6VW/xKTiQi4T6dILXdrU1Hr8rQPg8EbxTo1TSyu6WjvLEynoqFF +7R/pPgplwWzVcUGUkKmeDWF0w9/OWWym2aBYxbRxr324oimS8HVgwHNmZxyy/ym4 +McihPstDLosO5QmOHtzbLOnvXzPS3vEjC+1thQ5rMuBRb9YsV24vCXa5xbTeQZVB ++/QoXosx9kPz9iyOXUYz6ymCNjiIV8XM2CDlbhI358wlJJo60w5pXEhHTHsx19il +/sQvJYuKDGlBOHhBne2AXxCeyLwWWq12gpvupybBvT5osEHf3olXujGMKXDryL9W +FOD7Qhj5IMeMyfkW//jHTgQUXKm6FN+WbJfahP9poCI2jIrYxR/kGeVHI2YkkgYH +AgMBAAGjggGJMIIBhTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUkw/7G/dwVXmXGyAqZvAyG0wrLkowYQYDVR0jBFowWIAUkw/7 +G/dwVXmXGyAqZvAyG0wrLkqhM6QxMC8xEjAQBgNVBAMMCUNTQ0EwMTAwNDEMMAoG +A1UECgwDREZBMQswCQYDVQQGEwJQSIILAMjjoPACCYGRgRYwZwYDVR0fBGAwXjBc +oFqgWIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9QSEwuY3Js +hipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL1BITC5jcmwwOQYD +VR0RBDIwMIEccGFzc3BvcnQuZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNV +BAcMA1BITDA5BgNVHRIEMjAwgRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBo +pBAwDjEMMAoGA1UEBwwDUEhMMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIB +BQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAgEAp5tOkUvu +3N9fsuRCbhMCL1Fk14fN4/h3Bc85BV4MvfBavHSxInXnOtdAVrEGEwXnZO+dogJH +dcGKjiRmuB4+VdBUnjZuH3pCWi+m/rAH84jB0vxLvHldlQx5Lwf9wOFCdMy6i6PZ +6eOf5Sa83m0OYpDFZTBGR3QZT2MPC2EDHytNqoIo2X/jJp2xq3SsGAVE0i9tp8/U +AWhP9FPQMPCDOLf78dwjPR0c6jx5MgjSRoGHzzYbkS+7Rd3OLnHFgtjUh4eO9M5T +X42G6WiIeUnHiaa96rIAMJYW3RzghiYNQLvnlOJxL84QKGwHkTUK9F3MFPbabNy+ +OLSJgcekgWJ+9bhSgnWAMynrfFyFpwzEsYeLBFap1O9Cu7F3TlnzhFBd/rDIPh6r +oaFInxbXdQAHzrKxUB0n2itmhEANGLLzxJg/DU0etKxpiURvaEd9yvcP1Mn0VWLQ +6C4JG//FliCuc5yenKUfjC3gKFDQFvsxi4a5pO4z7reSYnQbqWk6lNS3R6H3JzDy +JBUQQhHMA1ZnpLMIezdOfpDxfSiogtkkq6TnKfkYVd+KKT9fkHCmRq3JjhnUSwYh +LAJ8VVWZ/Xuua5je1JuqyFhLl198RgtRxfTY03f5r0AoYTr8q5d3n8EpO0YJ35th +fAX3h0IBOe62OdqeaoP74xUOeSh2iSPtz/0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG2DCCBMCgAwIBAgIUdiG4t2biEjw5dGq4miqb9nO2lOQwDQYJKoZIhvcNAQEF +BQAwdTEoMCYGA1UEAxMfQ2VydGlmaWNhdGUgQXV0aG9yaXR5IE9mZmxpbmUtMTEb +MBkGA1UECxMSZURvY3VtZW50cyBhbmQgZUlEMR8wHQYDVQQKExZSZXB1YmxpYyBv +ZiBLYXpha2hzdGFuMQswCQYDVQQGEwJLWjAeFw0wODA3MTYxNDUxNTlaFw0yMzEw +MTYxNDUxNTlaMHUxKDAmBgNVBAMTH0NlcnRpZmljYXRlIEF1dGhvcml0eSBPZmZs +aW5lLTExGzAZBgNVBAsTEmVEb2N1bWVudHMgYW5kIGVJRDEfMB0GA1UEChMWUmVw +dWJsaWMgb2YgS2F6YWtoc3RhbjELMAkGA1UEBhMCS1owggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC4+r+OfJyXsJbRO1qtWBSvuKPzHMj0+VJsMFcoKl4W +yJ9TjXEagmmf/ToRw75yBuzfde4QImTfZGbMX7rWlBPNrC/Os2zpIS/zQ5hKcY62 ++iu+mjCke3nvVUqcmPxjtIf+Moezegn6JBdl5sUbiYSktqol9+a4qYK9uWbhdyaC +iva8kBR09EIJC/jkVshKkz8MOUKy1XHZxctUsAMAsHpyIZAoiQoqvmcqpkFfMVLb +zHELkYYco/glT8ab0qqkNKqI8qZCH7xE8KSKOMxCaPCo30u1UbRUkUI2dtRBhkEC +q9aPK1TNvZCjIlOJHbIZtww0l0qOL/WTlC5I8aS+L8VH3IwyOstOe+DSpqFQmxgP +pFn9ghY9mOtZB8M4oc2SIf5Fd6LIuTekZCVbbFwyfDcD7VYfKX3hpr5GgtcpeKNa +2Se9O4+fjh9bmAVxlUKyxSPf2YctJu9Vk2RS7JPYceB+az0BJ4nhOZvW8kjWLPNm +zb9ivDWKZKu1TR27YLA+JKyy1MvghR+D7v3VYLpBtM7rMzndIXkLLJgF3auaZg4/ +7oJnZFcBDWX5g8r3tVYjYln1uTmstl/T2DbgPGiKUkCZyxNqgxrJNEAl4OZ4eHsE +T+GErglXkMtDiH3wPoZeUW3+L31wQdIXO2cY3HhKEH4qIerOYO2lfDtXu0eMYflY +dQIDAQABo4IBXjCCAVowEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHYhuLdm4hI8OXRquJoqm/ZztpTkMIGyBgNVHSMEgaowgaeA +FHYhuLdm4hI8OXRquJoqm/ZztpTkoXmkdzB1MSgwJgYDVQQDEx9DZXJ0aWZpY2F0 +ZSBBdXRob3JpdHkgT2ZmbGluZS0xMRswGQYDVQQLExJlRG9jdW1lbnRzIGFuZCBl +SUQxHzAdBgNVBAoTFlJlcHVibGljIG9mIEthemFraHN0YW4xCzAJBgNVBAYTAkta +ghR2Ibi3ZuISPDl0ariaKpv2c7aU5DBgBgNVHSAEWTBXMFUGByqDDgMDAQEwSjBI +BggrBgEFBQcCARY8aHR0cDovL3d3dy5rbmNhLmt6L2RvY3MvY2VydGlmaWNhdGlv +bl9wcmFjdGlzZV9zdGF0ZW1lbnQucGRmMA0GCSqGSIb3DQEBBQUAA4ICAQCZ+SR6 +XpqdBekHZM3UwA4a+48wl5bmel55wQbT/JKc1rOEaRclcZYOTHP0GJLoifbl2g8Z +o5/DQIZRB77S59M13M79H/J4HRgPHo7rW1lMs2L1gNjv98vYdftjOz4E8dn3lSMj +q8yQtGqxTK2NvZ8PPmtobK0RcBpEhJ7V9kWdTGMpoqQEeMthm+NriOtdJzVh49e5 +51ygG+SztcVPfpdvxnCp68RJI5liq9+ZLrg8ChNHb0hxRgmO940OwMZ1idzhN1AU +YLOjV8R+YddGSJRRNFbKHfp4/PSVOr7D+/dW72/dJeauQTC5lw7JzdNW69bCMEgC +pTjNQ5o8WwjkCY843uwVrLWWaTl6egOI7tsXzklZvnyv27t6L0kArXsDEixP6cIf +QRuiTs3FgIqjvMoAVwRV4P60OVRLXFAflu8i69JHwqvXZ3N+KFbKWTaLPTWj4VD+ +CGrnuS7mIihDpSpdbiJiWn5knKEqvKbgi8IXMSyrmHZw8nAxyPo8hSW/wIKPDQ5Q +DlYBkVNnmZdLt+afD+su0lyNdNpcX22ALMJb+IjT5pYFW8JfNFKGoeoTwgdvptQZ +LexTtx6trWBFLB1BXwF+ypo/AUwNR96wkfHdSSBREGI++Iz8WpKQAg7UMLoDgPKa +/MeeW031jkp0wGnj8D42NRAznD1jyhOHc6M8yw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG2DCCBMCgAwIBAgIU9iG4t2biEjw5dGq4miqb9nO2lOQwDQYJKoZIhvcNAQEF +BQAwdTEoMCYGA1UEAxMfQ2VydGlmaWNhdGUgQXV0aG9yaXR5IE9mZmxpbmUtMTEb +MBkGA1UECxMSZURvY3VtZW50cyBhbmQgZUlEMR8wHQYDVQQKExZSZXB1YmxpYyBv +ZiBLYXpha2hzdGFuMQswCQYDVQQGEwJLWjAeFw0wODA3MTYxMjQ2MzZaFw0yMzEw +MTYxMjQ2MzZaMHUxKDAmBgNVBAMTH0NlcnRpZmljYXRlIEF1dGhvcml0eSBPZmZs +aW5lLTExGzAZBgNVBAsTEmVEb2N1bWVudHMgYW5kIGVJRDEfMB0GA1UEChMWUmVw +dWJsaWMgb2YgS2F6YWtoc3RhbjELMAkGA1UEBhMCS1owggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC4+r+OfJyXsJbRO1qtWBSvuKPzHMj0+VJsMFcoKl4W +yJ9TjXEagmmf/ToRw75yBuzfde4QImTfZGbMX7rWlBPNrC/Os2zpIS/zQ5hKcY62 ++iu+mjCke3nvVUqcmPxjtIf+Moezegn6JBdl5sUbiYSktqol9+a4qYK9uWbhdyaC +iva8kBR09EIJC/jkVshKkz8MOUKy1XHZxctUsAMAsHpyIZAoiQoqvmcqpkFfMVLb +zHELkYYco/glT8ab0qqkNKqI8qZCH7xE8KSKOMxCaPCo30u1UbRUkUI2dtRBhkEC +q9aPK1TNvZCjIlOJHbIZtww0l0qOL/WTlC5I8aS+L8VH3IwyOstOe+DSpqFQmxgP +pFn9ghY9mOtZB8M4oc2SIf5Fd6LIuTekZCVbbFwyfDcD7VYfKX3hpr5GgtcpeKNa +2Se9O4+fjh9bmAVxlUKyxSPf2YctJu9Vk2RS7JPYceB+az0BJ4nhOZvW8kjWLPNm +zb9ivDWKZKu1TR27YLA+JKyy1MvghR+D7v3VYLpBtM7rMzndIXkLLJgF3auaZg4/ +7oJnZFcBDWX5g8r3tVYjYln1uTmstl/T2DbgPGiKUkCZyxNqgxrJNEAl4OZ4eHsE +T+GErglXkMtDiH3wPoZeUW3+L31wQdIXO2cY3HhKEH4qIerOYO2lfDtXu0eMYflY +dQIDAQABo4IBXjCCAVowEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFPYhuLdm4hI8OXRquJoqm/ZztpTkMIGyBgNVHSMEgaowgaeA +FPYhuLdm4hI8OXRquJoqm/ZztpTkoXmkdzB1MSgwJgYDVQQDEx9DZXJ0aWZpY2F0 +ZSBBdXRob3JpdHkgT2ZmbGluZS0xMRswGQYDVQQLExJlRG9jdW1lbnRzIGFuZCBl +SUQxHzAdBgNVBAoTFlJlcHVibGljIG9mIEthemFraHN0YW4xCzAJBgNVBAYTAkta +ghT2Ibi3ZuISPDl0ariaKpv2c7aU5DBgBgNVHSAEWTBXMFUGByqDDgMDAQEwSjBI +BggrBgEFBQcCARY8aHR0cDovL3d3dy5rbmNhLmt6L2RvY3MvY2VydGlmaWNhdGlv +bl9wcmFjdGlzZV9zdGF0ZW1lbnQucGRmMA0GCSqGSIb3DQEBBQUAA4ICAQCPyrMh +1c8ThfHRwW5pEDXIHjm2rIHTOrknxFngmKii+T1wj5YNf9grCKMuO9UdD+4svjVN +2cszkgqM14oauL+DOF4lmjGQb9aUC50ALpB/ws8wwwTrq1jF4J4+fUDXqg20BbTj +VcROISV+xnq2wYeF+YU/M7G9h7Epkifmjccf6PwXyxjI0A856buOjSE3lJA0QkDw +zutgGg6s/ywrOyljLfG3gLwlVPdxT+SsnxoikCY4IIkGjhJ8rt1z9WghEri0YFHu +gbFGKOSKf944h3toiRtOzB8OXug6csMYt+EADZyd5wfk7kZ4fYEl6QpppKARpzFp +ivGlXkyjK21/QofMQhcNuOJbG+Gkqm4jx0QLWGCRcoVT68AqIgeL/vMUXBNLXWiD +sROm3wQ8ZWwG+YfkP1aeNYzoFY62souNvvblUuE0YCfsbae8DFGy0TKqWKTGg0oq +Jq3Y6V9vHIp1RXTK68h/1Icon9pL0eCtbjaOyJztl5u4lUsaf8zKktZPDiu6kjmP +brmXGEjdnL8Eie1qULj8tEpLdbUSw5FaGRS2c8mscstVU+lyG9m2y/Bl9aS9BhIJ +qZfv1oo0bHFl7fBn0Vp3+svHcR+LlKzS75O4SnQQvhRvbRZVGBL1WYpUp6Oesb3f +jxVQFb8/B8YhCFAk0JecTy8Uefs7X0jOhnVz0w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG4zCCBMugAwIBAgIEWMKT5TANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJC +QjEfMB0GA1UEChMWR292ZXJubWVudCBvZiBCYXJiYWRvczEfMB0GA1UECxMWSW1t +aWdyYXRpb24gRGVwYXJ0bWVudDEfMB0GA1UEAxMWQmFyYmFkb3MgUGFzc3BvcnQg +Q1NDQTAeFw0xNzAzMTAxMTU3NDJaFw0zMTA2MTAxMjI3NDJaMHAxCzAJBgNVBAYT +AkJCMR8wHQYDVQQKExZHb3Zlcm5tZW50IG9mIEJhcmJhZG9zMR8wHQYDVQQLExZJ +bW1pZ3JhdGlvbiBEZXBhcnRtZW50MR8wHQYDVQQDExZCYXJiYWRvcyBQYXNzcG9y +dCBDU0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtEVGl3N/MFo2 +utD1Xxdd47RccjumJoMTnNeOGiMz/JZAj7owTKEJ4vyIrK6GZS4nIUlAMj3Q9M0J +YSFMrlM/LaQX56lU4Tb6FIEds2tOrrsucQCL8qnBoKdx44rbs/16zidczCzdqmoo +uCW2iHTLqbEGWHt03tYgBayuJXrOZPg07Bscy7ZEVyqRClQfD3tsHDDyzYPZtKHW +J3qNpHTI6QnhlHVANLG3DJ90+BwIQVDwduzFuo2tgy+7Vug3+pFZx7v2FHbaFEhU +LtNXbjkGBbn00cJxyMF/Cl8eClhR5K0LQDph8PQeXbhGMiEM9hgm/IpMTTBtQjCV +kbXYLBULgWehQ4Y9RsJucT4Al0zNSXsmjY4vdZAloeBrwSpSi6AL6qH/s6y9XGDx +0fIKbTKF6/9Hv+qcaWVMEmB/2vDmOIr/G0OilsWo8qJF7TDd7rLzk8f3mb4s9vld +W+smZ4jDeV53FLAwyohvz/h+oDj/PEnNI63ZUjAIaxm4U1nGo6V6I1MFymTs3hkL +S+/BEX4Oywg+HZ2KukC9qoKN7YSGhVzZ2FrZvk0Y8gvguUWcPGseJARbEM6HHZhR +PhEjjhXk7DJojeJewov6xYz6S3svTycPLPVaiQZL1WcFOxIOw2ZfgF7teEWD7h1G +oy0LAG3t+TDdMFQjs7Nq+Ujuu80X1l0CAwEAAaOCAYMwggF/MA4GA1UdDwEB/wQE +AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMDYGA1UdEQQvMC2BGWVwYXNzcG9ydEBi +YXJiYWRvcy5nb3YuYmKkEDAOMQwwCgYDVQQHEwNCUkIwNgYDVR0SBC8wLYEZZXBh +c3Nwb3J0QGJhcmJhZG9zLmdvdi5iYqQQMA4xDDAKBgNVBAcTA0JSQjCBnAYDVR0f +BIGUMIGRMIGOoIGLoIGIhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9D +UkxzL0JSQi5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMv +QlJCLmNybIYuaHR0cDovL3d3dy5pbW1pZ3JhdGlvbi5nb3YuYmIvQ1NDQV9DUkwv +QlJCLmNybDArBgNVHRAEJDAigA8yMDE3MDMxMDExNTc0MlqBDzIwMjAxMjA5MDYw +MjAyWjAdBgNVHQ4EFgQUOf6vQQq3LqGpq19BMN0NU2D7e+YwDQYJKoZIhvcNAQEL +BQADggIBAEMh9rCQ9vran93zTSxN59WPh7tf8eST+12H6o8Sy6Ciw8icNVZ+2OPD +1jDQ9f74Hv+WpkvulgZ6prGK2WyXcH2oannW6rXmGpR7GXHw1Iy9LX3s3KN4jMpL +7L1oH5M/42HPW/QajGCbPDiSgs5gCz0vLzwmEcjJbxssXcxVTopm0U5Dpnf42KeC +BPkaNea8+pRJD5+GZTk9xQr69jXeizAshqicTyBxcDe+MvPw0zFMoqHTuHyF4xMB +uZTa0b5u6vqXSVp2T8s3f52uRteIWqyZjKZFZxX3Q/unVSeDwoHMfKtlzO2Hp8AH +78xzfpcK1BJdXYzgwIy9zH9iuZ0CzRi1XqQdfWjqpcA0Qs0TWXn5IkxEeQ5K2HHZ +EarS9iZ0d0+Gbl4/x1VX5KDy+unfiJBiTHB8H2Z3/saBdzYG/Q0d+2yQzk9ZgqSg +yroCbVD3xKfoSJEvriXJW1hdIUPwRvmq1oEoRFJviwFOlwgdrx+bwsxeFy5/KKec +HVcJgH/lGDn8h+jXFrx8AWz1lSj24vtaavX8xgp/1D26vUaAXcPVPXhxdajA1k15 +hs8coU5ENsPeYBDoY6x8X6/qrIFncPl7+pYoGutBsesA9dwNlu/oXZ4D3J9/wySE +rYVT42D86yBcpDumcHs01O5qPKgPsGxfRuRYlsDaA4U1PA13VHmg +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG4zCCBM2gAwIBAgIBAjALBgkqhkiG9w0BAQ0wgYExCzAJBgNVBAYTAklTMRow +GAYDVQQKDBFUaGpvZHNrcmEgSXNsYW5kczEbMBkGA1UECwwSQ291bnRyeSBTaWdu +aW5nIENBMRMwEQYDVQQEDAo2NTAzNzYwNjQ5MSQwIgYDVQQDDBtGZXJkYXNraWxy +aWtpIC0gSXNsYW5kIC0gRzMwHhcNMTkwMTE0MTM1NzI1WhcNMzQwNDEwMTM1NzI1 +WjCBgTELMAkGA1UEBhMCSVMxGjAYBgNVBAoMEVRoam9kc2tyYSBJc2xhbmRzMRsw +GQYDVQQLDBJDb3VudHJ5IFNpZ25pbmcgQ0ExEzARBgNVBAQMCjY1MDM3NjA2NDkx +JDAiBgNVBAMMG0ZlcmRhc2tpbHJpa2kgLSBJc2xhbmQgLSBHMzCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAIme6ox6GVlAv6JG1Q9mDhovDZ/kjNtzFsgR +pwuPpoE+crG+n6uMpc8h9daAyA1sGpVTkau+gvxNE2WbgbI0REI384WKI7P9Dl8N +Bv3TYQ1l6IH74mYMpmJxcUcdHk2zxVhNsW/G8XdOiorCwvcpGQ9cj8zs44LwH8zd +3bo7ZJpn1mJifV8wOmZfsZACctnVrd6AJPzu3qJE7M3aevUiy8fcxwMTgGMAGHoM +GaIt6txir40vzktYQkuDg3YkeST+T9WG3iblhijq7Pflql4+azxngc+MuVWWCZw2 +QR0ZVnQYCFboswxLgxs0Iv4Z7Qo8WCeSAwBxaeeLE4XoaHpKoeIqItWUTanVIpQV +BTXdtkBo/oYYVWmehHJBv/JUNiQr9yjX/IzVAWBhlaXhfHTXm55cvhpU4Vpi7Exd +fyhXNnUoyTAXteNLkXi9lBiwZeQBJiBCTHDVPlWrTQeEmZVYNd2OdbFZnaYDxXWG +CjWOFpE2mkTrLrD35XCjRcR9luPt/yo2H63fif9jwa2E0ysGOffGD1PEc94Zbq9u +7LtdXcQyuyTRsZQ/PKprI+u3nWW1y9OtqTgJaPaghjg2nMqyhNP0XsRN0sHHcCzC +QODpaPZVuj4SvaoL4KRPaR7036UhyUm/VLv2WSZNT3PxHKfUvgv9T0o5Y9lkzd1/ +3JtyG6c5AgMBAAGjggFmMIIBYjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQY +MBaAFH0s5oCDag3sU+yp0wQd5Z2u9w7LMA4GA1UdDwEB/wQEAwIBBjAvBgNVHREE +KDAmpBAwDjEMMAoGA1UEBwwDSVNMhhJodHRwOi8vdmVnYWJyZWYuaXMwKwYDVR0Q +BCQwIoAPMjAxOTAxMTQxMzU3MjVagQ8yMDI0MDExMzEzNTcyNVowHQYDVR0OBBYE +FH0s5oCDag3sU+yp0wQd5Z2u9w7LMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvSVNMLmNybDAwoC6gLIYqaHR0cHM6 +Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9JU0wuY3JsMC8GA1UdEgQoMCak +EDAOMQwwCgYDVQQHDANJU0yGEmh0dHA6Ly92ZWdhYnJlZi5pczALBgkqhkiG9w0B +AQ0DggIBAGLXR2SpwSU/6N2DJ1cDzU/y1FWgJFzimAdKJUWPSjl2X93PiQS5bgLO +kK8M0sVTLK2o5zCiqPYnbITOHHONoPEfouECii58SwY6j3iQLkL4Lbzupg8o+uip +TcX9AIA8GsucYuBLOXsvhP1C0+Gt/YqF4nryAviekK5GizfZ8IqfLpXd0ZFlp08k +4nXOlaHwaKW2Q3zZidLSwCh3KFSMXykMraH+QYsQt89m/iAfxDf9rPvQGXw8hoJ7 +2DjiaE2YXPYITQTbEVTfkU7gzpoMJv0PDm6Qg1SchkEzW69mYfPSzUMIs3WMFU8R +2sMBrca+4q5diBIR83OYb6HLuRgZnd9qh81u27X/XAYHhptkBkp0uc4dWSqBHYWE +VVtfWzma3JxMJqaUlk8Ar+GWtytjNmV3pCvXMvcAUMb80kwkKrkna4UGdzEaYAQO +tvDLbGgyGMkVSC2HQmFW0RoX7xKEw34L2PM/TMdaDs6HwjOuwVFo1E0aCEnH5dCn +P3p2G3ucdHmEa5kmnaz2V6yK845wCnga0haLv6KkIth3rvNUlYUMJWdSexuyiXah +vJkA46NMoAaVQa52v2HHIdg6RQPbRCGfSKJRR/kp2hv2Q/Wr6D1xd48oBLIw+Ns0 +Xe9iT2alhkfHmMn7BNBwtD26AgnRnyxNVJQUxneVE42GEiLENhHT +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG6TCCBNGgAwIBAgIQN1+xwMgjiPOkzttiEB/rrjANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCS1cxHTAbBgNVBAoTFE1pbmlzdHJ5IG9mIEludGVyaW9yMT8w +PQYDVQQLEzZHZW5lcmFsIERlcGFydG1lbnQgb2YgTmF0aW9uYWxpdHkgYW5kIFRy +YXZlbCBEb2N1bWVudHMxEzARBgNVBAUTCjIwMTYwNDAxMDExFDASBgNVBAMTC0NT +Q0EgS3V3YWl0MB4XDTE2MDQwMTAwMDAwMFoXDTMxMDYzMDIzNTk1OVowgZgxCzAJ +BgNVBAYTAktXMR0wGwYDVQQKExRNaW5pc3RyeSBvZiBJbnRlcmlvcjE/MD0GA1UE +CxM2R2VuZXJhbCBEZXBhcnRtZW50IG9mIE5hdGlvbmFsaXR5IGFuZCBUcmF2ZWwg +RG9jdW1lbnRzMRMwEQYDVQQFEwoyMDE2MDQwMTAxMRQwEgYDVQQDEwtDU0NBIEt1 +d2FpdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANJ3gVIokwy2kKzD +2cLSll4LrCI53Xg/wlsYJGR13dXZmt82MAaqHLsCe6JtUcxiwiDl34ziDsNlc/ra +2uTQHxopLu8VQt0bebtjvHOL6XkSf9wNTmqSAJDioTxI6X+V0AOFFNSIx8eNgLhn +dUwfG/y+gvTC7F9/pTx5wCNf/YnR64G+i22Qdu0ydbfzZYTyer72QMfAuRYOpivf +DEcvXUfXG6NegIY/E6xzSC/z3nasRVXTO7F6hEVunSUjizOK1XkbP9z3DiKVzD9d +2YCon/2iWkErHf/khDr6T8/4qJdiqN6qGhoNPYAR9kkcPA52sM/iWnDDwPhXfnSz +frNG1ILj4f9HrOQEZAjbKfXFhjy1uZZTCeNGJFx6ErGfnhovveDu6UBasTN7IbAn ++XA44JaUyUpw/T6Jc4ppai3FGQ5OiunidKeVP+Y/AYhsHBqk0A61UobYWfCQu38L +lL4pYTuFPVvjTy08B2+j62X9cjVrZy74673pnpFqI6V1w7kV+hJSMxdURq22sUsm +2tAdhlcCHnlGn9vJ3u16HMPbtdBVcNBCNgW+vA8al4y8dj1GLjs/S23NaeE9s4Yd +RqLlfX7a+bOhYCHEB85LQW5e+Aw1jh1SG3vOLgQ/ZF5RaA40rOWkHu1E27dPbeJE +qiKmGWD+voCIqQ+cgHTe27LzkzdvAgMBAAGjggErMIIBJzASBgNVHRMBAf8ECDAG +AQH/AgEAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vZXBwLm1vaS5nb3Yua3cv +Y3NjYS9jc2NhLmNybDA+BgNVHRIENzA1gRZjc2NhLWt1d2FpdEBtb2kuZ292Lmt3 +hhtodHRwczovL2VwcC5tb2kuZ292Lmt3L2NzY2EwDgYDVR0PAQH/BAQDAgEGMCsG +A1UdEAQkMCKADzIwMTYwNDAxMDAwMDAwWoEPMjAyMTAzMzEyMzU5NTlaMD4GA1Ud +EQQ3MDWBFmNzY2Eta3V3YWl0QG1vaS5nb3Yua3eGG2h0dHBzOi8vZXBwLm1vaS5n +b3Yua3cvY3NjYTAdBgNVHQ4EFgQUo0pmFxWUb7rAiKiTmalHf1VPH6MwDQYJKoZI +hvcNAQELBQADggIBAB53HEPTzYYZhCtjNtAtfeeCv6pZb1x4vjPRi5Z1bCSEqjmZ +eYD6I+BUbQS9qj2LgwqSkYBzkR5V44bDZxv3FnZDIHb7QHuukBVlDgp7FaZx5t0W +CCTBqUARvwgdCMBZVvI1NNm8j7LTBa/KKBQxjYBCkLNEPvFnwg9Oq9524/7ABhsA +Du/lE2kplWcrfKuV4THoatAYvZ0LP7kNQ6s+xZ837KmhyaNclWcL46oXK51dkWBo +dA9OE2ot7l29ERxGHCPJYo/CDpuyWteOk73LeMuqfWhgQJqqe7EMqkzMMdcN6+SB +CEqzFaRsGOl1Pp19opoWs8ANC1rBPpPmi3/mzyLecBYyebiCLTG23Irq3xwJ95KM +bHXuAhqy2XlWSZR/GnqIp3faNnSSoxisxqwQ+PKWclc5FSkvrVtVdBjuCrY9TZvv +31tjcasmOjjoueTLW1+fN9hxo1Eqqd9//CrOGoKCSf+jatAePfR+gaNRHHe9auK7 +o7U3Jzto189Hl1VxN1FxleMG8znnapNSL+lNmyv30PNSXzRJ7u2JWPeYfXd5NAzw +iucQPNYizS4ym83SEDL28+pMCIbG0LG3YnwEtbkzAjEJ3IGW1y7S6/+dRLXB6aNc +UKOLyJa193c7x7f/v9uX9KGN+3XUvfv7yAsIcs9WlR4kM9AE+EdK/1DZvrMv +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Ltb6 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ZpXQwlq6YMNjJD3E8Sd5xqVYwmKqFco= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEDCCBMSgAwIBAgIIK2aMJtdDxJUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFAxJjAk +BgNVBAMMHVN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBIHYyMRkwFwYDVQQKDBBQ +b2xpc215bmRpZ2hldGVuMQswCQYDVQQGEwJTRTAeFw0yMTA5MTQxMTIwNTlaFw0z +NTA5MTExMTIwNThaMFAxJjAkBgNVBAMMHVN3ZWRpc2ggQ291bnRyeSBTaWduaW5n +IENBIHYyMRkwFwYDVQQKDBBQb2xpc215bmRpZ2hldGVuMQswCQYDVQQGEwJTRTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ8igT5yClOp/F2rY6Bfy1RA +JKMNIsAS3rsfZDAkm5CRtfyStbeEjMv+7W7BEbh5oMgw+q/3S3lPQuFZ/xLe7qC8 +tgvSFYtvNtEbpEnWs+ZZcsAhyqueEe4WR7lEEKiLi/fxIf9a/+QVhRkzHM4bjjTo +7X5C0S63sbuI1BdU9KyOF+sh+IIFQC2++kZ/sbU4Fb7pOwy0HWuV5ZT+VscAoYLu +YsM7pQmf6G4J4/N2tVsHKXxqAP0EntuhENNltggvPWNlQ4lRvdTy/78UWpt9X4cx +6vnIbnS2xCX9wF/Chy7Ktt+oZ+TfyxL5SPGAIpEsToCT+Bv6qDN6P+NN6t+DPC6D +VNs4RfJ2RB/ZH8nVjRBp/enG7JsNYGGUOb649hGKBB5ph0XG7JkmzSyNYjqik01/ +qag925W+43etzdsSXLsiC4Qt3safVd9f6tR5/nW4QP9ukucSqrucNVhty6grpFeO +ImZeUvCbVkOjehRNFJovpvf5AvHCwB2d7RljJk9zAUTxzSF1/nTOgsbJKTOGs0sU +VMAyp9cueOee4JK756vYUNUd/glhetqiglPbn+xKPMq1xJZx+fhv6I3JRXeeTJMp +aF/QUBdxaSxnxp7KsGREggo08PiKpU3LX7UaO9LUkRHHKbI+/wfEf4+ZD4EStaGM +dHk3QBQk247dReTZO+vzAgMBAAGjggGEMIIBgDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFDcSA888xFowN/0LptoBvUdmkkDvMFAGA1UdEgRJMEeBFmNz +Y2Euc3dlZGVuQHBvbGlzZW4uc2WkEDAOMQwwCgYDVQQHDANTV0WGG2h0dHA6Ly9j +ZXJ0LnBvbGlzZW4uc2UvQ1NDQTBQBgNVHREESTBHgRZjc2NhLnN3ZWRlbkBwb2xp +c2VuLnNlpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2VydC5wb2xpc2VuLnNl +L0NTQ0EwEwYDVR0gBAwwCjAIBgYqhXBUZQEwNAYDVR0fBC0wKzApoCegJYYjaHR0 +cDovL2NlcnQucG9saXNlbi5zZS9DU0NBL1NXRS5jcmwwHQYDVR0OBBYEFDcSA888 +xFowN/0LptoBvUdmkkDvMCsGA1UdEAQkMCKADzIwMjEwOTE0MTEyMDU5WoEPMjAy +NTA5MTMxMTIwNTlaMA4GA1UdDwEB/wQEAwIBBjBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggIBAGjyuKdPoafV8Tqo8HhZOKBwqdyS2w1P+skZtBdEI0fiybhx5uI8d9XHUzM3 +KGJoJWI6wyrEfd5gHnZoqCMctXFnl3AoGuq6CK4rWU9WsMr43dGQXV8T7iRYDf1/ +MZgGjDtve0iZcvynV9/h1GXoRXbksnWxyXBAcy7QjQ0zhmtnikZqHzZBTO57qA1H +i3xVzQPrvz/5uLNI9YBWbXb8O6RkrWOv8YMrWkyNNeZ83Oc71l3or/mmAa6drs2j +F1DqzrSOs4y6x9et6c14gk72y0KAYXdy35nFEn0Tjc8w4ZB9IU8MJhvqm+arvgFX +XKspBbYS1MPZQWmjfZ9bvP819CpejzwLLdTT5LathGvSxnXHJf6+FqgA+Mydoybv +VQB3ymO7yxYmmRmqV9S37W32QGruRNI2VVQwE9Z2gLXtV6/ibx2AZVHEECisqpMu +NVdeEWWceK04A2Sj98Y6wAmT6AZA8I4uWicQDTFn2H9B2rvonL2pz0tveFopxXeo +BnBgdb5qmbEq77ZM9IycNOVPAxd9eQQe7RbK3nLO87GHaXxU81dhHQI5u5JdGglt +9lvvwQvxHbk97zHF4YIE3ZOzt4UB7LxdRGusenCJYWGld0ihmI6yALD+ZPWWfv6N +3c1huaQoViIaX1p3KPpumDh1vtqkMEzs8m3AczPnD1fsrPWz +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEjCCBMagAwIBAgIIItklK//mqVcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8xCzAJ +BgNVBAYTAlBIMQwwCgYDVQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNjAeFw0x +OTA2MTcxNjAwMDBaFw0zMjA3MDExNTU5NTlaMC8xCzAJBgNVBAYTAlBIMQwwCgYD +VQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAM2l3TGov7ytA4jJL+IwKT4ViOUzZPNrruKIk93zjGjm9IL3 +rka3jsfAE1KjiPoBS4dO+c/XiMzUGEzcGWf+RSeX2tRqu5Er4SaMD0NjPQMEHTH5 +MjVCWjQFnQSSVWBkVEytP1AF4vxM6VXcTlEUcMyVRkAaw0s9LGuRRLL8KDl/BWsc +hjeb5A8Cuu3zdKEAFY5Qp3TWPE9lHeWf1Lmgl4aYV0on3sAOVfNQ5OwdBv+t1VpJ +w5fLhRgO15zLjYUyLu9nwcQSNzA++QmY7cw2rKl68XJWdzBclOzvumismZZpZDvu +yBHSq2c/rjtrIiw1V969ePja8Aj6VMdRrlya7giFypQOrIKCor3kcwsNDPh7q4Uy +xa7kamx6NOw2HPR+WcVTWa12V9dx9KY9G+hgGkU6cIrH+g6ZJXBaeLDDIcIy15w0 +bcJdZZbW09WPUd7IsL/KdTAO5j8bs+qMxujadHPP+Fvev04q6/J2A3OLl0HZDqkE +SZ68yHAQHUrnkC/fjJTiZMDDxhmDThmvDzadAQQQOkBz98gcwZJPOadY5bisijfW +EvznKCIy5rRLI8BKroku+k1bL9aEazKBW5sOCIUvUydQ7PihM0JmSv/Ol03ajd1o +c93A1kft7Cod5TDIhLJjBeHRNeH0j1AQ4pffvKBd2GHpxrLxlRKMirtg3raFAgMB +AAGjggHIMIIBxDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU5WXl0gc3WY49k4/DWBZggEOZtOcwXgYDVR0jBFcwVYAU5WXl0gc3 +WY49k4/DWBZggEOZtOehM6QxMC8xCzAJBgNVBAYTAlBIMQwwCgYDVQQKDANERkEx +EjAQBgNVBAMMCUNTQ0EwMTAwNoIIItklK//mqVcwKwYDVR0QBCQwIoAPMjAxOTA2 +MTcxNjAwMDBagQ8yMDIyMDcwMTE1NTk1OVowOQYDVR0RBDIwMIEccGFzc3BvcnQu +ZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNVBAcMA1BITDA5BgNVHRIEMjAw +gRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBopBAwDjEMMAoGA1UEBwwDUEhM +MG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50 +L0NSTHMvUEhMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5p +bnQvQ1JMcy9QSEwuY3JsMA0GB2eBCAEBBgEEAgUAMEEGCSqGSIb3DQEBCjA0oA8w +DQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIB +IAOCAgEAbYxntynX6T1AeLhoQX7NGS+s8l4vCyCAnUBmEqd2ZIXL16Z9PzowVB6c +Mcy5wz5z3bqRlHhcT+/lBf8D1AXHJe5cQThcmH3OYTASEjsY6Mp8kabumcIS4HSC +cEXc8F/sjvrBSGjaPLUatu/PJdt7dcGTUE5Q5NSsL4b5Uv0FnmBYBg19X7TOnDMA +r4kl+LCrA6sAcpvSm15CiDqfdbLhFrmQfd1Hs2sHBHWyyTh1mpAKMawmc/RgOqCc +4tFOQ6kj7zIYc9WNV4Z44oCzW6lSquXNmbEDXwBGgCzr2IVmgl7bASiPym/jCvcI +QoXBJBL7B6n8p3Y5ag6OsGASRBAtE8GQNxc7WQTVrPWdIclxn5FVu6o/6WF5nyz+ +jZUdQOnL7zfzylmGoG6qRcPPo9AoCvgE3wur4Y11pyrvYMD2EtPb/F3wT/kWCF47 +vngKyAwFuPzFqKQD/oZoM2XJsgFu+K/4Yj+qhlJS/nWW7WIxvz4k64JgXiHp7i22 +sVeDpQHdmX/JLYURDjEx1AX0UHBn9K1SB9kXV/Sfi6Wh6/1Rcrnwx020bxCeSCcf +yTktd1eC65XJ9WV5h25kzwScDaRiJeU0g2ryqirA+83M5Xes0ImsBfLEYKIyh5fA +i6PQ5QhILriZEIcXyB73FUPjzInLTNNeD1saw81bbfVDU7+uYOg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHFDCCBPygAwIBAgIETjLQBjANBgkqhkiG9w0BAQsFADCBozELMAkGA1UEBhMC +VVMxGDAWBgNVBAoMD1UuUy4gR292ZXJubWVudDEcMBoGA1UECwwTRGVwYXJ0bWVu +dCBvZiBTdGF0ZTENMAsGA1UECwwETVJURDEiMCAGA1UECwwZQ2VydGlmaWNhdGlv +biBBdXRob3JpdGllczEpMCcGA1UECwwgVS5TLiBEZXBhcnRtZW50IG9mIFN0YXRl +IE1SVEQgQ0EwHhcNMTkxMTE0MTYzNzEyWhcNNDAwNTE0MTcwNzEyWjCBozELMAkG +A1UEBhMCVVMxGDAWBgNVBAoMD1UuUy4gR292ZXJubWVudDEcMBoGA1UECwwTRGVw +YXJ0bWVudCBvZiBTdGF0ZTENMAsGA1UECwwETVJURDEiMCAGA1UECwwZQ2VydGlm +aWNhdGlvbiBBdXRob3JpdGllczEpMCcGA1UECwwgVS5TLiBEZXBhcnRtZW50IG9m +IFN0YXRlIE1SVEQgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCj +Mg42Fipd4tZOLauEOb5fZlfU4xSv+PsNmBzrNdntXOxhUH7oBGIhuiTvtLE+2T1l +5Qiq6ONbn0nJv4RSIjqCIhk673NjsED41B+Fl7LDOvVcpeF9E53maZSK/c3Pm6Qw +EXAGgJo4dRyGirCaXfmUKT5fsrc05L74dZufG9FAWo4i2xNxoyDaOn0EX6+YevSd +u5yyLjMDcHNQpaytu9xXTkzgf/KjKu7/m6rwmS1LFvELMreIpdXKLpLBGQ6Il6Rv +O1Uqi4QtCVWGWEZpxQ5Dy5v49NriBFYpUe2HrxiZhbmTXb/YHnYKvMCd3EIZ7B83 +kq8PLnChAQNcdwn472zneWJiNkU1Tlx4v5HjyNShctU+4KZcVAqqjU3+376VZHqJ +xbLy2WUdkayvUYNVfT4Rj7SAlRQtH5I/OwCq3kiAKrQGVD+LPiItRLx8CgezjoBT +e7/Ic1FqkG7dc6orAKZAfYc1S59RnIPnpxVogHMTQgtYrBjsdoRw/bzLQP/746mo +/PjhzxiHAtxJ2ghgkg5vcXMFWyr7UHbdV6pNnwjGkOQjjC6YEvAlL54nXfpcFR6A +vWFBC/kFGtw39eAn3DILjdA353wt8FZRlCh3LuQpcLQq2tq2AfDBrMJ3GXw9HenR +p5du95QFsmbJFBLbuMPKSdythSvOQbxZFaGtbS1RHQIDAQABo4IBTDCCAUgwHAYD +VR0SBBUwE4ERbXJ0ZG9wc0BzdGF0ZS5nb3YwHAYDVR0RBBUwE4ERbXJ0ZG9wc0Bz +dGF0ZS5nb3YwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwgZkG +A1UdHwSBkTCBjjCBi6CBiKCBhYYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5p +bnQvQ1JMcy9VU0EuY3JshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VTQS5jcmyGK2h0dHA6Ly9jcmxzLnBraS5zdGF0ZS5nb3YvY3Jscy9VU01S +VERDQS5jcmwwKwYDVR0QBCQwIoAPMjAxOTExMTQxNjM3MTJagQ8yMDI1MDUxNTEw +MDkwOVowHQYDVR0OBBYEFPGKi/tqRKNGgzTS1ZIVgViCSkz7MA0GCSqGSIb3DQEB +CwUAA4ICAQARoYLCR1di+iUGqrcBi/ABSFx4oHm2cJzMAT7cs6cUAbzeGhFELYEC +Jzjbwb93lQgg8IpFl8mcBPT4yoMlZDZKKzDiztI9hTwLJw054n5oRk6YJm/45g3Q +1HUb+0wv6HzXfRlCx1fjPsPQFOpcKIKgdNc1QarEaxnUSHG29ie9E2WR3dD8yCFW +kbdGvmlf4FO+P1O+gfUwSbfLuuUg5RDif9bU+D7VBzuC+6QxueKRo6y99ZZcmHTJ +6dsaw/oKABOB+FfSad2RGLvpIynpKjpPNpoFw8H8FcSpOiwpdtSp5tdgLAKVwR/6 +hVMGhuwsSxmxknbLopaKSBC1shp4uZNOlSNjh/d2ssYfGPLrWuTARb/dD9H9SQjg +eqWZV8CJ8cNASsgenIwbygmH70J2p3+qlmA4WLq86qpOzrCUOZaUHYuVSjTEb8fy +CGUjAparnyVnPEUwqeVWOC9tbZtscV9WE4A9c0u8gr1DPVVWIdXrhdpXeOZQwJDm +sKLyTo/yp7GYLMBvNZcMz+orcsyTXoznGk/Xu/7piTpKQZ+EPT8yBp3zb2zNs0Cp +iNTD+szdm/UZE4Wl0kfzCPAz0fSKprZa7ifoiaZZzOwzkpnkpU2SuYcKQqyTw0E+ +Up7Z2qhj2NjkxaikFjTjm4d03dwnU+ojALwufJG1LIj9VShAVQG0ZQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHKDCCBNygAwIBAgIIDmswsj5q5x8wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMDsxCzAJ +BgNVBAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10 +YW56YW5pYTAeFw0xOTA5MjUyMTAwMDBaFw0zMzAxMDEyMDU5NTlaMDsxCzAJBgNV +BAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10YW56 +YW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALI0YNjWq2A+6iib +YcTaYIpuowIZCy+ujzzQfq/r67rtv2H3dzb0jyZbAWF/E4t3gVwiAw1YigOL+sst +1xLCaneIeQvN+MYksL4LVK+F8Aqd7M3Jk7SAX/rneEysQsY/XBAs1Zakuf+VSP9d +Ahm/wBprSfjZzVeT/PD1leVD8raSAiMD3sn3vJcV9TYuu3yy4LIIEemwgKqp1rOy +SLcFvHPOuC+nhFfG8QTS9vaXKMWrhiYo17II938qOHhn0OPySqD1h0fdoROOl7vP +X25YEHigno4z9mYusP5QfxBOSe2fujBAJ2vuzCODGvpF2W5q4nKpzlBeZF4OVulx +NwJEWWvdlCccQQyayOjpp6BIm6js0+qDN3/G70pvH+Xd6m1v09gG4PXGWqWR0SNd +iGZZdHfBsRiKwGoT5z4frVNuHT77FDhEf7QE1sl/6JJ4/+ZyzTCoWfubaLhv7i/U +uK49S48IN2qPi88YMZQtIB9Rfd+vdPDLpR1M2hMJAVDJHxiI5JI3sH8A6Sdk2tmg +4cU/obIwGZAc63U+NHPiproRGNF7tRyLzE2K0qE3DyxApwPrOwakGHiCc/V7FL9L +5KS45XzeOF26a3M+Ax+j+E0BSIbt1FcvgUjQ+RPxUjvFV4j+Wil9lSKhk6bRhFjO +iQ5BKi+rH2GDzlNb2ZD37a7vlmhnAgMBAAGjggHGMIIBwjASBgNVHRMBAf8ECDAG +AQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUkPfRchwDH0gmljfe8czR +lPWHrPswagYDVR0jBGMwYYAUkPfRchwDH0gmljfe8czRlPWHrPuhP6Q9MDsxCzAJ +BgNVBAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10 +YW56YW5pYYIIDmswsj5q5x8wKwYDVR0QBCQwIoAPMjAxOTA5MjUyMTAwMDBagQ8y +MDIyMTAwMTIwNTk1OVowMgYDVR0RBCswKYEVcGtpQGltbWlncmF0aW9uLmdvLnR6 +pBAwDjEMMAoGA1UEBwwDVFpBMDIGA1UdEgQrMCmBFXBraUBpbW1pZ3JhdGlvbi5n +by50eqQQMA4xDDAKBgNVBAcMA1RaQTBtBgNVHR8EZjBkMDCgLqAshipodHRwczov +L3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL1RaQS5jcmwwMKAuoCyGKmh0dHBz +Oi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvVFpBLmNybDANBgdngQgBAQYB +BAIFADBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcN +AQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAA3q1cxA/3zGYuGV3MdGu7xS0k1+ +41gRtDYZZ9CZQCXHmGm7Tjmpps6jw2OEYVhCyE3ym4IuS1m+zo0QQIAyJFbTwb4O +B5EFN3Cav1Xsi+dkrqn5oFDZYJhm0xWNdbAwJ0WB2Yz6Cc4Iyq6M//iB6SCmoC03 +NOsjmYcwc4VpdPi1JcX+Nfp8dGlbG37aOR9Mut5vAng9XtnWhDynHnSdI4NCBdjc +fy/E2H8xnPn1x1Gu6TFIaE90XjamfgQoCxzxEuHw9DSx6MlJSwknJ8504oMIv1V3 +m4CjPQL23Hl0VGPlgyRKzcnoLe5tA9B5ar+TnVFVZfnyCClAdCw7I8dMluWp9Tb6 +i0S3bECc6p/RFZtotYsWSul+hLQo8iqw5dIES5Gsvlnv1BryRgnwUsX+YtLJpB/z +5QRtVyN1M1zPDSGZQ0Vh1jgbTpn7LGpM45iIxBkqeZcVRDCPqy7y03DlXIRWyvVe +7+qqcHQsQC5+GwX7x+ABux9P2rC9gtOElK4HGqZ/MRMCM0h+bYm0jemtRavp/YBP +A1lTBXd2uETpEuci+srdoG4qlziPAnlUOX3vifpnuj3WrrUkmyNMoQovU5YZweAm +JA7GSuIXS1gUt9JMB6iAjKnkJ7GBuaUebA2DyAEgyYjW9SrPZv5CaXRNAjvdyCSB +kaQW/LbHJn0qjOeO +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHODCCBOygAwIBAgIEVjo8gzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwZTEfMB0GA1UE +AwwWRVUgTGFpc3NleiBQYXNzZXIgQ1NDQTEXMBUGA1UECgwORXVyb3BlYW4gVW5p +b24xHDAaBgNVBAsME0V1cm9wZWFuIENvbW1pc3Npb24xCzAJBgNVBAYTAkVVMB4X +DTE1MTEwNDAwMDAwMFoXDTI3MDIwNDAwMDAwMFowZTEfMB0GA1UEAwwWRVUgTGFp +c3NleiBQYXNzZXIgQ1NDQTEXMBUGA1UECgwORXVyb3BlYW4gVW5pb24xHDAaBgNV +BAsME0V1cm9wZWFuIENvbW1pc3Npb24xCzAJBgNVBAYTAkVVMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAohP/iOVhnNuN8Bh3/+ddPBipDmXIXtuxl8Hy +0PUVMYMbh0w6na5HCziXibHYqiS/GNPREnv9v6DT27jh82hDtr6x0jmlPKQmLJsP +yAa8nRkVPamWnUP/dkbtNl4hpiVRnhlMh2Poc5Rxfjrdqywersi8TJChj4FnqV6p +JeVsur/LXow/T6WwBMzYu40LUcPAlOZvHQwukg+pmskJ6Sk5MsCMMUf799vmFIEc +eTcY2StNtb8oMxeGO7fwgoWmVPn+XWOeukgEdQgZQr3l+ohlVvf6PxXgBa59ToIy +NhbivuhXz2NRsoN9YwPc6ZdNTZTgjoFEw8v8VIS/TzCc+0PPdnrZ8WxaxrAOeDSX +yuCKcR6m2ubJPRJ3C3M954FXE5OXpEtil0G4MezZxjEbiVT4GRtO5O0qpJ0ukdeX +TaR/0Qhgl6ol1we0BC7BjmkDf07nxbjrWOdTcImyX4F/gr5kyiPOXN0jG/Ehs2SA +/ajkgerMEkfgg+HAwfSexh4frL6c8pBZ2s29SsCIPw5zQ71iF8yKZMAuqjdvwgwk +TtWDBYa3u3ZYcGtB/3OWnJnP7npDciKxiztbtO6Xm/ak2m6/xTiGzg0asON/+YQw +PDiJDwhu/l3hZZWHeiFgT/MBFnEHl2IcmrNFaFIwz9gqxmEf6lghhueChSpDA4if +eEHUImECAwEAAaOCAYYwggGCMIGSBgNVHSMEgYowgYeAFLzJa1HIIq419SeHZio3 +OjmKIvw/oWmkZzBlMR8wHQYDVQQDDBZFVSBMYWlzc2V6IFBhc3NlciBDU0NBMRcw +FQYDVQQKDA5FdXJvcGVhbiBVbmlvbjEcMBoGA1UECwwTRXVyb3BlYW4gQ29tbWlz +c2lvbjELMAkGA1UEBhMCRVWCBFY6PIMwHQYDVR0OBBYEFLzJa1HIIq419SeHZio3 +OjmKIvw/MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1Ud +EAQkMCKADzIwMTUxMTA0MDAwMDAwWoEPMjAyMDExMDQwMDAwMDBaMCMGA1UdEQQc +MBqBGGV1LWNzY2FAanJjLmVjLmV1cm9wYS5ldTAjBgNVHRIEHDAagRhldS1jc2Nh +QGpyYy5lYy5ldXJvcGEuZXUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9ldS1j +c2NhLmpyYy5lYy5ldXJvcGEuZXUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQME +AgIFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgIFAKIDAgEwA4ICAQBPKYKV +KV3MU6+e4I1C8XhbhHFuOnB9zNtGlPa2hrSJ0IbpJpg6LEx7RFE5ML3eT/4LCSsf +sf5vK7xJGtA1ojw8Gd72ZrHgSTd4NKlU4rAE7SNmA+datHTrii3MAuCWfBrOQZRa +f/4ej0yIPSVeP6BwOuFT6iiCq+SWiFEZzHW2mZJujWURL/BEgwC4+yYFwK04qk0H +MkwKkQjRPbAjmdKtcxLxf5Euf1ZT0VB8SvzcBs+63dFF/ttJ47MlxRMp0A/OqteO +XLWWbIlIZRM1W9VBZTGrEtZ8ZX6kMcSQRKkKCMs1DjGkmZx0lj9alfF/06x+ugSj +UYMN/Ih+OHZpSvfZsVUcfuUqlLJCuXtMWGs4PDaW6k68g7GUU1serwggngU9qgGf +fDaQaSBDhL1XVNoXJ2BHGOI/FTiUUotGb1y0Sj75mRW2pQHijd1f+1TQOzVTf4ab +5JBo3Iuz0P2eLciCbZbCRs90rPwQFVJaVe2NAaBNckP+2IaKOiaI/gbKZC3MpDwX +Bdt4bjFHHzZ+XGugg4vlkNQQ46vRxr10bFg+CPaNplg/HMZPjJVOuxg3amYfanIr +2mSPScKJA9fJZuxOd7rGIb4Z1Bvs16S2WfNPTZRnQjxAqXir9Wa2xxvw3GriU6Dd +C2ceDox/pCY0HZZvVMOh/AYHDptR0uO4jSdjUQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHPzCCBPOgAwIBAgIIAPcVFd00H0MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGIMTkw +NwYDVQQDDDBHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENTQ0EgZVRyYXZlbCBE +b2N1bWVudHMxPjA8BgNVBAoMNUdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgTWlu +aXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMQswCQYDVQQGEwJMVTAeFw0xODEwMzAx +NTQ1MzNaFw0zMjEyMzAxNTQ1MzNaMIGIMTkwNwYDVQQDDDBHcmFuZC1EdWNoeSBv +ZiBMdXhlbWJvdXJnIENTQ0EgZVRyYXZlbCBEb2N1bWVudHMxPjA8BgNVBAoMNUdy +YW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZh +aXJzMQswCQYDVQQGEwJMVTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AKgNuEvu/MySNuvZ4XxxowIaTEpgbu4inDQWJee3UXFT9ua1K66cn/IByqIrvFji +Kbww/kTcAOz1RsEY8Ic/qkFqe+Yeyna6TY+kgusL4cGtBJbNa+pzmlQ3rg9xXJAO +NSQD6PjJHncPxLfkWzl/YzhzV8ArTUAvKlVar6YlZTkNuWd90705ipcrSf359nxI +1GPdE1kszDregjSGogf9Lw145/fRhQA7YmGRefh7v78lgibb3ZheMpTQ/+hHOvv4 +XwqYmhP09H6ooFaoNGBlp+tHeaBiAEpm26aQvtNJudO+0zIeO0bYgKIrUZlch1Ya +LyHFLjZ/KQDdaP7PP3YiWWwyaJrRn7heFfv55btAIH69j+ukuVxPq8koEXPMZSnL +IugjCYSsLSLy2icy85Zp4qwlghb0cy/+x5M/32duORrcKTU5vLyMQkYpAQFs7VAB +uer/Ip8t9+oBYDERFwOlt/zih8kQiO7njmIe145WVTRG/28bhpmOlXpaC2JagR6f +VVqkVNWuYK+NrujncZ/ktG53szuB/egIScJqfbeNvnbwiop/plVL97A2W0U8ATPT +IDtzLWcRwxdGvFx3p9zaKuSB9BIlWW/8VZmMkpwaZhxZCris1zHDoiVgIZQA1nMW +AhB4qpNwaExSJxH814njkRaoB1hQueOJZ8lH5yv+6I7XAgMBAAGjggFBMIIBPTAd +BgNVHQ4EFgQUoFn8AxKVTcE62USmIMCeZ57VU6cwEgYDVR0TAQH/BAgwBgEB/wIB +ADAfBgNVHSMEGDAWgBSgWfwDEpVNwTrZRKYgwJ5nntVTpzArBgNVHRAEJDAigA8y +MDE4MTAzMDE1NDUzM1qBDzIwMjIxMDMwMTU0NTMzWjAVBgNVHSAEDjAMMAoGCCuB +KwUBAQEBMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9yZXBvc2l0b3J5LmluY2Vy +dC5sdS9jc2NhX2VtcnRkLmNybDAOBgNVHQ8BAf8EBAMCAQYwKgYDVR0RBCMwIYEO +Y3NjYUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTAqBgNVHRIEIzAhgQ5jc2Nh +QGluY2VydC5sdaQPMA0xCzAJBgNVBAcMAkxVMEEGCSqGSIb3DQEBCjA0oA8wDQYJ +YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC +AgEAVrYAAG7p2CPSK20LXkmJW4oI1N1grnqotCMTFs1x79jbenwKf/uSTnnc3mIH +C/0tM9r3Xj9T3HCibC2mc58vaeLafbieR/SDiEkuQ752o6Oq+XqfP4zO2YZNQjAM +iuqcqiW8wIBzBYooJGveX+D273IlhNVGVrzlnbse95Om0wSjHVMEFvu8yNrZVrxF +wTFz5B6WnZhIcfNA6OQVc3li/+FZB7VduoX1VEMdWOYw8n5P3GtCgrpLJUy/EVhp +g5i7O4HHKb5H/HYFz22+DkTwoDy+sa5IBJdm45VmAwrMgGgfPc8fj20sXHznLExd +T/++ZhQ8PpbZPgT8jSioaKFMweMWY09LMgBRZqGpDyajP5sC53f68mAT0HbL4B0o +sCoFYoM5h3H/TTJ9EnhSzq/rxWEz4f/sOoBctEUajyL3EUzaVWEjjeUABuC8v4wS +ygb/ZvPJy70OogPgTSwaLzxtTDdnPFPAv88C8EDgYBRnJrmMxrxzbrTn3fe+iFDa +5ta6YiSae0CZBLDpbTjaev1GOVVScLX4X1hG2egB4W98r2eHGN6UTrWpqx8I0n9B +o03uek+XnFkdXpUgTG+e9d4tP/LTt/B5+qIXCROa1zDBkw2y9FYzk4qJ21WyCiM0 +n4wZ2HU3j59Cj+4lAJ/F2cHbLK9kKpS1dwi70Zp1hBIuli0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQTCCBSmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJBVTEM +MAoGA1UEChMDR09WMQ0wCwYDVQQLEwRERkFUMQwwCgYDVQQLEwNQVEIxKzApBgNV +BAMTIlBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBBdXRob3JpdHkwHhcNMDgwNTIz +MDIzNzUzWhcNMjMwNTIzMDIzMjExWjBlMQswCQYDVQQGEwJBVTEMMAoGA1UEChMD +R09WMQ0wCwYDVQQLEwRERkFUMQwwCgYDVQQLEwNQVEIxKzApBgNVBAMTIlBhc3Nw +b3J0IENvdW50cnkgU2lnbmluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDTRaXFCXMc9SWNOzZleZMBMogbX2uebpEtN5jKTKbfLkrI +HLoTx4YeJbv2GlU5cVRfCwfp5CGMSY7AIbn/ovvAUoX0F/rxGIybA5MUJN4hrzpx +pcZhJRKggrdwzhWpPBO/g0XzhFod8RFZYdB8JTY6LWgyXTeP7jrizsEejeJhnGjr +GQI8qzOnKlFpZBkVgHJCKnI7nd0fxmwQLp348IORySVRJ4K6PBfAfPVOuv0766if +kpqCOuOAutDfGb1cHGv8WMLxZ9dpulRSb5wuk5YC7AhsQJKbfYOw2xkSEDJLIitG +6Rev8MsYpNYAlxwGNpNO4HYege4A6EqKLAmaov2WEjGIguZUiN6V8b4m0GOZIz13 +U4f1DT1Baj2AfoBA7hzKGBaH7Ndeb//CdYh0LKqfy2tAS4jyLcHwdb+BX80jpRdE +iUPAUUQbSN3RP6EtOAc42gVFK5OGxWeS1+KodasKBbKbM/5WWR54RxoxJICPEJQZ +iIdrwypCOBTqhs0UUc9XbYYqX63Gmh/nHuj0UrFamK5hlBLky3pQHy9SXPsOjGVj +U/JWWPKw3CElioKJG3Bshzya0Q2AFQlYk2Apeyhkna3ya/6x+nXLrpPKFDtx/xLN +GjRXlkBLlQdUv4OShL9lDfoIFEkKU2ifKPOfDnWjitKhHnhiTreE0CPntSEvLwID +AQABo4IB+jCCAfYwEgYDVR0TAQH/BAgwBgEB/wIBADCB8QYDVR0gBIHpMIHmMIHj +BggqJJ+mgV0BATCB1jCB0wYIKwYBBQUHAgIwgcYagcNDZXJ0aWZpY2F0ZXMgdW5k +ZXIgdGhpcyBwb2xpY3kgYXJlIGlzc3VlZCBieSB0aGUgREZBVCBDb3VudHJ5IFNp +Z25pbmcgQ0EgdG8gdGhlIENvdW50cnkgU2lnbmluZyBDQSBpdHNlbGYgKHNlbGYt +c2lnbmVkKSBvciB0aGUgRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMgc3Vi +b3JkaW5hdGUgdG8gdGhlIENvdW50cnkgU2lnbmluZyBDQS4wDgYDVR0PAQH/BAQD +AgEGMCsGA1UdEAQkMCKADzIwMDgwNTIzMDIzMjExWoEPMjAxMTA1MjMwMjMyMTFa +MB0GA1UdDgQWBBSJUhghMvDepX8TOhcqXVYXoHkSajCBjwYDVR0jBIGHMIGEgBSJ +UhghMvDepX8TOhcqXVYXoHkSaqFppGcwZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoT +A0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYDVQQDEyJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5ggECMA0GCSqGSIb3DQEBBQUA +A4ICAQAEqjDutevDMs4Xk7FeSCvr1UHXKDNYmleeWjH/cO/iLUujapR3bCXv7kOr +o9oScviuqmdISaa0eJdrjkVoAbrQuoZUPYmjhBsQiiJr1rssOgcpxic+atx0jSp+ +x3epZT/xQrspoDCJ4axT7dSyr/7BDtPbI7RGX6VXiG151PnKljJ7APjlV5mc1qFS +Y1CJbmZhvbT26/HwMUdGMVl3XVn4nTJ/az/HxPsQ26UuIkMrCH5Q1OmxEsqDRFAh +x+nR6thPDNrDb+9QhP5/cxot23u0+AswUQ58FGPRyAcmOhr6zqsjv74khPavQyjf +MLbwgemQKr94S4YMHRtFdhXttI2H7wxEFQBtmTXX343puet6+/z9k3RtVequZikE +wJQdH5/gLVlw13/1tkzkTMA42Vt8qrxe7ETEtutHBdelUVAIsD0GRVvN6/436gor +pmzZ++EWhEkRIzQ5JBNOaZC6P3OKG1H/FGlZBChb/lsXUqEnrIzVt+NF4V5RwZHV +403Y5tWW0XWWSWRalYoRH5nwhOwyrMHrjwWdgWSWcwPjNpgrSF7ZgOTcW2zVQYC/ +5LaRZDFGjl5SihngIpyc3hP8x8D+isUJeaIf0APJ0XkVxPGXUGOioFYg4oz1kYeG +m5dcjtNQNHSBst32FDqnoviop+pMDdbdy/JSmwPHFtl4KseAWA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQzCCBSugAwIBAgICMAAwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTExMDIy +NzIzMjI0MFoXDTI2MDIyNzIzMTQ1MFowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAn8NW03F55Sf4tvQMk2KN9CDsMteBreJhHmfj5QH4RjWG +Dwx+XisGmZDMxuklCfCVCgbKlV9pYlrH2niAA9Kdcm/58AqX/9Vi0ks8nEkUY1g+ +Cb3oP0lZZR0QKVrSyD7C191d9/eAAjXrYglZUK+cq2f1zXqKcPclNhkOpob9e29Q +lLPO5Nlmfk6ZJKVUg5+exQvSGI3kDIS6ie4cO18cLL0rVdG8J50WQuHK85di/P/U +vWjXMZfOEPRUiv7owKZ5Sz9nZCY8yHlFcCDajwZ00L2OeXMbjDfe/WLSsxjPRLcv +DKNUD7Ce5BJzj+EgM3z2BMICNhIfsi6R5emxu3PWguJXrfn6YVsmoksQ1xeKdlGu ++exEi58Hvqx8WJFsySBkz0s/7d1rf8FRqhl13qv4G2v0OfC1LtG9L3uOFR0ZwjWg +aLNMq6390Q3s0i4Xizysk8aON2UjtrqZeSopJAos9E4+TGs+Sp21PqieEeYtEDuT +N3FyO8h6jljsyEOdTcmbAUIGpFKy1k7or8KEeZkSu2qOD5zJNmKMeveytPmAnCC4 +wRAUYUCLbqxeBRnWxr1b7ZMXYeNMDaK5Ceh9MDTB6kCpUCb93H3csVX1huxRTgSl +QT99UvwI9AY71pzGc61dPvWtR1CnVCrjG1drrr0nxDRT2veJUxK7ld/D3tQdBrUC +AwEAAaOCAfswggH3MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDExMDIyNzIzMTQ0OFqBDzIwMTQwMjI3MjMxNDQ4 +WjAdBgNVHQ4EFgQUKw+Zo0vp1a4Akzp4aMvNIabPR+UwgZAGA1UdIwSBiDCBhYAU +Kw+Zo0vp1a4Akzp4aMvNIabPR+WhaaRnMGUxCzAJBgNVBAYTAkFVMQwwCgYDVQQK +DANHT1YxDTALBgNVBAsMBERGQVQxDDAKBgNVBAsMA1BUQjErMCkGA1UEAwwiUGFz +c3BvcnQgQ291bnRyeSBTaWduaW5nIEF1dGhvcml0eYICMAAwDQYJKoZIhvcNAQEL +BQADggIBAAx08OCxP9QuABV17oCnPz77Hg3/a8w+Z63UOzuM8pm0pvvZsJ49Y1XD ++8Jkt6J1BfKfQzHFoX2ySsqPYt5vWITCIHhijzCA1nopCV0T7Gpp58ZHamsmsf90 +S4v6drlpHu0h/QvD1mUWXuCqXtGifQwhPOPUTaGHU6axUa176cUa0bj8xeWAyl5i +AeD1LrvIiEu+yorWonS0eZhxPX7exnU2zuXRKmpPJ3qH07Q4fHGm5oNI8esw/hYP +6S9I40PiVYaoyaeAFNq/TJ04r/27BqRlQUADuz0ZLcHEgsVFkEr2G8jPtOJ/UoQD +Jbfy1OL/wBlEx5s5jAmNREdgo/VhqBTSH0Mt+TdroSsU/qSwFSYgTEOSBavMeqs4 +CqpgCxh7UyEsa9T+HQ+1C8oszRlV4Iz5K3q+U5rYZNKwWJ1GpI1BJ170CnUots8+ +R5Sm2LCFxdvV9/DQObstUVdb4NEU5gtg8Xca9ZN/ZCwidEVhobooMk9he1OWtl+z +nPSeUy/6iNcqdNJ/O57byioxA7wigiC1jgc1cnO5h7pM8+VdJ4tTXUZZeE0kvZ7t +bmpawKflvgqnlmfzMeDRYCO4xwPv09RNJPeIHIkgr07oEa5FOgBqOvOtfnrMsFcP +dXF4R3XFHLoGAbwPDuIDKfttAwG+XPLtmX5hiZ8gUHHrv0MtL343 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHUjCCBQagAwIBAgIIBU9VRtdAbrwwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGEMTUw +MwYDVQQDEyxHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENvdW50cnkgU2lnbmlu +ZyBDQTE+MDwGA1UEChM1R3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBNaW5pc3Ry +eSBvZiBGb3JlaWduIEFmZmFpcnMxCzAJBgNVBAYTAkxVMB4XDTE0MDMxMjEwNDcz +MVoXDTIyMDYwMzEwNDczMVowgYQxNTAzBgNVBAMTLEdyYW5kLUR1Y2h5IG9mIEx1 +eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBMT4wPAYDVQQKEzVHcmFuZC1EdWNo +eSBvZiBMdXhlbWJvdXJnIE1pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczELMAkG +A1UEBhMCTFUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDN2bxAe2Y5 +D9GLcHMs/UlHDbKiw+x0oJ/QefRazv4Vh9jx80o8CG7GDo16ARGw4RP3KRzjKm9m +2ug4sLDHrQXqLxR+LjKJJnwvJJZbbG53PKaE07bLs8/zOd9iKezvig8cZDJ5CSka +Zg4oxW0N6V6KYMvL0MovjCjCIwcBugaa46ad9HjUKdtnyu5WnduTEdru0rm3omHm +X5mUdN/JaRWnbhHbnW0VlEvVB/aN0Wx8mbAFkMXzqrZVUTn3o+urjx9NticdsTuQ +6f9EVq7OVxb1Erzmnw4HChfDx2bmSIknVAzJQSfaLVOOaxXD7+8g+DBLgqleXMrn +OTnKQ8zutprFWE2sT8muMJ00WIUIKXhCGyN4UyZmxNVmU9PIVPiJ2z0UDSmxVIL7 +ENzi0eyaGJvQT01U8l5IzDIDXqwZd97tgQ4lq/LjpXOq3dePXHkKM17dr5dvj3K2 +kXEaWimNXAFoEitDAkJTtnS7Xu5xiBiG3e8sQy/Zi4owSgZWhj4pjIAtl4WuCW33 +2+f78QhQNBVSGZaS/Kgt4lHsc2IuuP+akZlbV1RltZVOL3LW6lTZ4oKYGT2p9ExQ +qJwgHl2C1Ga31KUXbA3Pl0j54X3cv9A4720z9fVeAwLtyFCq7BfPC3hZw/4asBCy +HNJ+kED0k8PW9oGE1Yy0dfw4rc2nLdBB2wIDAQABo4IBXDCCAVgwQQYIKwYBBQUH +AQEENTAzMDEGCCsGAQUFBzAChiVodHRwOi8vY2EuR0RMZVJQLmx1eHRydXN0Lmx1 +L0NTQ0EuY3J0MB0GA1UdDgQWBBRv0Yag4M+Zgll2Vp03LOgnqH+n4TASBgNVHRMB +Af8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFG/RhqDgz5mCWXZWnTcs6Ceof6fhMHYG +A1UdIARvMG0wawYEVR0gADBjMBUGCCsGAQUFBwICMAkMB0lkLXF0LTEwMwYIKwYB +BQUHAgEWJ2h0dHA6Ly9yZXBvc2l0b3J5LkdETGVSUC5sdXh0cnVzdC5sdS9DUDAV +BggrBgEFBQcCAjAJDAdJZC1xdC0yMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9j +cmwuR0RMZVJQLmx1eHRydXN0Lmx1L0NTQ0EuY3JsMA4GA1UdDwEB/wQEAwIBBjBB +BgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0G +CWCGSAFlAwQCAQUAogMCASADggIBAEsOtQ1UQEkDLYHnwBBdtkM6Eq+pXcYIaswm +FPYs0g9MTTSbjh74vPEzeW7+Bgc8QpyMffyz87PxK2aV1E+MmiNqSQg5no60Azq5 +mCNMdSpJ6prj+EkxzuLJQtjC+O3HodqUDieZjuU134vaYxnDjxIMOt2YDLtTv4iy +zi/xWzq7G3imblsU4TanYuzghAeDMr1VQUc5Mn9r33mx6aakmv8sB8VFir+79LfA +pZIORvBLGkr6ymnzCM/nyzLB5R/9otq+GUYs7nAHpqkb8ANaOTi51SK65lj/UfC3 +LrBkaq+cdzzvgZOodVwtEKhqnlKZevJ7Z8PLHV0cQguT1dzWV5Rq4NsiRoFeiRSJ +LbIJvttH6HlCMTfunmUFdaXSsGPbnebmdVIwkOea+S9QYs9wZb2j1+mULv6LdoVg +a89IeTwx0hFWUJOzQynNHvFSOTKlFR3MANuF5nruTv/FstSax3sLO3TbVP4+HhOs +DIDSZk6EF/Wivs+L6KIMUpwMWqI2CV+o9G58PP+SK0xeF11hlI3lG4NdfiUXdC10 +f8husKOEbxX/44KfSdZGKMv+cfiGXvCnNyBxr7sENbD7M2vALy+rx8bh8+4TKKuZ +U7lZLQh3YqVv/Ko4dGvHLES4SPL3tLggigIM5moa1+HYRfOKbd7S88Nvze3CW4k4 +G0BLUzUY +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWDCCBRCgAwIBAgIBXzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xODAxMTAxNjAwMDFaFw0zODAx +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAwBBn1ERWiEe8DBUv +eKRJWwVnwTqPysl3QwclxMtTpFLzlukRUA37lm2Q0brpM4ifpa/vdTMeuZ90Jo98 +qLD6DtjqR2G6Um3SkfitSzlVRDS35ose0gI2l+nH312wfGnZCvr1hEg1mArr5tlk +7fO5L5g8Ri+8JFi2yHj9/ajLfjtwy7oFHwt+AqVaelKW3Q7j+oPuW4EsAFQJazas +9hCX8eFGqxsp9SX0Dt61HfXLV5XV7zBKagkxEHlCeNG5tED+FEz1An0e/BKc3M6Z +swC/FqZLExlzEMPROFV7z/CpUgjCnYBJAW26YPbnWHJJTBXx8pFyiyqlGpZ5ys+t +EyTsf5hgS/ivOYVKwH4oij7tzCddmgXKD88LawBIT0odjiUymEfKmYLBxCc3Y4tY +iEz3QtZ8xCvkrptKJZq+wDL1nWOJpDrzN7HHMaoFp/uOKc0SnBmjOiPiFg9FMUFB +p4z1zxsK4U2QTJw+63fcCNdiJjj/W/Nm5+Zspa7rNeFh1qnkl3lAvCIv97vMUKle +0EbhARhrojupJSVILKItbQ2+S9qtZP+eGSn4m38RSMesL9s7POFXQ+6m0iSRcFOv +5jmTK/PzzxdfCTXDMTIrM51p3R/HsD7TqzuHMyJ88f8UqEju17ycIT7FNLWaECn3 +TDk6fmv8WTC1Oc+Y0DVcomtYpF0CAQOjggFtMIIBaTAdBgNVHQ4EFgQUeO9EcTNU +WeaYrZSxdbknvkdJ8D0wDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgw +MTEwMTYwMDAxWoEPMjAyMzAxMTAxNjAwMDFaMD8GA1UdEQQ4MDaBFGVwYXNzcG9y +dEBkc2kuZ292Lm1vpB4wHDEMMAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANNQUMwPwYD +VR0SBDgwNoEUZXBhc3Nwb3J0QGRzaS5nb3YubW+kHjAcMQwwCgYDVQQHDANDSE4x +DDAKBgNVBAgMA01BQzASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAy +oDCGLmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX01BQy5j +cmwwNKAyoDCGLmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hO +X01BQy5jcmwwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG +9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggIBALr2PRzLxJA8lvq+yIa2YJp02qHZ +zq2wLiR0/K387k1Rq06W3ONU214+3LyQOIIOTHclXnVF1U0uMsVM+L8DnQFfobBB +D488xDXvtiqrYe0NXLFszi0RbQnRsB/Q3YhUQTqQCYuu01ZLk9SyuTUoB4hYitLQ +5Ls/v/oZe/khhZN9b8r+kxrlUE+fjupZRCORBrbDN08sCtl0pD/ZCfJEBK02bqkn +ImyfjgBzPUkVyFlHgztFBb4IXIIm83m85d2NlekZikzfP5E9bK65prE3DbRuPGS2 +3KxfYzquzie+y5SzvdPV3Nr//Bi9Gx8opsZ36ZIPb3YVxrvXXzNDrdut1qlLtIPS +xQWNHdJDquGVRc9AcKHDN80P8NMgPYi4UuOhdfTbNYofY/nyq29W4DK4Aj3SdpS0 +GAwXtJaRHKK6ipU3iFoeQpxuMUG89ggjmPNraIUPjXd/Pp84AZuTNyh+qWSXitR0 +qIro/+hE+GF+pXqYEywXkutnRzWRuxXijbKIXMJt82654bHKgwAzhJ5WOMbGFhUN +MxaM4kzkLYVAUxyDk0OabqwkVshRccegerucTiAc3Yblg8Rnmm9SteO6iXNy/Ei2 +xLhCethFq5Xkzbd8CRWqfhryDlOWLv2qhua9S2XJwpUKIbvoPu+krj0oDLj7tlLk +HNyOWau2O9AHDhm8 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWDCCBUCgAwIBAgIIPPPJQSf9nlwwDQYJKoZIhvcNAQELBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKExJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsTG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECxMRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMTKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xODA3MDcwNDE2MThaFw0zMjA3MDMwNDE2MThaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UEChMSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +ExtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsTEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDEypDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCB +O1x7psTI+pWRkjk167FDL3aM67OiCGxrr9xXWpT4RciyKK1mczSxv3QovcHSKVga +MM0s1K1tdMKnNu166+T0hQuCLUcfHpZWzeEsewU+rzJZovzu4sNi26hg23MUfoRs +txIBizq2mHvo1uowjMfQ79XyB30CaZ5BOMbY2qJnRS9eWXvxxBOc/eC03HbOnSdd +P8zRGG/dx8HzR24A3w4dyEqKjR8iKJ2drp5aYNwv/qZAYVyntD7rz/qq/gwYMzbN +XEODCPJIoTzMRz1oUS4OlS5G5tdldkge9fvHvrUdRLh8Z/CsQ0xTblrhQH91nvTO +0YBIRrOUR7kWn+oUtmCxKXCoR+0i6m6ClLAQ/jduzNCcaB9uV9objJPJrxZp1aI0 +dtmqhs3oZKDHnu3ARv3Qeydx4kgVkp1QjF0N8ZGLz+E0YtBU6020u0aiLR73KYCk +A0X2v9Gc/LIdecH9wnZq17OBAVu+ek9c+MAvWVHOJA2BywnXAvGqVdkePb2YnFr1 +Nf6w67iSDfZUW3Xjlitmr/UZrazk9m9uXOKoP0Wsa4HoX9cIn6nCsfcAX4oYsiQ8 +8+bE41y53/SboBLo6M8mdrtOrf6n7hL1qC4ai/yLo2wnp3rdeRRlaeDJTIvdyxP2 +hkgkfn0m4qSq4ZlKxRFQxpihyL4E+Uxd1J9j8FMJJQIDAQABo4IBkDCCAYwwHwYD +VR0jBBgwFoAUpYdSik1CxAM0yCf0kab0qmhi9+cwHQYDVR0OBBYEFKWHUopNQsQD +NMgn9JGm9KpoYvfnMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE4MDcw +NzEyMTYxOFqBDzIwMjEwNzA2MTIxNjE4WjBABgNVHREEOTA3gRVsc3NzZXJ2aWNl +QG1mYS5nb3YuY26kHjAcMQwwCgYDVQQHEwNDSE4xDDAKBgNVBAgTA0NITjBABgNV +HRIEOTA3gRVsc3NzZXJ2aWNlQG1mYS5nb3YuY26kHjAcMQwwCgYDVQQHEwNDSE4x +DDAKBgNVBAgTA0NITjASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAy +oDCGLmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0NITi5j +cmwwNKAyoDCGLmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hO +X0NITi5jcmwwDQYJKoZIhvcNAQELBQADggIBADIRjzj5+hFnq6o0Lyfkap/2br66 +0QXCYEsvcFXLap92f6AQbrQEK46D4DRWCHIO15gk8qeVK1MwSSQUTbheZZSUZrm1 +oRb18N4zU9PQbF9h0VqZ1KAR/Gvgz6SVaNcAGb1qnCuF8agrD5hX+K4yBs26fCwP +FKvamQGWtQV2Cf9qeo6DHCgxO7F1LputEcsG27oDy1RNWNIpOLz4Mp7rgdCBFfOs +Gv1KxzcZ+kFHFm68H3rf0Qjt9PSE/3Xc3ZVrpbNRIhjoo42qI+TP3gI3DUWbFLqe +mffLeCPcTvYY7ARwCqO/zTiPaaE0AEY3rbj6RKHHhOh2ytE67hJYXRdVicNPAd0X +u7SjzGZ4IzhPKEFqVJRPA/Wc3O2nyxtDIDzt6OEVnl9mUgb3Rui8cw/Xd42E/0SN +qPd5nXxL8w5YVaIhbj39pCDhyPwRdtv357JABIdMFN6CHyRpbJ59oT0grKla/fbZ +OrLEOcqzT64evvTlEbvkBUXXBVgILTW9U87E0h5bcqkOZuIBzKAKx1GjOccXMmzG +o5tOIVKNxL4aatfXZCgqS9te4uzJmBg9AjPQnjHqWdio6qQhIcGd73L+n5JCfIm0 +6ijCZCh314MlIkpjKwtDpDerH0BEaRywV0sOoBKWR98lQtzengSxA7KXjWPvh6sG +gDkjybOAldtafn8u +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWjCCBUKgAwIBAgIKQ05DU0NBAAAABzANBgkqhkiG9w0BAQsFADCBoTELMAkG +A1UEBhMCQ04xGzAZBgNVBAoMEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECwwb +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRowGAYDVQQLDBFDaGluYSBQYXNz +cG9ydCBDQTEzMDEGA1UEAwwqQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5n +IENlcnRpZmljYXRlMB4XDTE4MDIwOTAzNTQ0NFoXDTMxMDYwOTAzNTQ0NFowgaEx +CzAJBgNVBAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNV +BAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEg +UGFzc3BvcnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AKpWShb7G/iqU2TqRr+ZeTYboFz4p5w+Mskp4SmHsYXlyrimej+QVOYq1JH+pns2 +tN9qaDORfbT5tQ4qTejk+K6lxGWYaX0IIXS4rzRs8PlwfikwSv9PZPq5LfrztW2e +WLKDjY9yrOWnsGl+nxKU1phpvWM5QgPf1odNbH9CJZLwP5Nyy81wp1q2oZp+G6CJ +0cPkRstZXojLBSmklusrnMEylvXd4xwg3eXZOhMukFw0OmVK2Nh5K0jfAnrnzwd7 +iXe/G0ilgaun6aKkxR9TXqoZD+09DsUZPrmJa4eAOnERZNFTjGljGUrKZDAAaqC0 +xp8C1AZEGYKQ3kw6logPBB5cu9xlJ8IByTZ/YQpmTIFtkYuerTiaU2KoKKzRTRJN +vA3YOobiPa5quy5czh0mTiLtL1Z7+QV22Lr0o5rXAtmQaiEPkdppd09mTrDJ5R7E +jOF1FrVAPehs40D44Aootb1aXqYU0g+HO0vCVFwj+PZotwoeY9DNU6LO5N6s5Qcx +eFrgSHMTlkNsoFnf5xf4pqUvDAhM+/RLgLA0EpcEWHKU3tXvxhL8+I4Xd4q1Waos +NSYSfTH6vtiJwIrd6g9ixifP7bClUQkeMBOyBHHLEnogVZig2596OznkxZDyCgSF +Ptfu1kmGPSAN8wqAc1rVdE1aQyUwqrreWEeIiuQ+e6uPAgMBAAGjggGQMIIBjDAf +BgNVHSMEGDAWgBTxe0/7J26eDqCqj3VZtBTBmvE2KTAdBgNVHQ4EFgQU8XtP+ydu +ng6gqo91WbQUwZrxNikwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgw +MjA5MDM1NDQ0WoEPMjAyMTAyMDkwMzU0NDRaMEAGA1UdEQQ5MDeBFWxzc3NlcnZp +Y2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NITjEMMAoGA1UECAwDQ0hOMEAG +A1UdEgQ5MDeBFWxzc3NlcnZpY2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDQ0hOMBIGA1UdEwEB/wQIMAYBAf8CAQAwdQYDVR0fBG4wbDA0 +oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fQ0hO +LmNybDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9D +SE5fQ0hOLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAboJXitFigp+pR+Hvy1HkfQR/ +/7JsFQPic3sy8+19CoRpgc8CocSRvbbQLx+Su9O/sOlwbdsFx1iAAzSe/hdy9Frh +DjCtPoR1furDcQYNhvi8h0VS9chupQSVF2FU7R+82Z0oTx8yegQl3IQdRYtfi4Xm +NDndrApBN+myx8ie/cdS2avkaA13bcY/x+NMBFKFLTISk8LMbtQuE7jATEqxcoaV +sSVwgVDE9GYDejFXi/51xGmizYcjl4cOUuNZ8GzI3u3yRoCNA1AO5PIBTTz9vB/9 +hiDRjlWk7Ywg++cJh5tXQw2DAQfZ8NT2S8urAGuosy4L8u4Qw9rbqqm8zJ5xsk8s +oRTNszn51j4uvCQZXxEmPUaC+NXgYmmS189YDEUpH7EPXAnNrbFkW1bPrS1boaps +d87cSUEeogaiznbDVEVdQBdX4Ppy7S0FfNr8xbwrPYQUNdPFCaRM8wMvAAMvHetF +yjKuGIr4e+1G6SGDlKRvn4FhhumpN1UQcxLQrGhsJ8iUcTqivDJ52bkFh1cF0VHm +UO7TKlHrbbPxBTjaExqhSre1MEPon9DmPfqgv62zLuGYLUqFyU0PS+RxLeJhoSQA +xFLZ+Sq71oUasVh2a369JlWtcvU5+eKohiGIZJUs2r6sm9heOpUq/szNKX88LaeC +ZhJ3XBarvE0EOYQnvgQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWjCCBUKgAwIBAgIKQ05DU0NBAAAACTANBgkqhkiG9w0BAQsFADCBoTELMAkG +A1UEBhMCQ04xGzAZBgNVBAoMEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECwwb +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRowGAYDVQQLDBFDaGluYSBQYXNz +cG9ydCBDQTEzMDEGA1UEAwwqQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5n +IENlcnRpZmljYXRlMB4XDTIxMDIwNTAxMzcxOFoXDTM0MDYwNTAxMzcxOFowgaEx +CzAJBgNVBAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNV +BAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEg +UGFzc3BvcnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ANYcKdULxZXg12IfadlvVcUiHNz3uHeWuDkn9g/itas0cKou1WNpgPp+z6jSDU3J +2DZfKCv7dRvSYk06EAufEhcmAjGM7iS0/pDmtCNqR3R+IugRCkpa/ILwG3SwDv5Q +sjbIDLUw9bCZgJsn2QJNTnxzD+WL9S2f07nLoFvyjVluBQ3dMP61qmTHpals9nJr +Xqt37qnWrDrB330dZHv65vFgJpVFYQjv6XcflTXPD17BMA8Zrn7TPk+GpkY7K/iI +CGQU/OUHsNOB58aBmVtWbVpSDaxMdq4YWLzh7q+DKnwOaHW20q1aY57zMyJic0Jb +wvEFZb4gLYCNiuf7Xh9ribvLCh5C4mFx7LfRN+2L/6sR7CNm8kFWHAUGecvZx5qj +eCeFA5diR/A7kT1lzzkkHms+5z+Vb99fGx6KTryQ0syflIM3BCWsnPmfBgPEiOyA +l/+xQd8hlYZEB5gF5Z8I+mJb4f2nBTM6PL4sL3kzYp299NDQqh5tNkykVpp5JtAw +l0237/UNsCNLvP3/VJRcx/XjHiMx39NqjTvorjj3Yxj39Pz/KnxK5hniios9vjad +o9M9Yuxhd/LH18/qKljtv5YGk+h3S6vIK9d/1M3CCM9u8gq7aTlnuVSxW/UTv43M +wGQXycBoIktKweIePy/qILPuA63hJvDPxHLB+k+7tGVTAgMBAAGjggGQMIIBjDAf +BgNVHSMEGDAWgBTFq4bYQNF3/4sYEyA6IBFwxdxshTAdBgNVHQ4EFgQUxauG2EDR +d/+LGBMgOiARcMXcbIUwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMjEw +MjA1MDEzNzE4WoEPMjAyNDAyMDUwMTM3MThaMEAGA1UdEQQ5MDeBFWxzc3NlcnZp +Y2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NITjEMMAoGA1UECAwDQ0hOMEAG +A1UdEgQ5MDeBFWxzc3NlcnZpY2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDQ0hOMBIGA1UdEwEB/wQIMAYBAf8CAQAwdQYDVR0fBG4wbDA0 +oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fQ0hO +LmNybDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9D +SE5fQ0hOLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAg8Uh14s82vewOYPolk/akVKD +yuYpLvt23C8/hO3pj3Hggr0qO3zMEk9jRGmm7RsrLWI/ZpMa872GmF/Ybii1nlUW +0GaqjMqjvkxDGoXenwYGWkoxpD1B056f1aMbCbn2bqGqZp+lXlfQf2+4szXoCUaO +68zHOQvLTLksPin/tW155dZlym6Uqi9KFfQGnhiMqJ2dIprmXBAH+009idCiDw1e +Q3pYSLww76mVqkjpzkXJRYEFN0hVeX/B0khPEKsoLWCrSVgkmffRJXm7hV3E9lq9 +NW9eOS2mhxrMXt2XZurtu/7O9tyNcM2Xz9wjCXCf6Yv3ohi2vxpVFDrDpn6CEgsr +2HM+FwIYl2Ri1UtTMfiDEEoUnW8NZbD9ibthpwfB1hNATf0anmF3ClkESTj4ojiA +rKJ9SyLOrz7U8d3+0LnR1WrUL942LEm3COIjWV3oS36L0oUwxdq+ltVmQixVuhit +RVOdktzBzkJDTaReDuLcwv/fiWGe94kkjDKdGFpB9BOuHhkpyeMdODmqbal4kf/4 +xbDHN35PY+OQcq4NM6xirvwNFQM7l1YN7wPkBQ27qfgcRdjuT203cSeeKIZj2q1V +48mjbbwExD7KcsKdyAeWxPtXbz4w/LySUcaR7V7AA8yfQWBnAy6MLWeaCRvHwNCe +mJtBo3iV8+f5Y6p9jR4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +xmM4cnoWAf4DN0XRkGxSuw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +xO0I3XwTfrKgZfleSd5JnQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ZH4Pza5DofRpgiNxJ5Msmxk5PnE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHZDCCBRygAwIBAgIBATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDB3MQswCQYDVQQGEwJOTzEw +MC4GA1UECgwnTWluaXN0cnkgb2YgSnVzdGljZSBhbmQgUHVibGljIFNlY3VyaXR5 +MSQwIgYDVQQLDBtOYXRpb25hbCBQb2xpY2UgRGlyZWN0b3JhdGUxEDAOBgNVBAMM +B0NTQ0FfTk8wHhcNMTcwNTA4MDgxNTQyWhcNMzIwODAyMDgxNTQyWjB3MQswCQYD +VQQGEwJOTzEwMC4GA1UECgwnTWluaXN0cnkgb2YgSnVzdGljZSBhbmQgUHVibGlj +IFNlY3VyaXR5MSQwIgYDVQQLDBtOYXRpb25hbCBQb2xpY2UgRGlyZWN0b3JhdGUx +EDAOBgNVBAMMB0NTQ0FfTk8wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDcBAVYq+U/NXKrwNEmrKM7FA92zAFrvW7z5WrqDX1GpiLz2vaTBmfN83nrl7Lk +S2kUp+s3WdnDmooWiRcByx0wBqqZGGU/XWfby8rhBE+UAwQ0n+WGIBcNlAQBcEVm +j5yBqMxHlNMuZF5KDGVnOXY7Ouz8RQ3UwenlwLc5EoNh3ozkSna5Ng9hTdGChbCe +5P3/RjtJI1iZQMOKkvKdBgRYkduOMQu/D1y/9yHX0juu/DNZsgMHU6n/ZRMGwYb1 +sqT2+sSG2sS7qqjTuLZ6YsLeK7cq4v0EH1/uUUY3MP6fKzHJcNKvKBD1tgjkr8ZF +O6W3vt2k/GGlJpgFCgjt2C8qOusFx1/6DizF/DUoYb4CCrpiIHPNJwlCu9q8bhiU +VeQOpK4Xhd/dk3Br7pIIICGDFAT70W0i5hsquA9o1ZINnfheSzs6CvKUzi6JGQdx +aoZ2Hzov5mHcPMw7TqYUwTWlum/jy4k7lzrcNZ4OfI9CsfMSABdAt1d8K4sotna3 +YZx7pnOuVIQk8LbVjpTVCx8wAVm99kWpE+B1yzk/wU4wx6RmOhx/36fKs2Om7bj7 +ohN1DUDLa5MEbGVYMClWk3+hJGo53/6yFTd2cdbcsAZg1i3jo2cYZEIwv0hd/f4m +xIUYqii7c6CV/8QKmGSQQKqTV5Y2SiFqup/vTndnOeivLwIDAQABo4IBmTCCAZUw +HQYDVR0OBBYEFB/DeD9tcyIdj2evUKVlAHiooUpwMCsGA1UdEAQkMCKADzIwMTcw +NTA4MDgxNTQyWoEPMjAyMjA1MDcwODE1NDJaMA4GA1UdDwEB/wQEAwIBBjA2BgNV +HRIELzAtpA8wDTELMAkGA1UEBwwCTk+BGnBraS5lRG9jdW1lbnRzQHBvbGl0aWV0 +Lm5vMDYGA1UdEQQvMC2kDzANMQswCQYDVQQHDAJOT4EacGtpLmVEb2N1bWVudHNA +cG9saXRpZXQubm8wFAYDVR0gBA0wCzAJBgdghEIBJAECMB8GA1UdIwQYMBaAFB/D +eD9tcyIdj2evUKVlAHiooUpwMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtk +ZG93bmxvYWQxLmljYW8uaW50L0NSTHMvTk9SLmNybDAwoC6gLIYqaHR0cHM6Ly9w +a2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9OT1IuY3JsMBIGA1UdEwEB/wQIMAYB +Af8CAQAwDQYHZ4EIAQEGAQQCBQAwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQME +AgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggIBADmzHWy2URjJ +gGnI+la+S06pAZF05yRfzrRf8WV/Icit3t6Mztx/b98SRbVAsQ1TQhFslCrpHl06 +29ExK/3Grq5EKhyOUAMSSsOp7Um9wNcYPs1tWvMl7z1JxCcJPddYHxZ0ZEuu4V9u +bwxQOb5PxCWEOLvTAA8QZm/EciPCUUER8BRaC5tVBszii0FCK0DRNmttk/WowhjL +p/kROI/45DkRwUx/5ElkMDOuH9BPIqN2cSDC+fCAdy6DWaOoY5bC7UBjPu8xkyQJ +i9/sxmkrBGQH8etG9/COpmsuG7Na8vE3nAfDJnwwRyhvSHgPrL5JD4yiRdJq13sk +3iHvbGM+oooUKKdQldGq5LzgO7sFDv4eifJZsBSTmIVdRksnjXIRBuoW7tzzVKzO +Lghm9iZub4u7QmR7DmDTLz35SR0HnFl0aLcEUJ6OE9DXX5nEHuxNSqwTe/FFFzeI +SK3mB68yRzvM4pwHAyKJJMRwl7Z1bBTyZQVvy8l2C/gwD4NvscnJZy6keQV8zVaK +V1foitwitLUPr5brigSWUOQKoD/gQl8rh52PuQc1FEgrgkHsfqCk4SWmb5cybJLl +hpUhfmeWDkOHmxHSHmxx09/B7dL8tp6yWiE9hPUCZSFL40SV0bnsSRfueyarSIj2 +83XScstaWsayeXCuLmj47vlZCbtIvmLx +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHeTCCBS2gAwIBAgIIDXbHZOBI1LMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGQMUQw +QgYDVQQDDDtHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENvdW50cnkgU2lnbmlu +ZyBDQSBlSWRlbnRpdHkgY2FyZDE7MDkGA1UECgwyR3JhbmQtRHVjaHkgb2YgTHV4 +ZW1ib3VyZyBNaW5pc3RyeSBvZiB0aGUgSW50ZXJpb3IxCzAJBgNVBAYTAkxVMB4X +DTE0MDYwMjExNDcwNFoXDTI4MDgwMjExNDcwNFowgZAxRDBCBgNVBAMMO0dyYW5k +LUR1Y2h5IG9mIEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBIGVJZGVudGl0 +eSBjYXJkMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlz +dHJ5IG9mIHRoZSBJbnRlcmlvcjELMAkGA1UEBhMCTFUwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC1K/jnaUD61H937aGG0OFJQ4QGipUVG6+/+KGewzRA +q2kzYqo72f8O8cwr/XWKizpSD1cRpX/J2goIAPf3gcX5N47pFx9W172AvmCQhe2K +D1+sWLc6FCTBnzhc3V76p7PgB478KdI3qgNsLhY/iiglv9NiVOFv6rn59+pDjate +B06broYprivKS96JEzN4K7b0htTMxaVTOEIZgrGT+YA1RYpwcseytj52Fna9hVvs +8lmBw5YyPWBpC72B7Lb7LX0NsjbJuahARRsS6+ZADRT7RRJCZNuwUzb3TpaFPh7/ +uAOPpIFi5j+erit3IqwODA3MX4f6UcoJIkZKpfEUQhsy5ZP4jew72sCtVsu9rlWY +1cv/3rMuI6gUJxk/A3lkAI0ccJ/IEKsOC4dCB8uP+AHrPOZaboKUFRtivua4RuxV +yOOMQ5rnwxNiwlfh56E+HD9e5AiZMroEGqvqVdOXcwWniR+y2ceyKgmOVH1G4VHj +n8BvNQfUE1XPtn6tFP1HznMQUjRtW6MQvrAHG4LWOLyb1xAWlIO/tIzgxelwr0o5 +SbyLW1J1lL1bBY/KMdrqnAlEGSD+NFsGP2ED97XvALnXlbdwUt/WS458RzvYwvfV +1W4lhwFi8UJrMLi0BQfBsOvCjlTWZCKEqCc6phRV4vcV3C4xqTH7Of8Bqqh1XKRP +2QIDAQABo4IBazCCAWcwHQYDVR0OBBYEFP3oaWKt/hPgv+upevWZQGDQwDwJMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU/ehpYq3+E+C/66l69ZlAYNDA +PAkwKwYDVR0QBCQwIoAPMjAxNDA2MDIxMTQ3MDRagQ8yMDE4MDYwMjExNDcwNFow +PAYDVR0gBDUwMzAxBgRVHSAAMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly9yZXBvc2l0 +b3J5LmluY2VydC5sdTA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vcmVwb3NpdG9y +eS5pbmNlcnQubHUvQ1NDQV9lSURfY2FyZC5jcmwwDgYDVR0PAQH/BAQDAgEGMCoG +A1UdEQQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwKgYDVR0S +BCMwIYEOY3NjYUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AQUAogMCASADggIBAGYTCov2S7zC2sfWaWgAEQgRXH3hF/fGLTjT/wNau5PE1oG5 +MHPrSsbhUNpykqiuwyms3zZRGDY1zete6G5sr30/dQyHjHGm7qH4PUlRnjWq9wOq +64dkn6tAExx+9/6QVSxQUjWIKxU5+00kOuVQvY7DKp1u3uN8BoOd+vgCnAx7SAay +B9yEdNSYgHz5yNgwB4mcIesRCl2x8OVMYbOfitB/OYOm0saeOwnUS7GlACoIA/Vz +/2cwzd4ZbReFXk/RmbueuyW7OLcY8UWEDfTOj8LpXshcTVNsIcdS0+Lj8IYA8LGN +YapSUq0iy2Lgh/Ni2JXxUE0mCUAFXDn1+Rfofcw2qp82EEjVGxANvAahDgHog+dt +qu7KpKGPBUSvEUo18/jA6dbEt3UKKaEjk7nK7gpQHL50EqoCHdKw11/gMGF/aMKc +mbyjAyuya4APSWrjgudoFSP5zXMUhJKdTtgoyJh+eJ38zd0qihcI+jK6p15Cuj4q +3aw7j1wl8D5J/nCdwo3M7M6Sn1JB9BLs+jmxBwMpikgGil/0pAkGqOBKC9yFQH3r +KgQo9vc0vEF+96bEt+sfuCOWiQdgYWU6tGw8qTpQktvnmZ+lbvG8KlazR515NvoA +PDzHA9d2DMimDRrzGU8/lBU3x2GGTvWDCaCnUlgedbn+3MUtj92tfZcrQg0N +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHeTCCBS2gAwIBAgIIHocCvky0f0YwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGQMUQw +QgYDVQQDDDtHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENvdW50cnkgU2lnbmlu +ZyBDQSBlSWRlbnRpdHkgY2FyZDE7MDkGA1UECgwyR3JhbmQtRHVjaHkgb2YgTHV4 +ZW1ib3VyZyBNaW5pc3RyeSBvZiB0aGUgSW50ZXJpb3IxCzAJBgNVBAYTAkxVMB4X +DTE4MDUyMjEyMjE1M1oXDTMyMDcyMjEyMjE1M1owgZAxRDBCBgNVBAMMO0dyYW5k +LUR1Y2h5IG9mIEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBIGVJZGVudGl0 +eSBjYXJkMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlz +dHJ5IG9mIHRoZSBJbnRlcmlvcjELMAkGA1UEBhMCTFUwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDKGgGo9DifrTeUlnmhT30aolbHo0oYdEj5/zihVz81 +/3iJTiWBdKiACSG1GAJCKdUKvnWN09KdcBkrqUA65sGvWLpnbWIcfItH+QNkCeHz +hHui/fuXBfF+y1hEpWNtQWuZ9PcLX1w3yeKOP0GFgcopGzUw3wfnnpx27EH47Ojx +SbWGzMel6O393uJYkxlFZZUVBVINFWulalwMs2QG9BsjymsipD/sFuKvYZcSvPRl +kDysA2kY0E+Xh8+9a/d6MR8Us7/HS7iB4cfc/XCZeuMN7aP1n8XP9P5Sxff5wOn6 +OwTiNvT3yizUaus+rGjfLYJpH6FNRKuPksB6To+iHwoEcY/PnJtH2hNotYv1N/Ba +tRLw4j77x36rgyawnmoQsm4js4Qymae9JXQz0rSLH7saZRs219hN6mrz4x7Ib4k5 +Vtjw+IPxm+Bpl/CCEe3Dwp3H5nEyvi7/FWuN2ur7VCdG/LGFNqK/pifswGSusT5A +AC7wW3j1KfBNtn6OkA1SxghpS1uBM71o5ZhtjE76EpPSd5LrCCpUZi3LpEI0yGmb +X91T542a1ml1xsWm1OYs7U2I4sRDgocuUd8yOG2SwAmBhHGz6l/xfQ2zQoyl0JHc +D2K1tA4uMfxqeJq6FU8Lgzn0rkV/zeWEcp9z68M+t57tcDyIPutPdNCwFQQH08he +7wIDAQABo4IBazCCAWcwHQYDVR0OBBYEFK1Ic/ftrC7ItFl+EuJhcE0/f4PIMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUrUhz9+2sLsi0WX4S4mFwTT9/ +g8gwKwYDVR0QBCQwIoAPMjAxODA1MjIxMjIxNTNagQ8yMDIyMDUyMjEyMjE1M1ow +PAYDVR0gBDUwMzAxBgRVHSAAMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly9yZXBvc2l0 +b3J5LmluY2VydC5sdTA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vcmVwb3NpdG9y +eS5pbmNlcnQubHUvQ1NDQV9lSURfY2FyZC5jcmwwDgYDVR0PAQH/BAQDAgEGMCoG +A1UdEQQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwKgYDVR0S +BCMwIYEOY3NjYUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AQUAogMCASADggIBAIg+7XRRqipuT6vyWGSbIGbxOAM0rVQWAZzOcUjcTxGgsMPV +aIwpAr0BlS6ViHx2SE03fsfDDFvEgQ5LeO9eo7CJPMzMk6u48TCYLJY9czhBw2dO +a5nqyE3jPhZFSUzQJHFHgK4XqY8Ty+fSTkt15Mot13jM5OSO5eGtDgQ6uBqGQbT0 +q4/fCAWa3UkenOHzMMITXYGZvP++v5H7Oaz82sDvFG9ssl+i3Hq60OgjqJUgBMuf +08LyaOxPXEVjlUsC9eoZDaBNtIZ5kQg6zmUy/qNpBcU91zrWboF5KT1VQVZ5NnA3 +XVBYeW/lfwc+YbwelhPgJ5LAYkqJLZJEgcS3fVJVtk8UGvi99Go9m5/OFw8sF1Hd +i0rQlskE8yEDeJTfveHtwFIGd6LLXwdAfpRjoOozNgDa3v9ek7j1Tc7KuHCHkFgg +HhBBT50zsf9aOu7yJCXBWyc7O7b5h1SrLZg018ZJ2R0MHr15LKwuqJbfHohCNUjK +xEJ7Ne/AieRRw4gMGbAbfO4bdS/N9zrdZGzZ28umybKIoSDkpZ0HST76KDTGBS2T +HaYT6KNvIwWHOGL1s/8TDx5cgQjedqCpGfeAiZ1ka18Jh4q5b8pO1P7yZf/fjqos +Fgp1t03XDyR7wiepJoutq5XYzamfKjXdU4WaeiP+zZ+WLuguwdgOD9vzdIk4 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHejCCBWKgAwIBAgICFvIwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTIwMDUw +NTAxMDQzMloXDTM2MDUwNTAwNDcwMlowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA5Px4u6BkmBlCq4PyXHDaV9KDg1siTg9OImmoqdt4CPLl +3llcuw5Dp0Yi0gT9FUmBzPfdkR7U4q8cC4L70e/GyBK41AQU64bKkBDj2vXIldnO +yxQ3LcNTvCOPany8ocx0y7iZFA/DqOh18tgyfhQEop/9q0mJMukDAfT1Zc9Enjg/ +ZsneNz9aUL+mkDUS4lNk1pBGbKuWYn83xGVXpaiUa5+k2weLCswKRBpkbES3riJN +RvHwKWLIEp5mc17gcin1gL9/C5eZpR9JcKcgNHmdJCPGT+ntd3XXLRQ3XzG7I4Gu +Kcagbw3lB66nN4K1VnKWHmAUqJhQI2wJ5xaMh6l0E0ioHPnGl1l+pj8MpOV7L76W +q02kzDuXxiVbo/EhU/dJsppYOkqSrXYbKyyLAQLyZkvsn8kvnUkqARK0APRXMKBN +woPKMqO/I8q8rYSzUCu0uzzRL9nTu3DKPqis2B9d1Sz8uUf3s6yKrufhawH3XXbA +9qwnu79BmDkuLV3U12kThb8Z/Vo+07P3WgGiztoDSaC6tLvu5d9LlvoFU/Y61T4u +upmF80Uz0WcKzhjHu8tcq0Lp/UXj1szerwqrPZ0ZbKMOw8brJtiPUsX6Mcv+QF4i +r+RWqryE69NJZbiqH+/nF7Uj7wekU10uL8V2CyKkErRohNZwLKRzJorVlGkh6GkC +AwEAAaOCAjIwggIuMBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMjAwNTA1MDA0NzM4WoEPMjAyNDA1MDUwMDQ3MzhaMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHwYDVR0jBBgwFoAUNhfB5/VnlXEu +N3VwjlWDMYbpOA4wHQYDVR0OBBYEFDYXwef1Z5VxLjd1cI5VgzGG6TgOMA0GCSqG +SIb3DQEBCwUAA4ICAQAcLnxtwc8uN/HwWfbb3jOBEPM5XouTWK4qOAnWkwuuB4Vs +L/PXo7nCZY00HQTAxMAxY2zmPjhvqKaCD98Bc8ttdjTno9Nc4Voa4+roaSv0lErP +2wMvpkXbLXGuqZMF4ueOsKqW6DcYaFsOPd3Zry5wIEwj2zQDAfnq73DkydNL0FwZ +vOyBERoq+1D9KCnFzd4h5ewDu/4Nu01SCx+k+0xHe7BmH2+TfhzB/QnW7qJuUG9j +39tid3FuZwYwmbcXj8WBG+2FIBG3uTZa9ukwNG47+fz2jitv6ecQkFy1pIBUBKwi +g+3cXAEkRfheudpcFq/oa69xt3PzL8eofYLmtj2gWkvKD/THsKzh2SUDuX4qKhFZ +F3LlBhkAwax03MPwwvDkUK9nlaeqQMtZ33LV/S3BvLMQk8q4JaVX+Zh8H8JLDcmR +pNKnCrs13VZ6ioHtHEcy3Ny6ZnZZEEoKFOt6D6cmA5KoepJtimMpwLaptyWOLF9j +43JnGLpQIX1j1+BsiWbSJ4vpc0LEhgLxuYMzDjCg91S6ytzX2NKPIkQQyy1eP6h6 +v5TYd3byevXfIy+Qv+inZlENh5IalqXGObUHqYs92u54gd4vTSM+Cd0ygjI9d+yH +34J3i6iysPYhHRZe4qgY1CfnXYKDI+ZbqUMXYA+bnxnEplieSMXYurPh8Uc1ew== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHgjCCBeqgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBwzEVMBMGA1UEAxMMQUMg +UGFzYXBvcnRlMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UE +CBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBk +ZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMREwDwYDVQQLEwhTVVNDRVJURTEl +MCMGCSqGSIb3DQEJARYWYWNwYXNzQHN1c2NlcnRlLmdvYi52ZTAeFw0wNzAzMDIx +MzM4NTVaFw0yMjAyMjYyMzU5NTlaMIHDMRUwEwYDVQQDEwxBQyBQYXNhcG9ydGUx +CzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0 +byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRpZmlj +YWNpb24gRWxlY3Ryb25pY2ExETAPBgNVBAsTCFNVU0NFUlRFMSUwIwYJKoZIhvcN +AQkBFhZhY3Bhc3NAc3VzY2VydGUuZ29iLnZlMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAiKwkFCDz96D4PiIvz0v4QOuvDCekYPWLzvDgO9K6ARfxV1tf +b596C5cjGIUAvk95MYl9baqCQOSMCPlQ0rWQ628WmU+A2PT8ddISjQzuJ211p+y3 +HrP4qj4uYu+ILtTMK6lgqzbZVHnDAWo32GqDiLiN9sC+sIJ55sVZ3i6mW1qFpSN2 +5zaq/9rh4FeXp7AqQ4SkXd7wVsdhDZCOD16gA39lihF/bAFsWX6VODoeW2ONj2fo +3YFS+xXuUzrAiuJX/QpWChvHW66DwBNlHbPYKCCyZA+0s9TcbxSOmPnsQOGNFNRB +/ufYZfO8sqdC996rEW1/to+/va8PcPWkml+hES5xdgMbmOYPjVYk2SNc6hcApl1Y +kFMvdYDMYJV6l0+JGRYhmutI/cUkzxBY3pc6QI1kQUzvJY+19Vq+SaVAnC20QJBL +M1+NLtWk2jH36zGPKFiuxabcw4mr98jjRqYXd5WLPgR1cuHeZOPQtXB1UvpU6yTf +EJyxhC04+E68VgalAgMBAAGjggJ9MIICeTASBgNVHRMBAf8ECDAGAQH/AgEBMDcG +A1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAw +NDAzNi0wMB0GA1UdDgQWBBT41FXV45ArV3dHaO5iWK7/nonAFjCB8AYDVR0jBIHo +MIHlgBT41FXV45ArV3dHaO5iWK7/nonAFqGByaSBxjCBwzEVMBMGA1UEAxMMQUMg +UGFzYXBvcnRlMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UE +CBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBk +ZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMREwDwYDVQQLEwhTVVNDRVJURTEl +MCMGCSqGSIb3DQEJARYWYWNwYXNzQHN1c2NlcnRlLmdvYi52ZYIBATAOBgNVHQ8B +Af8EBAMCAQYwNwYDVR0RBDAwLoIPc3VzY2VydGUuZ29iLnZloBsGBWCGXgICoBIM +EFJJRi1HLTIwMDA0MDM2LTAwVAYDVR0fBE0wSzAkoCKgIIYeaHR0cDovL3d3dy5z +dXNjZXJ0ZS5nb2IudmUvbGNyMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2NlcnRl +LmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3Nw +LnN1c2NlcnRlLmdvYi52ZTBABgNVHSAEOTA3MDUGBWCGXgECMCwwKgYIKwYBBQUH +AgEWHmh0dHA6Ly93d3cuc3VzY2VydGUuZ29iLnZlL2RwYzANBgkqhkiG9w0BAQsF +AAOCAYEAFt7jd/um1JlMHysfQOJ/fE3RVCaN2krBQSJk0GePD+rdlI3mZcn5PMGb +vKLbzNb5nGTIsv2a8L4YnpXBljjssBwbCDcuksW617NRD1OeR7vz6xDJNDLaC7s0 +Sg2GcbcU8SUai6ms+kWUuXYQdoLI+mJzgAC/tptHVu+pdTiEQE6Uv1klU1hzytZI +5oehDiTRreFRxeL1IOeuyDjRi/qPvSawDPNzRGiKSksIiYSGQ1Do19GUmENUpMj0 +qH/JpBZQieHeHLHYjoTpKwys5HP41v8NqB3A4ps3p3Mmb+QpzJWFEL5x0xG+DaqX +NrZl2jMYhQeV29DcbW7tVaqNEyCYMOQMrHHMzAWbgkwCXDhlNE7cU2u04j6j9uu4 +nNdAzzUaFdvYkCNrK6jaPF8fUfKw7FrwZWPYePKNtEpFhf/5TPSGJOBns31M5c8n +MLtu6cVsEYRKmmx6HVW8HU8hA/jQnaGZCea8hjsLwdFQ/Ivcx3n7jIXvSM6JToVT +u1fYn0fn +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHmjCCBU6gAwIBAgIIPUAemMq7rdowQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgMFAKIDAgFAMIGQMSIw +IAYDVQQDDBlJdGFsaWFuIENvdW50cnkgU2lnbmVyIENBMT4wPAYDVQQLDDVOYXRp +b25hbCBFbGVjdHJvbmljIENlbnRlciBvZiBJdGFsaWFuIE5hdGlvbmFsIFBvbGlj +ZTEdMBsGA1UECgwUTWluaXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNVBAYTAklUMB4X +DTIwMDQyOTA5MzA0M1oXDTM1MDcyNTA5MzA0M1owgZAxIjAgBgNVBAMMGUl0YWxp +YW4gQ291bnRyeSBTaWduZXIgQ0ExPjA8BgNVBAsMNU5hdGlvbmFsIEVsZWN0cm9u +aWMgQ2VudGVyIG9mIEl0YWxpYW4gTmF0aW9uYWwgUG9saWNlMR0wGwYDVQQKDBRN +aW5pc3RyeSBvZiBJbnRlcmlvcjELMAkGA1UEBhMCSVQwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCtJJ2wrH5rysNnPvZAM5PZhkYTeD8pUGFiDLM0BGoe +nnUoz9Gv/TZHvWvRupbGFsdwpcE1r5v3Oeni2bZ2y2c8mUNZT8LITMSqjb8zvjhW +WOaSRjEZHc/WDZefcUU1mYOqa+C17uk+b1aBDFGFK2outUImXUXI6D3CgWC3ouCY +qTeNtfuDslO8GUHLXjtMCyppEmKpFWz75rrl1gRSaIA9OgZi+OBFBnFFmPywbuoK +dMPoVjNE6nDAQXPn2l5kzGsq/97QFkcFIowYYJ6x7HBA2Pa/cQdY61uGp/ueMhIo +MYXKjkKO3QrJptX6RqX3vteKMqzd+3I9S+Wp8aqkdnSQZCYt9lSODN78AOc2f3sV +iEonb2HUTL9ZrDZWG7UdKf/Dv5Co/rjQmied1fZw7/5XObH9QBk2yubFuYSK+G+C +AhkOZfxH/KKh9s+VGON3VNlc6MaTHGz5nfI4gg/8fFCfUC6H+U0zQthTibJk9UDF +rb5v3b6WUZlPO00LXHy3sQDyBYvo2MZcK1kLKfWCR4NNrY7fb+5tTJeRCoQyuVcj +r4F87hhgr3MyrzfH3wz6aqExL2o4XNy2aC7GzIT4SlqtmfOvX8h2sbJj6WggCpXg +odA5q8tpbL2ypnpvSaHHdTOLkHywc6qHd4maEKGzVzbRCAnoKpgGM1VU7M5kMZAw +2wIDAQABo4IBjDCCAYgwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBTR +GlBeFa3qWmF3nKSiqZHsOUnR+TBSBgNVHRIESzBJgRNzcG9jLWl0YUBpbnRlcm5v +Lml0pBAwDjEMMAoGA1UEBwwDSVRBhiBodHRwczovL2NzY2EtaXRhLmludGVybm8u +Z292Lml0LzBSBgNVHREESzBJgRNzcG9jLWl0YUBpbnRlcm5vLml0pBAwDjEMMAoG +A1UEBwwDSVRBhiBodHRwczovL2NzY2EtaXRhLmludGVybm8uZ292Lml0LzBNBgNV +HR8ERjBEMEKgQKA+hjxodHRwczovL2NzY2EtaXRhLmludGVybm8uZ292Lml0L2Nl +cnRpZmljYXRpQ1NDQS9DUkxfQ1NDQS5jcmwwHQYDVR0OBBYEFNEaUF4VrepaYXec +pKKpkew5SdH5MCsGA1UdEAQkMCKADzIwMjAwNDI5MDkzMDQzWoEPMjAyNDA0Mjgw +OTMwNDNaMA4GA1UdDwEB/wQEAwIBBjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFl +AwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUADggIBACU7 +Opmhsik7lW7GqMmCUTzBYLxRTNRYNeswoc8mLwj5G+evqhmJKbx066LF/D9gO0D5 +6G61ant4VNw10SXH+zj3iydUwwpkPVMLEXqyXd+I52feR5uO8wtnd/Ao6Hk2cH3G +tn8sGCiSs6Vru2DdhC8y23TLsxazWmIoARcQLnyX8BhoMbHcrXp5GsPQWEkY/iTm +nqmdaXRzUBOiZ8byIOl5IoMk8oVLF9zLe8fuAsd85yRwJ9Xy8PjgBGjOdwKNJ5Ul +IaIVZ8MH0unJT0qkxAc4i/rvZCwDBg4f6K54c81VY/3Nf2gzIuSS3Tn6Eb/U6tDl +tYcqKv/PjRHnuQoQT6BJHTH18I1FFRccZiXDWDmwI7AmEz2Gbht/yTzXHWcHXzQz +suL30NhTBaMPiCGdY8JstIZyEqoYYcEV7Pucn/WJRHBBBdo0RQfPK1CfYIvyCaE6 +ZlRhWq3q5LIqO0/NRdQRPabEicixNjBh5BXksApczW4h36rxOleYfDSahbGjqHiZ +avqiNUtXTRAoTjNnTwHFHwoTOsUzlr5wOE3ToO7O0LMxsb1/PzKnAsNGjZdtVzSJ +/mUWSIZ+3Mh6k6GWCh3hqOwV+TslyKekHv/plBhWrxCb/V0TWhY7E7kuX1ABftS/ +QdrMIF38OkJilEBlMzEYU9li2vjJ4hl12nrNjJQX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAJwwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNTEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMTYwODA3MjEwMDAwWhcNMjYxMTA3MjE1OTU5WjBwMQowCAYDVQQFEwE1 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfQ6mI/WEnR+qQi +B14+UXf6+1IhZL1SZozSruHg5L4a0RdCkOioc/RxzB0pb8KxQU5o0+r1omRsoP9v +19dEKyBn00ajDrhE2avPWTXnF0GResvqPXr4KaDzAwXLTisrD/+9uCg/SbKGgx06 +fLwqrNzoCyS7B7JurIZBwHVaps8P1hAKPQInEtQxUo8MP57aGNaW+QU4MiLGNmYZ +lusoNP2vwESjTaLyewQ54wLWiLzGHbHApMLMjxut+BBMavLs6ovpm1McRoLHbqjo +FOJMsPh80QYJaQVy2EdZRTpe+BbzRB7/LiCoRwBB3NPi9JWzBUNDSRe2Tle+JWzF +MhaaH0RAqguegjH6Te0fuBTkEIcgdEjKdQrNKJe+5BEtK4TgElqA9D19SzXFaPZa +bJCy2doDpjW/XfOxyMOxEfNyKULapbXrumIIVj8KAv3Aujqbu/hY74h+KKaQ7Kx+ +w8F6h1PgXsyTjOEeQlbfSR86L6OTnb4Phork32wGFjHCUqi36PbqoQlrCQ7acyQv +bNLzcA+qx9txRhEwWBFdHAVSJEyUasb/t2TaX1tdzPNovUfPNbhY2ZmD+6dqdtbq +m9bd+w5ZW39qognr8gz6/oAYz/tv5apMnBt5h4lcNgrRe+3VAxhLNEgWWIWtuFbr +gmKZcaQC6czmAvP6gxdOYEvFfWexAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDE2MDgwNzIxMDAwMFqBDzIwMjEwODA3MjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFGQ6dlrfVzGTRWbOWFUmmBWWO/7cMB8GA1UdIwQYMBaAFGQ6dlrf +VzGTRWbOWFUmmBWWO/7cMBIGA1UdEwEB/wQIMAYBAf8CAQEwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEAdLJ4tA5WM3vlOFMpF0xYBk8oRqNSCXFk +TGzWk395VPvXW+bpXnE7wE167X08ysGnX8iFAHqwJnDCb5WnrX2g67MoYWJRYks+ +zLFovKwgLOgtvuJk7nxK1D5s3SACC2tc6UbdtXTPj7Kuh11CesohNvO0WhKPwKAf +30qa5QHsDPqaa1ubCyhsvLMccKY9LAkn7TAMvP2/7KA6nSxoatik79w0x0aFj8yD +wwa/k/FJZRyoRZ1z0MVluLQElci3wBefwdM+Pu82jB1RWc9lUWSm5vwBJvvuJhkA +BKv323gLhswYwaJwjwTPlnTKklTq72Gt3GW9L+NEVuZRZJ2CokQsNNoyOltqo8mD +aAmFJIzXVgcjr1Px2KrajImwa9nQEhst/8V57Mn6Zkkm8B0gpgAWgD9PiiWbqGof +41d3uipofVIm1+ZjZKdd3znSAXrBbUMRxwNRX3cwfa7kAVMIXbmfVwiV+xGOkOkG +BZtKs+tl+W9DTdZ8DzMJg2xgSTrQm/7e6Sw4MZjcEo4S1jP5A9WjWrEfZBwOgqZZ +VZ5D8PgBqmxMvv0a1aAFn4h0D5b3Cwbj1CU8yVNJQaeGei20dTwWTWk93VgtuLul +6/kvA16NFVILGyNtziUomY5cUmDP/XVRThLAjJJywJ3Ek5JfDtDCMUOeqgYyGDuM +97szl84xDsM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAN8wDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNzEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjEwNzIwMjEwMDAwWhcNMzExMDIwMjA1OTU5WjBwMQowCAYDVQQFEwE3 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKDyLEOr3wuc6YrA +hadiiDqoXjjTObKKvtJpymfZBfSFWInFLIw1hyK6WjdWecGvJDRzF9llAK6FzJXD +Lgb8hYkM4COgbgyGtnVyezw1Z/HcCdpnz5IS6LhsXGn2uqDnvo0+AXQI+0joYl1X +vwMEthJyOAIRZhCkc6Oj/byufG8HLh7IrHkFLm2JgnKUBMR4Ne7/6J9P8JyEhLqA +puE8dJWSSNu5YzepNBPdgNo9c4FdIeGyKC8yFtbwJtYSfYubhRxhRC9dGghjT8Ev +fQGH2gEcZfpv06m0yc7lMgat0EZQZE4p1XoD8PLIhR5omS5yAEim1ORZu5vrb/TT +S4fNt84EctlB7DbCWmltsVWnUdAgqtgHJrCvz33a0a7eabIGncLO1Yj2EJZZDEbL +dvuReSisO7RwCXQPB1doXdqCbeBji/iai8K48KZ8XvR34Xgd1GukrbvhxgQ3mnvx +G9oBgRc8cWWr6L7VZyNyyFCvdhzrdONG4Taeoa6rMFQ8fGeLgPmBXjLBigmfKIfd +tFIlCTVxbK3ULKHK7J4o7v+gTEvMFplJUvbc+wpDIeL88NYX/OekgNj6N6MmPdcA +Q0IRb/8PK3tIhXtvMx+ljXxYrcjsbF2P4UNI785phf54WHwMiI03sDaKJQ+2s5tk +mVKt8D/bm3ZXzznavOxmwfZVAFVxAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDIxMDcyMDIxMDAwMFqBDzIwMjYwNzIwMjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFEH1vvhYbNcdDNjit0bSKnzgY8Q6MB8GA1UdIwQYMBaAFEH1vvhY +bNcdDNjit0bSKnzgY8Q6MBIGA1UdEwEB/wQIMAYBAf8CAQEwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEANUjBsxCDc1cq+135zgkywx7O7FbU904u +0gWaJ0fxX2j3SLVyczNS+fd9qLRKG8tR1HpRzIX8VQAX5ZFbb37PFGe+LVNUIHnh +bGEKCirNcfy5T2JfAk45aJCbX5trCnQVkMdXbUI08odZk12zvX4MqHeV/6a2wdUA +Xu11MTFFav5XiYTav02csnGAttpfIev3Bmd07SPQnBMEjQdT3vq4KkkSJHricTTS +b/AckxkZUWkIp8JjdsHtpXmoJFAW96evOlYHu6arFVD0dQL8XCfDBtg4GOTyLnGl +y/EU24NdAF7HC1OnCaWgetFu+coqb4SiSIIK73xkV9Wo0ceg9RVQjp+pEsKDad1n +qkKvpzuGdFNUrIaN4fSLw6QcBlNcPYlAD409ibCS2w5+miRztMplXZG9o4Pkmg2I +dqoYHT7JSX8Pf+l2XTVWUym4qv6wxwbO2Zfds13YF1aWhsNH0d5TjQDqoqixNbuY +jfnJy+zsYPezsSn5+terNPpUYOcUFLOzpodt8HNM7/bNe0la9+P6UwI5zalNH/DH +ujqyNuZxl+8Wntcu6gUmSfmv/ZFCadY+6Yi1tGBLVgk2AsAc56DftbBaENXTlE/x +xgFh0O0pt3SA9kpwE2LRYkHY8CdUh8Bibkgy6HLGaP1K71EIc1JAZaRx6Wa1LBHQ +20xGdFec40o= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH7DCCBdSgAwIBAgICMRswDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTEzMTEx +ODAwMDE1NVoXDTI5MTExNzIzNTYwNlowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAw+QzaMU+DpemI4CpHnpCF0pnIKI/M9JenO9UBKMIYim9 +LOPnx/1mZOqvENoGudAWfKzKqdBc4Z00NHObKZw1HPATYatKFzoHAdfEWsoURk3w +ps4RHNjwHygwtPRMyHVtP5FwlKM6jILt/qgpS3pzYNMieLo7FIC1TpcSTEdtwVGR +/bAsL/Ts8mjQfMX731L6s3/BJgOR0Ng1GvvETjOPQ9KfIWynvWqCHmQ0BZHDysHM +bafMSl8V34A1nqsmtCkYFXr8ZZTUmzey4dwqgSIO1gQR2lGCssBVFktz1tjLv4o0 +VKgf8X0MJL6TASakK72fe9aM3Ghia+6pEf3mmMBvartA4Y44CoOuK2/RqV9fjJoB +7BiDCSupcNDY54xlpIrGBEyD2Veyh5JwUB3ahGvN4X4QfweQKS/bwJbGcD1Q8b41 +4fU9H+LrRe235XH63rLMONmCidk0Hpi37T7NecFhMQwLlxvwWqJhej5qZSD9z+g7 +L1NN5n8vxn3oGSOuu3ylKNmIekdz0aOU3eSorzFd1h49aT59R4z7e3lPfO6ChLiE +D36BtBbtYORFtPV7vTjG7WjhbUE/e/ZQwfKsBqOzKv/vUey+0e2x4ljI023IHkeh +ut7Ylq2tctORrDjyEsQJR+dbqdqnp/u4dNVS7gi9Rn8+NygCA8JyP1B16gKp8IkC +AwEAAaOCAqQwggKgMBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMTMxMTE3MjM1NjA1WoEPMjAxNzExMTcyMzU2MDVaMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHQYDVR0OBBYEFEmxQpvzh8zKmYCi +RYMRV6NfRQWYMIGQBgNVHSMEgYgwgYWAFEmxQpvzh8zKmYCiRYMRV6NfRQWYoWmk +ZzBlMQswCQYDVQQGEwJBVTEMMAoGA1UECgwDR09WMQ0wCwYDVQQLDARERkFUMQww +CgYDVQQLDANQVEIxKzApBgNVBAMMIlBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBB +dXRob3JpdHmCAjEbMA0GCSqGSIb3DQEBCwUAA4ICAQBIP1/iSU3r2QvdEyxBsMm0 +Dre9PGH6qGdHraiznhyQBrcKGGZIzhxZhuqq3lBkW3Qult5igbYB6CxZjlr0A+KV +Gdfym4oo137HGrUwqDOJSpSBPt1r3A2x2U3xJljQgUPJwXzk3ScdHg1116Xbn6mR +f4IcTxxdw6V5tjcOnQW69cqBQQvOioUQWstVe+PnfBwO7bVdll/WMY0UGkqFoMT6 +5KYzUDsOdFfYe+4z1qe8IAW9rBaouAVnzN6QhPu0gceFqjlrcyN83+ITNxu052Xh +Y4LisUJK7ZIzQgCM4aqKjgpmm5SUQ9QDP7f2/Afpf0privYsfto9wdDXXthGvShF +U3FEcoaPLYr+w0ZtIfuzLwqrZkTcIdSdAvS6DSAqxhRsdy9ovvqGxzfFnoKoJX3p +/fmCERPh07u7IIt8lBLWR1a8nkodMcWu4Lrc5++xWTsYXRur/ol7ysLLcpFF8uTN +BY2dnWwj5/8EzQ9a9Iqxbkrfa9MD6gmpPjITfp+0Si6grlRBy0lOZ5Gn48i7SEtO +70PHpdWq+yyFt92ZNxgDKIOn/eU54vyta9dsphKnJ7va4JUkaaY25j3nKHCF9av2 +PLJ2EB3eZE+eRKiRkT7ZKgZpNckljN9/xLZ13WTdPVxZFvoMqdcxuNFT+6dFsQvF +IbLgPsoTkLmE+DJr4MV17Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH+zCCBeOgAwIBAgICE4kwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTE3MDYw +MTAyMDQ0OFoXDTMyMDYwMTAxNDkwMlowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAzgdjHihPOoqH19h/Ml5NNJPN5JWDNBwzjwLUcKNYoAGg +hPXo9CPyQP2L/q/LlxZkCTS3pYOI/BLc70rw/Kl3uLwQmFAttHoPNWf5kwW+HWNg +v8mAt55QjOD6UmD0qq6F/PPzYax8A1VGX2fmgtU5iMuHKAsT+3iVssrcAkeh8D/i +zpaYENY6v17VdIR+hQ8rXy9WVziaZfalRN0cbmE4LrTavD24ZoPW78AzFU3SXlr1 +RxjzR6GxZ0i26TmmaMN1poI7et8ARByVNqIgSmwveO1t2fZ1hvymQYeeJSLrvYvN +EroWtmaFsaPWpexTzn8G0s9lgOrwp++qBCDDd0tcskLPpj08aw2ncYVh4qu/Q4cI +3xpxqWsdFtLdHo4di4VRDZ97OEM11IIned4omDLEFsWwLYv7LfWEv2sSREsm1uL8 +/mbL/4bM9dKV8+txxfdquT73eJdRJIOIeSNcxlFLoiV2FKmwYXcDSK2rtoLqIxFm +qfm1UFZOOAHvNIIhtsOvIETSnUbnarzhwOnowC9kqjjx1eCUzpu9HTcq2l/Istna +7vhuhKR3HKvJcKEVaQtWF3qD2XQcrFoYl3GV+F7MlJLNqfqZPrn33+v+pva54gNJ +trZQuFl5IcvX/bNk4MaWlG0S4IrBc4S9K3YZPUitEgPneikYkC9S0/x4Zg2kiucC +AwEAAaOCArMwggKvMBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwDQYHZ4EIAQEGAQQCBQAw +DgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTcwNjAxMDE0OTAwWoEPMjAy +MDA2MDEwMTQ5MDBaMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHQYDVR0O +BBYEFKsCMFU8A4Phy1zMwxDB8sHJlpPGMIGQBgNVHSMEgYgwgYWAFKsCMFU8A4Ph +y1zMwxDB8sHJlpPGoWmkZzBlMQswCQYDVQQGEwJBVTEMMAoGA1UECgwDR09WMQ0w +CwYDVQQLDARERkFUMQwwCgYDVQQLDANBUE8xKzApBgNVBAMMIlBhc3Nwb3J0IENv +dW50cnkgU2lnbmluZyBBdXRob3JpdHmCAhOJMA0GCSqGSIb3DQEBCwUAA4ICAQAK +Ji00lnXa+JU7A51uVMreKfeUUi+vSvW8EflfwGK+YiUt7h1W3Nysk1ZHt1tSyZkZ +uDW1lAyMQzlsWb1iYynrz2s/2AoxGn6k57jTV08KAjL1Q7hLQYvysTeYqHsCy0qY +q5Rgfb9dcZfPJHe1tWFy5DpXLHNQFxTMyZwzrj4oEfqRT9cukMo1rbl2a+nKlt30 +lyGYM2P8HygL9/U67jLURWbreuCj68qH/2/CKH5xu6bsYUQPqXgKwA4BB3wV5gha +0f1mShVNVXj3GKXBRK1PEQPN8xkdhwUUYQFa+aG9E0EtoO4D8qKFWgW8eGXs0FPO +3uC13YocGx9k5SmH/oHyO8aOcx4GvQMyMUaSZOSCF/SYlN6oXRIt+jL0pxZsu+te +nmPmwoFIyy6SZijXRzgyNR3TkFfUlpB4CclrwkT6J3lB3AV5PpHUnTVFq/zZoUy1 +3WPTeFunjYGm9y0Ijes6tVygtEgupnTsXfn3zEMIcssB0xitb6dm1AOiHpFbQqty +2UKHFU7axHR1xIr3w8PKtnltG9tOteuH64sqIIGadr8qDguONgPy+hkVRAZTaTW4 +nURCluZlDa7tT4ty7iR/9iYeiMnta8RRUfq4jXzCQR9lOfHoi+kps9CPT64YFveU +mTcR/fbgCx0+sbBjhBHIZoBAbcaCuBO56TXYgXsmyw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIMDCCBeSgAwIBAgIINFd6dvsnc6wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGBMQsw +CQYDVQQGEwJMVTE7MDkGA1UECgwyR3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBN +aW5pc3RyeSBGb3JlaWduIEFmZmFpcnMxNTAzBgNVBAMMLEdyYW5kLUR1Y2h5IG9m +IEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBMB4XDTE0MTExMjEzMzAwN1oX +DTI5MDExMjEzMzAwN1owgYExCzAJBgNVBAYTAkxVMTswOQYDVQQKDDJHcmFuZC1E +dWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlzdHJ5IEZvcmVpZ24gQWZmYWlyczE1MDMG +A1UEAwwsR3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBDb3VudHJ5IFNpZ25pbmcg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCfWtPMjYzqlFYmnKu2 +LkPKB1ys/fqn509sbPckH+UhqgmSeHFPq8ebrx8P4jrR7xiOH1oGblzY3xkCDgur +a3UR+ivjZ45NWCcn/C/u3F52Dn93z9TVaeu9PozfoJtQnXISj8i8BJRkV2747ImE +D4disID5Bj+PQiDTj9wrQJagxAoEiBu1Abzq/hI51Xy/06gDakUTWG55VetjIP22 +y4D5i1FtD8dUlSdwOI+0H/YhwuTxC1URMD3PP1yv8fnn76BUahUdYM202IG5+Iy0 +Bur8cTLckuYrvy8E3vl7FDrNExy0/Q9D63TuZgwAJHLalHs7ICk6pntgYuG1CcSK +dsDk+dqBmdt57QfelBLt23QL6O2ZeXMR+34cQod/nhww78YMBPLHAgPWXGAZuU/D +AZ4oJJga8XVw348bz/Kvnbu0Tb0RkS3SiYIA4lEWxMOcJ0+2Fgjryb8AhbKon922 +q0xZq1baOKPjkvtuARxmaXb4Ed9fTTBo87td+dNupgXbgxqAxzrWGi6Q9GqbnV5X +JDewhIzFar966OO8asv+mlug+w22AvbF8GkIFLz67PIdRnu5MwjFfvNuffxhKR4N +hUTdVvGVSBQoPrg6O4KMfZ3PKcQoubPOCaIJPYMYOJrX3f0CkGnCITolg0wTw4wC +vMXZ3v2PpCS5eB8UPGzCKipkzQIDAQABo4ICQDCCAjwwHQYDVR0OBBYEFOOL38sK +r6ecUEbQL99PPIx7OkcsMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +44vfywqvp5xQRtAv3088jHs6RywwKwYDVR0QBCQwIoAPMjAxNDExMTIxMzMwMDda +gQ8yMDE4MTExMjEzMzAwN1owggEHBgNVHSAEgf8wgfwwgfkGBFUdIAAwgfAwgcQG +CCsGAQUFBwICMIG3HoG0AGUAUgBQACAAQwBvAHUAbgB0AHIAeQAgAFMAaQBnAG4A +aQBuAGcAIABDAEEAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAOgAgAFUAcwBhAGcA +ZQA6ACAAZQBSAFAAIABEAG8AYwB1AG0AZQBuAHQAIABTAGkAZwBuAGUAcgAgAEMA +ZQByAHQAaQBmAGkAYwBhAHQAZQAgAFMAaQBnAG4AYQB0AHUAcgBlACAAbwBuAGwA +eQAuMCcGCCsGAQUFBwIBFhtodHRwOi8vcmVwb3NpdG9yeS5pbmNlcnQubHUwRgYD +VR0fBD8wPTA7oDmgN4Y1aHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L0NTQ0Ff +ZVJlc2lkZW5jZVBlcm1pdC5jcmwwDgYDVR0PAQH/BAQDAgEGMCoGA1UdEgQjMCGB +DmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwKgYDVR0RBCMwIYEOY3Nj +YUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggIBACNaFElwe1lPr9NwkbQK6pR49jy0j5Ess7ox8nr7OrCcvp4yQDV40jnptjhL +0lgLaik+AbE+fwN7kZ7HbfqBs+NIXyXMTtuyZTM51xoTGRixbWYcDqL+h0DYqIlF +XDce2ambS+gxUMbGpDOzMln605SI37xaK8UAiEmrmfC4uwc9L3+OSQssGnj/KG4I +J1WmiTgFHNTLLGYuP4SO2hGRp7GNwiUe3NcUpqsXYeNu9Aip8P43oENkpJFiMIIk +cRTB84auaZSy6nZ9Ys+jFIOJhjEJCRkFZJX+vWQOayTNO+kULTrAYDxkkMVCd6Vf +RHop7RGAyGKG8OAq+Y61RosppOJ7YdhoXokmfKOjKLJlkQX8QrQupTZb9+eyqzHT +cnZdpzDQGcJhOlDKTm5VP2MXhje7FI0hj+scloAzxrtbWw33uYhVLgjzeBXsbJ9J +JLFX+e4LHP04xeKEoqC3Ycv1MTCAPXu2h3KJbAj8TI36bGHYJWtb6jBCWFws+Vf5 +3sQbaCl+RmssxXJ0DGnhI/o/ABHnAT/NGmO7A3dQ1qT3DAEdFFL4x/FstcVs7urJ +f3kFvVwiLQyxNQOCpqfb9qIK2+DPbtf07ECWvKLP2Kzr+xSGpZr1hmNb6QVgVAMs +3Egfnoxyatfffyg0Dbsh8rvyqWavXLTgaTbXgXLsbsQb+hfB +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIOzCCBe+gAwIBAgIIHC1FsauzkkcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMH0xCzAJ +BgNVBAYTAkxVMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1p +bmlzdHJ5IEZvcmVpZ24gQWZmYWlyczExMC8GA1UEAwwoR3JhbmQtRHVjaHkgb2Yg +THV4ZW1ib3VyZyBDU0NBIGVQYXNzcG9ydDAeFw0xNDExMTIxNDMxMDVaFw0yOTAx +MTIxNDMxMDVaMH0xCzAJBgNVBAYTAkxVMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBv +ZiBMdXhlbWJvdXJnIE1pbmlzdHJ5IEZvcmVpZ24gQWZmYWlyczExMC8GA1UEAwwo +R3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBIGVQYXNzcG9ydDCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAM95cAOEIhKHWpOQ6Hd/KSUyq3dIwXis +Oy0nC3n9D+EUi3+gmhDd06e+rVE02kfU2i0RdLaIFUDQVhJjKHDY5W/FPFffsSzk +axORmKo0+AjiSrWySz/HI4a6zD8g/o1sxYYwvF1J4u+orhRVWMlcL+kjWb5G3qsD +PxMmkQAftEO5d7OyuFcOltjQqp/U+M24EI1pfobfCXDwRlVEBo6RRa1qH6Enji38 +7TN3bxhG+UH60jbFDjM9gHH1D7F5dxL3v0W3T1duIhE2ch144sUpOtEy90OxvBFB +OC8oJ+I4RF6m7igRye+oXrJd0PbUcsHJUFYeUrs3QdExjJth596KD6/ASJb+Fnx3 +zeCucIBiwM7KLZGjLh8mHKsjplpdhuUrSIBgf0xpKVDIGPM9xzanWe5JLn4kOo5u +Q1EUoyRgU7PN3mzkaR02zqeAMcin95+Ksj9N9+6WTtSbk0ZUqtoubttie/ndTvI8 +h48SQxEOuXF2KwLIO/K4HbWXWxxIkRSUGSyjb0cc8kYz4JKghAgrl5/Ak8Ez0O5b +9tZaIew/q1q5AG8xJRjzVBo3KoD/bt3XjjNF++OP8EG5onrt4yELkJTH8fCHEw11 +57SonkYSmg+kCBHShxqA4u2Uy99u5i/rHmgzHL7bGXzzW3IJQHwtlIZJLh3qc3wy +Bkt5OC4nkCxvAgMBAAGjggJVMIICUTAdBgNVHQ4EFgQU++zZT/RZpEPRrLGw0+bB +43KkazgwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBT77NlP9FmkQ9Gs +sbDT5sHjcqRrODArBgNVHRAEJDAigA8yMDE0MTExMjE0MzEwNVqBDzIwMTgxMTEy +MTQzMTA1WjCCASMGA1UdIASCARowggEWMIIBEgYEVR0gADCCAQgwgdwGCCsGAQUF +BwICMIHPHoHMAGUAUABhAHMAcwBwAG8AcgB0ACAAQwBvAHUAbgB0AHIAeQAgAFMA +aQBnAG4AaQBuAGcAIABDAEEAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAOgAgAFUA +cwBhAGcAZQA6ACAAZQBQAGEAcwBzAHAAbwByAHQAIABEAG8AYwB1AG0AZQBuAHQA +IABTAGkAZwBuAGUAcgAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAFMAaQBnAG4A +YQB0AHUAcgBlACAAbwBuAGwAeQAuMCcGCCsGAQUFBwIBFhtodHRwOi8vcmVwb3Np +dG9yeS5pbmNlcnQubHUwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL3JlcG9zaXRv +cnkuaW5jZXJ0Lmx1L0NTQ0FfZVBhc3Nwb3J0LmNybDAOBgNVHQ8BAf8EBAMCAQYw +KgYDVR0SBCMwIYEOY3NjYUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTAqBgNV +HREEIzAhgQ5jc2NhQGluY2VydC5sdaQPMA0xCzAJBgNVBAcMAkxVMEEGCSqGSIb3 +DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUD +BAIBBQCiAwIBIAOCAgEAKRgsv795NbVxEAmLrdQ4V2rwZaRDU0JPAwaahXzsGdN6 +h9y7FVMJEvaPvTnHVEWhghx9/jhPFrQTNNQGAlWMEaxXYXHQE/hMPZDeKIbaKbbE +p2S5CRKRVQhwzeBtGVsmJK9B4Ymq4t5NVVvqZjjr7VEX5fAzBgTUMhJPVHdEgp+O +MuLM/Y+NHgPEzaHpm+Df2JGFG5NM4PmylZ1Zg3Y/XygQb7nSR8Zv4Td+lTyjido9 +29OZanuXe0zTD+nNMirQPTxaUC65z/8mZ+Shct6D/4Th6D+onryc1EOzK2akrcG3 +KmTrOz4/pFn8FtYwWPFyVB3rSoyUjZsopnI+vEKhTj2hv6IFC73PXw3AdKihFljo +Y0MsrfuPYu5OfLnMdCr4mzOeX50Fv99Pu4+B8p6T0BiqtGaFdqpruY6QRwW+7dKY +ZIAs5IYsjq3H92P0sGog4Ube8Bq3OHAc1l2P5w3FV8Wgak49Uh7zIE2QPpsbz4vh +dxe8348oaeMws2u7p1TtldzzBmZFGfP/SGRYGrVUITF1uH1RSbwfjEgzcCOBLOr5 +0ty6n4qr67eQs/gRJEWtuDJpcNa7WZSqYrNqlouj3VhWWGgwvYjuVdNvc+DdXS5V +vh1WBpTSFDVHqQ9xpnDBnu12ox95V1sq25LjPBfedBIBVEeZNKs8fIRrCkRZV44= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDLTCCArSgAwIBAgISESEipU3E+YVnH0LTBkMKw9WyMAoGCCqGSM49BAMEMEEx +CzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTATBgNV +BAMTDENTQ0EtQUxHRVJJQTAeFw0yMDAxMzAwMDAwMDBaFw0zNTAzMzAwMDAwMDBa +MEExCzAJBgNVBAYTAkRaMQwwCgYDVQQKEwNHb3YxDTALBgNVBAsTBE1JQ0wxFTAT +BgNVBAMTDENTQ0EtQUxHRVJJQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIrKX4IR +cPpNgjPH8j95V5KvQueRBFvfVZiWhKoW0QJ9J1QbAibWZcUOD/dvkfWu6/avUXjA +IgQEWqQwAsiT7SuADK+h5Cy0f4CiGm8MOikZvFJCwh2spfTsPCcOViDrfKOCAW0w +ggFpMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMjAwMTMwMDAwMDAwWoEPMjAyNTAxMzAwMDAwMDBaMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHEwNEWkEwGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcTA0RaQTCB +mwYDVR0fBIGTMIGQMIGNoIGKoIGHhi1odHRwOi8vaW50ZXJpZXVyLmdvdi5kei9D +U0NBL0NTQ0EtQUxHRVJJQS5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8u +aW50L0NSTHMvRFpBLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9EWkEuY3JsMB0GA1UdDgQWBBRf7UzTvKlfXI82c8Ya7IN7/isrUTAfBgNV +HSMEGDAWgBSp04/VjhdrWkDGhL+BWKMrVY+EcjAKBggqhkjOPQQDBANnADBkAjAu +ke4WEfl8vtADe0oE1+KeTOe+zzZUpOmrvXKUZnlm77nxAt4YlAb0qDBsouYP4+cC +MFsirhwtkzN/hbtWbNff8bGf8l5RStNK+lmLj3pduzyb36lA57lUQttEpXm9gzJa +IA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDRDCCAuqgAwIBAgIBFTAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTE0MTg1MloXDTI1MTAzMTAyMTg1MlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAAR08laxRyb/Nbi6NFOTEqxvsKAWlKboNJkm2vHTBcIG5zdV32zr +INnd5UBn3dbwe9m1OwBEl+Lz0x4feU9vbZ4uo4GUMIGRMB0GA1UdDgQWBBTn2N0X +WNVLQqoC24jrcB5ExpJa5jAfBgNVHSMEGDAWgBSfxV4CyOp7zJXtWIiCGIgO7I/I +HzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDExMDgwMTE3MTY1N1qBDzIwMTUwODAxMTcxNjU3WjAKBggqhkjOPQQDAgNI +ADBFAiBsopMqYR+X+ng7r2hzPrYhR+NWUQiTEyTa/KvvHR6MeAIhAKZGfyF1Ej9V +Wr/UBQ9YLkeW+En/x8H2Hm9OWVmgpUmf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDoTCCA0egAwIBAgIBcjAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMjEwOTIyMTI0MjIxWhcNMzAxMTIyMTI0MjIxWjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAETjRklnZQwAOPhbO+tD8xlADoBQngNOQ12bucXXl1xmVkVIj8T7yE +jdiCyzLiYGK/bIX/oxD8hNPlhPIVNj62iqOCAVIwggFOMB0GA1UdDgQWBBTgWxEx +nFeuM60HskZv2HK4rElk2TAfBgNVHSMEGDAWgBTgWxExnFeuM60HskZv2HK4rElk +2TArBgNVHRAEJDAigA8yMDIxMDkyMjEyNDIyMVqBDzIwMjUwOTIyMTI0MjIxWjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjBnBgNVHR8EYDBeMFyg +WqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0FSRS5jcmyG +Kmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQVJFLmNybDAbBgNV +HREEFDASpBAwDjEMMAoGA1UEBwwDQVJFMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQH +DANBUkUwGAYDVR0gBBEwDzANBgsrBgEEAYKmDwECATAKBggqhkjOPQQDAgNIADBF +AiB4p4yEwlN0r+x10izbsbO7i53O/PnRmewNnc3mVhAzeQIhAKYejwS+fkhNde66 +ntnFC7IVaQjiTKJ0srQ8O94IQLrE +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDoTCCA0egAwIBAgIBczAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMjEwOTIyMTI0MjIxWhcNMzAxMTIyMTI0MjIxWjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAETjRklnZQwAOPhbO+tD8xlADoBQngNOQ12bucXXl1xmVkVIj8T7yE +jdiCyzLiYGK/bIX/oxD8hNPlhPIVNj62iqOCAVIwggFOMB0GA1UdDgQWBBTgWxEx +nFeuM60HskZv2HK4rElk2TAfBgNVHSMEGDAWgBT1qPmx56mSoIZUCNsqRxwEohX0 +1zArBgNVHRAEJDAigA8yMDIxMDkyMjEyNDIyMVqBDzIwMjUwOTIyMTI0MjIxWjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjBnBgNVHR8EYDBeMFyg +WqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0FSRS5jcmyG +Kmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQVJFLmNybDAbBgNV +HREEFDASpBAwDjEMMAoGA1UEBwwDQVJFMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQH +DANBUkUwGAYDVR0gBBEwDzANBgsrBgEEAYKmDwECATAKBggqhkjOPQQDAgNIADBF +AiEAn2TbIzsuPFM9MxyNPS4S0OgUOjmDUURLhVJwKdB1+AsCIGXeiWJGNcgrZSoA +ORVXXEh6XVK3Nci93H/BK2Sm0NpK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDqjCCA0+gAwIBAgISESJ8b/06kvfLhaife6B8RX64MAoGCCqGSM49BAMCMEsx +CzAJBgNVBAYTAk9NMQwwCgYDVQQKDANHT1YxGjAYBgNVBAsMEVJveWFsIE9tYW4g +UG9saWNlMRIwEAYDVQQDDAlPTUFOIENTQ0EwHhcNMTkwNzAyMDAwMDAwWhcNMzQx +MDAyMDAwMDAwWjBLMQswCQYDVQQGEwJPTTEMMAoGA1UECgwDR09WMRowGAYDVQQL +DBFSb3lhbCBPbWFuIFBvbGljZTESMBAGA1UEAwwJT01BTiBDU0NBMIIBMzCB7AYH +KoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPV +JiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkE +ICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv +/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTH +LwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABCNV +fQI+lv2HS6AHAOCxLlmFRCJOqLD7OLx2Mh3X8KXdaZBuoi0Z7wZ63Q8I9RMpOBtt +CGTeIihojEymHPxR5MijggE1MIIBMTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud +DwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE5MDcwMjAwMDAwMFqBDzIwMjQwNzAy +MDAwMDAwWjAxBgNVHREEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4xDDAK +BgNVBAcTA09NTjAxBgNVHRIEKjAogRRvbWFuLWNzY2FAcm9wLmdvdi5vbaQQMA4x +DDAKBgNVBAcTA09NTjA4BgNVHR8EMTAvMC2gK6AphidodHRwczovL3d3dy5yb3Au +Z292Lm9tL2NybC9PTUFOQ1NDQS5jcmwwHQYDVR0OBBYEFFlOTfYWfKnq0M1QGeuZ +SxXHw2R/MB8GA1UdIwQYMBaAFFw8g1x2dVtUeC0QTsNs9TYuJt1XMAoGCCqGSM49 +BAMCA0kAMEYCIQCUbSBxLBhLa9LVZ1qz6yKbjGVoM+mwOAYrzdKG+frM4wIhAI+S +izWqq+ckgp9d3MPcgbjKoiy/q6euEOEjbJTnc3e1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEATCCA6igAwIBAgIIVEqQfUdXBnIwCgYIKoZIzj0EAwIweDETMBEGA1UEAwwK +Q1NDQV9GQV9CRTE3MDUGA1UECwwuRkVERVJBTCBQVUJMSUMgU0VSVklDRSBGT1JF +SUdOIEFGRkFJUlMgQkVMR0lVTTEbMBkGA1UECgwSS0lOR0RPTSBPRiBCRUxHSVVN +MQswCQYDVQQGEwJCRTAeFw0yMTEyMTMwODU3MjhaFw0zMDAxMjUwODQ5MzlaMHgx +CzAJBgNVBAYTAkJFMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJFTEdJVU0xNzA1BgNV +BAsMLkZFREVSQUwgUFVCTElDIFNFUlZJQ0UgRk9SRUlHTiBBRkZBSVJTIEJFTEdJ +VU0xEzARBgNVBAMMCkNTQ0FfRkFfQkUwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwG +ByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBEBCD/ +////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671VdpiG +vGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF +2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD/ +/////////7zm+q2nF56E87nKwvxjJVECAQEDQgAEfHWvF0nrxhdsc892Dnzx9plB +F+TfzwtRapGmVwUu/nx2pQSxEk/bd0qtlWcUavQzUlWCFXzNdS0EOzrLtq20tKOC +AT4wggE6MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMBoGA1Ud +EAQTMBGBDzIwMjQxMjA5MTIyNjI4WjAdBgNVHQ4EFgQU8psF/fhjxfD8GQOQj0dz +/Rjiud0wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NzY2EtcGFzcy5iZWxnaXVt +LmJlL2NzY2EuY3JsMBEGA1UdIAQKMAgwBgYEVR0gADA2BgNVHRIELzAtgRljc2Nh +LXBhc3NAZGlwbG9iZWwuZmVkLmJlpBAwDjEMMAoGA1UEBwwDQkVMMDYGA1UdEQQv +MC2BGWNzY2EtcGFzc0BkaXBsb2JlbC5mZWQuYmWkEDAOMQwwCgYDVQQHDANCRUww +HwYDVR0jBBgwFoAUWNpQdTBhwLE6FYkdTu+AqYVPy3QwCgYIKoZIzj0EAwIDRwAw +RAIgEL6C64bcyGVwjbM07cqPJGGjAWtSUZLuobcOVFQ0heYCICiA+OcQHGMwOWgF +tAMwCUFHM2n1VRjRV/3djZ9ppxCr +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEDjCCA7SgAwIBAgIUOy83cbCeCzNEKQUdoGNPo4fifFkwCgYIKoZIzj0EAwIw +eDELMAkGA1UEBhMCQkUxGzAZBgNVBAoMEktJTkdET00gT0YgQkVMR0lVTTE3MDUG +A1UECwwuRkVERVJBTCBQVUJMSUMgU0VSVklDRSBGT1JFSUdOIEFGRkFJUlMgQkVM +R0lVTTETMBEGA1UEAwwKQ1NDQV9GQV9CRTAeFw0yMTEyMDkxMjI2MjhaFw0zMjAz +MDkxMjI2MjdaMHgxCzAJBgNVBAYTAkJFMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJF +TEdJVU0xNzA1BgNVBAsMLkZFREVSQUwgUFVCTElDIFNFUlZJQ0UgRk9SRUlHTiBB +RkZBSVJTIEJFTEdJVU0xEzARBgNVBAMMCkNTQ0FfRkFfQkUwggEzMIHsBgcqhkjO +PQIBMIHgAgEBMCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP////// +/////////zBEBCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY1 +2Ko6k+ez671VdpiGvGUdBrDMU7D2O848PifSYEsEQQRrF9Hy4SxCR/i85uVjpEDy +dwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1 +AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQEDQgAEfHWvF0nr +xhdsc892Dnzx9plBF+TfzwtRapGmVwUu/nx2pQSxEk/bd0qtlWcUavQzUlWCFXzN +dS0EOzrLtq20tKOCAT4wggE6MBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgw +FoAU8psF/fhjxfD8GQOQj0dz/Rjiud0wNgYDVR0SBC8wLYEZY3NjYS1wYXNzQGRp +cGxvYmVsLmZlZC5iZaQQMA4xDDAKBgNVBAcMA0JFTDA2BgNVHREELzAtgRljc2Nh +LXBhc3NAZGlwbG9iZWwuZmVkLmJlpBAwDjEMMAoGA1UEBwwDQkVMMBEGA1UdIAQK +MAgwBgYEVR0gADA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3NjYS1wYXNzLmJl +bGdpdW0uYmUvY3NjYS5jcmwwHQYDVR0OBBYEFPKbBf34Y8Xw/BkDkI9Hc/0Y4rnd +MBoGA1UdEAQTMBGBDzIwMjQxMjA5MTIyNjI4WjAOBgNVHQ8BAf8EBAMCAQYwCgYI +KoZIzj0EAwIDSAAwRQIgHnyh1NG4KfMmYgdg2TIGXjuA2rNJ8ZfvOYSoFiWcDt0C +IQCUF0aU95MZAAp2ixwSZ3hOSh8tH/qn5bU/vVr7H4xKww== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEFTCCA5ugAwIBAgIINcY/rYJQincwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMC +QlkxHDAaBgNVBAoME1JlcHVibGljIG9mIEJlbGFydXMxDTALBgNVBAsMBE5DRVMx +FTATBgNVBAMMDENTQ0EgQmVsYXJ1czAeFw0yMDExMjUwNzI1NDdaFw0zNjAyMjAw +NzI1NDdaMFExCzAJBgNVBAYTAkJZMRwwGgYDVQQKDBNSZXB1YmxpYyBvZiBCZWxh +cnVzMQ0wCwYDVQQLDAROQ0VTMRUwEwYDVQQDDAxDU0NBIEJlbGFydXMwggG1MIIB +TQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAP////////////////////// +///////////////////+/////wAAAAAAAAAA/////zBkBDD///////////////// +/////////////////////////v////8AAAAAAAAAAP////wEMLMxL6fiPufkmI4F +a+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq7wRhBKqHyiK+iwU3 +jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixv +XZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////// +/////////////////////////8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQNi +AAR5hHTOUut6AJu7tadzVuwUAntMDiFEpbQ4nJEryuMmGePhhvLVMLFPbKqsokeP +bSDFDIBZfKnxTSDhWZd2dJ29Kn6kFd21eitPol496y62SdnxngSuogD3r6mMkPG2 +NlSjgf4wgfswEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBTmCeD1bxZd +sOS780O4KO7TJs+LkDAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDQkxSMBsGA1Ud +EQQUMBKkEDAOMQwwCgYDVQQHDANCTFIwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cHM6 +Ly9uY2VzLmJ5L2ljYW8vY3NjYS5jcmwwHQYDVR0OBBYEFOYJ4PVvFl2w5LvzQ7go +7tMmz4uQMCsGA1UdEAQkMCKADzIwMjAxMTI1MDcyNTQ3WoEPMjAyNTExMjQwNzI1 +NDdaMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjEAiNgyoJR6N0IE +KzkIHyiC3EwBi0l4jPkAHP4v4zg0vdot52hLzW4JJbpIMQ5ajQuMAjBkO9yakzcZ +09HcQVjzoZyxcjZ53hMI0+QBFftp/VNprCFlBBHT7KFYBfriZhkaWXI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEJDCCA8mgAwIBAgIIT8oG6/jl6QUwCgYIKoZIzj0EAwIweTEUMBIGA1UEAwwL +Q1NDQUVDX0JFXzMxNzA1BgNVBAsMLkZFREVSQUwgUFVCTElDIFNFUlZJQ0UgRk9S +RUlHTiBBRkZBSVJTIEJFTEdJVU0xGzAZBgNVBAoMEktJTkdET00gT0YgQkVMR0lV +TTELMAkGA1UEBhMCQkUwHhcNMTcwOTI4MDg0NjA1WhcNMjcwOTAzMTQxNTUwWjB4 +MRMwEQYDVQQDDApDU0NBX0ZBX0JFMTcwNQYDVQQLDC5GRURFUkFMIFBVQkxJQyBT +RVJWSUNFIEZPUkVJR04gQUZGQUlSUyBCRUxHSVVNMRswGQYDVQQKDBJLSU5HRE9N +IE9GIEJFTEdJVU0xCzAJBgNVBAYTAkJFMIIBMzCB7AYHKoZIzj0CATCB4AIBATAs +BgcqhkjOPQEBAiEA/////wAAAAEAAAAAAAAAAAAAAAD///////////////8wRAQg +/////wAAAAEAAAAAAAAAAAAAAAD///////////////wEIFrGNdiqOpPns+u9VXaY +hrxlHQawzFOw9jvOPD4n0mBLBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5 +RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA +//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABOqyo3sbzVzJZbdq2ZIo6aH9 +Yk0dbQdprZw2YvzqO2xeNOSr159NSsScfC2nu0THQh99Dq0vga+75oIWfOU049mj +ggFeMIIBWjAdBgNVHQ4EFgQUWNpQdTBhwLE6FYkdTu+AqYVPy3QwEgYDVR0TAQH/ +BAgwBgEB/wIBADAfBgNVHSMEGDAWgBQJRnLSHson2Qv8QEtfTXBCA9mAbzA2BgNV +HRIELzAtgRljc2NhLXBhc3NAZGlwbG9iZWwuZmVkLmJlpBAwDjEMMAoGA1UEBwwD +QkVMMCsGA1UdEAQkMCKADzIwMTcwOTI4MDg0NjA1WoEPMjAyMzAxMjYwODQ2MDVa +MBEGA1UdIAQKMAgwBgYEVR0gADA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3Nj +YS1wYXNzLmJlbGdpdW0uYmUvY3NjYS5jcmwwDgYDVR0PAQH/BAQDAgEGMDYGA1Ud +EQQvMC2BGWNzY2EtcGFzc0BkaXBsb2JlbC5mZWQuYmWkEDAOMQwwCgYDVQQHDANC +RUwwDQYHZ4EIAQEGAQQCBQAwCgYIKoZIzj0EAwIDSQAwRgIhANV9bbZzHJefc7Tw +NDzDGM+JRRjOJZsXb/uVg6voMPC6AiEAqQN/WMSTIvoL1V0Han8YnHByu9Atgl/s +Vl2Z74j2mjk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEPjCCA+SgAwIBAgIEXO5uNjAKBggqhkjOPQQDAjBkMQswCQYDVQQGEwJCSjEN +MAsGA1UECgwER09VVjENMAsGA1UECwwEQU5JUDEiMCAGA1UECwwZQ2VydGlmaWNh +dGlvbiBBdXRob3JpdGllczETMBEGA1UEAwwKQ1NDQS1CZW5pbjAeFw0xOTA1Mjkx +MTA0MTdaFw0zNDEyMjkxMTM0MTdaMGQxCzAJBgNVBAYTAkJKMQ0wCwYDVQQKDARH +T1VWMQ0wCwYDVQQLDARBTklQMSIwIAYDVQQLDBlDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0aWVzMRMwEQYDVQQDDApDU0NBLUJlbmluMIIBSzCCAQMGByqGSM49AgEwgfcC +AQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAAAAAAAAAAAAAA//////////////// +MFsEIP////8AAAABAAAAAAAAAAAAAAAA///////////////8BCBaxjXYqjqT57Pr +vVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSdNgiG5wSTamZ44ROdJreBn36QBEEE +axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpZP40Li/hp/m47n60p8D54W +K84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA//////////+85vqtpxeehPO5ysL8 +YyVRAgEBA0IABBy/zUG3Ib3Ar2tw11z+UdZmK1vVatINb3dR4LeHkGRXbRkUlxfj +3Dt3dlU80UfYUwMbnCOcwqeisULW1h3hqIKjggGOMIIBijAtBgNVHRIEJjAkpBAw +DjEMMAoGA1UEBwwDQkVOghBwa2ktYW5pcC5nb3V2LmJqMC0GA1UdEQQmMCSkEDAO +MQwwCgYDVQQHDANCRU6CEHBraS1hbmlwLmdvdXYuYmowDgYDVR0PAQH/BAQDAgEG +MBIGA1UdEwEB/wQIMAYBAf8CAQAwgZgGA1UdHwSBkDCBjTCBiqCBh6CBhIYqaHR0 +cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9CRU4uY3JshipodHRwczov +L3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0JFTi5jcmyGKmh0dHA6Ly9wa2kt +YW5pcC5nb3V2LmJqL0NSTHMvQmVuaW5DU0NBLmNybDArBgNVHRAEJDAigA8yMDE5 +MDUyOTExMDQxN1qBDzIwMjQwNTI5MDg0NjQ4WjAfBgNVHSMEGDAWgBRQBs6ZH/vV +shJaIM9clNm5eMPcBTAdBgNVHQ4EFgQUUAbOmR/71bISWiDPXJTZuXjD3AUwCgYI +KoZIzj0EAwIDSAAwRQIgWdVqzQ27iRqXiqxZX1suxW8pOmJrSuFOcmNlPNuuUycC +IQDxFxpc1I4cVXTYjkrUhvhYaf+n7v/AwlZ6Cm+EurCA2A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEPzCCA8SgAwIBAgICBH8wDAYIKoZIzj0EAwMFADA/MQswCQYDVQQGEwJBVDEL +MAkGA1UECgwCR1YxDDAKBgNVBAsMA0JNSTEVMBMGA1UEAwwMQ1NDQS1BVVNUUklB +MB4XDTE5MDkwMjA3MTM0NFoXDTMwMDEwNTA4NTMyOVowPzELMAkGA1UEBhMCQVQx +CzAJBgNVBAoMAkdWMQwwCgYDVQQLDANCTUkxFTATBgNVBAMMDENTQ0EtQVVTVFJJ +QTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgP +XW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9 +jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH +3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEE +HRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8e +ir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMV +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLp +BGVlAgEBA2IABEPDxgJnFuCqMAs7GTPoWmOawYNIjCNezTxT6rAbkbbQxt4hhwse +qS4sr4qXAJbPgoxeyxB4LFuWl2cqHlHbZIg+PsSq4jAC3dxxdsfplDk+PCBtz1E3 +EKgsotcK5S1jbaOCAU4wggFKMBoGA1UdEAQTMBGBDzIwMjQxMjA5MDcxMzQ0WjAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFCaSx+OYq/vjUZLT8m6aMX0f7VO9MD4G +A1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly93d3cuYm1pLmd2LmF0L2NzY2EvY3JsL0NT +Q0FBVVNUUklBLmNybDAWBgNVHSAEDzANMAsGCSooAAoBAgEBATASBgNVHRMBAf8E +CDAGAQH/AgEAMDcGA1UdEgQwMC6kEDAOMQwwCgYDVQQHDANBVVSGGmh0dHA6Ly93 +d3cuYm1pLmd2LmF0L2NzY2EvMDcGA1UdEQQwMC6kEDAOMQwwCgYDVQQHDANBVVSG +Gmh0dHA6Ly93d3cuYm1pLmd2LmF0L2NzY2EvMB8GA1UdIwQYMBaAFP+N6oavGO7l +i6LWuoz6qzmhaa9bMAwGCCqGSM49BAMDBQADZwAwZAIwYEg6Bzva7SUs7jMyI7HC +mRw6oHbFKZeleZQgo26O0KUpn9p2S1y1UxkaTmeM1yk1AjBJpc2c12bt2VPbM/GY +/twUAD9bgo+eSo7jFphllNIfTrchqBp8mxU6cIjkYDVYBWQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjTCCBBSgAwIBAgIBKDAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA2MB4XDTE5MDczMTA4MDYwN1oXDTI5MTAxOTA3 +MDg0N1owVzELMAkGA1UEBhMCTFYxJDAiBgNVBAoMG05hdGlvbmFsIFNlY3VyaXR5 +IEF1dGhvcml0eTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwNzCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+ +UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUM +PHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLO +KCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk +8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4d +dSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEA +jLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVl +AgEBA2IABIYx+qLf5HTBwPFyHP9594d8Cmn5TflGdnG8tWRXW9ZN+jsZx9HGlWbO +Q2mNSpRUBmnig1e+BydH8ZS7MgH/G6HtINanjJj5YDtQC1RKuwYsXvD8sfQ9NwEE +lxWrq4QdxqOCAXEwggFtMC0GA1UdEgQmMCSkEDAOMQwwCgYDVQQHDANMVkGBEG5w +a2RAcG1scC5nb3YubHYwLQYDVR0RBCYwJKQQMA4xDDAKBgNVBAcMA0xWQYEQbnBr +ZEBwbWxwLmdvdi5sdjBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL0xWQS5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93 +bmxvYWQyLmljYW8uaW50L0NSTHMvTFZBLmNybDAOBgNVHQ8BAf8EBAMCAQYwHwYD +VR0jBBgwFoAUlmONFEg6fgGrq0DOgt2bdW9GcZQwEgYDVR0TAQH/BAgwBgEB/wIB +ADANBgdngQgBAQYBBAIFADArBgNVHRAEJDAigA8yMDE5MDczMTA4MDYwN1qBDzIw +MjIwNzMxMDgwNjA3WjAdBgNVHQ4EFgQUxMHh4QQNxPsNB04U04OhmODZsmkwCgYI +KoZIzj0EAwMDZwAwZAIwaPO5seyUk1vWTDoWp03T5WblAnAmnincRNZWJhlOtwlp +4x9vBCjuaC+qgBx7exBRAjAJmxV5K36mDvddoSYKAsmwXw82EyJNzxIr7z48oM8B +sG+QEPM6efpR1JiDqBUckOA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjTCCBBSgAwIBAgIBNzAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA2MB4XDTIwMDYyOTEzNTczNFoXDTI5MTAxOTA3 +MDgwMFowVzELMAkGA1UEBhMCTFYxJDAiBgNVBAoMG05hdGlvbmFsIFNlY3VyaXR5 +IEF1dGhvcml0eTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwODCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+ +UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUM +PHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLO +KCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk +8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4d +dSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEA +jLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVl +AgEBA2IABGX0imoF0qGn8Dig3JCdVyAj5C4RljjkgJdDYYX29GtAB8qBzpcNZ55B +V0rUciPngg1WC+e72lpwgfcpwPUw7EBT+Emt1Wi78wBHUVMn0mSrr4Z7Nch9JKH4 +7T3AOROMCqOCAXEwggFtMB8GA1UdIwQYMBaAFJZjjRRIOn4Bq6tAzoLdm3VvRnGU +MBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYHZ4EIAQEGAQQCBQAwKwYDVR0QBCQwIoAP +MjAyMDA2MjkxMzQ1NTlagQ8yMDIzMDYyOTEzNDU1OVowHQYDVR0OBBYEFLcnSNHj +UGL39r1bLfQ+uMy4YB6gMC0GA1UdEgQmMCSkEDAOMQwwCgYDVQQHDANMVkGBEG5w +a2RAcG1scC5nb3YubHYwLQYDVR0RBCYwJKQQMA4xDDAKBgNVBAcMA0xWQYEQbnBr +ZEBwbWxwLmdvdi5sdjBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL0xWQS5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93 +bmxvYWQyLmljYW8uaW50L0NSTHMvTFZBLmNybDAOBgNVHQ8BAf8EBAMCAQYwCgYI +KoZIzj0EAwMDZwAwZAIwO5YEWfLMGeGfRPzPVKDkJYE7EtRRepr4nAzx0I63DbFQ +qTdX+C0xYAVL0jMeFvmjAjBHF+89jWOOQsnzGm0tqpY6ryfnBz9EHqXuRsBWALGi ++Qje++fWP0OwFqqn/FnYbUA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCBCegAwIBAgIBTjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJERTENMAsG +A1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMxMDAxFTATBgNVBAMM +DGNzY2EtZ2VybWFueTAeFw0xMzExMTExMzE4MDlaFw0yNDA3MTcyMzU5NTlaME8x +CzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNV +BAUTAzEwMTEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBtTCCAU0GByqGSM49AgEw +ggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZ +f7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieH +E5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc +0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej +537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcL +Kf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHf +FS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUCAQEDYgAEa/vuxp3nLGam +aOzhqvGiZKPJsoj7MtBZ6Sw+XVvU17UBSHj0R5wTyIPQVFVc2Q7NE27EzDRkic3W +TmlD8zOGSrnf5ELcv49pwZ5x0DX/MX/AMvwhVcrqpltJPRkdOZrAo4IBlDCCAZAw +HwYDVR0jBBgwFoAU43auZhL+eoHmcixROFvYg0kPw6IwHQYDVR0OBBYEFMF7qRX3 +XN3Saz1gmiNU3hLuPw7GMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDEz +MTExMTEzMTgwOVqBDzIwMTYxMTExMjM1OTU5WjAWBgNVHSAEDzANMAsGCQQAfwAH +AwEBATBRBgNVHREESjBIgRhjc2NhLWdlcm1hbnlAYnNpLmJ1bmQuZGWGHGh0dHBz +Oi8vd3d3LmJzaS5idW5kLmRlL2NzY2GkDjAMMQowCAYDVQQHDAFEMFEGA1UdEgRK +MEiBGGNzY2EtZ2VybWFueUBic2kuYnVuZC5kZYYcaHR0cHM6Ly93d3cuYnNpLmJ1 +bmQuZGUvY3NjYaQOMAwxCjAIBgNVBAcMAUQwEgYDVR0TAQH/BAgwBgEB/wIBADAw +BgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vd3d3LmJzaS5idW5kLmRlL2NzY2FfY3Js +MA0GB2eBCAEBBgEEAgUAMAoGCCqGSM49BAMDA2gAMGUCMBu3r7p0/BeVgrxUwDyZ +5NeAcSIIGaKGnrNPFUcErT59oOQjfdvFmGVo5X8hOEG4EwIxAIUjMstIcs/7xGyi +6AWoVfMXNVo3qdIZCa7R9Qn82qb1ypnzy02dp+jWEyru6Xnkew== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCBCigAwIBAgICAJ0wCgYIKoZIzj0EAwMwTzELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoGA1UEBRMDMTAxMRUwEwYDVQQD +DAxjc2NhLWdlcm1hbnkwHhcNMTYwODIzMTEyMzM3WhcNMjcwNDMwMjM1OTU5WjBP +MQswCQYDVQQGEwJERTENMAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYD +VQQFEwMxMDMxFTATBgNVBAMMDGNzY2EtZ2VybWFueTCCAbUwggFNBgcqhkjOPQIB +MIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHa +GX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7In +hxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH +3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hH +o+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3 +Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB +3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABBIQYNt+G0f9 +fVZYErtxzRVfYo7OAAhV/FsztJ69ml1+dq0glVWiSQO/GeXKlkdzdV7R8CaRNk5j +UPbkBhYAxsTMP2dEwRSLcE9AaMRulNgDwfypesmAcIozJJNxEuXSQ6OCAZQwggGQ +MB8GA1UdIwQYMBaAFMF7qRX3XN3Saz1gmiNU3hLuPw7GMB0GA1UdDgQWBBQbx1Cx +R6dV+i8leSBuVdIv4uQnnjAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAx +NjA4MjMxMTIzMzdagQ8yMDE5MDgyMzIzNTk1OVowFgYDVR0gBA8wDTALBgkEAH8A +BwMBAQEwUQYDVR0RBEowSIEYY3NjYS1nZXJtYW55QGJzaS5idW5kLmRlhhxodHRw +czovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgGA1UEBwwBRDBRBgNVHRIE +SjBIgRhjc2NhLWdlcm1hbnlAYnNpLmJ1bmQuZGWGHGh0dHBzOi8vd3d3LmJzaS5i +dW5kLmRlL2NzY2GkDjAMMQowCAYDVQQHDAFEMBIGA1UdEwEB/wQIMAYBAf8CAQAw +MAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3d3dy5ic2kuYnVuZC5kZS9jc2NhX2Ny +bDANBgdngQgBAQYBBAIFADAKBggqhkjOPQQDAwNnADBkAjAdg3Ag/sof5SAIp1PF +ud+ME8rgZOtEhIbASD9oXKY+I03arKBX95czW6rxq6542AcCMFGvjsZ4ErbBJrFZ +a8aISkNXbju8o6JwhzHFQhzfrSblyQF5B6/zn3dtgLww+T679Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEyTCCBE+gAwIBAgIESS7/fTAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJHQjEO +MAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRob3Jp +dHkwHhcNMjEwOTE3MTIxNzU4WhcNMzgwMTE3MTI0NzU4WjBBMQswCQYDVQQGEwJH +QjEOMAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRo +b3JpdHkwggHMMIIBZAYHKoZIzj0CATCCAVcCAQEwPAYHKoZIzj0BAQIxAP////// +///////////////////////////////////+/////wAAAAAAAAAA/////zB7BDD/ +/////////////////////////////////////////v////8AAAAAAAAAAP////wE +MLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq +7wMVAKM1kmqjGaJ6HQCJamdzpIJ6zaxzBGEEqofKIr6LBTeOscce8yCtdG4dO2KL +p5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/kpLcKfj0Hb0o +mhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////////////////////// +////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IABFaTH9fUKULuySKY +1ykTcc26wpxgIwyfY10BCTmrf49dl3zP6QvXUoyvpTr61iJb9h4q9NIIMa7R5rV4 +zLAOFTQYL20e5r9ST71ivQVtDVOMJOt/KkNuM24TnwCgcrC6GqOCAb4wggG6MA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMGMGA1UdEQRcMFqkEDAO +MQwwCgYDVQQHEwNHQlKBH2RvY3VtZW50LnRlY2hub2xvZ3lAaG1wby5nb3YudWuB +JWRvY3VtZW50LnRlY2hub2xvZ3lAaG9tZW9mZmljZS5nb3YudWswYwYDVR0SBFww +WqQQMA4xDDAKBgNVBAcTA0dCUoEfZG9jdW1lbnQudGVjaG5vbG9neUBobXBvLmdv +di51a4ElZG9jdW1lbnQudGVjaG5vbG9neUBob21lb2ZmaWNlLmdvdi51azArBgNV +HRAEJDAigA8yMDIxMDkxNzEyMTc1OFqBDzIwMjYxMDEwMjM1MDIyWjAfBgNVHSME +GDAWgBTbHRZXx2AjCJsBOeJhPAghNLV8oTAdBgNVHQ4EFgQUSZ5HMCeFIMV8/BGA +JOFMFWKiSdYwXQYDVR0fBFYwVDBSoFCgToYgaHR0cHM6Ly9obXBvLmdvdi51ay9j +c2NhL0dCUi5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMv +R0JSLmNybDAKBggqhkjOPQQDAgNoADBlAjEAsKRRRovvMvMRfNEBrYAAEDFUeCXA +V7ZKU9oFIEtWKIkh7jwEqtinNR1Xr3R/1sSnAjAiKRFY4CVkXMXWr+QwspAHIgmn +dEQKWMLmfilqnwG25/Ka3SUfh9ZNci+BlfZOjQY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEzTCCBFSgAwIBAgISESGXOZypVjXyueaFhoukpfPxMAoGCCqGSM49BAMDMEEx +CzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTATBgNV +BAMMDExFQkFOT04gQ1NDQTAeFw0xODA3MTcwMDAwMDBaFw0zMzEwMTcwMDAwMDBa +MEExCzAJBgNVBAYTAkxCMQwwCgYDVQQKDANHT1YxDTALBgNVBAsMBEdER1MxFTAT +BgNVBAMMDExFQkFOT04gQ1NDQTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8Bgcq +hkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0a +cYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWB +SlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8 +tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9 +EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mR +KSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZu +bKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABCEQdj6vj7u/Is1woNHeBAL2PlQy ++z+M/jSKJc03q2EJwGX+ZMN6GgKgWZ9HgGR2/2QflcA5mfrkUjVLvyVbNDmtpHRT +ty4pOGl1bHni+AHxKiou1pTglJubmw/zTx0XfaOCAcwwggHIMA4GA1UdDwEB/wQE +AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIwMTgwNzE3MDAw +MDAwWoEPMjAyMzA3MTcwMDAwMDBaMGEGA1UdIARaMFgwVgYHZ4EQAQFlCzBLMEkG +CCsGAQUFBwIBFj1odHRwczovL3d3dy5nZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYi9Q +S0kvQ1AvTEVCQU5PTkNTQ0EtQ1AucGRmMEEGA1UdEQQ6MDiBJGxlYmFub24tY3Nj +YUBnZW5lcmFsLXNlY3VyaXR5Lmdvdi5sYqQQMA4xDDAKBgNVBAcTA0xCTjBBBgNV +HRIEOjA4gSRsZWJhbm9uLWNzY2FAZ2VuZXJhbC1zZWN1cml0eS5nb3YubGKkEDAO +MQwwCgYDVQQHEwNMQk4wTAYDVR0fBEUwQzBBoD+gPYY7aHR0cHM6Ly93d3cuZ2Vu +ZXJhbC1zZWN1cml0eS5nb3YubGIvUEtJL0NSTC9MRUJBTk9OQ1NDQS5jcmwwHQYD +VR0OBBYEFGwXIRwgkBRk0764M6qDxTjCp1e+MB8GA1UdIwQYMBaAFAGw21FFhwlp +/SXjbK9G+hg8RNKsMAoGCCqGSM49BAMDA2cAMGQCMA7u86sPU+AenojCLPyVTXIb +AocVf/Ynfd0w5oRQ6CksfwhgWA6r7kZUivvyZI+07QIwYtmTq23kgd71qP2u9LRf +jPfkk2VWchkFVqsDNAq28GbcofgxCPX0dHwzRbFbrnRs +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE/jCCA2agAwIBAgIIBhfXFNnkRx0wDQYJKoZIhvcNAQELBQAwPzELMAkGA1UE +BhMCQVQxCzAJBgNVBAoMAkdWMQwwCgYDVQQLDANCTUkxFTATBgNVBAMMDENTQ0Et +QVVTVFJJQTAeFw0xMTA0MTUwODUwNDRaFw0yNjA3MTkwODUwNDRaMD8xCzAJBgNV +BAYTAkFUMQswCQYDVQQKDAJHVjEMMAoGA1UECwwDQk1JMRUwEwYDVQQDDAxDU0NB +LUFVU1RSSUEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSE9FIBFmo +J1NPASbZ8X/6vPWynKGDAx4fTZhm1dJ4tUGlqDwZDqB6Xf9r6cJfynMw7j3+Evll +XWxkJCYyVUj0Nv9+uXnXITj0k+PVYx4UCf3ebacOfPTpw2aZBaSKI1Ykh9ReijYB +pKliOWRZpTPeqgPuKWyz0n0N05es5Zf32865wMPazG3gINPU+cHCIM2nTj2enFrA +pwcrRMz8iwfG+0STDcQ9uZ1f38oPPQB/3eKSvfiS6Z63MOZSQy1eZNcpfkfDEfeR +exT2DjHBUohVyanQJyRu2qqgU+UWtZijdGWddZ95pPi3MWs/ybUalfcd0rlVndy7 +bmltYvOOCatiXCyHiE4b2JtLun9GuNDknDjRQlhKBL2IO/luyBP0Vht1j6FNHzE2 +Dz4SMKwOWOCB1vvamLESRXkPDwEX7hZi3jLAD44872qrpBPJ3Ugz6TRSCdyEPzjU +ZM14qB/4Z0lok5cfjMQG6aFSkAQX/CMoO4aymAVbjArhJ0aBWZh23ZC7qPrhzT8C +a73/7MZX44WnDCI+v2eM4gm05957To6rTgYm2J/Etu0WvxYctOFvvLtlUUQZzVcL +FJmwDskkOWx4LJjHVDi4VzAF3vjYSBfNcroPyznNZo1Wth0cLAFI843sRrlpqOUG ++d8lRe/ji4cNXqPTELafIjK8uY2q5B2jnwIDAJTxo34wfDAdBgNVHQ4EFgQUH+FX +Lps1EhNjpQ/uPiziwdGHqN0wEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAW +gBT5fcYFy+GDaxtwf01YApU7AXt1dTAWBgNVHSAEDzANMAsGCSooAAoBAgEBATAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggGBAL+69x0vQqHTEPqZs7n7 +fWfWN6Uisk6sHkl+zdxbY10PCgtXAHbRY9tSYFjb8lzzwwUXx6J1tW19LpQKcRqS +ZEHRxLlvedQ8daRGDjXGo8/IbEq4py58DuyAt9aYvqQMQRvrMzQFPhcFf3XzlUAo +g2fUQg9HsPiEbeG7Jl6lrM20C6SA/Gj4WrVu1BIzQ3VHPrKv2BMedCovHp8Dx4EN +gvZMNQGx2CeT9Ku4wl2SoY3LBFjIdLdyhJyL4ztrGCccd9Yza7qU/+tZCsUIXSjJ +0iwbs8KFiyvJHHlBsH3y//LirlUbg4h05JnIDW1jFd7+gCeV2u4UWIC43cUWY+ms +trpE7XZJ6D/JcpaZHSeJY0ckQShORmr+cdq4KhMr+Jeb73D+zTDEo1StqKf/F7Xn +N+2Ljd01qL6Z58nx36TOh4mw2f3tOxz7otspH87yxz46jNtYwj4OpYksSw13cCFG +DH9sKk6nO5yLvCuEzsHaJwvasspMilBZ0+iCEq2EgxoX4A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFTCCA0mgAwIBAgIBdTBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwVzELMAkGA1UEBhMC +Q1oxFzAVBgNVBAoTDkN6ZWNoIFJlcHVibGljMR0wGwYDVQQLExRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEQMA4GA1UEAxQHQ1NDQV9DWjAeFw0xMTAzMjUwMDAwMDBaFw0y +NDA0MTMyMzU5NTlaMFcxCzAJBgNVBAYTAkNaMRcwFQYDVQQKDA5DemVjaCBSZXB1 +YmxpYzEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3IxEDAOBgNVBAMMB0NT +Q0FfQ1owggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCdFhq+ScQXepAA +0kp0IwF/nEv+Md3Wx41Y6WRJkTVVyU6CFPlvr/F6XLGX/ILJtM8QL97CgojDVQbE +ccNxUsZ+yjtB4n52ttWYLBN5nktJksP2aBVMu1fqoyTqBhaf0JtkpQjWKNVJYbUH +k2pXkzGUJ+YHG04jOEYIKNclY82f1Ho1Wd7di4gZ1LCBRTzIU9JVPEMOZdmLx1qQ +InOWf8deZ4Gmkj5UqzXt7vGQF/TbIedhmfnbulvyHN3UEDMZgVgzkF2fIOaBwu5s +kfo8e08/J155hZIJtUjXk/moLF8U/4ETo7qER1EkoJ9KIRIvoPwPk2QAI4JP0Hd6 +GgUMEsz0dmTxKHcJZAWXcDaKcwTrG7/xhPTAffdOZnTnOpYQPcKmjUvogqY839VQ +mwYyo+s51tVrAIe2YcdHhIdBY5SLOhHsDNadpRrBYIa8vzUgtfUH50US7dZuwUu6 +WbUiQu5vmDjvGEUa7F6eehCCf9xXkbPJZoE63t/NJYvHSFa1wDcCAwEAAaOBgzCB +gDAfBgNVHSMEGDAWgBS3eJcZgIJ4G1kMSun4hLCL9gJAiDAdBgNVHQ4EFgQU66FP +jzxpitq2EJsSNSjO1GVKCFkwDgYDVR0PAQH/BAQDAgEGMBoGA1UdIAQTMBEwDwYN +KoFLtxgBAQEBicqZfDASBgNVHRMBAf8ECDAGAQH/AgEAMEEGCSqGSIb3DQEBCjA0 +oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCi +AwIBIAOCAYEAJwAEh4vWuRFX92607tr2WKpnVwFCtVowDkP61k+ESUB26lt/qMsm +3368BjB0uiSZKUbLJXyCATXNAXMZmcMDq9k4Yu5uUomYmwmyoVZPKGSaNc9rM4Fp +NOIzD8sYTigj+gOokyUl5b3xcgMXG9q9R35sF/8DcK4xKHQUmbHcZYOE8JGyX7Ej +eF8bD1dM/d+3ptltKM91GMXdSmav47KXSJH0Ipdm1ZVsvahF6mzi1ZcGlNvwSo5H +xZEy3xElJ1x/tCPBKijBJxF1fesrjSFmPaHa/XxnynSQpDIDgPriMPjLUkiHLqYi +nQ5is57fE/IXdlyaOsKnSx0a+2f0iDnvxzI/uxkWO5jcB538vCqFDf7ndgI4SNsO +/X5s86xCOuox/uLbCoVwSlFRof+fCYTTJHxfbAe3u/xJ1b6eRv8sd3cqLGrc5TwP +ATBpB+et7915bzTFCPwCtDzycw00ndiFZ/h4Da+8B8ZRuHVAuHpb3QAYCqKp+LEU +LffonWll3qSD +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFjCCBJ2gAwIBAgICBCswCgYIKoZIzj0EAwMwTzELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoGA1UEBRMDMTAzMRUwEwYDVQQD +DAxjc2NhLWdlcm1hbnkwHhcNMTkwNTIwMDkzMDU3WhcNMzAwMjIzMjM1OTU5WjBB +MQswCQYDVQQGEwJERTENMAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMRUwEwYD +VQQDDAxjc2NhLWdlcm1hbnkwggI4MIIBrwYHKoZIzj0CATCCAaICAQEwTAYHKoZI +zj0BAQJBAKrdnbjb6cSLP9TmrjPJ/AfLMI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKu +zaEq5qOA5iiB/y8tgsaFKKpgVlg6SPMwgYQEQHgwozGLYDuJ4jJxRawjTMWUy92N +PfkWEKg0QcrqmGO8Le1dWqglOqEKLvHJi5rItX8RF6cr8se558GsTXf8lMoEQD35 +FhCoNEHK6phjvC3tXVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK3Ag+Z5hA +ULdeuuXdKAm9Y4AW9yMEgYEEga7kvdgu2WRaITIunExqk4Xtn3C12RbBtDti7vTQ +CY7/Ox944tDUjVDRaHuTuX1ffG1QR0BqXmiLNSIJvLn4In3eOF1WYzLswOq/qc94 +Iv3yCfcAJKV7GqAAxVuIH4ERstzeSUpfSF5bykvYiidjrtHKKy+o8FQGeM0eDzrY +CJICQQCq3Z242+nEiz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZh +GX+sEEcdsdOBCF3a3bWHloKcqQBpAgEBA4GCAAQQRGjMl4riey1IzlZyzAujteaD +C59q8UZ52ZhCll2ieELm2tQE0tiQ01br2+Xm9r2hNGvV9T3l4n+colDLkjdxFG7D +WE6n6tJRR+TZX0AKxw2kgwotNWn2RQ4qss5u+eNoN6z7h41XdaIK/oyIPvukyZLH +p6T0g+p3srFTn+JbjaOCAZQwggGQMB8GA1UdIwQYMBaAFBvHULFHp1X6LyV5IG5V +0i/i5CeeMB0GA1UdDgQWBBR0GkStS9e2/NW67vEegn5YpZgcJDAOBgNVHQ8BAf8E +BAMCAQYwKwYDVR0QBCQwIoAPMjAxOTA1MjAwOTMwNTdagQ8yMDIyMDcyMDIzNTk1 +OVowFgYDVR0gBA8wDTALBgkEAH8ABwMBAQEwUQYDVR0RBEowSIEYY3NjYS1nZXJt +YW55QGJzaS5idW5kLmRlhhxodHRwczovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4w +DDEKMAgGA1UEBwwBRDBRBgNVHRIESjBIgRhjc2NhLWdlcm1hbnlAYnNpLmJ1bmQu +ZGWGHGh0dHBzOi8vd3d3LmJzaS5idW5kLmRlL2NzY2GkDjAMMQowCAYDVQQHDAFE +MBIGA1UdEwEB/wQIMAYBAf8CAQAwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3d3 +dy5ic2kuYnVuZC5kZS9jc2NhX2NybDANBgdngQgBAQYBBAIFADAKBggqhkjOPQQD +AwNnADBkAjA43W+3MPMHeQG3l4DGvV4iaSfpQJDQFaAup6PED6wyTDtnuGQU+7OH +7FSR4OJ79eUCMGjFQnauizhmTCT5/eqtyXeS0rEu6DoWLtxFGlQxpzyrGrrU11XO +8rdJxQCK+vydxg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFGzCCBJ+gAwIBAgICAOQwDAYIKoZIzj0EAwMFADBuMQswCQYDVQQGEwJKUDEc +MBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEoMCYGA1UECwwfVGhlIE1pbmlz +dHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEXMBUGA1UEAwwOZS1wYXNzcG9ydENTQ0Ew +HhcNMTUwMjIwMDEyODEyWhcNMzEwMjIwMDEyODEyWjBuMQswCQYDVQQGEwJKUDEc +MBoGA1UECgwTSmFwYW5lc2UgR292ZXJubWVudDEoMCYGA1UECwwfVGhlIE1pbmlz +dHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEXMBUGA1UEAwwOZS1wYXNzcG9ydENTQ0Ew +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCv9TFZX6x5FLDWolPERHK3 +IGuI8+VxK5MX8DlDcFo/mWb1Uwa1tyjPqbiKk/65aagx+4LFLbdcCOTJNGa6N5jO +RAORIILvMaYICXmoNe4Wvh3e6Z4BglBbjXGUY+cpU4iJFqpyVWy+9kWMVW6HL0BW +7WTcO94t+zgADes1W+xJVH8eNeG7iY3VArRfgnx7cWSO8A6PqX8zSqvPMtgyxWDx +s9ssHF3fLywQEubnhv06lTiGk7IezFvnf3kHb6nHbK6pOAlq/iDBryDYV/iHYJJR +Zm/7ZZsz7wPkMczgc1FVZRptsUHZVtlnTRJIMMWFOtEq8hPPyRawk6AWmcoiLFsv +/ZOpmA/r+VCpUrssQ0+THP0JsyY2S/pPa/Smu/dVLr3aE8GQ5WIOvgx50B7jWK4A +QvFthVVSPBEzyBxgNeJ1KIo5kFEUhLaDb8+RheMfArxSwg3ggxjSL/l50W1kuFSW +izBOHEGzHbZbzL+tpu3VZFE3zacnO7nokpU7B6SWxdBN11PwZFcIK+KTyVQWr9HP +33h6XymwIdwUgkhLH5riEtmuYvu6WRXcwVR96JZQhwEwF8Dp4kUmaqz4MGlFMHHc +6trA+qsjKl4eQ2uit4l+q4ZpEz38o5geBmLgdy7JMM8GVO+60iYD98YPq2wJoqML +uGKVkzflRKVyjRT513Fe1QIDAQABo4IBXjCCAVowKwYDVR0RBCQwIoEOcGtpQG1v +ZmEuZ28uanCkEDAOMQwwCgYDVQQHDANKUE4wKwYDVR0SBCQwIoEOcGtpQG1vZmEu +Z28uanCkEDAOMQwwCgYDVQQHDANKUE4wHQYDVR0OBBYEFEhFjohpJqDQsR0rQi/F +m0Wb4ex7MB8GA1UdIwQYMBaAFGq08pKCvZZH9v8qAveUTXSel4RjMA4GA1UdDwEB +/wQEAwIBBjArBgNVHRAEJDAigA8yMDE5MDYxOTA1MTUxOVqBDzIwMzEwMjIwMDEy +ODEyWjASBgNVHRMBAf8ECDAGAQH/AgEAMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBz +Oi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvSlBOLmNybDAwoC6gLIYqaHR0 +cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9KUE4uY3JsMAwGCCqGSM49 +BAMDBQADaAAwZQIxAOM9/Wj3pPN62JZFpukQmXaTDat73/SFMEqwZOzs33Wy6fAu +qDTMu3nkCIlu+pqVYQIwMEnjy962b/1t5bfCan+bovuAIQ+GsOamNUy8B066JePE +u0XNmxKWc2VbNmcoFNGP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHDCCBICgAwIBAgICBIswCgYIKoZIzj0EAwQwQTELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJtYW55 +MB4XDTIxMTEyMzA2MjQxNVoXDTM2MDIyMzIzNTk1OVowQTELMAkGA1UEBhMCREUx +DTALBgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJt +YW55MIICODCCAa8GByqGSM49AgEwggGiAgEBMEwGByqGSM49AQECQQCq3Z242+nE +iz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcX1NmwCbxmhCrs2hKuajgOYogf8vLYLG +hSiqYFZYOkjzMIGEBEB4MKMxi2A7ieIycUWsI0zFlMvdjT35FhCoNEHK6phjvC3t +XVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTKBEA9+RYQqDRByuqYY7wt7V1a +qCU6oQou8cmLmsi1fxEXpyvyx7nnwaxNd/yUytwIPmeYQFC3Xrrl3SgJvWOAFvcj +BIGBBIGu5L3YLtlkWiEyLpxMapOF7Z9wtdkWwbQ7Yu700AmO/zsfeOLQ1I1Q0Wh7 +k7l9X3xtUEdAal5oizUiCby5+CJ93jhdVmMy7MDqv6nPeCL98gn3ACSlexqgAMVb +iB+BEbLc3klKX0heW8pL2IonY67RyisvqPBUBnjNHg862AiSAkEAqt2duNvpxIs/ +1OauM8n8B8swjbOzydIO1mOcynAzCHBVPlxBTKkmGUGGYRl/rBBHHbHTgQhd2t21 +h5aCnKkAaQIBAQOBggAEgZCVbAm4UpgdxSlJ80Y7jvzf5l4+WlHRwNrPJ8deglLM +CEAVeiGpe9m0yScxKvqK4MocpRX5jMEVD5p2jU1D71VqvNNWS8r1g/U8b0CRgVUU +bbq1f2ysC6g4AQNF49vHFA2C6jOaV0fUjFPwLbQhh9Mg7U4nXHVQknULBP5yrpej +ggGFMIIBgTAdBgNVHQ4EFgQUpApfw4CuPlmvGzLWE2rv7sjKNegwDgYDVR0PAQH/ +BAQDAgEGMCsGA1UdEAQkMCKADzIwMjExMTIzMDYyNDE1WoEPMjAyNTAxMjMyMzU5 +NTlaMBYGA1UdIAQPMA0wCwYJBAB/AAcDAQEBMFEGA1UdEQRKMEiBGGNzY2EtZ2Vy +bWFueUBic2kuYnVuZC5kZYYcaHR0cHM6Ly93d3cuYnNpLmJ1bmQuZGUvY3NjYaQO +MAwxCjAIBgNVBAcMAUQwUQYDVR0SBEowSIEYY3NjYS1nZXJtYW55QGJzaS5idW5k +LmRlhhxodHRwczovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgGA1UEBwwB +RDASBgNVHRMBAf8ECDAGAQH/AgEAMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly93 +d3cuYnNpLmJ1bmQuZGUvY3NjYV9jcmwwHwYDVR0jBBgwFoAUpApfw4CuPlmvGzLW +E2rv7sjKNegwCgYIKoZIzj0EAwQDgYkAMIGFAkEAkgdFGwJ2ybC/6Rw7P7dZRIn2 +1cNNT/ERSfGTe+zPGo05GSZ7K8uxduK57PakwkCw4dCYPiQqMuDBYNUw22k01QJA +N/spjC2j75DHCUmuxxEfXu3QpwipNs6rR501faCMdCdio83dLWqlhtaCLrt2LP3L +Xbc07m1/jsHtNmMFuhrvCw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHTCCBICgAwIBAgICBI0wCgYIKoZIzj0EAwQwQTELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJtYW55 +MB4XDTIxMTEyMzA4NTIzOVoXDTMzMDIyMDIzNTk1OVowQTELMAkGA1UEBhMCREUx +DTALBgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEVMBMGA1UEAwwMY3NjYS1nZXJt +YW55MIICODCCAa8GByqGSM49AgEwggGiAgEBMEwGByqGSM49AQECQQCq3Z242+nE +iz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcX1NmwCbxmhCrs2hKuajgOYogf8vLYLG +hSiqYFZYOkjzMIGEBEB4MKMxi2A7ieIycUWsI0zFlMvdjT35FhCoNEHK6phjvC3t +XVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTKBEA9+RYQqDRByuqYY7wt7V1a +qCU6oQou8cmLmsi1fxEXpyvyx7nnwaxNd/yUytwIPmeYQFC3Xrrl3SgJvWOAFvcj +BIGBBIGu5L3YLtlkWiEyLpxMapOF7Z9wtdkWwbQ7Yu700AmO/zsfeOLQ1I1Q0Wh7 +k7l9X3xtUEdAal5oizUiCby5+CJ93jhdVmMy7MDqv6nPeCL98gn3ACSlexqgAMVb +iB+BEbLc3klKX0heW8pL2IonY67RyisvqPBUBnjNHg862AiSAkEAqt2duNvpxIs/ +1OauM8n8B8swjbOzydIO1mOcynAzCHBVPlxBTKkmGUGGYRl/rBBHHbHTgQhd2t21 +h5aCnKkAaQIBAQOBggAEgZCVbAm4UpgdxSlJ80Y7jvzf5l4+WlHRwNrPJ8deglLM +CEAVeiGpe9m0yScxKvqK4MocpRX5jMEVD5p2jU1D71VqvNNWS8r1g/U8b0CRgVUU +bbq1f2ysC6g4AQNF49vHFA2C6jOaV0fUjFPwLbQhh9Mg7U4nXHVQknULBP5yrpej +ggGFMIIBgTAfBgNVHSMEGDAWgBR0GkStS9e2/NW67vEegn5YpZgcJDAdBgNVHQ4E +FgQUpApfw4CuPlmvGzLWE2rv7sjKNegwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMjExMTIzMDg1MjM5WoEPMjAyNTAxMjMyMzU5NTlaMBYGA1UdIAQPMA0w +CwYJBAB/AAcDAQEBMFEGA1UdEQRKMEiBGGNzY2EtZ2VybWFueUBic2kuYnVuZC5k +ZYYcaHR0cHM6Ly93d3cuYnNpLmJ1bmQuZGUvY3NjYaQOMAwxCjAIBgNVBAcMAUQw +UQYDVR0SBEowSIEYY3NjYS1nZXJtYW55QGJzaS5idW5kLmRlhhxodHRwczovL3d3 +dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgGA1UEBwwBRDASBgNVHRMBAf8ECDAG +AQH/AgEAMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly93d3cuYnNpLmJ1bmQuZGUv +Y3NjYV9jcmwwCgYIKoZIzj0EAwQDgYoAMIGGAkEAoc8rD9Pr1GysS1hiNuxqiaM+ +do+TvVqRKVRfA2Rz0HB8aAu943s15S2GiHE5aR9hVDBvaPchHizyH2JDpdGlyQJB +AJ48uIsBENi9LZiBMa1xkT1EaDitmwJTYCTAv+MjowuUEEwg6hchNfr/VL8d5gPc +Tbe3MRsFNB4B1iXaGX6fx14= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIESVZmgDANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTExMTI4 +MTI0NzIwWhcNMjMxMjI3MTY1ODQyWjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDddU24oqUZpFcPAyatYRE8BhPm1Ud75yQKp7b+X4bPbQR88Sk8 +pH+V3CYwV1CPrUN7DlrdM7tUkmpLNjUyeCHGjSbdjHvYr01n7p5rNZJq7uV4nV/A +PgmV4WRKBLUO0zPz7WH6DJ/qlTu6NGobGSj6qEBpslyazNJ9flZ0+pZuEoRjafnm +4XVluKTPPhI3MPwZhX8nnHVa+SxwA5A68vXEHbqk3Yg/s8+8Uv7hN/ytn6CFxcbr +ECcCXS3klGEyhLxd8yl2Wt6lvGAguFG0T2uj10Dp+/xR6NgKa8bFvtWi+JGIeDY3 +E+0r3+DKTwjdcIILmTl9+ITpTR6zOGizN0uz51o6EWOOc3tz/Bc0WMYZZxbQ6NMj +//QI6lrlKwnYtkas6hUAVcCRcVgq4c2iWvNNTxKjP2LWx7FK0PivNAKbBc8YAVhZ +ElyA5NVnBDjCPHO9JucMpettR/2z8NdBrETwroN7fEMzFC3oItF6ooU7Mj3PbL8I +xQmJ0nSNtV/5TJ2AMrDfH9Sj2sTdnoorIcvpdzyMvu8AA3gBbV1X8mLnTgtBZmK3 +lSregV3JngsxYhQZW4YPqEbLUIkmjMup2oaRoUA1CNCLqU6GIqVeJp7c6ycuAUdV +MLmkRW3g+r/Z7MIEqd0nIq4+O3pEM4y/5G0YvG6ltqPH0+B2smXdq67GPQIDAQAB +o3cwdTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjATBgNVHSME +DDAKgAhCvcjdDjNAojARBgNVHQ4ECgQISiTuBLUfYCMwEQYJYIZIAYb4QgEBBAQD +AgAHMBQGA1UdJQQNMAsGCSqGSIb2fQdKAzANBgkqhkiG9w0BAQUFAAOCAgEAEckV +55Y2hjxpkFeT7AmfWClWBBWCRNxWzXKd04rPknZtXnfgtFlkoSrCb4KKCvb13k1/ +ndyTDa46qv2D8lo7uNz3H0Mzm8EMk9eKr6zD+QspGY9zD8EyI0qNMP2DipGyzyJa +C6KkjjKiAYQo2WTIp2e7a21oTvn98WNiykDoKBuCzxFKCp9UsmRA5lKLK9+L83Yg +ZTHtpzw11srNO34O29HI1XU3z66wzw5WG+04meNDeYLRMxChCF81PXYOiDzPWiHJ +0q4QvOOXoR2+MU5dxmHwaYJ9M9m4q9KzW+CtsLwWmnE5fFbEZDO60sH6mc4GC/Mc +t5VJVuJ08pud94Guq7m8eUe4x5n1X9ghUV9sEvikI96o7cJjgoGrDewgw/9M3elF +zbjwjDBzFi0um0gXLLsFOB60SHrrOVXSUfQOhLrrnE4mQR93QZ5+7e3zdBMlJ/nJ +ju51tdcJYoW/IjFk7/lEmNxLI0g0zkUGlm5CgR21AVk9KSI4JP1L6fA4UvCZ51t1 +L8dZghQO9rGqSBM7+KSeiA5vkeQpyeV3HQ5AZD5uEhLLwae0LET26u8LMTGINViI +MQI4ZU/9VZqQ58wYpn3qLpFToKDLxSMsobE9WOO/927+FUTmpMtW304VR4qsGfKd +YIYBqxezA/M6obYxRbaKax9KdRpI3THEZFeznyk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFbjCCA1agAwIBAgIIfADxKjlm8T0wDQYJKoZIhvcNAQELBQAwQzEYMBYGA1UE +AwwPQ1NDQS1VWkJFS0lTVEFOMQwwCgYDVQQLDANHQ1AxDDAKBgNVBAoMA0dPVjEL +MAkGA1UEBhMCVVowHhcNMTQwNDIyMDYwMzU0WhcNMjQxMTI0MDU1NTE0WjBDMRgw +FgYDVQQDDA9DU0NBLVVaQkVLSVNUQU4xDDAKBgNVBAsMA0dDUDEMMAoGA1UECgwD +R09WMQswCQYDVQQGEwJVWjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AMZHiAXGBvcRgEK+OMzI7ul4ZQrli1Mb/l5yzYfWNYUWTYTykJCfRV7FEFT4QhQz +ocdFaG7mmKwaskM6e8Z7vO6/x/Za+iwgn6OQwUU0Je/Jte3QqCB7un5MTcCHNuJe +J+D95B/E7TbYFOaofD2aPcAUktWLIJ/qCalxJ6fbs83j33t9p7FBi4eQJ7dWdg1B +SlRUdQX1Jvip1aYgvWcrzsFGxp8aVsyVXkArnbgSzz3EZwM8aZp6iP/U8YITjDjN +T+nsWkpOkx86MAuNNp0oJ37V62f2eyMlhymM6IEyzQF7Q61dNHDt+OcU7aZ9zKT2 +RkIuEpgIfvG8O5ryGKcj9Y0aTlJ0ifvM4FTOWnqRqvKNtzuQMORpM19dhZmbP1Ek +4f2ugc6JGRm0p/Qp5tQOrGY/KEU8jumrwJRm+MhWPUG4zawStmBXTyQMrYWQUnMu +3cvq5JR3aVD6iSJs2/T2G2FGpflphpQjDYWFsW4+dkp7z0TsiQY5jJSr//NDtdKz +sFhYDf9taprTtRy4DqSkEmMPPGKW+SVe+a0OMG7Sg3nZy22F2L/We3ojrOFY0kLO +BWICO5/syqr93sOJqBCbvCGGsxe7NbbuyZ3qxro90yXz2wVIiQNUPO+/hEElOqnC +ETm0hRWFovQ0xnBuem5VP01xqVo14Va41vvy6e/6dYkNAgMBAAGjZjBkMB8GA1Ud +IwQYMBaAFD/FCRqZlXZBym9Q3dVdgcjBL2pXMB0GA1UdDgQWBBTZOzxEQuUXYMMx +RLT4czjFqndQkTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEAZUA87W7wjmg9JuW1HCIAM2P573VfaP8PfCtzY8Fq +JNDeu3mYgR73762ek5EtSGSSFCTDNmONy/FxNtSZDOVRgRATODbeBFQUEalEHiHz +yQtQxqrhKt0guyofV+pOUowYeLwXrw67CsiAFvFTy9v95GWZ6cKfxqUKjSlGyGzd +cZOlUl8E8RE5LcifCT3uLZBHJWXNRlJAKMpPc7CQ9znYJSklKbNfMV3hf96KzuW+ +2IOqqGT9qak3Pi8S3kOpY6yN9E/RKJNaXwaqwrzW57Zf7KyBrVcfOTvfL6FTBPZg +6rcAlTz64nLHDYC790NYWjTFAy28GWMWxa8YPE4A+ETEK8+mDNg4HDw8ahnZmyYk +ATRLOs51JvCJHSljXnkVCuQRJq68Ii1OdSHYt1ziFlSKoNiETv2VN2C/yrxwETrr +AMfSaCzJ/1VF+J+HaSb0BmQO3bjEook9fKGyZ9YIjG0cJEFRyQ0ylrMF1FYvL99q +ZY1jspQJ/NgtYMXYBcN127AEQzy7k1BCoyYCFIYn/CHS0bm1Z+SkOJQIvyFdDYBk +4LSPEazPN2wlJ9mDrYjFkCOV+8tmjA939vQAIIsl+4Uo2rhJ45bJSrJJplE1e72g +va0DNJ/8mDPhPgd8HWx5yhRVlzGcm2HlDTAON5IbeDXAmnbwLXb4Q6YwER31uGTS +QlM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCBQegAwIBAgICALswCgYIKoZIzj0EAwMwcTELMAkGA1UEBhMCQ0gxDjAM +BgNVBAoMBUFkbWluMREwDwYDVQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2VydGlm +aWNhdGlvbiBBdXRob3JpdGllczEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFuZC0y +MB4XDTIxMDgyNDEzMDUxM1oXDTI0MDgyNjEzMDUxM1owcTELMAkGA1UEBhMCQ0gx +DjAMBgNVBAoMBUFkbWluMREwDwYDVQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdGllczEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFu +ZC0yMIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCMuR6Cozht +KA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OC +xj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAE +qMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEE +YQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfU +rx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8 +UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gy +AukEZWUCAQEDYgAEYD75/vAe/cJBEN3usF784OiTEbJ7pGs2pUmzKcV5gXKMMfU5 +O0FHlg/FvI1MIzA5CTvPyWxbZbMy9uTSm+ZQ/albrGUTDWPRI4mW3srOE8H7lgZv +AaTP26t4dyKtg3T8o4ICLzCCAiswKwYDVR0QBCQwIoAPMjAyMTA4MjQxMzA1MTNa +gQ8yMDI0MDgyNjEzMDUxM1owYAYDVR0gBFkwVzBVBghghXQBEQM+ATBJMEcGCCsG +AQUFBwIBFjtodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9wb2xpY3kvQ1BTXzJfMTZf +NzU2XzFfMTdfM182Ml8xLnBkZjA5BgNVHRIEMjAwgRxlYWMtc3BvYy5jaGVAZmVk +cG9sLmFkbWluLmNopBAwDjEMMAoGA1UEBwwDQ0hFMDkGA1UdEQQyMDCBHGVhYy1z +cG9jLmNoZUBmZWRwb2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwQwYDVR0f +BDwwOjA4oDagNIYyaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL2NzY2Etc3dp +dHplcmxhbmQtMi5jcmwwgZsGA1UdIwSBkzCBkIAUlxGsReV6/m4NP6zZrLJrdZ41 +e6ahdaRzMHExCzAJBgNVBAYTAkNIMQ4wDAYDVQQKDAVBZG1pbjERMA8GA1UECwwI +U2VydmljZXMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0aG9yaXRpZXMxGzAZ +BgNVBAMMEmNzY2Etc3dpdHplcmxhbmQtMoIBezAdBgNVHQ4EFgQUp6n4SJ8IaBDP +vx0G5201pVtLDlYwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAw +CgYIKoZIzj0EAwMDaAAwZQIwCDJR+gVChwnwL6kid1e0z18QfLcEKQIFCdpaOR6k +VpJQ1bmDUAc3AKhrevF+gdFeAjEAgFmoRvpfA/XQuh2xY8NfKMHI5Cpc8A0IZTHr +73ZMNRLyUm386mHBlMCwvKQwUqLE +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmzCCA4OgAwIBAgIBATANBgkqhkiG9w0BAQUFADBdMQswCQYDVQQGEwJJVDEf +MB0GA1UEChMWTUlOSVNURVJPIERFTEwnSU5URVJOTzELMAkGA1UECxMCUEUxIDAe +BgNVBAMTF0NFUlRJRklDQVRJT04gQVVUSE9SSVRZMB4XDTExMTExMDEwNDU1MFoX +DTI3MDIwNDEwNDU1MFowXTELMAkGA1UEBhMCSVQxHzAdBgNVBAoTFk1JTklTVEVS +TyBERUxMJ0lOVEVSTk8xCzAJBgNVBAsTAlBFMSAwHgYDVQQDExdDRVJUSUZJQ0FU +SU9OIEFVVEhPUklUWTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANGL +WM4ts0s0N6WpBQH3MXAZ1Jndg+JhU4/R+t+ohZqemOudXBcyqw6QClm5irMeTEg6 +q8W21N/vZ23H1739VknpK1XuRRJjFcmkYgEZ8aD1WkRguHDoMNtL2ikF1qc1QAVG +hBedDJjz95YsAEjGFhMh38vkhqNqHTCOmYbjLvd6SsVBAOkULvm6b2rRn+uGidXI +hybKCgOGlCBV0KQ2KJSUVZ4jhl0QjicuOlxZCa3QT5FFvMHmjedhst2thpFlxaV4 +zSIrF9r2EvAm1piOkYqaDQPb10GT7dzvDtgN0/3Gp2ithW/xaUnb1e/dzSvD6EZe +mZHyzUEbdFfW3kG0M870JeJJqWa9pCP8s7RsxFy3E3DK8x9FcoIXwvu4Gh4Qp/YN +Q6CsGNmRMd3SWxZteZ6NNmsqCDObAhEE2DIHXVK3Wo55CysRQHd0AbUUo83KKFaj +KV4bc8zvqgxBWVP8SniyJ7lhQD/D5l1V4EId0+gFQgLV3L1KS5JzYqcyrHers/Ha +Mxj6kAQuEItXugjWLxRo0rLJzMHbxwHmo9ySWQfnY4wl+msXKEAlS3r87XLOXDe4 +Z9HQKEwYeq1ONhk1lo1rywPWaEjhbQlD5ngdqCaTBnqnRSTmgUwWMnC8VnWpsw4R +5h5pa770u0KLUDdU57NaiSSaM6/Y+Si/pClKo9NlAgMBAAGjZjBkMBIGA1UdEwEB +/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEjPhBIo5s5m+tqz7Zb+Tr831xJPMB8GA1Ud +IwQYMBaAFEjPhBIo5s5m+tqz7Zb+Tr831xJPMA4GA1UdDwEB/wQEAwIBBjANBgkq +hkiG9w0BAQUFAAOCAgEAYAk+LyKVEVFAoY5tMo8HyL6sdMnRiCV/Qujp2/B7+P2/ +O4XU0OD9Rcw61oK25sRf3QGJ9SCdMVHwiC8G0Ym7O5GWcbYbT4GTuhY7GnqE564z +L8P72M11J8fqE4ehYSS4zyM+NkPWcG/BM2xK0SyvDLvNzigygZr5VgemmR0PIKK+ +HtYTLTZBgEnbxlZczwhyc6Lo6xoW06ZbF47lIyaUYbnvepciu0EXiEnigGa7fS5H +r33A3NhWrWJmaMMWqxKaV2YI+JSESfdZ3x+QazTmFGUQbydidKbTqn4jzB+bFmow +GnMHYhv+jDesR3NmmiEiEM91xtFlHIf0jRdijFvK2ml+Qm1rli4KPQTYoVYSKtVp +c/i6U+JiYHkb8ZkFuoo96rV4S8PgyrmdQqGResjPqV8dYgDa+r0PW9oUjXO+47qC +Z7A54+0oCS2AzSVO26F2kJYAr21c82ncOiA2Pb9FTbPoMiJkfwH3bNm2I3YP6qDR +ONNts/vA5JfdaZbkSmk275FJHm8hTukPjHodLlfCJ4ACZYUD8pd4qdYF2W3oiIfR +je7s0tSPUgZwmI1tC2UOpONIlMEV5ovil+0rgDMB6jEkViYl8lfCgz7GUlSukdHk +Y4s+QUWdKhwfngh/rKR6uQeAn5rLb7coxiLmDZFGFZs9W/u0k7rCbFaa4v1X2M0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFoDCCA4igAwIBAgINAJpKQhTrVYVaZBFmCjANBgkqhkiG9w0BAQsFADBCMQsw +CQYDVQQGEwJIVTEMMAoGA1UEChMDR09WMQwwCgYDVQQLEwNDUk8xFzAVBgNVBAMT +DkNTQ0EtSFVOR0FSWSAyMB4XDTEyMDgwMjA2NDk1NFoXDTIyMTExOTA5MTkwNFow +QjELMAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQ1JPMRcwFQYD +VQQDDA5DU0NBLUhVTkdBUlkgMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK85CyyBDqldwo49Zn9e9GhDsVgjp6Fmt2BTqfZd9m9aDFqgHMSkVGMqwpW2 +u/1zPAYmoVzYzcVJ2fbkfctWRT5FesZ7VNOjtK1MfsqvpLrPklv7Z19OYimqkope +GpQH4PgzLStAYZMZWs45Q/WLmOR5XFfGYrGHydnnqd+hnZsyMhAWC2QmOIxRnJg/ +juM+nIkRisuZ4DK5SxQVDhambNVMVecoWwROxCkEuDhXa1T6sqTP/d/THcP2D/bs +oMRGezSubdMj8v2I1j1NkHqDsa4h5NClL/lm3AQBXsGRkhe1LqLjBxXKhfZZfbwI +ujNMG3qPncd0wRi3wPt8EFzvSP1XIDXM+MLp0dbJIPHY4YQsDXM3DcyTWcr3er2l +27ZD8IWUuK0zaooWiqBuz0+6lbM9MDhMveeNzTUcamqHoKhyLilcCK9KYAI20r3b +lwYKxggXYEEV8tQ9vxj6meqDZUPsnLgdAQeiYDVzk7A+Cd2tdJqzKxWh6L5D9NIN +n+Y9+6Vejg5QlF7+AFiEISbzSbWvd1VoEccLufeXBCcfdS1HAqEWbe+fKOrs/ywZ +HQgSxEvVwCGtd2C5TCPtilQKPSNVCq0+/ao0mHDf02Udkt1aaVlOZuDoNnD652ZL +/c+zoWYEZn9L3elfDdDn0EDa5Exku4pdIEIV8ZdSMNFBr9TpAgMBAAGjgZQwgZEw +EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDD+ +BwXMhWgbVm5Fv4wrDmQiguwTMB8GA1UdIwQYMBaAFPmnrmsegMC/JBanHHvW0kN2 +vPsMMCsGA1UdEAQkMCKADzIwMTIwODAyMDY0OTU0WoEPMjAxNTA4MDIwNjQ5NTRa +MA0GCSqGSIb3DQEBCwUAA4ICAQCo0rWE7PjzRvsQioVIKwtOVrRMSrFuI7T4/1I9 +XgrX0gFfBpxqfsF8S5GrbpW1hEpMlxaMSlvMCY6PFq3ZDzpRtBF8a8LxgY4Z4Q1k +YBvCo36Emj7X6ikZgHIx+NizL25LlImkNLc+pYVwXuJj+JblLpYl/wz1A6R4S61d +8v9nHJtJbcKTB0GeKIXxJPAU/JPL/0KTI37XYvbUIdvwW45ff8YzjqyzzvYDD88f +psc9NwOcjFYHSXO1s4cMm74oDpC8cXTqDRNgUYCEiwnIoSNJWzL3vqfQ6zYKTWZ5 +DAOdUyq7Rq5T0ijMWS6tyh/uURCA4eumdhEOB0V17Xjb4TnrCjjSwkYG1TslQE2k +SmrEYRpyNhJM1H9cS/PrVezerGdZvAytvgWCpzb+45jLyNMo0t49EfWSNGJZGPPI +imBa4HjA2GHprtlhiWMDodJdYsbRzw9iBnkkUf2fyY8+VLS6J/vunKUcAQlRwNjQ +2xxMWnxpICHQrn4lk8M6bi0nQs3yINpBMXmUk5iMZUInRyx6Eg/s+8Hgd1qmW9ZT +QCV+iIamaJ1kuZAbcURjoR4kawLvnLJV6L3OBcPz9MfUntPmXpcOCkDk4i0uJLLT +mucMuenkUg2syjfjp44WY/QbVA4PWtiWpXJVpktr5oTSmz1xvnjYCOhHY3WAyV8U +EiaUrQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +XzkcLkQrxi1Q44u6ZB0uZVc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF/zCCA+egAwIBAgINALlpUVdtBtGI9ZrmCjANBgkqhkiG9w0BAQsFADBDMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANPSUYxGDAWBgNVBAMM +D09JRkNBLUhVTkdBUlkgMjAeFw0yMDEwMjAwOTE1MDNaFw0zMzA2MDIwNzUwMjda +MFExFTATBgNVBAMMDENTQ0EgSFVOR0FSWTEdMBsGA1UECwwUTWluaXN0cnkgb2Yg +SW50ZXJpb3IxDDAKBgNVBAoMA0dPVjELMAkGA1UEBhMCSFUwggG1MIIBTQYHKoZI +zj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAP////////////////////////////// +///////////+/////wAAAAAAAAAA/////zBkBDD///////////////////////// +/////////////////v////8AAAAAAAAAAP////wEMLMxL6fiPufkmI4Fa+P4LRkY +HZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMg +rXRuHTtii6ebmFn3QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS +3Cn49B29KJoUfOnaMRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////////////// +/////////////////8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQNiAASK1Gva +/d32JiPZoY3KHxT6uOWYYL/3kUzpN8DLb1IGzyK4OkFR/W994YAvM1UKsMrnX6F5 +awJlsCPnwEFZ3ZylxdhH9h2lMkwPt5CZFJI3YzK+GLIpRzLJYnIVAnCCJcujggFP +MIIBSzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQU5XZDYKLoiB6vTq1PAbh5vEZrLsYwHwYDVR0jBBgwFoAUQAR4QSqLJHese86U +IqOHnkLPDpwwKwYDVR0QBCQwIoAPMjAyMDEwMjAwOTE1MDNagQ8yMDIzMTAyMDA5 +MTUwM1owDQYHZ4EIAQEGAQQCBQAwMwYDVR0RBCwwKoEWY3NjYS1odW5nYXJ5QGJt +Lmdvdi5odaQQMA4xDDAKBgNVBAcMA0hVTjAsBgNVHRIEJTAjgQ9pZm90QG9pZi5n +b3YuaHWkEDAOMQwwCgYDVQQHDANIVU4wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDov +L255aWx2YW50YXJ0by5odS9sZXRvbHRlcy9DU0NBL0NTQ0EtSFVOR0FSWS5jcmww +DQYJKoZIhvcNAQELBQADggIBABc7E+4JrW82DEjNj9ge+1z/mvAwVWjJyjBePEV4 +OVh4+maMiRiJaT+DDD7O9miwYd0RZTTWdfLAqvmxCFFTDPr06kGSH4Hy6rrgaNUC +oxJTZqA1AgdOxCT1Nf8/unjZnVTJTd09cUGQMinSW6TTA8LXy9MkXpvuOy7jhIwJ +KU2xsx2S+xRgT+26txgNWWD6b1d00sxVlbSfLUHH1w4j4TPRE+146iw6YEe8Ll5I +mfnYfIrkYo0yRDl0KylJ1Odpsj6lx5pMGMkYcozgpY81faIkGWCmdwdPF7gOg1sl +kQMLICGpspi9U2topgIHEl8qYeNBfSHuzsFHyB3REuoGyU3bY09vs4QsxHQrfX0u +gQB+Xs8epu+Fy5kiYp98jGPLT4mguul/YS/Wla9J/42CkmwqKVPXk5Rdb3AGiWBY +YwcSVypt71ue9bM3IfjifQiBC39bqYGOzDiaDutiBZ6T2UxBckR+D2QHQZlQJjj5 +4Kyg/s9BTKtTD0tpL+upJyBPfMQUvc9vq6GLwdB3uNi8SltFl6kVZnLyYowsr8kX +5vAlmhP9tbeXD0fxI2ijNStdY8scwlvaO0gWTEbKjwlwKBQKGdxcwaKUBgLJDRsB +DhE14YE71XwJkNCvZ20gSwiA1DZadbG7ZQjvxVBOqkiEZ1YehOyU7ci0vqdrcUce +DtQP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgINANsCosrRH+T/oC3nCjANBgkqhkiG9w0BAQsFADBIMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQ4wDAYDVQQLDAVLRUtLSDEbMBkGA1UE +AwwSSUQtQ1NDQS1IVU5HQVJZIDAyMB4XDTIwMTAyMDA5MTUwM1oXDTI4MDQxODEx +NTE0OVowUTEVMBMGA1UEAwwMQ1NDQSBIVU5HQVJZMR0wGwYDVQQLDBRNaW5pc3Ry +eSBvZiBJbnRlcmlvcjEMMAoGA1UECgwDR09WMQswCQYDVQQGEwJIVTCCAbUwggFN +BgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////////////////// +//////////////////7/////AAAAAAAAAAD/////MGQEMP////////////////// +///////////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+5+SYjgVr +4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEEqofKIr6LBTeO +scce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9d +npi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////// +////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IA +BIrUa9r93fYmI9mhjcofFPq45Zhgv/eRTOk3wMtvUgbPIrg6QVH9b33hgC8zVQqw +yudfoXlrAmWwI+fAQVndnKXF2Ef2HaUyTA+3kJkUkjdjMr4YsilHMslichUCcIIl +y6OCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTldkNgouiIHq9OrU8BuHm8RmsuxjAfBgNVHSMEGDAWgBShKuMm/CsN +dqhci0cRucHCIGHJGTArBgNVHRAEJDAigA8yMDIwMTAyMDA5MTUwM1qBDzIwMjMx +MDIwMDkxNTAzWjANBgdngQgBAQYBBAIFADAzBgNVHREELDAqgRZjc2NhLWh1bmdh +cnlAYm0uZ292Lmh1pBAwDjEMMAoGA1UEBwwDSFVOMDMGA1UdEgQsMCqBFmNzY2Et +aHVuZ2FyeUBibS5nb3YuaHWkEDAOMQwwCgYDVQQHDANIVU4wRgYDVR0fBD8wPTA7 +oDmgN4Y1aHR0cDovL255aWx2YW50YXJ0by5odS9sZXRvbHRlcy9DU0NBL0NTQ0Et +SFVOR0FSWS5jcmwwDQYJKoZIhvcNAQELBQADggIBAEGUMptMsl/3CGPinkLjcaJ3 +/gTlT+U7wXQeFH0hMnqv/RxSrArZU9AckwL4CN2z+wiypZ7djyut02dV6/TdMgph +AKagvjZ/QZsfo3Bwa5sW+ZrSnUyBTFQF/+JcYX8f2Q5qdibRQsKYQyumqYB6HlGl +oKpjSW0ssC5etUr1EqfjJH1N9dYCX+0D0Q2LRr+GqC974x+G+VSee8QnrCMMsTdh +swrcUXS+r1HQo9Qn1RIdFiZoT/LvAixhSBplMmsQuLLnIHLH3vcLMpcwrMyE1lFl +S3aV9y1iREvToj2O+1Ym5j49Aq+uWm9RUYlYcuW+Fk1w/W4uQQW6Z8j03Lltjhww +d+DurKudZgn9z4tGg7KCza7qxTdHxPitByLOR7EPudiNSdrpbAwt2ndfBiiriby5 +WyU0npwuJBOa98gitXt1Zk537MhwKHF5oFh3A6hWepATuAHKnCtP4xnMq6NswddN +JBmAhbr0Dhr35fPYlnZQNFb4vMyhbUgaGa1VTI3uLkR2fg3p4UE9ZnZU9/XoxbZU +Q0uFfPs0jk6VA7VeiH+I8Bv6yqpkSgqwqZKO6Fstn14ZMPrwJLHeHc4BAHAoc2te +ecQdVBUq3ormuXUluzL3IFzWrkA7Fh2vlflM+/5916ZPydjbzRUmt96hK0TvpFp3 +L2pxGxOtqPjwTfaXVogg +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGDzCCBMOgAwIBAgIIQOs4OWh5GwwwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgME8xIzAh +BgNVBAMMGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRswGQYDVQQKDBJSaWtz +cG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMB4XDTEzMTIxMTExNTExNFoXDTIy +MDUwNDExNTExNFowTzEjMCEGA1UEAwwaU3dlZGlzaCBDb3VudHJ5IFNpZ25pbmcg +Q0ExGzAZBgNVBAoMElJpa3Nwb2xpc3N0eXJlbHNlbjELMAkGA1UEBhMCU0UwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO4Sn5Fl67Cu9bJPCXOjCOGG3D +9DdUqKf1rbej88v/kFGHkRk0bEkRm0CaziRUwPxxQsRrdTSn2IePX8rqm7PBlVg/ +AKHixuXPef9YPx9tp9V1Zd3gKxZThenfIHuoLwkUjto8iADD2WNDhrvkQRl6f9RG +9lFKVsxpENEIMQ/JR2AL1KBqRFcMsyWCga5jq9SJQjUMI/uH9yl6Tk4Z6tTlypMm +j4POS82qRndrOtXPmaDQCt4NTzvlMDXnlOxLmO7Oy2g89Kov6R3yjFJS68GZDfVB +DvNwzeKdimliQwjeO28x7hgeaLTNhXvJ0FxVecDVCisjBEMzKFi+X6KImieCbxCn +Izz+KXns33M0+iBUezqkvbtBhG9U/VtTv3e7RcgcaOXi8MBXtSig89l42WSMDnoM +7EE5hXQDdZyM9n5r5nEZnnIoFCsodDkQcrAiV7/1up6dHjId7JQT50bwL0MAcf5i +DiboqFh3zU1b5HZEiQvFqkLihO5+IyfqL3qleoldmwfImCUq5Xjv8lKxXU5LIL0g +V/c0vLX0O/vqtw74UebvQKQQ9DcZIt8lzaIbj5FrI9Gk5bYbBa4ykHnIqa6jnSxI +PyxQImVmkhaLgOZHQivS9nnUSWxFajdxknhP2bU4qqXdNumzeh+4CX5+5ej8k96u +zlc3rv/mP7qz7ppBlQIDAQABo4IBhTCCAYEwHQYDVR0OBBYEFBP4qm9aUqAbV/LX +bvw6V1wiXiTdMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUOtRdqXuS +yO2ch41v7Arfw8gEih8wKwYDVR0QBCQwIoAPMjAxMzEyMTExMTUxMTRagQ8yMDE2 +MDUyOTExNTExNFowFwYDVR0gBBAwDjAMBgoqhXBUZAkBAwEBMGEGA1UdHwRaMFgw +VqBUoFKGUGh0dHA6Ly9jZXJ0LnBvbGlzZW4uc2UvQ1NDQS9TRV9DU0NBXzQxMTVm +NDEwNTc5M2RmYjEzMThhZTVhNjgxZWVkZjdlMjc2ODEyN2QuY3JsMA4GA1UdDwEB +/wQEAwIBBjA4BgNVHREEMTAvpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2Vy +dC5wb2xpc2VuLnNlL0NTQ0EwOAYDVR0SBDEwL6QQMA4xDDAKBgNVBAcMA1NXRYYb +aHR0cDovL2NlcnQucG9saXNlbi5zZS9DU0NBMEEGCSqGSIb3DQEBCjA0oA8wDQYJ +YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC +AQEAKm/Z2hvSNCJdkmG1b14nNLL13Natjt9/htY2+p6vYCRuAkDtL4i9X/K3MPDk +7BxozrsLfqqKxZAJWcbtPnUMfejYSy9+IPzZ/jemRA9SdJf74bYdzn2GEnYpglV4 +kxmA/rF87DnsVaMIguSKc/eg51TzN6dMnk+PxUYB+1OljaH1iS3vK6wSLj+IWIvc +SJqqCLghCB7mjZjZgBC80nbh5KG/8fephULuyqLmRoQpG7RbjD5Z538xW1iw6jXc +f5bEPiM8Pj4GkY61HOND/xFaI4ligZ8GGotylpBOjnoCof6yqUiFJe6kU7CfVIWO +OuLQ6xm3P2ROFiuWmR6h51G18Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ky2D0aLy6x/bkXd0DnUuEt0f6nU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLjCCBBagAwIBAgIESS7rKzANBgkqhkiG9w0BAQsFADBBMQswCQYDVQQGEwJH +QjEOMAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBBdXRo +b3JpdHkwHhcNMTYwOTA5MTAyNjMxWhcNMzMwMTA5MTA1NjMxWjBBMQswCQYDVQQG +EwJHQjEOMAwGA1UEChMFVUtLUEExIjAgBgNVBAMTGUNvdW50cnkgU2lnbmluZyBB +dXRob3JpdHkwggHMMIIBZAYHKoZIzj0CATCCAVcCAQEwPAYHKoZIzj0BAQIxAP// +///////////////////////////////////////+/////wAAAAAAAAAA/////zB7 +BDD//////////////////////////////////////////v////8AAAAAAAAAAP// +//wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt +0+wq7wMVAKM1kmqjGaJ6HQCJamdzpIJ6zaxzBGEEqofKIr6LBTeOscce8yCtdG4d +O2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/kpLcKfj0 +Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////////////////// +////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IABGCi/3XqrTwy +e7VZrhZMAYxYsU8TKMTJCCOeSpFyJFKUd2t+/dmnA+A7yFfR/xjeFBGjW1AtkHKP +1G0aVtt2lFgTGlL1JWT2As7I7l9RvGywXzCSA+TXPUIfD/CfvC4sIaOCAYIwggF+ +MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEAGA1UdEQQ5MDeB +I2RvY3VtZW50LnRlY2hub2xvZ3lAaG1wby5nc2kuZ292LnVrpBAwDjEMMAoGA1UE +BxMDR0JSMEAGA1UdEgQ5MDeBI2RvY3VtZW50LnRlY2hub2xvZ3lAaG1wby5nc2ku +Z292LnVrpBAwDjEMMAoGA1UEBxMDR0JSMCsGA1UdEAQkMCKADzIwMTYwOTA5MTAy +NjMxWoEPMjAyMTEwMDIyMTU4NTVaMB8GA1UdIwQYMBaAFK1L52V+6s7S4WjNkTFv +YYB/HJHjMB0GA1UdDgQWBBTbHRZXx2AjCJsBOeJhPAghNLV8oTBnBgNVHR8EYDBe +MFygWqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0dCUi5j +cmyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvR0JSLmNybDAN +BgkqhkiG9w0BAQsFAAOCAgEAauU2iyL1TqHKg903E/8pyT3R8KTDSFAloFWckRZ6 +t43H8Dl72hSsnLqXN5dZAwaS0cg916DPoZ7yOf8B9HDtO/b8Rt2Z0O5IMLZDI6UB +AwIJFynviR7RKp3ExeA3kWQcOXQFCc/VZtcekNuX0Qja7n+aHyhlHLdM+e/d9P2j +X/j7FS17ZVAhZu7Z99eaRolKCKx+sXGB9OGQ3KbLFYVBa5qOa70q6beqvq9t+VE8 +zetzGn+ZwrFBJuVLPx7vWF8ynKZGfDijfssqoDlYWlQdYj5D+3iM4vka9iBb5c+R +XiaE7ZWXNAJ24RbFplNYjjmhk9cjL2Xu/c165v9u2k2Szq45FCQcUbqERyWq6B+N +u4bvmNM6VkS9F9paB+Ugt2qP/rBocmfv3wrKxK/uhRj0bso/EOuTFkvQVgj6p5u7 +mm8WHEtCpTwbb2arVqtVgigdDOqHK2WtpIs9EsMbjA+My8gCbNta4kFsoK5bpcKD +2A9T3cCwmad4aG56gAUjK4oEWIn2mBGVgp8sowYO+4ySJulcTF2QlOT/9MJYYs5v +WTqZiDULFrwOVVLNIe0x3wC5IiHX22FbCJ437JvWrWZWHBsg8DHWYIALNctpEmBB +WAWrzY46KN+YJgG9bCmd7ElDZOstru7Gpo/roG1es+Tcu6GZavftKe3WJwhTGoNk +uUA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +QaY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Qf647ApIR/vy55Hu0w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +0UVkHBZeCGYq3BUH2g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +iOxbWZouBwZ5CrwNCSk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +IzaIjIz89QCMLXUxWK+xhD+yvw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGQDCCBCigAwIBAgIQXC0hs5sR8ZxM6l5jDtPH5DANBgkqhkiG9w0BAQsFADA7 +MQswCQYDVQQGEwJVRzELMAkGA1UEChMCR08xDDAKBgNVBAsTA01JQTERMA8GA1UE +AxMIQ1NDQS1VR0EwHhcNMTgxMjAzMTMzNjI1WhcNMzIxMjAzMTMzNjI1WjA7MQsw +CQYDVQQGEwJVRzELMAkGA1UEChMCR08xDDAKBgNVBAsTA01JQTERMA8GA1UEAxMI +Q1NDQS1VR0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCNSjWExKiE +ap9UKICdupYz1tq2mZ0edyqe7a8IwfsS6iLF8Az1RL7t6miTYeRNZti6mpCOQOB0 +1tD1pPV8WhJDvvHpoW4btr02N02KKZo9iujbZCGk/PvOloP3W3PX5lmo5QK9TE2V +6P0jAG5z7JKBCBrwK4Qhmr+vnwItGdFvNKrzzOwg8yKGA76/spy+I0OYs7EwxdsD +mJnD0stbUDE/kFOht1VsTc47tstuyER4qQbPdUfYjXRbi/Und2tROC0LHhuLqkQI +uvEkpa4TorRAKpxL/pe513Q+NxGeCqJQpstDBmrZ35RHOiUnL5+tc/LBxJroTCqi +K0C5NBf5OAWGmbWFiZCt0+43JUd2bu4CpvLpgurI4jNyYAIkSs08c5dCR+DIZmxw +wrzKJlAHPJxWUtfihZNlbAjUe4k/h4Q3iDR6QvfiUaAcHg9jl/zTe9Fs7a6X4e6U +a6SB+ESeGP3YwE7MAT8OCIjuq7FTneixbFNmUy5xHKugfCMDld6q2FFTwHM80rMh +W6Cj4a/QrCYrmy+a9M5AQDuGvvOPMknD0b3o/exEiiNJJVWCcENsQIZB9qlEusAm +oy/uHxhLC/age0jRnrMmT4Z6JCrr7AW594r6tatm/eqVt3xQCoTZgzq9NMno5moX +rrUkhRDsu6y142Nd+erO0g9CHAP1B1lbnwIDAQABo4IBPjCCATowDgYDVR0PAQH/ +BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgxMjAzMDAwMDAwWoEPMjAyMTEyMDMwMDAw +MDBaMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANVR0EwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcMA1VHQTBnBgNVHR8EYDBeMFygWqBYhipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL1VHQS5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQy +LmljYW8uaW50L0NSTHMvVUdBLmNybDATBgkrBgEEAYI3FAIEBh4EAEMAQTASBgNV +HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTwLbIUktyNZzjEbrPFhph3efAvKzAQ +BgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQsFAAOCAgEADOpL9DoEBBhDtdhA +pL5wVF5w198SJ8UbupqahEu9y1BYapgc/yhuRadho9gKOb4qaQlbRYmA5c+RC8bS +khFWyrTIvEAb3wGVVyabySD3bvTBxQG32CO5gDL+ojMw7dZX9jGXpgn7ewnUbP/s +HKU9GAbWkGtmn0TSilTx+7NuaaqLjY132ckm+onWOZY2Z/kCRn25dE4bHdgGPpK7 +8En+xvzNutGGgSHj/AsTtTio8jq8/dQsPztqGu2zTF0kNrF1nMdIlNVmDGbpcCvM +Yh8LggI8fmKTXj6+FNaa4iUxxLErIsEjOGKd9eQ3/S95134POiq15qp18J6oq7D+ +L1MbqwB+2EIAThTXG2NYbr19iAgU9Ss3oFqCT5sME9f3NojSkgtUevRRBct7dgrr +AfHFlT4q+qjryYSX/scfzVLtqsFQjuW1YSh6c4CaHCZ1CLCQlvcqJTQuKpn7pLRD +U3Rvls0b9VYw240VL6vJQr1OKceiyxPhTyL/O/RLTvPy19KUXmjqyZNWto2vj8qC +ES04W8Jjx+fUd/BrCjRZhP9yCztM7cVU/Wim5WwrzRf9px9+Qqbi3COjaywZ9ZEe +QpBC1PbMJQ3DysfOIdvMAme01Yi56cMT1iLkI+Rk9RqswOCdlCVM2K6PBRHCekSR +8sVJJ7Rf6TZFI5mfQCQeJppx1G4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGTTCCBDWgAwIBAgIIft37QlgnDf8wDQYJKoZIhvcNAQELBQAwZjELMAkGA1UE +BhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsM +GEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAe +Fw0yMTAxMTQxMzMzMjBaFw0zNDA0MTIxMjMzMjBaMGYxCzAJBgNVBAYTAk1DMRMw +EQYDVQQDDApDU0NBUEtJX01DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9u +YWNvMSEwHwYDVQQLDBhGb3JlaWduIE9mZmljZSBvZiBNb25hY28wggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC5DPsHIVqHQkZWcX6dGe/dEF3+AvJnukqA +F88Mla6NtCzrrIjGbZ3OVpDDWPSnYTho0vY0HIBhlcaAH4CQqo+yoJUo4dwTB63v +qwCRl4Y64/uKs0f1Y8YgrwWajsblSf3Ic6O5/8IJopSNDRsZXKPTsdGASDKPNpKq +iOrEvbH/2tX7eYaLsRAvXJNp+QaPWK27LSiHsxye08bBTr8aJVA6AETrr5M2RNh2 +EQrwwZh/IUnB7aJvBWbewSh0MqAHMt8WOS693xzDRfVruJduWk5HCglelhL+gFER +Cumyw4pL09xASOJIMYr4dEUhdjEeKoXiLdYjzIZgi2UdmUX8iTTSZXRg6XrWSqpy +qGzaL0MfNbh0UWVbzweTrOVJd9jWx/GbXamm6GSj1zXmaRZ2R2dwaKEt++ZL3/Xy +EJgkbPYRrJYg9z7s/hASNrbgfP+FW0AoYXfQaWsIB3gtk5YaCc5XTJTWTmNI9T/9 +n2jRaiS0M3W0gsqZvVrtZuj8hXYAzPzEeghGqOxO7hDXtHXItQeIWgZ1E8Cy/hMg +kctGBg4gUzpnDKgLx0JNS+8YnN4b6FIbGZrFEdZzBktKteWYAaH6hdaiUrvsO9w1 +Irt1YUJP0XAfK/eKbIktCojYJBCyzM2zxBNGacuLCJedLGBCEbFJORHZXwRfQDBh +yN5FFRPzqwIDAQABo4H+MIH7MB0GA1UdDgQWBBQwMpx8/n2PAu3FElrg61e/6IWJ +KTAfBgNVHSMEGDAWgBS2Z14kvOjmvSyijgwbshPf11MgPzA1BgNVHREELjAshhho +dHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wKwYDVR0Q +BCQwIoAPMjAyMTAxMTMxNDA5MjhagQ8yMDI0MDExMzE0MDkyOFowDgYDVR0PAQH/ +BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwMQYDVR0fBCowKDAmoCSgIoYgaHR0 +cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIB +ADph/hzT6KoC+PpWaR7jwb+Y3vcQ5+wXocAz15vWtuALT+LO19IQa7/ybopHhBq5 +7KvK0KWbkjuY9FP1rd8k3EGlez4sVYyc6QdVNK0DIEFItJ6OHMR+hmL5Bt+4Ls2D +Er848rtCuT9t9R+L01wK78ZqP89aOzhs7bg7TEgUwAeMRu7CaYazOxYAYvb81dQx +S1oFbfEy2lQXIMAHZtEsF0b/sdXdY0Rml/CnujFREpBT+D68aBWFctBBFJ4QvE6/ +I3G79oVZuzAVHr7++WhhDbo0wi/EF2G32bLitX+A+9KKtXK1KHMnSwezxIasXnbj +PFsza9JIYDO7KILI8dcpMxzlzGxrK/49Vb4C77grv1TZyRRYgCHjUuem++KyFeCt +eEL0CF6WfUmKO3Gve49D/6pP2UhmwvIisLC9t4icK24ZSR2Z7zUAvgLW4njLvhAK +Zw2c9luODwG/AX/WfN/ReS7uY/+KKR2pOah/5LCkMgs1cy+95n53hSS/QVsvxMv5 +7OR6yMGthEkl9JLmQVo5tgpVr8zVSFqeevsAvoByE1PiBeZu6PiXuVL68Hdocjqk +h8G6mdbV6cuw9RbHiEp4drbvaCKKiWri73uKMCVKX8HK1fxDH7gT3c9kevkpKP7j +L5KvcNtmaJTaXbJCUdGltPunkZtLqbXG3NnMYryiu7ih +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGUTCCBDmgAwIBAgISESJ2K0CjRcG9aEUnSRYdi6S1MA0GCSqGSIb3DQEBCwUA +MF0xCzAJBgNVBAYTAk1FMRMwEQYDVQQKEwpNb250ZW5lZ3JvMR0wGwYDVQQLExRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEaMBgGA1UEAxMRY3NjYS1tb250ZW5lZ3JvLTIw +HhcNMTcxMTI4MDAwMDAwWhcNMjgwMzI4MDAwMDAwWjBdMQswCQYDVQQGEwJNRTET +MBEGA1UECgwKTW9udGVuZWdybzEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJp +b3IxGjAYBgNVBAMMEWNzY2EtbW9udGVuZWdyby0yMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAwTp0pNKvCDsoph5q7QfjvFSKcEqnsqOK9g7qjJ4wEifP +nj6bkCDijZQLo41JzYa8EERcGYFADeu/Mq1pslj5o4Q36HxfR6QU/iGGh1vD38aM +guT5ctS5+8IfBjUGNoXEycTTrv8tG1+CwnP52eIEVHI9wL/MoN1YD7dV8ZLlMWrZ +kLQucuOvC0DEpYyVXqSPFZ9U5iOuNY/wZL52Kf+7nTYt0+SNdUuzdyY5gz1KJNwf +Zze8oZL5d7cIO2DuFfj1Cqk2cNtm6+UYx83nHDu87ZsQvHRORyPeC1JehlMaDFQs +YPH0+sNuzdsXydG8pFZs/xJSIaLrKX8bM77CWTz465sJEK906U5QedblJfwsMthO +az1unF6XRIHuC0fRc1N+Azb1lFxYtuNGiUSpLsK+4ylgmUqlyFT5zHz0nyIYIxPA +fjoYil3USwddwsQa3Rj61NVya2yvI+T6sAOLVe2SovLhKPQZtwieaLB1Y7evbzSi +XaY28FnxrbvXrYofpq58Enz6S+jHar6fr/2v+GmcYHWYB9C5x7ONrlHTGZjzioZl +c4e5MBHLvYKz78ET2JbyBMHRWBfAaQX9krMqvNamqeCMgH2STd1uDnWpHotO/0uX +QCqLDIpMx6WqYBQ7tRje7+WWM/18EBlAqg73wKHpfTYrFQcrrRORDVB4PxtqbosC +AwEAAaOCAQkwggEFMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDE3MTEy +ODAwMDAwMFqBDzIwMjIxMTI4MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/AgEAMBsG +A1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNTkUwGwYDVR0SBBQwEqQQMA4xDDAKBgNV +BAcTA01ORTA4BgNVHR8EMTAvMC2gK6AphidodHRwOi8vd3d3LmNzY2EubXVwLmdv +di5tZS9DUkxzL01ORS5jcmwwHQYDVR0OBBYEFKnoLB5yGtqPpOgC65lLL4P1SYtB +MB8GA1UdIwQYMBaAFG1Cf4+CtgKm24r/e4/iG2SaxOdbMA0GCSqGSIb3DQEBCwUA +A4ICAQCQOIb1FScC1vbzbgD1pMHYNeqTc+OZEOzJl+OmMIfQsppjDjrM+c8E01jY +epll09vK4jzMfz+V5jguHJ/osiO3uT4INQPvO3fbu3MiATtOKgRiNO+MVBYfRDrJ +4YNAAxmAvQOPK22Fc78TsOXb58a/UOcfVAe2isYSZ1/LskafAbUv0ANs1SmGTz6z +RaArm06UYQJpB2q3N+HKo0B6NICE8dEcOxvssSqEjLZQkM0lJ+nCLGJigMF0i7Xz +qDQcoYaBSFRWiGNw8i+AO25QZz2VIFMOMOCJdyGP1eW+nQF9qJHiWAAL5H5AMcf1 +ftYUEyBUG5rFOV6RptMVsyFLDsBLWh4u8H1aFhHkkkq0H2h0Y/O31giqLBE/jlqA +zj6eghZ9enWLUf7Yz0fx0jcvhLvF4BPSvMBEdxxLAyarI2Z087++eu4dEXUaksmX +ckLZd7IZw2WbAzeynqrgw+sfLRDwRLrlvukfbu5Vd1jQRZzFBlwLQ2kKyYGR+KcA +TRPSZXq//I/s8VCeAS9dIvR73/4ulWQX4QT7UXhPZyqmd6b0MN0KTMqrdxP71eJZ +uX6HwcplAlRKwxABBqw50CfsfjypASq82JG5F73v0ul7qztumUaIOxon2ZRpW3Cn +zPFvhgaLbxvvrQPPlJ2AQUN+cnGPJD5kwsNCXh6M+T52197fmg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +3sTE6mYNoV8bK4+Y +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +iksuh3S4gaW0c9jK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGbzCCBdCgAwIBAgIDAKZTMAoGCCqGSM49BAMEMIGiMQswCQYDVQQGEwJUUjEw +MC4GA1UECgwnUmVwdWJsaWMgb2YgVHVya2V5IE1pbmlzdHJ5IG9mIEludGVyaW9y +MUIwQAYDVQQLDDlHZW5lcmFsIERpcmVjdG9yYXRlIG9mIENpdmlsIFJlZ2lzdHJh +dGlvbiBhbmQgTmF0aW9uYWxpdHkxHTAbBgNVBAMMFFBhc3Nwb3J0IENTQ0EgVHVy +a2V5MB4XDTIxMDMwNTA4MDcxNloXDTM0MDYwNTA4MDcxNlowgaIxCzAJBgNVBAYT +AlRSMTAwLgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkgb2YgSW50 +ZXJpb3IxQjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2aWwgUmVn +aXN0cmF0aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3BvcnQgQ1ND +QSBUdXJrZXkwggJFMIIBuAYHKoZIzj0CATCCAasCAQEwTQYHKoZIzj0BAQJCAf// +//////////////////////////////////////////////////////////////// +////////////////////MIGHBEIB//////////////////////////////////// +//////////////////////////////////////////////////wEQVGVPrlhjhya +H5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1c9+IPSw0 +8e9FH9RrUD8ABIGFBADGhY4GtwQE6c2ePstmI5W0QpxkgTkFP7Uh+CivYGtNPbqh +S1537+dZKP4dwSei/6jeM0izwYVqQpv5fn4xwuW9ZgEYOSlqeJo7wARcil+0LH0b +2Zj1RElXm0RoF6+9Fyc+ZiyX7nKZXvQmQMVQuQE/rQdhNTxwhqJywkCIvpR2n9Fm +UAJCAf//////////////////////////////////////////+lGGh4O/L5Zrf8wB +SPcJpdA7tcm4iZxHrrtvtx6ROGQJAgEBA4GGAAQAz7TZQvOkXam2uGYE24UE8sfW +yZURaVvjYFQZznvFHWH+lTvsjUhb7cZUx3Os9/ElnNNra4UcBIXk2CcmhkwFURoB +CuWE5gb9K6aYphW/LJ9SbGFs/K58dInuRLRDVPbeNPaeeWzkGnOFymypW3Id2w3Y +/cHy78wo+MPpcIOGnlJsTVqjggIDMIIB/zAfBgNVHSMEGDAWgBRvm7vGnuza2bwx +6VDhHtDKACIFljAdBgNVHQ4EFgQUhx9mvuJY8ZDfG1LbPNDjxY1FDe8wDgYDVR0P +AQH/BAQDAgEGMIGEBgNVHSAEfTB7MHkGC2CGGAECAQEFBwYBMGowMgYIKwYBBQUH +AgEWJmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50ci9DU0NBL0NQMDQGCCsG +AQUFBwICMCgMJlZpc2l0IG91ciB3ZWJzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9u +MAwGA1UdEwEB/wQCMAAwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL3Bhc2Fwb3J0 +LmthbXVzbS5nb3YudHIvQ1NDQS9DU0NBVFJfVjEuY3JsMFMGA1UdEQRMMEqBFnBh +c2Fwb3J0QGthbXVzbS5nb3YudHKCHmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdv +di50cqQQMA4xDDAKBgNVBAcMA1RVUjBTBgNVHRIETDBKgRZwYXNhcG9ydEBrYW11 +c20uZ292LnRygh5odHRwczovL3Bhc2Fwb3J0LmthbXVzbS5nb3YudHKkEDAOMQww +CgYDVQQHDANUVVIwKwYDVR0QBCQwIoAPMjAyMTAzMDUwODA3MTZagQ8yMDI0MDMw +NDA4MDcxNlowCgYIKoZIzj0EAwQDgYwAMIGIAkIB+Kpm1tOFrOwmbBXo1DHR5BRV +AbILCbjpiodJl5QK6w+MzmLQ7yipLU24OQYHuhWvQDyrHmjC2o8qgYEMQ9OITLMC +QgHA+LjALh0AfUDODle0jha3f4ff93q89zQTeqDIogT+MLZG5w2EuPPP7wfAn8o5 +gY1rvmbL2vpmRTLm4mzXSHO5nw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +WOH7wwN5JOFoV8o= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +RH12ZS22ftyrq4M= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGmTCCBIGgAwIBAgIBIDANBgkqhkiG9w0BAQ0FADBkMRYwFAYDVQQKEw1MSUVD +SFRFTlNURUlOMRswGQYDVQQDExJDU0NBLUxJRUNIVEVOU1RFSU4xIDAeBgNVBAsT +F0F1c2xhZW5kZXItIHVuZCBQYXNzYW10MQswCQYDVQQGEwJMSTAeFw0yMTAxMTYx +MzAxMTRaFw0zNTAyMTYwMDAwMDBaMGQxFjAUBgNVBAoTDUxJRUNIVEVOU1RFSU4x +GzAZBgNVBAMTEkNTQ0EtTElFQ0hURU5TVEVJTjEgMB4GA1UECxMXQXVzbGFlbmRl +ci0gdW5kIFBhc3NhbXQxCzAJBgNVBAYTAkxJMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAltPkPU39/UzJ6w/+/pASSrqQG/S4TwRQ7rE1OY1H5gQt4X5s +/PHSCIxDf5D0kgFUcFM0JwafGrDI2Rnxs1pBIkvsgTORxIXHcy5VYGvDFiBQoBJJ +31TMGYJuZLOqvDe8TfC7hIIIX+mB4lO6A0xjkhhpCuVrxGMUnviW1U5KX4l2JgE0 +omxKiPRtZe6cGRdZbu3z4CxH0nl4sSQKo0YP4fNLvWdh3kuYtWpJnZQpXkks207N +qWq1pfmvxG8T6GbXrzQMjvTxk5a3BvTuhDzgpMkIQrv9zSQla6QfhsuOaqfVYGGl +ado0BixwHWfNzQs+OYZjh+oNdLJ8hfcY7i3hSu4NYYOogYKe00bLUt2Uf0OJfE5f +rwGcrgghh3scedCzjIZmvlsqwZ5k/TztpxS9AyDxJBSLHlLVfCKPZ7UyLVmePQMl +BTKRvwTP7Q0AKYKr9RMFPbMHibyIMrDChb2kNNca0GksCLrq2go+NrFlGX9IiK28 +Re0izcMooUi8d4Zsoecv+Ph+EUDS/GSDJ8AtsGURCzsTTr2vUM6MPajwih/QFy2I +DM66Uyb1EHV/h5pN0kVGDpeytP4JrcClNn3fDT3vnKwdSwUvfW91+YFTagTYB8hQ +ziA1SoL3dN3q13p+MU+IQfQoTZkBTCAzm0IG2YExAkQiwGcCfFU6hoP09PECAwEA +AaOCAVQwggFQMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFH4Fvubd1VkFhO1+eCqdaFPwiDopMGEGA1UdHwRaMFgwVqBUoFKG +UGh0dHA6Ly93d3cubGx2LmxpL2luaGFsdC8xMjE2NS9hbXRzc3RlbGxlbi9kYXRl +bnNjaHV0ei11bmQtc2ljaGVyaGVpdHNtYXNzbmFobWVuMCwGA1UdEgQlMCOBD2lu +Zm8uYXBhQGxsdi5saaQQMA4xDDAKBgNVBAcTA0xJRTAsBgNVHREEJTAjgQ9pbmZv +LmFwYUBsbHYubGmkEDAOMQwwCgYDVQQHEwNMSUUwKwYDVR0QBCQwIoAPMjAyMTAx +MTYxMzAxMTRagQ8yMDI0MDIxNjAwMDAwMFowHQYDVR0OBBYEFH4Fvubd1VkFhO1+ +eCqdaFPwiDopMA0GCSqGSIb3DQEBDQUAA4ICAQBS3vCBhLRtO2YR3EBhJH46s74l +z7pkIlxUBTKafk15IiH481xg+WL9qBsUoF3TSt836K+q2g5HVFttxZrcVJa0ri0t +8hrsHnlmMNWlO4swzU3pM/8LkE6cs1v/ku5IGmGcvBUI5o8io60ETFhiwV1VFzbr +P9UJkHUGwKUYO1EEcKxhLu4GQ6MfdMqkfVUwEB35mVyp7JQ6vWGkGkw+1wkkSC2M +Fvbe8qBZJBK/UDl13EFjW76tpcdDAFwY8lyOZbvin5NFzYWyDtBQmmjlLBFNBWAO +yqWCCekJm9xLNZn4dYYpwq0D3560ffYh5sHAuRr0IsK5Vd7ju7q4jssz3XtsHwgo +rs6F7OndHh0P1UwjtWlVqVCFGOSXOFM8yqqwWH/0+w6OuMvuzw1Q2RSIWzSEvUqs +VVpvxyn8pf0iUVSBXIe4bVc1dUgVCK1UYW8YPRxqa+0hm0QKR9FeAl0ENxJGojEs +R2gbtCrfh6vLEvSk2eOCyalcNWul8h+m9PHLh55xH77ZKcQ7mWMKkyAvsMKB/NwJ +3GbGqJTFMeWI9KS/glcUo7vrUtHVNdw8DLRAYqkNJ5jCWHaC48+Z4KS9S1xUUNXR +VIbludc8aJmXy19gZbEg6jAFdIRL3X3oir7vM5hrLfmzCOA7EKHQjkOPes4n2TxB +GXb3DU4qmttHnAw2jg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGmTCCBIGgAwIBAgIBITANBgkqhkiG9w0BAQ0FADBkMRYwFAYDVQQKEw1MSUVD +SFRFTlNURUlOMRswGQYDVQQDExJDU0NBLUxJRUNIVEVOU1RFSU4xIDAeBgNVBAsT +F0F1c2xhZW5kZXItIHVuZCBQYXNzYW10MQswCQYDVQQGEwJMSTAeFw0yMTAxMTYx +MzAxMTRaFw0zNTAyMTYwMDAwMDBaMGQxFjAUBgNVBAoTDUxJRUNIVEVOU1RFSU4x +GzAZBgNVBAMTEkNTQ0EtTElFQ0hURU5TVEVJTjEgMB4GA1UECxMXQXVzbGFlbmRl +ci0gdW5kIFBhc3NhbXQxCzAJBgNVBAYTAkxJMIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAltPkPU39/UzJ6w/+/pASSrqQG/S4TwRQ7rE1OY1H5gQt4X5s +/PHSCIxDf5D0kgFUcFM0JwafGrDI2Rnxs1pBIkvsgTORxIXHcy5VYGvDFiBQoBJJ +31TMGYJuZLOqvDe8TfC7hIIIX+mB4lO6A0xjkhhpCuVrxGMUnviW1U5KX4l2JgE0 +omxKiPRtZe6cGRdZbu3z4CxH0nl4sSQKo0YP4fNLvWdh3kuYtWpJnZQpXkks207N +qWq1pfmvxG8T6GbXrzQMjvTxk5a3BvTuhDzgpMkIQrv9zSQla6QfhsuOaqfVYGGl +ado0BixwHWfNzQs+OYZjh+oNdLJ8hfcY7i3hSu4NYYOogYKe00bLUt2Uf0OJfE5f +rwGcrgghh3scedCzjIZmvlsqwZ5k/TztpxS9AyDxJBSLHlLVfCKPZ7UyLVmePQMl +BTKRvwTP7Q0AKYKr9RMFPbMHibyIMrDChb2kNNca0GksCLrq2go+NrFlGX9IiK28 +Re0izcMooUi8d4Zsoecv+Ph+EUDS/GSDJ8AtsGURCzsTTr2vUM6MPajwih/QFy2I +DM66Uyb1EHV/h5pN0kVGDpeytP4JrcClNn3fDT3vnKwdSwUvfW91+YFTagTYB8hQ +ziA1SoL3dN3q13p+MU+IQfQoTZkBTCAzm0IG2YExAkQiwGcCfFU6hoP09PECAwEA +AaOCAVQwggFQMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB8G +A1UdIwQYMBaAFD4rPpfI4nJ6+yn61DVpP7PPP73AMGEGA1UdHwRaMFgwVqBUoFKG +UGh0dHA6Ly93d3cubGx2LmxpL2luaGFsdC8xMjE2NS9hbXRzc3RlbGxlbi9kYXRl +bnNjaHV0ei11bmQtc2ljaGVyaGVpdHNtYXNzbmFobWVuMCwGA1UdEgQlMCOBD2lu +Zm8uYXBhQGxsdi5saaQQMA4xDDAKBgNVBAcTA0xJRTAsBgNVHREEJTAjgQ9pbmZv +LmFwYUBsbHYubGmkEDAOMQwwCgYDVQQHEwNMSUUwKwYDVR0QBCQwIoAPMjAyMTAx +MTYxMzAxMTRagQ8yMDI0MDIxNjEzMDExNFowHQYDVR0OBBYEFH4Fvubd1VkFhO1+ +eCqdaFPwiDopMA0GCSqGSIb3DQEBDQUAA4ICAQApzP7eEwTbjdbdfLDvbVRCnlWU +n+/64Zm7iDtM1BJYpQeta17gFpbAwvCY9T7PrF5MArRHItQoDYrgd6ARNud2RkbY +TzSAytemBD3RR6ChNqasnHr1hLLHWg2u8lr8kPHYGAlFwgk/TWQ7EcMgK6SsXXke +rLH6Ne1zvqHh5TgMkPSt0otUYxyBp3FK6iPVLq6arxNlahfvbNmB+fF12sKXvl3w +ZAIVIxb+Awug6b3gNQ3AXKyHgUJis8aHEGEdO0OWrhyOr3E+1AyaAJxo4lrc6sZt +dLplBlqZtd7G6cBB+Fsdu2WvUGpqKacCYb0j0smClfhUkytfINEBYPLYLsIDDE25 +8lfD3nMyJqHDeNPpTI45B3mmuG/7B5+KP02u/71OBU+cf41V+6IDU8ikDQv0rJgP +FEptiXeejR81qd0oL5mGRVwSdz/CrNXP/11oASP/VL2iygZTtMHF3PUTWpbVjW1e +fCdA7n1Hn98YUYxnNSbDT7w1SLWZP7ZiutHW0UYSxof9IzWws7UBtXk1N6XCzgXt +DTbqkNumRRZXjvwFWakCSzccyvQiNIoYYNOQUG8ZP7QygVxtxeKbMQTfxNu9gJaW +jcgme+HQ2INYUWQ18YUj9qscJ6XKgpXbjBSvdj+l8Gf19CUt9FgssvqkVuQe1Rvu +LS+mpeTAs3+hdjgGLA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpTCCBI2gAwIBAgISESAy7bhF5O83HirlZJXk4FhwMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMjEwMTI3MDAwMDAwWhcNMjkwMzI3MDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAyZfTvYzN4644Hc+pR5WEVVo7E8K2qvF95Cay +571WJ4fZsB0kDpzhXD38jLKw+OSv0hGJ/qmVZfROHs9kHWOqxkxhqWn1kRt0idB7 +uLIH5Y0R6Ea2B8JCKEFFmTrLemAGRP0/o5YwZQC/0+lBZme5IACVu4PLiWOqvglo +6F8pZV98Uv91PZGNmQWTLhc6Ik8bndB6rdl35EWJyATEJYDSpWsP5KQlvgW8hMNH +IlzT/1BoMWzWrEmxZ8yosNK+GNzTKLS5MiRee3O6OEIqllHu7oDTKYysxX2puRbl +dQrevYwH5GTJQfFArz6LHJHgus7vI2KoMW2h8ozz9bnepy8kRPp5Rf+wLHW7rP4g +mUe0Xg1CjxgfCbn0aFOp6THy/GglE+qVq519s/dYFiYiS5g4FcCSN31NjYnABvHy +fowdhrwNO3C6fPdDnonLXsTWp7qmA80Vfi0AINGfXroBQh/AZty7H6zKk4Y1TUas +R6D8behdRu1urvgqtb52p/UTTeMz5SWP7Qfk+Z57NPWEIhvRvnP/UygN2NH92le9 +FC6wuW9Pqw3oRGPnAXLNez3phMvESYnE7kpuaYy+XSuQxDsJSW5uJ54GI+BiJbru +ciK0SsLfUPtt8/yC2FomYzYW5dEG5gV7+nxkpxHa4WoHKhJShYB39H8WB/P6v0gK +dmGOrrECAwEAAaOCAbcwggGzMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDIxMDEyNzAwMDAwMFqBDzIwMjQwMTI3MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjANBgdngQgBAQYBBAIFADCB1gYDVR0fBIHOMIHLMDGgL6At +hitodHRwOi8vd3d3LnBhc3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKg +MKAuhixodHRwczovL3d3dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNy +bDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01B +Ui5jcmwwHQYDVR0OBBYEFJH7Z0uAgv9NVAyasyNLfw7IXevjMB8GA1UdIwQYMBaA +FNsE2uY1osvs1j+NYMIGDv1d9xnjMA0GCSqGSIb3DQEBCwUAA4ICAQAixb/PoE5z +fgDL7+kXBYv8uBnJ29Dfz5mc4ztENe7pHsaecgN9Jp6Al8vQoz9jhKjVyWMvTV8W +Jka0hQbwVSRyfikd4Qvqng02JNsJjRNl7ebjYa/QTrtGctv01F4iERm4gCpToY1V +hmefKnEkDVimEnOmy5hlEboFGTQ/ENDGnDja6Ze7tXVyDHXrtTcBKzZBVBdyMMpf +Hij+uNPHjjPeH9QHtbj7Oso/oL1opOLvLXByDpVfJX5dX1VZyBf7YlvqzJALjleA +6SDw+H+1J2MJy/aUa1tAVS6dtOLdQDgWHRf11vXh/bt+ASh9unIBnzs10Lkf2hiy +/BUzjdl+7885vdwWHXk9P4pu0GXE4YHI36GYuXYbmm47jTXGYOXPtijG/erLOFqv +KJdnR4LteWB0C2Uld0JoUKV1K1yGrsF/1FeAnvLpgCrieM/PVa4KZ23MSb2wVAXu +RJpvclBgU+P2fojHnpLjUHi+UAvs+PkdiboRE0rhnrPCAs7XmF452Hfw+6lIyYwn +G3D5HFi7b5Yn+lPKocTJOL1m0TrEkad9bZRrfLbXH57rDgOy2hzeEsDYYYk7DH7Z +LRzdMflk2jAePgEXwd5Be+GJaZLiTLGqYgdMfDhrQepIvhvxFzAPZzgjq7rdnjfT +/O9pISmEOqCK0wSzCWi2my74kJC3+wPNNg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +X9RE47B0QCAhzgzcAEEvX3r95X20dF6H5P0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGsTCCBJmgAwIBAgISESDJMzdJdDyqz3gagqINBxJ0MA0GCSqGSIb3DQEBCwUA +MDwxCzAJBgNVBAYTAk1BMQwwCgYDVQQKEwNHb3YxEzARBgNVBAMTCkNTQ0EtTUFS +T0MxCjAIBgNVBAUTATIwHhcNMTUwNDA5MDAwMDAwWhcNMjMwNjA5MDAwMDAwWjAw +MQswCQYDVQQGEwJNQTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9D +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3XLVxhHDxq2iphmjbuAM +t1F74nwE2tXM1iWL53dbPQi5LbsYyLM8sr/cVO/xKJHCZZnZDw3BloKWoOSysCW+ +V+0QK2hMT02iLCqF1wf9EgcTCkj02U6yd5GKJvBI1Haa2mHxg83vGOLAzzl96QMb +kRbUohFFPYEG+i0TxRE6fitbp91ZlMhfY/rzlINjFW22Dt+KUi3DtgRTTa6oTaMX +vl08NcOsjXQKR4ltZ19/H5dkasKTLQdlmCEbJUVyCLFpcpov+3ybzPOk3doxIU6G +wWpvxY/WcIeyAQA0B1vjcre/zmU4cTaJ6/zCEwmK4tDA4VIQgaYX9RRUQg8q9OlU +18miPm2bhd7jaCWuvO7CSPIDZdRL8TfM8ODgk1w8fys4NNpAaNXqM7CYFoAXAhF/ +olduKnletAsHv5ZZAhpxkrGsDOOneOGDDYGjPQR7vtzWXzm3CkNSXWGbwNtRPQ3d +BpcelavJWWCO9Eb4lPc5S2Tl9lF4JNVm/FTRl0fn0TpztKZ7q06j8/BJbILytklj +qWo9iAy20yTNIH25GCok4laicofzikvfFXKkI0pBKTs5b/qMvEyS+eUKrzq1b23Q +72QYGi6G7e6wzzQ+lOrL20PY9WrMqpuNRYbX6/22yM051aHgH6rlePkscLq1ACrG +VH/BVQhHleK9OoyR0e6SMa8CAwEAAaOCAbcwggGzMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDE1MDQwOTAwMDAwMFqBDzIwMTgwNDA5MDAwMDAwWjASBgNV +HRMBAf8ECDAGAQH/AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYD +VR0SBBQwEqQQMA4xDDAKBgNVBAcTA01BUjANBgdngQgBAQYBBAIFADCB1gYDVR0f +BIHOMIHLMDGgL6AthitodHRwOi8vd3d3LnBhc3NlcG9ydC5tYS9DU0NBL0NTQ0Et +TUFST0MuY3JsMDKgMKAuhixodHRwczovL3d3dy5wYXNzZXBvcnQubWEvQ1NDQS9D +U0NBLU1BUk9DLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5p +bnQvQ1JMcy9NQVIuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2Fv +LmludC9DUkxzL01BUi5jcmwwHQYDVR0OBBYEFEsiJI+1EHrs8vYFUP9VU+hJRCKn +MB8GA1UdIwQYMBaAFDhpHadAmq9VIf+tRr+H4OA8y+KbMA0GCSqGSIb3DQEBCwUA +A4ICAQCW9v7hrOXGEBDO/ltwfrPWTwMPiP7TQkc9jwDgazyLU+5EqL4VpCgMxWOI +J6Y5TZxzsYaw+RGK0ICW0LbBUL+1FWJVHhYN70LUCwq7fMZ2CZj/XPxtuDOSCmYG +gLAPVXc77f6pKONf70eruaIVze6nRQebbwzB7+dxEIgqA/unzT66Esx8NBoJBZ0a +Em4GN76ex4eoFePe+ubchl17Dwb5OvYLjbcCS9gpLtVkpiAe0jfYe4DeAoJDVDKu +jAHiWBDZNyXu3dNJnPne6ggEB8HsaFWpQuY8RaaGFXNs93go0ZOUxOzHG6fINaBh +Rd3Li5G2IL16y7L4qHuQxxzeIiAOSVbFXjUBgSj+YCzVi5uGty70HLsV+3YU9AdP +X6uNT2BbMMugLNqxB7R3xVlB9UbNU8fP2qNHYVUzYD3UwJ0iWR7n6FciSeodeMpn ++zc1+TQWPtuoihXjkjja1ECr/Vaq0KhIxmJZlJaZ5qabaNVvkJPv8rcoZuW3CAp+ +mIyQVQfCP4qwxQg5w6b5vZ5+tqGM5K6oQVzzCKasApp+sR64bKGunjB0VcK1QHzA +LHKL4oYq5Ymlx5EwtE1UI5Z4/ob5criIJpxHAWXzce08/1TmGsXMTmOYD414g66b +KiU4SWVQE4yuKPvEXSfuqi5RujST1IpbWLOb292BSTBlcK9Jjw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGsjCCBGagAwIBAgIESkAL9TBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwNTELMAkGA1UE +BhMCSFIxDzANBgNVBAoMBk1VUCBSSDEVMBMGA1UEAwwMQ1NDQS1Dcm9hdGlhMB4X +DTIwMTAyMjA3NTQyOFoXDTM1MTAyMjA4MjQyOFowNTELMAkGA1UEBhMCSFIxDzAN +BgNVBAoMBk1VUCBSSDEVMBMGA1UEAwwMQ1NDQS1Dcm9hdGlhMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAu2pMj7fvvWEMA4zu2tGroYWqxzniJGhWVFN1 +HlUvkSqdXpuqyNkHH04WyR512V7Y08W/mTQKHOX+bESX2VhiqatUm43vhWGSjcgR +Jy7k0zJNel5WU9aJ9VWnoU8VUJQLAS9pr1pDHc/mvSTLzu3gpCcLY3i5m97c6VSD +Ti591pgHTdHUHdbstBnxsuzGu5gPEnj+1IRk6qsUXfvvy+EluADjL8K3gffgHUtc +Zb4/PFW/zHizcHsIpny6c3Q1twZSkcqO4Ah0zWwteXDGLsIcd7ufyRP0FNu4TPmI +3C+rj7tbsbGDw/tTaw9gGk+P5oTEW5VQmjW3OsajBMJRH8+hpCXNaFfE6gfXTD/h +BUHjzZfg/gct29SzXjSwrt67NFIRlqy5swR0u7ae57q86Oq6wDRB4suITdjAyFYb +rV0G63ZDa3wyWLDN1EbuWi9X8taYAUAaXH+aiaq3UbUjMYCK/dnISgJ97eGQenLi +6mR7wHRJDgONdpd6HpmnL70zFYI4PmjieBNkk7NAfb2HlSextKUQHyCyik+o8Vtk +6nmVNUMrzTGKdPLwUrQ4QGe4VEpeaPZps50rycLJ93Zo8xqZD9G7s2by9eaG+p6t +BxxjX/67UCE9CIkxobpdSKMHgupnezV4AzuDB9i6ucGAxqsWcvN7/lSEJ9SQWdMZ +4lUR9TMCAwEAAaOCAWAwggFcMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMFAGA1UdEgRJMEeBGWNzY2EtY3JvYXRpYUBlcGFzc3BvcnQuaHKGGGh0 +dHA6Ly93d3cuZXBhc3Nwb3J0LmhyL6QQMA4xDDAKBgNVBAcMA0hSVjBQBgNVHREE +STBHgRljc2NhLWNyb2F0aWFAZXBhc3Nwb3J0LmhyhhhodHRwOi8vd3d3LmVwYXNz +cG9ydC5oci+kEDAOMQwwCgYDVQQHDANIUlYwKwYDVR0QBCQwIoAPMjAyMDEwMjIw +NzU0MjhagQ8yMDI0MDcyMjIwMjQyOFowEwYDVR0jBAwwCoAITnCXSTeqlIcwEQYD +VR0OBAoECEYjSdo8IEMIMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9lcGFzc3Bv +cnQuaHIvY2VydHMvQ1NDQUNyb2F0aWFDUkwuY3JsMEEGCSqGSIb3DQEBCjA0oA8w +DQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIB +IAOCAgEAI97drhqic17+qeB7Zk8Cwvs5996b7lUwXTYDYTBeitsgMlx/7UmRxiCm +08kp9NC9g7sXwuzEs4qk+OYHNLC2ojNOjDWgXMXk9DYy3BQvBaDFhN9EVx9+g+DR +rlwwjzNikC61YJijMmLoHWiER/XyOEPdDi5W03Jp5TbMnYhYhJ/ZdDVI/m3Vt6g6 +LWxCLX4ewxc0HoY6eouZYkeFLd+R4gt/MtU6CrwTRUs+PNjx064YCyiIx5ebZdwV +UlEafflj/1nujT+yCN/10xTsc+u3mjkU2e+kX8yUGhpmLXHELDUH9cee5Niizdvw +Ya531bB+uoXMllTMX91ED9tKJT+q9V7AAZxKsvI13qE21jCw7M8ebD77C8Oen03x +EkblIbYQJdQ8B47adMxLeY9cgpnEKoEb2gCVDE5JguZS3mw4I3HwBhtTWx4nQxpQ +Mvq64E/DhAk9zySIzviQit8kJDXENjvAoHfCAyJQuG+7CvkzTuB59Q3jAQpvzROV +KwaszXZd04oQHhxCR+Glel//kI7ugLgg3FCOHNQaars2pvDXuhGYVlNwUURsR/10 +R1Eu+3LD6q6UzKsvyxKvsL7GS02ih8j92czJ5a0hHo3Oed626ucnu7vksYExUMED +xyXeukLiudXlAceT50XhNRcudzXoWEjy9mFyaAFky0Uy/Gtb4jE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGszCCBGegAwIBAgICAOUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMG4xCzAJBgNVBAYT +AkpQMRwwGgYDVQQKDBNKYXBhbmVzZSBHb3Zlcm5tZW50MSgwJgYDVQQLDB9UaGUg +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRcwFQYDVQQDDA5lLXBhc3Nwb3J0 +Q1NDQTAeFw0xOTA2MTkwNTE1MTlaFw0zMTAyMjAwMTI4MTJaMG4xCzAJBgNVBAYT +AkpQMRwwGgYDVQQKDBNKYXBhbmVzZSBHb3Zlcm5tZW50MSgwJgYDVQQLDB9UaGUg +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRcwFQYDVQQDDA5lLXBhc3Nwb3J0 +Q1NDQTCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////// +//////////////////////////////////7/////AAAAAAAAAAD/////MGQEMP// +///////////////////////////////////////+/////wAAAAAAAAAA/////AQw +szEvp+I+5+SYjgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7Crv +BGEEqofKIr6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhy +dgq3NhfeSpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ +6g5fAjEA////////////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzs +GWrMxSlzAgEBA2IABKHOI8Jw6Mo/qVkvV4JnCm5lGcmmqDsdigya73uTXBNAOCyD +qBPqO59yoKlYUdZzs2fjT57AEh6DZVLkSuQ5r/eSutRAQ63yaVyx2ub8ehgE281Z +XFpxyR9uM/Ey/OI0NqOCAV4wggFaMCsGA1UdEQQkMCKBDnBraUBtb2ZhLmdvLmpw +pBAwDjEMMAoGA1UEBwwDSlBOMCsGA1UdEgQkMCKBDnBraUBtb2ZhLmdvLmpwpBAw +DjEMMAoGA1UEBwwDSlBOMB0GA1UdDgQWBBRqtPKSgr2WR/b/KgL3lE10npeEYzAf +BgNVHSMEGDAWgBRIRY6IaSag0LEdK0IvxZtFm+HsezAOBgNVHQ8BAf8EBAMCAQYw +KwYDVR0QBCQwIoAPMjAxOTA2MTkwNTE1MTlagQ8yMDMxMDIyMDAxMjgxMlowEgYD +VR0TAQH/BAgwBgEB/wIBADBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRv +d25sb2FkMS5pY2FvLmludC9DUkxzL0pQTi5jcmwwMKAuoCyGKmh0dHBzOi8vcGtk +ZG93bmxvYWQyLmljYW8uaW50L0NSTHMvSlBOLmNybDBBBgkqhkiG9w0BAQowNKAP +MA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMC +ASADggIBAF+hBKG0ujw0qayI+sC85xILWTdOHRv74UOvMuw7zIrD9VgGJAzXh7qT +3mcQARS575PYrmsDtV2D0qAVPIjePPit3ao08xZzSAMxEUzDL1wTo53SGlmYBpnj +aQtWrWfPz+Ia7ae8rSDrfdVNVYmuHWeeaRz3OpPUea18mrEH7PxmxhAMgzEhJJe0 +Qw22nUMo2vM1eR9lqvjmz5oa2lFRkf1Hh5fQ+ioTVFf5jHOq2A9s6h+ofhJ3kPUh ++t8l0QnLHwnjcRGnn7NQulK1QWjKmtL9XjmhOsPNlQygkkLBhh/vAcxXA5cABQDy +n0dkw3j1WrhaETU209Q1gCxYS3+7SxHqIfO/7fYoN/l4IQrioXt3cx2EYD7Qin0O +HGPvE9mf79/3mGnxk6yp6OyF8eLGI08xOHHMJBSKtvhlOlkSrxolgO9ibzvSU8wo +/eFXSC0ck0pdQT4PrmXxF420qvjSLgeJaLvuB9Tvk7jJBGM8l8wse7YiTOzH/JYD +a7Dl/3PsAo3sSQbj6k53Qtyn+Du0hwYG1nQ+6rUcpx40kdmf70d8UZ42xUePqHTY +Xgyk8+9rPDeyVa/EB6RM/dsyfmrzO0OpYuRC+S6SQch0ecrJfTLBk0DTO0cJiCos +Wj6dD6eIYXIVPdEnpxl6vwM2VjqlYBGyoWDsv1eZvPdzP3TxP28a +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGtDCCBJygAwIBAgIQW1VWiiNUWBN17SlBEm0g/zANBgkqhkiG9w0BAQ0FADBR +MQswCQYDVQQGEwJNWDEsMCoGA1UECgwjU0VDUkVUQVJJQSBERSBSRUxBQ0lPTkVT +IEVYVEVSSU9SRVMxFDASBgNVBAMMC0NTQ0EgTUVYSUNPMB4XDTIxMDcxNDE3NDEz +MloXDTM3MDIxNDE4MTEzMlowUTELMAkGA1UEBhMCTVgxLDAqBgNVBAoMI1NFQ1JF +VEFSSUEgREUgUkVMQUNJT05FUyBFWFRFUklPUkVTMRQwEgYDVQQDDAtDU0NBIE1F +WElDTzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL7Mn+3G67Lt42ST +E4z4zuBdpXtavDW+zwYuHM6bsZbt9P9tyqjmHWX4mOpjpgHoI085UEHjYhtFQeFC +mIIGTuzRP+/xv2Ej5c4jNU3TN6obx463Ecl2AthXSiGzNkYccTPtpI9v5zhrVb8d +joaRriW/Y7TPx5Pn+C14eUH8NAIuGU/5iHBiLg/B2njTnp7hQjZjmtvKpm+y9Iil +n/R4F2ElBy2/qCI98vCsmNHw8VaVqSeLCLCHPezviA03jwV3ybH5SIGY8GDdFAo2 +XR+QOHy8n4umhFPLGx0Ziyh1yH3K6b9h/1THci93CmtCzjy1nz3j3OlFfTYcWFnA +UHH7pmTakfsanK0ICJZWx2EgHYkMCoKeXQxjzGxxBHhRWWLmtWdRgwhbLWABHd8b +cnyzPLm6imyf9YWcVGYmvp6dWZF2kHENbTH4oqjAO+nWEBamtBgX62GAdDYCfbUc +UgAxYTH0zD9DZ9MXwY7mODxB2EH8qWPBgM2HZucD+IjQj1rjuz1OcJzeJIzqnH+w +hHC3D5Fv0aRTv/RHPCis4v8jZdoA1i/UqQCQwwsIXUMmcYJnETCDhJhL+OHfauXd +WEwiSjnTLBZ3FmNyhlPkpqIVK/QjAi03uRWWrZ4Ui4CnWbPXzYVxsSaUw97qMOn6 +fqh4wMc5qm4r51eF/JzZ1org1LdTAgMBAAGjggGGMIIBgjBDBgNVHRIEPDA6gRZj +c2NhLW1leGljb0BzcmUuZ29iLm14hg53d3cuZ29iLm14L3NyZaQQMA4xDDAKBgNV +BAcMA01FWDBDBgNVHREEPDA6gRZjc2NhLW1leGljb0BzcmUuZ29iLm14hg53d3cu +Z29iLm14L3NyZaQQMA4xDDAKBgNVBAcMA01FWDAOBgNVHQ8BAf8EBAMCAQYwEgYD +VR0TAQH/BAgwBgEB/wIBADBlBgNVHR8EXjBcMFqgWKBWhilodHRwOi8vcGtkZG93 +bmxvYWQxLmljYW8uaW50L0NSTHMvTUVYLmNybIYpaHR0cDovL3BrZGRvd25sb2Fk +Mi5pY2FvLmludC9DUkxzL01FWC5jcmwwKwYDVR0QBCQwIoAPMjAyMTA3MTQxNzQx +MzJagQ8yMDI2MDcxNTE3MDUyM1owHwYDVR0jBBgwFoAUoCu6ZRXgGVDQ2uw6yUL+ +pNg1nFQwHQYDVR0OBBYEFKArumUV4BlQ0NrsOslC/qTYNZxUMA0GCSqGSIb3DQEB +DQUAA4ICAQCJcDd8vlYV40sldnk0gaIwNjPJ2S3BRt+H1fyjo8HTuNgCYa/lGfUS +zVnkcuDCUqtpF6rZcaDjvZG+5uCIpqBss8tGwY+2qtRi2gw3OoCG2PKk+/Bv4Qmc +Se3gPtWF3qArzw+L00zCZNiFk3gee5zy6e/YFchgRgOIjTGTXeBZRmY2uvgf23KL +iywJ+W+YwdTTx97r5zEVVo2102MbAoLSPeBzgOqUU5Qx52i9TjuhQsS5DL2s+mZS +SI/RbxYttNPF+/q1+uVTP+5JRIdUrPUWR6iX5zN2dy91QXvoWSslMobme4aAInQu +PSkN5H1olTfca2JtNQlA37tAJOJL3ZnBd1u4cqHlwpfIRZ8jc552g8YshzonxOUB +GJmWjhyonkqgk6twJ/aFJxAJiuan8MmKh0yY4Z/rcS1y77WZqyry6JodbrKDnUX8 +vFLe4ywOnslXoCOp8R3oHDkTvuzxqZuOTJPXPyl+R4qeG/EZX4aIL+iNBa0I4N5Q +KLLKjMBiaw2pvW9lYcTyDOV3siWS2LTuDBrYTqqumL+K2mthEfWvbKcsOH9c/RHd +39OAgFQJfxJ91d73sGcraI5SggFG6eKDe8HhdobQ1jv7cRB/3WUEQFu8l2RoKFfk +For0xNMcrUOlFasddLlNLBRn3dkGniNQP7QwZ+M9nVZxKw0h7Kh+Fg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG2jCCBMKgAwIBAgIEIght6zANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMC +Q0kxMTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRF +UklFVVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZP +UlkgQ09BU1QxEDAOBgNVBAUTBzIwMTUwMDEwHhcNMjAxMjI4MTEwMjQxWhcNMjgw +NzI3MjM1OTU5WjBrMQswCQYDVQQGEwJDSTExMC8GA1UECgwoQ09URSBEJ0lWT0lS +RSAtIE1JTklTVEVSRSBERSBMJ0lOVEVSSUVVUjEpMCcGA1UEAwwgQ1NDQSBDT1RF +IEQnSVZPSVJFIC0gSVZPUlkgQ09BU1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQC6ujwpCt8rcM7k77QtwPyKiUcpBWne8tLSqem0pKM7UPeO9arx9gRJ +5NfKzgXuW/wI8LvzqqWqQn4mi3CPOwo6gud6Ow5YWtzqLDhSm3oJcAMpF3RpJCX3 +jEgE/gxwZSG4Wp9UFDGJLs2qaytm4pB/0HYIh85pEZuYa95J6G8hLClnZoJwnTFp +Hq2vqOGD28wQbrWgyB6FEpD8y1O1V9hqrx0ZND3BVotNoCCHIsrFZ/P1KLotsp2O +ILPTcCxDzot+qkIFbNDRrSr2yH/CZKXDwupaR187xIBNgKGfP/bk5AIAbEODy56v +S0UkH+PFhan8vlHN0m0MtG1Xi0/O31FtW/nWjfJ8pEjgxFcbqiwFNEGfbzC1LfTT +NgmLGe9M5PUtNg6lWB1fMdYP+xulW4fIK6UK0FfSBn2442uH9dDjLLNWPOTazBVF +Ey2qMQyUAVnvmtWWsUExaTc8hSEyB/lGFSrH+IOmzv0bTwDMTugEffl6qyPsT2MI +Emrids98blvbU3hIjya/F2/wcOLWy72r2trQOz7UxKc334ScH1vGtmoyCnLwxUp5 +TgKuTXPlwmHBaJpMIkEXeiZpEg818eoFTDo5FlnigUlS3ce2j0iMpFzZmIQCVt3S +8woeOrcbtV69/asQxi15SMtvS7fG37O86T8ETegOE95miQWWlgg0zQIDAQABo4IB +aTCCAWUwHQYDVR0OBBYEFPnR68q8UPK96qqKdEo8vK567vD8MA4GA1UdDwEB/wQE +AwIBBjAtBgNVHREEJjAkgSJjZXJ0aWZpcGFzc3BvcnRAcG9saWNlbmF0aW9uYWxl +LmNpMA8GA1UdEwQIMAYBAf8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cHM6Ly93 +d3cucG9saWNlbmF0aW9uYWxlLmNpL0NlcnRpZi9jc2NhLmNybDCBsgYDVR0jBIGq +MIGngBQlR5tmWETtnlgpgFV8aWs364MUIqGBi6SBiDCBhTELMAkGA1UEBhMCQ0kx +MTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRFUklF +VVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkg +Q09BU1QxEDAOBgNVBAUTBzIwMTUwMDGCASIwDQYJKoZIhvcNAQELBQADggIBAI1/ +iT7s8LfC0IaAxGpB/Yhs/xv9vChN7aURj9jQkSCMeqHps82K3ZO++OKB9Z1yk1Cd +GP10yScseKh1Z/l2PMebyUrdtPui8QpRPeaBL/YqKJtUnWhlqRfy76smTiQJisV6 +4S/k7PhZaP2bfKaUASvjUKMvJNZ5KyZFEAAYOAxn+YbdrtgYrFKIMOJIaKDdxYog +eu4cpxTqCZfAqPUjmCkkqNEWKkMc+xyyyhmzCOutpKYVN8AURn0Ax/L403c5M6mI +Nn34bcWsi4N6bh35zg+wQkieKti2V8OSS6NseKaa4Cyl7DUqfr+F9ZYo3r2WEa9w +0AGnxGn3HWbD2TOPexwz9aqYgUDPyvA+esWE3XUxA9AbCBjFvujSXs0/GELlKBTI +6dnWXA0tXlIrrDqa+H2O55UJ9mfQIy0e0ZO4rI1U2CidFMCx7POfGd/6WbMwRApl +DpYCfBIVMGt2mMrF4tG/TUb6S8uSeDGzQEx9GAS8O+mo4t/4n5wwFIyvvpvpgpI1 +YxcSD44j3t6Aw9CqyvPaKO0mEEvXuxMCasQ0uXZq25/Q9SB4/jE+qUj1UoeYdGof +TQLFfjDNEd9d5xJDJBSUdNhdch70gcGHNhDZ/txs5WXtMEJ/hXRRe2l3irtAShr/ +W5GD0pePRDyf69YLvFkEXKZNneIFZcDGqNBNuN5s +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG6zCCBKOgAwIBAgIIDZmxVDEXNZIwPQYJKoZIhvcNAQEKMDCgDTALBglghkgB +ZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCAUAwgYgxCzAJBgNV +BAYTAkNOMRgwFgYDVQQKDA9Ib25nIEtvbmcgQ2hpbmExHzAdBgNVBAsMFkltbWln +cmF0aW9uIERlcGFydG1lbnQxPjA8BgNVBAMMNUhvbmcgS29uZyBDaGluYSBDb3Vu +dHJ5IFNpZ25pbmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTE5MDIyMTA3NTk0 +MVoXDTI0MDEyMTA3NTk0MVowgYgxCzAJBgNVBAYTAkNOMRgwFgYDVQQKDA9Ib25n +IEtvbmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0aW9uIERlcGFydG1lbnQxPjA8 +BgNVBAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5IFNpZ25pbmcgQ2VydGlmaWNh +dGUgQXV0aG9yaXR5MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQEC +MQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH +7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSo +x90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mU +OreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ2 +1kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3 +kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886 +tq9rf8MQO4gyAukEZWUCAQEDYgAEdMq1HQji+mKnCvv+7amuN0Kr+ILgA8qqKCvd +jvmYaiOZnzzuxaAgEA0Xw0J/Mz3KaeoSgT7QdBwPnigUNtaN+V++eyt6yd9zotKY +1ICDcRIhv0CTH8GuvGIDdD+r4g40o4IBYjCCAV4wHwYDVR0jBBgwFoAUXYkeeRT2 +/f/UChvG8QpeXc1LyoYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUHKJH +e+9sNa7fQE7bXbJzDDR7p3MwDgYDVR0PAQH/BAQDAgEGMHUGA1UdHwRuMGwwNKAy +oDCGLmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5j +cmwwNKAyoDCGLmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hO +X0hLRy5jcmwwKQYDVR0RBCIwIKQeMBwxDDAKBgNVBAcMA0NITjEMMAoGA1UECAwD +SEtHMCkGA1UdEgQiMCCkHjAcMQwwCgYDVQQHDANDSE4xDDAKBgNVBAgMA0hLRzAr +BgNVHRAEJDAigA8yMDE5MDIyMTA3NTk0MVqBDzIwMjQwMTIxMDc1OTQxWjA9Bgkq +hkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgB +ZQMEAgGiAwIBQAOCAgEAZM+QsAiM8QVvYz0nxlR5iSsjqflOTTcs9ZHUL7z+E+sO +Of2ywpYk2iZbcppXbFD5vV8p60i436ygg4iBqkek4UHYhkglkCiapfxOdsbLmSEz +HRy72jTTH2GKeYe6kgQwGGC3wP/FmSCIL9EdRVKcF6/zaKB7rxACU5loTwOSh6e6 +AbumbA+ujyyTjqJxKpUhd6DPbn5ye0Yz0mIP5V8VePuIPHCfVCUknvc8Ts7mqTv1 +F9i+Mn4oqBxFFjHpJD3ccAYNlkI9B7WTNBQErryJ/RHpTGFHHFG2kf8roPUduJec +XaylHzYOzODY3fs7xGF5bFjZ7+hIWNkQUSWj/agQuBfbL2QRRZ6nS18R4wqsY6yg +Qo2wrrP78kFuGZ2qGA7PI1N/6iQgJNtfIVbvG5zukgIcrszTMdzBxCGM2juHM7TJ +X/fqXT6NUYpCRTG5wIfGKsfz/qS9KRdtACZaOEOrGjwXnhP74K3ua7q7ZUODwfDd +hrDh/jyXSv0ycsIzGoLMby5Gt4hh5K+W8r3Mwm9TqgR11c9G4VGFEjC/q3RJoo4r +NrS5k7p/69Ezjzfvt7KSzBHn2TaG9sVebDMl5VjlNbGOMj7eMmuEbaM+6RpCxnPa +setH8Jz1gyvHZWwbIXlsgXxaOHIAKvpbCBoYbzMIBN1Prh4e++EWDvp1KQigfdc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHDzCCBMOgAwIBAgIIVnbZF4/ffeEwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgME8xIzAh +BgNVBAMMGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRswGQYDVQQKDBJSaWtz +cG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMB4XDTE1MTAyNzEyNDg0M1oXDTI0 +MDMxOTEyNDg0M1owTzEjMCEGA1UEAwwaU3dlZGlzaCBDb3VudHJ5IFNpZ25pbmcg +Q0ExGzAZBgNVBAoMElJpa3Nwb2xpc3N0eXJlbHNlbjELMAkGA1UEBhMCU0UwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC4cSXeMAuvtH1wVcrG3cZu/joz +kRWaCwnVM1NcnZpCjfdaVftSvvSlxMZHT0fPpTZswsmCdR4yrHe7d4Z6lj+Y8+Uw +rT6qpSRcDDJFW7mDNYj/iELyeBu1mwphaTwsNE2Gr8ZOV1LvMQjxBe4T+kaIUiRZ +KZWsKajgo1Ipg9ROg+7eTWp0WE7AZstGfqcxAyU9MrxtqRW4KIKCfIbW6NeyWvVj +FTYwFRsU0DjHYwyW2VY+oyDV8KtYNE0FkHH0uI6ygF6ohDntRjqDw2QZrHX8/SPj +vEIOxVG3pEK6nWr/9yqTahwJycGsqPGmsLxAXrzF9FZxfWF+W8mT4XJc2GxqaVYQ +00BY9SsrSyT5aXlZAAfNYlBbAX4lO2vY2r4j3qmubkfwjJY5wlxUZVoLlhlRogL1 +UR9cFgPrZhAx0PT7lf2ZwohVqKFpyjHmpszFvxQi0Q/QxPjUEfQQIKbAgR7WE01Y +L1LALvjDDnI50n7blaHdRuJdiRPxHVWtnvFo9j9YeaRfx4JR6RUCicnrRx2TnLD4 +9OsRik82x/iOt4K1xbXtX1oquh/vEu71AXIe069tnPS2roNYoJnqneFwdDw79hsP +uCg/Y8GhgpxrGcq7OFue6KZk+FLKOFAOHaTou0c9mcRwX0HzgnsQLwz4RYEGhLq+ +dnHdIDzBoBtfHkmVkQIDAQABo4IBhTCCAYEwHQYDVR0OBBYEFA4wULiS85liyEcZ +Lpjk0/qoQxmsMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUE/iqb1pS +oBtX8tdu/DpXXCJeJN0wKwYDVR0QBCQwIoAPMjAxNTEwMjcxMjQ4NDNagQ8yMDE4 +MDQxNDEyNDg0M1owFwYDVR0gBBAwDjAMBgoqhXBUZAkBAwEBMGEGA1UdHwRaMFgw +VqBUoFKGUGh0dHA6Ly9jZXJ0LnBvbGlzZW4uc2UvQ1NDQS9TRV9DU0NBXzQxMTVm +NDEwNTc5M2RmYjEzMThhZTVhNjgxZWVkZjdlMjc2ODEyN2QuY3JsMA4GA1UdDwEB +/wQEAwIBBjA4BgNVHREEMTAvpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2Vy +dC5wb2xpc2VuLnNlL0NTQ0EwOAYDVR0SBDEwL6QQMA4xDDAKBgNVBAcMA1NXRYYb +aHR0cDovL2NlcnQucG9saXNlbi5zZS9DU0NBMEEGCSqGSIb3DQEBCjA0oA8wDQYJ +YIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOC +AgEAIqgKT96CRkXp2jKEZvHoO1WowQ8VbFgg4ouCNNLwJqcwDL+kvC07iwUjLitR +3w+rLMBQbRnWqsFx/V9VQRZYxHEg2dLXEtcs2Q4IxDV1aNFUS2mMQL2heJ1oYmQY +omz7vfrQJDVttvd2c/bNRnXdb0hCP4qWRjrvR7zF31Ezg0MlGSNRtP+x16fH4hOh +KjNJV9XP+vIndBeC1+GMEXEG2eSnaDCqjXdxDYzCe/HczLu6GQ5MN24wOGOywmKy +V+xKNhvUgcBQdsrvEq9T1IGJrB7Pkd3zz4YYAr/liVEmojaiPHnfX3Sl4WQyIR8r +Xh15nOT6TQnCOqcyRT3GAKvx2n1nBwYyqnLl/oE74HdPXecGDhF4Ix5qF2MpaGA8 +JL7rdIq0zLZqNOCoKOZcpcco6LpHuTsygimnOelR3G7rUxPjTUFRkDB3Pg26Wq+o +cYXVNpx5f6ptdyciEgJO4nsihGkJFKt4j2ItO31nAUEpeuhO9GIOQf4t2oVRehLZ +uwniexDOtaBN+OkJZZ7jYV+rRv8L/kgMxn29ogjdp13X1uA0d/HpQHrZaV+wOalv +hEQ8wHloypVJqts1k8xQv+8TX+U70xmgtaDka+p8Yqx22oOXgcHVnCofkGykDhad +qp9aidSFB0sblBQgyT5ZdsjTz27ShqXoVMuCT3QewI9etlU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEDCCBMSgAwIBAgIIXRKNWEXfjgQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFAxJjAk +BgNVBAMMHVN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBIHYyMRkwFwYDVQQKDBBQ +b2xpc215bmRpZ2hldGVuMQswCQYDVQQGEwJTRTAeFw0yMTA5MTQxMTIwNTlaFw0z +MjAxMjYxMjE1NDVaMFAxJjAkBgNVBAMMHVN3ZWRpc2ggQ291bnRyeSBTaWduaW5n +IENBIHYyMRkwFwYDVQQKDBBQb2xpc215bmRpZ2hldGVuMQswCQYDVQQGEwJTRTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ8igT5yClOp/F2rY6Bfy1RA +JKMNIsAS3rsfZDAkm5CRtfyStbeEjMv+7W7BEbh5oMgw+q/3S3lPQuFZ/xLe7qC8 +tgvSFYtvNtEbpEnWs+ZZcsAhyqueEe4WR7lEEKiLi/fxIf9a/+QVhRkzHM4bjjTo +7X5C0S63sbuI1BdU9KyOF+sh+IIFQC2++kZ/sbU4Fb7pOwy0HWuV5ZT+VscAoYLu +YsM7pQmf6G4J4/N2tVsHKXxqAP0EntuhENNltggvPWNlQ4lRvdTy/78UWpt9X4cx +6vnIbnS2xCX9wF/Chy7Ktt+oZ+TfyxL5SPGAIpEsToCT+Bv6qDN6P+NN6t+DPC6D +VNs4RfJ2RB/ZH8nVjRBp/enG7JsNYGGUOb649hGKBB5ph0XG7JkmzSyNYjqik01/ +qag925W+43etzdsSXLsiC4Qt3safVd9f6tR5/nW4QP9ukucSqrucNVhty6grpFeO +ImZeUvCbVkOjehRNFJovpvf5AvHCwB2d7RljJk9zAUTxzSF1/nTOgsbJKTOGs0sU +VMAyp9cueOee4JK756vYUNUd/glhetqiglPbn+xKPMq1xJZx+fhv6I3JRXeeTJMp +aF/QUBdxaSxnxp7KsGREggo08PiKpU3LX7UaO9LUkRHHKbI+/wfEf4+ZD4EStaGM +dHk3QBQk247dReTZO+vzAgMBAAGjggGEMIIBgDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFOAqgPcv420L3fI34WfWheXlsiKJMFAGA1UdEgRJMEeBFmNz +Y2Euc3dlZGVuQHBvbGlzZW4uc2WkEDAOMQwwCgYDVQQHDANTV0WGG2h0dHA6Ly9j +ZXJ0LnBvbGlzZW4uc2UvQ1NDQTBQBgNVHREESTBHgRZjc2NhLnN3ZWRlbkBwb2xp +c2VuLnNlpBAwDjEMMAoGA1UEBwwDU1dFhhtodHRwOi8vY2VydC5wb2xpc2VuLnNl +L0NTQ0EwEwYDVR0gBAwwCjAIBgYqhXBUZQEwNAYDVR0fBC0wKzApoCegJYYjaHR0 +cDovL2NlcnQucG9saXNlbi5zZS9DU0NBL1NXRS5jcmwwHQYDVR0OBBYEFDcSA888 +xFowN/0LptoBvUdmkkDvMCsGA1UdEAQkMCKADzIwMjEwOTE0MTEyMDU5WoEPMjAy +NTA5MTMxMTIwNTlaMA4GA1UdDwEB/wQEAwIBBjBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggIBAFRw3lTFTU3pDIlO1w6DN9gcQNs5Exu4J6Q1V1vjZYRarjFEwvz7AUU5Ygb9 +b3fZDuQGJ3tt2AtE02oA8nXi5TT85ZrVfS7zmehQBTwB67jivVlI242kWkH6FWH8 +DHrF5e3lnkfWNrvHOSAxH8PLPRdoTdI7nR63E451OiJk4ipHbTAjbmKLKpXSDrn9 +M4NxkUDjlP537E8/+QPqWguRq/DwkpyoZkSGYQSXAktzfuCtJtZykQeR3O+2aE/1 +jn526YVsLwKfwQgfew/4TglYQ7QVgJ283gSzzq2lTOtfjX5wJ+CaDCTiOx0r/dg4 +9sXDYO6zf4E5R+jScobfWViLzskksadqBygq/S1jQU7plWBtbiA1Mv5WtlbmcCKG +Me56npc1+bl9RsowdOSSkKY5/Uo8XEVNbQw/0/IFhb5n/U7O01eHmMAmZIbKv4lg +IRROj7s2HbJs94ext7kFz0dh4lE3f3RCsmrDLC2+34JTddZu2CZO1kHaqv/cmZEO +IMk5AD+BO7HLiDsmdLUcz8+mywi+WdYONeAWL+reDdXlPIMTOs3uAo/6uhJG7Fzs +2v+PZWlDJa26w80OE1RD10cvjbSkCJELz6N/02DSo4LAyz15mcgFqyyUiWcILZUF +hRl6EDVKeUx6odBRAthfvlrGYhRO5pNPT92deLbqcQswp3H1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHIDCCBNSgAwIBAgICAJMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMG4xCzAJBgNVBAYT +AkpQMRwwGgYDVQQKDBNKYXBhbmVzZSBHb3Zlcm5tZW50MSgwJgYDVQQLDB9UaGUg +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRcwFQYDVQQDDA5lLXBhc3Nwb3J0 +Q1NDQTAeFw0xMzA1MTQwNTA3MzBaFw0zMTAyMTkwOTEzMzhaMG4xCzAJBgNVBAYT +AkpQMRwwGgYDVQQKDBNKYXBhbmVzZSBHb3Zlcm5tZW50MSgwJgYDVQQLDB9UaGUg +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRcwFQYDVQQDDA5lLXBhc3Nwb3J0 +Q1NDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfxN1kVcXAg14aE +k/J1Ui41uocDODYvfQHoFs3BrXxhaNM4xQNQpeVEasWrr2Lt4EIEBwRgNQqL1nhq +5clUkczi9YpnGLEoCznJ4VWAd13K6H+Hm7/flvk8DXXPWMwMHI/KzXeZz+jylyEP +ljwpBDl3cm/NGBJ8bk/jT45FXxUjwUu0GGab09n8MuH2dHoePNud/u1ZXkpkztJq +o+05c2hueqtedEi2W4aTnfIw/GzP8AApywj0fPMI+IQnAyxMKC8mPORyQkyEEDJ6 +E1KassxHrqT0RCJusouHfAvWKiFhZ9mE50XFnJjGiS86vpGMCqLnX56AukVtr82V +53Xn0LOvCGbivrgC7vRtyVhj4LtAkBo9CTQ0/M5Ig1fvuHja2XM1io69WJwC/lWy +ymwKcC9rtfZdlg6X1JJYpoVn62qhzSFClOgo2Tht9Uc13KZSI9JrarNBNa+69+ex +LMhaAdvIjaOHM9ZQrpYdBOFic1sy2XE+GbKRx0Qhcr2J16Im1xFdZ1C6vAciihtB +Uu55+ErHqFfvD74xyz4ZhxjL4uJsZG3F3Vd8LYR09fx13amPOAOMR1rdfrAf06U3 +pLQ4RZRH3FMoL07ufFLTp8rKJjlVXhEZou1kro38yrBiQCWHnrYgOUfs1+wcXshV +RKltM4dU5MIdEvC0XuXYiYePuhRtAgMBAAGjggFeMIIBWjArBgNVHREEJDAigQ5w +a2lAbW9mYS5nby5qcKQQMA4xDDAKBgNVBAcMA0pQTjArBgNVHRIEJDAigQ5wa2lA +bW9mYS5nby5qcKQQMA4xDDAKBgNVBAcMA0pQTjAdBgNVHQ4EFgQUP6hqFqKQFNVS +uTzVTPuRFLazHRowHwYDVR0jBBgwFoAUSEWOiGkmoNCxHStCL8WbRZvh7HswDgYD +VR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwbQYDVR0fBGYwZDAwoC6g +LIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9KUE4uY3JsMDCg +LqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0pQTi5jcmww +KwYDVR0QBCQwIoAPMjAxNTAyMjAwMTQwMDBagQ8yMDI5MDUxNDA1MDczMFowQQYJ +KoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglg +hkgBZQMEAgEFAKIDAgEgA4ICAQBBMfV4gslQkPEcVqKgurSvzt5c9LcGx9fKTReo +T3ZOTH14rs9za2HO5bxoCn95dMvDfsMeGTBK0Iz4BrEuSoOSQEPVTUy805179Wxh +dc1MEJ4p9X5nGFMFkDAiyOuZHNJKeOR6exSozgIQcp2bhwwhhXugpT2O8Y7w94gI +8zectxNGpGgB3Yi5r+L4L2v3XwNZASKcJno3y6gbSeJMPNmcjgBI6z1ksVyXrDaL +ZgbtWrUZiB4GMdlo2XLVudviHDLt2YSbNI+Fm14X/kQwyCbmKnoqHS5dkXEwUrAf +h7s7PObLK3GXLaDy2jdK8jZJArVEluldwUTuG1unFk6s0WCNyOhxEzwQk1zyqW1d +9IQHh1Wi4op7aDg0utmSsUAXIZgp+ub+C0wWDmOQnWO1yvkDhY27YsIIEqu1ytHx +bVkK7g4gt7aDKZRjYKioC3Ec5tC+jqE/A4314T0vsUfwBCIgz7uZQATu7w1KtMOg +xHlrFS7bzGsIpT57PsVUg2GvqYraFp/Z6a/OYT4ewY6ui6qbZkDnBCGI2bvqXqfc +ozHlXWt7jjNMB1nGUvuZ7NetiVCOhLpHjFgxreiB9dOZFUalg1OjEGY4UBeuZHOU +U1QTWsWK5avZwxJBAt6RfUn2KGt1fEDi2JmCbF2LfycHmN8zvIMozy28oXh87QL7 +0kqf3w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +4UHEDA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +qrjrSbNhtz4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQzCCBSugAwIBAgICMAAwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYD +VQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTExMDIy +MDIzNTgzNloXDTI2MDIyMDIzNTMwOFowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoT +A0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYDVQQDEyJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEApTvJoCiGVxPnny5LlRldjDZVzY4GWTsxy6QI1xRi61/F +HdLLiXTYNYR7vCt9ga3x1ja/AE5grlefFVycler2WK+amRyYmvdBbrQ1bYEEKL6N +n2cdox60tAA6A1zb0T3Ayrl4dmeQGdScDBQKVjpTchu2xHYOmTLZJCRfJgUet+hk +F31eQ+MEL5+thbcAl0OmAkrAmjYFtFcABq91gSZHxRAgE9p08f+tYPvTwk6woXX6 +dqFeW2/BqQqTJizjjfPOeR4loNsi602nPpYOk0OicdTwW5A/nMCAKnlr8LEdKuUl ++YERh+SZm7oXQUJJxXDt5bIourZKIhzGfQrGAIYZXWHNTP/kcbCBDdrQ+/PL3x0R +pI5qrQ0QyLh7vPM6MEKMbqGbq9PYr37N6fho58BerVRKHALjxyuxNlBNfK59rYpY +EiNxGk5+pHK92kH4YicbYdU2k7ppIDTckYGEGWayWKyb0S+jLapEhWAaBzaA6WzP +GHbJwvV7f4MOfsC1rDB8TdOkm/sBCkZ+iMgwE1b8jSBC15q4nB5+w2enwbITdIG9 +uyA+EomD+4Fn8HcBXiR3F0wd51AEgEWLyYol2etUVSQSbyk5/pzWSNtjZmMDkCWM +KNA7sckt/zKaalJByqpVvzSLbb71eACDEM0qGK9YHu58/4duDPE8+V2zpp82IekC +AwEAAaOCAfswggH3MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGGoHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDExMDIyMDIzNTMwN1qBDzIwMTQwMjIwMjM1MzA3 +WjAdBgNVHQ4EFgQUqdxox52YhfGyz4BsPFG1XzgsB4IwgZAGA1UdIwSBiDCBhYAU +qdxox52YhfGyz4BsPFG1XzgsB4KhaaRnMGUxCzAJBgNVBAYTAkFVMQwwCgYDVQQK +EwNHT1YxDTALBgNVBAsTBERGQVQxDDAKBgNVBAsTA1BUQjErMCkGA1UEAxMiUGFz +c3BvcnQgQ291bnRyeSBTaWduaW5nIEF1dGhvcml0eYICMAAwDQYJKoZIhvcNAQEL +BQADggIBADlPn8fKrZ/SzgyFKKjPEuKAjtSZASYIO8QTubMG/dIcdoSIojwovZGV +A8z6cyUN9DtIYRYWftHhF7J1e7kbowTGi0iMjQClLm81SGUmfMKq3b0Tr3NOO6CP +UA+wM84b49Ui0ARAU6IcgbNah4uGUZBUCQ774vkoq9TA6WIleR8bs2BecB+ngJoD +cHZADFXbFrgI5fO9AN707nK3kn0xVKa8zRhOhpIgMAetpd9mE0xyjBz65vCo0gfU +RsxArQQO9d+OlwxZT0vPlY1chlswHWLeFR7zhvczM34g35PR69RnZmbQkEvMRXoz +fcMKgEPFNw52kIKJ7z3ynSgErIclbm/F030AgtBF6jYDPjFz5Kj9Wv1TSwOVpNej +KXOJU4nl9aWfepTP+ifCJEubeJuwg0Enfiazdw5mCekPVl+1dHMuKuXlmj0lP1GH +Zfh/IMGVzIqsHbK6RFVQ4dU3QKdJwllSjvBEYaHYKsf7SS9N7bG4jFbKCLlzCow/ +RmtHSSxSSsu7TtoZxeGANNjIQMc5kagjvr9/VUGNrXLgVAdPICelCImPvWoQdMTX +oYG4WP5sYf3bRg/Ha8Oc0BiB1YU4lv9cESeqUhiyOgCoePKzhS+GL0/ojMdt1z+m +R0rPIbTNcqnanH7P+BQGBl/owXoRjWBS9QyOd8gtmexBvzbti5XM +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWDCCBRCgAwIBAgIBYDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xODAxMTAxNjAwMDFaFw0zODAx +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAtdfAcSc5w+kVyEiD ++wzF4aDg08UPzeHWS0+Sn8IV9XrE6HGcCP9HIDaWAi8/W2/kO5jpIg0uUw9yR1yt +J/B5ZKT5llFHzEBcXshxNm0C7peVl1BPd0bYsWUfP4mJl7wgGnSqmMvRSoaJwLX/ +KbUxJQ5F/YEIEdmZUrwHaOmdRdvU0N6gJDzRzwC8okNloHN+21aQMQOd+rwPoiLU +f7iXKLfdHbDtsLEirkwa5eqru4cGzNNh9ZoZg+V8SIj+jqy/VuUJAt1Wfp7Dw3AA +Lod2KHFHX1TJErN18o0AERS5Y7lIG6goA4oRyY/NoeMuwTKqAYEqyA45tHlOdgSd +oN0BhgsUHnQwZ2gppIgxRh4CsSXuKG6ewgQRqz+eYaxBqMLp73Xu+4akAEO8nUxr +gHTfdk5RxNFy6GMcLRRLTYRJ77dUkvetUpT4I41e7ZpOgtcRBtQhqP6MTUgXAoMN +NyhGhpaNKOJsi7zEh1O1yNTjXXVJR0i/qZvqSLDZNPXiuJejdRUvB0SjlhS17gJv +y5MU0O3oniZbLNYTznw8AYN8s+2onJtodqgjZmochp2m5HM5trNk1ykkIo6SAE1b +nDD4c7Bd5uZ7QPgKJ7/9B9qviXLGkbRWpdG2Q/23uX/eITgfTs7cY4NhU+vDWDRC +/Hs1k5n1AywfGuAeKWdsgWLJp5MCAQOjggFtMIIBaTAdBgNVHQ4EFgQU2Xqjd+ZU +siCBGZUzXpA39ddetAwwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgw +MTEwMTYwMDAxWoEPMjAyMzAxMTAxNjAwMDFaMD8GA1UdEQQ4MDaBFGVwYXNzcG9y +dEBkc2kuZ292Lm1vpB4wHDEMMAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANNQUMwPwYD +VR0SBDgwNoEUZXBhc3Nwb3J0QGRzaS5nb3YubW+kHjAcMQwwCgYDVQQHDANDSE4x +DDAKBgNVBAgMA01BQzASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAy +oDCGLmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX01BQy5j +cmwwNKAyoDCGLmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hO +X01BQy5jcmwwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG +9w0BAQgwCwYJYIZIAWUDBAIBogMCASADggIBAAUcgk2lGuV6T2vM/JCV1blllEZJ +ntiqo1K2FSHmpFllEf7enwghS/rVl5JkCJgE19u3UA9/fZnmf+fYgahx2bFbJVR4 +VziaIZ3c/T5EVFNh+ouq/uaJYNVwkwhM6kiW5D3txVYaU/b9NVz//UP0Tv/1P+em +cXPY4jb4NG2LbzwsEVhtI3rZEdDGJjKsNx02Bm/Tnn1yus3/BddhFYlxmGKCMEGR +znY09s8Hak+0lbPq2vcr3/IaooTNFXdCiAN+JwTtg361l+5d/QvdCcseUpeN+bOo +weDedZbN2eN7mmb1Yrs5BlPPT8W62etSQKdOwrOynVX2Arv9x/tEZkImCMf3exyN +IG/FS5jXuRPMkndy93CXkmEW9HqafAWQD229xK8hq4SthhFVC2Z0/zxemXVl5qub +AwSIBQo2haWHDyg3nMUB03XBE6XlxxCrkQ1CM96mDwoOieMZsB0MiNh1zNq+6ITS +iQ0ny7uL5r2+NUNaeASCbGYNrZhoE7yXm4y1347qe+S4B9C+wAi5MADtmxu9RLHN +rPkuakeX5EbzpMmcnAgLL+YYJtlJJMqfyxGWjlBkJKj3gGl4g2Q2IMbCmjrk0dSe +cyGi8dsLmSeQPcHyuGkX0Hgyt2HdiD7TaBPypSdfml+ZLiQpcSq6Gx6OlE0UTqN0 +muB/Zd8oxMXPl+7z +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWDCCBUCgAwIBAgIIXXFxrPKAavkwDQYJKoZIhvcNAQELBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKExJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsTG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECxMRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMTKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0yMTA5MjMwNzEwNDBaFw0zNTA5MjAwNzEwNDBaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UEChMSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +ExtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsTEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDEypDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF +YBFcGGMu+kGmoSI3pB3jNWV7nuiNqf4yOlO04qF8MsOwrI0yBasL5Lmm6DT7lAV+ +RCE08S2Pxif9QYQ87gZxM6BjNqHs7FjGz0QBhpNX4ng9IWeyBAQy6k3tJPvpHX78 +TqwlHCOYmbLL1zQFUzItKatPgyEoWITLdWkzNjFwAZhUoYxtjDWAezPbVaDzNw4e +mN9rv9L3vucj3kQdIbRyzdic6jcY/SEdYBjwRz81xdxbUYku3f5NPvaOyNtmLhUg +m0RCrk7vJp30Sug+NSF6Odd5PvrK3KeHY7SCSDneTGm52V6o2iT15NAzojIrXsKS +6MtNveThkwjzy/0taLqgnSVYTTISwbZHeV7iBZbXaF6ABhP/3cF5FFkOEm3jYQ0E +GwybUZXBbSE9ovdjqUWz70ZUpmzMM1EhGUdsLsh5EAWG21AH3I8p7gl8MyeptS93 +l33TbbItc3jP3EdP5J5Q0n2jGK77WiAX8BE8iySXk9dd4iEUb5CXFnaYdCQ8D1G+ +gaN8XSxdjHnavbhKtP0Gh7pr/fUjFC03b8r1ovE1fY24g1BrImtsEOEOIFhXQ9a+ +LUnrg1Ijy2iHB6NyqowSO744DDs+4HbGLNTBoMaN4I+ZV5XPmpveZPwtBuEwoclR +4STvE31HffD74gSt5+PW2gF1KLkP+982xRn18Ya54wIDAQABo4IBkDCCAYwwHwYD +VR0jBBgwFoAU+1b2ZmX0NS2gWNPAXj7K/IEFkrYwHQYDVR0OBBYEFPtW9mZl9DUt +oFjTwF4+yvyBBZK2MA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8yMDIxMDky +MzE1MTA0MFqBDzIwMjQwOTIyMTUxMDQwWjBABgNVHREEOTA3gRVsc3NzZXJ2aWNl +QG1mYS5nb3YuY26kHjAcMQwwCgYDVQQHEwNDSE4xDDAKBgNVBAgTA0NITjBABgNV +HRIEOTA3gRVsc3NzZXJ2aWNlQG1mYS5nb3YuY26kHjAcMQwwCgYDVQQHEwNDSE4x +DDAKBgNVBAgTA0NITjASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAy +oDCGLmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0NITi5j +cmwwNKAyoDCGLmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hO +X0NITi5jcmwwDQYJKoZIhvcNAQELBQADggIBAIfZf5qmyHaMOABguPllxdd7Rpgi +F1zfIgEzPsFc4xMPyVuAqX+q9wyhasWskcB0K9wGouJENCX842Wbi9c44ORV/8yC +w4ZUpogLZ/QAr9dypgIHR1/bxuvk3hMk9+Mo16LNSuul+OajYZufUQ8V26gYEPYp +/eV/hKz0oW1xbI0iJaL7Z+cuGXb6kF651vkfa1cvKNrWzbxj4UCQ1SyYoyl7/xPf +/xVIr+JqeDkXQODDL55gwrswUaXQW6oGwCv8aItnPXseCqzSAc4OfPR+zDmyM68T +RCXHOP/TBxIo7NqHEzgKXbtIJoBx5eNx0McnTQBwirqEYOW7dhAftue5pMlUnO7P +ZlgwSvt/o3JNFJuHVZ5ns/kaiI8SvrxYgPahweFm5hyHe1ZLBNWpuJQJnBFaivQ8 +MmN04RqvlwfHRtsU0qjRAh+eOhAAYio6fzFubT8f7hQ+k6qb0qeW2XOqOIVXrvXi +wM6ieq834c8+4jP5sN1VBQqkGg5M4N7pypnuVHjlhOtl9TMtgfVupmrCLT0QSbJS +4Z5v7zGqAklJRv/nC8MPj99c0E6+oTCwgFp/Wooo8CgqbG10ENEu/Or+ambnBPob +2Sq3yhVqTXF2r2P1uegJZjnf7w/CXT8fprDv5xo6omQuV7OQtqOrt/NO8E3leYOJ +NCm+EQF7Z5JJuYNk +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWjCCBUKgAwIBAgIKQ05DU0NBAAAACjANBgkqhkiG9w0BAQsFADCBoTELMAkG +A1UEBhMCQ04xGzAZBgNVBAoMEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECwwb +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRowGAYDVQQLDBFDaGluYSBQYXNz +cG9ydCBDQTEzMDEGA1UEAwwqQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5n +IENlcnRpZmljYXRlMB4XDTIxMDIwNTAxMzcxOFoXDTMxMDYwOTAzNTQ0NFowgaEx +CzAJBgNVBAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNV +BAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEg +UGFzc3BvcnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ANYcKdULxZXg12IfadlvVcUiHNz3uHeWuDkn9g/itas0cKou1WNpgPp+z6jSDU3J +2DZfKCv7dRvSYk06EAufEhcmAjGM7iS0/pDmtCNqR3R+IugRCkpa/ILwG3SwDv5Q +sjbIDLUw9bCZgJsn2QJNTnxzD+WL9S2f07nLoFvyjVluBQ3dMP61qmTHpals9nJr +Xqt37qnWrDrB330dZHv65vFgJpVFYQjv6XcflTXPD17BMA8Zrn7TPk+GpkY7K/iI +CGQU/OUHsNOB58aBmVtWbVpSDaxMdq4YWLzh7q+DKnwOaHW20q1aY57zMyJic0Jb +wvEFZb4gLYCNiuf7Xh9ribvLCh5C4mFx7LfRN+2L/6sR7CNm8kFWHAUGecvZx5qj +eCeFA5diR/A7kT1lzzkkHms+5z+Vb99fGx6KTryQ0syflIM3BCWsnPmfBgPEiOyA +l/+xQd8hlYZEB5gF5Z8I+mJb4f2nBTM6PL4sL3kzYp299NDQqh5tNkykVpp5JtAw +l0237/UNsCNLvP3/VJRcx/XjHiMx39NqjTvorjj3Yxj39Pz/KnxK5hniios9vjad +o9M9Yuxhd/LH18/qKljtv5YGk+h3S6vIK9d/1M3CCM9u8gq7aTlnuVSxW/UTv43M +wGQXycBoIktKweIePy/qILPuA63hJvDPxHLB+k+7tGVTAgMBAAGjggGQMIIBjDAf +BgNVHSMEGDAWgBTxe0/7J26eDqCqj3VZtBTBmvE2KTAdBgNVHQ4EFgQUxauG2EDR +d/+LGBMgOiARcMXcbIUwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMjEw +MjA1MDEzNzE4WoEPMjAyNDAyMDUwMTM3MThaMEAGA1UdEQQ5MDeBFWxzc3NlcnZp +Y2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NITjEMMAoGA1UECAwDQ0hOMEAG +A1UdEgQ5MDeBFWxzc3NlcnZpY2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDQ0hOMBIGA1UdEwEB/wQIMAYBAf8CAQAwdQYDVR0fBG4wbDA0 +oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fQ0hO +LmNybDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9D +SE5fQ0hOLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAk9OalHiNcPexVLZhHwuA8bcL +FyfbAVYGbpjfHAiCxtMXDm786+z6OpihNQwZF4Afizvv5IUtKUpGOzPYr/omHQDY +XNf22n+WDHbFcQj+JPMeO1KKyKupr9QeI6b11tdis/XS3iIPQKdH6RTGxHVwNsVQ +HhiHtbQw0Yn3W3q5ZXQr21lY9h5cMTFC49YZ41xFlsDuKZbjsA6KPvRO+Lb8qGUB +KLn+21fTNFnPpDUV9jaKHXU/3YyzSNfO3t1os8sHG1EprxneZOw57jEUglf1OG94 +CweTpcI98chUG4wd6KKkpuAKMLgNvIbb/Q3nmYfLW649cEqhUwZ9+Eb7Hu82Rea6 +qW4Ji1bom6ox5bBYyCj0R/xwM5m1YylVyFn69fhbKrQjERQoLpzxVuVMJGRSjeLW +4qFm0jBNZfuCm7h9m3HxjzsYCqDAIfC2E5nM/J0EGscbEUfQxGsuh6Nze+fRaY2x +RCwdhVviUIGx6WP6YGAM/SD4mHyL2nXoFhgNTRXwkYsl4AqgYUXO0tOaq+rMTC4/ +7aXZ8ToUhInDkItJImyXl1iS5qOsRnmdbCX2aJHrb7JvvDLWI9MXx4SCyinElYND +WI66AMsfIiSu2Pu+XMRx3fSPu5VOQbdcVg7yK4o7sK5m8AS61ps62vYS1TrLiSNX +ds4tcuyu9Y5b0XS+AlE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHeTCCBS2gAwIBAgIIathUtFr8Dr4wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGQMUQw +QgYDVQQDDDtHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENvdW50cnkgU2lnbmlu +ZyBDQSBlSWRlbnRpdHkgY2FyZDE7MDkGA1UECgwyR3JhbmQtRHVjaHkgb2YgTHV4 +ZW1ib3VyZyBNaW5pc3RyeSBvZiB0aGUgSW50ZXJpb3IxCzAJBgNVBAYTAkxVMB4X +DTE4MDUyMjEyMjE1M1oXDTMyMDcyMjEyMjE1M1owgZAxRDBCBgNVBAMMO0dyYW5k +LUR1Y2h5IG9mIEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBIGVJZGVudGl0 +eSBjYXJkMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlz +dHJ5IG9mIHRoZSBJbnRlcmlvcjELMAkGA1UEBhMCTFUwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDKGgGo9DifrTeUlnmhT30aolbHo0oYdEj5/zihVz81 +/3iJTiWBdKiACSG1GAJCKdUKvnWN09KdcBkrqUA65sGvWLpnbWIcfItH+QNkCeHz +hHui/fuXBfF+y1hEpWNtQWuZ9PcLX1w3yeKOP0GFgcopGzUw3wfnnpx27EH47Ojx +SbWGzMel6O393uJYkxlFZZUVBVINFWulalwMs2QG9BsjymsipD/sFuKvYZcSvPRl +kDysA2kY0E+Xh8+9a/d6MR8Us7/HS7iB4cfc/XCZeuMN7aP1n8XP9P5Sxff5wOn6 +OwTiNvT3yizUaus+rGjfLYJpH6FNRKuPksB6To+iHwoEcY/PnJtH2hNotYv1N/Ba +tRLw4j77x36rgyawnmoQsm4js4Qymae9JXQz0rSLH7saZRs219hN6mrz4x7Ib4k5 +Vtjw+IPxm+Bpl/CCEe3Dwp3H5nEyvi7/FWuN2ur7VCdG/LGFNqK/pifswGSusT5A +AC7wW3j1KfBNtn6OkA1SxghpS1uBM71o5ZhtjE76EpPSd5LrCCpUZi3LpEI0yGmb +X91T542a1ml1xsWm1OYs7U2I4sRDgocuUd8yOG2SwAmBhHGz6l/xfQ2zQoyl0JHc +D2K1tA4uMfxqeJq6FU8Lgzn0rkV/zeWEcp9z68M+t57tcDyIPutPdNCwFQQH08he +7wIDAQABo4IBazCCAWcwHQYDVR0OBBYEFK1Ic/ftrC7ItFl+EuJhcE0/f4PIMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU/ehpYq3+E+C/66l69ZlAYNDA +PAkwKwYDVR0QBCQwIoAPMjAxODA1MjIxMjIxNTNagQ8yMDIyMDUyMjEyMjE1M1ow +PAYDVR0gBDUwMzAxBgRVHSAAMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly9yZXBvc2l0 +b3J5LmluY2VydC5sdTA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vcmVwb3NpdG9y +eS5pbmNlcnQubHUvQ1NDQV9lSURfY2FyZC5jcmwwDgYDVR0PAQH/BAQDAgEGMCoG +A1UdEQQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwKgYDVR0S +BCMwIYEOY3NjYUBpbmNlcnQubHWkDzANMQswCQYDVQQHDAJMVTBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AQUAogMCASADggIBACXDHedVXLv5CSlReExAfxf6Outhlq8m7ddBV295DSE57zTc +LYrUBYFIf3pXVwxjhLT+rCfgsmxS1l1Pa0jdvvhdPCfewvRPpk4CgBuK7Jcm3MnQ +xzTKLOpGYDffWAV1m4ftTmut5hCsaM2p4A+bs0Cyc0jztrsTQBlL+qiaTzjV/IGJ +B2sfzQS7jhbtqobgcymvqYPTWSfc9/pGS2K98KClC6sV5Eu7INvDQUHMDDJxI27J +Oj999SeLRaxAhRHcM7qtWqm7Ajs5+h1sM+69BeAcniAOWPpG0NomwrXFRpCEjg0j +GFIfmmOnVXQyv3RLWfD4Ecs84v9+4H4/A63F7uzsrlrRyV6WcCxFyRKqtJlt1Z/w +pxFyiJiK2T6fwYQop3s4C8WAWk+G0lHrcb0jycsvb8h6D6h5DIl14IDQjvI9v5De +4FsMj99d15TWo3aZAl1ia1A9mMhxQrC5zsaKz/dqZKFEYv0chg8glX3oOspKWKq2 +p1BHXWX5xket12pYj10ZMlxDR+yPQ0bD+WR8bsJ6n5ZERkoJw0bYEzcg4zHzKU95 +xSHdNx2nkdyb0Dn/UTmLnneItUTX8kEgnLr7UdAdKFjGvPZb3kV4+tbs8N8GkFjp +6nbsTIb81mCE8I5taVwLTfp5v4JzvD9Zx577ks9mOAb07cevno0IR53Shj2+ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHejCCBWKgAwIBAgICFvUwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTIwMDUw +NTAxMDQzMloXDTMyMDYwMTAxNDkwMlowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA5Px4u6BkmBlCq4PyXHDaV9KDg1siTg9OImmoqdt4CPLl +3llcuw5Dp0Yi0gT9FUmBzPfdkR7U4q8cC4L70e/GyBK41AQU64bKkBDj2vXIldnO +yxQ3LcNTvCOPany8ocx0y7iZFA/DqOh18tgyfhQEop/9q0mJMukDAfT1Zc9Enjg/ +ZsneNz9aUL+mkDUS4lNk1pBGbKuWYn83xGVXpaiUa5+k2weLCswKRBpkbES3riJN +RvHwKWLIEp5mc17gcin1gL9/C5eZpR9JcKcgNHmdJCPGT+ntd3XXLRQ3XzG7I4Gu +Kcagbw3lB66nN4K1VnKWHmAUqJhQI2wJ5xaMh6l0E0ioHPnGl1l+pj8MpOV7L76W +q02kzDuXxiVbo/EhU/dJsppYOkqSrXYbKyyLAQLyZkvsn8kvnUkqARK0APRXMKBN +woPKMqO/I8q8rYSzUCu0uzzRL9nTu3DKPqis2B9d1Sz8uUf3s6yKrufhawH3XXbA +9qwnu79BmDkuLV3U12kThb8Z/Vo+07P3WgGiztoDSaC6tLvu5d9LlvoFU/Y61T4u +upmF80Uz0WcKzhjHu8tcq0Lp/UXj1szerwqrPZ0ZbKMOw8brJtiPUsX6Mcv+QF4i +r+RWqryE69NJZbiqH+/nF7Uj7wekU10uL8V2CyKkErRohNZwLKRzJorVlGkh6GkC +AwEAAaOCAjIwggIuMBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMjAwNTA1MDA0NzM4WoEPMjAyNDA1MDUwMDQ3MzhaMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHQYDVR0OBBYEFDYXwef1Z5VxLjd1 +cI5VgzGG6TgOMB8GA1UdIwQYMBaAFKsCMFU8A4Phy1zMwxDB8sHJlpPGMA0GCSqG +SIb3DQEBCwUAA4ICAQC0jTCXMaF/FxSgAQQO+YJQR7rWN0zjk9r6P4i3RCAuId32 +hIgQgvxvdJ9JRjw9p3FeboOuSI0WweYxzJqvJo0HXhxoWzRl1e8HzBDaFnlagiRc +YKzblDN/RiQ5+OcnxRPjUK6HwBZp0t5KWGXkEAsXcy92OSgQjKn4QsdG3Bw62vGD +jrBUJDmej/KE2j6ddVDhtSFEmbEXQRA1kHezSV7hq4vgEPwc7TgwJ3ZnH10kmRWW +mETp6/WwnS4zza1nNdpangwRcJeviacVM2XRvSq1U9i607kKy976QXw4NbH7rmfe +I1t0MApBuZgjeR/ZQqLEFlGBND9McRGQgGMWLroQipxJpS64vjTw7tf/gqmcz9WS +EwJTgFPOrw/b6epbQT7vlecupaV6K04Iy9i+aiwTbfjf2csaJxTYsHPY/IHfmK0s +dlkogFpeKO1N5najniEFOeqZByHTCNkPdkp0mxM3plTQ3Sisqn8glZNiD6ZgOz1u +lgR13hSHuNdVJJfVTfRq4tOfaRtZnp0hLiqrK2oJOE4WWoIBTpOgPEs+nwdEiTOa +UEgKwitTetMw95KRep5nRe6RV4FCVJVKcY36uy1ZDarNkGoH7ke1hXQ91TfptYKm +t5zLiOUkQRjnv4fJApr8rvBusVo/Aqp7BpWjoFsnVHpe3W1qi7k/ILS5HzPk3Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHiTCCBXGgAwIBAgICNMcwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTE3MDYx +NTAwMjYwOFoXDTI5MTExNzIzNTYwNlowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDQVBPMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAzgdjHihPOoqH19h/Ml5NNJPN5JWDNBwzjwLUcKNYoAGg +hPXo9CPyQP2L/q/LlxZkCTS3pYOI/BLc70rw/Kl3uLwQmFAttHoPNWf5kwW+HWNg +v8mAt55QjOD6UmD0qq6F/PPzYax8A1VGX2fmgtU5iMuHKAsT+3iVssrcAkeh8D/i +zpaYENY6v17VdIR+hQ8rXy9WVziaZfalRN0cbmE4LrTavD24ZoPW78AzFU3SXlr1 +RxjzR6GxZ0i26TmmaMN1poI7et8ARByVNqIgSmwveO1t2fZ1hvymQYeeJSLrvYvN +EroWtmaFsaPWpexTzn8G0s9lgOrwp++qBCDDd0tcskLPpj08aw2ncYVh4qu/Q4cI +3xpxqWsdFtLdHo4di4VRDZ97OEM11IIned4omDLEFsWwLYv7LfWEv2sSREsm1uL8 +/mbL/4bM9dKV8+txxfdquT73eJdRJIOIeSNcxlFLoiV2FKmwYXcDSK2rtoLqIxFm +qfm1UFZOOAHvNIIhtsOvIETSnUbnarzhwOnowC9kqjjx1eCUzpu9HTcq2l/Istna +7vhuhKR3HKvJcKEVaQtWF3qD2XQcrFoYl3GV+F7MlJLNqfqZPrn33+v+pva54gNJ +trZQuFl5IcvX/bNk4MaWlG0S4IrBc4S9K3YZPUitEgPneikYkC9S0/x4Zg2kiucC +AwEAAaOCAkEwggI9MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwDQYHZ4EIAQEGAQQCBQAwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMTcwNjE1MDAyNTE4WoEPMjAyMDA2MTUwMDI1MThaMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHwYDVR0jBBgwFoAUSbFCm/OHzMqZ +gKJFgxFXo19FBZgwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9h +ZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwHQYDVR0OBBYEFKsCMFU8A4Phy1zM +wxDB8sHJlpPGMA0GCSqGSIb3DQEBCwUAA4ICAQArjZZMPqWYKvIOTT99cWn9rmxM +F0ycRNsCTQiG4NzW7YkXRzLSh6AqEovlFlBkOSUhDisU7S7Zq6o+MUvcc2nFku39 +vXiAcxgs3xkAopntnhDsD/cKJ+I0jfvTOOrGaK41KAzrjKy4HrVxTN4iofb4JkfA +w7O1PfkBUmUFiQaqqWGOF2D8Y75p0HGZ+lj3O4oBtsXOeD7ZYtwzVVRBPcEDoiAn +L0/abqmwVHFayRiozhFIwBLl0HPyoWVL7S5x3kMNjvG3Gy9mJ6o9Q0q5tHOWWOwr +b6wgZm8vBGTLBDfuAveYHQb79kyjl5AhStQjhObKQOw5ah9ehz4M038JBj3owMPq +LSfo6r8h3zg8bH3pjba8VeHtZlmAXIyIP7JI9HNDI9tlCrJXdGXgi/VsWOQpOqLj +oFZhlp9LjQ+UiSuS/47uOp2tf3BFt8jtHWLAjN9FrN+ezYMG0spuN7Caa77UFYne +hd+RJKMgM/L/3DHqMkwVYl8/qzJ7ZvFpc+ea6M+SU2MH/1jdOfPxKN3y7223TMOr +5XfhrBWlpCt763aIlWqQqr2pxGW624vgD3N2iew4vaCJbRQvIeW5qv0dTV+MnYaU +HUfYoFzuvT0S1v/+Vxa94JavuDWasNuCwzIn3X8aUNy83ldAOlfUElSjpRmY+myQ +tnUcQZfHIETKCcmC5w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHmzCCBYOgAwIBAgIIAigiWZpZ+KcwDQYJKoZIhvcNAQELBQAwODEUMBIGA1UE +AwwLQ1NDQSBUdXJrZXkxEzARBgNVBAoMClR1cmtleSBHb3YxCzAJBgNVBAYTAlRS +MB4XDTE4MDMxOTEwMTMzMFoXDTI5MDczMTE1NTIwN1owgaIxCzAJBgNVBAYTAlRS +MTAwLgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkgb2YgSW50ZXJp +b3IxQjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2aWwgUmVnaXN0 +cmF0aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3BvcnQgQ1NDQSBU +dXJrZXkwggJGMIIBuQYHKoZIzj0CATCCAawCAQEwTQYHKoZIzj0BAQJCAf////// +//////////////////////////////////////////////////////////////// +////////////////MIGIBEIB//////////////////////////////////////// +//////////////////////////////////////////////wEQgBRlT65YY4cmh+S +miGgtoVA7qLacluZsxXzuLSJkY7xCeFWGTlR7H6TexZSwL07sb8HNXPfiD0sNPHv +RR/Ua1A/AASBhQQAxoWOBrcEBOnNnj7LZiOVtEKcZIE5BT+1Ifgor2BrTT26oUte +d+/nWSj+HcEnov+o3jNIs8GFakKb+X5+McLlvWYBGDkpaniaO8AEXIpftCx9G9mY +9URJV5tEaBevvRcnPmYsl+5ymV70JkDFULkBP60HYTU8cIaicsJAiL6Udp/RZlAC +QgH///////////////////////////////////////////pRhoeDvy+Wa3/MAUj3 +CaXQO7XJuImcR667b7cekThkCQIBAQOBhgAEAQOP2ydnvizdmYZhxNCrAN9i3bcz +ZhsqIpy7nP8kEnKRBYdyxdsrrYXuTitFClo5myfl4vbhQy6sXkdlPIuVgsw6AGy/ +huFjlD0Olf6j3upcW0qbAej+lCFFljIsehopqFsS3op6raUGUrC6YLJXTln4taos +EercWHsbT/ZhEGrtCCjmo4ICGDCCAhQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV +HQ8BAf8EBAMCAQYwUwYDVR0RBEwwSoEWcGFzYXBvcnRAa2FtdXNtLmdvdi50coIe +aHR0cHM6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRypBAwDjEMMAoGA1UEBwwDVFVS +MFMGA1UdEgRMMEqBFnBhc2Fwb3J0QGthbXVzbS5nb3YudHKCHmh0dHBzOi8vcGFz +YXBvcnQua2FtdXNtLmdvdi50cqQQMA4xDDAKBgNVBAcMA1RVUjBBBgNVHR8EOjA4 +MDagNKAyhjBodHRwOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50ci9DU0NBL0NTQ0FU +Ul9WMS5jcmwwgYQGA1UdIAR9MHsweQYLYIYYAQIBAQUHBgEwajAyBggrBgEFBQcC +ARYmaHR0cHM6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRyL0NTQ0EvQ1AwNAYIKwYB +BQUHAgIwKAwmVmlzaXQgb3VyIHdlYnNpdGUgZm9yIG1vcmUgaW5mb3JtYXRpb24w +HQYDVR0OBBYEFG+bu8ae7NrZvDHpUOEe0MoAIgWWMCsGA1UdEAQkMCKADzIwMTgw +MzA5MTMzODIzWoEPMjAyMTAzMDgxMzM4MjNaMA0GB2eBCAEBBgEEAgUAMB8GA1Ud +IwQYMBaAFGQ4nRVOuoAACRhXhH9vMjjqYhvEMA0GCSqGSIb3DQEBCwUAA4ICAQCr +OvNKszjdKvkNtZSHskDNtt9Cbbede9dVh9AQJGaWm1aQL3y8gc5MUwGXIBeOADmP +DZA19wZmH1j2wmJKuPi0Mt19l6hNFyqCnxZC2KdbSWjH1ztc8Q8Xt99LurvTCpGk +Xv7eVisrJYrS4583hvmliQJWwdSDpNbWYYLEjiBcKzpzrDk/jyeb3rekzkY5dRYX +IwIhN7vgRxmfPwFeSPJ7Jy3Uer6YPtzlxD6bc0N3utXO7JXvQqLHH65STFQW+/+r +k6yVNOswSq2oxvCuaJj9XoImJOiawmXPH4KDieRUDEmj0Z0mvLCeamO8a4mJxMlr +YjFKRzetLnyI0Lwga0xl2w6vQ0idw67oqrUokGC4p272CK9d+dhckL3NtySaq4XM +mM485o7sux7ITmQT+PZe7JeIkFWQ3suI+JqM+A5jjZXeW13gZola869djKPly8oS +OfqIGkrC+7ZjO0tfUdHCvLMsIRZFKYj5iaKdV9LcVCBHpdZBI51jwHJItPpt+CpV +6tNkHY2k1jxVfwoil08GzQNXbYCNx1BAbgDb1+TKlbgxmy9SWatxeTAX67GqO8bO +KIV3YVZXGYk5jB9ugF/zNYuOYUNoUVdbs9OrxlECvzPbeBPD9k3lPH/eyUyZ7W+D +DRd9zToxgf1QtkS4Yl5RY9WOLxasnQcz+JXwwGe7lA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHnjCCBVKgAwIBAgIIWIsgSt751f8wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgMFAKIDAgFAMIGFMSIw +IAYDVQQDDBlJdGFsaWFuIENvdW50cnkgU2lnbmVyIENBMTMwMQYDVQQLDCpOYXRp +b25hbCBFbGVjdHJvbmljIENlbnRlciBvZiBTdGF0ZSBQb2xpY2UxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJJVDAeFw0yMDA0MjkwOTMw +NDNaFw0zMTEyMDIwOTQzMzFaMIGQMSIwIAYDVQQDDBlJdGFsaWFuIENvdW50cnkg +U2lnbmVyIENBMT4wPAYDVQQLDDVOYXRpb25hbCBFbGVjdHJvbmljIENlbnRlciBv +ZiBJdGFsaWFuIE5hdGlvbmFsIFBvbGljZTEdMBsGA1UECgwUTWluaXN0cnkgb2Yg +SW50ZXJpb3IxCzAJBgNVBAYTAklUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEArSSdsKx+a8rDZz72QDOT2YZGE3g/KVBhYgyzNARqHp51KM/Rr/02R71r +0bqWxhbHcKXBNa+b9znp4tm2dstnPJlDWU/CyEzEqo2/M744VljmkkYxGR3P1g2X +n3FFNZmDqmvgte7pPm9WgQxRhStqLrVCJl1FyOg9woFgt6LgmKk3jbX7g7JTvBlB +y147TAsqaRJiqRVs++a65dYEUmiAPToGYvjgRQZxRZj8sG7qCnTD6FYzROpwwEFz +59peZMxrKv/e0BZHBSKMGGCesexwQNj2v3EHWOtbhqf7njISKDGFyo5Cjt0KyabV ++kal977XijKs3ftyPUvlqfGqpHZ0kGQmLfZUjgze/ADnNn97FYhKJ29h1Ey/Waw2 +Vhu1HSn/w7+QqP640JonndX2cO/+Vzmx/UAZNsrmxbmEivhvggIZDmX8R/yiofbP +lRjjd1TZXOjGkxxs+Z3yOIIP/HxQn1Auh/lNM0LYU4myZPVAxa2+b92+llGZTztN +C1x8t7EA8gWL6NjGXCtZCyn1gkeDTa2O32/ubUyXkQqEMrlXI6+BfO4YYK9zMq83 +x98M+mqhMS9qOFzctmguxsyE+EparZnzr1/IdrGyY+loIAqV4KHQOavLaWy9sqZ6 +b0mhx3Uzi5B8sHOqh3eJmhChs1c20QgJ6CqYBjNVVOzOZDGQMNsCAwEAAaOCAZsw +ggGXMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUQ2zjkh0QkiMH79ei +9XftdSRGfxswUgYDVR0SBEswSYETc3BvYy1pdGFAaW50ZXJuby5pdKQQMA4xDDAK +BgNVBAcMA0lUQYYgaHR0cHM6Ly9jc2NhLWl0YS5pbnRlcm5vLmdvdi5pdC8wUgYD +VR0RBEswSYETc3BvYy1pdGFAaW50ZXJuby5pdKQQMA4xDDAKBgNVBAcMA0lUQYYg +aHR0cHM6Ly9jc2NhLWl0YS5pbnRlcm5vLmdvdi5pdC8wTQYDVR0fBEYwRDBCoECg +PoY8aHR0cHM6Ly9jc2NhLWl0YS5pbnRlcm5vLmdvdi5pdC9jZXJ0aWZpY2F0aUNT +Q0EvQ1JMX0NTQ0EuY3JsMB0GA1UdDgQWBBTRGlBeFa3qWmF3nKSiqZHsOUnR+TAr +BgNVHRAEJDAigA8yMDIwMDQyOTA5MzA0M1qBDzIwMjQwNDI4MDkzMDQzWjAOBgNV +HQ8BAf8EBAMCAQYwDQYHZ4EIAQEGAQQCBQAwQQYJKoZIhvcNAQEKMDSgDzANBglg +hkgBZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgMFAKIDAgFAA4IC +AQCqwD1pfEUHJIM1ViUCm/oJB2p42Nl+DAZ0hn3LOLCcBuCvBiZ8RHX0hnxAjBgv +kNWMQBR0I7xwV6gRCpAen4kJcnSVYGV2zHcckX49SbHG061lueG24XCLUKpl3Nt3 +9ppQI53RWybS7NfxS7wZ62Crvsi84WcEFF5bzRzh4R3ex9I07PBjqX2WepLw3zrF +vY+mGKICj6Z49LMdb29soOJgF5G9m75NihJGa898HH4wJspk22HWtTVpryEuatPt +0hk5242R07SM/nb0neq2ccGfxDU2K1HasLtnCNiiPw2V864YQGsoGcfrit4t7AjL +g7QcFjpLl9qL3Ae4C4i9r9+p2SLTcHQbnXafqLvqaK2QaJQkZxXV8NCI7CBG4vbK +citokF0gFgpAwy10d3nz48ibaG3h2LdIysdRJ/uOHfoB+7DrclkWgKJjn0YWLYRU +fzqGDnEB43Eb7g0zb354LXNjD5C1pre4kQZecVTb4ImnXrW9mDBZEXhlMGv/eMfP +udrhn6oBVERcYoTT1AXGwxFtwjK0urj9GYC/P7wCXEP5OWvMvNcnqiwGJ9PYBLNv +oRsPcMx3X6qC+7CgQuHlR2Do/UV7K6pSbf1l90moJo9sdV6viTB3J8achwFH6VjL +t2VwQ8iSJLmbFHngxtClZZrmGEAXY31dVfEbaubIjdb2ng== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH7DCCBdSgAwIBAgICMR4wDQYJKoZIhvcNAQEFBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoMA0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYD +VQQDDCJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTEzMTEx +ODAwMDE1NVoXDTI2MDIyNzIzMTQ1MFowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAw+QzaMU+DpemI4CpHnpCF0pnIKI/M9JenO9UBKMIYim9 +LOPnx/1mZOqvENoGudAWfKzKqdBc4Z00NHObKZw1HPATYatKFzoHAdfEWsoURk3w +ps4RHNjwHygwtPRMyHVtP5FwlKM6jILt/qgpS3pzYNMieLo7FIC1TpcSTEdtwVGR +/bAsL/Ts8mjQfMX731L6s3/BJgOR0Ng1GvvETjOPQ9KfIWynvWqCHmQ0BZHDysHM +bafMSl8V34A1nqsmtCkYFXr8ZZTUmzey4dwqgSIO1gQR2lGCssBVFktz1tjLv4o0 +VKgf8X0MJL6TASakK72fe9aM3Ghia+6pEf3mmMBvartA4Y44CoOuK2/RqV9fjJoB +7BiDCSupcNDY54xlpIrGBEyD2Veyh5JwUB3ahGvN4X4QfweQKS/bwJbGcD1Q8b41 +4fU9H+LrRe235XH63rLMONmCidk0Hpi37T7NecFhMQwLlxvwWqJhej5qZSD9z+g7 +L1NN5n8vxn3oGSOuu3ylKNmIekdz0aOU3eSorzFd1h49aT59R4z7e3lPfO6ChLiE +D36BtBbtYORFtPV7vTjG7WjhbUE/e/ZQwfKsBqOzKv/vUey+0e2x4ljI023IHkeh +ut7Ylq2tctORrDjyEsQJR+dbqdqnp/u4dNVS7gi9Rn8+NygCA8JyP1B16gKp8IkC +AwEAAaOCAqQwggKgMBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANBVVMwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9BVVMuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0FVUy5jcmwwDgYDVR0PAQH/BAQDAgEG +MCsGA1UdEAQkMCKADzIwMTMxMTE3MjM1NjA1WoEPMjAxNzExMTcyMzU2MDVaMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANBVVMwHQYDVR0OBBYEFEmxQpvzh8zKmYCi +RYMRV6NfRQWYMIGQBgNVHSMEgYgwgYWAFCsPmaNL6dWuAJM6eGjLzSGmz0floWmk +ZzBlMQswCQYDVQQGEwJBVTEMMAoGA1UECgwDR09WMQ0wCwYDVQQLDARERkFUMQww +CgYDVQQLDANQVEIxKzApBgNVBAMMIlBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBB +dXRob3JpdHmCAjAAMA0GCSqGSIb3DQEBBQUAA4ICAQCXt/Op3lKn7nEVQnaSWkTx +gt27HP/Mx3b+up6/XoaCaCnNvzwi2kp2Adcfbaf4F2k66i4DDuf0RnxgVMAcL93u +1h2fviLF3DYbsiIODioPsjQnQnBNK7ISzuCQV3DNnF+BpLyT+chp79XJrAyR385V +4wvGM4Az3c0ApmY0DeXwV59dBB5gHr4x6DmIKDYRjJDF7LvW3KWgyLQ/03VseX5K +ccxv9gTEgq9dalhrxAmGLnfEFP3kNMT+OSOVSEVkafScLa4XdXoCLZ45YvFaXxAH +JiEzxov7QwV8lkbe3Ak7Cx2xdTrucUnCoqtmpanO2OjGnxmZFIi9Jn2ouauLVdWr +J5ozzgeIHdynOPAOIB0oMea/B87Eko24HKImNH3UUNTBWTQ1ytDxcnOXIWRSvH17 +7NQrzSgerSIV3irZcIaMWFnjtO9iVQuSTvACsxkZUgoxTsAD/odAdbVxICMbPBW4 +UA/5C5v83xA3UkiDwLt5H6/4fyKvgIrcRvcDCSJtveP6bxAUzMEA9xo0CmRXt8sd +svFYmDlsVoRHrY7+0F2UJH4DmLKtfm2okp/wAG0uBwPLUJjHn1OmEufgvJm5Rkix +IgTQJMAliEGFtY67B2pkxJNo0TKaxkAj7nVqLilh9Yd0AEFemrQWEmarcsleEvOA +dSdEV27NH84dv0VzIQMJ/Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIDzCCBcegAwIBAgIBYTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xODAxMTAxNjAwMDFaFw0zMzA3 +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAwBBn1ERWiEe8DBUv +eKRJWwVnwTqPysl3QwclxMtTpFLzlukRUA37lm2Q0brpM4ifpa/vdTMeuZ90Jo98 +qLD6DtjqR2G6Um3SkfitSzlVRDS35ose0gI2l+nH312wfGnZCvr1hEg1mArr5tlk +7fO5L5g8Ri+8JFi2yHj9/ajLfjtwy7oFHwt+AqVaelKW3Q7j+oPuW4EsAFQJazas +9hCX8eFGqxsp9SX0Dt61HfXLV5XV7zBKagkxEHlCeNG5tED+FEz1An0e/BKc3M6Z +swC/FqZLExlzEMPROFV7z/CpUgjCnYBJAW26YPbnWHJJTBXx8pFyiyqlGpZ5ys+t +EyTsf5hgS/ivOYVKwH4oij7tzCddmgXKD88LawBIT0odjiUymEfKmYLBxCc3Y4tY +iEz3QtZ8xCvkrptKJZq+wDL1nWOJpDrzN7HHMaoFp/uOKc0SnBmjOiPiFg9FMUFB +p4z1zxsK4U2QTJw+63fcCNdiJjj/W/Nm5+Zspa7rNeFh1qnkl3lAvCIv97vMUKle +0EbhARhrojupJSVILKItbQ2+S9qtZP+eGSn4m38RSMesL9s7POFXQ+6m0iSRcFOv +5jmTK/PzzxdfCTXDMTIrM51p3R/HsD7TqzuHMyJ88f8UqEju17ycIT7FNLWaECn3 +TDk6fmv8WTC1Oc+Y0DVcomtYpF0CAQOjggIkMIICIDCBtAYDVR0jBIGsMIGpgBRt +ckHLKyFzYmEZTALTOesDxx1T3KGBjaSBijCBhzELMAkGA1UEBhMCQ04xEjAQBgNV +BAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2VydmljZXMg +QnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcg +Q2VydGlmaWNhdGUgKE1hY2FvKYIBMzAdBgNVHQ4EFgQUeO9EcTNUWeaYrZSxdbkn +vkdJ8D0wDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgwMTEwMTYwMDAx +WoEPMjAyMzAxMTAxNjAwMDFaMD8GA1UdEQQ4MDaBFGVwYXNzcG9ydEBkc2kuZ292 +Lm1vpB4wHDEMMAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANNQUMwPwYDVR0SBDgwNoEU +ZXBhc3Nwb3J0QGRzaS5nb3YubW+kHjAcMQwwCgYDVQQHDANDSE4xDDAKBgNVBAgM +A01BQzASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHBz +Oi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX01BQy5jcmwwNKAyoDCG +Lmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hOX01BQy5jcmww +PQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJ +YIZIAWUDBAIBogMCASADggIBAF06hO0oRM230FuIjWDa5tVYPhlff3aeeQOrzw38 +IKPoTdzS6lXuAgtfszMe0SIH99x00FLd9+mYlM2aQeZys+WedLH/DjdaueZZoKBx +yelJtdV9RvfPhA32YWVOC8PGmOmoEkWyWwdVaGyzjF5cmun4kPsMqCPUfohwvN4x +sssHeuMnH1m37MDzi790L7Zj5PJtslWC3NL9Xxbt0d3+qYlk4HZs4oAQM9BGb6xp +95IiSlLEmsKSWjb0cQ+GTojMumVJmJ2bZpx0dWvVq2D0SXhIeFWrR/ioXKoHbRp2 +CCS9VXyd61H3dI4mEs3N/POqJyhWdF1GPl/+0JenXKQ9kR7Ot3mSa6sH9iJHhjg8 +g+SNnEWeS+qBcT06fRIidv+k1h5UlnDgrFeEDTufJwvW+x4/doHhn4V2TZVV+PEP +K0aIICCqzHcK5GHTEj26uLwESpJ7rCNuZul1i4Z06uZWGJPve+JFi040xeBlWyVl +Y9vMt9c9ksExmMC7qI3pT/fkUcqNkroSs/QlHWKMXPVryFGypP5YJqzJxoZSq6Gw +3KrGn6tnnYhFU8ItYzQe7CWW03Tkq8LRhaFctZCWQjX2zP5TnnYqanFkYfMax0Is +eQP06JUI5imwccAG+MKAbO5xl8++Neg+gEhd6BM0Lcsd8sUYZtAaHU+3i1y640Fa +lkKt +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIDzCCBcegAwIBAgIBYjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDCBhzELMAkGA1UEBhMCQ04x +EjAQBgNVBAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2Vy +dmljZXMgQnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNp +Z25pbmcgQ2VydGlmaWNhdGUgKE1hY2FvKTAeFw0xODAxMTAxNjAwMDFaFw0zMzA3 +MTAxNjAwMDFaMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScw +JQYDVQQLDB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMM +MkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFj +YW8pMIICIDANBgkqhkiG9w0BAQEFAAOCAg0AMIICCAKCAgEAtdfAcSc5w+kVyEiD ++wzF4aDg08UPzeHWS0+Sn8IV9XrE6HGcCP9HIDaWAi8/W2/kO5jpIg0uUw9yR1yt +J/B5ZKT5llFHzEBcXshxNm0C7peVl1BPd0bYsWUfP4mJl7wgGnSqmMvRSoaJwLX/ +KbUxJQ5F/YEIEdmZUrwHaOmdRdvU0N6gJDzRzwC8okNloHN+21aQMQOd+rwPoiLU +f7iXKLfdHbDtsLEirkwa5eqru4cGzNNh9ZoZg+V8SIj+jqy/VuUJAt1Wfp7Dw3AA +Lod2KHFHX1TJErN18o0AERS5Y7lIG6goA4oRyY/NoeMuwTKqAYEqyA45tHlOdgSd +oN0BhgsUHnQwZ2gppIgxRh4CsSXuKG6ewgQRqz+eYaxBqMLp73Xu+4akAEO8nUxr +gHTfdk5RxNFy6GMcLRRLTYRJ77dUkvetUpT4I41e7ZpOgtcRBtQhqP6MTUgXAoMN +NyhGhpaNKOJsi7zEh1O1yNTjXXVJR0i/qZvqSLDZNPXiuJejdRUvB0SjlhS17gJv +y5MU0O3oniZbLNYTznw8AYN8s+2onJtodqgjZmochp2m5HM5trNk1ykkIo6SAE1b +nDD4c7Bd5uZ7QPgKJ7/9B9qviXLGkbRWpdG2Q/23uX/eITgfTs7cY4NhU+vDWDRC +/Hs1k5n1AywfGuAeKWdsgWLJp5MCAQOjggIkMIICIDCBtAYDVR0jBIGsMIGpgBTx +UweQqrmQyL+MNpF+WAscr6lpu6GBjaSBijCBhzELMAkGA1UEBhMCQ04xEjAQBgNV +BAoMCU1hY2FvIFNBUjEnMCUGA1UECwweSWRlbnRpZmljYXRpb24gU2VydmljZXMg +QnVyZWF1MTswOQYDVQQDDDJDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcg +Q2VydGlmaWNhdGUgKE1hY2FvKYIBNDAdBgNVHQ4EFgQU2Xqjd+ZUsiCBGZUzXpA3 +9ddetAwwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgwMTEwMTYwMDAx +WoEPMjAyMzAxMTAxNjAwMDFaMD8GA1UdEQQ4MDaBFGVwYXNzcG9ydEBkc2kuZ292 +Lm1vpB4wHDEMMAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANNQUMwPwYDVR0SBDgwNoEU +ZXBhc3Nwb3J0QGRzaS5nb3YubW+kHjAcMQwwCgYDVQQHDANDSE4xDDAKBgNVBAgM +A01BQzASBgNVHRMBAf8ECDAGAQH/AgEAMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHBz +Oi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX01BQy5jcmwwNKAyoDCG +Lmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hOX01BQy5jcmww +PQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJ +YIZIAWUDBAIBogMCASADggIBAIgUspDDzX45nvoiqSrJifkqWa+GYiopa9ltf2rO +65ug5cYognEMBhoYWdrvH6IrmMtixGDbMkd0vrAtINMK+ksn4A00Gk9AFzcvd0u2 +J3C7z1cOxaTp+0aZqgDrweU5PnRHq92jQV1EVG1/t+qVlcbhsLyFzBcgOrekY1b8 +r3B5JmXfdd5EOeo0KFnDgHiG35Sby5m0z0DctuOjrT27I7LUDUtrTIpBtFEIEv2X +fDfsOUfTWHmqVN0BxpUgHHV2sEGcS3uSVUvZA9Oq6puFIH67L8FNDban07PSVdr2 +48c7J5kO4NZrKep4tef8FIHWI9WR1WhuB8F+Vk1S+QqqSh1bY01DbuA8cb7Wdb0q +31ZIcy1t8gGjGxcHOZMReJqlVsPYb8v0afNe1ep/8w38jKgW3r9iO/K69cwUpHp4 +MQ4USIvs2DGhnY32cuv6GkeChKvh/kZD+TvIgNzyJ1xQR4dYBR3WWjb6Z9ZQWhdM +zHj9RWhdkgD33+3IztnRFP3GWIWhTphSG+GA1LMI8AqvXcnpaX6Wb5kKGJMIK5Ye +Z/ZqlmmYSORhuXmmSd1/S5vk0AKgn4uX6iYNMQ5AP3V8IwYfTQ3YHW977VRZhki7 +u/Wq6Bz8jm8GAzC9+TB3njGD807HmTJ0ZT4kIIpznQBI3KvBfMo9xWpbRw7STnsN +uivR +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIImzCCBoOgAwIBAgICAOwwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNzEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjEwNzIwMjEwMDAwWhcNMzExMDIwMjA1OTU5WjBwMQowCAYDVQQFEwE3 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKDyLEOr3wuc6YrA +hadiiDqoXjjTObKKvtJpymfZBfSFWInFLIw1hyK6WjdWecGvJDRzF9llAK6FzJXD +Lgb8hYkM4COgbgyGtnVyezw1Z/HcCdpnz5IS6LhsXGn2uqDnvo0+AXQI+0joYl1X +vwMEthJyOAIRZhCkc6Oj/byufG8HLh7IrHkFLm2JgnKUBMR4Ne7/6J9P8JyEhLqA +puE8dJWSSNu5YzepNBPdgNo9c4FdIeGyKC8yFtbwJtYSfYubhRxhRC9dGghjT8Ev +fQGH2gEcZfpv06m0yc7lMgat0EZQZE4p1XoD8PLIhR5omS5yAEim1ORZu5vrb/TT +S4fNt84EctlB7DbCWmltsVWnUdAgqtgHJrCvz33a0a7eabIGncLO1Yj2EJZZDEbL +dvuReSisO7RwCXQPB1doXdqCbeBji/iai8K48KZ8XvR34Xgd1GukrbvhxgQ3mnvx +G9oBgRc8cWWr6L7VZyNyyFCvdhzrdONG4Taeoa6rMFQ8fGeLgPmBXjLBigmfKIfd +tFIlCTVxbK3ULKHK7J4o7v+gTEvMFplJUvbc+wpDIeL88NYX/OekgNj6N6MmPdcA +Q0IRb/8PK3tIhXtvMx+ljXxYrcjsbF2P4UNI785phf54WHwMiI03sDaKJQ+2s5tk +mVKt8D/bm3ZXzznavOxmwfZVAFVxAgMBAAGjggM9MIIDOTArBgNVHRAEJDAigA8y +MDIxMDcyMTAwMDAwMFqBDzIwMjYwNzIwMjM1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFEH1vvhYbNcdDNjit0bSKnzgY8Q6MB8GA1UdIwQYMBaAFEH1vvhY +bNcdDNjit0bSKnzgY8Q6MBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgdngQgBAQYBBAIFADBSBgNVHRIESzBJgRRjc2NhQHBhc3Nwb3J0Lmdv +di5ncoYgaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYD +VQQHDAJHUjBSBgNVHREESzBJgRRjc2NhQHBhc3Nwb3J0Lmdvdi5ncoYgaHR0cDov +L3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYDVQQHDAJHUjANBgkq +hkiG9w0BAQsFAAOCAgEAY+8TPPWHUdkCcFmLIVV835ikvVOkHW4rUgyHlJEbeGNL +B6TGC1/ASfwAWUCErdtGsKPfcY7oRTFYi4vdwsL6ncOD+6ERyKfJ6o5A9GPXlXJc +eVg4V69791smJC8J1cp/xd7nc5VmXsCIjrV9S5xfSgszkg3wSmYW8Bj5fq3VWhdd ++91otmAlUdBE6ShNGa4JL6O2tyUMDTnsIRJww2rV4/WQ7+6eRm021fzbxZMQOdwh ++5YwLL/w6yDXkJ+cRIqizfg60igzHmVera9kchoBoXK3cfrNlCwbhmTcGYQ356Qt +ERsUy15O8nonobhdSk8kqeLTJwTSP+XKDXYcFkgjXybXTiLHm+rd6hGT35AsejrH +Ku+RIyX34QntDSLRZpozCe4RWTeOAR2luDLtQH20SHGIwa7oMmbHUG/ms7UAzTXN +ccBQkIJSYoZKL/JizE/Qjbk5+bNua8mk52SvyArbNsbRn5bHAqwko2dtQFP+jDn1 +ffIxOMKoHKq3Lif6jpZOacK8f5w9vmOg9EDW2mVyMpYgMv+sfJcvaGZO88nQmTEH +A6xtnhNzHzF7k68YSiDqM/CIPYud5/Cqtp/R3nu2VCFd2cdULJDkAMb0QAvDzWvE +bwQL1qU8lkwTUg+iweCv14bWY47U0iVj/fodwzS6U5bEzWnu8vayBBhcOoFocFs= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFMDCCAxigAwIBAgIESVaL2TANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTQwOTAx +MTE0NDA1WhcNMjYxMTI4MTMxNzIwWjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQC2llNrwv8I7xvQZU96YR3HtJ47E2FxK2Pkzq2Qbz1ODHgd7M5t +m9ozfoW0kk+RnVJ2eynQRBxQM2oHCgG7E6uHwnl+LlkXSxxehqjowF5dgPqk3chG +BmD/yIZniau8N/d3KL43/eOFsPKul/Uh6w9L3yhDiTz7Eo0VsHG23RuRqGF6RW+d +X2e1ZwkMnUPc/tKxejMz4DZSk2kZT+q+gtylcaKIDoEWTqV+L6HLUOcB4xYmsCpw +wvAC4S+1ECeOje1nPzDd9qP1aMTVPRuhM8SOEYNVxwCR4HNMDusfZdNYS31SNurd +zxNcPe7aqugP4ohMWB3o/N4cI1yshni/NHPZkfaw4QokHroshGZcFYVU4gW3h188 +TvkWi6DZN928Or0O1MriOI3PdO9egRDrQZFEjmSvMB4VzLYjmufc7+Ix5prlSqIL +OvK2ceHDCGLy59nLMwGwQ8OEL8BdW9FTmoP1/945iCjC7iStruxuYooRbO1WJHun +gEMPe1f44FX81Jpq7X0AEwEOBEi9o/H/PH/mWCympdH2IaKlrUaOuOxHsEKjL+9a +ayengoPxnHAdjb9T3qa1U8mqspVJ2uZxK1IBtEVpg4HJgabR5yXZ8YvAs/O/D4St +9J+Iggi0Z0CrxhT6ZzLIwHJMu1aNpcc688QcKHdQewckafR7SaJW3cwinQIDAQAB +o04wTDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjATBgNVHSME +DDAKgAhKJO4EtR9gIzARBgNVHQ4ECgQIRDPKmBoxb3AwDQYJKoZIhvcNAQEFBQAD +ggIBAEtrFFFh0VWM9J5NbAkac71ljUJZ3sIVPvJF/QXyfSgFNY48j6kHjcu86GzM +c47dZ4QvLoaZl4YaXj9mdDiUsNTxCH9SJPyuJQJw1k+CJx/TP2RSwekJ7AXcGkYr +flsy32SI3vM6rcD5rL9TZLnpJ3T4M5IiM5WCK7wudS5dBHNq/h3Wx3uewI+8nMyG +rNpUGoXy2f+8pKdTdL/0Rao4AOP4/fSGVETnp1ezUggvoHF4k5KyG10fznmJ8PXf +ejyjP4K6wSaB9gpK8jFNq+MXcYwhqiNVbtPC+wDEWdZtAovFe/TWZtaRi/oB+WFx +DKMQX2w7ztGscAwnvPJ8mrlUWe5FZxleSot200WAPclSSHo/9kmgJ1129VEUd4m5 +1n0alVQCnFkBtPBKSDN4bTUTTg1BTfypgJ5AFSFvMnvz+82hBRZHtDvC+JtbNbuv +BaE2Vi1WMJmzneoVOq/busQC6ynCfRDySkUiympa8ZxkojXDCBrPkvTs1uSBy3A/ +vohmxEUdvG/ObiyVBTxH0D6Hjj3jmeh501TfmdEyN65LSBBJ8B5PuG8V3FCx+SHN +lhkou8psCfxICCcEgQkXFIFbZpy0pQyAkn2rVTRU3hTfZkZWdPZWRvgFn+ZRdUKl +bUUKn5+7xNLPWVMnHqC6Yy+Lsa93VssHbm/uPuYJ49oiQ/ie +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFzjCCA7agAwIBAgIESVcI/zANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTcwNTI1 +MTAzNTE1WhcNMjkwOTAxMTIxNDA1WjAyMQswCQYDVQQGEwJybzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQC9OchTuFNcldV5FM6KHGEEA7SCpAkMZeLpvmjrYJ0VslzdSt5z +/p2KnHXzf7idFbDLw0ZQTWdmCwWrRMBFIHvJSNbUphvuX02VUuiPNOkhmAq32a47 ++h6xLNBHopyJcU6UbDnNo6wMPAtkthpuLmC/gkTtJgnVOXwIidfauibacOZhyc3u +Ef7Rytc5z4Dqr7Eu8zD0MonWDBnjMLxwzTO3v+tsYFEKSt+a9oE2rSlCDypSUvwk +bQ9X0TPUkcC9htaDWBYZK0sK39Kin5mS7a9jMPzk3+id8WdgAAuTCuQQb5V3YsKw +/52JxwCEOFjYmHFyVfWsuPW9qGpPHSXyPJyp/JjfY9vKAoT+3DXWI3oPmpzUV0Y8 +6y3TChidBwyqnpLvKeZkzO5V9nQ3TbqaGrEaS8hLZykLxn94g/P+siXEkz7wqlfr +PkpbuYFltKpMCUxUY7JtokHvHXQLWpXkPk6px8RiCc3Yb7llRBmIC6vCUqrR8dDu +58DsuM/fLwP5vaDW1sjhy20+jrUFloiqjgkRC3ekm1LdsLO52bIlk1s6O8MDSx+2 +w3ahodOWy0qErkX63it0xaLB2Rfv3WUVJgV88k9qnDJ96mqRHeyvkdS4QF/YU1Jj ++WoZxWX7/Mm+wj7euY2mk9SgK4jj3OrG6tYEQj5nsR4DuTqhCHulaBvx2QIDAQAB +o4HrMIHoMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMBMGA1Ud +IwQMMAqACEQzypgaMW9wMBEGA1UdDgQKBAhNMKMqRkLhDjCBmQYDVR0fBIGRMIGO +MEGgP6A9hjtodHRwOi8vd3d3LnBhc2Fwb2FydGUubWFpLmdvdi5yby9jc2NhL2Nl +cnRpZmljYXRlL2NhY3JsLmNybDBJoEegRaRDMEExCzAJBgNVBAYTAnJvMQwwCgYD +VQQKDANER1AxFTATBgNVBAMMDENTQ0EgUm9tYW5pYTENMAsGA1UEAwwEQ1JMMTAN +BgkqhkiG9w0BAQUFAAOCAgEANneeXPeAvmfcuYwk/52m2IPWulYDvzY2kZKY2wYX +1Q59VnT6bCcoF7BXXL4i+xuBVgJrpIzcRsNljJqE4KadXyh9B6gyChPqrTXFOZRE +xwdeA/LrXzSQBY0KqQL+W+Ut0U/YsAwXJbhMGoUS11a0Lw/engkUYBUyZjXP/4a6 +12QBVOmF36nPnRBJO4tZVzLpw5qlS6UZ9CvltYd9npZW9QFoKO0Z+MPk+bFDUPO0 +JRfLVhkp81IE2HmAKSkHsqNzyuG7NIXPAtWgexLzw/jWjMlIni9MA4KN0qxeL+Dw +p9DlBjU90VozJmVAJQNggl6GWJ1O6a6xO+BtF//l8rfd9ds2R/cxsF8Hlw1BUJ0+ +DKbwDFAy6SHwKx40j0kjnYjqJSAjPn7sWHDMivp9dJjYtKg0k/mPoh0kjQDyA/Qv +L8OKuvN7dsRyMIA6JvanJ0NtmpXHUP08mdZUhN6QOvWOwU4UZnFfYguH3Z8qXEg/ +5kRIWJXAuut5ZXrurLn9R8trF7swBY/R76ofiiyq5SzzYZzzDqYh9LEofGVLGBRb +rpnnmeom4z62+rvH7WAH9225w/V0vr24PnXdlxB0BAv/mxM5LgiAqZTyKlSjaXfy +va1gLg25I+HBKZL5nkR4lxnvY70GBInLi3WMpSmT7rJX2r/1b76MKEfN0j8ZGK+Q +OHQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +/C41eB8H/LjeKqvRzD8AYhLwShbm0vU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIErTCCAxWgAwIBAgICBH0wDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEwx +IzAhBgNVBAoMGk1pbmlzdGVyIGRzIGluZm9ybWF0eXphY2ppMR0wGwYDVQQLDBRD +ZW50cnVtIENlcnR5ZmlrYWNqaTEUMBIGA1UEAwwLQ1NDQSBQb2xhbmQwHhcNMjIw +MzE2MTEwOTM5WhcNMzYwMzE2MjM1OTU5WjBnMQswCQYDVQQGEwJQTDEjMCEGA1UE +CgwaTWluaXN0ZXIgZHMgaW5mb3JtYXR5emFjamkxHTAbBgNVBAsMFENlbnRydW0g +Q2VydHlmaWthY2ppMRQwEgYDVQQDDAtDU0NBIFBvbGFuZDCCAaIwDQYJKoZIhvcN +AQEBBQADggGPADCCAYoCggGBAKQeZnfYEdg5k878O173bdgF4Cso52EgxfrnC8rZ +p2z4Iu5LKyC3vImyhRdk9/dkNf6BSRRpXqKIURTZmh66bVlJGql9J+tx6gEgF9Qv +5yYdsGsg0Qtof9uVl1yb5eeZ375gHsoLYPcZDYa5p2+o8XmyP8XDMTurwYpgAZsw +nCnTaBWoHCOB3kvP/vo5QLYdLfKGTf+LUvgKTlRXZevnTf7giAJTkzX33dJq5tdn +xm8sJhLxhZejrYfwaBmC52kwWmpPvDozNIs8gKIbfPOycRs5c/JiaURN68EasWSY +lU1H+x3fpGDlaLSR9M6X17d6PgwCRpcOpA45Lm+Z8iQpngR8+3uLQjM7a10XIcVG +oBnfWOWaRxqZTrKaiVeJoBhZ7e8+l2fX5dscdhiopEzJpXa3noQOtnvQMCTGFmUc +tk4bwtZk2JyrlpY/pKxvfTByh4iMO/cumNUz1VlsVLKr+rQJR3pRMJD8KnduBt/F +hdhRITcX+Uhw2sU0aCHFwDqyqQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBT41rrHwo+VQiNGM84x7iussJTCczAd +BgNVHQ4EFgQU+Na6x8KPlUIjRjPOMe4rrLCUwnMwDQYJKoZIhvcNAQELBQADggGB +AB9botqJTRDdr7w3XA0Y8E23kZICKFniZaopl/yehYSSyuOUnoEtsMR/KmUC660U +ngzMwDXjbAIvVVP0qJrDRcmjUe6bHA2K9wgaf2ILg43XADDDA6VvDfuMrBUFi2SH +6O2E8syg+YDzob+siWqOFIcWKWaZWB8p6o5613y6INd/UEQJ3cq+lc1cqBXibnp4 +/07Xul4ltM2TStduQQmgUDnkFyyx2E686aqPBYo47hf3JkfSNag9pLlyMrDZL0WP +tfJYPb4ccZxJBQ5j8f76drCqPT9u/JdanM8FNaka2Q4nlq6SF9kJ0WNiNVvq8fpr +e0ZdYJoXyed6oe4o5pM8zIpe+2JH8n4naBGEr4HIrBXo6Rf4hOuLt2De5JXTcD76 +Zh/j7IpSX5nl3zKn6KVG/0H+AXf6GAYJoyWFAj0gS13/TYcqxIg1wXAQfnLm5bEC +CzFIKUT4+exr3T9JY9M9zLm8y8fKyeowEeG/Novhj+SPyoC3jiv21mVXwaLqTBsH +Mw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgIESVd/djANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJy +bzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMTkxMjA2 +MTA1NzU4WhcNMzUwNzA2MTEyNzU4WjAyMQswCQYDVQQGEwJSTzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDHPQqapi9eJzVxo8UrCBmzJAbBNZASDwc4CkCocmzEVELmosSh +tymxoNaSG1a06DtduQkeLEn50HFgjQ4bHmw0jv25jSzDKj915iD1pHDlSSR7jAHr +hfZd4csTr4xy7gWSo+xf/OIbmKvKSNA031MSoqbuUFoxYjoK4hL9GBvsQW0vsyCN +tJVdeCeOAqwolL3RmurpJTHzpMBPzHq7hdu0+6Ckf/DWckgfTIvcmHR732rk+Dpz +V8AWV4HjPpm4eqXNdqWsoWOpvGdVYQmeApv+RmP77jxwgSUPThwHGGWmRnQH7BS1 +88hLIMBWiSZah5j8MG+CXV50OakwzKgPXIlV0CkJnXpQDD/XZY8lcET3JsWw5ZYk +TzegZp31hUgIweHSuqaLONi481TwgB8KA94zU6M+xxl0T/YIogShBKHwVMdbPaJw +CaJmELwcrqIO5Gd5E9O4iJ4/4P9i/V3Ll8VphAfMjdAn7v2dDmuKB3W7zRrxH7fj +uBtIAzfurHT0TLtGW7MSecvc6umBYD9J4vUxSN43+5L5r5S2ibxMNwnnX9fleEDx +zIGPnGCAI8dqaPqYWxqKUiWorHHqav7YPQW39YrYWsFvn3gy5/J4r6levz0usHtd +un4duufZ/uP7LilJE3gsW31EGafDDeCEKGeeS/0zcgSP4zfZJDRHQEzRUwIDAQAB +o4IBJDCCASAwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwVwYD +VR0RBFAwToEOZGdwQG1haS5nb3Yucm+kEDAOMQwwCgYDVQQHDANST1WGKmh0dHA6 +Ly93d3cucGFzYXBvYXJ0ZS5tYWkuZ292LnJvL2NzY2EuaHRtbDArBgNVHRAEJDAi +gA8yMDE5MTIwNjEwNTc1OFqBDzIwMjQxMjA1MTcxNjE4WjATBgNVHSMEDDAKgAhN +MKMqRkLhDjARBgNVHQ4ECgQISBxENSATLPYwTAYDVR0fBEUwQzBBoD+gPYY7aHR0 +cDovL3d3dy5wYXNhcG9hcnRlLm1haS5nb3Yucm8vY3NjYS9jZXJ0aWZpY2F0ZS9j +YWNybC5jcmwwDQYJKoZIhvcNAQELBQADggIBAILPLUwJr9kpeuC0KY75DhjuNRYA +IZ8EHD3o/mTOlDOw4InV4JBgCjW5iJbTvBFScTOy2C3ncZEW9u7Ep9WYSyxmW3xU +rNPpQUpkHmdJKhf6162vtpIRPrqS0zZAqTzaWn3rqdzsPObqr/WLETvR5QU46kl7 +g3SXyC0uXwF7rYcIHTqhNbmzVezep6RkdY+wZB1pQwUehhLkCMcbs5s1S2hhrf+5 +PA5Fnkz0/LQ6whE2gKYGM1Bv31bpt/6+PVBXXvpOHzcc72hYGJV9v8CJjxHYy76t +Dx6NjQz2/YDArdpN4mjh8rVhCCD7FAkGChIXHAQcx3rb+MRYf2wkGeqdPKmQJepa +iMbri/FDCPKyp8wjSoBfVyAZG4+3REgbKbIzIg6sFUEoZO/xKw9Cn2dE+1e6XAiX +CZEs0waEYu/e6h6RaOMR3QIHGWxcBd6iwjq4hQve6EDRbt4GQc6+16bNdWrcB6VF +N3zKhMwp7fJgL6io3j8/R5xqneje6TV8VTpV5rOHRXU/46ql9IrtuqE+DdOYinmx +WwO9Uoe0z7AjqCmxQNMmg/dKKdkT/WDbE3X6oq0HDX+fk5PN00fYadde7JfmLfsQ +UfT40letXKIpd4Evp2USPXF9p3ZLUiOAodVmWPP0XVSsI303UNC81kRDakNQuJe9 +I2U6PO1J4ZBxAUzR +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +pAvoycApAu9CqpeJ8i0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwDCCAmagAwIBAgICJ8gwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDQwHhcNMTUxMTEyMTMxMTE4WhcNMjgwMjEy +MTMxMTE4WjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDA1 +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABBbiJGSYrnPPAhD5JROSeqXbvSZT1Vr8DsGSkEkMyY95Vulzmc+QWEh3 +q/hEn8ZpfdqRX2cZWMMS7y03qDpdyVmjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEw +HQYDVR0OBBYEFI9/qgtBjRYrICpx/WMazb2WX/XoMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADRwAwRAIgT+rrVyBYMPopCsQ5YdhAIlgVbUZCo/Wx0+AMKLV1 +yhcCIAS/Mqb1BN8abbfNcYwBF4RG1pjr1tGVwHM2o6Ul5ie4 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwTCCAmagAwIBAgICJ4gwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDIwHhcNMTExMTE2MjIwMDAwWhcNMjQwMjE3 +MjE1OTU5WjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDAz +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABFlCwbVdZWyLUEL19B8nw4d6e28C5s58kmmoL11xOXqglBsqHW6IFI4n +SGkdj5PRVTM3Ruz6MYz+r0xDj6PSDaejRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEw +HQYDVR0OBBYEFFmW3hwouR5Tzmic/z4S4NXEzg0yMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADSAAwRQIgd2eBD/d8gjs8W6VTB08d2TPj7kGE5mR+7ZneuhiF +lDkCIQCHVxu3ds7JX9TuoMqO9WEWmcx2Iu6HBMfv9lOHNlqKww== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwjCCAmagAwIBAgICJ6cwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDMwHhcNMTMxMTEyMTAxOTIxWhcNMjYwMjEy +MTAxOTIxWjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDA0 +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABA+sKVRUdOyRdDI4iUnVZUgSvWoOccIGSh6XtuN27quqMYerAa5o5I+7 +HztPh2/SQiONBHBXHoYD0nvhLl17fr6jRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEw +HQYDVR0OBBYEFHu/oc2nU9arw+X+bq/Xt0q+9q8IMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADSQAwRgIhAJATeLffzuF6RHs3cxpszezVHSdE8r0BAw5gqujc +bEMmAiEAqe9GxgH7E3AqqtJjg8zyBljVlQnVeQHcszb6JR2AdpE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEXzCCA+agAwIBAgIBDTAKBggqhkjOPQQDAzBAMQswCQYDVQQGEwJMVjENMAsG +A1UECgwET0NNQTEUMBIGA1UEAwwLQ1NDQSBMYXR2aWExDDAKBgNVBAUTAzAwOTAe +Fw0yMzA2MTIxNDE1MDhaFw0zNjA5MTIxNDE1MDhaMEAxCzAJBgNVBAYTAkxWMQ0w +CwYDVQQKDARPQ01BMRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDA5 +MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9d +b35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2M +FQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfd +Is4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQd +HGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6K +vh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUC +MQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukE +ZWUCAQEDYgAEOWHY5NGEfLR/4jPTt535bg457QFbWqHJwHcUlnsd80fQ5wapyUP2 +ZkqOhlDWIRnKCLWcJNdZ2iip+py0Sjr93DGT7C1c1Uyqu8M67w0NdVf6Q+OChInn +Yb/blpbXX8wQo4IBcTCCAW0wLQYDVR0SBCYwJKQQMA4xDDAKBgNVBAcMA0xWQYEQ +bnBrZEBwbWxwLmdvdi5sdjAtBgNVHREEJjAkpBAwDjEMMAoGA1UEBwwDTFZBgRBu +cGtkQHBtbHAuZ292Lmx2MG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93 +bmxvYWQxLmljYW8uaW50L0NSTHMvTFZBLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDIuaWNhby5pbnQvQ1JMcy9MVkEuY3JsMA4GA1UdDwEB/wQEAwIBBjAf +BgNVHSMEGDAWgBSGIkgAbGWwS3gRRDlh6sp868xdLTASBgNVHRMBAf8ECDAGAQH/ +AgEAMA0GB2eBCAEBBgEEAgUAMCsGA1UdEAQkMCKADzIwMjMwNjEyMTQxNTA4WoEP +MjAyNjA2MTIxNDE1MDhaMB0GA1UdDgQWBBSGIkgAbGWwS3gRRDlh6sp868xdLTAK +BggqhkjOPQQDAwNnADBkAjBC8072LBW7ueL5o3uhd+924JOtIj0EVpHjxYkn2Htc +BB+Xe3ahEa4e8FwYZkeTSukCMGMOurmhXGzr8npA6iWe1EpkzIVv88g7LUOR+eN7 +uxTwmWZILf20mwH4bw5ogb7uuw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEdjCCA/2gAwIBAgIBDjAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJMVjEkMCIG +A1UECgwbTmF0aW9uYWwgU2VjdXJpdHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NB +IExhdHZpYTEMMAoGA1UEBRMDMDA4MB4XDTIzMDYxMjE1NTg0OFoXDTMzMDkyOTEy +NTg0OFowQDELMAkGA1UEBhMCTFYxDTALBgNVBAoMBE9DTUExFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDkwggG1MIIBTQYHKoZIzj0CATCCAUACAQEw +PAYHKoZIzj0BAQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOn +KZAdGnGHRwATMQfsUzBkBDB7w4LGPYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5 +D4qlgUpQOtTrBKjH3SLOKCYEMASox90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+ +62LVfLQ5ApXbyZQ6t4aW+lBMEQRhBB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/ +yv4MvRDo6CbgNDbWRqrvh7LiR9SvHoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGc +BU/5kSkoDkZGIXeRgRFCggNBJjxTFQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRW +sx8WbmysBCWnzzq2r2t/wxA7iDIC6QRlZQIBAQNiAAQ5Ydjk0YR8tH/iM9O3nflu +DjntAVtaocnAdxSWex3zR9DnBqnJQ/ZmSo6GUNYhGcoItZwk11naKKn6nLRKOv3c +MZPsLVzVTKq7wzrvDQ11V/pD44KEiedhv9uWltdfzBCjggFxMIIBbTAtBgNVHRIE +JjAkpBAwDjEMMAoGA1UEBwwDTFZBgRBucGtkQHBtbHAuZ292Lmx2MC0GA1UdEQQm +MCSkEDAOMQwwCgYDVQQHDANMVkGBEG5wa2RAcG1scC5nb3YubHYwbQYDVR0fBGYw +ZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9MVkEu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0xW +QS5jcmwwDgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFLcnSNHjUGL39r1bLfQ+ +uMy4YB6gMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYHZ4EIAQEGAQQCBQAwKwYDVR0Q +BCQwIoAPMjAyMzA2MTIxNDE1MDhagQ8yMDI2MDYxMjE0MTUwOFowHQYDVR0OBBYE +FIYiSABsZbBLeBFEOWHqynzrzF0tMAoGCCqGSM49BAMDA2cAMGQCMDMTZNbk6y0a +A0k2Sh+4c8pLsrk9FmnaAa9Kba8M7+bcTGPvd4jUlDyKcdMCnp/WmwIwL1Mu0IZZ +ZTS6X4TmhSZfaqVAMhRuTlB/C4ozRfRlSv5NVKGL3r7yRHLvS/qVWkCb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDxjCCA2ygAwIBAgIBAjAKBggqhkjOPQQDBDBRMQswCQYDVQQGEwJCQTEMMAoG +A1UECgwDbWNwMQ8wDQYDVQQLDAZpZGRlZWExCjAIBgNVBAUTATIxFzAVBgNVBAMM +DmNzY2EtaWRkZWVhLWJhMB4XDTE5MTAxMDAwMDAwMFoXDTM1MDIxMTAwMDAwMFow +UTELMAkGA1UEBhMCQkExDDAKBgNVBAoMA21jcDEPMA0GA1UECwwGaWRkZWVhMQow +CAYDVQQFEwEyMRcwFQYDVQQDDA5jc2NhLWlkZGVlYS1iYTCCATMwgewGByqGSM49 +AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8PmYKkJ2DjXJuO/Yj1SYgKCAT +SB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXBJtxcbOlKS0TzMLXZBCAm3Fxs +6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRBBIvSrrnLflfLLEtIL/yBt6+5 +3ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEdycJ3RRMt7Y5UXB1Uxy8EaZcC +IQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6Cl0hWpwIBAQNCAARYUVyt+JwU +r69A6JEmuvk3Txu2hRorixpun3zdJxhjDEBozFOGCwXAgfZGZ+8r6z2fRYNfLigs +C+TlP4JGcjU5o4IBVzCCAVMwKwYDVR0QBCQwIoAPMjAxOTEwMTEwMDAwMDBagQ8y +MDI0MTAxMTAwMDAwMFowDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSTI18TGkNO +5xez8CPpNmHG+M2oLzAfBgNVHSMEGDAWgBSTI18TGkNO5xez8CPpNmHG+M2oLzAS +BgNVHRMBAf8ECDAGAQH/AgEAMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vd3d3 +LmlkZGVlYS5nb3YuYmEvY3NjYS9jc2NhX2NybDBCBgNVHREEOzA5gRZoZWxwZGVz +a0BpZGRlZWEuZ292LmJhhh9odHRwczovL3d3dy5pZGRlZWEuZ292LmJhL2NzY2Ev +MEIGA1UdEgQ7MDmBFmhlbHBkZXNrQGlkZGVlYS5nb3YuYmGGH2h0dHBzOi8vd3d3 +LmlkZGVlYS5nb3YuYmEvY3NjYS8wCgYIKoZIzj0EAwQDSAAwRQIgS/zgsFz2pNxd +dAJOiHWWWK1ElwzQEF9Vhq+SAeLlNdICIQCXFY0unyirN21KWJ1PpxuZ9ghdfCJN +9FNNSc9p3tok6w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEUjCCA9igAwIBAgINAZgHUGFnyTVDIm9dCjAKBggqhkjOPQQDAjBRMRUwEwYD +VQQDDAxDU0NBIEhVTkdBUlkxHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9y +MQwwCgYDVQQKDANHT1YxCzAJBgNVBAYTAkhVMB4XDTIzMDQxMzA5MDAwMFoXDTM2 +MDcxMzA5MDAwMFowUTEVMBMGA1UEAwwMQ1NDQSBIVU5HQVJZMR0wGwYDVQQLDBRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEMMAoGA1UECgwDR09WMQswCQYDVQQGEwJIVTCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////////// +//////////////////////////7/////AAAAAAAAAAD/////MGQEMP////////// +///////////////////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+ +5+SYjgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEEqofK +Ir6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3Nhfe +SpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA +////////////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlz +AgEBA2IABIN3NPA+NcOMs12jbjWB9k+jj/ZXPfZm0glOFdoWQZNgtLDrswzBKiK0 +RSb2TaCe9edFak4kh55ebSF9cVWvYSvJnqYiURvcThMh/fJ0Sc/Ad6p8iDTnoYa9 +bVp+zaBidqOCATUwggExMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBSTJbk39V0vZCOMa/mi+SgTpTCUIDArBgNVHRAEJDAigA8y +MDIzMDQxMzA5MDAwMFqBDzIwMjYwNDEzMDkwMDAwWjANBgdngQgBAQYBBAIFADAz +BgNVHREELDAqgRZjc2NhLWh1bmdhcnlAYm0uZ292Lmh1pBAwDjEMMAoGA1UEBwwD +SFVOMDMGA1UdEgQsMCqBFmNzY2EtaHVuZ2FyeUBibS5nb3YuaHWkEDAOMQwwCgYD +VQQHDANIVU4wRgYDVR0fBD8wPTA7oDmgN4Y1aHR0cDovL255aWx2YW50YXJ0by5o +dS9sZXRvbHRlcy9DU0NBL0NTQ0EtSFVOR0FSWS5jcmwwCgYIKoZIzj0EAwIDaAAw +ZQIxAM9sfKyqXKb8prdCxh6s3XdcEqUpW+nVW7fPZ2M4fEXNAEJkqVDLmwPYWJJX +s0T5vQIwK4X/RmOTHft196noMMsakqmHzQ1mpO4duNQBwYpZ0k+p19by/HOZ/mMw +dGsnwnR/ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEVzCCA9ygAwIBAgIUHF2UgymV8vXZTZJckQ9QnSAC9X0wDAYIKoZIzj0EAwIF +ADBBMQswCQYDVQQGEwJBRTEMMAoGA1UEChMDTU9JMQ4wDAYDVQQLEwVFUEFTUzEU +MBIGA1UEAxMLVUFFIENTQ0EgMDIwHhcNMjIwMzAxMTExNTAwWhcNMzcwNjAxMTEx +NTAwWjBBMQswCQYDVQQGEwJBRTEMMAoGA1UEChMDTU9JMQ4wDAYDVQQLEwVFUEFT +UzEUMBIGA1UEAxMLVUFFIENTQ0EgMDIwggHOMIIBZgYHKoZIzj0CATCCAVkCAQEw +PAYHKoZIzj0BAQIxAP/////////////////////////////////////////+//// +/wAAAAAAAAAA/////zB9BDEA//////////////////////////////////////// +//7/////AAAAAAAAAAD////8BDEAszEvp+I+5+SYjgVr4/gtGRgdnG7+gUESAxQI +j1ATh1rGVjmNii7RnSqFyO3T7CrvAxUAozWSaqMZonodAIlqZ3OkgnrNrHMEYQSq +h8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQqOFUC8l2/VSlsOlReOHJ2Crc2 +F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jETtfC4wApgsc4dfoGdekMdfJDqDl8C +MQD////////////////////////////////HY02B9Dct31gaDbJIsKd67OwZaszF +KXMCAQEDYgAE7GfucxsBXNnxEn4dl7yZFGcQCvyPxiDsBqvbgnUCJgPn81l2oWCo +mojb5OD6Yj9QuiGkyfaqECn7kc7bRF8bmtg9lbGLaVfuLkUHtXsj0mT63YFpY+A4 ++A+N/60Risvxo4IBNzCCATMwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYB +Af8CAQAwGAYDVR0gBBEwDzANBgsrBgEEAYKmDwECATAbBgNVHRIEFDASpBAwDjEM +MAoGA1UEBxMDQVJFMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxv +YWQxLmljYW8uaW50L0NSTHMvQVJFLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3du +bG9hZDIuaWNhby5pbnQvQ1JMcy9BUkUuY3JsMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHEwNBUkUwKwYDVR0QBCQwIoAPMjAyMjAzMDExMTE1MDBagQ8yMDI3MDMwMTEx +MTUwMFowHQYDVR0OBBYEFMFnm+fGHk2YophNhhzOx2hpXUzhMAwGCCqGSM49BAMC +BQADZwAwZAIwf2wp1qSVJaQjI2YDls4dLmG5hvFc6kfxOtzc6a0PlftTHtrYHyvt +bI8kMCStByFOAjBYToAWVo2BeYOFuAtET4J+nzhT76yXHhXPcw5PayHlnlgE9Fhw +9h4qqXIQadVwKqU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE7jCCBHSgAwIBAgIIYH4eHvk+LzcwCgYIKoZIzj0EAwIwcjELMAkGA1UEBhMC +TloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxJzAlBgNVBAsM +HklkZW50aXR5IGFuZCBQYXNzcG9ydCBTZXJ2aWNlczEWMBQGA1UEAwwNUGFzc3Bv +cnQgQ1NDQTAeFw0yMTA0MTMwMTAzMzlaFw0zNDA4MDgwMTAzMzlaMHIxCzAJBgNV +BAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYD +VQQLDB5JZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBh +c3Nwb3J0IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AP/////////////////////////////////////////+/////wAAAAAAAAAA//// +/zBkBDD//////////////////////////////////////////v////8AAAAAAAAA +AP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0q +hcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9V +KWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+ +gZ16Qx18kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoN +skiwp3rs7BlqzMUpcwIBAQNiAATQDrtd7vYEUB+vkxPogSnAvSUOEL6YkuJUBFN4 +ybzOA2YrOd60NzQHz3V43av91YykBpfWJYmG1TPSLyxo8nuGwy/aq9Vp7GaY/wdO +fmw7bPxlnD298IghhadJEXk0AzKjggGUMIIBkDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFJ8OLB+SWEwI5FvTDfjYAjxxc/qNMDoGA1UdEgQzMDGkEDAO +MQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0cy5nb3Z0Lm56MFIG +A1UdIARLMEkwRwYIYIQqZQgBAQMwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cu +cGtpLmdvdnQubnovcG9saWN5L2VQYXNzcG9ydHNfQ1BTMG0GA1UdHwRmMGQwMKAu +oCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvTlpMLmNybDAw +oC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9OWkwuY3Js +MB0GA1UdDgQWBBSfDiwfklhMCORb0w342AI8cXP6jTArBgNVHRAEJDAigA8yMDIx +MDQxMzAxMDMzOVqBDzIwMjQwNDEyMDEwMzM5WjAOBgNVHQ8BAf8EBAMCAQYwCgYI +KoZIzj0EAwIDaAAwZQIwZNNsVIS169AO41zOjTyeW1+p1UwHyxDYJZvJEIQYr6pw +BDvryT0x+j9K7cRPuS+jAjEApa6OdWitf0Mt1LrqUHRGCs5uXA4WEPGBdWCYG8KV +fMKtnb5ga7W0JqHgJ+C9cd5j +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8zCCA1ugAwIBAgICAZUwDQYJKoZIhvcNAQELBQAwgZIxCjAIBgNVBAUTATIx +DTALBgNVBAMMBENTQ0ExNDAyBgNVBAsMK1NlcnZpY2lvIGRlIFJlZ2lzdHJvIENp +dmlsIGUgSWRlbnRpZmljYWNpb24xMjAwBgNVBAoMKU1pbmlzdGVyaW8gZGUgSnVz +dGljaWEgeSBEZXJlY2hvcyBIdW1hbm9zMQswCQYDVQQGEwJDTDAeFw0xNjA4MDEw +MDAwMDBaFw0zMjExMTYwMDAwMDBaMIGSMQowCAYDVQQFEwEyMQ0wCwYDVQQDDARD +U0NBMTQwMgYDVQQLDCtTZXJ2aWNpbyBkZSBSZWdpc3RybyBDaXZpbCBlIElkZW50 +aWZpY2FjaW9uMTIwMAYDVQQKDClNaW5pc3RlcmlvIGRlIEp1c3RpY2lhIHkgRGVy +ZWNob3MgSHVtYW5vczELMAkGA1UEBhMCQ0wwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDXR+XvdSrbkrZ0jDH2qh2xcmSu0hCsSMQ5CtJAu66WKcibB+g7 +hIpDCR7D+vY7IV7lADR1DG9bIDPEIVVwfAVDjg8AKUcZZ3uiTu56ONlUeVPwUTE+ +OcDp7ifkGwEUomEuWocbZsDBQsGoH7cqdFtdhZRqB+0MvxnHkxnQ8qAqYgtjun5p +VhcTxpauu2LwxLkOyJniBrJPrj/cEaubJNaA3rzsi77h9DPkw6cwKKPDyujfmQPf +n0cs5I6ibRPLoRZe3+uLAUgfFaDm8dfbdVIIB/S5S3TB5Oi1LpqSH9mttFjk4bzV +qp3c69JLUk9CTkq0zv87NR9Id6eoUi6zZZiITnrVjxsufg3/ucY7h2LrrjDcWqvn +RJSu0XfxMdWgpt6GJ//oFpiGo7n5jaRFoRCbRYtMMmgLWFZXZJJeIPEvM2IIFbCA +7hHa9ZFwZE2H/N20TNMzcoW3GyvA0Q/nWo06WryrXGiHQlHgMHDyA4vZHLpN+wZi +kjz2BuoNuf7eU3MCAwEAAaNRME8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8B +Af8EBAMCAQYwKQYDVR0OBCIEIP/7vQRMTm4PSv+UYWK4D1FYybll5gGaa2WgnYEz +zbf+MA0GCSqGSIb3DQEBCwUAA4IBgQAhwIX4s8UPjxgcC0xLjZf/vot57rYZYHnr +g+e3eKMeuHeZrAo7yS25FuB8V+Bknra5jmfrzZCSU1QpgfZrTg1VK6tLQBvZ8DYh +XFkOvkUyDBMAAI2hr8/5r8j30UW7V5BK8fSP+1Pa+HP5gIlqPvppYUxPE9AnKXx9 +jYqxzwwxO9N/WjNAEimZ/IMMoBQEZmrhjdFg9tULjLuyjbn4rTqD4R78BUSyoZnu +DcA/rLJF2KaUWPT65N23MUDrSjSbn3nmxcASrcHd1PM1DeF7E7wlpQqm/EwYVfxz +P8jYseOszN5dlthidG6bEd3rXVpwSCux3oTVMDp/nmdrC4BIs4AKTr5vAkuKKX9g +vKS/s2S/bBD8mtSpbQeAPIhJAOp10v0W48F4sgp3WjE45IxTvHKW2+F+TXWNfPLG +C+w8d6LgAFgHa0BnFNY1Oj3kLNEWwz1tqbcaWPNBomE/4d66vVHba9adQPJmC57M +knq99u8NQUmq3DbjgE3hqp/AurLZmPc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFIDCCA4igAwIBAgICAoMwDQYJKoZIhvcNAQELBQAwgZIxCjAIBgNVBAUTATMx +DTALBgNVBAMMBENTQ0ExNDAyBgNVBAsMK1NlcnZpY2lvIGRlIFJlZ2lzdHJvIENp +dmlsIGUgSWRlbnRpZmljYWNpb24xMjAwBgNVBAoMKU1pbmlzdGVyaW8gZGUgSnVz +dGljaWEgeSBEZXJlY2hvcyBIdW1hbm9zMQswCQYDVQQGEwJDTDAeFw0yMTA4MDEw +MDAwMDBaFw0zNzExMTYwMDAwMDBaMIGSMQowCAYDVQQFEwEzMQ0wCwYDVQQDDARD +U0NBMTQwMgYDVQQLDCtTZXJ2aWNpbyBkZSBSZWdpc3RybyBDaXZpbCBlIElkZW50 +aWZpY2FjaW9uMTIwMAYDVQQKDClNaW5pc3RlcmlvIGRlIEp1c3RpY2lhIHkgRGVy +ZWNob3MgSHVtYW5vczELMAkGA1UEBhMCQ0wwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDOSnxyuA21JnSwu0Qi7MuwhSX/A3lUVkSUC1L5m/b4hw29W5mP +kOoL5hbFHqU/O2C36clW6Cl5NmF+zW6lYCz8ClannKu7TKKiYfkncq3pRQhcWQOM +SSKqB9EYr8NiH7RIWc72eaD+pOxqatv1V8XlReUYJM0cubswIgvP/Zo7Qtm3e8z1 +TEjFvmcP/mFwvlu5tYceUEJNceq25pNYAvsIIbFV5awyjWg0DBniHeWEfYbHdOby ++0Hv9ymCMSCH6RVRzdXj7s26QLNI2D9m766UdX5eAEjj7lBgbjxdTXntaj5+EmBl +G9wF1rkqAt9Cja+JNcZnG1uFDKsl63jYQMijom6vPKemaBfkKsOT9ywaugLqaeGb +ZXdE2tPSOSLAdXqg2v1bJ5uV3BXCPa56+xn+0WeD/7L69uJ6EK6RUee5bG6sQkr9 +Avg6MN72L8DnGD0GTnJT0DTswy/rNFpO5Uy+QjdzL7XYmR3ZwDdpbQ9CHJFTx9ur +b5wreBcvi1YVEy0CAwEAAaN+MHwwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8B +Af8EBAMCAQYwKwYDVR0QBCQwIoAPMjAyMTA4MDEwMDAwMDBagQ8yMDI2MDgwMTAw +MDAwMFowKQYDVR0OBCIEIEScvsuYBuTt5T0Qra0+pVXsUNrNJdE7AAP0LQyFtZjI +MA0GCSqGSIb3DQEBCwUAA4IBgQAsXRMldsuXBo4egzn2an/dqJtM0q7ZY3awwXGf +FWNmwfk2Y9BODR7UxOF5A/vEnttR13YA5Y9b0Jgy5UXzKGkTzVIe432EApY+9rQC +FRoKVXe/dxhNjsw1DIzPZ8aCItOF/6TaMeMoHSKpV9kdBgrT4Ri+unQCt99jdMhR +wS2zl6us35fQv0Lpmac1KyvaFqZ8rfOwI0aspeWQR4MzTPSU4+575VcJywl/qjTY +9G937J8FX9ecKXks6CqlcrS2p6n977OXEsBhoxSlWZngpmfxKefZt9Vv/hwMx42x +0U5d/hO2BRYvczZ8YE6aClZyRLv19eMsARYahg2lMCnhKQUGDmPMFOZ4LkgCtFCx +647KlVHyMj0MUlbj1EgFpl1Yeb8hlti6Z7eh+r1U48urvXmFpn42lsnqXw+uEiQX +Nlsi9hSUyBAfvkiQKn+UHAxYYz6XpK6tgWCJOKI6H+HiQRuLtBOLQoqmuaw1p17m +Y88kAhQolt4fLUkyAYIgLWI+xb0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFJjCCBIugAwIBAgIEAJ6xADAKBggqhkjOPQQDBDBEMQswCQYDVQQGEwJGSTEQ +MA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQDDAxDU0NBIEZp +bmxhbmQwHhcNMjIwNDA2MDYyNDEyWhcNMzIwNzA2MDYyNDEyWjBEMQswCQYDVQQG +EwJGSTEQMA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQDDAxD +U0NBIEZpbmxhbmQwggI4MIIBrwYHKoZIzj0CATCCAaICAQEwTAYHKoZIzj0BAQJB +AKrdnbjb6cSLP9TmrjPJ/AfLMI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKuzaEq5qOA +5iiB/y8tgsaFKKpgVlg6SPMwgYQEQHgwozGLYDuJ4jJxRawjTMWUy92NPfkWEKg0 +QcrqmGO8Le1dWqglOqEKLvHJi5rItX8RF6cr8se558GsTXf8lMoEQD35FhCoNEHK +6phjvC3tXVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK3Ag+Z5hAULdeuuXd +KAm9Y4AW9yMEgYEEga7kvdgu2WRaITIunExqk4Xtn3C12RbBtDti7vTQCY7/Ox94 +4tDUjVDRaHuTuX1ffG1QR0BqXmiLNSIJvLn4In3eOF1WYzLswOq/qc94Iv3yCfcA +JKV7GqAAxVuIH4ERstzeSUpfSF5bykvYiidjrtHKKy+o8FQGeM0eDzrYCJICQQCq +3Z242+nEiz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZhGX+sEEcd +sdOBCF3a3bWHloKcqQBpAgEBA4GCAAQQvQy0csozD/hMDOB2aV3s31p+Ugvaxew6 +MW08yjUBuyDdw5hnOkttKOH8Ifj5KOdsTTqeltb/wXnDM6S5S7pseYBxTSwUFl+D +fEFszgfCOBwcPbBamj1tj8tcOARXniSmE1QWMRtAHbrtqLsp6ld9vNc12cbfD2DR +FxUIXYT4OaOCAYgwggGEMB8GA1UdIwQYMBaAFNafbKfy4KssWvrxnmlyaDZNMdOT +MB0GA1UdDgQWBBTWn2yn8uCrLFr68Z5pcmg2TTHTkzAOBgNVHQ8BAf8EBAMCAQYw +KwYDVR0QBCQwIoAPMjAyMjA0MDYwNjI0MTJagQ8yMDI3MDQwNjA2MjQxMlowFQYD +VR0gBA4wDDAKBggqgXaEBQIKBTBPBgNVHRIESDBGpBAwDjEMMAoGA1UEBwwDRklO +gRZDU0NBLkZpbmxhbmRAZ292c2VjLmZphhpodHRwOi8vd3d3LnBvbGlpc2kuZmkv +Y3NjYTBPBgNVHREESDBGpBAwDjEMMAoGA1UEBwwDRklOgRZDU0NBLkZpbmxhbmRA +Z292c2VjLmZphhpodHRwOi8vd3d3LnBvbGlpc2kuZmkvY3NjYTASBgNVHRMBAf8E +CDAGAQH/AgEAMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHA6Ly9wcm94eS5maW5laWQu +ZmkvY3JsL2NzY2FmaW5jLmNybDAKBggqhkjOPQQDBAOBiAAwgYQCQDegs4hFKX9r +asyUQtw/Vq4DcQtECXRaQZbChxE1wY+GJ59oF2dDLxMerxcQZ87D9A6/c00Ybq5O +ucJRd4xk8eQCQDbh7uCt4ccISDTzToqqRcfehTERR8db39/YaMqJfo9mIHwGC6i3 +E7m8xGOA48hyyRKUEgkYjEl+dXYiWfHhoe0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFYDCCBMWgAwIBAgIEC8KobDAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJDSDEN +MAsGA1UECgwERkRKUDEPMA0GA1UECwwGZmVkcG9sMREwDwYDVQQLDAhlRG9jLVBL +STERMA8GA1UEAwwIQ1NDQS1DSEUwHhcNMjMxMDA0MDY1MjE1WhcNMzcwMzA1MDY1 +MjE1WjBTMQswCQYDVQQGEwJDSDENMAsGA1UECgwERkRKUDEPMA0GA1UECwwGZmVk +cG9sMREwDwYDVQQLDAhlRG9jLVBLSTERMA8GA1UEAwwIQ1NDQS1DSEUwggI4MIIB +rwYHKoZIzj0CATCCAaICAQEwTAYHKoZIzj0BAQJBAKrdnbjb6cSLP9TmrjPJ/AfL +MI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKuzaEq5qOA5iiB/y8tgsaFKKpgVlg6SPMw +gYQEQHgwozGLYDuJ4jJxRawjTMWUy92NPfkWEKg0QcrqmGO8Le1dWqglOqEKLvHJ +i5rItX8RF6cr8se558GsTXf8lMoEQD35FhCoNEHK6phjvC3tXVqoJTqhCi7xyYua +yLV/ERenK/LHuefBrE13/JTK3Ag+Z5hAULdeuuXdKAm9Y4AW9yMEgYEEga7kvdgu +2WRaITIunExqk4Xtn3C12RbBtDti7vTQCY7/Ox944tDUjVDRaHuTuX1ffG1QR0Bq +XmiLNSIJvLn4In3eOF1WYzLswOq/qc94Iv3yCfcAJKV7GqAAxVuIH4ERstzeSUpf +SF5bykvYiidjrtHKKy+o8FQGeM0eDzrYCJICQQCq3Z242+nEiz/U5q4zyfwHyzCN +s7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZhGX+sEEcdsdOBCF3a3bWHloKcqQBpAgEB +A4GCAAQpF0KvspyMcNcHy3elppsp6+u1C2lnz7q1BzqbWXL3fhOiIxvSuXHf3WFU +T04e9UGWgl3ne3+CYZdNDX0bKQFfUoJtfk2by6TNyKkJqlR1kxY2KJ8eyxfDjl5Y +8vgISslvh+ZTnLoNvhhPAN+Cg7BlhDczUbq95PQ+UIllAjwchaOCAaQwggGgMCsG +A1UdEAQkMCKADzIwMjMxMDA0MDY1MjE1WoEPMjAyNjEwMDYwNjUyMTVaMFwGA1Ud +IARVMFMwUQYHYIV0BTcBATBGMEQGCCsGAQUFBwIBFjhodHRwOi8vd3d3LnBraS5h +ZG1pbi5jaC9wb2xpY3kvQ1BTXzJfMTZfNzU2XzVfNTVfMV8xLnBkZjA5BgNVHRIE +MjAwgRxlYWMtc3BvYy5jaGVAZmVkcG9sLmFkbWluLmNopBAwDjEMMAoGA1UEBwwD +Q0hFMDkGA1UdEQQyMDCBHGVhYy1zcG9jLmNoZUBmZWRwb2wuYWRtaW4uY2ikEDAO +MQwwCgYDVQQHDANDSEUwOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL3d3dy5wa2ku +YWRtaW4uY2gvY3JsL0NTQ0EtQ0hFLmNybDAfBgNVHSMEGDAWgBQBcZ8PfALyo0Ix +hggSjbH+YqOO/DAdBgNVHQ4EFgQUAXGfD3wC8qNCMYYIEo2x/mKjjvwwDgYDVR0P +AQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwQDgYgAMIGE +AkB2R+El6oO0C4OnFkEYYvMzd+OevP7M8Olrr6cIAYfsVhH1lFyjDCW9t9XJroyn +0Lln6YttfuWfhw5HXqNGMBwSAkA5v15qmTPA9uCosBjaNe7PrwAt9TivfWHNsOd4 +H2CVEvFQ9XH9Rh7m0jeTQlgXT4pJVjagh3X4C8qXrpca/r/M +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFfzCCBQagAwIBAgIBfDAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTgxMDAyMDgzMDU5WhcNMjExMDA0MDgzMDU5WjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAARqcLTNDz1nuiuc31pDI2IYPjHFIPm70llBBI3bAu5qdjez9UXV +mQSW7d6VS86BHDkwDiG3lONXCy1HUjh9vR3X2GY8UOsuNEOQg1He8tzCfeMYi9NG +JWIAkzMrG/FSdtGjggIvMIICKzArBgNVHRAEJDAigA8yMDE4MTAwMjA4MzA1OVqB +DzIwMjExMDA0MDgzMDU5WjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTBDBgNVHR8E +PDA6MDigNqA0hjJodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9jcmwvY3NjYS1zd2l0 +emVybGFuZC0yLmNybDCBmwYDVR0jBIGTMIGQgBR3BsBM5UnwJgeMP/By0Cm7oGMe +lKF1pHMwcTELMAkGA1UEBhMCQ0gxDjAMBgNVBAoMBUFkbWluMREwDwYDVQQLDAhT +ZXJ2aWNlczEiMCAGA1UECwwZQ2VydGlmaWNhdGlvbiBBdXRob3JpdGllczEbMBkG +A1UEAwwSY3NjYS1zd2l0emVybGFuZC0yggFDMB0GA1UdDgQWBBSXEaxF5Xr+bg0/ +rNmssmt1njV7pjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAK +BggqhkjOPQQDAwNnADBkAjAl8sHPAgv7UDogPYIJyx38okKHDej64Ze4eXJrxgbd +NvTPPS/IqkCjlzb0PCtq+JACMHjRx9Z/FXPG8RefF9nGDVEMeDr15/kzy6ZHGgfZ +SUxJqcN+wvqJVCV1Nf7Throlhw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIIKssrrsAjwTIwDQYJKoZIhvcNAQEFBQAwVTEgMB4GA1UE +AwwXQ0VSVElGSUNBVElPTiBBVVRIT1JJVFkxEDAOBgNVBAsMB1NFR1NUQVQxEjAQ +BgNVBAoMCUhTVkFUSUNBTjELMAkGA1UEBhMCVkEwHhcNMjIxMTEwMDgyMjI2WhcN +MzgwMjA0MDgyMjI2WjBVMSAwHgYDVQQDDBdDRVJUSUZJQ0FUSU9OIEFVVEhPUklU +WTEQMA4GA1UECwwHU0VHU1RBVDESMBAGA1UECgwJSFNWQVRJQ0FOMQswCQYDVQQG +EwJWQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKbs7sDdSMhUq7gD +U42AcqS1F4h5u2VM+GwczjjMEQcU+SXelTyPZCvcsZN/B+M2HvioNL8iayqCFXAE +kiA1Mdu+L4P9sYsp0XwxE2a3zJ9GxmpgWK7R7CP/Bn2KCPCalFTv1TBitZVfnz5v +W0LPwi9QA2BKRZN7tb9ZjkG8C1Xk86kXvLG2wE5v6t4fSKs9O8Mfm77bju4+Ukjs +el9a2ucw5jxcvUFnlhrVdBjDNp8U50vjAE8s3clLCKp+0HmCW8CwD2lw0N0gwWKH +R+0ytsqVNMu7U+epgplv5rpjMJZpUF5IWCwrdKaR0o65NMeuX36oPgp/9jXV2l0V +pwj9jJhLWKDS0FXi8S3bAYWttzWqeil2O3oQCnKGZ1EgME2N0lPysMBBliJQCEiv +Wm7lNHSVRw2qvYnix21Zr0K3evlmUE4CIewPusA55asGfv3HEDAZUbTtKAwPJ1Pr +8VLyghbwAQkZZpjVrl+hdLii18Rz0YKSXf2Bw4Sh77Mjh1TPze6c8R63xiYl8MTN +8lvv/Ryf/mtWPaJ/ohG6sov8vn1gL25fDh3LMj3gS/fSPUwBbAZsSlKbP8dwN0BU +5Td0zU5NEZAfOAmQWjZRyy8c5/rrn31Z0SORLcITqP6vF/b+QHm/CdYsRmr1nPVm +ymdunoV2CZUAnvhzvFqMzncupuX3AgMBAAGjZjBkMB0GA1UdDgQWBBSqbgtSWK4Q ++YybXYRlB0lFOKqEAzASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFKpu +C1JYrhD5jJtdhGUHSUU4qoQDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUF +AAOCAgEAjLU1DEFwvHf0m7vzegxBESKET/A3PGbeXRL79dCve2TV3qp4NSgLBdNv +GDW+cnaLgEtiS90YIM23cCy2JnuenWjuQ0NO4U9xaHre1q1WNTq1yCIRmNTIKqjD +deZJ5iNqvqHR6ZiQ7gkwWmQybmiEv4SNleFOLjzTAZ8ew3DZ+H1IS9xR9PUiIQup +joLEgA6owIm2LydFe3qsP9Yqw32wOvAiP5HKWg4cri9T5WCbDwvt4bF/iN/7NdkL +8C9mnUpJNqm6sKnUAmicovE6vNU6KUU6XqqCMINsz/gB2ArudkY2keXAyHeWIVcL +Ax92b9S8fMc7ctdyi9Gis1di1q1ziH4HTnR1RXyExAm4altbIEFCHc81Zsvx4k1g +sQ1GfhhstTXnfv3bnBG2oE4OMb4dcXWe80Mi0lXtgPdasIfgjd0dZR0YFmjFq9Hg +j6EiYDQpofgLjnxKKKvIXEKLCF0qrEPiXFKxnorrl6dz9MkSIj+wtG9zmM3t83Uc +40CvJZuk1sv5sm9z4Dh8ek3katT9FO4QJNQ5LeDFnEXBJ6RmE5O91xZ9vk5z/qzV +C1g+9f+08prWJoD4V6o4a+nRAQKbq5s+pmXo9Uo4YxLVjBHgUPa4/V7Fg1qkX2bH +r4euYnNw61p7/MxXtTo9c66wcqxvZbeWIUS6aj8AYmy1pi3KDZg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmzCCA4OgAwIBAgIJAIOjAqtwCnwTMA0GCSqGSIb3DQEBBQUAMEMxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0JNSDEYMBYGA1UEAwwPQk1I +Q0EtSFVOR0FSWSAxMB4XDTE3MDIyMjEwMDgxNFoXDTMwMDUyMjEwMDgxNFowQzEL +MAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQk1IMRgwFgYDVQQD +DA9CTUhDQS1IVU5HQVJZIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCOerugaD8EzeRqNUxM9k9vNO6XhLTt/FWGCB8cPq9iWWs0Fe9GnwTblotVfclz +VM8Bf+fIf7qDeSV4W9R2mOnkAtIHa2Slz9XmWGzSDnJ0sLa9BGrnGJ/vq6xJpPtl +hgEtDiB3At6j6f4plb+hn472Xt2hc1c50OsRdPsDX4ZCp17oJkLWFdgIlUsaPD3q +mQ7r0pwnCK1zyosesIKMra58Aw2ZKuXIpOLI+XA3D9LDV1rvkgR51ednXoLmbgpm +coSO3y5KBO+57uF8NSj1Unnwt0qAsqc5csu2w/GJOzIJgXsoX8gcDkWNS+hY3N2m +tYuWDblag8Bm/9ZaXUjuSdLMVyOBqG3Gjk1NuMyIblpqrDIxbAmqzkojIXSWTNPf +muGFRThGgG4ayxJjzF9V5mdTMkbZobjRh0d6iAiMP33lp18VKqRFbx475vpqEqi6 +ADEFZFEZVxkZs2zjjHSaqz90wkIBjfKKxchhVAfAs1msXshehiPXTdSwmbuOGJNI +S+FGEsOD9VYn7RRqzdLSETPfulXQEvz8aQwir2AxjzeEEkWWDNcGKM3gjB5uqpS6 +lhBtTNOOLkzPMCpRZnlXaBd42c8uIdIN/cDonIEEvYwoRLI9aOjZfMFivqzSTqRz +/jVle8bWfIMXWP/V0JOrjs8M86Ybp/8+r7wwZzf8YiolIQIDAQABo4GRMIGOMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFBO6q4qWzp9CLmAFjCQHrXNKgUQRMB8G +A1UdIwQYMBaAFBO6q4qWzp9CLmAFjCQHrXNKgUQRMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDE3MDIyMjA5MDAwMFqBDzIwMjAwMjIyMDkwMDAwWjANBgkq +hkiG9w0BAQUFAAOCAgEAOcmPaIB//kLjybNlNCgNQifQQKUua98k2Ngw4mnAQyN3 +G9IChNJDzjANqxroltK+rVhr3JzUqV6rXBEgiED4VF609J8c0UGKckJr7J9TyuXx +Y1Zh5j5eoVcHfDOS7CysviRyRxoCqZ8TA/YiSvbJ77oBn2pTr7InlWD5RZl5OYk1 +RO6h7F+c2TOUTS206dxFs62jBIGzFG2E47S/a3ymUfM+/hNBQTi3AFUAg2FhM8vx +EjBdj7rXFngTQE27NjUXk9c5oB9GO26zSkdj6y4fTIryGxCh0kv3MB7cfOihmLMy +3ucDmhYOUtgpHIY1dFSBaPJJNDNZE+0wQBcf9il2eRHOvj4J5Aw8mveLqH7mz42m +nj5ML4VXl/jM6FFT5sI6WRR9uFN1bwx3W/yw+z0sBkhA++fJwVICTr+ftYfpB/k2 +YiQ1KEKg5IADP3c44wWCGIw1+HllyPfm+Ld9jSTiEcuhqBIuibytyAD0yTETLoCk +r9TLN3IRVDvvarVpyN3yp0tV9b5iV5BJThONlbxFtYjXS4qGUQhIqhDmjbqPdh+I +PNTu72Fy/fwIr7xg+fLkM50jalu+YL8gDORVkUcFwepwra0zjHJt3ahAqOWr9rQm +rjkmLA1fDdtUAYam+32sRyqfVpVrk2gQyS9oGSLHkzUNN3rrjZetOyhRFDUCtWQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmzCCA4OgAwIBAgIJAK9UnIvvGX4tMA0GCSqGSIb3DQEBBQUAMEMxCzAJBgNV +BAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA09JRjEYMBYGA1UEAwwPT0lG +Q0EtSFVOR0FSWSAxMB4XDTIwMDIwNjEwNDc1OFoXDTMzMDUwNjEwNDc1OFowQzEL +MAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDT0lGMRgwFgYDVQQD +DA9PSUZDQS1IVU5HQVJZIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQClhtiIDGRCH+rzRHSZXJ4THKCqg6Rq3qZFyHJ6JhT+UOu56XHi59IbGPefbTuV +Ys2hmnH35rSBel61LcJKCYwyS2L5lMVLOsLjPejTanSccFCnJ9sN+u8lSOrmIcBQ +Y2u4PBaMoYmtfvkQJvSA0jVBdUC8/EJLtPGjnAgZ/YusJNR9saLsY8EFipTYDlJM +7oZ7TuPkn93qjzsqdvq6mV7WMcqTPONYkCSaVcEh9tv+yqrFaBAbwl9mJTo52CDh +CbEktSDjXDiYXQdqTvzvMXjDQC6ElGTOVGN56iGZJFbfaqv0AbKhKRab8LMAJboJ +7j11S1LuDPW0/DyV/G94YVwJOZInXFp/AddN37DIpi4gKnMQr34z8vvSQ5ULxniW +csaLnApBijmz/Q5z6t1m1sv5zIH4O4CHkYNxRnRSNglnyvXaud8ir03mQfOEcTXc +p2/W1pA6y5oSE8TpCw0QUF6KPLWDzKIZ7wrB5YA51m7bEkgODhOlFX/1GqMG3GPp +ZHti23nCGF2qs0PFjCn9Sk/uAIufsskN2YA3CYtHJOFKWjpKw4aOZhWHoMr77x6S +2KNbUh5SqJwjfFbtACbeA5uNdVmE3Z1CMHfiCgidEqvA7JkpdR5ZxhrgwuaTbN09 +nK+hie2XOWBXg2+aXCj+JeiMcAYHIdfOZkwrAiI7sN321wIDAQABo4GRMIGOMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFB007/PEImpYN87TQH6N2sBKSVMNMB8G +A1UdIwQYMBaAFB007/PEImpYN87TQH6N2sBKSVMNMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDIwMDIwNjA5MDAwMFqBDzIwMjMwMjA2MDkwMDAwWjANBgkq +hkiG9w0BAQUFAAOCAgEAH3XICEEQ8BABTJft+NROYbVQTX7/VxV36p/H5Hp6xs/R +VzUhUMOGP9gWaBI+g0dxBQ6OskA8ydRDkSijacQCqZ5HRe1A8EccOqzvdEU6E4Hp +WSprhtew/k2hYvRUvl+uNxO4KNQg473QZfVJiyav7I6toVdsdyqvjkvMG4qHhbfN +/ayxJ5Xn4mOTMMh6FGcVHTb37Pjo2Oi6F1pEFfPF7oE+bI26f5M7Qm42ppN8Z1c5 +8f1l47P3z8mdLcKGz/662Yi1N2Co44ppTyz6oQwMW+dJcCdaihYvT9PTuhwuJUM2 +PZrUa5OwHdiBiZHhmDgegw4cBtpJh73ASkJ8cMguzxqyHNevX8QHuzhtBxvZDftN +79vyjTIgXgAshD4BKf/9qLkvkxOOCnw+EzmHrVT328hHRgqX4Lh79e6CB/kF46K0 +9AN7kAmF8n/UAoCKxiKkc/xrv/HIz7eQHqWWEZa4bSyhfTg2xvMzsEp8uL+ISyU8 +mGfgqjISO/ePR/rXHEYJ1mldmekyBcFy+tm/1u7FB/JVVffBp9r7Xd1tANpoSpNS +o7mAmRLfrLBrnvJjID4PolQH0DUiJBN4XUXiB5TgFDMCAwgDD9CocSJZYYdjfglj +13c00TSO/jScGzcgN8YB88gSI0XgHolNj9QXdMiqelz5LUk8gxcjqUsn+vsJgkA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF8jCCBXmgAwIBAgIBHTAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTMwMjExMDg0NDI0WhcNMTYwMjE0MDg0NDI0WjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAAR/cqzN7a5RWFIqF37VePaSghiuCCevYhuCUNFwCORTfS5bcGgS +lhSG9hn+yaWnEkRYX3659se17mC+Rcjj5BOncCvyHukza205aOSCai/NXayQ+kNK +LTLZZKt4MCOPUXijggKiMIICnjArBgNVHRAEJDAigA8yMDEzMDIxMTA4NDQyNFqB +DzIwMTYwMjE0MDg0NDI0WjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTCBtQYDVR0f +BIGtMIGqMG6gbKBqhmhsZGFwOi8vYWRtaW5kaXIuYWRtaW4uY2g6Mzg5L2NuPWNz +Y2Etc3dpdHplcmxhbmQtMixvdT1DZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzLG91 +PVNlcnZpY2VzLG89QWRtaW4sYz1DSDA4oDagNIYyaHR0cDovL3d3dy5wa2kuYWRt +aW4uY2gvY3JsL2NzY2Etc3dpdHplcmxhbmQtMi5jcmwwgZsGA1UdIwSBkzCBkIAU +v61P0stSZ1sEEF150srDuJRLJeChdaRzMHExCzAJBgNVBAYTAkNIMQ4wDAYDVQQK +DAVBZG1pbjERMA8GA1UECwwIU2VydmljZXMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxGzAZBgNVBAMMEmNzY2Etc3dpdHplcmxhbmQtMoIBATAd +BgNVHQ4EFgQUtGxi0Tyr+nC39ta0zSfbhZa0aKwwDgYDVR0PAQH/BAQDAgEGMBIG +A1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwMDZwAwZAIwGH9SDTAqH/0vSzUe +K2IrHUbumqvXy8TZ/yzKUiT8gUU28gAuH0wK0W3+jwpkdJffAjB4IaEwqMiFOX1m +aSi3ExTQjzzOlGcJLTmsRTRmL8bjm/f02y+8vjMgP33Z/rAR07c= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF8jCCBXmgAwIBAgIBRDAKBggqhkjOPQQDAzBxMQswCQYDVQQGEwJDSDEOMAwG +A1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5kLTIw +HhcNMTYwMTExMTc0NzAwWhcNMTkwMTEzMTc0NzAwWjBxMQswCQYDVQQGEwJDSDEO +MAwGA1UECgwFQWRtaW4xETAPBgNVBAsMCFNlcnZpY2VzMSIwIAYDVQQLDBlDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0aWVzMRswGQYDVQQDDBJjc2NhLXN3aXR6ZXJsYW5k +LTIwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAIy5HoKjOG0o +D11vflDmQd8VL3EJ7VRWtBKx2hl/txEjrNOnKZAdGnGHRwATMQfsUzBkBDB7w4LG +PYwVDDxyCArOBa+gwr6ijk+yJ4cTkWXvupH5D4qlgUpQOtTrBKjH3SLOKCYEMASo +x90izigmizm1VBbwRHwvt33hB9zSpi6IDqU+62LVfLQ5ApXbyZQ6t4aW+lBMEQRh +BB0cZPBoz0X/oqY6gbfBP2uIR6PnfvFP49t/yv4MvRDo6CbgNDbWRqrvh7LiR9Sv +Hoq+HXUg+cKkXLHrjpXP1VJitwsp/uxYZOGcBU/5kSkoDkZGIXeRgRFCggNBJjxT +FQIxAIy5HoKjOG0oD11vflDmQd8VL3EJ7VRWsx8WbmysBCWnzzq2r2t/wxA7iDIC +6QRlZQIBAQNiAARYRytgZRQuGrLeH9RMQR0n5qjn9SZvDuic0oOBl/GhVUQN/7LF +HZ663zJyS5KvsHYuq+fg2KLbz6WfuSjj7KeukoJ1r99UWkbvw24U/zxNQsP8cnn5 +hsHUdrLANAuFZYOjggKiMIICnjArBgNVHRAEJDAigA8yMDE2MDExMTE3NDcwMFqB +DzIwMTkwMTEzMTc0NzAwWjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkwRwYIKwYB +BQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNfMl8xNl83 +NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNoZUBmZWRw +b2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEcZWFjLXNw +b2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTCBtQYDVR0f +BIGtMIGqMDigNqA0hjJodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9jcmwvY3NjYS1z +d2l0emVybGFuZC0yLmNybDBuoGygaoZobGRhcDovL2FkbWluZGlyLmFkbWluLmNo +OjM4OS9jbj1jc2NhLXN3aXR6ZXJsYW5kLTIsb3U9Q2VydGlmaWNhdGlvbiBBdXRo +b3JpdGllcyxvdT1TZXJ2aWNlcyxvPUFkbWluLGM9Q0gwgZsGA1UdIwSBkzCBkIAU +tGxi0Tyr+nC39ta0zSfbhZa0aKyhdaRzMHExCzAJBgNVBAYTAkNIMQ4wDAYDVQQK +DAVBZG1pbjERMA8GA1UECwwIU2VydmljZXMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxGzAZBgNVBAMMEmNzY2Etc3dpdHplcmxhbmQtMoIBHDAd +BgNVHQ4EFgQUdwbATOVJ8CYHjD/wctApu6BjHpQwDgYDVR0PAQH/BAQDAgEGMBIG +A1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwMDZwAwZAIwLLb1wnZKd95PaLXH +6gls9mPtiZaxT+V65/1c79DS9Q/ykHD/xszMOElIjsyR4+iQAjBniFX180yGFLD6 +fMlbMxEQ8T79lDqJj+NlVLU8z+Of5S3E08kmldi4Yht8mreGl1I= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF9jCCBXygAwIBAgICAPUwCgYIKoZIzj0EAwMwcTELMAkGA1UEBhMCQ0gxDjAM +BgNVBAoMBUFkbWluMREwDwYDVQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2VydGlm +aWNhdGlvbiBBdXRob3JpdGllczEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFuZC0y +MB4XDTIzMTAwNDA2NTIxNVoXDTI2MTAwNjA2NTIxNVowUzELMAkGA1UEBhMCQ0gx +DTALBgNVBAoMBEZESlAxDzANBgNVBAsMBmZlZHBvbDERMA8GA1UECwwIZURvYy1Q +S0kxETAPBgNVBAMMCENTQ0EtQ0hFMIICODCCAa8GByqGSM49AgEwggGiAgEBMEwG +ByqGSM49AQECQQCq3Z242+nEiz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcX1NmwCb +xmhCrs2hKuajgOYogf8vLYLGhSiqYFZYOkjzMIGEBEB4MKMxi2A7ieIycUWsI0zF +lMvdjT35FhCoNEHK6phjvC3tXVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK +BEA9+RYQqDRByuqYY7wt7V1aqCU6oQou8cmLmsi1fxEXpyvyx7nnwaxNd/yUytwI +PmeYQFC3Xrrl3SgJvWOAFvcjBIGBBIGu5L3YLtlkWiEyLpxMapOF7Z9wtdkWwbQ7 +Yu700AmO/zsfeOLQ1I1Q0Wh7k7l9X3xtUEdAal5oizUiCby5+CJ93jhdVmMy7MDq +v6nPeCL98gn3ACSlexqgAMVbiB+BEbLc3klKX0heW8pL2IonY67RyisvqPBUBnjN +Hg862AiSAkEAqt2duNvpxIs/1OauM8n8B8swjbOzydIO1mOcynAzCHBVPlxBTKkm +GUGGYRl/rBBHHbHTgQhd2t21h5aCnKkAaQIBAQOBggAEKRdCr7KcjHDXB8t3paab +KevrtQtpZ8+6tQc6m1ly934ToiMb0rlx391hVE9OHvVBloJd53t/gmGXTQ19GykB +X1KCbX5Nm8ukzcipCapUdZMWNiifHssXw45eWPL4CErJb4fmU5y6Db4YTwDfgoOw +ZYQ3M1G6veT0PlCJZQI8HIWjggI/MIICOzArBgNVHRAEJDAigA8yMDIzMTAwNDA2 +NTIxNVqBDzIwMjYxMDA2MDY1MjE1WjBgBgNVHSAEWTBXMFUGCGCFdAERAz4BMEkw +RwYIKwYBBQUHAgEWO2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL3BvbGljeS9DUFNf +Ml8xNl83NTZfMV8xN18zXzYyXzEucGRmMDkGA1UdEgQyMDCBHGVhYy1zcG9jLmNo +ZUBmZWRwb2wuYWRtaW4uY2ikEDAOMQwwCgYDVQQHDANDSEUwOQYDVR0RBDIwMIEc +ZWFjLXNwb2MuY2hlQGZlZHBvbC5hZG1pbi5jaKQQMA4xDDAKBgNVBAcMA0NIRTBD +BgNVHR8EPDA6MDigNqA0hjJodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9jcmwvY3Nj +YS1zd2l0emVybGFuZC0yLmNybDCBnAYDVR0jBIGUMIGRgBSnqfhInwhoEM+/HQbn +bTWlW0sOVqF1pHMwcTELMAkGA1UEBhMCQ0gxDjAMBgNVBAoMBUFkbWluMREwDwYD +VQQLDAhTZXJ2aWNlczEiMCAGA1UECwwZQ2VydGlmaWNhdGlvbiBBdXRob3JpdGll +czEbMBkGA1UEAwwSY3NjYS1zd2l0emVybGFuZC0yggIAvDANBgdngQgBAQYBBAIF +ADAdBgNVHQ4EFgQUAXGfD3wC8qNCMYYIEo2x/mKjjvwwDgYDVR0PAQH/BAQDAgEG +MBIGA1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0EAwMDaAAwZQIwPIxoQPwahzd9 +3e3jwndCCRFQ1+s2laF9ypR+YPBVtz7xbN2iKFisMKznzhKiAtsFAjEAiDlcOM8I +P+C7ETsPVWrkUC/1/ZLRKn2LYOAMmYEamSKBllY+2tfd5xoQyPH8R+jg +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGFTCCA/2gAwIBAgIIBiUw9O5oUWQwDQYJKoZIhvcNAQELBQAwfzELMAkGA1UE +BhMCU04xDjAMBgNVBAgMBURha2FyMQ4wDAYDVQQHDAVEYWthcjEdMBsGA1UECgwU +TWluaXN0cnkgb2YgSW50ZXJpb3IxGDAWBgNVBAsMD1Bhc3Nwb3J0IE9mZmljZTEX +MBUGA1UEAwwOQ291bnRyeSBTaWduZXIwHhcNMTQxMDIxMDIwOTI5WhcNMjQxMDIx +MDIwOTI5WjB/MQswCQYDVQQGEwJTTjEOMAwGA1UECAwFRGFrYXIxDjAMBgNVBAcM +BURha2FyMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlvcjEYMBYGA1UECwwP +UGFzc3BvcnQgT2ZmaWNlMRcwFQYDVQQDDA5Db3VudHJ5IFNpZ25lcjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBALOPPbOlltze8ltHkLy465W4aqSEeinT +FBe2hftLV4AZaZO4kbYCANM1e57GUW/g+ZlC2ck/VulE2milz3g+WzoLyP36HRx+ +bnxSnLQksWTVDTJXqmftl5coINnNuMvND9k6WduptFVzfcGo6uqxGtHVtVsUIhKj +rrXBE+9qDiml5CwSfM8bdY39NOQR8NBX+ZvT2f5ClwQuTB7s7/DvKz82o2eF5NP5 +cwRRhkfo1osxROXDBfdCCZNL3y6lc0cV1FRwVVwKz5LnCUAnZMqnWKoKL6pIH1t1 +ahZdLsiHVuZQLbGYkUf7MV1aKiEch8yBHb33kIfdYpdl5sE5kKBdcCz1TWys2T77 +D1ZQq3B9atQF/1Ka3bEzKWY7iXRDjqvA4Tb3nGGwoSV6bz/ZpDveXrRHX8p3VU9e ++WCsKkjJebLLIXjGGliluRVSjqCmQWo7sVzttvIbjh5P60WvpI65rY2nB6cBmN/f +ild0sL72R7qXGGcOddeg6ti7FOaJV5cVjRYhvOuAdYcM7FfffmaqS00jCEymijYL +fnUicxddMz0mp0Z1Ook69U6wBWmgc7piB3R9VtpSx1xX+SscnYNF6/RbocN9pdop +8r7UZhYSsfYcCPY+0bLMLGhmewAGzI9k20WquGFawpb2EAXLW9lQ+HB03Op4p8mq +SsplbX/C5WhVAgMB8f2jgZQwgZEwHQYDVR0OBBYEFD+ZQvdVO8hdZiGWLuA5qTYU +8jBbMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUP5lC91U7yF1mIZYu +4DmpNhTyMFswKwYDVR0QBCQwIoAPMjAxNDEwMjEwMjA5MjlagQ8yMDE3MTAyMTAy +MDkyOVowDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQCZIJdCTzsg +Sn/uOpEzSZDXLL3v7rwKQ32SNpMjm4E7RnMMG/wIkgFuGSupUdQG3/8Dtq8pXRqH +/uRJDQ1so8ZPonsVGcox6taCNIfCT5DTBPiqWHR9fA8qDz5Q0S7FoEhASDYb7aqb +OT0El5WAy3QLK1CsmEjGMMA5YHtl7Tf1Yf6B0Q7vz+2ybQt+cmFq5QueAwuMz0KL +c2zjVAIMyB/2DrnjKh6ouj8vdPqvtsAUID9N/eJA3iPF/ENPM1d8djh7rjh2iYt1 +t+s0UgeXs53+6aKLObTuAXd1o8EwsdmxnJRvM1jH0oWdMpr+1kq9oRChxx9zrji9 +yFRsgFI+X3fIZF0Ou5A9lOtrrIfvvsWqnY9+WAw2DkdlrItVmFT47h7MujnxHsl2 +hqOEcnw75dgK9Qd+8e39ZL3AgDx5cQIrbTNY78Q1zTQFHJWYCmoyEvFl6WcXRNPC +Fq50AtsBdcfPtNbJPdw8xJT113R/N8TxjfFaDoU/0HSlJwvxDQkXPbJ7AIId8Svg +Hlv1RFBnccvFoXTCPTWFebgjGKYOSTQYK8USIeu7FMfZ8GjdX6NcLVoBtZ5MvMRh +sIaO18AkZWr1nGqZZLq2kT0sLnIjoiQwpzwHTGajc95pps5t3FdbSUVtsfMm/6sG +fY57ez3I/HGT3yv5BiO8pI7d2mzQAFex4Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +9XpMnyexDoun8Y8HLItScQo66z0FWvyZeg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGOTCCBCGgAwIBAgICDtwwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCTVQx +HDAaBgNVBAoTE0dvdmVybm1lbnQgb2YgTWFsdGExITAfBgNVBAMTGE1hbHRhIENv +dW50cnkgU2lnbmluZyBDQTAeFw0yMDA5MTAxMjU0MDhaFw0zMDExMTEwOTA4NTBa +ME4xCzAJBgNVBAYTAk1UMRwwGgYDVQQKExNHb3Zlcm5tZW50IG9mIE1hbHRhMSEw +HwYDVQQDExhNYWx0YSBDb3VudHJ5IFNpZ25pbmcgQ0EwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCkFxZqjHzIuG4aCupoDS6xIi56sICC9X7X0jJFkWGy +AB9n29SmC8eJj11GVKmh4b7ZQ4JSkpiASpfOw/wm1bbrg5hdUb9Ntb1YhtfdYtUu +xwkA64tCpRG8bOjhBbqA7QGgX78qP6yd2OPRdV4lRF9h+3yREzUwFik7dyfH4dH7 +g22jD/TVJC3BvvZXRQKofBaMidunqejltGOKh/4JfgGykNJ1HSZgGRk5v9rffucJ +bPjzr9OXV5vmbHX0iJYkXicvoizvIWnxZacwFNffewjyrCvSETn6ZSaVaOqDw1bA +DBaNRlaaqqerbix7GH+vGsRBbK+kosv4xzSsBEVKPMon3uOq74BVYFSiRVumyrP4 +uc29Km3Gb4SD4YFKSqtBZjqhKmVqjmv2Al/KY+1IEQkrRGaAj+J/dIU7m32i3Eej +0mXA5V5zU/O/7ckvTS/KOwgwnBDf/ZHzLrESND/Rbrp3RGsNOHGP6iq1q6kBAb9c +RJkbtYMaOryLutsR0QymAv4QNvp3y9EYvAlPx68PqBcfcC09nw3mpxSMqhmN1vAl +qQAktYYA+5euKoMF9BiMP3VORVgYj9twJKsk8f9tZxTVzd1qQQ6Aw3YewDriMNuz +fJKLqjcQVLtfmu2JoNHEOb6P7zMLdua7uJUEJXHS+UsKZF7B5a4jcwFhqPNGHpv7 +ewIDAQABo4IBHzCCARswEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHSAEODA2MDQG +BWCDVgIBMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly9yZXBvc2l0b3J5LmNzY2EuZ292 +Lm10MEcGA1UdHwRAMD4wHaAboBmGF2h0dHA6Ly9jcmwxLmNzY2EuZ292Lm10MB2g +G6AZhhdodHRwOi8vY3JsMi5jc2NhLmdvdi5tdDAOBgNVHQ8BAf8EBAMCAQYwKwYD +VR0QBCQwIoAPMjAyMDA5MTAwOTMxNDlagQ8yMDIwMDkxMDA5MzE0OVowHwYDVR0j +BBgwFoAUuZQF4dPGWiLnAWyw+Asyl+71YxYwHQYDVR0OBBYEFLmUBeHTxloi5wFs +sPgLMpfu9WMWMA0GCSqGSIb3DQEBCwUAA4ICAQAYCJEWyGFEZQcG/dhlkokk84P4 +DaFgiRa3peSx50zVRfu0O9HDp2eJPgOzFYfyWBWzpgNNI/Z7PGPl3D5G1tMbQ+tI +Jt2dOGankcpUDtgUP5NFimV5LOO4p5+pbih05hOxj1+YpHc+9gImbj7WKdMaf+qg +I5s8myMxlDrdiVbnkIKqLhrDjcrtAor/Y+2acOw2PCNlOOOlyuZa5J8U9Zx7Z6NE +6c+FKDqzzZM99GHJXMmRgNP34sUe6XajgE4aAMdmun4mXdBpweZWbFijG8Rgi6ib +pvV2Ex2Hti7C0ABUWcQNa+c7D8nBcxdPDlp6XyMUKpcMCuQqCR0ZA7fCXAFbSXp5 ++wQGktOJV7xZDsOtD8hN7CHmlFPsfpK6R6Gmm4XmgXDxtmp89inNOd9dbalv2v6P +Np3tnsY/+/iFshDqlssu4Oakfxonl5236ax6jvfXrCbqMufcNkY4ZKiA7HjEVG/5 +gP7UseUgLTccD9iycHJi4goV6P9p54GkXilHnPkK8ZjE0RC7zTVafUZ/U1DfYoeX +0/REtlBFQLUxPPyB75o/uf4i1RUBUW7/FwySjbDkeQ7oBHrUINNjmEOmbPA1ZTBk +xJFOFT4I2vGixt9LLBxjSyPW0J443Udk0o6wTIQYhEStI5nflba//3gbWZY41pFk +H8iYD3Vfu/Y9NXPWGA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +PCQgoMgVY9oOd5nKQEWK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +WbWv3+9llEnA44h/DcJg +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +uWPrJsI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +VSoJbvVok0sXLoOldpR5/9VPqA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +LgiXgd9MCgbgyTOX+7Ibr3XXAw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGnjCCBIagAwIBAgIUdtlI6LNXSudLQW4kfiCYsqmwARowDQYJKoZIhvcNAQEN +BQAwgYgxJTAjBgNVBAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDcxHTAb +BgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2Eg +UG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4X +DTIyMDYwMzE2MzAzMVoXDTMwMDgzMDE2MzAzMFowgYgxJTAjBgNVBAMMHEVDTiBE +b2N1bWVudG9zIGRlIFZpYWdlbSAwMDcxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kg +LSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vl +c2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAo2MvfuArOLUWd9MSDenqIUCNQgjOYchzHvF+TKQGUb6W753UggOt +zAYTJiVJ55Z1CEWXZw9W64aVU6QUQDj74fUViM2EVjhg2tcMDM5Az3PMdE1ZSImA +WPOTPBSBLcwKDuZLjTPAPFSHwX5i1Mje5o4hhU5sCqQZNBP/np7Ud40d9OuMWvxx +A6Z4Q5tFZy73Bx8WVnpHieWchHGTZKzHkMhAiY8h1zVlZFl5YpganNlEiYboenlw +TI1gL8vVTazbEncecujy1kJ/2kqVtK86rX1aRreYJRvMrufDpW2mvWm3I2lzAdF5 +wFCBjGXZ18HrDa/1fHYT0VHNIgBsMo1y4PzKgg5mXwi7oZlpACc3PmBjA713HmDD +ZDXDFj9lwwUbbT8BJxm9rWykX4X2wYrNbiZrLDKHfJxAm9lUWXfp8ubow5tCvmFr +hJoXNE8nSlnatOkbWbLT0c1vTAZWOvRDu/k91f68bJipnCMVM5/98OY1NEqgbNmo +ijFwcOGcbU+WJAmID/6uRgCcLa/y1CAc/ZGCkFbGGRbknuJjrP0hLDprZ6a2UYWN +QJP6UzwcHJ43gE9aePIfoimf7kVmP8hWBE0tdHdVjXCyFHrtEiYHB776Rx2S6X6F +Hr+OseM9drU8Dxgar62pdZcu1gpcMuYgkE8G6YlXdis9mxRj+0WB4j8CAwEAAaOB +/TCB+jASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFKuZAgEOINel0lWq +UKcVK0zne3hbMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANQUlQwGwYDVR0RBBQw +EqQQMA4xDDAKBgNVBAcMA1BSVDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vd3d3 +LnBlcC5wdC9lY24wMDcuY3JsMB0GA1UdDgQWBBSrmQIBDiDXpdJVqlCnFStM53t4 +WzArBgNVHRAEJDAigA8yMDIyMDYwMzE2MzAzMVqBDzIwMjUwNjAyMTYzMDMxWjAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBADU9FjEXZU3LJPgnoJHc +ucPluCltD7OVFq/GFY69090fguQ519RNt++ot/XoggydhSyBXTmVFzyzTwF8mYTV +obETpjEmszjepfWcj7BKMH5P0v9T7v50YkaaucvralBQJ+qgdZuvpXDhMniqzptF +YM7I6CSML5X/t/feBItt0vGDIpE4v9B4ZotDo/HlRSPNClZf/VlIydg53LvQLQ+n +d7s5q/xVAPvtcBTyPqDUhj5kIpLaKhPZL9cMbDbGVCsDUr+yBS+WE8lWhvP9wYn3 +NI31tte/PFVgDDxBLiKLpyTtOXF6nfQRbPJcLBjk0vqCX/TsKFx1tBfm2KqiwaZ5 +o1+aKu9USz4DmJQaKv+M9SPma/yBSMZD4OraVqEj8KC+mGLsOWC6N9VlccFnChmQ +PDWX6vedQ1RFw9AHDCGLYopA5eqFhpGMrI1Rlxa5A80BBokCGC9n/cqZusCtv9+c +aY7teE6ZhKplBmNso+dUf/lXZ8a7yQTmMoqAOn8towWbiRo2avayyT9b7pVxIow1 +zGEO16fDpUAsFS7WejrOTBWh1tVToqS9r4Vpf9UCigF37IuxkQisAHAV4XEVgzqN +KwerusXfiXVVx5uc7WQJ2e1JKVZt4zQFQHHp1Hh5wRapNSGzMp9t5EcAywlSFcQa +woxLyT+dwhGpNgjG6IFDzH3/ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpTCCBI2gAwIBAgIUHsP7po3cri/2dUB9K9TT3Q0sSp8wDQYJKoZIhvcNAQEN +BQAwajEfMB0GA1UEAwwWQ2FtZXJvb24gUGFzc3BvcnQgQ1NDQTEMMAoGA1UEBRMD +MDAxMQ0wCwYDVQQLDARER1NOMR0wGwYDVQQKDBRSZXB1YmxpYyBvZiBDYW1lcm9v +bjELMAkGA1UEBhMCQ00wHhcNMjEwNTI2MTM1NjEyWhcNMjkwODIyMTM1NjExWjBq +MR8wHQYDVQQDDBZDYW1lcm9vbiBQYXNzcG9ydCBDU0NBMQwwCgYDVQQFEwMwMDEx +DTALBgNVBAsMBERHU04xHTAbBgNVBAoMFFJlcHVibGljIG9mIENhbWVyb29uMQsw +CQYDVQQGEwJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMkvxDrF +dNpVXSHo+A3zGAFyG5BmF34u9PW5AODt0qG/b965OQE5LpOgTrgKxRZIlu6edozc +V+nwXqP5yXTSKSdvfVgB2OOkvIxkjrXjYyznwwJNY2MI7DrKVRan+bTRm0XBwi+u +nKRTAmqqpgJLBjO+BxuP1wfcU5v5JjOQ+hAyRIzj4EjNdZPi9xi5HN6HkyPe33hR +QCqJcVN4JQWFY1Qlk3KsgvO98okVGVHm9bLavgPrByUL96lVFCaWPJXvEcYg4vV8 +1IIax0MLtokxeYUIm8RjriE0fV1XLHFOKBp9b3yxB3yTOuUt+rOZJUZDl5PK/+NC +nLd2KbzllNqeL1P9T575Vaa+od/63I3j6TmfsH1YT0W/B6SnDSCr8YZgCMY4Ru0+ +n9Infrj8KVchIvtDrFHRcm1VYJAkAYz0tuLirjzoFJGW0fuR9EA1yu/GASsU224M +O3EcTEY2HDCd0IzCmAaKDcRtiaDk/rgde58a7+jl2eXqrNLhLPw0fMqjpjnqNjr5 +UZfmS5Q2Lc+UescppzHGQpxgR7p6Rz43CUQ1PupkIj4cdOPtewLMgqCeIG3QeFJU +Y0ohQ/v7Z7VlUK2REY6Ind5cFp+9kHuAvlWmRLmmr08Tn+BOhafK9HrjMs5rCqkU +yZgq1f6mBp4RtUGuqlUicjcwzaI2EjLqSPJRAgMBAAGjggFBMIIBPTASBgNVHRMB +Af8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFN0cuOfN22vzA6VVkQ3W7+KO0uKqMBsG +A1UdEgQUMBKkEDAOMQwwCgYDVQQHDANDTVIwGwYDVR0RBBQwEqQQMA4xDDAKBgNV +BAcMA0NNUjBwBgNVHR8EaTBnMDWgM6Axhi9odHRwczovL3d3dy5kZ3NuLmNtL2Rv +d25sb2FkL2Ntci1jcmwvQ01SMDAxLmNybDAuoCygKoYoaHR0cHM6Ly93d3cuYW50 +aWMuY20vQ1NDQV9DUkwvQ01SMDAxLmNybDAdBgNVHQ4EFgQU3Ry4583ba/MDpVWR +Ddbv4o7S4qowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMzU2MTJagQ8yMDI0MDUyNTEz +NTYxMlowDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDQUAA4ICAQAGfE41kW62 +Ga51VmyBOJHYgiPrURx3r7JRVFujf9W+DHOqtAOPZ2u2+SPOd1RPUXhO+iGhokkd +fVBn73WDhengJ5+kPU4NYh8XxZ8QAzleFwROtEVtm9T/zq9e2hFqi9hIHuaaLmZD +SmA6vn5lOxchDisJcaJLM02xn9cxHlmSM8MxmEXfasHxVhuvOJqzhqXIsA/lGn8Z +Aw+O/qp0wxmERaNlFMh578sI1gPqnY3t2XDMzYhDNWgMZ0OB6StSbBn/Zo6c+Xd3 +hUh4WvEP/4TMCyILZYda0c+3JiuZAR6ZYxp61RvMFrV4prSPgOMfmMliGlV9BjND +xsbhH+cze+E+FnJyJ2Nn5vPEGXnH4EhOBXETgKYayVJipOENmMwcKZt5r9+GwcYE +nuLvg/OKNo+Aw3QOOhn1lh/LthXVPd6iDjIgNwYFU4hRnsxnmH3cKOe/3CI5ZJZp +tKADCKGDyaUUbkEKO5f6ydDNlUQNAJF6PDYzNKGDgOoN7eFHpdLuFL3sBmE8jAtJ +TSt5Dd00IAcQb3kkEcows3fhFCymzQRmTpznUdyV2QKuVHpa/eOwytuRgObNFnGM +k00TedMwGI9KG3/jCf9T3Q1Y9eYJI//LaHLjvN7GPxkxT47F2bx4rjKoj9qqg0mr +ijS+nb3oCHWc6AI8MJ/EeAkseazs2aG5Fw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +QlaMdyhpcWzt6h7YERbkHDD7PUmFJEqA76s= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG5jCCBJqgAwIBAgIEYvz7njBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwPzELMAkGA1UE +BhMCQ0ExCzAJBgNVBAoMAmdjMQ0wCwYDVQQLDARwcHRjMRQwEgYDVQQDDAtjc2Nh +LWNhbmFkYTAeFw0yMjA4MzAxMzA4NTFaFw0zODAyMjgxMzM4NTFaMD8xCzAJBgNV +BAYTAkNBMQswCQYDVQQKDAJnYzENMAsGA1UECwwEcHB0YzEUMBIGA1UEAwwLY3Nj +YS1jYW5hZGEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCbF5M/dAIe +3WdJUgr86NMuX0DrZ4mMCOARbLZBVMa5UGbPN0phxMkJTkEPM8CNC78VRHkLMKF3 +fWRSVBH/v0Rl/khSPL6LityCWIBXpJ0/KVXeTC4LOSMuYA6b9WmmLghSlMr9TO0H +Db+3oxQHlMjWk1z9M2UoBHh/semgpXOJ8UavBxTIBkNgVGh5cWtvMMyZ8rmFTHIw +WJMzKout7OrTzzJCVEE5BeWv4wrpIMLFFGs8y6Cb7IsUJu0tXf4uwMoEVJEY32P0 +vrsq1HIah/PDTu0HRJ1+knJSvVKvhHC2B7Yih6szTq/DmlgDP9Nl9MjggvPp3WBu +8tTazi8xHV/TOPHado5aape1Y9Or4JT8B4bxSLsz09UpELAk5AZHhHUT08HKkH0j +DgayI6axogHmlYzoYnpHavdgpeDx6Y5D8xKJSHTqJm0h0Hzg3HieoQ7KFL/szh7c +xUMdSuQxYseWjcsYyKzpoJhsKS95DLQDQiyw1rEBuByMACmOOoqD3dCNex9u/k1+ +u0u75LZQxaPiX1k6NPT7ptB3VU65uCC07v48s/DAI6MHEqEQR2B19THdFv1FTmcq +OgIRFOuJpe8kvVnbuXrPmiBj15UjpSXnL3Nt/nQB8LDXZmA1SomC2gabGM9IRjS6 +PioYVl/9DkFRT20H2KuZiBKktnM9Wwz7vwIDAQABo4IBgDCCAXwwEgYDVR0TAQH/ +BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwPwYDVR0SBDgwNqQQMA4xDDAKBgNV +BAcMA0NBToYiaHR0cDovL2NpYy5nYy5jYS9lbmdsaXNoL3Bhc3Nwb3J0LzA/BgNV +HREEODA2pBAwDjEMMAoGA1UEBwwDQ0FOhiJodHRwOi8vY2ljLmdjLmNhL2VuZ2xp +c2gvcGFzc3BvcnQvMGcGA1UdHwRgMF4wXKBaoFiGKmh0dHBzOi8vcGtkZG93bmxv +YWQxLmljYW8uaW50L0NSTHMvQ0FOLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIu +aWNhby5pbnQvQ1JMcy9DQU4uY3JsMCsGA1UdEAQkMCKADzIwMjIwODMwMTMwODUx +WoEPMjAyNzA4MTYwMjA3MzlaMB8GA1UdIwQYMBaAFJZXz4UzBcOCjGgnT7FJsLUe +2B40MB0GA1UdDgQWBBSWV8+FMwXDgoxoJ0+xSbC1HtgeNDBBBgkqhkiG9w0BAQow +NKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUA +ogMCASADggIBAALPFH/hBLz3nu2s7nG5WSZvvFIyyFb0oJv37I4qxuwwV/6PKDou +VOFoOiR6PDJ579/cTGstFbs6jd+/wF8FPq/x1lYoqSubzjCVulp8Y0JBhfP4gkGj +k2+EPBZW/w8mfnmUM448zS8dPo1LU/Mc5UajKALDjfsHFoAxZkVabOFLSHV4dl2i +9XIYjsxkl4QX2N5fP+vh6ubNYJgAht24pRmAvJ4V4x0R5Oge9XaU7VgZLLY0628d +MyhipD3TiqG8GUpYPdttSH2cuwbF6MG6DATYjKrup6g5yQuIYaNtlXkkZxr5EwF1 +OpYxUyFhDeVbOQp6vxgI0GXIuJz5FGxfgDM+zi4Lj0erFMlPbwr2a4VG/POI3urd +cDWKSjNy28Awk15jo1jI3o9H1SNp7DTqX0HZD8/V0g8XS8238oLr4qPe6TNdkRKt +ULqiDsWEjI8oRMXYGaeQQ5MpaDmKGE30E8dMlJ/jel7JgLsfvX6/O1alVsHgF8kI +TXSfuHgIJektK6exez7tj/NWD8xHo2UOJVuYaWKlHK7x/IUum93pF3Zuk5ULJQ9W +PwYfbCLqQ3mzNeIX9ViqnQtk5LiKf5dwcvIoQ/g8vNe6HIoLUrx5n/gZdaiMMW/7 +Q9qxr12goTH0mLoJeKqprjRujdmtwYoyUtUNmhUX0pPR6BKGke8/u1lv +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +lg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEjCCBMagAwIBAgIIa4pfL0b6k0swQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8xCzAJ +BgNVBAYTAlBIMQwwCgYDVQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNzAeFw0y +MjA2MjMxNjAwMDBaFw0zNTA3MDExNTU5NTlaMC8xCzAJBgNVBAYTAlBIMQwwCgYD +VQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNzCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBANJAgb5swU/j+0s1q23xp/KPNzAX7xWia2f/LdBHc6PviUK3 +ul8vka6kaf51fi4zYqkHYQtEHzYQ9Six85c5oTLEvrwmw30lttEkgTNv7N38a9zQ +Eb5PKRL/BmPLcNmTgoCBPdPzLy5v7xhIgfeEu9L9LRZbFp2FlMRdgy266/3LUy1l +QrV0E4Jd9RZLV33NwkjfxKiwcesL7wIRKOkXK3ehilprAOvA4Hrwqd9lkmhIBaS6 +DbAN3aq/eTZB7A2lGuzGFgrNVqAZTRFhJxuP6q8K6FGuZfFGTHlge7sjfePb0KKZ +6c2oRsNil2EI0QVVtXhmpWyHxqXZLRiI1iYPqQRZr7FGiLilOSHS1HfRZ3UYlWQS +4B6yWSsnrWKj06UHd8S+4/NItHiLt7vTjWvZApaKezZA11+Yt4gk7pRi4bLUBbjB +zn19vvR5wpeVU3kLfX+opvBdrUz5W5KiGLQQ61ud9xLQmbaVKgfxItIelbk06adl +51g5exkf0BwMSuZpA5oNcAMwireNA4CXUrt7Z2w/O72axLjPAWLvtQ4BxS46l/7T +HR5z8Ss9p7Tfh/1+k/cPktwVTQvO9aOcljGytQx8e5H0pj1OPUh8N/xju9+Htxyt +VYFAlmHRX3f/c4pNU9I0JNmZSQYH6/2Ck7L7XCac2KGUd8qI9vfLGr4A+xbJAgMB +AAGjggHIMIIBxDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUoUNtuE8cE05Js4faVs7oARAtT3MwXgYDVR0jBFcwVYAUoUNtuE8c +E05Js4faVs7oARAtT3OhM6QxMC8xCzAJBgNVBAYTAlBIMQwwCgYDVQQKDANERkEx +EjAQBgNVBAMMCUNTQ0EwMTAwN4IIa4pfL0b6k0swKwYDVR0QBCQwIoAPMjAyMjA2 +MjMxNjAwMDBagQ8yMDI1MDcwMTE1NTk1OVowOQYDVR0RBDIwMIEccGFzc3BvcnQu +ZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNVBAcMA1BITDA5BgNVHRIEMjAw +gRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBopBAwDjEMMAoGA1UEBwwDUEhM +MG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50 +L0NSTHMvUEhMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5p +bnQvQ1JMcy9QSEwuY3JsMA0GB2eBCAEBBgEEAgUAMEEGCSqGSIb3DQEBCjA0oA8w +DQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIB +IAOCAgEAALJAljZSdgInaWgGnFmOKvcv/9yfWNvOKX+EibbG7+3b69D4tCIOxAAF +MKhkigmA0AcphOMO0d66GMeX2MDyOhZXN2W9K4OrXcvrq3h3dCLxMzN+YmEjr67Y +dUc5t3lAKtzC/KcRqboFoHq8QqeuRqcd6hOq4N4DciOMp70dGxVQQfrOV1S/oD2e +2/0Yg3MqKVuXxhcEI7mrpIlJRJiWOXqCM1/l18l+qjsndFF8XgxnTEo1efPHJR3S +pTerX1gHr7SuKFl8QKO2LBxnfv4IsYKo4xwQq1mgEpi5GclMKRx0gVDRGd2ZEb89 +B362hyRmKFulzQ0WhEC4SIYvtL+g/RFQE9DBtzPGFpsVYVGlvVckg0IBPx4jzm0S +JB4nqB08BuiI4VKbqPzeL1OFUNJ7wsYmamcKow5mn77Nxjd+1NQ2yCT/ZmUtkryU +77HwrEd8IokscXowKYf8YjtleQ0xiQTzdtQMS0lZITwzkbtjW+PkVBMKEl0RdPtA +uC0aMyAcfId8hUcIVdU5Ua//lDpCAxz/7F3pF00z3OD7q++OlUI5UF77MHc9VVac +be9qVVvU/0Ww1WsZi04T1NS9qe47fmj6PTYnxxY7+bOcXgoA39ruHUrgewb6Sv7b +p179sSD3sH/2HicmpXctwz/0rsj6G6aubgE2auMMnRr0ejQB86A= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHVzCCBQ+gAwIBAgIBBjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEa +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDB3MQswCQYDVQQGEwJOTzEw +MC4GA1UECgwnTWluaXN0cnkgb2YgSnVzdGljZSBhbmQgUHVibGljIFNlY3VyaXR5 +MSQwIgYDVQQLDBtOYXRpb25hbCBQb2xpY2UgRGlyZWN0b3JhdGUxEDAOBgNVBAMM +B0NTQ0FfTk8wHhcNMjIwNDI4MDgxODI5WhcNMzcwNzIzMDgxODI5WjB3MQswCQYD +VQQGEwJOTzEwMC4GA1UECgwnTWluaXN0cnkgb2YgSnVzdGljZSBhbmQgUHVibGlj +IFNlY3VyaXR5MSQwIgYDVQQLDBtOYXRpb25hbCBQb2xpY2UgRGlyZWN0b3JhdGUx +EDAOBgNVBAMMB0NTQ0FfTk8wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDdH3DDgLTSlzO/0vZYsOR9MbpPG5zlrxSv5+cV7roX7HGHDj1EfEJIPD6bKvTY +DLajLaHzk6Fo4bZdDdCxA/fmfFcEhrt8l1yfcs+UZ0gxRS5RpHrr9SVpXGzN1UMu +WGcC1DMFjsY+Y8pAcHeLaQmYoau7Ha0XhxvDf9SjKAXBQMdQDsBkOFcdSHjVFx+f +gM6Z31Lj14v36h+ofWWPtglzCW+ugddBgNEmYe1HY6X7rz4tO8zz0qt1ljIIX5yy +Xyi8GqLisEayITVQs8BHKVELSIhP8+KbkL4yK+381aiyf7j9SL+lADjGu8QCVhnq +gSSs092A8zL73kH2OsFyeyCAJJT0tfxStApEgWTObZp9ZaacnHMQCCPvdYWiizZD +Ju3KWrnDDwCI53gEHeHXut094HYwqBfY32XM1Y+pHb/AYCvQH7RyHM9vFLE69UYv +zisyQMm7qFC2f84hRRlH67H6nUYhJXKceGDLsKnoWAtq1UCghuYNp+EFZ9hgHKoK +TCUt3NdyACIfU4BArupCcl9N7j5belW0qrmczWGK5t0iPlEa9p777o4AdmQ/c4vj +Stb3iJV8CyLzyKwQnTmnPlhMTr0bUy20VGDGTeb+AhY+zWpmFo9AoJiEtqR6/yn8 +3jf3GnqOG575TPGyYGayfr9ofRxD9Wt4aYR/EyckSn11zwIDAQABo4IBjDCCAYgw +DgYDVR0PAQH/BAQDAgEGMB8GA1UdIwQYMBaAFHD3VtLBi1oIjJ5HRryprB/mOGrm +MCsGA1UdEAQkMCKADzIwMjIwNDI4MDgxODI5WoEPMjAyNzA0MjcwODE4MjlaMDYG +A1UdEQQvMC2kDzANMQswCQYDVQQHDAJOT4EacGtpLmVEb2N1bWVudHNAcG9saXRp +ZXQubm8wFgYDVR0gBA8wDTALBglghEIBNAEBAwEwEgYDVR0TAQH/BAgwBgEB/wIB +ADBtBgNVHR8EZjBkMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmlu +dC9DUkxzL05PUi5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8u +aW50L0NSTHMvTk9SLmNybDAdBgNVHQ4EFgQUcPdW0sGLWgiMnkdGvKmsH+Y4auYw +NgYDVR0SBC8wLaQPMA0xCzAJBgNVBAcMAk5PgRpwa2kuZURvY3VtZW50c0Bwb2xp +dGlldC5ubzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3 +DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAl0OJyy3GxzmIQINNMKfVZUCUU12R +Xp7crXy3nF+9t4FgPY71G9AozN3CEVchJvZK4miDwQUgrR/uRcq6uc9II8Cz9hIU ++UHEjDIrKVgCrsL8lG2oG9H8G7uNCwYHwD1csuqrb766wWxolK5dc+GsfTHdd26x +xE2NLyzcIv1nX9bYtRFYbCiWrjoggUZliMAY3G1KHjiVhMhVpBApq5e4Xi3hnHQS +a948smAdnbIQ/12Sa97GkDmIw/kAST7uEAKPjOuK0m4ITIHnBNIpeEw9/KvwVIB8 +bqcoDR2xGAzzgr/FLL5DxZ777HdZIoONr4PccNi6HQfQIcFfHHmaxPUW8BWk2D0E +SOjPw+UOTM7lxEoXv2P2B12S1Hsq4kPGVkA3Za4k8dYBTOnyg/DFGdPEBhr6/1UF +3w7H8uVOnHom0X+y3HbrjQGEdT385VpOlAVqBfn/eJ8f9Fec0izwJPEVuinC24Z8 +PWOZTilyLBsLYZv5WCCs8P//V20BHzVtm0iK+SWH1NLdHRpLMTuKCcnZBB9p35hD +NMYiCWR3ta4AFVVouZjgxj08p6HTcYVTIXBPmREuc/5ER9SnD1DSiEl97m4DcKTF +9GD9MVma2/JXDtpgjBsjBWgOI5Zoo2KrB5o/wH9N3gmGM2qs+YXmu4A36kC+s08a +iYMI7j28PL+3slc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIATCCBemgAwIBAgIBATANBgkqhkiG9w0BAQsFADB3MQowCAYDVQQFEwExMRow +GAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEXMBUGA1UEAxMOQ1NDQWVSUC1IRUxM +QVMxCzAJBgNVBAYTAkdSMScwJQYJKoZIhvcNAQkBFhhjc2NhLWVycEBwYXNzcG9y +dC5nb3YuZ3IwHhcNMTMwNDE1MjEwMDAwWhcNMjgwNzE1MjA1OTU5WjB3MQowCAYD +VQQFEwExMRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEXMBUGA1UEAxMOQ1ND +QWVSUC1IRUxMQVMxCzAJBgNVBAYTAkdSMScwJQYJKoZIhvcNAQkBFhhjc2NhLWVy +cEBwYXNzcG9ydC5nb3YuZ3IwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDgLcmi5Pi7FXKvOa8wejdOb6Tvl+JcLaofFpJTA6aIFFjgARjC7fj8fNC6Wy0l +elBs0ZGTbfIXZ/0+UAMHT/pRWIFyRQ8urQ/N5EGj4sBmlaG0ZEUCd7oDCBLJk8Xn +aTypwNxAxNvinx6VBsfyOQj/ukIgVK9xZ/8BckgLV9E7WHXxO21pVnOWqPuvWmiO +yjyx3DgSAeOJ1Bmkah+BhcjWHHbu/VhcU7APyGEa6HjCdGbkloZiKz0PcqauzNlO +e15JCUceoqow3jpCFcgSWEbc7zX0eSNyKHsDAP8sM+7t7aYreVbZkxTognCvquqi +sGTXtsHiP6EfSp6DpiSnTW0r66Y214YS8tdqdMxkXOR0ai7zfvb7pC6FkVWG1XqF +/I4YKTZYUia6XT/K6CPgku0dkRzRBtiImm2EixeYAH/07ZLJ6CNrEw+AZElDVp3p +RegZ6UdCXeA1JoQw80Xq/67PXSUgzndoy7DgT2yg2jfYQVY8uVetBFSM6Elk32GT +cjBXQK59H15hj3EOMlOLHX12VMgQMDISg89knhL51tKOTX7X/GfeV3qQAe3/CysQ +VAz6LqYTaXV78A4dCcAb9vHXgk7s/d8V1ZR1e3q2x8ERxdUQ+ktXUMjuXi9rC4Nv +YAjq+9GYC9KQv2cmFglh7GJKqwc8HbDNWxSdd6BLKT6F6wIDAQABo4ICljCCApIw +KwYDVR0QBCQwIoAPMjAxMzA0MTUyMTAwMDBagQ8yMDE4MDQxNTIwNTk1OVowDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQRUG2dJ5gf24lvUsuTRoPld4KCLzAfBgNV +HSMEGDAWgBQRUG2dJ5gf24lvUsuTRoPld4KCLzASBgNVHRMBAf8ECDAGAQH/AgEB +MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cucGFzc3BvcnQuZ292LmdyL2Nz +Y2EtZXJwL2NzY2EuY3JsMIIBvgYDVR0gBIIBtTCCAbEwggGtBgwrBgEEAapsAQpj +AQAwggGbMIIBXAYIKwYBBQUHAgIwggFOHoIBSgBUAGgAaQBzACAAQwBlAHIAdABp +AGYAaQBjAGEAdABlACAAaQBzACAAZwBvAHYAZQByAG4AZQBkACAAYgB5ACAAdABo +AGUAIAByAGUAZgBlAHIAcgBlAGQAIABQAG8AbABpAGMAaQBlAHMAIABhAG4AZAAg +AHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABpAG8AbgAgAFAAcgBhAGMAdABp +AGMAZQAgAFMAdABhAHQAZQBtAGUAbgB0ACAAbwBmACAAdABoAGUAIABHAHIAZQBl +AGsAIABDAFMAQwBBAC0AZQBSAFAALAAgAHcAaABpAGMAaAAgAGYAbwByAG0AIABh +AG4AIABpAG4AdABlAGcAcgBhAGwAIABwAGEAcgB0ACAAbwBmACAAdABoAGUAIABD +AGUAcgB0AGkAZgBpAGMAYQB0AGUALjA5BggrBgEFBQcCARYtaHR0cDovL3d3dy5w +YXNzcG9ydC5nb3YuZ3IvY3NjYS1lcnAvcG9saWNpZXMvMA0GCSqGSIb3DQEBCwUA +A4ICAQBUX2wx3TAAPUuAyPulPeJ9AH05OyEl04iTAm68ESTqzEy/cpR0rpsgLo6Z +psOrlwTbq0y3vF3ETgSIbwRrS29sq9rHFqg9MC0eFC8lBEuMlJC9udhA0EzPMqmn +EpGV4iAGTjyVlo+83zg+MW8mj6eU6TckledK3CTlr4D7utBEsP6X6g0+ycc8ZSal +Q7QK45Uc0f+wU3lO0+arjBoRQkz7FvgEWUg6SERGXnvcZZ2+NthBvMvOor2Pq45P +7w6Je4URyf9oN13KeBAwXLWEBzqBRJc3SztlCMb7O/shDWjdUvp9Y8S2KAkwXqIx +nm+P2WiUyoJbP8z9+NOeZ86m0th/h6Vanz1toy4wXxJwwcBFYYk8B/MEyFow/QYo +2Ura7ih0Tvj9u9E6YMnz8OthC8x13sJmdX802fAza9gDlIzQlq+0lDlMIAAPhUA0 +obTuftQ8ijU6wXwNE7R7d4XrZEBRLwpNNFOrLddnJfAKgzzCh7xDXC0RvIKZ4Z6t +005RQda9AMdUcOQKtZqTRA0BTQ9xhwiYHekVU95c0hVXD3Zs7pJtH4Zgp1LhoLD3 +LEFW2Q92eMJhT3s22RZRFrM1++l2QRjFwLLRzrWLZQ4S4aTRzhdtkgFck0PIcUs2 +1/9ffLFCW+vqG7iETS+bNthVJKpukUIhOL4vkGM6IYTj3U9QCg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIGzCCBc+gAwIBAgICAPMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGHMQswCQYDVQQG +EwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScwJQYDVQQLDB5JZGVudGlmaWNhdGlv +biBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMMMkNoaW5hIFBhc3Nwb3J0IENvdW50 +cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFjYW8pMB4XDTIyMDcwNzE2MDAwMFoX +DTQyMDcwODE1NTk1OVowgYcxCzAJBgNVBAYTAkNOMRIwEAYDVQQKDAlNYWNhbyBT +QVIxJzAlBgNVBAsMHklkZW50aWZpY2F0aW9uIFNlcnZpY2VzIEJ1cmVhdTE7MDkG +A1UEAwwyQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5nIENlcnRpZmljYXRl +IChNYWNhbykwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCq1rn5Hup5 +wiRZ0ld+K5NDTwSayaZoWLJ/hmM8MjYMUYCWH/pXrhD0WvSi5JcT5Qgoi/lpGX47 +VrkaiMUeqFQEPMOzAjMWNVhk2VPbr7jW8mwO6koU3zI/gGYtfr2CzqJ1OtzuDwY/ +QKaiAdGFiMgQom3m2xoBk8m9Zo7LG6BYso6f3tGm27T4s3iirO/ZX6bwt2Pvp9Nh +vxyga9eoPZVHN5pYYd7LlauUj5PQ1AB8IvtbcPhTbtDmgUQAxye3uy++cMGJZPnc +TN85x9S2Ama6i3vGP2J4KDgGdq+4FxHIcty6A/HEwtBy8SrnQQsqoxny5QndV4mP +VUS1Yg8PLxaKgDor2wdZUWZpu8tguNRrbJpIQYoq2qfHD/1HYV5I1XUH4XzYTqzf +3OsciP+VNwv45HviBH2pNJshmTBns/IA56Y0477x0ZX0EoEuQdcQkPNt6mcG7kOT +fjSl6d9lWPu8EDNil2LpJ/fkJBsoa1Qgq4VJQ9XkWWX9EvGU0VQA+DJrQl3mfYxE +x0gW/c5kPF4SAzKy9VncZTjMOIqFbMD0XFM0uFMv7p+tSStJVxvoBgs61pv3im7c +sBx8jFekJM4BhixcNpGMRbEHm1YZ9TMODe4pppnwlyrNR2nQ8ubsU43ONrmBAa1T +H/wErayvsg7UXLUa3ya2Iaq+miwKgJxVDwIDAQABo4ICJTCCAiEwEgYDVR0TAQH/ +BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFInWgC6pUEVzu+W6 +ZXap7BJAsL/2MIG1BgNVHSMEga0wgaqAFInWgC6pUEVzu+W6ZXap7BJAsL/2oYGN +pIGKMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScwJQYDVQQL +DB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMMMkNoaW5h +IFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFjYW8pggIA +8zArBgNVHRAEJDAigA8yMDIyMDcwNzE2MDAwMFqBDzIwMjcwNzA4MTU1OTU5WjA/ +BgNVHREEODA2gRRlcGFzc3BvcnRAZHNpLmdvdi5tb6QeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDTUFDMD8GA1UdEgQ4MDaBFGVwYXNzcG9ydEBkc2kuZ292Lm1v +pB4wHDEMMAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANNQUMwdQYDVR0fBG4wbDA0oDKg +MIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fTUFDLmNy +bDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9DSE5f +TUFDLmNybDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZI +hvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAx1wZmDHsIR+DtljHLb9kD3 +Dpi5TZs/hxlBc6gT6B274vBlXvylH/z5zD3YZ2eXtmBpEJPMlkBgjaDVrDmQaEfu +lOOGE+34OJQMQqLY7CYK7/+/0Jbm5qDMvhb542jX6KD3I2SZxkFMMhAD1tDqNZ0B +srpGQSgBljepVrgD3RO0K3h8eyFQ//3NKM0ei1UbvGIgEOtUIgwLKowQfwobnwDL +0nXY7oL7KHLf33OyhUNzQBsx50CtxcJkDbiShhG6IIwQe2qlG7yPUwfJoN2ZzjB9 +8gQLkAszQCwV5gtdmy5vig5dlHDLiFBUonuAA1xtdppKcnTlanwzStIwf+DkdWMy +hY+W1HOq06cdOkqd+3uEgGqBJwLoOtE01K1gTkon7CfX2hcDbS5bxFryfnnuwlSE +csJ8/F7Y6olwB5BP1RYihXJMMNv4BzQ1APB4c2H7fyzCi32NhoBjPuTQ5hqnKJE9 +iMSwjaIoopbvLOI1hMTol2raCmpUeMLRvLtR3XIF3/EhRcp2+Qr6RZ+VGUZ3mG7R +I8QSXkk9JbPtDpv2U0uvt5vKQNW72zbme2uekaBXQppZ0HU93G5LsD5t0fwSFQfW +99aXHrYQjH0eltAR4A5goZY9YnzZvVtES0c0+mHs632Ao74RyWEBdOtHtBElrfro +Gpp3Uildet3TRaThHYDG +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIImzCCBoOgAwIBAgICAPcwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBOTEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjIwODE3MjEwMDAwWhcNMzYxMTE3MjA1OTU5WjBwMQowCAYDVQQFEwE5 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALDxejKMY/ZSX8E1 +K4BbQ7Ardrjc4aVlAEa5LCg8InXrU79rrO794yeIW9OPEIXydi25FkUvmEv82LQu +bJUEWbIhDwLweWy95XpUZWLcnO+NFpGIqRJKkSR3i3LK7kmpeUxp9tIJPmYn1b4/ +6QDEtLqE2RaAweHJyOhieGNcY2RHQKT53tojlIUD9NwWEk7iQ7DP4HrDp9kCcgGF +eVkgPDOmC7IrVVV1gj+MMrS1Tqxdw2cjXU5trL3FFgUrgvFTwv9AIV3YFbUubufk +888BY0Pg45HCOLuSwbl6CmgNs+5Y3qKn6s0xYQWKz4RqbBQ0J1e63RRsys8lN1tB +a5FqN3D1bDSamp6JfVSaIBQIPvvsC/A5bqyvRfEWPewz9PN8NlLaMh4rZNm61lYv +y5Twjd7cVFp9iCIQFRF/Wi1bb4XD6bkvSJ9ph8tzk5Na3dqkCIS9nJP1j5Hm9A8J +8PrfnkRE/sI4UF/UNt0nUg3tuZEp0RN2CnQVJ2LK6aJmR23Ic309PvTOTC1rP6Pg +xqJsDzTmC13FU1hFCf4mJF6PXUHZAT9/+O6A9/j6S/FAIt5ZkyxwWCqjy1D0ssUH +tQ87WmVOsdPuEqsj4lz/gwRD30F4hv21ZFGkPWTz3n/m5kLld8Hk7zHK4n4GzwIR +bRCw0VtmoF9P79dkLBSeYEYKiM2JAgMBAAGjggM9MIIDOTArBgNVHRAEJDAigA8y +MDIyMDgxODAwMDAwMFqBDzIwMjYwODE3MjM1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFI37bYzK0ruCb2o9fXClu42A6fN/MB8GA1UdIwQYMBaAFI37bYzK +0ruCb2o9fXClu42A6fN/MBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgdngQgBAQYBBAIFADBSBgNVHRIESzBJgRRjc2NhQHBhc3Nwb3J0Lmdv +di5ncoYgaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYD +VQQHDAJHUjBSBgNVHREESzBJgRRjc2NhQHBhc3Nwb3J0Lmdvdi5ncoYgaHR0cDov +L3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYDVQQHDAJHUjANBgkq +hkiG9w0BAQsFAAOCAgEAYqTjzevRiWxrn6Xhpgw0Ha89bu/yMyxRvVTEKiPEstvB +s/e7PcSit3ofEPvyVFFdjUP6AnwDxIxQdtfCC/eW9SJBoT95bUyE3vVpPyXNruO8 +j34TWU7O8toePF4mBFHZZVuUNwHUo2XBHrVHbiNu0x5PJ96RWA2fx2G/IOUZveM6 +uWlZ/okaJ24fOj9zievdWd2tWqZJIkwtdDwplgLKfcAAipRAnd2FQxiSWgtxxWlv +Y6PGgTaAlE6Xlyp/hhUmIQ2HrYULn/OEnAy0tTi4b7qUylkaMlVyA9mizhCzjUSS +pWH+DPhLLIf1Q3uRdSIY301Gqq5ONO66gVcve0d4JK3FQbP5hI5Pv7ZUlxGU8DYX +A1bGLWK1IyU6+TvZkV4qzVYrz9/2dpb9k4KqS2s91/BxTGLI1MAX48a1gGr8wSGU +UwRbifZve2x7A72xi+4ssjZbhiES82dsDAF2IatosUvxuGdV7NWNwQ6mSTzvqWCq +L8f0t4SkXnPfBKaeo3woRaSPzQLiawvYeEHlkW8MHULevCTxoq1GcL9EAOFTU4zK +LtdI/TgHhKRMLGcy1WFcAdj6/qDNexGTdOxZ89hZdU22+EVC1/c0HjLkp3v6CF4o +zkJNdBEHwBSJmhxFs/LFHyi23Eoe/Wqafr98YLbhGKFGCgKcpBfPWCrZK2LXYKM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICljCCAjygAwIBAgICJ1swCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAyMB4XDTE0MTEwNzE3MDAwMFoXDTI4MDcwNzE2MDAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDMwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAELX+Bpegt/csaktDAp0eDH/HCIaiw9/vSHU9qpgVWYLsZ +rmUB40RBAMFjKAb0bwDDsbt2lTMcdsvpwTLlIlqwfqNDMEEwEgYDVR0TAQH/BAgw +BgEB/wIBATAbBgNVHQ4EFLXiPTuhAqd7d7VbDmrTe46dQ00tMA4GA1UdDwEB/wQE +AwIBBjALBgcqhkjOPQQBBQADRwAwRAIgQC+neeX6Zodsyxg/Hpg4ESab2OKjProV +GwbXchXktYoCIHtwrZ3kztheDOGslDL1Z5m5QF+5XiFQKnXqAMZwgNeV +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICljCCAjygAwIBAgICJ2EwCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1vSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAyMB4XDTE1MDYwNjEwMDAwMFoXDTI5MDIwNjExMDAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDQwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEgDXw5TsxtdZ4wGpqt+W9/EjOTDhD4BdKDzARs570VVVD +Fq1myy4ptRGfWns8W4BYUSjXPLvxXY+OQNxUvMAxvKNDMEEwEgYDVR0TAQH/BAgw +BgEB/wIBATAbBgNVHQ4EFI+9yu7WaQYyeCdXtByAxR1zIDdXMA4GA1UdDwEB/wQE +AwIBBjALBgcqhkjOPQQBBQADRwAwRAIgBoxKs+ZOsIH/32RMYpp2Lm7bdhnjeq5c +CgspOpRB9/4CIECksSGeZpuSRl5/YNT7YpFyrlG1Tcqdrgrobu1m2MuK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIClzCCAjygAwIBAgICJ0gwCwYHKoZIzj0EAQUAMEMxCzAJBgNVBAYTAkxUMRcw +FQYDVQQKDA5BRElDIHVuZGVyIE1PSTENMAsGA1UEAwwEQ1NDQTEMMAoGA1UEBRMD +MDAxMB4XDTExMDMxMDE1MzAwMFoXDTI0MTExMDE1MzAwMFowQzELMAkGA1UEBhMC +TFQxFzAVBgNVBAoMDkFESUMgdW5kZXIgTW9JMQ0wCwYDVQQDDARDU0NBMQwwCgYD +VQQFEwMwMDIwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fb +oe6pvD5mCpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n ++4BVwSbcXGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+M +B7YEQQSL0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hG +GhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3 +kB4OgpdIVqcCAQEDQgAEINgHC7WdEbTtUXBQE2AmniAtslzgGT/TKB9+6LtTysow +kCnTJQn7wkfTxl2rIwGtsfUsXI/B4ZQ2EpY9FH6My6NDMEEwEgYDVR0TAQH/BAgw +BgEB/wIBATAbBgNVHQ4EFCXrkJL4XubnPkdYpoecHJ8CcfMFMA4GA1UdDwEB/wQE +AwIBBjALBgcqhkjOPQQBBQADSAAwRQIhAIPaaZNui7GAdmJZIqGagkJQ0R0StXOg +PhGudhuvp9LXAiA3bbAohV8AhHjx94/jPyCZNhMkCF1Sh1iEZs5yiH1IQg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDATCCAemgAwIBAgIQM0gfpfWeKIlFGfuX8qWnDjANBgkqhkiG9w0BAQUFADAT +MREwDwYDVQQDEwhSU00tQ1NDQTAeFw0xNDAyMTgxNTIwNTlaFw0yNDAyMTgxNTMw +NTdaMBMxETAPBgNVBAMTCFJTTS1DU0NBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAoEtDxcW15EbUcLkdqqrr2fVCuA7vfuKZAWg8yV7D+eBFYzZSzExs +GV9/bGeq8oGDyyawiz4IC9mn5Vi00c13uWr0KN5hklwevW3Rwbo8t1Dxx72GciXU +dHRXM7mMfoynHuilwInfNuFI6USVT08EJvPgDziAvgKLFcV3RGAGPBtoyly/iRvv +Q2OuIHb8VWwMyyPsCkOSfdZ0BhRQl2qNAHbKdMwXGViNc1XFwDQAiEfw+4AuEqGL +DBsZIDlFzy8ekfPebde/Rh9UXtawF32ijKTeYEZ2p5wg/s4Zo5oAoLYpwiehTk2c +TGjL5qorQuss+KoP1NkdvDeRQbyRyVFe4wIDAQABo1EwTzALBgNVHQ8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUBkKyS40ajJBiGrki4QDxccnUrIUw +EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBABqiZVrUtD/+KYX8 +ym3Anzf1fCFjpaKL9CF6ZNhdC5AIi8rkYRX+P88Wijt+NP1Cq2Rhn9DWqLtWv0lX +Wwvv5xDZ/3fo4HBmbrw20IlDapRqN+DUZaKoypouIo5BhILo7T+y/EV2SK1WyoON +6UWu34n1qww05ENuimmAzzILzl4YcCrrt6cAcAFZxoPYmBBsHSuyjkxpknzgcNJA +MZZWm1f4Vn4Gnf+uwnxjQNY/xZ3SZ/crSNOLp2lzUwsk6NBScL08KTcp9PCtfLj1 +j8YizM8Rq5Gqs6q6FRlveSdMZK/jkZevyvaLl2tEINveZvgnh8Yu+YIGS3Z9bALt +z6VKLPQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDFDCCArqgAwIBAgIBATALBgcqhkjOPQQBBQAwQzElMCMGA1UEAxMcQ291bnRy +eSBTaWduaW5nIENBIExpdGh1YW5pYTEMMAoGA1UEBhMDTFRVMQwwCgYDVQQFEwMw +MDEwHhcNMDYwODE2MjIwMDAwWhcNMTcwODE2MjE1OTU5WjBDMSUwIwYDVQQDExxD +b3VudHJ5IFNpZ25pbmcgQ0EgTGl0aHVhbmlhMQwwCgYDVQQGEwNMVFUxDDAKBgNV +BAUTAzAwMTCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh +7qm8PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7 +gFXBJtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wH +tgRBBIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYa +FGEdycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQ +Hg6Cl0hWpwIBAQNCAAQKORiXBzGDYcfgibSUwDvMoC9fR+0cnsmCkkxaTDrRE0TL +SZr/NuArhT8wSw1YfF+XBnJ4tm2arxa8CPaUPcmHo4HBMIG+MA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDA2MDgxNzAwMDAwMFqBDzIwMDcwMzAxMjM1OTU5 +WjArBgNVHREEJDAigQxpbmZvQGNzY2EubHSGEmh0dHA6Ly93d3cuY3NjYS5sdDAS +BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSpCihKlbJ3oEZhQ9+8RU9zfTna +aTAfBgNVHSMEGDAWgBSpCihKlbJ3oEZhQ9+8RU9zfTnaaTALBgcqhkjOPQQBBQAD +RwAwRAIgTAa0SnYB4kSC2VA5gvu+GY05iFH8xVa7QJKCkmSGJsYCIDHERan+BcyE +zL3IosSsyWyCQNsgzpdvXgJWUBhm1Tfi +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIDAKStMA0GCSqGSIb3DQEBBQUAMEoxCzAJBgNVBAYTAlNN +MQwwCgYDVQQKDANSU00xGjAYBgNVBAsMEUNPVU5UUlkgU0lHTkVSIENBMREwDwYD +VQQDDAhSU00gQ1NDQTAeFw0xOTA4MDUxMzM5MjNaFw0zOTA4MDExMzM5MjNaMEox +CzAJBgNVBAYTAlNNMQwwCgYDVQQKDANSU00xGjAYBgNVBAsMEUNPVU5UUlkgU0lH +TkVSIENBMREwDwYDVQQDDAhSU00gQ1NDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKAvv9AlgcdidjF6nht1U2lQVC0NneYuY6/aEv1MxQCcfXtXNemu +xZJNpGyaG3lOQdyRyw4BxesVeJpmiYwVMdm6x+CL1wVeZOKwj0tzJ5XvXqGvL51x +SXn6Yw6miSRxyo3rA0hacktWE5IB8vytzWHFmJlwaRrcZOTgv7P4nFsGYFwwTXCU +UJynZpR3HHrs8MVX0IsdYuF111RbGEKxhTthm0Qiqp6/qj246Rs2dU0cPgyKA8Kd +j+FDLHtWKqMBSsmmxfozsFs7Romj+lR3gwyetAds852tg8343E0o/A2J8uv/YfoS +l6SI39UWMbU747ZUtSjulQmafzzGwdIuUkECAwEAAaNmMGQwHQYDVR0OBBYEFKH6 +GlgdbPy9BwLQtoWH/rgWtb/GMB8GA1UdIwQYMBaAFKH6GlgdbPy9BwLQtoWH/rgW +tb/GMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMA0GCSqGSIb3 +DQEBBQUAA4IBAQBnslvLaIOqI/sF6p12alu+bGgbaVEjnCCreBPmYWms+8xpUI8N +icuBHmbIflz4tYuRV3f6fqM4w7kqEee3SjZvj4riLh76SRg06iBSoKSdpeVQ6ppa +w7kP+VfEDY+twx5I9rY2Gsmj4oN40Pk/XF/rNXr9I5Une4Up/VvguC4kkjty05KC +jBCD9UTcRrAnw6cHFUsl/ETEPYVeBEaJMapjoXzEmEiqz/Riu0hbs7CF/bYKsrbU +Y8crde8AAIGZ9HL3+TA1sOgDfrTttjJ1hRLTn2nkWkLdcWHAAYwtvha7nIiUk0nA +JNuscJOv/X9lvQaq3ngF3YSkj1AJhRATVa0A +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfjCCAyOgAwIBAgICAS4wCwYHKoZIzj0EAQUAME8xCzAJBgNVBAYTAkRFMQ0w +CwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNVBAUTAzAwMTEVMBMGA1UE +AwwMY3NjYS1nZXJtYW55MB4XDTA4MDMyNTEzNDkwN1oXDTExMDIyNjEyNDQyNVow +TzELMAkGA1UEBhMCREUxDTALBgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoG +A1UEBRMDMDEzMRUwEwYDVQQDDAxjc2NhLWdlcm1hbnkwggEzMIHsBgcqhkjOPQIB +MIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5mCpCdg41ybjv2I9UmICggE0gd +H25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbcXGzpSktE8zC12QQgJtxcbOlK +S0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL0q65y35XyyxLSC/8gbevud4n +4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnCd0UTLe2OVFwdVMcvBGmXAiEA +qftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdIVqcCAQEDQgAESpRJgXed3x2l +58Un4n0kcako6017Z3WuCQpRRRmb1H6ggeVe1KQ/YHxqUO42QYqH/82mEDnKlXZ9 +rsrDRD/jLKOCARAwggEMMDYGA1UdEQQvMC2BGGNzY2EtZ2VybWFueUBic2kuYnVu +ZC5kZYYRZmF4Ois0OTIyODk1ODI3MjIwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQW +BBRgRPJF8uBx1NVk9OV31jZp2+sYWTAfBgNVHSMEGDAWgBRufr6FmOePobBhphJ0 +qE+e0i7fxzBBBgNVHSAEOjA4MDYGCQQAfwAHAwEBATApMCcGCCsGAQUFBwIBFhto +dHRwOi8vd3d3LmJzaS5idW5kLmRlL2NzY2EwEgYDVR0TAQH/BAgwBgEB/wIBADAr +BgNVHRAEJDAigA8yMDA4MDMyNTEzNDkwN1qBDzIwMjEwODI2MTI0NDI1WjALBgcq +hkjOPQQBBQADSAAwRQIgBaHFejw9nAQcqDkg5stHwXIw6rcmh1NY5B8uJh0/MbIC +IQCcChlzjtuNJ6vcFAwVzevseDvoxxTcUi0fIGI5hxTrsQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDzzCCA3egAwIBAgIJAKKt/h1Bz4NdMAkGByqGSM49BAEweTELMAkGA1UEBhMC +UlUxDzANBgNVBAcTBk1vc2NvdzESMBAGA1UEChMJU1RDIEF0bGFzMQwwCgYDVQQL +EwNTWkQxGTAXBgNVBAMTEElseWEgTGVvc2hrZXZpY2gxHDAaBgkqhkiG9w0BCQEW +DXN6ZEBzdGNuZXQucnUwHhcNMDYwNjE0MTEzNDU2WhcNMTYwNjE0MTEzNDU2WjB5 +MQswCQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRIwEAYDVQQKEwlTVEMgQXRs +YXMxDDAKBgNVBAsTA1NaRDEZMBcGA1UEAxMQSWx5YSBMZW9zaGtldmljaDEcMBoG +CSqGSIb3DQEJARYNc3pkQHN0Y25ldC5ydTCCAUswggEDBgcqhkjOPQIBMIH3AgEB +MCwGByqGSM49AQECIQD/////AAAAAQAAAAAAAAAAAAAAAP///////////////zBb +BCD/////AAAAAQAAAAAAAAAAAAAAAP///////////////AQgWsY12Ko6k+ez671V +dpiGvGUdBrDMU7D2O848PifSYEsDFQTEnTYIhucEk2pmeOETnSa3gZ9+kARBBGsX +0fLhLEJH+Lzm5WOkQPJ3A32BLeszoPShOUXYmMKWT+NC4v4af5uO5+tKfA+eFivO +M1drMV7Oy7ZAaDe/UfUCIQD/////AAAAAP//////////vOb6racXnoTzucrC/GMl +UQIBAQNCAAS3RJNvWLs/ot/Nu7sGVOaez+/eV/pfnw6EZ2sKhIKNXtpltI4fxNX7 +HhL2tZKTCA4rOaPYEqy3etoWMsNfhGaZo4H0MIHxMB0GA1UdDgQWBBTyC6Tyq77u +XmQ1k+w1OqtoFZ8nhjCBqwYDVR0jBIGjMIGggBTyC6Tyq77uXmQ1k+w1OqtoFZ8n +hqF9pHsweTELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzESMBAGA1UEChMJ +U1RDIEF0bGFzMQwwCgYDVQQLEwNTWkQxGTAXBgNVBAMTEElseWEgTGVvc2hrZXZp +Y2gxHDAaBgkqhkiG9w0BCQEWDXN6ZEBzdGNuZXQucnWCCQCirf4dQc+DXTASBgNV +HRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAJBgcqhkjOPQQBA0cAMEQC +IFeZnz4z9F0ULu5uSFbfCFpGBKXO+s56aCt0HR5BeFmbAiAaxhras4nYS9MbPRka +c8LzGJj2+zEwJUa+ecxePVAMmw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEATCCA6agAwIBAgICAWAwDAYIKoZIzj0EAwIFADBPMQswCQYDVQQGEwJERTEN +MAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMwMTMxFTATBgNV +BAMMDGNzY2EtZ2VybWFueTAeFw0xMTAxMTcxNzU3MDhaFw0yMTA4MjYxMjM1NTZa +ME8xCzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAK +BgNVBAUTAzEwMDEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBtTCCAU0GByqGSM49 +AgEwggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQS +sdoZf7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5P +sieHE5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d9 +4Qfc0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9r +iEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VS +YrcLKf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q +5kHfFS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUCAQEDYgAEXRVISEwi +katMRXAd9/ALIE/7cj9eUFWH5+3NzWJpVOWfxfv2QYgAB+cQaBCmPaFkZOvQMyxk +zpCTrrrU9KiR26YFuFfPD2/mbwPmbRQe34uVKph4KnBONjGo8tiU9XTmo4IBEDCC +AQwwNgYDVR0RBC8wLYEYY3NjYS1nZXJtYW55QGJzaS5idW5kLmRlhhFmYXg6KzQ5 +MjI4OTU4MjcyMjAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFON2rmYS/nqB5nIs +UThb2INJD8OiMB8GA1UdIwQYMBaAFGBE8kXy4HHU1WT05XfWNmnb6xhZMEEGA1Ud +IAQ6MDgwNgYJBAB/AAcDAQEBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuYnNp +LmJ1bmQuZGUvY3NjYTASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIw +MTEwMTE3MTc1NzA4WoEPMjAxNDAxMTcxMzMyMTZaMAwGCCqGSM49BAMCBQADRwAw +RAIgG8USDJB3yVRSSsIN3or2Jafw6DohJn1na3k0Dtg2zEcCIBh0B76tBN9jwthT +vzCE6u0Ykw4PxMyXlg3R84Rqpr5P +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFTCCA0mgAwIBAgIBOzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwVzELMAkGA1UEBhMC +Q1oxFzAVBgNVBAoTDkN6ZWNoIFJlcHVibGljMR0wGwYDVQQLExRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEQMA4GA1UEAxQHQ1NDQV9DWjAeFw0wOTAxMTMwMDAwMDBaFw0y +MTEwMjQyMzU5NTlaMFcxCzAJBgNVBAYTAkNaMRcwFQYDVQQKEw5DemVjaCBSZXB1 +YmxpYzEdMBsGA1UECxMUTWluaXN0cnkgb2YgSW50ZXJpb3IxEDAOBgNVBAMUB0NT +Q0FfQ1owggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCkpr7fpZae5WRx +FPPmEMq4IseyEJjmFWzgc8ym2lEej5q2ob0dpk7WsFmCJMmG7xATsHnFQal4ZL6x +PW3mOpCjWEjwi69ZlxuWZx+RUxTrYNr7GeAZnFogfWBwPdASvrPBzqF+zUAMYCaq +SJDqxcMR/yeSh9LnVBDQrve3xLxjoQZ+/EkDGsZjkyOx2jAsH0DVm06QDF1wpS6W +FHxph6iifM0c8gQ0X+RJdNxm/5czHCqCwbvH8h39M0D1S/0ME3FfGoLe33ROOoDM +6iyGTfe397zWhmclSlGXcFSaK536+8tZuMl4SimY86oItOgrpMep3lbt1LqzbbV3 +/Tzaf3pKDbtFGHn8+r3FH927g6kdUhtQFmFQSMe6Dk02F35h9Ji69Qq/ZWvxv7fF +m+EjbigUTONmFVxFM2EJHW5ysDXtqQeqatkCH/bpY2CaZpGLvE785kc8sMVEWS57 +gbju+imKqjDprU0CJ+VmYO3/T0VT4h6/wF7hPVVeJrZcyOG/pL0CAwEAAaOBgzCB +gDAfBgNVHSMEGDAWgBS0gZn17JDaPw1vnzp95+DBdZSWLDAdBgNVHQ4EFgQUt3iX +GYCCeBtZDErp+ISwi/YCQIgwDgYDVR0PAQH/BAQDAgEGMBoGA1UdIAQTMBEwDwYN +KoFLtxgBAQEBicqZfDASBgNVHRMBAf8ECDAGAQH/AgEAMEEGCSqGSIb3DQEBCjA0 +oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCi +AwIBIAOCAYEAOhnPf21WrfiaKeOScQOGIDDXvkGYwmlNRqJbuw5echZnf4SnDNDb +trQ2QuV5JCq6wOl6ZV1lhPBVBEk2Dx7NYr/689EDeXMg1eA051kCWzcZEU0ho3AL +vTY8luVh5OzwkZ3sLQeyRmId6TmubtAb34MPkafP8KGayYG7UZ3H5KAWQT/ne5WL +3nVYyaPaqIjAQOzbSJ3ZCldPI2qpaWcmXNu2t3k5DVBkDCZQ7K0GgkyojdSj99Jr +7PfmgDGcR/2B660sru4S3eyx9xAVMip1CfnPSkzI0uDBePldAEi5BisPYKm1NlnO +0rlgJaknSwEV8cLJBj8wjmfPN+JNU2kSYIuad9KiPypPC0kOPb5DMlY5GwoW1b3L +L4sf09MU3p9F7uWyHgeCJYVnMrpcaH3pprXgsu3+gMAUS/IvC4TIqfGPfSn6cK9C +7i3eMgicGhINEr5RK9U1Qgnc+feaNJtqtWo/trk8D7jsUAqYf3qOwCBMFPIo22SA +oe9h7nS3yQxN +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmjCCA4KgAwIBAgIMEF1/elp90uRtaO0KMA0GCSqGSIb3DQEBBQUAMEAxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEVMBMGA1UEAxMM +Q1NDQS1IVU5HQVJZMB4XDTA5MDgxMzA5MTkwNFoXDTE5MTEyNTA4MjUwMFowQjEL +MAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQ1JPMRcwFQYDVQQD +DA5DU0NBLUhVTkdBUlkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AMEu6hzbxI+Pbl3A8QLlSJphHLwz/da7h8jUw1zD80pTACZ0jC1U/E+3NUNnokvx +lPcg1QCiABaYKZkuZb690NWM4UuYoxv83mKDJXJl2ua/M/pVRTlBvhG8cmPCzhFT +D/HCOd3r1Ob/L4goeONQzTAw8cfcAbHg8h8vmIoJB+PMfXGUKt26mmYRLt5A/e/P +CC61nGlwqVCT+7f5tOCiNNgfQkME7ZdkTU4gWLIcJelbvRXPyBS5qjTUY/K0ocn9 +s9R17ue6SU9tXZLB6SjwpNowU4Pd3jx6uuXZ4KQwp/BOXPsZTWhmu1O1EXXj6JF2 +H5gL5CiuO2VuAwoF21tgi2Kd94x2OKTbrV1zxfwyHWe1+yums1huxKFBRjr0gtlX +cYYl+GQRwC9COTKmsyZfyRrGl/Ymm4x9PLo3JLMEkz1PpOj6tMMjQUgcXfWg57un +0emL99TDTcX62tbhGKjiW/4AyrY49K+YuphRCZSEc5APe+JKkS80ksJ0QSURrtaK +f4JIHlwaMjcgksFcNxZqOcRyIS0BBNeIZkHoXCA26BS8oxN2zBtQrfTRo7VnRxYM +M9M9RNtTQojjpbEfjS0GLzKHl7DKWYVfnR64NwKkVXim5SMlR/fexZqQd+/fDNUS +1a8rHOH28YxUIM+Zm6Z5Og8WMNT5h+1dznzWEfcGRCYNAgMBAAGjgZEwgY4wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPmnrmsegMC/ +JBanHHvW0kN2vPsMMB8GA1UdIwQYMBaAFNEj0ErXeRPRUQHppNOQWZ8Qnb8NMCsG +A1UdEAQkMCKADzIwMDkwODA3MDkxNDAwWoEPMjAxMjA4MDcwOTE0MDBaMA0GCSqG +SIb3DQEBBQUAA4ICAQAhD0YTNz99dcBQnjfbr1WEQTM5RNvHxeDUTRCwkoehWkMT +Ik8u51ThrcHvplhMNOap8ixYCBuCneTFGE1KRLjYTH9GN3xAUxsjIsWHRvBduvK6 +19HQfu9nKudODSykatwcgdRJJLcUYUj7LFzeDxEaYJiClFHKRlBYGnIhP2TT5/kz +lG5xtmRI8QFCI7kSo2IBBmaLqM005dAD3kyjmJzcsT+yKgoElCn2mbA1LI7Aajle +I72Ywtl+Y2NZaSGaA2Dz66kvOe6lzCtu1euVPCI2191ReKLvUcuIsHwK0/G/nRLF +bBpitQZzsA1IR+RijeyYQieHaxCfm6e4cO6IawH3V5ynSpTFv3YEDBvHGutiUSCI +RcxD/TZj29RhzjffCJRAFO3fZe+xkxskLeNZYtZs23genG7ok8F/4QYX/aCIQxvW +RUdb4FH0PNpYyjDteHU42nZwCPnTl7ZX5caFJB5opyR4XnmgRGenyNUGr2xPwgwx +211rwcXBpS5gaq6nitYaPuSAsW18apdwu3cMB3P65aZPgTK/7HK5cjfanLPE3AWL +epR1Iso4b6b5pYf86WBmKB8aomFXw7Mmm+SdiHvf1AdS5AkzVKhfZUE2m1Hi7oPI +V1tPATWMRFNDQTZTNsRigrqE8axsQFCOp+MTTrrciEc7QgGwtIplgZ+7LaZuaQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIMEa3WECLSULpE4HgKMA0GCSqGSIb3DQEBBQUAMEIxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEXMBUGA1UEAxMO +Q1NDQS1IVU5HQVJZIDIwHhcNMTIwODAyMDY0OTU0WhcNMTkxMTI1MDgyNTAwWjBC +MQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xFzAVBgNV +BAMMDkNTQ0EtSFVOR0FSWSAzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEArzkLLIEOqV3Cjj1mf170aEOxWCOnoWa3YFOp9l32b1oMWqAcxKRUYyrClba7 +/XM8BiahXNjNxUnZ9uR9y1ZFPkV6xntU06O0rUx+yq+kus+SW/tnX05iKaqSil4a +lAfg+DMtK0BhkxlazjlD9YuY5HlcV8ZisYfJ2eep36GdmzIyEBYLZCY4jFGcmD+O +4z6ciRGKy5ngMrlLFBUOFqZs1UxV5yhbBE7EKQS4OFdrVPqypM/939Mdw/YP9uyg +xEZ7NK5t0yPy/YjWPU2QeoOxriHk0KUv+WbcBAFewZGSF7UuouMHFcqF9ll9vAi6 +M0wbeo+dx3TBGLfA+3wQXO9I/VcgNcz4wunR1skg8djhhCwNczcNzJNZyvd6vaXb +tkPwhZS4rTNqihaKoG7PT7qVsz0wOEy9543NNRxqaoegqHIuKVwIr0pgAjbSvduX +BgrGCBdgQRXy1D2/GPqZ6oNlQ+ycuB0BB6JgNXOTsD4J3a10mrMrFaHovkP00g2f +5j37pV6ODlCUXv4AWIQhJvNJta93VWgRxwu595cEJx91LUcCoRZt758o6uz/LBkd +CBLES9XAIa13YLlMI+2KVAo9I1UKrT79qjSYcN/TZR2S3VppWU5m4Og2cPrnZkv9 +z7OhZgRmf0vd6V8N0OfQQNrkTGS7il0gQhXxl1Iw0UGv1OkCAwEAAaOBkTCBjjAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUMP4HBcyF +aBtWbkW/jCsOZCKC7BMwHwYDVR0jBBgwFoAU+aeuax6AwL8kFqcce9bSQ3a8+www +KwYDVR0QBCQwIoAPMjAxMjA4MDIwNjQ5NTRagQ8yMDE1MDgwMjA2NDk1NFowDQYJ +KoZIhvcNAQEFBQADggIBAIJ5yR+xKKy27JewUzqoS7M50XFA94+Lm3QQg0t0KuS4 +YSguA5VbS5ODLcFJkM1THLAWRu3I3PIDheqxqqGnT6cNgKqNwGk0qNbCRjM06fFB +L7WC40pbjB/J10AVbheSCNprrbXHaeLmxDAqE3WplINjbhjrkXqO1Bq3hFqOrC/a +sZZ/qMeF6jJARo6Ii+Fpblzdz7EnndMR10GHx5F0JAYveqOZ3BDRekNfvZaX0SL2 +UY/UBzCL2tlty3Lt9Tz5zekz7pzSOSNv6hoJJ2aoSByGnHVOafSVC5iiL2Kkuboo +XjM3OZeKRQi/zyUPRdvX5qnl1psKdJEyAbJWHC2ZK/+Bk0aZhG2o7iMXKrUJU+Cx +tSpCWBEhWTm/yCaKeg5A/axQpur7oy8JF+YHUw0/KB61yqd/Fmws46Jua+PxTFbc +Mn/Bh8s+bJ17SJyxjl5lpKgQ8+feiE1ZkQgARLNmIQbwMEHRfDHhFT+DcKj2YeER +B/HrXtAirwrlewn8vcUtpuwH2lcQ8o7AhsBkINmuwCR85UZFlYRWluk6ocJVKR+L +0WbdLcaB1p9VQjZ8Q0fiZIxcN04zNHIMelVxCtveFNsUAhrQggvVScbHKltCwyYk +ecsqkv4eHpducYHKtV9nzCGKwyDhknXtTqlFuMc5FWNswLcLMzZNoFZCNflDJzNn +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnzCCA4egAwIBAgICATkwDQYJKoZIhvcNAQEFBQAwXTELMAkGA1UEBhMCSVQx +HzAdBgNVBAoTFk1JTklTVEVSTyBERUxMJ0lOVEVSTk8xCzAJBgNVBAsTAlBFMSAw +HgYDVQQDExdDRVJUSUZJQ0FUSU9OIEFVVEhPUklUWTAeFw0xMTEyMTQxNjEyMzBa +Fw0yMjAxMTcxNjEyMzBaMGAxCzAJBgNVBAYTAklUMR8wHQYDVQQKExZNSU5JU1RF +Uk8gREVMTCdJTlRFUk5PMQswCQYDVQQLEwJQRTEjMCEGA1UEAxMaQ0VSVElGSUNB +VElPTiBBVVRIT1JJVFkgMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDGXsPJRlMg3HlQceZTUPOnYMJ0JzKQtr6/AB/ge2U0+0wew8UxRdftGf/BSke3 +HwfPf+zxxz3tbQE6MTfdekkHKt0YcLZtC1idj62jWZnDqohRGe4AhOc5YeaoT9nv +L/Vpkf5J/KKRKHAJGZJWZTVqLVeeEMdosdwSDjpevf+e66RafJDcsIYfGE3wQLop +mbTDFr3mm9Nl6tKSrJnsN6BeoMTUs5ErosJOjAOFrx2OIqJ8SRzuQ0YwszJv8u8a +z/cKdoL5Hpmeq2dJV67uu9fZeq71kx7tkiJHUAtMId24/HmjQ5AUnmYpRbNGghO8 +T09WGcBE0l8F/5/6I8QdS1G59kfrXKqXXWPnmfaBv8UW9TlZmqK9H7MFsgdiTBTB +XW5CmPXHIQp9xVCKJ0P0tyJlrEnMVp7Lh3XiVF6OvBaCo7/WDLyuoUD5lJbfzbaX +hu5fdfBddt+jkHJW/5Oe3F4uzdPklBqdsE3ccjTj5A5R4WKksPdBwHymE24RCajk +Xsv8PA9Zwjq4MAKfsVq1pgIA7mVG/zeSM1wHJ3f4/i3cAsdBb3wsALcy4jRBtTmU +La0y53Xt/Y5m1YLr9+FrM3flPEjfHV0JOTw8Yr7KDKVPYZQ10ulCvtr5h1Tepm9O +jqa7DLh5Mcv7FTsGnP5vCiqWXfktswXFNOR8bLIsH/HZYQIDAQABo2YwZDASBgNV +HRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBSwvzu57OvHIJdMHROlkFoaYTWJoDAf +BgNVHSMEGDAWgBSg9WVSGAzLzA/9fQ3zn4YEx8mPYjAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggIBALQUbgGRxTjMLeamN22yUfKyxtPLP0ZYWNywj5ES +GkvRxaWLKMGmxEqOSGUtdlQeAz+le8f+dFIiXT8PMqh75GufZ3pNAfkgSXIV6Ko5 +QyFR5uXPDYP9qq8fhWz68LghON74lTYkJw4PQxMfmmkTXZ7s7LW55bdn00puBulL +evgVyYcO59fwJBfLBJA2iuvqg1qFgM1g0ywRW8y477MFjl+YLBuKqjFTEw6FMEvO ++edBwCCVMy5pnKk+jrtxqH8hWPixLShQwBYV4yKg4WlaJT8SlTuRD3wzjtF2iNT8 +ons6apXiDXZ0qusqs2hVV7smPDA/kgMIG5iz4J7AceNne3dWGN1FE2WLy2Zd9Vuc +kahRdrWd3lxRm58eJ+xmi4fTI6cm/6xr34vdomdPUhw7vEIxBQWxMKPsS4kaCwd/ +Ey1Cj1Tal2wGvHbXCzkmkJxhU8fm0vbwGVSfvizHX4vuuWGEnt65uj72SuFArUSn +wM4XmYOTQ/oBNNwzV2+NB5G1zh8T7X+2mTlWOgPn2YEgqi3QZYrINqRlFSf8QJ4f +gYEYrVClaX7cP+RvutXeKKE5lw38bSLroH0VAZhOzfT+LI079yW3wCvUgHdEWhK2 +phpnbrfXB9tQ7uiI7tHbIQ7HOO4Afoph+guN6tSlO1pJ8KMwbqulEa4qXeZGyyVq +x6iB +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFozCCA4ugAwIBAgIERIgx8zANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJz +aTEbMBkGA1UECgwSc3RhdGUtaW5zdGl0dXRpb25zMRMwEQYDVQQLDAplLXBhc3Nw +b3J0MRYwFAYDVQQDDA1DU0NBLVNsb3ZlbmlhMB4XDTEwMTAyNzA3MzMwMloXDTIx +MDYwODE0MDAzOFowVzELMAkGA1UEBhMCc2kxGzAZBgNVBAoMEnN0YXRlLWluc3Rp +dHV0aW9uczETMBEGA1UECwwKZS1wYXNzcG9ydDEWMBQGA1UEAwwNQ1NDQS1TbG92 +ZW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMsSVO/FzJRD7Oee +2sHwLZ23Fm/FJEKcoEcIPElpAcYccHNcjWBbBzo1myqr2rWkhcTNg5IEOqCOMExV +F/8K/NRcTDeJ+pfOr1DgSaaIXUJfyzF+bqWznS4ikksHkEMTuMWytgxDY41qFkwx +BrzXU6iEN4qrh/AnBbdsnOZAlZ9gy12aKNdn+ccuop7Kit7tSEqSyrNdadAv8AYF +v+UURBMhjOpw6cEduL9gS7E26RVC6N2Sa4wi0xYgFN5kEvtFYXp85a0qUXBg6oMm +7lXjPq41so7tJ8ccMnL7x1JqBsYVB5+ffyxaVtdpZglxaIYFhf/Uep5RhcAbW/So +bp8tV5PzUZcc9MqYuy3Y4jAPcIjbAEJ/R6L9UmQn2xDagD4r5iVUP2evRTNOIjG3 +FIe2uHEPyQoL4y119ar8zpbVONAI7z4rMjmiMIgCp2noXpMtquHgw8gRL0OPzALu +sOMJ4/9KVqC78Gie4j8BUAJJAQQMO6qKcWGa0cybf51MuhC/2bjCf9fy/WPDRSqD +6UyD4RKAt3+wImvy+eXsaOeO/6Q4KidNSCdJm3s9fbj4yBc3DXiPlJc/BjPwnUr+ +R475Fzrun1OW0Omkp3GX3L/squ0s21d5LvL6AlJHaeeTm5s3hTBE74PDKdsd/u7x +031LFgm1S/TddqPjD3nV2GJ9W/EnAgMBAAGjdzB1MA4GA1UdDwEB/wQEAwIBBjAS +BgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdIwQMMAqACE9baIg26OenMBEGA1UdDgQK +BAhFwCRYvhCt0zARBglghkgBhvhCAQEEBAMCAAcwFAYDVR0lBA0wCwYJKoZIhvZ9 +B0oDMA0GCSqGSIb3DQEBCwUAA4ICAQBPaOnrntHJ4qQV2OZb/JiovOht7iSdRQNr +vSscDFqvFQoJAoy/9HutzrEUKCN49gmCraUkLQqXBFUb6uvs0hNCwaQDIh1/OlJM +qZzjnQWrOGZBQ7Ghdy53PhyVsiL/L4a3/O08/R4Wx9RHaOX3G2EWoLyXfkzpF6C6 +LCtOQyysl7me9EhAOd2KMoTSFohHkXUb4GrlBNQ1zqcllmZYopiv8PsyYs8/doLf +/q3of2KLS+WRhhRm7y5LZN33U+a+CiUTNsD6oMjMtVXEWePXyLBEMVK0IdG8b09i +u/nRGmDjnE/T6tAut1sOWrIr7xUroxwiCL5envlTHVqhE+T9JRvLD6bMXfYNDugw +XDMhp8JtZtdxmcQFrKe5BOmkp1uqjLIzPekkMn8jiVwzWc8JHhFLumJdLCyb9M8I +eWkmg5il7MUt1laI38Tg27XNxQBSRq+btDoAftDL/QFdU0lF1UWTovgXUjahf/Zf +fjQHhOodD6uYbS2d3DRoGmmaECN3gutpDZkzFPimU7ErvKlqCY00wlDUGWPBO3mQ +/4Q9VG9TITEsVXyD1h94QkZIThOJSAqo83THwRRwOZGKuff7dMwV99HbTCbcMHHz +RZLU2e2R5j3H9lSaJQGOWrCZp5KEGViG9T4o7fIDbMV1cprYa/vvKehmpMTp47Y0 +Lh7DV9YKfg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFqjCCA5KgAwIBAgICAZQwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCRUUx +EDAOBgNVBAoMB0VzdG9uaWExJjAkBgNVBAsMHVBvbGljZSBhbmQgQm9yZGVyIEd1 +YXJkIEJvYXJkMRAwDgYDVQQFEwcwMS0yMDA5MRUwEwYDVQQDDAxDU0NBIEVzdG9u +aWEwHhcNMTIxMTI4MTE0MDA3WhcNMTgwMjIwMjIwMDAwWjBwMQswCQYDVQQGEwJF +RTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIg +R3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMTIxFTATBgNVBAMMDENTQ0EgRXN0 +b25pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMhrF01zTAiosN+9 +4GaADAJ+kaI9OBrGPhruRXAhOtDkGuctXP31mk9DiImV2A+aKuulQ3Mg7KG6p9ry +de8OdjMKJ3Ej4DUyKOczofI8mluUxs3TOytjX/cLXinhQKdokAA1YnaaHgWocBzr +taWfMs3WXSZ5SqqPEyqYBOAEs9Sa+r8pxyc7mAt40hbL4dHxD5VLO40tszkiA3TZ +YLLNorz4SiAFMzKGU9HRxKTqNIul9EFSm6IVcdty5b9sUeYSHL4b+Kv8jTRRsdxm +MT1LBgaeL1knneAN3/6eVCJVMhwVA7gHNoM/cCDW6Dm/XKd1rgFX6TLPGaL7m9Et +6WwPAO1Uispn+fDnZvX1oC/67hwQXEmEveZEF4TcIXUuA1HDr6oLT5zf36rKTDYg +GEegdaXaBiuxJTXGmu29rrMC44F0VcuaMfj9zxClDrmsj2jNlFSb0XQ2TH0A/IWq +Q0vZk3ttHKeyvCljoMf5ipzI2KJ23+Hf+8S6f8gXJMJlyYPbzrnpA7c+E/q4ZHsO +cyzaXifJNhgTcX7S1D4Rp7K1QowdRisyiVzJ3wURO21laCxH66v3wfeZjwcQ2pBU +R16dB5Pqb6NkcOAylL+lmpLA8mOWr6N2cEGaPYpHiSgGNdB/unxhvHELJaoYXUJE +1GfST3Ge70mNdlPco14Eaq6Ie+zdAgMBAAGjTjBMMBsGA1UdEQQUMBKBEGNzY2FA +cG9saXRzZWkuZWUwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBReeJpls+EMIHbq +/61AsWaU41UliDANBgkqhkiG9w0BAQsFAAOCAgEAX2Cxrw9Zelhb+rvVvRZnQ5Dk +/kfHqS8iLRG1w9KfsCq9fP872UXtW2bxi6SenYnYgUWMRI/vykPO49RlefuxK+VS +roJuxbLBb3S+86rQ+S2j+lPSK4lLNr3DQ0rOQ6u6I602ZLrzuKa4EpVZIfhRgg/d +WlLbc9fXCjZw8rbd8p49lYl2HAP83nLpDEfpz8l5Yls024tCh89UN/cZ9zZMGwtV +7qGjxNB9R7u46y1mK+nwxdMjmNWSoYk6Pb6qrlsIHkUGIp1W7fduxXIEJxPGok5+ +j0WJiOwDElTOQsLa4iszQxKPFM7NXG4QFAgLm7DXPTOndW+7wXX0C5ts7azHPqth +WPPx3aPOgu8nN6BMRkY+8slm2nJ7DOTPkxxinI1/GJLQfs6U+TG//YKeSHlEZ/sl +Mh9EYuIO4As3Vy4Nmj9ZpIaY5lAgIJ/cb8Zy9GvHb5td12JwLvNhlDWNC0Zc2yis +tuZWk1XYX7J0+B+U0TFecNKtr9cVcpNZaVJP6C084LFntu208l2GhIF5AJk+0FSP +aC0QNQCdI5iHTYAMHs6TE5kNuaPXfYV/ZSol7hQiFSHPTGV4Nsnmw/u9KIUFrflY +8TZ17qo0x4sK8Am09+F/OTVbU+fU4wx184uC5vwx+et8lYp4JCv6sCBhtJKh8AIY +g6TEFQ89AWwit8jdRAQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtjCCA56gAwIBAgIICr4wz4NxBw8wDQYJKoZIhvcNAQEFBQAwZzEUMBIGA1UE +AwwLQ1NDQVBLSV9NQzExITAfBgNVBAsTGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFj +bzEfMB0GA1UEChMWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzELMAkGA1UEBhMCTUMw +HhcNMDUxMDI1MTU0NzQ5WhcNMTQwMTI1MTU1NzQ5WjBnMRQwEgYDVQQDDAtDU0NB +UEtJX01DMTEhMB8GA1UECxMYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMR8wHQYD +VQQKExZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMQswCQYDVQQGEwJNQzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKL8MVZuBcMqsNLLjJMdSEJNmd2IaW4c +HQz9ytj3l8qCB9loBGJOgA/8Bw7g7a+C1D/axyGtkSyw3hCvS18YVap/I7pPrNgo +0X93bVZ6q1jdVJ28r+Lys1zhf4/EER873N46abnM4GpUiDyuAmjJvLRk3TUUBSi3 +3bL1ZTY6DqWu3Lf6CO7ICxHyJ9l1XZG0XbGcIl2yMfdfj264Gr1KdYJQB7Khzv22 +lG/d+vr+J8jRPUCbfL7sY9lzK7tQy1cO0dacKDr7NdPwtdIKcbqOB0FNrq91H56S +GeeK52DD8Qv3Y3nR8Se/Pdctin4J/AkKti858eW32oxYZL+pZ1xR+KxI5c5qPTEI +lWF0ZdIO4fcGpVFCeFedAeWTMyMpat2PbaGiSrTmIFtPei1nWPDnyhV4ZB6jDVqu +WfpSxxxRBfY9kFtJGQPMhWqLOljz5dn9QYr44icY+jRt6mMJYphpGhSDV2xCNKKW +utc1ZZA+5aoKUg0QU2toCOcJ7pqCxc9/SVibA2Mq8gcaApYL1FDlzXGh8FoDs60g +VsnM0AVQXYUMp6UC9zyFvdEShYalVQZl/I0fs81z43ekk74mHdZAx8oeziM0EJB+ +hhBxnngEUADCdKt0mFU/QnZ6UXxIea8GvbwkHc2FK3S8nOO4/wJ4WZbFpdsWPb6b +Rzea/aISflSfAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBQKFWKab6Mgt8C3OfsEjoXsiqL9OzAfBgNVHSMEGDAW +gBQKFWKab6Mgt8C3OfsEjoXsiqL9OzANBgkqhkiG9w0BAQUFAAOCAgEAEu07dEfp +AoZqE+2bEsgzGCTyuTnaAaqkrYiisgF3EUR4Z+bnILoF7G43v7SWqxQ4TaYTYR2K +QJzfbtFGitzpq/RHN7BCJhuqDqFCDtIb8RWzHcwhJczww/KO00zJ0wFGVeHzBClW +ZZoLtKyoVmNTan4AgOccF5nrqAaK20cQCA4GW7dwFG05i1kSKyka8lQYrGMn+tBT +CrvBo8Kp0cKZUv2DPcr1qfgIRTSlh2LFtjAYHIYN+i+Nze2dXRIcbb5iGx2d5wsf +HTqu1Tqf2RU71G3upDV3oJS37QmM7Mj5lGpUqpYqDWV4uHuHVNsisJbnUKEId3Vu +6aX5lkEnYg8yLoj0+NsypkyzW5ESccu2WnupbSVVIwtogfC25Kk8OzMRulzwhog2 +fB8V9Digfo9Ld9k7O+dxalZ8/0noX1e3D7L0MCCNiSkZyYHTnbn8FfdwcFOyekkJ +A0ES4NuXlhJ8jSOVEybc8ePhxXAZ2T777P1GzDrKU0g5O8uKSIagC+nABEcrby34 +02HQrfEnPRi9gFYDMGOn2eEz4QNl3yoNkSq9sSj8DvMxEIJK8VEROI7GjAzrAWmA +0PjFSgz7Hcm9t+70/78DDgJzkRedxbyngfu7Sp8iCkAo2FGiv2pA6Y/yUWw+8WVU +JA8hHzfb0auzQANLQkqs4EgLMv9IFM0tnUQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtjCCA56gAwIBAgIIVYTu5xqA3l4wDQYJKoZIhvcNAQEFBQAwZzEUMBIGA1UE +AwwLQ1NDQVBLSV9NQzIxITAfBgNVBAsTGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFj +bzEfMB0GA1UEChMWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzELMAkGA1UEBhMCTUMw +HhcNMDgxMjAyMTMzMjI0WhcNMTcwMzA0MTM0MjI0WjBnMRQwEgYDVQQDDAtDU0NB +UEtJX01DMjEhMB8GA1UECxMYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMR8wHQYD +VQQKExZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMQswCQYDVQQGEwJNQzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJrejSxq+8/Kc736VXDLl+kwUA7087XI +59yMxMBRFC+dqN909wJ7rUpPmis5/bjrbrLY/S2jG890o2ISGEfpMQ19MqlOO4Kc +Ev9KAj1oGJuJaejz/zGy3JZHK2O3MRvIcOo+B5JHbDEEs2GShYaEI8IZXCxTAuzc +FwcrzNQok+ZXaTmPnmWwjLLYIJXaF1idypWlmTauOizn2KpoH0lQUvYE+n1/8hDj +P+6JRHf6awPwdE5Z4kSTf0YrCx8BXhpWKfLLUQnjqzgMw/9MNXqHB3cSRObp5z1+ +85adlW7IO+ip7H/6K9rFdDehtD6Y/6jvnfL4yob6k0yLnTbX08D8ZDrmbAxZ2N7x +XvObi1h5WyvrAudFZh5EDczR0xY93oKBgzTNLkUn5DcXc/Gc+JZrGHu4CNrdtfEl +yZixcHsf7KnS8atz4mgConCaiyr75OOsrX6uyWYxr6Mac0KXqtH4PO58MQDM56V+ ++r5nRqrA7CiXExD0R/k0nrr+vI4PQ+dbWaQalHjCbjIv2JL+TE52vi9GWiu+NMP1 +Im44cdRKAAFIHP5Da3UUqwCzzGLW4fNQpNuLQTxn9wF3vkiO+Krq5HmjERpLbvpr +7+Ep4HgTRzyTqXz62ts7J6V3IixXXOr9GF/kkzYqnKrlHz15SvMorH3hdwBku6zr +49yW0rCYLp8rAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRiQNOIGTi86Nj/Hhn/jMZzt5JinzAfBgNVHSMEGDAW +gBRiQNOIGTi86Nj/Hhn/jMZzt5JinzANBgkqhkiG9w0BAQUFAAOCAgEAMPrdsh9R +Sjw8SJh63/wfa+cztO6JH6pszhPF+3ooW3jfmJ5JG/o9WIds4JsA/nVdrEGkfcYs +N72WZOcfTe4WHqmuZTxobSrs3qaUdgMTb4Y3urFWKsyvaepmUVy6cUDMgbYEBrbK +PIgIBiZwVhTjHiLCTcC+/XmjESnbtJVTBNFBtoleoA5ZzxZjvAdIACaPSGYm1HR/ +zUmD712c0Rj8mSaCWovdorXZSOYzRp837IrLztIGlw6btYyoHZD3DWGEX7I75FJA +MKILFZXC6G+SLEQyGK4iHUWtmOFnBhpeznRlrrGIrCWT2KRQp7Gfo0o0hAbz01CK +dMgw69vGnO4lSr0LDYEeLjpU6roeqfrTtdkGnFF/lL6iL0FBfwMMeUIWsI6x1EfY +c0FJKhwEBX2s0VMcK9hKUdne/ZjV+iw4N8wzNyP3LHL7NymHD5AIHf+4v4J71KXe +k//faon0usbTLbALj+HeTf4w00vkTx8ms0lmvuhAuzckwpKbGQnAP5hz7/2PG59L +bmmbGzvaP+PdS6Zr1vAaOdUl+Hsh6flHtr1ZnNmJj3sqTymUWORQZO9XxG51Q2vn +Fk0nDo6T/klY2o5hrHDXdYO1NP8QV8NmNRTGexoLgiTBnzSui8aBPQzuoOYzQtON +k7WKsvwnKP4lqAQFwEDcUht7CCZgUZX8m/Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtjCCA56gAwIBAgIIbAQqgspVHQUwDQYJKoZIhvcNAQEFBQAwZzEUMBIGA1UE +AwwLQ1NDQVBLSV9NQzMxITAfBgNVBAsTGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFj +bzEfMB0GA1UEChMWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzELMAkGA1UEBhMCTUMw +HhcNMTExMDE4MTIzNTA2WhcNMjAwMTE4MTI0NTA2WjBnMRQwEgYDVQQDDAtDU0NB +UEtJX01DMzEhMB8GA1UECxMYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMR8wHQYD +VQQKExZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMQswCQYDVQQGEwJNQzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMYug/0eYpZwJ9fer1rO3jF9mFqVCgqs +UDSgsJ2SR3zqitMZhoBdeusmUnSJEYQWFiKg5vM+cHJQfXnZg5k8AUrUb35YXfYr +PHPVrpeCBsrIzsJ/9FWj9xvyb4/SSZPxSmoxMI7MYjklNYpy0f4QlEC1SGUvLPs5 +ZOtVtY3Uq+XNvtwF+csliS7IMknStoPfQNlD1UmyFoJdULjIpo+JhNtPb0EKhGoU +yWHxXLg/U6bGpJdVAtY0YbhMEPbJvmSmeExx58FqO+EFto5MjwLdLj8SyAz9M85T +ctp++W0C9DzcP+27HSThvOclJWYvkBQ1ZOCPguKGzEjGxY6OvcYwEpQ0r57Y6zZn +/14kzwAQW/HSII1ACMhlAQYF8Z7cB4F50BURUzKNaeho+Yfys+tavk5BX9/qop+Y +tXmNCmtQDiTclDq7xUOJbkNnbPqo4n2WgNbDULDdL8k5R6Be2DfDD4IOnui0CJoa +dMWqzcIk+R8H/q0HJ0SEb1cw9azRCnanznA73nsakrTzci3zIfgUkJm2XJ5LsBbi +R/ZrTswBjniIq5uwFLz6KwIvMoz/0tNdbC8agQYYKd5osqj6uYTPV1mH5zo/mPJN +16HwXTLCjr11mWDLOR8FzXCFVxoqaIh7hr6Yigpc53SXc3g6/Q1xvnm3YYHwAdWo +Qw8pkCEoPr6dAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRxtXFBwJx7xArRs56cR3AV+u6JPzAfBgNVHSMEGDAW +gBRxtXFBwJx7xArRs56cR3AV+u6JPzANBgkqhkiG9w0BAQUFAAOCAgEAhBLSIduv +c+09GckURQdl1nan5TiFUdLjPN8ryiMNxx2b+uCv+2VBo9SETZIoWBR8uk6U1N2y +VBqpl0M55oQqFwpD7WI79NYqGHZuPyRrW7u+ADe1kjuN0AD9trDH3RbnQnYAIoCo +9yKuoGoZXtm05NH2GWHgDBhg9dJRwrYYU2L6gnckAdxcWenoTVh6zU6n5OW9g56X +Out3hyF9OpkbfwTF6xgIBa62rgdVKoGBkEAqpxK6oGNfj6PoCCJn9IBE78h9+ZBB +n15mOqJMCazLuJyD7kJ1kLJot9scQBKXnMI52ZiH8vF5iw8rYR4rcFkOCI11l4LP +KkFGyBO+SG8BKtMddRBkDv+gG/5DLySqaa+uPb/cdNVoLjT6c/XKiJeOwnA13X2u +GV5eKic1KTK2L+2EUTCxly/yn249heH1hZtKywVZ6lWGiQNmIm1Oil1oa/n0rHTe +qNH/g/WbLm6YFpPpc+FoGgaYSm4nMsNEajGXKGDiemSv7Y76aDAhEEZuUZg7cptq +ADJJi8BR6M2dx9/N7hAyX+mJehKukJmTsHZS320QPOMhpHTSRzlrPfprtOcNDCJO +lRfvhYISqdtitbAzQnMXkpYDNm+vvzmyd18ZGAWgiPUZhSUDGL4gUZYy/m9E/t+6 +TvhBinC0RSAEbDBmkYxJuEM0T6awA/gT90Y= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFuDCCA6CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJFRTEQ +MA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3Vh +cmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMDkxFTATBgNVBAMMDENTQ0EgRXN0b25p +YTAeFw0wOTExMTgxMTQ5NTNaFw0xODAyMjAyMjAwMDBaMHAxCzAJBgNVBAYTAkVF +MRAwDgYDVQQKDAdFc3RvbmlhMSYwJAYDVQQLDB1Qb2xpY2UgYW5kIEJvcmRlciBH +dWFyZCBCb2FyZDEQMA4GA1UEBRMHMDEtMjAwOTEVMBMGA1UEAwwMQ1NDQSBFc3Rv +bmlhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvZuCLlGZutwLZ/3n +n5Sr21wWmDoCU4xORFqj1xY0EoM8RkhNKdCNTruC7OwL8wTquLoRUrf48OEadf3w +J6xIDlg+D6K46f+aepBpqBvAs8OuG7moZYHVSveHBn+P+2vs09PTevI2acsb5xuL +lfnZWBmCVLH2l+kx6CVkXIb51lcsCo12Ok7m8vxzE0tnbh8klgznHAga2ptQr6fM +kOUJMt4hPVbBLXZzfemlBZsIWt+XsUJv0vdcwVwuL2nZqPYVqeGJbwAoWCTxKge4 +GWR/Q1xaabCtxOQ7Njn+4UAhd0sMgtxv5tqGGMmR9Nu8Kw8UwU6JqV8fQhA/VVjZ +sNQnp1F/36LYj1MGjumndgHDRJ8rpbvyKqX5fHxysH/Nk7KXGyeeQTQ9yjsHPf+Q +BpK8oV6CpLnojVTREaUyfufmLQMTfVNHtYO6zYSViW93iNxkZTJHoDPgyu0r7a+q +57ERD/Ygb80h9BooAiUqKgj5hxHbmXlFpG+YKUEj661FXtgoccCGCKzE7Wbl+Wc8 +joWCa/mOYHKRNwlbx/8JiPkG1QZe23vVjkDWlubXA7UFZ/+pZYDngKIl/4YN/+Kh +7TMEfu8Gfa1NPNWFa9XmHUy9wg8cgWOkft2KbpyYEB0atic9cdcI4PbQaA2SSjea +dOcuZ5vGLugwKJikLTdjiqGa4iECAwEAAaNdMFswEgYDVR0TAQH/BAgwBgEB/wIB +ADAWBgNVHREEDzANgQtjc2NhQG1pZy5lZTAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFPLVS5LJHuqSnfiYbhWMAxtW1jZ6MA0GCSqGSIb3DQEBCwUAA4ICAQCPDWe/ +34rpT7/4h2yHnQSpppGl+s+ua41Pv01X+r79rV2KWPBXvf56r/d0pj7yKwF+PFxH +7igrRRbD6y7zFN/+E4OTIdIp3wSjhppd4dFSckpYFRo4AfaM2IOmth87aiZLAeXu +AVo0YkBSRHaLkuJ+ybRVOARMmaXgbbcFfjrle22rcuQ/Rrd7ScCDZyryPCUIe21Q +YZ4vCamsR3jaxdkHvou/vz0t5W4KDf788GcvXFUNRVcJNGtuLXuCBFCP70HuazJ/ +J2XPEJKfFZ73rLy/QFzReAFxzgitqpsWb5EcRtWMHOjoL+08I1iwTa5vFWVxwx9H +YM0gpaiLwvU6bS7/HeAghcuXVNK6gGbKj0fWehTq5cTXUT68F/q4JEDsJ49tNbm3 +kM9NPH5hC3irtLLd5z6PiJxDVDxvxgf9Ai29rYzFpY+9aWSAeV1khYR9OlkIK7LT +gUHb4lUqbQre6mQ5jpR2+f3QUKw6M/SgbqfbGYiID4ItP6CA3b0/wWoanJDbx/KB +JLNJTEdqbsahHDyuj3tC2tb+w4ENs50s+c9ylBaxLyOhiP9QApdphD4kpLRQ9j2N +oylhoHeWDz/Us+AxzxV388ZQGONDZNhK1hngRqGHMqGCcBYKYasAdn5JMGdVMUdK +1zWOX8WVKqdiViA8hIcZAg523no9qgEHkC7orA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGJTCCA9mgAwIBAgIBKzBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUA +oRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwbjELMAkGA1UEBhMC +SlAxHDAaBgNVBAoME0phcGFuZXNlIEdvdmVybm1lbnQxKDAmBgNVBAsMH1RoZSBN +aW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxFzAVBgNVBAMMDmUtcGFzc3BvcnRD +U0NBMB4XDTA4MDYyMzAxNTczMloXDTIyMDIxNDAyMjI1MlowbjELMAkGA1UEBhMC +SlAxHDAaBgNVBAoME0phcGFuZXNlIEdvdmVybm1lbnQxKDAmBgNVBAsMH1RoZSBN +aW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxFzAVBgNVBAMMDmUtcGFzc3BvcnRD +U0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJQ5t7CI17BeMhw+ +kQVP7+cS8PNTkqUkDfsyXz9BaVMzSSXoLIyCyyCgMLUdKnbMEE405LpMCUseoncM +ugH6DV7daRht/2ZwI0w5dvFRZfEDOIP3VxZNFEi/qnWhTk2H/MHjFl/BqcENg1Ur +egh0mXL53lYkhszt5jdPOivAE84mX54cLQeJzAeHgHATcCxOSPmB4wxBBfAO/O8F +kVO0Q5F62O4qq+vEuLAz0RUMYR9yyjEQdxOTxACvSqH4wDsaV1hFgsRUGv8cAXlh +OKmqBQr+QeHMEGTuTCbGUu5qsukAIoLofiub72AI58sTnnyGFrEAQAjvI9AuuBSp +AcwCT3MB8UidsZWwa5j97dK3EmutnZmw0JWOajnp3BexEe2ykgYSMvcMHFcdkUlW +cBML40nG8OfoMEy24Y9uhk2WdLxAbijpBPHlCvjEvPZZcz8Lh3Dl78U7to4Furvq +nbWEAywjaq+F90krxlywsHw73rxyvLf+u697wvjlxbf1RcklIkyP/P7XiAF7yx3s +xXHasKBAfdDfA6FCp4TCkQtMA9POWKa36O3P96SXAofliNBsKHbjaQx3mu4UGbHd +eqW6GT+/hO1KC5oUl5x+6mkyOnJ8eT2LZZZjTE3oYAPt17sTeWhcGumlzq5JN+O6 +T1ASeHxyTPBZY9AltyFQw44/0+UCAwEAAaNmMGQwHQYDVR0OBBYEFFgSLuujKd38 +woZC0gW/Z1uML37WMB8GA1UdIwQYMBaAFGJbhox42j4xleg5Iv51LUB1zqCQMA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEEGCSqGSIb3DQEBCjA0 +oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCi +AwIBIAOCAgEAUVUBSD6oJ/MXsDPXbqZcEgkH068xk3POeZxBRPQb+tyGx2/ceXgI +oxYIBl0AaBPn7iH5dk0iO/HrmtRSVzdctzSc1x1CKqZplKeW9Zb8ZPA0RzSU/mAK +ln5qz3ZuDA/LKcGHNnWMmLv7fN0NeF+Qu51Hl+22+hmc6x3wBbTcwB1KZkceVtpo +A1GrUQhEZAgw9S3hQN8Zv//J4zpISTSVxqhmm/aCO6Xl07MW9BSOWkis6/cS6Ht6 +P/0TlW9EZ2KxbqLtkhGg/aNCVo+fuH/r/R/1jqAEQACKQdO5yQv3Qa3w7DvcbBIQ +P2oS8mBrWlnwLm0LtKVpz70xv/KaVnWZDUhEMiWJe1kwKN9QUq97A18WthOjPp3u +FSngMt4T2bgTQRQ1DGcoCRzPZBB8Nv3tiu4rEOUlCd2GmZkl0M0FeUfzrb34xHh8 +gxwLn/wTEYo4woULNWwFfnJ2uvXER0MIsZWyfVyG+8OSUt832OqRdGgqJjbwaFxP +w/mDGz4WsgW003pg4sTKiA634mnCOH8tZwKeD4CxQ9V0OdgSv3A0Uhk5Nz1oOS5p +/xERhY0Yzn4KvR3k36TxSvNPuIKqle09JPVqiLihxWo0kK6ACyodMwS3etcqvyNp +Ja75IvO29II1/+VSbd1d2YIPa0a6rCQWOSeSPDlOUnExWyQ3p691XyA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ozyx1yk2Gg1EGceM+g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +iClZTC8bKYpNEtjm9g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpDCCBIygAwIBAgIDGGoxMA0GCSqGSIb3DQEBCwUAMIHWMQswCQYDVQQGEwJV +QTENMAsGA1UEBwwES3lpdjEhMB8GA1UECQwYMzgtNDQsIERlaHRpYXJpdnNrYSBz +dHIuMQ4wDAYDVQQRDAUwNDExOTFEMEIGA1UECgw7U0UgIlBvbHlncmFwaCBjb21i +aW5lICJVS1JBSU5BIiBmb3Igc2VjdXJpdGllc2AgcHJvZHVjdGlvbiIxJDAiBgNV +BAMMG1BvbHlncmFwaCBjb21iaW5lICJVS1JBSU5BIjEZMBcGA1UEBRMQVUEtMTYy +ODY0NDEtMDAwMTAeFw0xNDEyMzAxOTA3MTBaFw0xNTA0MDIxOTA3MTBaMIHUMQsw +CQYDVQQGEwJVQTFDMEEGA1UEAww6U0UgIlBvbHlncmFwaCBjb21iaW5lICJVS1JB +SU5BIiBmb3Igc2VjdXJpdGVzYCBwcm9kdWN0aW9uIjEZMBcGA1UEBRMQVUEtMTYy +ODY0NDEtMDAwMjFDMEEGA1UECgw6U0UgIlBvbHlncmFwaCBjb21iaW5lICJVS1JB +SU5BIiBmb3Igc2VjdXJpdGVzYCBwcm9kdWN0aW9uIjERMA8GA1UECwwIU0NQRCBQ +Q1UxDTALBgNVBAcMBEt5aXYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDPYjZOcLkRE+lTqlDKhaYBI4gWCShmDHug4Pu13n3UDz0XkVLug05vzwRlijtR +VEly8bhcsYAyy3oMTqzIIUhYqCi7G1Ej/oA9SmCYYvTG33vSwW5ojrCBGYzswVy/ +XRB0pr3ZIVpuVQVDbHtA5vwmbhPh+e2kv0fHIpC+ABV6NbxHf6ARsan7IMBBjMxS +SQRWcduVNOavkZ06KhA9nAyLW1Efkup5cwMWE6IINo3FQGhhVbW9JifDAEajHbXC +mA2MjEmXaN+CCc1gyP7N/8GtDVlP+OBhsBT4+pzNFa13jusShzIhhx0gs+NWWDZX +6V9ZsCbL+PjweoudDZEr1mQipvk4+Zrx0QSO0v1AOMAjx4dTi+3W65/gYTBQkPVI +WBu8oocWP/ap5cstExmoeV9bTmfpOUoIqGiMfBYcE3FngaSoFMbOvREDW1d8ejWZ +8cxuxtTnwtMVEG7Z7HgSL5ZOM8GnzyaQ4NzMVWpqzPxOZ2wmynsUpq3fM1igt+sR +U1scG0IAmgTGpBVowSc/4Ez/JW5L/puDPY4TgQCX/pw8X11/dTJSD1TfiNm5BxLF +sahOOocIxsffC19SyZ1+9jpFQptKb8mHO19AMFHKVFZxwebQXQymkquQHrY/ay8y +S113P2ec32B+WkWmYt0MY1uQ+KCd6toTEWy7blman1n50QIDAQABo3sweTApBgNV +HQ4EIgQgcjz4n2nosZG0uPMILa4mfX1YRPl056SmHtIS9swtxkcwLgYDVR0jBCcw +JYAg9QUg7CTuC6KdeKrMR5szaGZEr2wjw6ZnvHcwzjLLPaGCAQUwDgYDVR0PAQH/ +BAQDAgeAMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAJvjgi7iw/eS +nkz7/ypOAp0ybBlu7QLXTP0/IRJNeXTyF+IeifwY8glBrtwAF/0Jg7ftcbExcXxb +WkHEwml+L6x80mTE1MagJLOTe4mbs33oyqWooQOBmxSLDwOoia8leXWCb/9v30u1 +xfbnqJ6cT5qz5q85FN5c+BS9a3udDq+betV6aPuNH+8TrR/HIoVesAS/wXQ+WlhG +Yd2pEsP9Q8f1mQtWSeN/EpOpEV/yLGq901cS+txn8on17rE6Ain0B6MWNTqUWt7N +u1/t1uPXTJUO+lllkoUfcI/5I0EF3zAmSu9QY8P0MYQWU0M3wqQGUqZBqzF214AP +jmwvctESqhFXmgUAMM8TCDt1k8D4VLVN2/NLs3dp8sWNuf1aJ1ztY4BbB3HqIcpN +fDkS1Ns4Wcq9OG39hXXDy06G3SqnrLR5LNaYOUpX1ayAzNZhMZzPSOBPDVxPGzxZ +20E4ouscsfLT360bnl2OH2HlY63sZMi11rvQ+7z9mpLiO406j7v4fM+kSWGR7b95 +Ft6+Cv9wcOUSdk09Cpd862JP5VsQ0Ntk4clOe4NCJ/OuQ5wVh9cdUHKu7g4XHWCs +iNyHcUW1RFQ5Sutd02dx+UzOGu9Mw5Xg314FtAh/YRH3gL/+iGriR8XJsvurUbOj +lAEEjqhUzuB1mBOe/aN4HWTMRBBEfbiE +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQjCCBSqgAwIBAgICE/YwDQYJKoZIhvcNAQEFBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYD +VQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTA4MDUy +MzA1MjcxN1oXDTEyMDUyMzA1MjY1NVowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoT +A0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYDVQQDEyJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA00WlxQlzHPUljTs2ZXmTATKIG19rnm6RLTeYykym3y5K +yBy6E8eGHiW79hpVOXFUXwsH6eQhjEmOwCG5/6L7wFKF9Bf68RiMmwOTFCTeIa86 +caXGYSUSoIK3cM4VqTwTv4NF84RaHfERWWHQfCU2Oi1oMl03j+464s7BHo3iYZxo +6xkCPKszpypRaWQZFYByQipyO53dH8ZsEC6d+PCDkcklUSeCujwXwHz1Trr9O+uo +n5KagjrjgLrQ3xm9XBxr/FjC8WfXabpUUm+cLpOWAuwIbECSm32DsNsZEhAySyIr +RukXr/DLGKTWAJccBjaTTuB2HoHuAOhKiiwJmqL9lhIxiILmVIjelfG+JtBjmSM9 +d1OH9Q09QWo9gH6AQO4cyhgWh+zXXm//wnWIdCyqn8trQEuI8i3B8HW/gV/NI6UX +RIlDwFFEG0jd0T+hLTgHONoFRSuThsVnktfiqHWrCgWymzP+VlkeeEcaMSSAjxCU +GYiHa8MqQjgU6obNFFHPV22GKl+txpof5x7o9FKxWpiuYZQS5Mt6UB8vUlz7Doxl +Y1PyVljysNwhJYqCiRtwbIc8mtENgBUJWJNgKXsoZJ2t8mv+sfp1y66TyhQ7cf8S +zRo0V5ZAS5UHVL+DkoS/ZQ36CBRJClNonyjznw51o4rSoR54Yk63hNAj57UhLy8C +AwEAAaOCAfowggH2MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGGoHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDA4MDUyMzA1MjY0OFqBDzIwMTEwNTIzMDUyNjQ4 +WjCBjwYDVR0jBIGHMIGEgBQ35UU4PlOsrXY2zqkmAMVn6XxyiaFppGcwZTELMAkG +A1UEBhMCQVUxDDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMD +UFRCMSswKQYDVQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5 +ggEBMB0GA1UdDgQWBBSJUhghMvDepX8TOhcqXVYXoHkSajANBgkqhkiG9w0BAQUF +AAOCAgEAstrxf2pahP8uIyULiss/w6BucJ+2EZUch/3puxG/t4iG6gYQjp0D2pLs +iDGb+AFoO6JIYYEG3FRq5mr6MOeeQjehS+9ZTjeRZWzVN7N76/dXJu132uxIZvr3 +ONETCswYV59hEmk+8Qj3mgLyAS5ZzK+a3uvs5oCRYLNOjlUjalEwiF8RlW3y/IRQ +ODEBSWYGGrjYd19e/QDdLaNztTGQr+9QqmjZrwuzFE0MVCRSkze/sbysaTqwqExD +mx92VX+eHtpRnA12/UPmVj+6YGnvFjW7O0aQKRsScO5KOnpY1c1g0hYUx41WhzoB +lfXhmpIhW3XZ/oiw/nI21GLeVxKkQgRMcfYMrt2aW5lRHw31Kzd4jp+sgvSRnMfG +Bbb5EflRX8TdWKQUJfvsJb3RH+c3iEInAzK9WIWo8kHarXitncklg11PH1GZ+/+X +AAnh7g+bZ9lDKcP25nnYBdGcK/JlZ6/95cfZnpPu/NNnlKS4e3/u1+hIT3rCRctT +859a569rfWz3D+cvGJEma+zW4wXOF+NjMmSaoCVQs+X1y39wc/igg+6wO2I7tYAG +nY2/ZdLf2WhjAfuaatwUZ65rf4uUgOkAcl/MUMzwkgkiylZkNR/Mw4syferxjzI/ +ldSj8eba68OtxTfqb3BIdTXU08wq5nBnr1AqEj1L7s1pAy1IIVA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH4zCCBcugAwIBAgIBWDANBgkqhkiG9w0BAQsFADBwMQowCAYDVQQFEwE0MRow +GAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxMQVMx +CzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdvdi5n +cjAeFw0xMTA4MjAyMTAwMDBaFw0yMTExMjAyMTU5NTlaMHAxCjAIBgNVBAUTATQx +GjAYBgNVBAoTEUhlbGxlbmljIFJlcHVibGljMRQwEgYDVQQDEwtDU0NBLUhFTExB +UzELMAkGA1UEBhMCR1IxIzAhBgkqhkiG9w0BCQEWFGNzY2FAcGFzc3BvcnQuZ292 +LmdyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA33uUtF+AQdQNPNEC +b506AxO4YXa406G+xmAkX6ND6D0iZYOtgsV30HXtQOfBcIioF+35x7fMM9JR3ruO +2C+pDr0KCulU6DiDLXQX4V3RxR3RgxdFSR2zsnLdnKXMy0Ab3BQhw2KwUK46on7y +rE41naO1ndL1fzbnN1TViRglAyBhTX4dl8Dw/xDBtGS7vhnprVtoHxRDqw0p7ZWE +trbQd7pBoa9Z+8guMYAKxDvJ9WxyfkNV2XKRm23MXL3sR5BKVvnHpj5qSvdnhh5a +lIqJCypoGq+hJcRslKg4H1rWJoMoTrh1ptMODz+R8JtyR49BjP+nDdS/ftSZxjWS +mge6N5H+K2Ya1x1mdJJeo9jhwuPgxQbWO02MpgK2QffO4PY7GZFoxMoo2Kww3xuM +4JzxUIf3QEepj5dgx3A0r0QnzB2/kWYH2qzQbQ8foUpoKm7WOKw6zaRqhzxHifFX +4Qypg6OINGX5lp5vsBKzaoHP8KHDx/2LUQYMNs/g5VL9cntb76quInUxhRiRzEo3 +JsYGRUPijh3UiJXDkjTMB84SONHIcZwQLRbhHMdDYAt+8iwT6WOjrUyph9a0DESR +M/GeYQ2R+XBpoBGpULYIgQdX4EYkP6CB5MCSFYLzIvA5QXpmvvGjUnFwtY7FOnUG +asv30TbUB5zpYgUGxPjmpng5kTUCAwEAAaOCAoYwggKCMCsGA1UdEAQkMCKADzIw +MTEwODIwMjEwMDAwWoEPMjAxNjA4MjAyMDU5NTlaMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUEUCSIfLfTBln5CjTaYkd1t1siygwHwYDVR0jBBgwFoAUEUCSIfLf +TBln5CjTaYkd1t1siygwEgYDVR0TAQH/BAgwBgEB/wIBATA5BgNVHR8EMjAwMC6g +LKAqhihodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL2NzY2EuY3JsMIIB +sgYDVR0gBIIBqTCCAaUwggGhBgwrBgEEAapsAQpjAQAwggGPMIIBVAYIKwYBBQUH +AgIwggFGHoIBQgBUAGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAaQBz +ACAAZwBvAHYAZQByAG4AZQBkACAAYgB5ACAAdABoAGUAIAByAGUAZgBlAHIAcgBl +AGQAIABQAG8AbABpAGMAaQBlAHMAIABhAG4AZAAgAHQAaABlACAAQwBlAHIAdABp +AGYAaQBjAGEAdABpAG8AbgAgAFAAcgBhAGMAdABpAGMAZQAgAFMAdABhAHQAZQBt +AGUAbgB0ACAAbwBmACAAdABoAGUAIABHAHIAZQBlAGsAIABDAFMAQwBBACwAIAB3 +AGgAaQBjAGgAIABmAG8AcgBtACAAYQBuACAAaQBuAHQAZQBnAHIAYQBsACAAcABh +AHIAdAAgAG8AZgAgAHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABlAC4wNQYI +KwYBBQUHAgEWKWh0dHA6Ly93d3cucGFzc3BvcnQuZ292LmdyL2NzY2EvcG9saWNp +ZXMvMA0GCSqGSIb3DQEBCwUAA4ICAQA/iUL4rOgK3tIdCFNlnA7xfBhc1WUw+orf +8JbVHWO+rlImTX0QSTdz/cBlCspWLoDOLcxj2ZeBqlS9j00uDLq3EyLDlZ587aXw +tU7iuO9iRhmgPKBbtcNMrjbAvAVvK8QlRA9i184JL9/LOCWclg4cPworJSz6Z5Hx +l1DQYYHlLxksRHVgOmYp5O8b/ILiWoknOKTKT3q5hS/WItPBLcFEmuwdn/ItnXzF +s1h4SJ5qpfnAHlrJZMFUntOyCyLa8soYjmSoWzaJhoWqDzIjIHbhtk4RR2yl2QQC +fGeKBIjqrFh/IkPmAyjnlvJpXfpHYpq1+1j9rQuJntnqP6Sp4mwTYzPjjLi0lU1s +yQr5KmOFlaswRXiyHQyT5c/bOv1lw2zCSTQZH7I7qXDo5BbqggAOT8E/qtE5n/F9 +6zc0dUPXS3UR0q7ZR73eA6KwgwyLeGfwsNSieGOzj9MtE/dCG+NjTTckPQ4YFoYt +AAH5QadBQKQMzswUs237rRb853hbJCTtJHLN6UrrhYKKvAcLIPiybgZ6bypJqbEu +EbHjIRyIJqZgE/nQ1JMocJPoRebfwoLoFjzAyQAbs8q8JQQAemBSsuGmWzXpKoSI +ycYwgfVuNAavzMY8W1ZzPzR9mLfWe5x+XikIL1gNAvaVV8Jjfcig2whKVNKny+nH +yoE29UOQQw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH4zCCBcugAwIBAgIBWTANBgkqhkiG9w0BAQsFADBwMQowCAYDVQQFEwEzMRow +GAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxMQVMx +CzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdvdi5n +cjAeFw0xMTA4MjEwODA1MDhaFw0yMTExMjAyMTU5NTlaMHAxCjAIBgNVBAUTATQx +GjAYBgNVBAoTEUhlbGxlbmljIFJlcHVibGljMRQwEgYDVQQDEwtDU0NBLUhFTExB +UzELMAkGA1UEBhMCR1IxIzAhBgkqhkiG9w0BCQEWFGNzY2FAcGFzc3BvcnQuZ292 +LmdyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA33uUtF+AQdQNPNEC +b506AxO4YXa406G+xmAkX6ND6D0iZYOtgsV30HXtQOfBcIioF+35x7fMM9JR3ruO +2C+pDr0KCulU6DiDLXQX4V3RxR3RgxdFSR2zsnLdnKXMy0Ab3BQhw2KwUK46on7y +rE41naO1ndL1fzbnN1TViRglAyBhTX4dl8Dw/xDBtGS7vhnprVtoHxRDqw0p7ZWE +trbQd7pBoa9Z+8guMYAKxDvJ9WxyfkNV2XKRm23MXL3sR5BKVvnHpj5qSvdnhh5a +lIqJCypoGq+hJcRslKg4H1rWJoMoTrh1ptMODz+R8JtyR49BjP+nDdS/ftSZxjWS +mge6N5H+K2Ya1x1mdJJeo9jhwuPgxQbWO02MpgK2QffO4PY7GZFoxMoo2Kww3xuM +4JzxUIf3QEepj5dgx3A0r0QnzB2/kWYH2qzQbQ8foUpoKm7WOKw6zaRqhzxHifFX +4Qypg6OINGX5lp5vsBKzaoHP8KHDx/2LUQYMNs/g5VL9cntb76quInUxhRiRzEo3 +JsYGRUPijh3UiJXDkjTMB84SONHIcZwQLRbhHMdDYAt+8iwT6WOjrUyph9a0DESR +M/GeYQ2R+XBpoBGpULYIgQdX4EYkP6CB5MCSFYLzIvA5QXpmvvGjUnFwtY7FOnUG +asv30TbUB5zpYgUGxPjmpng5kTUCAwEAAaOCAoYwggKCMCsGA1UdEAQkMCKADzIw +MTEwODIxMDgwNTA4WoEPMjAxNjA4MjAyMDU5NTlaMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUEUCSIfLfTBln5CjTaYkd1t1siygwHwYDVR0jBBgwFoAUvSC7Feqn ++R7kkN8IelLnqgiw1+YwEgYDVR0TAQH/BAgwBgEB/wIBADA5BgNVHR8EMjAwMC6g +LKAqhihodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL2NzY2EuY3JsMIIB +sgYDVR0gBIIBqTCCAaUwggGhBgwrBgEEAapsAQpjAQAwggGPMIIBVAYIKwYBBQUH +AgIwggFGHoIBQgBUAGgAaQBzACAAQwBlAHIAdABpAGYAaQBjAGEAdABlACAAaQBz +ACAAZwBvAHYAZQByAG4AZQBkACAAYgB5ACAAdABoAGUAIAByAGUAZgBlAHIAcgBl +AGQAIABQAG8AbABpAGMAaQBlAHMAIABhAG4AZAAgAHQAaABlACAAQwBlAHIAdABp +AGYAaQBjAGEAdABpAG8AbgAgAFAAcgBhAGMAdABpAGMAZQAgAFMAdABhAHQAZQBt +AGUAbgB0ACAAbwBmACAAdABoAGUAIABHAHIAZQBlAGsAIABDAFMAQwBBACwAIAB3 +AGgAaQBjAGgAIABmAG8AcgBtACAAYQBuACAAaQBuAHQAZQBnAHIAYQBsACAAcABh +AHIAdAAgAG8AZgAgAHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABlAC4wNQYI +KwYBBQUHAgEWKWh0dHA6Ly93d3cucGFzc3BvcnQuZ292LmdyL2NzY2EvcG9saWNp +ZXMvMA0GCSqGSIb3DQEBCwUAA4ICAQBYaGR26GuDtRj/VCtEWNmv8glxtHWbDIf7 +ka1FqDGJ6778rtaLwjXMzSNRie5tCm5fpe0pNyPs8/Fb4dHTvNYDHz7bv2muUJYB +h0Ic5KjzUtuR7FPYNPrlALp01YMMxTWkrh27xcBuS9mCBQuUNBYAJFqVViU56CIV +Z7Bc6AXFBpyaepH9Gg0F/FM9t4+UGqVyjZuzN8UUZ7lbbCpl8MjZuEYm0cy9Fy2V +8gtrRFVA0uRi0xjHUcFO1/X34VU1hoDCH9HYNAjyOSyuubwwnK3VT67Z7UUoFcbM +j2wV3hJo83RQApDBJz1j6sNpcnI/bfccywDuglYvPydkPakDrHPFxj+pVPWhkdId +IB10Yimja449Zl6DWr4okEIMd55Pb0CoQKvhuGeNCfNO0ygoCbzveDnPplDgWYjA +XGkMevMn2mtRNWxgdOijknaWIq0rchVy/VRNTb/QonivkFy1/AJ5YamaishLjS4g +T/oe5J3qvaxsedBYAYHJSAUvQGGg8VzUg85ogNFdydzJoP9QZ2pWaqF7sUq2DHmc +LO/Qkzz4XRP02x3f5ca6CiRGTFaDayopc+Q586zJ/JfOiivMvg6zyVvOm4M31sIG +lsfJE1Rna57V9M/o+FMAWYDxDcsLO2UOw7iF7ulzn3j5h2UgngyT4fD9P2/fyRhe +iKb/S2Rn4w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAJ0wDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBMzEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMTYwODA4MTE1MjIyWhcNMjExMTIwMjE1OTU5WjBwMQowCAYDVQQFEwE1 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMfQ6mI/WEnR+qQi +B14+UXf6+1IhZL1SZozSruHg5L4a0RdCkOioc/RxzB0pb8KxQU5o0+r1omRsoP9v +19dEKyBn00ajDrhE2avPWTXnF0GResvqPXr4KaDzAwXLTisrD/+9uCg/SbKGgx06 +fLwqrNzoCyS7B7JurIZBwHVaps8P1hAKPQInEtQxUo8MP57aGNaW+QU4MiLGNmYZ +lusoNP2vwESjTaLyewQ54wLWiLzGHbHApMLMjxut+BBMavLs6ovpm1McRoLHbqjo +FOJMsPh80QYJaQVy2EdZRTpe+BbzRB7/LiCoRwBB3NPi9JWzBUNDSRe2Tle+JWzF +MhaaH0RAqguegjH6Te0fuBTkEIcgdEjKdQrNKJe+5BEtK4TgElqA9D19SzXFaPZa +bJCy2doDpjW/XfOxyMOxEfNyKULapbXrumIIVj8KAv3Aujqbu/hY74h+KKaQ7Kx+ +w8F6h1PgXsyTjOEeQlbfSR86L6OTnb4Phork32wGFjHCUqi36PbqoQlrCQ7acyQv +bNLzcA+qx9txRhEwWBFdHAVSJEyUasb/t2TaX1tdzPNovUfPNbhY2ZmD+6dqdtbq +m9bd+w5ZW39qognr8gz6/oAYz/tv5apMnBt5h4lcNgrRe+3VAxhLNEgWWIWtuFbr +gmKZcaQC6czmAvP6gxdOYEvFfWexAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDE2MDgwODExNTIyMlqBDzIwMTYwODIwMjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFGQ6dlrfVzGTRWbOWFUmmBWWO/7cMB8GA1UdIwQYMBaAFL0guxXq +p/ke5JDfCHpS56oIsNfmMBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEAcirpIB6XUCkTrJujRZ1Wsc3JRJjK1h/z +ShUFNkfoJ7pJ/mRTFGQtw3TF+EY4N6dxlN9x/LJJrUnrLldiQLzHlbMfv/LU/eiI +xexivQM3bnTLTq5acrSth7Waau4RJocMMaoJgBdszQYKHLnw/nBHsfIZnipZDsHf +3dfGzIW4v1iYPsQHnxMi+5AjQEOnrzGPIlTfDoEaVDrqP/18ah2Xgiatx2n5kF0F +ImtobUE4Yhk0fdAX84FOxlOOe1nG4ihKREXKUi9XFu9/cGNLcVBQek4W5QzUIgxx +aqjlhobumVXg64A1RiklPke/Cv3FWkyr3/faMuzdIHd4F72FIEyEXGXoXq0BTl7K +FhNy3vPP5YLRDTW+a1xIK9Cs3a8a6EsFSOS95OWqp//DhHpNTIsaRU81hGTYXloE +UeRlgEi0TNBce6teGDAHNaDFskTVTc8VeZ4GiiNyzBi1Zge9JGLanHl1XNx6FEMM +ub67Nlrz43itw/6eiqh+UZM4/J96Zuee7+u+eisRkqIBHM2ea+bHqWv7XpvCTiWC +rRybT40MMfHaYSbYaEmo89SjkYiHT+izjm6d+fqmFKcdUmpjuNQ4impfZ0KzSQ2C +m5qUP0+jWlGYjwzuXytWjSBVGXtnroyfRvBeQ4b/PX/zdbW6ya+Z9SnC3ADboDhm +w9186lm16uo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIITDCCBjSgAwIBAgIBVzANBgkqhkiG9w0BAQsFADCBijEKMAgGA1UEBRMBMTEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MRgwFgYDVQQLEw9IZWxsZW5pYyBQb2xpY2UxCzAJBgNVBAYTAkdSMSMwIQYJKoZI +hvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdvdi5ncjAeFw0xMTA4MjEwODAwMDZaFw0x +NjExMjMyMTU5NTlaMHAxCjAIBgNVBAUTATMxGjAYBgNVBAoTEUhlbGxlbmljIFJl +cHVibGljMRQwEgYDVQQDEwtDU0NBLUhFTExBUzELMAkGA1UEBhMCR1IxIzAhBgkq +hkiG9w0BCQEWFGNzY2FAcGFzc3BvcnQuZ292LmdyMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4JWyBFqReB9/HDN/0DrhLKdMGb5DMMKLtxodnYBDMP6A +1of/8/JDNxbCHw9Q9L87pBjG0tqrVtPbmSOf3z3cChJhH+zmmmS/EO1QYO7J+qSC +IpeJ08DR0O1og4pKIj/I7pldloHxP7Ju0351Jga02eHfp1WEN0WpeWpGN5+RupVf +0nAbGDRqwHBZV3poykKJBU1A92DiRKUpaqyDbS/AKz9LNAkDMRjo4eBZN9TKdoeb ++7McbZS7DTvRwzTeO9NNxwsZ+0n48NsoRTaIry6uZgH2YCTqmRH33JwyhF7u0O2h +4Nn4nqJpq6fgfqh4vCdzWEkDIiqH4wal0gAQrDSQjwsJ8tJ0Z7faABlH5sZwI96p +dnJuTCNcJmbdTOE7GTUmpNFH3hEmeK2UvnFtEjViYeKZHlbmk/fi8YI2/5wN6/Yt +Wi6rY4xn1I1Qf2XIf/bV770+D9N65inFBOoM3EbwTj4/nultZv1IoblJEUFMhNSC +i93c9P9nGorSrkI5VXPfWejr8teef9151MG3jMpc/iBOogIZKBgys7ogct0sioLQ +s56q7YSvT/N+AUl+z5VI7aLcK6/tpo6X+ztsr70NtHoTSQ6nmybLFnLtckn2AyjI +tq6EzjULpUIu1P3N0UkKjU0txl/hU+xOk53rI04UiLVK1TxR/dj/uLUGQWI2gGkC +AwEAAaOCAtQwggLQMCsGA1UdEAQkMCKADzIwMTEwODIxMDgwMDA2WoEPMjAxMTA4 +MjMyMDU5NTlaMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUvSC7Feqn+R7kkN8I +elLnqgiw1+YwHwYDVR0jBBgwFoAU7Lyt45sWM4kSLgRmeInhVmmcy98wEgYDVR0T +AQH/BAgwBgEB/wIBADA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vd3d3LnBhc3Nw +b3J0Lmdvdi5nci9jc2NhL2NzY2EuY3JsMIICAAYDVR0gBIIB9zCCAfMwggHvBgwr +BgEEAapsAQpjAQAwggHdMIIBogYIKwYBBQUHAgIwggGUHoIBkABUAGgAaQBzACAA +QwBlAHIAdABpAGYAaQBjAGEAdABlACAAaQBzACAAZwBvAHYAZQByAG4AZQBkACAA +YgB5ACAAdABoAGUAIAByAGUAZgBlAHIAcgBlAGQAIABQAG8AbABpAGMAaQBlAHMA +IABhAG4AZAAgAHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABpAG8AbgAgAFAA +cgBhAGMAdABpAGMAZQAgAFMAdABhAHQAZQBtAGUAbgB0ACAAbwBmACAAdABoAGUA +IABHAHIAZQBlAGsAIABDAG8AdQBuAHQAcgB5ACAAUwBpAGcAbgBpAG4AZwAgAEMA +ZQByAHQAaQBmAGkAYwBhAHQAaQBvAG4AIABBAHUAdABoAG8AcgBpAHQAeQAgACgA +QwBTAEMAQQAtAEcAUgBFAEUAQwBFACkALAAgAHcAaABpAGMAaAAgAGYAbwByAG0A +IABhAG4AIABpAG4AdABlAGcAcgBhAGwAIABwAGEAcgB0ACAAbwBmACAAdABoAGUA +IABDAGUwNQYIKwYBBQUHAgEWKWh0dHA6Ly93d3cucGFzc3BvcnQuZ292LmdyL2Nz +Y2EvcG9saWNpZXMvMA0GCSqGSIb3DQEBCwUAA4ICAQA8gdK+WW8qxteSeSohPDJy +WCRD0ThZ6Ox27QdKwILrkIstYsRgVc4coNzIkzZMNnKcUkZALFsnKWN8nEwx5yCO +nXL0jd75UCdXWGs7T1g7WdfAP9OcYSsrBJK2aBxCFmkRHwFBWuZ9MEKnK/WnFduu +DlTSQXk9xsAjgICbmhENAC1mUk06HM3N1uv5ULLhmgCouJu3GjYOWhKw4bH9aeEN +3CINEOGv9w+CJ6F2fjfNU2k84GvusRo2atvN+uOS+xgcI9XCCZPrWt0szZVK5ZYe +REPZC5cRtzZiZBZXhJblFTW+EFp38fF9rtt2MneCJkcE5jTSggfwbqQXErwJ7w1+ +AHrG5OmTF6qMJZd817LqYCopVPENyProkT2wsxX8Y8wRSUCnUlzQD+LfE9Nl4dY9 +8sdtfBnwXXkOGCKLiVtoJlwlWw/infNQoaBdmJPtRfCU4mtRvMpYFvHkNzcy0n3H +sssAqZBFrbQpkdxqGxnnIN+elloXS4rm+z0RO+155JxVYhpg4tCXBmPqnkge85OQ +m9SkPiEFl5klbScJmTR78oCjBInB6blaz985QCPjjCIY09FxTobotr/r9RGXz9dU +ZWLG1P63+S3tSoyY0paqf3gytmPu4lFkJHSb3lZvIUXLtUijHzNamOUpXpvgH/1G +RetPNBV8Sr6jB0A8Mz00dA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC4TCCAoigAwIBAgIBNzAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMTUwNDE1MDU0NjU1WhcNMjQwNjE0MDU0NjU1WjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAEesfjPgIkwdQnuATJDFr4dG+XFhxpBILo65NhNhozSMtXYW0Ic7sv +FMY0HTVvaLMUXvooz6dYCCZdlyALcOmeqKOBlDCBkTAdBgNVHQ4EFgQUlMBAG1kS +8CqwbiyqSsqo5eD2vRkwHwYDVR0jBBgwFoAU/3APmZxstw9znibwvEgVQcdvJVgw +DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwKwYDVR0QBCQwIoAP +MjAxNTA0MTUwOTM2NDhagQ8yMDE5MDQxNTA5MzY0OFowCgYIKoZIzj0EAwIDRwAw +RAIgeRzy0d8tHe/anoHVUljuO/xsb5Gd4kzYGEuQ1p8hfbkCIExKyfzqQmwPVY02 +VqtdElPal0CfyRewnZyC9hiDKc1M +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDQzCCAuqgAwIBAgIBVjAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTE4MTEwNDIwNDg0OFoXDTMzMDIwMzA4NDg0OFowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAASCl37O34fo0GoTNWTcwxqzoP8EBkqqQ7xfKx70GfOeNhj0zDd5 +minsxuYA6zMg2yZDOUS0EDvfdcwCTte7plISo4GUMIGRMB0GA1UdDgQWBBRauPIm +ozC/8XbIWc+CJ5uwfs2VljAfBgNVHSMEGDAWgBR27LmVd5N0SQHG45L1UydCb6EL +UDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDE4MTEwNDIyNDE0NlqBDzIwMjIxMTA0MjI0MTQ2WjAKBggqhkjOPQQDAgNH +ADBEAiB3IFEiW0UKyMeId/TeChR2WO7idzprbPloGFxFzDWeagIgdbvhU1mtRWL0 +UjyzrsV8Gu3nuU7rUCddiXu3vH/CwPo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDRDCCAuqgAwIBAgIBLTAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTE0MTEwNjAwMzEyMVoXDTI5MDIwNDEyMzEyMVowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAAQYjhIU5jSqRygqeUW8vRilMSUyBCfHah5FX4UAweUDdKDxsDDL +qbOA4AuZJdaYIuqNwSwzhl2+2opLTf8ytYgro4GUMIGRMB0GA1UdDgQWBBR27LmV +d5N0SQHG45L1UydCb6ELUDAfBgNVHSMEGDAWgBTn2N0XWNVLQqoC24jrcB5ExpJa +5jAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDE0MTEwNjAyMzAxM1qBDzIwMTgxMTA2MDIzMDEzWjAKBggqhkjOPQQDAgNI +ADBFAiAUaQeuE6Gg8AJhxb9/tfyvL+WZhMkWLA4ow7zOcsjfAAIhAI3Upm2mGaoM +QAkQa/9auuTfUHKPg3Jft7F3u2RqTvTG +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhDCCAyqgAwIBAgIBWzAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMTcxMDA1MTAxNzExWhcNMjYxMjA1MTAxNzExWjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAEB4yd2p3MicAcDEhLqheFnbce5tsykV0ty6DXNM4Mb05gaj1/RFvA +MhmQrfo6h0ealM8x1qa/7Mlh5LtgRtcrsqOCATUwggExMB0GA1UdDgQWBBT1qPmx +56mSoIZUCNsqRxwEohX01zAfBgNVHSMEGDAWgBSUwEAbWRLwKrBuLKpKyqjl4Pa9 +GTArBgNVHRAEJDAigA8yMDE3MTAwNTEwMTcxMVqBDzIwMjExMDA1MTAxNzExWjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjBnBgNVHR8EYDBeMFyg +WqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0FSRS5jcmyG +Kmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQVJFLmNybDAbBgNV +HREEFDASpBAwDjEMMAoGA1UEBwwDQVJFMBgGA1UdIAQRMA8wDQYLKwYBBAGCpg8B +AgEwCgYIKoZIzj0EAwIDSAAwRQIgbpnwE/DNZDnQzohpVzxSFvclPSZD971RoJ5G +n0dFKYYCIQCIZ5CTJtCg1Ulcz8Lv2eGiknT4oc/DHhALit7/QGAS1w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDxjCCA26gAwIBAgIBDDAJBgcqhkjOPQQBMFMxCzAJBgNVBAYTAkJBMQwwCgYD +VQQKDANtY3AxDzANBgNVBAsMBmlkZGVlYTEMMAoGA1UEBRMDMDAxMRcwFQYDVQQD +DA5jc2NhLWlkZGVlYS1iYTAeFw0xOTEwMTAwMDAwMDBaFw0yNTAyMTUwMDAwMDBa +MFIxCzAJBgNVBAYTAkJBMQwwCgYDVQQKDANtY3AxDzANBgNVBAsMBmlkZGVlYTEL +MAkGA1UEBRMCMTIxFzAVBgNVBAMMDmNzY2EtaWRkZWVhLWJhMIIBMzCB7AYHKoZI +zj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPVJiAo +IBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkEICbc +XGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv/IG3 +r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTHLwRp +lwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABFhRXK34 +nBSvr0DokSa6+TdPG7aFGiuLGm6ffN0nGGMMQGjMU4YLBcCB9kZn7yvrPZ9Fg18u +KCwL5OU/gkZyNTmjggFXMIIBUzArBgNVHRAEJDAigA8yMDE5MTAxMTAwMDAwMFqB +DzIwMjQxMDExMDAwMDAwWjAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJMjXxMa +Q07nF7PwI+k2Ycb4zagvMB8GA1UdIwQYMBaAFI8yZxEFKu70DybkCOF3NAbHvkhR +MBIGA1UdEwEB/wQIMAYBAf8CAQAwOAYDVR0fBDEwLzAtoCugKYYnaHR0cHM6Ly93 +d3cuaWRkZWVhLmdvdi5iYS9jc2NhL2NzY2FfY3JsMEIGA1UdEQQ7MDmBFmhlbHBk +ZXNrQGlkZGVlYS5nb3YuYmGGH2h0dHBzOi8vd3d3LmlkZGVlYS5nb3YuYmEvY3Nj +YS8wQgYDVR0SBDswOYEWaGVscGRlc2tAaWRkZWVhLmdvdi5iYYYfaHR0cHM6Ly93 +d3cuaWRkZWVhLmdvdi5iYS9jc2NhLzAJBgcqhkjOPQQBA0cAMEQCIEYSXWb/A3um +6DGCENXxHIq2n4v7qemGTELWdcHcIksJAiBlb6KyoOdip+2R62q6+5wpoDYug4e3 +HEv0aHf3qwV37w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEEDCCA7agAwIBAgICAMswCQYHKoZIzj0EATCBjjELMAkGA1UEBhMCUlUxDzAN +BgNVBAgTBlJ1c3NpYTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5GU1VFIFNU +QyBBdGxhczENMAsGA1UECxMEVVpJUzEUMBIGA1UEAxMLQ1NDQS1SdXNzaWExHzAd +BgkqhkiG9w0BCQEWEGNhbWFpbEBzdGNuZXQucnUwHhcNMTkxMDExMTAxMDM3WhcN +MzUxMDA3MTAxMDM3WjCBjjELMAkGA1UEBhMCUlUxDzANBgNVBAgTBlJ1c3NpYTEP +MA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5GU1VFIFNUQyBBdGxhczENMAsGA1UE +CxMEVVpJUzEUMBIGA1UEAxMLQ1NDQS1SdXNzaWExHzAdBgkqhkiG9w0BCQEWEGNh +bWFpbEBzdGNuZXQucnUwggFLMIIBAwYHKoZIzj0CATCB9wIBATAsBgcqhkjOPQEB +AiEA/////wAAAAEAAAAAAAAAAAAAAAD///////////////8wWwQg/////wAAAAEA +AAAAAAAAAAAAAAD///////////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw +9jvOPD4n0mBLAxUExJ02CIbnBJNqZnjhE50mt4GffpAEQQRrF9Hy4SxCR/i85uVj +pEDydwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3 +v1H1AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQEDQgAEU0qr +KcB47oWWiby4KUXFHtEjkI9nPWp7IGC7QE3+xw/5ZIy5bKA3kpYhBRdnl8d9FLS4 +h/PWqVP4SkvZH33prqOCAQ0wggEJMB0GA1UdDgQWBBSFDFP3Fg5d72SlZ3z3wYSS +BdKynDCBwwYDVR0jBIG7MIG4gBSgHodQJ0WSJ2Di0DFAN14UfEbAAqGBlKSBkTCB +jjELMAkGA1UEBhMCUlUxDzANBgNVBAgTBlJ1c3NpYTEPMA0GA1UEBxMGTW9zY293 +MRcwFQYDVQQKEw5GU1VFIFNUQyBBdGxhczENMAsGA1UECxMEVVpJUzEUMBIGA1UE +AxMLQ1NDQS1SdXNzaWExHzAdBgkqhkiG9w0BCQEWEGNhbWFpbEBzdGNuZXQucnWC +CQDRqAnkuxfpkzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAJ +BgcqhkjOPQQBA0kAMEYCIQD3YNRr536d+6mXwGlb4DT2WngbLBRmXJWulgE1YxNC +UgIhAJFH4TBQN0nOVOTfDX83SlGInOoXgp6wJR8TzeoziqD9 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEOTCCA8CgAwIBAgIIARl/d+5ssrUwCgYIKoZIzj0EAwMwQzELMAkGA1UEBhMC +VVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NBLVVa +QkVLSVNUQU4wHhcNMjMwMjIwMDkxMDMwWhcNMzMwNjA0MTIxOTQ0WjBDMQswCQYD +VQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMMD0NT +Q0EtVVpCRUtJU1RBTjCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEB +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMx +B+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsE +qMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJ +lDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0 +NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYh +d5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafP +Orava3/DEDuIMgLpBGVlAgEBA2IABAFtJIbtePT4Wk2JiRN5+uF0lDs2d/0qUqT2 +jsaOI0EloArqaX1r1hQwcVqv0HJUhGeYT0dLchA+8a0RGRxls9DImb2KksTZ0yr0 +AWlR1NqwyaV1JCzqW/rw22mptWduSqOCAT4wggE6MB0GA1UdDgQWBBTWX1z0KtOk +wQraPTJ0vGORHeSHKjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFLkP +ah+C87VYA8+bMYuIOolUxH8XMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANVWkIw +KwYDVR0QBCQwIoAPMjAyMzAyMjAwOTEwMzBagQ8yMDI2MDIxOTA5MTAzMFowbQYD +VR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JM +cy9VWkIuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VaQi5jcmwwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHDANVWkIwCgYIKoZIzj0EAwMDZwAwZAIwFyD3lQ/No+z/rQHOWYsT+8nXbPrD +3NbiB5rLDuR6sCzpeI2e1QO4qD/abdPj+uk1AjBFO/TWqBOtmSTbBW2Y2MX+FsaX +f5XFrmT5Qx+c6hMLwOYJhrfNcq6xvuKV22HKOh8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEOTCCA8CgAwIBAgIINq+W19LQVvgwCgYIKoZIzj0EAwMwQzELMAkGA1UEBhMC +VVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NBLVVa +QkVLSVNUQU4wHhcNMjAwMzA0MTIxOTQ0WhcNMzIwODAzMDU1OTAwWjBDMQswCQYD +VQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMMD0NT +Q0EtVVpCRUtJU1RBTjCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEB +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMx +B+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsE +qMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJ +lDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0 +NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYh +d5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafP +Orava3/DEDuIMgLpBGVlAgEBA2IABCjPa0FGf3HOCTp//gAzk7E8b3c6bjW/yGoX +veUWBoXdB6c0jUKDUgJJxku7+wn5dRVkYeRuTEishz7M0t4UBWzaxN5aBRS3Z3rY +jyTz8EgnxK2ZkrRfbWWQn7KyXQTW+KOCAT4wggE6MB0GA1UdDgQWBBS5D2ofgvO1 +WAPPmzGLiDqJVMR/FzASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFFFG +dnT08vRiaEDqACwSH4huBx9HMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANVWkIw +KwYDVR0QBCQwIoAPMjAyMDAzMDQxMjE5NDRagQ8yMDIzMDMwNDEyMTk0NFowbQYD +VR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JM +cy9VWkIuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VaQi5jcmwwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHDANVWkIwCgYIKoZIzj0EAwMDZwAwZAIwY5ICk3yvpQg5cZo5dnoTMEQdvsvB +f7klNpRnlOsHoAknCCMpPkypSvcHhhksfzDgAjAPV0hJ2FrWUZImhcEajqFfIE/T +53hGAsccvdKLWyi9vNGfgOLZMUX9K/09mRFdMCw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEOTCCA8CgAwIBAgIIT5J4wvP9vOwwCgYIKoZIzj0EAwMwQzELMAkGA1UEBhMC +VVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NBLVVa +QkVLSVNUQU4wHhcNMjMwMjIwMDkxMDMwWhcNMzcwMjE2MDkxMDMwWjBDMQswCQYD +VQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMMD0NT +Q0EtVVpCRUtJU1RBTjCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEB +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMx +B+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsE +qMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJ +lDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0 +NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYh +d5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafP +Orava3/DEDuIMgLpBGVlAgEBA2IABAFtJIbtePT4Wk2JiRN5+uF0lDs2d/0qUqT2 +jsaOI0EloArqaX1r1hQwcVqv0HJUhGeYT0dLchA+8a0RGRxls9DImb2KksTZ0yr0 +AWlR1NqwyaV1JCzqW/rw22mptWduSqOCAT4wggE6MB0GA1UdDgQWBBTWX1z0KtOk +wQraPTJ0vGORHeSHKjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFNZf +XPQq06TBCto9MnS8Y5Ed5IcqMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANVWkIw +KwYDVR0QBCQwIoAPMjAyMzAyMjAwOTEwMzBagQ8yMDI2MDIxOTA5MTAzMFowbQYD +VR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JM +cy9VWkIuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VaQi5jcmwwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHDANVWkIwCgYIKoZIzj0EAwMDZwAwZAIwCfjSRNKB47klvr0Udvm5b3csWacH +qV6J0uJYXFmCvgQOSGxOZU02CeLbqW3luM/AAjBWZVVvRqozjNCGIzURPKXAvdOj +igVeDcd6gGJ36RBDiW3htuhDnAfxW3vg9/Rjmqk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEOjCCA8CgAwIBAgIICBiOSszdbIMwCgYIKoZIzj0EAwMwQzELMAkGA1UEBhMC +VVoxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDR0NQMRgwFgYDVQQDDA9DU0NBLVVa +QkVLSVNUQU4wHhcNMjAwMzA0MTIxOTQ0WhcNMzMwNjA0MTIxOTQ0WjBDMQswCQYD +VQQGEwJVWjEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANHQ1AxGDAWBgNVBAMMD0NT +Q0EtVVpCRUtJU1RBTjCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEB +AjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMx +B+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsE +qMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJ +lDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0 +NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYh +d5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafP +Orava3/DEDuIMgLpBGVlAgEBA2IABCjPa0FGf3HOCTp//gAzk7E8b3c6bjW/yGoX +veUWBoXdB6c0jUKDUgJJxku7+wn5dRVkYeRuTEishz7M0t4UBWzaxN5aBRS3Z3rY +jyTz8EgnxK2ZkrRfbWWQn7KyXQTW+KOCAT4wggE6MB0GA1UdDgQWBBS5D2ofgvO1 +WAPPmzGLiDqJVMR/FzASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFLkP +ah+C87VYA8+bMYuIOolUxH8XMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANVWkIw +KwYDVR0QBCQwIoAPMjAyMDAzMDQxMjE5NDRagQ8yMDIzMDMwNDEyMTk0NFowbQYD +VR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JM +cy9VWkIuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9D +UkxzL1VaQi5jcmwwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKkEDAOMQwwCgYD +VQQHDANVWkIwCgYIKoZIzj0EAwMDaAAwZQIxAIK1P8NhnT6zwHBTxjbiulSSLE+a +wKaNZ2mgVwKtuOiPxGXnn0Ii10FXiwSwMJL6PQIwdFoA1FHyzQ5VUeO2L0KwAjYP +5uUv01rN1PcMxRwrMpyymunwAACPbhtIUBKUQJhQ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIERzCCAq+gAwIBAgIEAQAAMDANBgkqhkiG9w0BAQsFADBCMRcwFQYDVQQDDA5D +U0NBIE1hY2Vkb25pYTEMMAoGA1UECwwDTU9JMQwwCgYDVQQKDANHT1YxCzAJBgNV +BAYTAk1LMB4XDTEyMDMxOTA4MzUwMFoXDTI3MDYxOTA4MzUwMFowQjEXMBUGA1UE +AwwOQ1NDQSBNYWNlZG9uaWExDDAKBgNVBAsMA01PSTEMMAoGA1UECgwDR09WMQsw +CQYDVQQGEwJNSzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKrJgMAw +9DS7mvPrrQO7/CUto7F4jLGDqYjaBAbNro3ETm2mZbFA8ymtsTkkXMbXjJ06VrJn +pK9JbNyDnyZNESAoRwL0V8RqQ72rLsH70JRlah6lJIvLK9VQGDNwV3SDa+fyXYOO +ZoZMlWRgIiQc0o//LU8hqb5SnG1gbTG61kmRbwLjFu/nMnFQMF8xSsEnOf7okZlc +dIjW6cNjSvDMtGS1pHG6jkDGNbZKieZPLd3Xd+Q8C9POE28+BsVr/qzCdIX9tLAT +m68YWJCJhBpF90XRFZlInxRcuqLjHo3LGkyl+ztlwIW2wlzXLHIOBuZPF4dw+SIe +yF74Us6YuwShPTjs/Ho38hmunaoinHJfgnAe+FbC6vYvMHfYXbp/pMwSEVDG1d4g +vDX0Q3BzoVfgeHYX1OLFShezyy5pIGQSSEE2TeB2jroIec0YGgBZd4YgQmkdUUFw +RDL4LDTLuBzSGKW3ogv1ODAqKDslOacAXAnzlR5p25jCLW2V7X33slfqgwIDAQAB +o0UwQzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQU5Wj6d0XeO9EzaKemxwIae3wIKpQwDQYJKoZIhvcNAQELBQADggGBADiyFhle +hMOnN04Zrqj/qAIBug1vMCDKMTYkgOguKvU/oescsi45liXsj6tRb12ZjmrQSH5W +JBeDbSabX5V2Daa7bdi4wPUiM0NkMSsL+c6purVDLbcUwH3y409XwVaqv4pb8g5i +6N8FvMLxlOQVaARhHApEPvjGj8hNw/UPCDCyYOmy3fudgpsHan2PditFMR+UbkXQ +dI32tBdGMOYBJNUlyTk4AJ1c0ayUsZ6yu/qf3jeVy4VsXpyZpk8BX4CsfQzHB7Cy +rCOm7OqaPB/jgrlp6FNlz3Ory0/9dI8La3sZcEuYmlYpEYlwgf9XfT54p5V6cfEj +QHM1Sj5bsjqJNdSuA7TQafiHTRuX/5SVnDwRiuMI+h3QI1nTGekxceN1eKf8m4TZ +aC4EKiawTt00quUZyFATcAJ146sGrBbB9qsmKCnwhd3tQqdt/Mei1RGNfY8SglzH +uWL1myoHOwxiRB8YbGL75I3pYrSIWGMh20g1F7ChbTgCPlq5zoep+gxQsg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIERzCCAq+gAwIBAgIEAQAAWzANBgkqhkiG9w0BAQsFADBCMRcwFQYDVQQDDA5D +U0NBIE1hY2Vkb25pYTEMMAoGA1UECwwDTU9JMQwwCgYDVQQKDANHT1YxCzAJBgNV +BAYTAk1LMB4XDTE3MDMxNDA4MzUwMFoXDTMyMDYxNDA4MzUwMFowQjEXMBUGA1UE +AwwOQ1NDQSBNYWNlZG9uaWExDDAKBgNVBAsMA01PSTEMMAoGA1UECgwDR09WMQsw +CQYDVQQGEwJNSzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAL6rafEV +mzmSwXGbPJmHuyUXENUkRjk0fPl0TPHvNY2p5/6kJdNMx3RzqVpcHrsCmzH3Ez+b +vQMsrtuCIXOxPnR7gO+H2DbPdvlVdowHHLdbIivsNFmGm5rf/wfJEKTJQfaO0vKW +XUXIbggQ8RIQ5f9bPeLALmwJjR3MHWPVn4yz1h6LjEbR082z6zfXCxY0I7KoaL8q +FKQmZxmAb/Z8B/Bt0Yz/UZp/25xud93XNr0I+zTSmiko+LS/mgWoq4lktpzZvVkX +JbXh/jEnoInuSFx3oiCsGN8z0P8MQ33qPdTdQ8ruC7XW15rOuE4ih9TbEj+bA0qj +EJ3yDx6gGg5bYK0NeoSVjlo1Aa3mXjQ60liTRIn5X9O9lp07sp6gyLSaylC7gsH2 +vkhm/j2/IJbg09VOxyZVUBGqEtS1U/rjDgj6h5uEEgWVjFgsgTs3MoiFCgOB7Off +vh0lb96s8q9QNxg/NxBP2H6ecaKHXYSxcOIJVE1w1XJruzY3bk8ffk4iSQIDAQAB +o0UwQzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E +FgQUnrTZsCB6ninwDR07QtWdxql5kQwwDQYJKoZIhvcNAQELBQADggGBAH2uULrE +Vf3bksq40D+zvn+bfYy30kQtMuvuJ1iBIOLF24TKqs/wEpQ8+OFwk9Fn7BCUDSgZ +uZvnqFpEevfO7zRWh1NRp4BnVNHB0oG1hqrnqtVYvhA7sSaYryZc09LWeYoq3ynH +v6IUDWTifvrcX47hK7MWd1+eKsQvwbj3pktD2I/OkluUmoKHCy4vmojeWE5QoyX3 +9wG0LTFWy5d78wQEcE1VgAggvZspLRQn2tzJaIB1rcdwZB2nosjPd2L7y+bV6OlW +mQJw6C5xT8Zcq021BR2MR7t2uzMZ2nbt3rBy6RpBVzYmzyFB8xvvN45c34nDSNYY +nHWIbKzFLOwDqr97fVaI1m4iV9wcy7acDpKtAYcYQ9M05Vyup2br3u2lfkhzzMoW +/85AZe7N37tshXqFoO7Bour7YaUr9t8f5OXq0Rj/huNegp1B/xbBc3MfECNLlXND +C1MdfRK8sV2jtpS7DwfzX7PtEZrXuhdiQpHuXwGnQX2ac4iKadzuNP60nA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEdDCCA/mgAwIBAgINAZuh45gDxcFwc8UyCjAKBggqhkjOPQQDAjBRMRUwEwYD +VQQDDAxDU0NBIEhVTkdBUlkxHTAbBgNVBAsMFE1pbmlzdHJ5IG9mIEludGVyaW9y +MQwwCgYDVQQKDANHT1YxCzAJBgNVBAYTAkhVMB4XDTIzMDQxMzA5MDAwMFoXDTM0 +MDEyMDA5MTUwM1owUTEVMBMGA1UEAwwMQ1NDQSBIVU5HQVJZMR0wGwYDVQQLDBRN +aW5pc3RyeSBvZiBJbnRlcmlvcjEMMAoGA1UECgwDR09WMQswCQYDVQQGEwJIVTCC +AbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////////// +//////////////////////////7/////AAAAAAAAAAD/////MGQEMP////////// +///////////////////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+ +5+SYjgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEEqofK +Ir6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3Nhfe +SpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA +////////////////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlz +AgEBA2IABIN3NPA+NcOMs12jbjWB9k+jj/ZXPfZm0glOFdoWQZNgtLDrswzBKiK0 +RSb2TaCe9edFak4kh55ebSF9cVWvYSvJnqYiURvcThMh/fJ0Sc/Ad6p8iDTnoYa9 +bVp+zaBidqOCAVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD +AgEGMB8GA1UdIwQYMBaAFOV2Q2Ci6Iger06tTwG4ebxGay7GMB0GA1UdDgQWBBST +Jbk39V0vZCOMa/mi+SgTpTCUIDArBgNVHRAEJDAigA8yMDIzMDQxMzA5MDAwMFqB +DzIwMjYwNDEzMDkwMDAwWjANBgdngQgBAQYBBAIFADAzBgNVHREELDAqgRZjc2Nh +LWh1bmdhcnlAYm0uZ292Lmh1pBAwDjEMMAoGA1UEBwwDSFVOMDMGA1UdEgQsMCqB +FmNzY2EtaHVuZ2FyeUBibS5nb3YuaHWkEDAOMQwwCgYDVQQHDANIVU4wRgYDVR0f +BD8wPTA7oDmgN4Y1aHR0cDovL255aWx2YW50YXJ0by5odS9sZXRvbHRlcy9DU0NB +L0NTQ0EtSFVOR0FSWS5jcmwwCgYIKoZIzj0EAwIDaQAwZgIxAO01PKJyX0jkyCQ7 +yP3RxeSMVMh14A/SHimkUQVTHFqfaeOD5WJp2J8S/ObjX9HezwIxAICHmgyoYiPS +roTX5/TnDAN+oRFxAkkOVZnen49cU9YAWeM3VBeoZvV0mTM4aIt+1w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoDCCBCegAwIBAgIBATAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJERTENMAsG +A1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYDVQQFEwMxMDIxFTATBgNVBAMM +DGNzY2EtZ2VybWFueTAeFw0xNjA3MjYwODQxMjBaFw0zMDAxMjYyMzU5NTlaME8x +CzAJBgNVBAYTAkRFMQ0wCwYDVQQKDARidW5kMQwwCgYDVQQLDANic2kxDDAKBgNV +BAUTAzEwMjEVMBMGA1UEAwwMY3NjYS1nZXJtYW55MIIBtTCCAU0GByqGSM49AgEw +ggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZ +f7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieH +E5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc +0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej +537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcL +Kf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHf +FS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUCAQEDYgAEdVfPID4LAMXY +oFmN/8VCXXLEm+rsxR/9E4HDXP27vqPqs0E09z6CAtA265ZbjWItC6GGGnsX+uY5 +yMJ5gi5e3Z3Ln8wTXj3dWmJmixM/ad2nMADR7b/FAU0AhqNJdyGCo4IBlDCCAZAw +HQYDVR0OBBYEFM1jlJfNnoxHdPkqIkpqCH5LcwEvMA4GA1UdDwEB/wQEAwIBBjAr +BgNVHRAEJDAigA8yMDE2MDcyNjA4NDEyMFqBDzIwMTkwNzI2MjM1OTU5WjAWBgNV +HSAEDzANMAsGCQQAfwAHAwEBATBRBgNVHREESjBIgRhjc2NhLWdlcm1hbnlAYnNp +LmJ1bmQuZGWGHGh0dHBzOi8vd3d3LmJzaS5idW5kLmRlL2NzY2GkDjAMMQowCAYD +VQQHDAFEMFEGA1UdEgRKMEiBGGNzY2EtZ2VybWFueUBic2kuYnVuZC5kZYYcaHR0 +cHM6Ly93d3cuYnNpLmJ1bmQuZGUvY3NjYaQOMAwxCjAIBgNVBAcMAUQwEgYDVR0T +AQH/BAgwBgEB/wIBADAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vd3d3LmJzaS5i +dW5kLmRlL2NzY2FfY3JsMA0GB2eBCAEBBgEEAgUAMB8GA1UdIwQYMBaAFM1jlJfN +noxHdPkqIkpqCH5LcwEvMAoGCCqGSM49BAMDA2cAMGQCMD7aA8D/JueefxfzqHYd +GByUB30IMFibTksnMR0KV62fAyFW2e2iw7p6tj9u83VwPwIwTJB5V/cnCnatybh0 +HKEsoKt4wiRUUIsqFkdZZHd4wTYOlcCNjKH2mpN/QD5W1tJ1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEoTCCBCigAwIBAgICAJswCgYIKoZIzj0EAwMwTzELMAkGA1UEBhMCREUxDTAL +BgNVBAoMBGJ1bmQxDDAKBgNVBAsMA2JzaTEMMAoGA1UEBRMDMTAxMRUwEwYDVQQD +DAxjc2NhLWdlcm1hbnkwHhcNMTYwNzI2MDg0MzMxWhcNMjcwNDMwMjM1OTU5WjBP +MQswCQYDVQQGEwJERTENMAsGA1UECgwEYnVuZDEMMAoGA1UECwwDYnNpMQwwCgYD +VQQFEwMxMDIxFTATBgNVBAMMDGNzY2EtZ2VybWFueTCCAbUwggFNBgcqhkjOPQIB +MIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFa0ErHa +GX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvDgsY9jBUMPHIICs4Fr6DCvqKOT7In +hxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQwBKjH3SLOKCaLObVUFvBEfC+3feEH +3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwRBGEEHRxk8GjPRf+ipjqBt8E/a4hH +o+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH1K8eir4ddSD5wqRcseuOlc/VUmK3 +Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0EmPFMVAjEAjLkegqM4bSgPXW9+UOZB +3xUvcQntVFazHxZubKwEJafPOrava3/DEDuIMgLpBGVlAgEBA2IABHVXzyA+CwDF +2KBZjf/FQl1yxJvq7MUf/ROBw1z9u76j6rNBNPc+ggLQNuuWW41iLQuhhhp7F/rm +OcjCeYIuXt2dy5/ME1493VpiZosTP2ndpzAA0e2/xQFNAIajSXchgqOCAZQwggGQ +MB8GA1UdIwQYMBaAFMF7qRX3XN3Saz1gmiNU3hLuPw7GMB0GA1UdDgQWBBTNY5SX +zZ6MR3T5KiJKagh+S3MBLzAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAx +NjA3MjYwODQzMzFagQ8yMDE5MDcyNjIzNTk1OVowFgYDVR0gBA8wDTALBgkEAH8A +BwMBAQEwUQYDVR0RBEowSIEYY3NjYS1nZXJtYW55QGJzaS5idW5kLmRlhhxodHRw +czovL3d3dy5ic2kuYnVuZC5kZS9jc2NhpA4wDDEKMAgGA1UEBwwBRDBRBgNVHRIE +SjBIgRhjc2NhLWdlcm1hbnlAYnNpLmJ1bmQuZGWGHGh0dHBzOi8vd3d3LmJzaS5i +dW5kLmRlL2NzY2GkDjAMMQowCAYDVQQHDAFEMBIGA1UdEwEB/wQIMAYBAf8CAQAw +MAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3d3dy5ic2kuYnVuZC5kZS9jc2NhX2Ny +bDANBgdngQgBAQYBBAIFADAKBggqhkjOPQQDAwNnADBkAjBd3GejEz890cl4hdjB +f1GaZ0pQ/Do0IisTPwWmqKk1O2XfOEGQE7JIBP61pVRd+bECMHWuWR0DKV7h3slm +1MxzYizjscrgCVYk7AloR/0m6qp8Av/jVjaR1e1I2GZxsZlZ/g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEqzCCBFGgAwIBAgIBZzAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTIwMDcwMjExMDM0MloXDTMzMDIwMzA4NDE0NlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCAbUwggFNBgcqhkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEAjLkegqM4 +bSgPXW9+UOZB3xUvcQntVFa0ErHaGX+3ESOs06cpkB0acYdHABMxB+xTMGQEMHvD +gsY9jBUMPHIICs4Fr6DCvqKOT7InhxORZe+6kfkPiqWBSlA61OsEqMfdIs4oJgQw +BKjH3SLOKCaLObVUFvBEfC+3feEH3NKmLogOpT7rYtV8tDkCldvJlDq3hpb6UEwR +BGEEHRxk8GjPRf+ipjqBt8E/a4hHo+d+8U/j23/K/gy9EOjoJuA0NtZGqu+HsuJH +1K8eir4ddSD5wqRcseuOlc/VUmK3Cyn+7Fhk4ZwFT/mRKSgORkYhd5GBEUKCA0Em +PFMVAjEAjLkegqM4bSgPXW9+UOZB3xUvcQntVFazHxZubKwEJafPOrava3/DEDuI +MgLpBGVlAgEBA2IABDXclCnGI8I7ZjBdUEJrLtu79tffHDfJDrfZLSJtn5ueaEG7 +5xVDSlUUAVAtAGQ2tYjHayS0PkDBoLtSOJm6od3VlTBxySEaE5zV1VxDpL2QkmDs +LXOtjRvqYkdw4lKyw6OCAXgwggF0MB8GA1UdIwQYMBaAFFq48iajML/xdshZz4In +m7B+zZWWMB0GA1UdDgQWBBSf8zCfozbsKURoFsDCdMqLao6IGjASBgNVHRMBAf8E +CDAGAQH/AgEAMFIGA1UdEgRLMEmBGGN5cC1jc2NhQGNybWQubW9pLmdvdi5jeaQQ +MA4xDDAKBgNVBAcMA0NZUIYbaHR0cDovL2NzY2EuY3JtZC5tb2kuZ292LmN5MCsG +A1UdEAQkMCKADzIwMjAwNzAyMTEwMzQyWoEPMjAyNDA3MDIxMTAzNDJaMDkGA1Ud +HwQyMDAwLqAsoCqGKGh0dHA6Ly9jc2NhLmNybWQubW9pLmdvdi5jeS9jc2NhL2N5 +cC5jcmwwDgYDVR0PAQH/BAQDAgEGMFIGA1UdEQRLMEmBGGN5cC1jc2NhQGNybWQu +bW9pLmdvdi5jeaQQMA4xDDAKBgNVBAcMA0NZUIYbaHR0cDovL2NzY2EuY3JtZC5t +b2kuZ292LmN5MAoGCCqGSM49BAMCA0gAMEUCIQCBChlZe3nDjB4KbI6uRLNXJUpF +Ip42F0r/r2F7Wj52VgIgX/vRP+6yjRfGW9d6vBDBtPzl2VVSIwlzacpiRgTKDh4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIErTCCAxWgAwIBAgICBH8wDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEwx +IzAhBgNVBAoMGk1pbmlzdGVyIGRzIGluZm9ybWF0eXphY2ppMR0wGwYDVQQLDBRD +ZW50cnVtIENlcnR5ZmlrYWNqaTEUMBIGA1UEAwwLQ1NDQSBQb2xhbmQwHhcNMjIw +MzE2MTEwOTM5WhcNMzMwMzE2MjM1OTU5WjBnMQswCQYDVQQGEwJQTDEjMCEGA1UE +CgwaTWluaXN0ZXIgZHMgaW5mb3JtYXR5emFjamkxHTAbBgNVBAsMFENlbnRydW0g +Q2VydHlmaWthY2ppMRQwEgYDVQQDDAtDU0NBIFBvbGFuZDCCAaIwDQYJKoZIhvcN +AQEBBQADggGPADCCAYoCggGBAKQeZnfYEdg5k878O173bdgF4Cso52EgxfrnC8rZ +p2z4Iu5LKyC3vImyhRdk9/dkNf6BSRRpXqKIURTZmh66bVlJGql9J+tx6gEgF9Qv +5yYdsGsg0Qtof9uVl1yb5eeZ375gHsoLYPcZDYa5p2+o8XmyP8XDMTurwYpgAZsw +nCnTaBWoHCOB3kvP/vo5QLYdLfKGTf+LUvgKTlRXZevnTf7giAJTkzX33dJq5tdn +xm8sJhLxhZejrYfwaBmC52kwWmpPvDozNIs8gKIbfPOycRs5c/JiaURN68EasWSY +lU1H+x3fpGDlaLSR9M6X17d6PgwCRpcOpA45Lm+Z8iQpngR8+3uLQjM7a10XIcVG +oBnfWOWaRxqZTrKaiVeJoBhZ7e8+l2fX5dscdhiopEzJpXa3noQOtnvQMCTGFmUc +tk4bwtZk2JyrlpY/pKxvfTByh4iMO/cumNUz1VlsVLKr+rQJR3pRMJD8KnduBt/F +hdhRITcX+Uhw2sU0aCHFwDqyqQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRoE3cmX3Hzyp+3reZaxyrSq+5gOTAd +BgNVHQ4EFgQU+Na6x8KPlUIjRjPOMe4rrLCUwnMwDQYJKoZIhvcNAQELBQADggGB +AG3Wukns5jfv2HwbDfRg5Z+EBPAXreyDLpx6HG/6Syy2pF6WhSZDNMzJOCgJ62J9 +2wuwtLZ/TepBkz7suDTrfkkrIVG1g/aNfFlOXfa660V0aiy47XbGKzvJrysru2DD +7xYrF0F6/x+Y+3f938H2AXl/eJOtHo9CKXAcgTXzAPr908cFgwiKzRE+gPHgmvgj +t+ilLSnZSEV9LN64wmxpgmtbVQGrY+Z7lEOBMyI7bjfOSWGjM+PcEtgpdz6FHcUS +YcGQUXP+ni00fk7KvvAgCbEEg2w+8Bb4FQo4z+81pEWmLuD7bozmUAglFa9jTti5 +tMN2MhMUOUa6Rg0Bcnh8zR1y3KdMvxGbqyCzuo4GVbKoWx7KkMHQEjzvs93Hisde +SBRUMe76Cax4Y7jEBTL+vSnf9KNT2Fo/5lJLmcaBerJNT7wX1QtSc+Mxu83AZyH9 +RzVObTBiH93I7aEUTiS9R5wQDMtjM1VUapHdyl01uXoKGynjoInNM+vOXnOBGyI/ +tA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEsTCCBDigAwIBAgIIKi5AS8wwz54wCgYIKoZIzj0EAwIwcjELMAkGA1UEBhMC +TloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxJzAlBgNVBAsM +HklkZW50aXR5IGFuZCBQYXNzcG9ydCBTZXJ2aWNlczEWMBQGA1UEAwwNUGFzc3Bv +cnQgQ1NDQTAeFw0yMTA0MTMwMTAzNDBaFw0zMTA4MTAyMzM5MjJaMHIxCzAJBgNV +BAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYD +VQQLDB5JZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBh +c3Nwb3J0IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AP/////////////////////////////////////////+/////wAAAAAAAAAA//// +/zBkBDD//////////////////////////////////////////v////8AAAAAAAAA +AP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0q +hcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9V +KWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+ +gZ16Qx18kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoN +skiwp3rs7BlqzMUpcwIBAQNiAATQDrtd7vYEUB+vkxPogSnAvSUOEL6YkuJUBFN4 +ybzOA2YrOd60NzQHz3V43av91YykBpfWJYmG1TPSLyxo8nuGwy/aq9Vp7GaY/wdO +fmw7bPxlnD298IghhadJEXk0AzKjggFYMIIBVDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFNaeFTvflJhsGtLpga2twzGvcb5xMFIGA1UdIARLMEkwRwYI +YIQqZQgBAQMwOzA5BggrBgEFBQcCARYtaHR0cHM6Ly93d3cucGtpLmdvdnQubnov +cG9saWN5L2VQYXNzcG9ydHNfQ1BTMG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvTlpMLmNybDAwoC6gLIYqaHR0cHM6 +Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9OWkwuY3JsMB0GA1UdDgQWBBSf +DiwfklhMCORb0w342AI8cXP6jTArBgNVHRAEJDAigA8yMDIxMDQxMzAxMDM0MFqB +DzIwMjQwNDEyMDEwMzQwWjAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwIDZwAw +ZAIwRZ+cIrrlDVin9ySv1FT+YUHwYyaKgls9sQXmeys/UuPULY5AR/VUua4ACXhg +O5PtAjAmvgOgNlb/vWW8oAu3ufJSu7Z3Nrt0J/dMNlCab3qmmbA/9S1JY056LogN +m2J/P+k= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEsjCCBBOgAwIBAgIJYAPIYKCGNMoBMAoGCCqGSM49BAMEMIGiMQswCQYDVQQG +EwJUUjEwMC4GA1UECgwnUmVwdWJsaWMgb2YgVHVya2V5IE1pbmlzdHJ5IG9mIElu +dGVyaW9yMUIwQAYDVQQLDDlHZW5lcmFsIERpcmVjdG9yYXRlIG9mIENpdmlsIFJl +Z2lzdHJhdGlvbiBhbmQgTmF0aW9uYWxpdHkxHTAbBgNVBAMMFFBhc3Nwb3J0IENT +Q0EgVHVya2V5MB4XDTE4MDIxNDA4MjY0OVoXDTMxMDUxNDA4MjY0OVowgaIxCzAJ +BgNVBAYTAlRSMTAwLgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkg +b2YgSW50ZXJpb3IxQjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2 +aWwgUmVnaXN0cmF0aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3Bv +cnQgQ1NDQSBUdXJrZXkwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAHtf31NQHzc +rT9W9LTBnBuq9ZGrm2cBsnmZO6wiJuATubfDxzFvUpjS139IGW9BT2E0Jg9coLyv +TQPHDEjGU8VjzgEWQuCqb3rDmt4n9cPuU9JZW2sRI+/B4Ymmnw6rOpItxy4P51Zf +Jy34T/LCK/QCUMm3zG+gP8ZtU66ObHQkGIZi2aOCAeswggHnMB0GA1UdDgQWBBSH +sBmAfaLMtph7B3MWVgOx9c6y/jAOBgNVHQ8BAf8EBAMCAQYwgYYGA1UdIAR/MH0w +ewYLYIYYAQIBAQUHBgEwbDAyBggrBgEFBQcCARYmaHR0cHM6Ly9wYXNhcG9ydC5r +YW11c20uZ292LnRyL0NTQ0EvQ1AwNgYIKwYBBQUHAgIwKgwoVmlzaXQgb3VyIHdl +YnNpdGUgZm9yIGNlcnRpZmljYXRlIHBvbGljeTASBgNVHRMBAf8ECDAGAQH/AgEA +MEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50 +ci9DU0NBL0NTQ0FUUl9WMS5jcmwwUwYDVR0RBEwwSoEWcGFzYXBvcnRAa2FtdXNt +Lmdvdi50coIeaHR0cHM6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRypBAwDjEMMAoG +A1UEBwwDVFVSMFMGA1UdEgRMMEqBFnBhc2Fwb3J0QGthbXVzbS5nb3YudHKCHmh0 +dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50cqQQMA4xDDAKBgNVBAcMA1RVUjAr +BgNVHRAEJDAigA8yMDE4MDIxNDA4MjY0OVqBDzIwMjEwMjEzMDgyNjQ5WjAKBggq +hkjOPQQDBAOBjAAwgYgCQgEzv4hXyNc1UrvRjOHHe2iXZPFhkyXH7Oy82hJzfrFb +gWvxVa6fhvlOUjevJmAjH/hdvs7WaP+7foTYcEb3K95N/QJCAfTC5MNK0P+g5+wu +6/dCcdJMXGBdzZ//x7U58sYEugEzrhE3+nigZzfplet9sAQERW0e7dcXJDMOZrms +TNAK8jqC +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEtjCCAx6gAwIBAgICAxswDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTkwMzE4MTYzMzM2WhcNMzAwMzE4MjM1OTU5WjBnMQswCQYDVQQGEwJQ +TDEjMCEGA1UECgwaTWluaXN0ZXIgZHMgaW5mb3JtYXR5emFjamkxHTAbBgNVBAsM +FENlbnRydW0gQ2VydHlmaWthY2ppMRQwEgYDVQQDDAtDU0NBIFBvbGFuZDCCAaIw +DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAJpspX4b1AtJ8Ltjqtt+L0UjT7GN +/TcG5DmtZ+gZfCnN9ZfOoVC+vvs6612TnwlH5ZtSDwSPe/Nc11S14FevcjDkXhPi +W+gNTZVyv7jhFHTpbXpG2cczNUF0Rd4uR6alWsliUXSiopp1m20xoqwIMhNG52ws +egLJbJj5+4/0RZlzYojk7CDwAsRG2vZDZ68lKMg8uDYYYIFaX7VtRsMBJD7exq4g +kkRPWC1IeW2VSJ5D7XgJpYv2qbKdl4LUFTPz/QAM7uVXVwqADb/eO1l7pW/Pyl7/ +w1Oh5octA10IuQcW79b/xPVWAttiD+uYNTKjOyvmO+t7c/UxaZNlZg4fbVgoH0Va +wj8qogSOJHJQ9Cf0w6bNkeA3oJk4Qn12bwT679EgIvddOzoOa9UkGCW87GiqGkcY +2BQwwNvsCqyJ9agnsjkmafWQ1foDc/wIr49sNkeqq+yKBhVV79UoZOMbN4xyRFAi +yRe/kvc5lNA+C2ds0W9Nt2ZwdQnqK8bP+AkZOQIDAQABo2MwYTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSqW1+fQNbRn7emT2QH +zJyBh260PzAdBgNVHQ4EFgQUaBN3Jl9x88qft63mWscq0qvuYDkwDQYJKoZIhvcN +AQELBQADggGBAHBrEuL5VQzvyuzX+RQ3BmVcsrYMVEFGIaJNUl5Elh8zJ2b3a/ve +LOPGyPuAST6ckiHlqGw15y8kdE9YIaND1RUQkS7zxL+2rT+0BBo8yfJJyUS33Wzy +0wIljMElNPyRRv5ey5KoFs0+fZFvF4bg1h195XB5mkjipoiJd1YR7C0NrmnJ5tun +CRTMcNwg7Y8GjfDuIO6rhd0imgY2se5lmjSqCn//zjRvNVTuKBVqitTosAiUL3bJ +dyEM7XWUXyxiUkONsZ/S7uPvvn1jECYJjKawYZKGzArCLnk6m/ngsPNct9tw8MZJ +7MhPSTPTeyZjqTNodhS+flXlz1tB3XAVSK2gMiqA5wwNTjI6uIfEcitwLTdRdbcA +zT3z1JGDWwBUsXeDDx6dThwvceLdO8n6YVgKN4B0LLwM9g3gk/mr1uhPWpisAKAZ +KJ0PfnpwnICkVuu3Cxa/yWJy4o3Pj/eyOkEtpGJRy6fkq6N1OfYLSAXLRLl1F157 +2r9Q4w4nVEOkWQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAkowDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTQwOTE4MTAyMDE4WhcNMjUwOTIxMjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMgRvOR1bwEQoyWw +Yt+nYRNye/2im99Ryw9ZP2cpv2pDFc/+ND3riyc7NdulbbHWutoM1LiX/dCn/ct1 +PUzeFuc/ER+n+l7aoF1JhbLY0uSbOIuaS+1/8ZCu4oEWktSlJkBJKk6rMgZ39xuW +eS8P0AmJHeiI75RbT1Ccl7iflw2Lt6pIXF++Xc+DZhyckCzxtelZoC4RkbWMzyZ8 +VoQAyIJX1c0Iy1cZrqSUb0LJxrbZuDB73Xq7T7RF4sN8SXpxCHqUXnsLx1MSDaCH +UYky4rv7MBTkLaqusfs0MzEsf7SSJka9/kwXy/cap79NKJ+9aWdEPlXxosHctaRJ +n8DqY52S170gCd5RDONgQzLJ4Ykhbu9zzJXBiAei9+j0+vJXHbe6xKC3rLsbbPIK +m6Q0ozLzv2TsKSxzwnRjfn1lahpUibHV11K3OCYevWV8TC62HKWOBh2jzAS6JVO7 +VqN98D8LfhSBdYiAIPtp1ez1OmuxckMEerJT9Bqr4qdY9ziiSQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRThXBm ++CUo7sF7ffJk3tDqATIEzTAdBgNVHQ4EFgQUljVLq8FPxxENdNbMylT7rgMRmicw +DQYJKoZIhvcNAQELBQADggGBAB5qZR1XLtGDV9oatlWngzGsZ+od/NFiU5o42XQU +jjbzHziqqFdwoEVhFmj8fbQAhnwZKrjFRY91sKEby12T4mBAhPfZ7hGzMPlDC9BV +kvHh4UJcw3Cd6JuZh6kZevTsCyebIELTWImsf7smro6oJ6Cabu7wciFTTOy/VXZl +uN2ipUsFWgU1lSyMa2t4NwuRdQaKnGeJ5TD7Ub9JZk316838o+MwBL8tOSiWVIrB +i2EV5JGxUv+Rqo2KcmTCQ11qNNf6Ndr+tDR8ln944A5bkiugt3WK1GoNtx3padgA +tBeXzIAjcgrVBQ4a0M9Sqa8FaYlZIFJIPzgw6ddyk/91xWSXpGTCq/cF8e3cv53c +54ZHhf8K0n1c/Eo69mQyitfAQ2PIZ5drYS+ivmKYxztdG2Gla/jofEtmJFjNea3q +IIp7XI5WjIuTEMUx+khjUXvJ46pEELOubsfbnqdb+ZrHJEtSlG0K6zij2FKQmolw +OJcBrIwgi2ItLSJrKqRx6HfTUQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgICAuEwDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCUEwx +EjAQBgNVBAoMCUlDQU8gQ1NDQTEOMAwGA1UECwwFTVNXaUExPTA7BgNVBAMMNFN5 +c3RlbSBXeWRhd2FuaWEgUGFzenBvcnTDs3cgeiBEYW55bWkgQmlvbWV0cnljem55 +bWkwHhcNMTcwOTE5MDkxMTU5WhcNMjgwOTE4MjM1OTU5WjBwMQswCQYDVQQGEwJQ +TDESMBAGA1UECgwJSUNBTyBDU0NBMQ4wDAYDVQQLDAVNU1dpQTE9MDsGA1UEAww0 +U3lzdGVtIFd5ZGF3YW5pYSBQYXN6cG9ydMOzdyB6IERhbnltaSBCaW9tZXRyeWN6 +bnltaTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKrcRO4rN8BAJsCg +WNZcClIoucmna+XOL24Ibz0uIGl0WNMGUtE1To027Je7YZ0EjJ48QdZYD1uGYLXC +w7jBFmAWd5NxS18dUHvS/j9t9xVO+Ehy44GNaVNhjpST84TQBiW/nJ6FYESeQNCB +YLaytIZ2pN4j5O9kWynB5xQoRNy367S08oor67vGxTaXoJpeLm03Qu6/AAZDokT6 +csTvX6AhOIWg6vp27lrkJvYT3H5ER2sHhPcZDVxCs1Beiw8DH9BxS2UOZTk37MLX +NUFSVy2ES1ecnzviH+ytC4yweJxP/y3X2UrrVyxYgMNMuFc1fcfBMvJmSGfwvhnG +T1XffKsBjNbKT6R6AnuzGOXBDjlrOiRcWAvsAKB8ibVP8IrPh8ZP7kCYqxrLRjrU +K7abJ/LxfzBki8vjO6AbajdzFA0ZJNsM/MtYxobL2r00H3S3MeS/FgXUXHmhj8bX +ndfCM7fz5o1AC7fYeF2lypO8BxlSBxXc22EAubbqiNvBxA+coQIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSWNUur +wU/HEQ101szKVPuuAxGaJzAdBgNVHQ4EFgQUqltfn0DW0Z+3pk9kB8ycgYdutD8w +DQYJKoZIhvcNAQELBQADggGBAAHojhEWTOkQDebFmgxMYzgqYDo6lE4wnFQEC2q7 +M2wLHPAtFDnfFPjukFNir676wCiUEHbojJe8OsYoISwLo0EcMc5QEZRSWvo/eSWY +4VuQyF8Se7wc9HK0YLR0m7MXBH1AvCFMVvc8BSWOkXDhOihLj5CN0eIX//cPUlAy +/1PMDybVhaMFdtp9Xrlbv8KA2IHd0ixRKbaBrL8uq+VaxwyrBA40QfN5Z4pHtbdF +bQcZKeFT4eYhfd3an/hAq88U0cvZTxnG7RKBdK0tbVhXtVdYvlxX4A2ojbfP4vZa +ayaobISl2DvJGQH4MGuxN6CfXOcQ9+MNWEHwEpirTZytZaReII7uM24Xra6DT4Is +DIaYgP1lpPtRvFiKp3dHZAJQXr/ZyaNyjDziK+su4aACHtuNWAQfOIHoLjilc1eI +LX9YaWC9Ew2jH60Jix5BAWiYwVi5e4TqMP66zqpJ/+SfvnT1HL8Xjsabkn/KiKV4 +by1McUy3IQ/MjLedK9IdDahjSg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6DCCBG6gAwIBAgIUAMDsWjufMeMxP+eJe0Tm5rYhik8wCgYIKoZIzj0EAwIw +ZDELMAkGA1UEBhMCU0MxRjBEBgNVBAoMPURlcGFydG1lbnQgb2YgSW5mb3JtYXRp +b24gQ29tbXVuaWNhdGlvbiBhbmQgVGVjaG5vbG9neSAoRElDVCkxDTALBgNVBAMM +BENTQ0EwHhcNMjIxMTE0MTE0OTE0WhcNMzYwMjE0MTE0OTE0WjBkMQswCQYDVQQG +EwJTQzFGMEQGA1UECgw9RGVwYXJ0bWVudCBvZiBJbmZvcm1hdGlvbiBDb21tdW5p +Y2F0aW9uIGFuZCBUZWNobm9sb2d5IChESUNUKTENMAsGA1UEAwwEQ1NDQTCCAcww +ggFkBgcqhkjOPQIBMIIBVwIBATA8BgcqhkjOPQEBAjEA//////////////////// +//////////////////////7/////AAAAAAAAAAD/////MHsEMP////////////// +///////////////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+5+SY +jgVr4/gtGRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvAxUAozWSaqMZ +onodAIlqZ3OkgnrNrHMEYQSqh8oivosFN46xxx7zIK10bh07Younm5hZ90HgglQq +OFUC8l2/VSlsOlReOHJ2Crc2F95KliYsb12emL+Sktwp+PQdvSiaFHzp2jETtfC4 +wApgsc4dfoGdekMdfJDqDl8CMQD////////////////////////////////HY02B +9Dct31gaDbJIsKd67OwZaszFKXMCAQEDYgAEPpefkO1cvlp2a8O84QMRBQZaWbMB +WedlwxjK7s7IjXeR4oLspRelR6LtWj+uBzl6hk9H06NiqoXu9Q83Ub7sKSQwRkAs +Zl0yiH2bBoDh0qUNmDMoJx+2+wroD7cjU/71o4IBhzCCAYMwQwYDVR0RBDwwOoEN +Y2Euc3ljQGdvdi5zY4YXaHR0cHM6Ly93d3cuaWN0Lmdvdi5zYy+kEDAOMQwwCgYD +VQQHDANTWUMwQwYDVR0SBDwwOoENY2Euc3ljQGdvdi5zY4YXaHR0cHM6Ly93d3cu +aWN0Lmdvdi5zYy+kEDAOMQwwCgYDVQQHDANTWUMwEgYDVR0TAQH/BAgwBgEB/wIB +ADAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAyMjExMTQxMTQ5MTRagQ8y +MDI1MTExNDExNDkxNFowHQYDVR0OBBYEFBXsrMm4NhIOjyWkJlf1HbhSLHFdMB8G +A1UdIwQYMBaAFBXsrMm4NhIOjyWkJlf1HbhSLHFdMGYGA1UdHwRfMF0wW6BZoFeG +VWh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvU1lDLmNybCBodHRw +czovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL1NZQy5jcmwwCgYIKoZIzj0E +AwIDaAAwZQIxAJfE1BJV6aCcxvhTzW6RnpDhGi7IjvotEaPTj9OQPc1LKfo8tsL5 +KkWuNtCFxwILdgIwO+QeEH3c1hEtyvkTR6a46aotESc9s0rolMvnwDaavCOFIiVD +Hz2JEKNeQDPhIZDR +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE6TCCBHCgAwIBAgIINJuYi77bQqcwCgYIKoZIzj0EAwMwgYgxCzAJBgNVBAYT +AkNOMRgwFgYDVQQKDA9Ib25nIEtvbmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0 +aW9uIERlcGFydG1lbnQxPjA8BgNVBAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5 +IFNpZ25pbmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTIzMTAxMDA4MDQ1OFoX +DTM5MDIwNzA4MDQ1OFowgYgxCzAJBgNVBAYTAkNOMRgwFgYDVQQKDA9Ib25nIEtv +bmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0aW9uIERlcGFydG1lbnQxPjA8BgNV +BAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5IFNpZ25pbmcgQ2VydGlmaWNhdGUg +QXV0aG9yaXR5MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCM +uR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMw +ZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90i +zigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreG +lvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq +74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYER +QoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9r +f8MQO4gyAukEZWUCAQEDYgAEbigyrcIjXdMbUx80Mw1IcjLy4BQsRhleUSLQOnYU +GccXbEeBXfboyXrfR1ZCQGQvUyfrwERXP5d93QkbhvVuaVXF7afh+lotiMnlola2 +ukU4X0Iftz6SZwL7N88rO5ebo4IBYjCCAV4wEgYDVR0TAQH/BAgwBgEB/wIBADAf +BgNVHSMEGDAWgBSp2rmBUg3GFLEgQJUYvrOGwfiGwTApBgNVHRIEIjAgpB4wHDEM +MAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANIS0cwKQYDVR0RBCIwIKQeMBwxDDAKBgNV +BAcMA0NITjEMMAoGA1UECAwDSEtHMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwNKAyoDCGLmh0 +dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwHQYD +VR0OBBYEFKnauYFSDcYUsSBAlRi+s4bB+IbBMCsGA1UdEAQkMCKADzIwMjMxMDEw +MDgwNDU4WoEPMjAyODEwMDkwODA0NThaMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNnADBkAjB4lVhuS3aRscKkMnxQR4O+zaWdCiXUTJtdAD9NCD4iIs85WxQB +D5Cv5uk6f04cAXoCMHIpQuZh5BB4iNjKxGbX9xHXsOoVORrZ4Y/YcNCZOtYxMdx0 +Tauz8IXqmlfs0ruwtQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE7DCCA1SgAwIBAgIETmVNYzANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJE +SzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQDExJDb3VudHJ5 +IFNpZ25pbmcgQ0EwHhcNMTUxMDI4MDgyNDIzWhcNMjcwNTA1MTExNzIyWjBHMQsw +CQYDVQQGEwJESzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQD +ExJDb3VudHJ5IFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK +AoIBgQDWLAKeOWC2k7YekC2Vtr4I/+odZsJsxAEXjq+kjXf+qmn02TXDgWI5dKAd +K7o14j+JGQa+0+dnCi0192PjSGeTOZ2BdCqMyMNC2DtnWBwKj/7w9bGTrWVRwSpo +1Aam0X56UKFjPJW53xujnqIDdXhQ04Lhayq2gHfapjE85q629mc91ZaPHJ6M6VI4 +XyQOlaXgv2UCDhgFJyEyKxtpYvmOIIR/rjeXumK9PD0G+lzapZEycs5r3tiXmXlG +aAVCJGB/k7tL1bp0MB6OSw2PY5dRgKF7GGnED+dOfp1StT/o38H5tOMAzIV0boYM +ancQq5QeD0Thq92Zhnmr5RBcJmTvohIjZMokNS6IWOeca22UsoxaTW/7s80xBO2B +0ot6MW3lEJm5aaPrBS8KMs/QifPOQ/Zx3NGRFi6b7LB168blVUs+cm3fGBj6lJrh +CfoxxOb08UCfb6U/ssOagUq4xZTDLbmxe3EvbREQpz4ZUdsGrQOyb512/YIYYvGO +fGtLI28CAwEAAaOB3zCB3DAPBgNVHRMBAf8EBTADAQH/MBEGA1UdIAQKMAgwBgYE +VR0gADAfBgNVHSMEGDAWgBRew4itPMuRPoo7xGEDTKVYup8pFzAdBgNVHQ4EFgQU +NiVtGYsxYZiSNLkWeG3ml4gqdGEwaQYDVR0fBGIwYDBeoFygWqRYMFYxCzAJBgNV +BAYTAkRLMRswGQYDVQQKExJLaW5nZG9tIG9mIERlbm1hcmsxGzAZBgNVBAMTEkNv +dW50cnkgU2lnbmluZyBDQTENMAsGA1UEAxMEQ1JMMTALBgNVHQ8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggGBADb7Ap44iacFHj2NnF0cz81a15XYc7JJmMwjLFOGYMac +YhWNx7Vgct9xp/tdoIssWW7nZMkKrvUObP8GYKQjO0WrbKL83O5BCWO43iVV3nYe +6i80MdlAb66pUSMs4O0TTrBKqCUj1OP/afvs0QKsC0SEVxdaqMzNXJKm3FmUIJck +4naCwjOTkf7w9qDiOI+60LQncyd1E37ZOo25o3GIZ9Fubf7Tt8tsmVHvdiynTXW6 ++CZRyCjtuLiAHEPQBwnQs/JZvQQwcuPdPcToSwKa1fd2Hwk+8o2wgu9IARw8GFew +tBIGsuB6AwOI2++ATvembJaUGeF8zRgEMxycRezYokfQhHFnQY9XW5RqkJy7jygS +0j9E8M2W7xltwG1n2rwbqzDJev6kgqd0q6axP0o8YA1I4MWhWed6lpG1DsasKW32 +dGNIAim4XJYXL4C8sVnFGaxr777vn50LuxLOvDcqZeUlJC4PETYrOWx8+NfpKsWb +9ycF3t4Im6Zj58bZWPDxPw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE7DCCA1SgAwIBAgIETmXq6jANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQGEwJE +SzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQDExJDb3VudHJ5 +IFNpZ25pbmcgQ0EwHhcNMTkxMDIzMTEzNjUzWhcNMzEwNjI4MDg1NDIzWjBHMQsw +CQYDVQQGEwJESzEbMBkGA1UEChMSS2luZ2RvbSBvZiBEZW5tYXJrMRswGQYDVQQD +ExJDb3VudHJ5IFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK +AoIBgQCf75+5Gs7V68Gx4aClx9u4gzLtwcCDkMfylUmsgWfZKFdew6/2ZJLRRdhe +G3ii14lvBlZG6uBRmhrsTV361+1LaG0gRFHIL6h9yzuB7YIc+j9j61o9BHJD7rhX +3JWgx7ZG6/I/RDGCgtOeNN44WA/2mXqUdyyg2uHi1urc1m4GIVlEQHQgXQydh6gr +JZzrn+z9MzqHR1ZJpf9vW5RXsdHBPRv55UJn/kpYU3YZj4jj5httsa2SanBAWYz4 +X4oWRNcNmZI3KeJvTCSEE1voPpuCBZgCFJN2kBDvwX9bLMMfOCStvTmugmcxtb1B +oQshribiTPpnB9rrSSRgyjuY3HfN8Q/C8cmPrF/byfrcEDQCKeoCfXWVjtHGqy5f +Nukd4z9fW0txlgNwbD5e//6N8+4PGiroJzmwTifxMjOQnvOyHBlrb598cq+Np/en +4zCWN/rH3REMxQZZhg20Wvmo2zNIrF6JlPSxl+g9iVmLAfjtzbZYD6ImAXBMur03 +57u+LtcCAwEAAaOB3zCB3DAPBgNVHRMBAf8EBTADAQH/MBEGA1UdIAQKMAgwBgYE +VR0gADAfBgNVHSMEGDAWgBQ2JW0ZizFhmJI0uRZ4beaXiCp0YTAdBgNVHQ4EFgQU +6J2n7Cctnl1lVkVb1X9Y6IpT5zIwaQYDVR0fBGIwYDBeoFygWqRYMFYxCzAJBgNV +BAYTAkRLMRswGQYDVQQKExJLaW5nZG9tIG9mIERlbm1hcmsxGzAZBgNVBAMTEkNv +dW50cnkgU2lnbmluZyBDQTENMAsGA1UEAxMEQ1JMMTALBgNVHQ8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggGBAElLp32o2IBAEzPZxKBBxKrXGUJMyoNZ7URpWpAb3kHA +qZb6FvmfoQ3WQCPTnueC5coYpZ02/iIyomWuPBshrw23H4/fj9/ugrINYhIJlJLg +kajfRVU+qA7bmeB/sMzgNT5Fqmc2TZ6EVdSoWGWwaroeLjTIFAZWA7wWfqrhTbzv +7NG/uvWf77jjvKMNRTFhPzKfjHPK2NCvj6RvXY1cXwbyceKr0N6m56eciORgW0Pj +ol0xHh+ASf8vzdWxNVHMzjBzYkVor7OyShP6fm8PP3AvFwsHtjfnU6b7PD48kRGU +5uMIot6UccCcYtFMcz18sMGUfMGoplh5T1tH6X0CCwcBf+NqXF9OduYCDtJZf7ot +prLd7AfDTsMCOz7J2KuFJxkDrtZxVuZTVKfGQC+L3O0fanrQRUiHLYpqMM7l6Kvr +jKs3KtLIHWTOBJusJYtNRtPihQ4ZBT3q4TdQtEotWuRgtdtWFSgmVeS5ab4G98dj +5PdrC2L8IszK8VHxISOWnw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE+DCCBH+gAwIBAgIIF9gbE+y6hg4wCgYIKoZIzj0EAwMwgYgxCzAJBgNVBAYT +AkNOMRgwFgYDVQQKDA9Ib25nIEtvbmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0 +aW9uIERlcGFydG1lbnQxPjA8BgNVBAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5 +IFNpZ25pbmcgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTIzMTAxMDA4MDQ1OFoX +DTM5MDIwNzA4MDQ1OFowgYgxCzAJBgNVBAYTAkNOMRgwFgYDVQQKDA9Ib25nIEtv +bmcgQ2hpbmExHzAdBgNVBAsMFkltbWlncmF0aW9uIERlcGFydG1lbnQxPjA8BgNV +BAMMNUhvbmcgS29uZyBDaGluYSBDb3VudHJ5IFNpZ25pbmcgQ2VydGlmaWNhdGUg +QXV0aG9yaXR5MIIBtTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCM +uR6CozhtKA9db35Q5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMw +ZAQwe8OCxj2MFQw8cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90i +zigmBDAEqMfdIs4oJos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreG +lvpQTBEEYQQdHGTwaM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq +74ey4kfUrx6Kvh11IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYER +QoIDQSY8UxUCMQCMuR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9r +f8MQO4gyAukEZWUCAQEDYgAEbigyrcIjXdMbUx80Mw1IcjLy4BQsRhleUSLQOnYU +GccXbEeBXfboyXrfR1ZCQGQvUyfrwERXP5d93QkbhvVuaVXF7afh+lotiMnlola2 +ukU4X0Iftz6SZwL7N88rO5ebo4IBcTCCAW0wEgYDVR0TAQH/BAgwBgEB/wIBADAf +BgNVHSMEGDAWgBQcokd772w1rt9ATttdsnMMNHunczApBgNVHRIEIjAgpB4wHDEM +MAoGA1UEBwwDQ0hOMQwwCgYDVQQIDANIS0cwKQYDVR0RBCIwIKQeMBwxDDAKBgNV +BAcMA0NITjEMMAoGA1UECAwDSEtHMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwNKAyoDCGLmh0 +dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQ0hOX0hLRy5jcmwwHQYD +VR0OBBYEFKnauYFSDcYUsSBAlRi+s4bB+IbBMCsGA1UdEAQkMCKADzIwMjMxMDEw +MDgwNDU4WoEPMjAyODEwMDkwODA0NThaMA4GA1UdDwEB/wQEAwIBBjANBgdngQgB +AQYBBAIFADAKBggqhkjOPQQDAwNnADBkAjAT9eFgPKUE2MhjuwRpjwWJBESOFMKW +D++qtqKhjzSCc8ti804jZZEqL/Q6lFwoeAECMEAiKnTvf7fYmq+PJYkEwNJ4YAu6 +m2HChMc/F7ZXacu01h+KxPL5bHPHHo3TcXhB5Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFAzCCBIqgAwIBAgIIXfbd8vwHGUowCgYIKoZIzj0EAwMwSDEQMA4GA1UEAwwH +RVBQQ1NDQTENMAsGA1UECwwEUElCQTEYMBYGA1UECgwPU3RhdGUgb2YgSXNyYWVs +MQswCQYDVQQGEwJJTDAeFw0yMzA3MjQwOTAwMDBaFw0zOTAxMjQwOTAwMDBaMEgx +EDAOBgNVBAMMB0VQUENTQ0ExDTALBgNVBAsMBFBJQkExGDAWBgNVBAoMD1N0YXRl +IG9mIElzcmFlbDELMAkGA1UEBhMCSUwwggG1MIIBTQYHKoZIzj0CATCCAUACAQEw +PAYHKoZIzj0BAQIxAP/////////////////////////////////////////+//// +/wAAAAAAAAAA/////zBkBDD///////////////////////////////////////// +/v////8AAAAAAAAAAP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9Q +E4daxlY5jYou0Z0qhcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3 +QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOna +MRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////////////////////////////// +/8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQNiAAQ9UHCx3eQG6lWdnMYv9WLR +ToI0/kXbWlUL/Oo5xQJ0Tl0uSuoRxivqGvYnFw9S+ql6+b7V7fw4gvslBSPi9zPT +0Yfh/lD59FQ8wN3V9lFkdW39WntAOz3qMFSez0l7qASjggH+MIIB+jAfBgNVHSME +GDAWgBTQiC/m6KXiZuDJd/O61gK5dX+C4jAdBgNVHQ4EFgQU0Igv5uil4mbgyXfz +utYCuXV/guIwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMjMwNzI0MDkw +MDAwWoEPMjAyODEwMjQwOTAwMDBaMHsGA1UdEgR0MHKkEDAOMQwwCgYDVQQHDANJ +U1KBD3BraUBwaWJhLmdvdi5pbIZNaHR0cHM6Ly93d3cuZ292LmlsL2VuL2RlcGFy +dG1lbnRzL2d1aWRlcy9pc3JhZWxpX3Bhc3Nwb3J0X2FuZF9pZF9jZXJ0aWZpY2F0 +ZXMwewYDVR0RBHQwcqQQMA4xDDAKBgNVBAcMA0lTUoEPcGtpQHBpYmEuZ292Lmls +hk1odHRwczovL3d3dy5nb3YuaWwvZW4vZGVwYXJ0bWVudHMvZ3VpZGVzL2lzcmFl +bGlfcGFzc3BvcnRfYW5kX2lkX2NlcnRpZmljYXRlczASBgNVHRMBAf8ECDAGAQH/ +AgEAMG0GA1UdHwRmMGQwYqBgoF6GXGh0dHBzOi8vd3d3Lmdvdi5pbC9lbi9EZXBh +cnRtZW50cy9HdWlkZXMvaXNyYWVsaV9wYXNzcG9ydF9hbmRfaWRfY2VydGlmaWNh +dGVzP2NoYXB0ZXJJbmRleD02MAoGCCqGSM49BAMDA2cAMGQCMANwiJYjDvZQ2/Yr +FOWncfnO7e8e1/32WwL00YiRY4lczveFwg+1EUmJu3lcw1Jy/AIweSClQs1d/xc2 +W9PE0JueNXfTi/lv082nvNTBF6t2LJU4JXhvWiHUkbMJRfe2KLJ/ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFCDCCBGmgAwIBAgIUEyoX0K/R/gLhW8+4iDxXeWoXnhowCgYIKoZIzj0EAwQw +WDENMAsGA1UEAxMEQ1NDQTEMMAoGA1UEBRMDMDAxMSwwKgYDVQQKEyNEZXBhcnRt +ZW50IG9mIHRoZSBSZWdpc3RyYXIgR2VuZXJhbDELMAkGA1UEBhMCWlcwHhcNMjEx +MjA4MTE0NTQ3WhcNMzUwNjAzMTE0NTQ2WjBYMQ0wCwYDVQQDEwRDU0NBMQwwCgYD +VQQFEwMwMDExLDAqBgNVBAoTI0RlcGFydG1lbnQgb2YgdGhlIFJlZ2lzdHJhciBH +ZW5lcmFsMQswCQYDVQQGEwJaVzCCAkYwggG5BgcqhkjOPQIBMIIBrAIBATBNBgcq +hkjOPQEBAkIB//////////////////////////////////////////////////// +//////////////////////////////////8wgYgEQgH///////////////////// +//////////////////////////////////////////////////////////////// +/ARCAFGVPrlhjhyaH5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLA +vTuxvwc1c9+IPSw08e9FH9RrUD8ABIGFBADGhY4GtwQE6c2ePstmI5W0QpxkgTkF +P7Uh+CivYGtNPbqhS1537+dZKP4dwSei/6jeM0izwYVqQpv5fn4xwuW9ZgEYOSlq +eJo7wARcil+0LH0b2Zj1RElXm0RoF6+9Fyc+ZiyX7nKZXvQmQMVQuQE/rQdhNTxw +hqJywkCIvpR2n9FmUAJCAf////////////////////////////////////////// ++lGGh4O/L5Zrf8wBSPcJpdA7tcm4iZxHrrtvtx6ROGQJAgEBA4GGAAQAkxK57jvB +FH+OttKksxx5NzJs8KfJQXRKICAwSf5wunf9n7QcH9gROMS+GxDj5Yqw98jHbsMc +CYH4PscXHUAJ3CAAu8Oip7JnuqwKWEea6+2QQ/R+hcWZRUC0365KdddeEu22RTfn +JQk0MRbAICkTbNZ/bSpE7qOSPDRdac7R4XsH9IGjggEgMIIBHDASBgNVHRMBAf8E +CDAGAQH/AgEAMB8GA1UdIwQYMBaAFIL/GTt9YnQ6B+OTUCuxFucqd+9+MCsGA1Ud +EgQkMCKCDnd3dy5jc2NhLmNvLnp3pBAwDjEMMAoGA1UEBwwDWldFMCsGA1UdEQQk +MCKCDnd3dy5jc2NhLmNvLnp3pBAwDjEMMAoGA1UEBwwDWldFMC8GA1UdHwQoMCYw +JKAioCCGHmh0dHA6Ly93d3cuY3NjYS5jby56dy9jc2NhX2NybDAdBgNVHQ4EFgQU +gv8ZO31idDoH45NQK7EW5yp3734wKwYDVR0QBCQwIoAPMjAyMTEyMDgxMTQ1NDda +gQ8yMDI1MDYwNTExNDU0N1owDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMEA4GM +ADCBiAJCATpdLMK0IcRuzoxmGaKohiROtsDojoIvrVq8vftOk0gl47JtApMYUnGf +wGVrdPtVPa6snH1GFEAFpUxcg3PM+YIFAkIBO+HZ/r6HdNdYC7TZWOm39wg61GNE +dMOi8pfimxwPQeJ+vJ5t/YY+WPFx4ngVABkFA+DyJSB5NRmFahyDI0MBQXI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFFzCCBJ6gAwIBAgIKJQweCQ+AXYwoiTAKBggqhkjOPQQDAzCBgTELMAkGA1UE +BhMCQ1IxSTBHBgNVBAoMQEp1bnRhIEFkbS4gZGUgbGEgRGlyZWNjacOzbiBHZW5l +cmFsIGRlIE1pZ3JhY2nDs24geSBFeHRyYW5qZXLDrWExDTALBgNVBAsMBERHVEkx +GDAWBgNVBAMMD0Nvc3RhIFJpY2EgQ1NDQTAeFw0yMTA5MTgxNTAwMThaFw0zNTA5 +MTgxNTAwMTdaMIGBMQswCQYDVQQGEwJDUjFJMEcGA1UECgxASnVudGEgQWRtLiBk +ZSBsYSBEaXJlY2Npw7NuIEdlbmVyYWwgZGUgTWlncmFjacOzbiB5IEV4dHJhbmpl +csOtYTENMAsGA1UECwwEREdUSTEYMBYGA1UEAwwPQ29zdGEgUmljYSBDU0NBMIIB +tTCCAU0GByqGSM49AgEwggFAAgEBMDwGByqGSM49AQECMQCMuR6CozhtKA9db35Q +5kHfFS9xCe1UVrQSsdoZf7cRI6zTpymQHRpxh0cAEzEH7FMwZAQwe8OCxj2MFQw8 +cggKzgWvoMK+oo5PsieHE5Fl77qR+Q+KpYFKUDrU6wSox90izigmBDAEqMfdIs4o +Jos5tVQW8ER8L7d94Qfc0qYuiA6lPuti1Xy0OQKV28mUOreGlvpQTBEEYQQdHGTw +aM9F/6KmOoG3wT9riEej537xT+Pbf8r+DL0Q6Ogm4DQ21kaq74ey4kfUrx6Kvh11 +IPnCpFyx646Vz9VSYrcLKf7sWGThnAVP+ZEpKA5GRiF3kYERQoIDQSY8UxUCMQCM +uR6CozhtKA9db35Q5kHfFS9xCe1UVrMfFm5srAQlp886tq9rf8MQO4gyAukEZWUC +AQEDYgAEdrdfzTBQ7c94+660e3mcxzLX5FqwobZ+/qrxqslq6rVhR+Gy2F93jF6t ++mh2ffYtGf28L76RNTFtoPIR98lqp655hApGgaNuSQVPfqJexI1g9h33smU9Hx2y +BcrjLvP9o4IBnDCCAZgwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBSM +SLLjNd4gR+i+e9DoadG+Rng56DBkBgNVHRIEXTBbgSVkb2N1bWVudG9zbWlncmF0 +b3Jpb3NAbWlncmFjaW9uLmdvLmNypBAwDjEMMAoGA1UEBwwDQ1JJhiBodHRwczov +L3d3dy5taWdyYWNpb24uZ28uY3IvY3NjYTBkBgNVHREEXTBbgSVkb2N1bWVudG9z +bWlncmF0b3Jpb3NAbWlncmFjaW9uLmdvLmNypBAwDjEMMAoGA1UEBwwDQ1JJhiBo +dHRwczovL3d3dy5taWdyYWNpb24uZ28uY3IvY3NjYTA5BgNVHR8EMjAwMC6gLKAq +hihodHRwczovL3d3dy5taWdyYWNpb24uZ28uY3IvQ1JMcy9DUkkuY3JsMB0GA1Ud +DgQWBBSMSLLjNd4gR+i+e9DoadG+Rng56DArBgNVHRAEJDAigA8yMDIxMDkxODE1 +MDAxOFqBDzIwMjQwOTE4MTUwMDE4WjAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0E +AwMDZwAwZAIwUz2BRvBXYwlKIGxSeubvFm9Hxs1+c6Eswsroiy+q4RJwn5trukJx +yRmKKAofF5PNAjAxeGiiJoVzP3/V33RZnFQDo+7zX9HnYbUwx7RZ67vvMUIN3CZU +0OHssDkZolDcw4k= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHzCCA4egAwIBAgICAZYwDQYJKoZIhvcNAQELBQAwgYAxCjAIBgNVBAUTATEx +DTALBgNVBAMMBENTQ0ExNTAzBgNVBAsMLFNlcnZpY2lvIGRlIFJlZ2lzdHJvIENp +dmlsIGUgSWRlbnRpZmljYWNpw7NuMR8wHQYDVQQKDBZNaW5pc3RlcmlvIGRlIEp1 +c3RpY2lhMQswCQYDVQQGEwJDTDAeFw0xODA2MTIxNTQ2NDdaFw0yOTExMTYwMDAw +MDBaMIGSMQowCAYDVQQFEwEyMQ0wCwYDVQQDDARDU0NBMTQwMgYDVQQLDCtTZXJ2 +aWNpbyBkZSBSZWdpc3RybyBDaXZpbCBlIElkZW50aWZpY2FjaW9uMTIwMAYDVQQK +DClNaW5pc3RlcmlvIGRlIEp1c3RpY2lhIHkgRGVyZWNob3MgSHVtYW5vczELMAkG +A1UEBhMCQ0wwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDXR+XvdSrb +krZ0jDH2qh2xcmSu0hCsSMQ5CtJAu66WKcibB+g7hIpDCR7D+vY7IV7lADR1DG9b +IDPEIVVwfAVDjg8AKUcZZ3uiTu56ONlUeVPwUTE+OcDp7ifkGwEUomEuWocbZsDB +QsGoH7cqdFtdhZRqB+0MvxnHkxnQ8qAqYgtjun5pVhcTxpauu2LwxLkOyJniBrJP +rj/cEaubJNaA3rzsi77h9DPkw6cwKKPDyujfmQPfn0cs5I6ibRPLoRZe3+uLAUgf +FaDm8dfbdVIIB/S5S3TB5Oi1LpqSH9mttFjk4bzVqp3c69JLUk9CTkq0zv87NR9I +d6eoUi6zZZiITnrVjxsufg3/ucY7h2LrrjDcWqvnRJSu0XfxMdWgpt6GJ//oFpiG +o7n5jaRFoRCbRYtMMmgLWFZXZJJeIPEvM2IIFbCA7hHa9ZFwZE2H/N20TNMzcoW3 +GyvA0Q/nWo06WryrXGiHQlHgMHDyA4vZHLpN+wZikjz2BuoNuf7eU3MCAwEAAaOB +jjCBizApBgNVHQ4EIgQg//u9BExObg9K/5RhYrgPUVjJuWXmAZprZaCdgTPNt/4w +DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwKwYDVR0jBCQwIoAg +zcmGZWZ1McStyth0oqlKcgle7RygrC7xTVOi0sk2640wDQYHZ4EIAQEGAQQCBQAw +DQYJKoZIhvcNAQELBQADggGBAEYDzpazNc8drG6ddGxZS386JCOh8RIJRHEay8N5 +MoVDIVpn4Crd5mrkWaFPyRTn4/PTKqMjEnKlHr6aiiNzjgjuxaCa7XLkrT/lQ98y +hlYkMZszImorif6u1oErwiIfcth92UAj6gwyWRWaE+CqdKBRiJ5Ueon8jQd99bFi +Gbl6MoREeS9HAkhcD7XicKjk0V6hp6w5lqYlHtYbBS4cDBX0+Qqce8O0xtH+icgI +9oduE0hUK/X8AcEqbQ67WCHIiAi0O84XnNfro82w46juM30Km6hDQRC9TynMJzNb +ae6XCOvzhgrmFBXyw9nmQ/QIdTMhXwzAE4GJmvTzAQm9iFzkgR2AvTAYuZ3LZZrP +R+8r6NuHy6cxMr+N1lvOgk9g2yiMOkp6RU+Iip8aRAr7zKQCFqKAeOtRh4PG2Ffk +RsXkwSXpaCHZkxbrIjHpGkzGtVs6WMvaLSuNNZNPTnvlLflhR23a66ntMJH74Wv2 +bluYvjFe4WcuKwAv5e8UmsvFiA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFKjCCBLCgAwIBAgIIPptpdokIexcwCgYIKoZIzj0EAwIwcjELMAkGA1UEBhMC +TloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxJzAlBgNVBAsM +HklkZW50aXR5IGFuZCBQYXNzcG9ydCBTZXJ2aWNlczEWMBQGA1UEAwwNUGFzc3Bv +cnQgQ1NDQTAeFw0yMTA1MTMwMDMwNTFaFw0zNDA4MDgwMTAzMzlaMHIxCzAJBgNV +BAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYD +VQQLDB5JZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBh +c3Nwb3J0IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIx +AP/////////////////////////////////////////+/////wAAAAAAAAAA//// +/zBkBDD//////////////////////////////////////////v////8AAAAAAAAA +AP////wEMLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0q +hcjt0+wq7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9V +KWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+ +gZ16Qx18kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoN +skiwp3rs7BlqzMUpcwIBAQNiAATZQon1shj+p0q+5z2lAITS/VG35sb6cLN7Tlgq +Qcy5+wt95K1qK9C5mLUkXYsHX+rrMMHRG4zgpWoyBsozAfDkYkJJhmvanY0c2deb +lXQMlG0yhkS4NB/AdkTuKHcFORGjggHQMIIBzDASBgNVHRMBAf8ECDAGAQH/AgEA +MB8GA1UdIwQYMBaAFJ8OLB+SWEwI5FvTDfjYAjxxc/qNMDoGA1UdEgQzMDGkEDAO +MQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0cy5nb3Z0Lm56MDoG +A1UdEQQzMDGkEDAOMQwwCgYDVQQHDANOWkyGHWh0dHBzOi8vd3d3LnBhc3Nwb3J0 +cy5nb3Z0Lm56MFIGA1UdIARLMEkwRwYIYIQqZQgBAQMwOzA5BggrBgEFBQcCARYt +aHR0cHM6Ly93d3cucGtpLmdvdnQubnovcG9saWN5L2VQYXNzcG9ydHNfQ1BTMG0G +A1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50L0NS +THMvTlpMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQv +Q1JMcy9OWkwuY3JsMB0GA1UdDgQWBBSuaT8mWeuag2UtEff/RjGsOxSgNTArBgNV +HRAEJDAigA8yMDIxMDUxMzAwMzA1MVqBDzIwMjQwNTEyMDAzMDUxWjAOBgNVHQ8B +Af8EBAMCAQYwCgYIKoZIzj0EAwIDaAAwZQIwb6b0v2fsmAUKtySftn3PM+JTNQz5 +/f94pHQnzEJT8cKlVEpbjbzMHXjS6H8xFiFGAjEAkZla8c27P8B722CXNXZ2I5LN +tvgu6rEuQQd/ZFzh65fUpkyV7qe4lzNRmdkUPj/o +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIEYFViKDANBgkqhkiG9w0BAQ0FADAcMQ0wCwYDVQQDDARD +U0NBMQswCQYDVQQGEwJLUDAeFw0yMTAzMTkwMDAwMDBaFw0zNjA2MTkwMDAwMDBa +MBwxDTALBgNVBAMMBENTQ0ExCzAJBgNVBAYTAktQMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAm82EIBoiYL68KUFZNvYd+SbHyzRJ8UddyhfEA38ekK6u +/PwC/7v/clZt2Rq0qrcps21MxVQijSLLosq9OdYsVs5Bu0BYvcXMZks47jYe3pUr +CAKj1is0Q1iKwpblbbBj0txC3dma9UssSFfJtROjA9lP8gcI3aH9M+Rx9ls8sykt +RRFAHXAB71s29mixkMTchiIOkkpQVeM+fL5ZN6E0L4aL8/1D6YBnSGVjQbaddOz3 +wv/UeLFTBL6qz9HJiZSniWMxqrmHnfloTty7sIMRn7bCK6Uzb3BfPALZq8ZAwdcm +8KGpZlNvoIjex1EK1QebEoYAtmCRi+Pvc8eaJMF7h4iXFk3LcRJABZn47CZzznbk +IoGyk03TZelchM9cv/bMZjVbuBvFeSKz8HN4Cy9S/exV65WnPKrD9T8KO6/6/tNW +QVs89n9n3kIjEs8SCE0VrihMUePvPO8i/edkxey1nzxYhbrWfqkOZR/05CrV5lGN +PVVoeXKnIxpDl5ghf3Rk6egtf/+k5B+YsjDbcj+Ok8yO3f8z0gRfxYMpM3J5M5lH +aIiOHI1h8bxfBJ1rDH534EPP9u/3jx6x39kxF8a7XNlnH36Bkup/Ar/M5HHdtCbQ +rMTnjxiQemS0/SsADHdC2jeiYpUoBhcprXA1fHvbX35glDjZdQY4d4luLYPOXHEC +AwEAAaOBjzCBjDBHBgNVHSMEQDA+gBSD6yVYEYphl223fSkBRX1s9TJ5bqEgpB4w +HDENMAsGA1UEAwwEQ1NDQTELMAkGA1UEBhMCS1CCBGBVYigwHQYDVR0OBBYEFIPr +JVgRimGXbbd9KQFFfWz1MnluMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG +AQH/AgEAMA0GCSqGSIb3DQEBDQUAA4ICAQBf/o+XwfohkjvuKn8lkD7wHAmfAFNb +kL4tiF+pBp8lQP1qRLNbx58hfbhmAQ/Obf3onH0CPUcWFP8UutIMh5+81NK92p3r +OmyuDZQ1CFS4zjP9cOlncBE/sGNPssdlwUQxLIBm1NHa4zlgGVFGQr2MXfQ8gOOL +yXIOZddbNCxQfqinMc2+TKPBltgiUu/SA0NJeyEJv2LgYjCjQOg54s453P5P7nzo +Fm9pscVWEPHp1fFBEA7+GuVtanQsJUVZL/QnfkNql9elBk2Lag0/OFfusLh3xWNx +wKQMaf2pqY44Yikklfp1RX+XPvXCHXkC3bDVXZbn+c9r2OOdakvogmnQ9r9YoxVX ++3PWX3ujY0xbhJgV0Dt2mblQgSiFg+3/tDWbD3iQ3YRBUY2MJzsKU4YLr9XS4xup +eDXDX/A2LtBlbZDEClXWiErXWxx8hOB08AEdWNzS2LnPyg4jxFfrQc20kCewSmJG +h8jLVwzdVX2mw7zVjA9JC5zO/WLtZPG7Nr/c5bXfA5usgb/VRZBYzXXmyJe5jATP +7aaaQmcn/rfduQ9ABGf/ozwsS13yMIC7yl+MQbviBeTzCUzAf+dz73n20H92kzC+ +31Ni4uquikptAgeMeY81gW67PwDuprupX+jgM1cF5yCUhQCFNplz/LFM6qIVah1N +IV5o6gla33iwfQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFXjCCA8agAwIBAgICAoQwDQYJKoZIhvcNAQELBQAwgZIxCjAIBgNVBAUTATIx +DTALBgNVBAMMBENTQ0ExNDAyBgNVBAsMK1NlcnZpY2lvIGRlIFJlZ2lzdHJvIENp +dmlsIGUgSWRlbnRpZmljYWNpb24xMjAwBgNVBAoMKU1pbmlzdGVyaW8gZGUgSnVz +dGljaWEgeSBEZXJlY2hvcyBIdW1hbm9zMQswCQYDVQQGEwJDTDAeFw0yMTA2MDIx +NjAyMTZaFw0zMjExMTYwMDAwMDBaMIGSMQowCAYDVQQFEwEzMQ0wCwYDVQQDDARD +U0NBMTQwMgYDVQQLDCtTZXJ2aWNpbyBkZSBSZWdpc3RybyBDaXZpbCBlIElkZW50 +aWZpY2FjaW9uMTIwMAYDVQQKDClNaW5pc3RlcmlvIGRlIEp1c3RpY2lhIHkgRGVy +ZWNob3MgSHVtYW5vczELMAkGA1UEBhMCQ0wwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDOSnxyuA21JnSwu0Qi7MuwhSX/A3lUVkSUC1L5m/b4hw29W5mP +kOoL5hbFHqU/O2C36clW6Cl5NmF+zW6lYCz8ClannKu7TKKiYfkncq3pRQhcWQOM +SSKqB9EYr8NiH7RIWc72eaD+pOxqatv1V8XlReUYJM0cubswIgvP/Zo7Qtm3e8z1 +TEjFvmcP/mFwvlu5tYceUEJNceq25pNYAvsIIbFV5awyjWg0DBniHeWEfYbHdOby ++0Hv9ymCMSCH6RVRzdXj7s26QLNI2D9m766UdX5eAEjj7lBgbjxdTXntaj5+EmBl +G9wF1rkqAt9Cja+JNcZnG1uFDKsl63jYQMijom6vPKemaBfkKsOT9ywaugLqaeGb +ZXdE2tPSOSLAdXqg2v1bJ5uV3BXCPa56+xn+0WeD/7L69uJ6EK6RUee5bG6sQkr9 +Avg6MN72L8DnGD0GTnJT0DTswy/rNFpO5Uy+QjdzL7XYmR3ZwDdpbQ9CHJFTx9ur +b5wreBcvi1YVEy0CAwEAAaOBuzCBuDApBgNVHQ4EIgQgRJy+y5gG5O3lPRCtrT6l +VexQ2s0l0TsAA/QtDIW1mMgwKwYDVR0QBCQwIoAPMjAyMTA4MDEwMDAwMDBagQ8y +MDI2MDgwMTAwMDAwMFowDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C +AQAwKwYDVR0jBCQwIoAg//u9BExObg9K/5RhYrgPUVjJuWXmAZprZaCdgTPNt/4w +DQYHZ4EIAQEGAQQCBQAwDQYJKoZIhvcNAQELBQADggGBADwtduSRQuTSF/8d0t+1 +qCe9+wd7bXEQfHUvIvM/BzSIeHcMekSVFTWuDQwE+qqzn8hhgs0M2xCR5LPEblwY +YRNp4rX3nUFn43I5Vz78jJoBCbdJxzmFc0Z05PjDQ/8q3uqf2NcA0kn7Jj7L9mzR +GzmkDsemqErzOEyR6Pdj5ulRiR35cswxokX5imAx/IebdmXOj4K+61T/DmjFQsoQ +69jrChcz5WEa8yRq8k9cDam0Cs6V47itrnvD6H6bHhnKkg1KPSKlMUu/KY3Ge/nu +Ijqfj8RzZ3Fg5Kt84eNPO8nP4QZudhHOdePOIrpHx5BLTXVDxZXWI6NRftZDcu5V +hid9zjeKusjXb/5iIk0C2fE3RANZhA3NkJVq0sKH8l0V7VnM9Hd2AZL9OFtTKk6x +AYvCuI2Mt7PLXyaP3c474WCTtz1NvU7he+49mVMuKp7mY0cDzleDXm7/N0fG6sFf +FJP2gXzX2bv3EGxome3bSQQZvs4ZkcMjpYti39Lkzschbg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFbTCCA1WgAwIBAgIMP2pe/QD3zc3rzN4KMA0GCSqGSIb3DQEBBQUAMEIxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEXMBUGA1UEAxMO +Q1NDQS1IVU5HQVJZIDMwHhcNMTUwNzAyMDgyNTAwWhcNMjUxMTAyMDcwMDAwWjBC +MQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xFzAVBgNV +BAMMDkNTQ0EtSFVOR0FSWSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA8V6tzZI+CJvZ4OUxBCSzXON99ecbQqKEw3BAKy73JSS7Iyl99y2EVpPi2gk6 +Qeqlnh+iDJDlEULEi4nNW+XnrO9V33I5oXpNCcOB4aO+nndY6Jr5xx3y9aqL9V8c +LrL/oAI84cRM8LAVyyDvWiYOBFmGM3leA2uzu/NhGAynvg2UqVDnvmVp0D9lLUH5 +yG9ydK56EA+dRF+Divdkey5wxOdJc+d0MBAB+x8tsDKs4FfAcnzehF4SpK31zKe2 +ngOLN9OHK5rqNKxMKIyBCfD7RdSYY8ZR6F2T4cl6rcgguht3npOGBzcpSBuPNwIl +lazQ+x01jCqy1EkCRajlCh1BrNlFh4ljvLCtM/oYwYP4pwXc4t+q0JHkdNT2d1G2 +ZUYG9xMpP86WAW10RyA9McH6NBMnGWY4IteUQ23xapY/Qk6lvEz+93iEOur/nuSC +p8NdaFZ2NYFseviklB56rIS8nTXS3toBoXSW6cjOlVFLNQuhksM2Ue9dX5YXdR0H +CZjkGP9D66+dWwXeDJPw7NTNNIIvExSfOv0WAj8USPrJY7HEGb4DyuIlD/Ppc612 +mvS9bakt0jIF1tNHbwXrcEMM/VoWTn2sb5RkWj2MF5nhq3ohg4rImnDwnPqstKve ++tvvbvAepbwK4feqd/VfMp09JuxqWFQgr4GugHcWqVTQNp8CAwEAAaNjMGEwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJEDRjoMH0Pl +3exluHTiBDcUVZBGMB8GA1UdIwQYMBaAFDD+BwXMhWgbVm5Fv4wrDmQiguwTMA0G +CSqGSIb3DQEBBQUAA4ICAQBTF8vvDmmjj6zmOCKfy7EJxwr1+Y2nzRgv7Vpxavma +2kKebI2FG7w6LbhcFtBygS23p+KoZigGw7RK6ucP+TMiBheFxQ+FPCUz5DvqzXcD +Hcn4Fy8toooaMTsYjuxr3ldaCr5Ab0lICTIL9yy7uMqgBNb+Ies1sVEfKs7Moh3a +g3e/MVc1ihK5OUSHCtJCfQcHtczPHFiBlpEYRyfaHrD/mgZlLpaqTwtWC4ZZmLWV +Ple+M5vLrPeAXhi/QSsWNLXbcbcMk+v8iY23f8YzmPkIfNN75YSPh3caTi//vyWe +/bzGTWD6oj5rm6tyXJ43pLsfjHM3/Ew8EiStjeUPB+Q51sb3ZW46s5dI9ZqTNlng +B1cC+W493iVAWRpf99MqX5Ic9KQPm3cSmkVYpSaa8l/VvfteVDAyiUegWujrPfLk +FoTebeJJDeHQ3MC459aswolvRUf3HdbXcPvSLUM2O0zZwiRfDQiOfOQC2Rhes1QN +qAHuugWRMmAkoxRxBMPnBTjWus70+EFWo79GU5GXMjqgMu2+V46/BfRVKI1fqjae +1svH+Csi2ETX7664PVUMsu9rOxd9SjP18l73Jd79gL0k38fQf9pZgOsG/O5JcBFJ +hTuRgELHtOaJbIvfTKvxKjrhVi4JTB1kwV6bRvPU3gy4GxYKEIAlC+9Fl0HsEbjT +IQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIMR4j80hc9YwgcRZMKMA0GCSqGSIb3DQEBBQUAMEIxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKEwNHT1YxDDAKBgNVBAsTA0NSTzEXMBUGA1UEAxMO +Q1NDQS1IVU5HQVJZIDMwHhcNMTUwNzAyMDgyNTAwWhcNMjUxMTAyMDcwMDAwWjBC +MQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xFzAVBgNV +BAMMDkNTQ0EtSFVOR0FSWSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA8V6tzZI+CJvZ4OUxBCSzXON99ecbQqKEw3BAKy73JSS7Iyl99y2EVpPi2gk6 +Qeqlnh+iDJDlEULEi4nNW+XnrO9V33I5oXpNCcOB4aO+nndY6Jr5xx3y9aqL9V8c +LrL/oAI84cRM8LAVyyDvWiYOBFmGM3leA2uzu/NhGAynvg2UqVDnvmVp0D9lLUH5 +yG9ydK56EA+dRF+Divdkey5wxOdJc+d0MBAB+x8tsDKs4FfAcnzehF4SpK31zKe2 +ngOLN9OHK5rqNKxMKIyBCfD7RdSYY8ZR6F2T4cl6rcgguht3npOGBzcpSBuPNwIl +lazQ+x01jCqy1EkCRajlCh1BrNlFh4ljvLCtM/oYwYP4pwXc4t+q0JHkdNT2d1G2 +ZUYG9xMpP86WAW10RyA9McH6NBMnGWY4IteUQ23xapY/Qk6lvEz+93iEOur/nuSC +p8NdaFZ2NYFseviklB56rIS8nTXS3toBoXSW6cjOlVFLNQuhksM2Ue9dX5YXdR0H +CZjkGP9D66+dWwXeDJPw7NTNNIIvExSfOv0WAj8USPrJY7HEGb4DyuIlD/Ppc612 +mvS9bakt0jIF1tNHbwXrcEMM/VoWTn2sb5RkWj2MF5nhq3ohg4rImnDwnPqstKve ++tvvbvAepbwK4feqd/VfMp09JuxqWFQgr4GugHcWqVTQNp8CAwEAAaNmMGQwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJEDRjoM +H0Pl3exluHTiBDcUVZBGMB8GA1UdIwQYMBaAFDD+BwXMhWgbVm5Fv4wrDmQiguwT +MA0GCSqGSIb3DQEBBQUAA4ICAQCXs32tXfZuNKTJN4YbTd/nIb0hqMFZ1ULdADLp +rrwyzs7hhjsKXaMbeTXmsDLEy852Z+mU79wiFgeynZFmVuJgUfanD+rFnQ/L2lZb +6COFgD/gV4WaKqIgFzGJ9xJUAgnRQVpLO316pzB/vMlSevy2kBqTDAheu7DLTHed +8Truaw0LyinkmUcDQo+LbXhb1LJamh3QgCpWdG6MmMiQZSVBBEXYLVNpNMeGlv3D +s/xSsozsbiuk1TMlVS+uaZQfZqsz4gXHNah/zbTf95nHwUC1sjHY2laQSVIu9Hg7 +yVz4CKHIFObuMgjpSUC6d4+lqIubIiySplMlmi0+ud188z4VyOG/Toc3hk2KhVEh +RxG/AqoJEmpcvGVbR0nnvzBlmMhShoz3kauEx85aLhcwDk0CdMTFonlNEtgVr8k7 +u5XFqoWJNNIDbm212r3iJ9aBHMeJGX/n/zES37l0QPqXw1OOmpGjot8V5NeBS2wc +ondJ4zMqUvvxHPlOsLtiueoC0ORJdF0Ac2eRXY1tsa1gI+DAmtdKPxwinGH6kf/e +lkwdRPGPNoMBWB9r4hctj+Wvoa5OxT9LTBf9tLEjwH+wpGxnRs/yCBPYzeNPOzMA +AaXipVV5AqNL6IpvYO4Uy7aPizx6nLfQ3NXb/rl5DLsKfMoQBkyb5MEcpIRNsJdT +tkCcWA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFizCCA3OgAwIBAgIBCzANBgkqhkiG9w0BAQUFADBVMRAwDgYDVQQLDAdTRUdT +VEFUMSAwHgYDVQQDDBdDRVJUSUZJQ0FUSU9OIEFVVEhPUklUWTESMBAGA1UECgwJ +SFNWQVRJQ0FOMQswCQYDVQQGEwJWQTAeFw0xODAzMDExMTE1NDJaFw0zMzA1MjYx +MTE1NDJaMFUxIDAeBgNVBAMMF0NFUlRJRklDQVRJT04gQVVUSE9SSVRZMRAwDgYD +VQQLDAdTRUdTVEFUMRIwEAYDVQQKDAlIU1ZBVElDQU4xCzAJBgNVBAYTAlZBMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArPD6pcAA8m/E7E+6wEaF31Am +R0eJu3ETQBwvtmrdUiWFQ9yFvN8xlcdo/b4/N/t1Ei8zzA/ABPqdHpgPzSPKGY92 +vCRAfHoj4fSOMezkvO6Csw9yvZZii9kRizSlX6HUNfkzltW4flZXhmZMlSzv4koV +bfKZdVuShu3tR+dsSLQ2xNavOiFclIHtcMICS/j19XFx42pw0SdG/jKe104h+8tC +AmIYUxNxlP4D/JYuFTx1+1KhdTdY49dyQwiU7+m8x6kKrEOdzo1MDZBZsjUKnp4j +6qWol5t/hLIgAL4LBezNBUMgWOrjMgpyoaMuEXHPNZ/kpp2oLkB0FQU4XIzIVAYr +ytjhOHbHROJvJQjsryoPK6zKiJnSzsKuqLaYcDCPw+OsqNUu4Ho1DqSIohrkNXm7 +c3uxe+dhGIyVESWTZt5FxqaS6MCgk1Z6Js360321gv8dRf1EwjF/3JoAJArPSET1 +rYKUeb2IBClCgjVrzzMjKVnAZ9YyN3dYO32DWBEG5PLStIyONeycISpxkzkB7EA1 +BuafIb4HgwCVOzjYhYIJTwitFFJnIrV+BTMl5e+Jtu486JRsesZ2+IG/Vo9uCx/R +J/JoP/lFqn1u9aVTEsZphZ70PGpi4p+++ttNhfFZrbw+2Rfgr7PDtYNK+HaqqSGG +FhBntYlbTAfNKp9uqekCAwEAAaNmMGQwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNV +HQ4EFgQUL84WbiIdUt93//HNurWpkwVR4cEwHwYDVR0jBBgwFoAUrakHpFWrwTEm +lyK1u1AhA9sotv0wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4ICAQAf +FEjsxPG880uuIdsqdrhf1c+8nSv78qQ1Inl4MEUT42QXiAO34K4S23HrpQofrDYw +yDQZj9ZSehBtTOTWMkPBdeExL0Ryhxt/M59ytDSC0/SHI7U+iADTW6JNcwpDsx6V +iYg8TRfOePgDogef9lUK2FHku91p4C2gRrzX2R60iSwSteUqjQKUXRrBceZteIC8 +CEIhKy4obDR0k78wU/GjHybU++PTltxlfm0kjj7Ba42Xp1ugLsCMd1bkwdPMB+vR +zO10SfujcPxSrLsGrz2lIsH6iXr/B6fEny0EusPWSBUu1Hlj/xCN2ACK2p21KCq/ +5udIc2tbZksmO2i0xugTbpp/SLqGhhR8L+oBAYY7mVufQdWM12pfprzl5G3gvmCe +G417AYnuWWVRDX7CJ4ORhl1V4UIM8UwMMlFtMm1QE6odNzKZR0HdncnHS+qzEJJK +BYxI4yhP1t9f2U7W9mXdfUD4OFc8q6LlbJHzYOAyVhAo8ki7g/W7EEf6eeovPBqe +UXrSxNjOJ4ien0/GLZVxBP6bWwqbvX2lk9WODI/NYx6kRVh+1uw/axJ1UwRfRQBz +ryBY8kCVJUUvBQKfb81OvBLQnffv1HGdRy6MgTF95Y9AvBu4GP7alHxv+1H986lf +CTb3QfSA5Sx+SefH22ILFk+1taFYIZNnTDhm5qnNxQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjDCCA3SgAwIBAgINAIXvaaR88RLr5rV2CjANBgkqhkiG9w0BAQsFADBIMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQ4wDAYDVQQLDAVLRUtLSDEbMBkGA1UE +AwwSSUQtQ1NDQS1IVU5HQVJZIDAxMB4XDTE4MDExODExNTE0OVoXDTI4MDQxODEx +NTE0OVowSDELMAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEOMAwGA1UECwwFS0VL +S0gxGzAZBgNVBAMMEklELUNTQ0EtSFVOR0FSWSAwMjCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAOTnXXzpq1/vphAThxKV1fNencArl7e9KcEm65pqT0Qv +ZGjhsdPmSazh+ykpYfeRm8bv50uPLue2J5bTL3J5l7W7I8SsscjZgZxd2Q2ZTG7o +MgKEkLRNCBVJ067zHeOMT7gN51JlYXqx2jOO6tmVOIdgS5FSIuN1aPnlTh9BAa+N +SKqafRqCnc2fq7DXv/4JXUDa13ZMLgBiewibPHPg1UAoiuacozwNCss3+be9o1fw +ww2Gki5sL0j54ji5FokwUsItZU6vv+UTn2jctVyPP1YS0aL9Sr5Ji2+F18mzz4HN +H6lJwh5KF6Ma+cj3PjNMuJD5LFBgspb5lwvSqSIFFh72NCJsknwScDbkC9S0nojE +CeMzIRrO2iNkO3SO4DvbGyBjjW6m6amcvSD/Xn9KlTJC8yQWNJSRww2V8cnL2GrD +tGDBacJsUnWt5Wzo3UeeJp870z3T6EQ4dxyIsG2NMgwCEbu7g11BUEcefifpte0y +GUIeYSBVW4cAHi7EMS9G780UbRImdH0RqQapW26jMy8yZdS6xm2iGMv7ZlN96cct +VGHzfhSsZ1JSeVB5a515XdNFok5Fi/ajCsCLwmuAAATw9WoWozGH61FgOKMQFeuW +++UMZvD7S4RuvRZGjwSxFqgiEyAa/KoAT54P2Qt82FKL/99tiDoJpeCSRe/3Q42r +AgMBAAGjdTBzMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBShKuMm/CsNdqhci0cRucHCIGHJGTAfBgNVHSMEGDAWgBRR54z+6uVX +6dIbG/AWIbiNiXktXTANBgdngQgBAQYBBAIFADANBgkqhkiG9w0BAQsFAAOCAgEA +MWwZNwIPPOVN9DEPpExxlbxGcSAfzTeAorOyeX7rVGE9a+CPvPaQVWPlr1VnIRSi +MTQg8gvkaFqyBE4HPZHqwZSEDa516ngLm/qXpT3Lf4L7Ktbmd5AhWIxnKvIxd6Le +J36PwPYTXCtsuoNsGNet8sVlWbTcGse0Jr77b1/cRvFNMjpY0dsgVjtpN2WgPDfe +u2NXhQLEqtG/JQyWxbKzqT97wyJeJD9t3FGYEMyg4lsmV0npdrgsUanhvAPdLiid +fhg8HmIRjcXXexP9pu4QiGZ8yYx1CkF20opsIDeW1uAlM5AZ+UbtKG66H4V4OdjA +kW48r7vRAJYrctcoin5sdNwna8+H/xMENnWcXFfRRFkE6SdJR1RmHwWTSdp1c4dB +9+9X0yiK9fszPf9aYI4pzbCZhmSgMZXS0NlgM3LqsY6n1hCwcPgLrIF2g/MBE1xy +AZDmiQ5dKI1If64ob1QWdyv3E2TYLELVqiK06UeGrTuTHpjvG8LcbMHmRWCl2xfq +Ch8xWKHgTla9dbhBNKNgI9tWS24iTsEPi2tYwA9I0sbYpQXIMEAMs2LUgtTVaPBr +czyDMx/Eo2F2J2CT/T1vBrUIMODAKqCQOkiYxDPsqxARn60CnrB+kOaRKLMZ/xHH +UckgI3i8kJv5Ye+oy1tPjfYsHa6F9jQBYgK2sCaawLk= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmTCCA4GgAwIBAgIINi17NDMfYIwwDQYJKoZIhvcNAQELBQAwWjENMAsGA1UE +AwwEQ1NDQTEdMBsGA1UECwwURWxlY3Ryb25pYyBQYXNzcG9ydHMxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJCRzAeFw0xNDA0MTYwNzM4 +NDZaFw0yOTA3MTEwNzM4NDZaMFoxDTALBgNVBAMMBENTQ0ExHTAbBgNVBAsMFEVs +ZWN0cm9uaWMgUGFzc3BvcnRzMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlv +cjELMAkGA1UEBhMCQkcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +hk9Hf+MacgAWiyVbLGuCAEE+9H0VwA9RPweOM+PU9wFDBqDoc6wLFKUt16Bhvgs4 +Xsz04VV2ALUYMAeQ1+YB/SZQZPiTifPgTGz4eFSgwkmNMPnkioi6d9uy/IF7oEoC +Xi8NGf1fSLY68mTGdOYs245WfV8mfRHz/rm6VQYBMK5SF/mbAyl0sy52vdrl5FxS +HPMhykFuFmOYVHDGVrATiYlFBMVDJ7Jfx7irvgjT9R0Z3icq6jtWajUvOd5Uz7ik +FdTscRE8tgqTLbAY/EvOvkV9Rgib5sYy+YtrgihUuH1bico7u6GqlFU+eNYXNlSI +nGaH2RftwzloyeXaicIfqiVQlS+t6qNqtWv05HkzQzP0p7XRquX+rMkcjbl8FMYE +tIJr5JMmgjwZv5bc6AJSfQ2Lfxqigc3MWwYoIni/E7uU2ub12cs80WBP74cebUNM +i7FAcKWRVJknfYuvxVgZROwoqoYMe1yhcJBmuCdX6Zf0KTuwaJLPf5QnYKqdjrCX +eVfOq2+s3xRL0CPIe0DuN0XmGAzakDKimVUFdR2WTf/r8c0XOyPcfbAf5ZBhohuJ +Ln+lbwQoXTc9s6iqoUBat/922btzH2xuAS+OfEqekpikq//zS4lt32RHRnNBYTE2 +DL9f115RH2AnT5SLK/qIZh6I3qpVBxcVbg2As1lTmwIDAQABo2MwYTAdBgNVHQ4E +FgQUnuC/3uLT1PztGzko9UqnsyZd+vkwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBQz5BOCTpR+xTLM3YRul1ENA35vYTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI +hvcNAQELBQADggIBAA4ozBEIGQfxsC4ZcHV2essisaupn+yV/GqgjsdywWCnGhKn +DAbUcN0L+U7KNK1d2ooYAqCLiHFRYCYdAP2QplA8M5bId1bsAzN/WeQhWUWPKLST +PXGYyFQnfxNPdKN8uQz2xCW/fd4Cg6PSiFAoIG7wQrdYNMD+QdOr5vsD2F4kQ6tM +VP9TD9xFLthQmuHmantdB7cM9wdgWhLZoH2UTb7x4ZyAc/L9CSPlVCxesAY6RIFb +VcdNKA2e/YvIU9pMWKvx7brp4bXbIph2CFo35yKgxrZHwmirShlEq8of47TkLlZl +F1sw9gdwTC06V6oapvZKjSPF/+BWTnE1lr2+Bi48VfxYw5ZJB8kaM0SCwa4ZCrgT +s2De4W6eu6LnXe28wg7bC8ImaT302g1He7svrYxpZxrPp4fsunZ3bGdAy1wQzejM +Ha8R/2CeIpa7wOKbCWrMZGS7xDXVHXVZ+PXWT+G3uJLJPI36iGfG/Gc7c4gj5PqJ +UXVT9ys7gNORBVpcJJxaUXM5n9RJdYOl0OVUgrJWyadBbtrjWNs8twld7Jw8V+kT +pTiLqSeMrlh776ReBsc5Y3H+p2Yaudkz/GgPGhBWZ6q9SoSc39U4cTbMyEllWCnj +OMOB/4Tqdq1OZZzVhRYcBaRe/ZTlu/yDT63wMjeaKSs1JueLELxnk2j7FJmG +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFmTCCA4GgAwIBAgIIPbO4azfF4SAwDQYJKoZIhvcNAQELBQAwWjENMAsGA1UE +AwwEQ1NDQTEdMBsGA1UECwwURWxlY3Ryb25pYyBQYXNzcG9ydHMxHTAbBgNVBAoM +FE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJCRzAeFw0xOTAzMjAxMjI4 +MDJaFw0zNDA2MTMxMjI4MDJaMFoxDTALBgNVBAMMBENTQ0ExHTAbBgNVBAsMFEVs +ZWN0cm9uaWMgUGFzc3BvcnRzMR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlv +cjELMAkGA1UEBhMCQkcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +lcm/X/Vfp6/HprGtS2f7jbSH+N1ZONNwFlGTOQyzAzj8XWBB3Kp3pPhqNNJl9sRr +bkN3xIImWljcbYGZ3LRbC2VusMq80WY/Abv3AXogveN5XbFHL7XiTmBJaCeXUF2t +swDgEkKV1Vad4Q9lddSaf3iIE2hujopGPJqKP2i67AP5ryuGswEdRk9T8QM44EpE +pG8UA9R710urY6qQI/BocAuZcLkgiBZ+B6GCjJxVmX4g0Tw5CpALDWvGU8aU3/eR +yCEGFzSx5V9ymGRahRZk+djQLFK73Uw4nszzWHg5UgZQ7c+/gSIoWV47NTPGd5LF +2BXhalaB1e9xDcI1bTr/0Eb+2x9w91glKWQ6LzxbxfHcb8Bx2uzSDrD1Uat3Tlkd +kCsNuqzEDLMYpMjncFWF7VK/yF/6NCYFofXMYZYHG8IgGLns4mWu38aBz0JP/RJX +Q67b/a8CdHPljSEXqQuugVxB7chqgYKqJr+WViVtwCrIE48wy9HftWXnJ2iI5RXC +83kHJ2hoPOJanHP5KwQVoeHzdvEDaQMDiGaAcnM/re3K7XZ7WGVAHNQd/1Haj5YK +OvE4X2ea61SOkOIozOde/O70n9KjR+2OXplWLnyMsttOiB2iPbLv2To6nwwC4VeD +WmsIVNCm8Y1b0iDAcTJ7qDnzPlJkLDG/bOjcmy+GJQIDAQABo2MwYTAdBgNVHQ4E +FgQU4RKdZX+m93nitBiyBdsnXvue9bcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSe4L/e4tPU/O0bOSj1SqezJl36+TAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI +hvcNAQELBQADggIBAC2LcqfVRrWBfNRpHSoeq8zmCauBHwSpRysR2yU2X1+5YtE1 +eTZlRrwVst2evdB38jb444skM5rTM2v1i6FfP4dBTXwNVQmcFnLsF4WpgSCCnTFo +ofyIGA8fIc4xRgUl49Om6WrMNNyk5qKf3LL4rKkIiVVCBmek2Ms7nA64bRKNGC9w +FeznDCLy2+dl1prTok9tOMo17TxSM2zhcCYCIaVKpOhG/EhWswTTSWUFIuatV7aP +Zy8slPZsyDiNd8sZbAIkKbt3q+JElH6b/tC1jwh/endftcKS9KvDMo7o7iqBwCvJ +gicEwdCnPo+hM60t58qxuYDYrDTJGwRJxWw/SpcdIi86NofDRMwi/HzkMksOkma/ +uK052VZ7++HqnQD5BUd8g7z59hG60jiPe7SU6c+9RiIQsa4mmAFq2G1wd9J+0Rlj +zKOxcpijjqb4WAN+VqH/lPYdUVjb4KTDFVbOEe5GI7sdTqmD9TZM9d8/7HzSlmGx +kXaFOOBt3DDKTwHJxmG0gzgpPWu/h1yjTHvu7mwq2pDdyKdyfH5fmpQytKUx56w6 +GFHMfTEbSAJJ5ps3AD23iphM1cr9Ma7Lxna4JYF7M2NiH6M/bALZx/+vfOZ1dLtM +U2qaBWUzQ3iTB/pwh+mmCM3noxsAWL2FGfWMHbWvi1wkVUXigkLv40sRdh7W +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIMaO22BCQVpTZsl7wKMA0GCSqGSIb3DQEBCwUAMEIxCzAJ +BgNVBAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA0NSTzEXMBUGA1UEAwwO +Q1NDQS1IVU5HQVJZIDQwHhcNMTcwNjEzMTIwMDAwWhcNMjgxMDAyMDgwMDAwWjBF +MQswCQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xGjAYBgNV +BAMMEUNTQ0EtSFVOR0FSWSAyMDE3MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAjnq7oGg/BM3kajVMTPZPbzTul4S07fxVhggfHD6vYllrNBXvRp8E25aL +VX3Jc1TPAX/nyH+6g3kleFvUdpjp5ALSB2tkpc/V5lhs0g5ydLC2vQRq5xif76us +SaT7ZYYBLQ4gdwLeo+n+KZW/oZ+O9l7doXNXOdDrEXT7A1+GQqde6CZC1hXYCJVL +Gjw96pkO69KcJwitc8qLHrCCjK2ufAMNmSrlyKTiyPlwNw/Sw1da75IEedXnZ16C +5m4KZnKEjt8uSgTvue7hfDUo9VJ58LdKgLKnOXLLtsPxiTsyCYF7KF/IHA5FjUvo +WNzdprWLlg25WoPAZv/WWl1I7knSzFcjgahtxo5NTbjMiG5aaqwyMWwJqs5KIyF0 +lkzT35rhhUU4RoBuGssSY8xfVeZnUzJG2aG40YdHeogIjD995adfFSqkRW8eO+b6 +ahKougAxBWRRGVcZGbNs44x0mqs/dMJCAY3yisXIYVQHwLNZrF7IXoYj103UsJm7 +jhiTSEvhRhLDg/VWJ+0Uas3S0hEz37pV0BL8/GkMIq9gMY83hBJFlgzXBijN4Iwe +bqqUupYQbUzTji5MzzAqUWZ5V2gXeNnPLiHSDf3A6JyBBL2MKESyPWjo2XzBYr6s +0k6kc/41ZXvG1nyDF1j/1dCTq47PDPOmG6f/Pq+8MGc3/GIqJSECAwEAAaOBlDCB +kTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +E7qripbOn0IuYAWMJAetc0qBRBEwHwYDVR0jBBgwFoAUkQNGOgwfQ+Xd7GW4dOIE +NxRVkEYwKwYDVR0QBCQwIoAPMjAxNzA2MTMxMjAwMDBagQ8yMDIwMDYxMzEyMDAw +MFowDQYJKoZIhvcNAQELBQADggIBADzrc4oQg24/wQvUY3YIwqyEMVQ+ZkkfUEmX +ZXMeXCaOrLqGbmkGu1e8DkIsH7j08G2YrcvYh96QcVJJD4zmk8HWjesc8sx/EqsT +oabAj4wlM7jiJE9U5iRWBKdhdCbCqF/KshmE1vl6wlAQwWM1eS2zBKgxLqbhS3NI +iROXUjUsI0xkCpp6etrvRLGWnwByA8H7f36miAiJ8YqbTjW25vU3oKX7m/dpmKDt +NB/u22Vj0tYFBmyXXCAy7s+8LbWzOyzn60BsF0lnvzUptqfDZB0u1ikrfZJkqTyQ +sSl/DDPkHzevwjsdJPJuMVBV7KtnQqMdA5Z+duFpGBYAM+u4pNaJtf518wsKDQes +Zdc24bGeAwN+nO/m62h3xspQeUYqJLGNTFuP/GL1g43ExtfGgC0BHyUIqwf5PIBD +2jBSrxCu2z1SthVhlJXtcIG+tFRVb+eJaJwyWim7vq2uTaT3kALYkkZt4R5lz8we +P7uS8EtlPf3H2qDv5OyJyZz4rvE6HSuHdDGiieqC3Q/zWrnpYlNLJM983+qBNfu1 +VSEqcll9fo/JA/agscaaB51+yg3qlK0rYDUIEuVQvqXVi7I1HtEIfuTadnhuup6R +zWwGNfw7P4maxIRgs6oFjI7jMKU4FO8Uj1ZKONDOBHIg/bURTXuHHmoigEdaBSY7 +yVpowqcI +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgINAJ3gRQ6YL2OKAu5XCjANBgkqhkiG9w0BAQUFADBDMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANCTUgxGDAWBgNVBAMM +D0JNSENBLUhVTkdBUlkgMTAeFw0yMDAyMDYxMDQ3NThaFw0zMzA1MDYxMDQ3NTha +MEMxCzAJBgNVBAYTAkhVMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA09JRjEYMBYG +A1UEAwwPT0lGQ0EtSFVOR0FSWSAxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEApYbYiAxkQh/q80R0mVyeExygqoOkat6mRchyeiYU/lDruelx4ufSGxj3 +n207lWLNoZpx9+a0gXpetS3CSgmMMkti+ZTFSzrC4z3o02p0nHBQpyfbDfrvJUjq +5iHAUGNruDwWjKGJrX75ECb0gNI1QXVAvPxCS7Txo5wIGf2LrCTUfbGi7GPBBYqU +2A5STO6Ge07j5J/d6o87Knb6uple1jHKkzzjWJAkmlXBIfbb/sqqxWgQG8JfZiU6 +Odgg4QmxJLUg41w4mF0Hak787zF4w0AuhJRkzlRjeeohmSRW32qr9AGyoSkWm/Cz +ACW6Ce49dUtS7gz1tPw8lfxveGFcCTmSJ1xafwHXTd+wyKYuICpzEK9+M/L70kOV +C8Z4lnLGi5wKQYo5s/0Oc+rdZtbL+cyB+DuAh5GDcUZ0UjYJZ8r12rnfIq9N5kHz +hHE13Kdv1taQOsuaEhPE6QsNEFBeijy1g8yiGe8KweWAOdZu2xJIDg4TpRV/9Rqj +Btxj6WR7Ytt5whhdqrNDxYwp/UpP7gCLn7LJDdmANwmLRyThSlo6SsOGjmYVh6DK +++8ektijW1IeUqicI3xW7QAm3gObjXVZhN2dQjB34goInRKrwOyZKXUeWcYa4MLm +k2zdPZyvoYntlzlgV4Nvmlwo/iXojHAGByHXzmZMKwIiO7Dd9tcCAwEAAaOBlDCB +kTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +HTTv88Qialg3ztNAfo3awEpJUw0wHwYDVR0jBBgwFoAUE7qripbOn0IuYAWMJAet +c0qBRBEwKwYDVR0QBCQwIoAPMjAyMDAyMDYwOTAwMDBagQ8yMDIzMDIwNjA5MDAw +MFowDQYJKoZIhvcNAQEFBQADggIBAEeK5fRnSl5Q/yjvxzyHqzai4U1/sXR4Kf3D +FvDO2ghCmrd5ggvLvbw+y+KFN4XIJgA3OcFk6ALyBKOlAv/3X4DJXXt0L7q1ckFU +tf2vGDSM3ClAerbvdJm8xG5YDkq4uVDWi0ySPRWmy960QVV5ZXWINQNy4yZmWPhg +DwT1S7DvcwkKeyN2CNzlf/qaME0oARDmctIHhBsp3vwsHSOvXFy5mg0WXhNHv3et +N8M2U11ZoKKgXyaRfWIxZ8ObIKJlsu+FoNzDapxrllVfE3tTg5QgCvtgcgH/8DuA +8nIOCEZThI05NGreWflq+ycc9sWqqBGdI6vrPUlW2hgHD+muGUKjE698Qb4D0VH7 +y0pEunBBPyibkpAhWMiBEFg0EzxqoZhn5CwTEdSivptzmBg1uMDqQu8jwmaEf671 +GAxf2ckGThrENTMfJSjsdOAUAw2enw5SQ65Tm1cpHvOr/VJcbFvEUQnTQ0hJIajN +dA0abp81K44RtlTaocVAwShybsFf57JwP3zyW3XCLFlPDZRpcnw8s6paXUSbf2qu +12d763EtfacUBm46Zg1HMw2MX3CTGWsyTO6GsEryj3PTPr7p8obpspEEKpM83rRd +wbPX3AmXsxi/SreKx+tQjVTRF/lHL8tQvnlFdnwzoudNp+dFi0g63vviQQ+qRBVp +YIJ709P9 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFpjCCA46gAwIBAgINAKFrEnYqW77JLh5LCjANBgkqhkiG9w0BAQsFADBFMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xGjAYBgNVBAMM +EUNTQ0EtSFVOR0FSWSAyMDE3MB4XDTIwMDMyNDEwMzAwMFoXDTMwMDkxMzEyMDAw +MFowRTELMAkGA1UEBhMCSFUxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDQ1JPMRow +GAYDVQQDDBFDU0NBLUhVTkdBUlkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALcX6QmvDwHV8SACYE/c3LFTpE+sSfy7J6mDIAPbKRTklA17SHPk +O/ixGilYmsEArSDs4oagS8evQYrSl2Ok4LxSprla84mEgrN6SyAvNSsrV0F+wPaW +nekBY/FwOKoLj0DvvrR+Cqvkp75TDQ6N1SyyS32LhwBEqXQyXDE+ufoSwvm1GbFt +ctXyClc5AhI1vWv7aUUY0M1c2sujB4UwNF9QRk/oax9tF/474lIcfjHoVfqK8W7j +yn1zFFJHc26AxFWKEJ7GWiKJ477A0VFLasukXQL7pFgNopWznz075BUPvGrCoBNp +Jq17kGDSZu0PvSZPGrGfLKfzoc1iaistBvR+nd/oFEVQpxP3jV4teLHsRz2pw5Wh +v/YwAyS1P6dHR/N1jCLfWyOjlSZIxcZinkMplspTsAEnS8y1vZqrPURz/hAfdLLW ++erjR1AD8K3K7V7WMfK4QvmVHgD3zjs+JcZo1aD60LYNnqy4CWRc8fiiMW9uDzWX +FHtIJHfHAryMJilvgS6Gl7xiquTm/euebM5GU2cgs6572rJTsZhWzH9KXUaImjOi +XVCUaikWKVpGSkkQG8sEGNOBYubozHA3PfAWuPS3s5dZE2sBwdArZdbbeSq2Amta +wInu3SKEvK9lVz9SEuSh3Op3bdoa4BZx7eXU7GApSe5IsflVQXGMXaiLAgMBAAGj +gZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFIn1Vohm7xEUeCV2YIMQQfiDVDHiMB8GA1UdIwQYMBaAFBO6q4qWzp9CLmAF +jCQHrXNKgUQRMCsGA1UdEAQkMCKADzIwMjAwMzI0MTAzMDAwWoEPMjAyMzAzMjQx +MDMwMDBaMA0GCSqGSIb3DQEBCwUAA4ICAQBoyM907I9fId/qwcabBzuI8jvqpo6C +Gbpzl5gqpAryUekSx4qLvtbDix0dwp7TkxY7pCaVDPi2IjIJku7gL5RsurWwreJy +ubNVcLTDu+GOxeddX1wD0m9LwjVL/XyC6f5N5FHZ0s2/E6fp35ZdOjcFFQHu+BYu +0NaLa2DBX4EfAwBjl33B9vK2wlvbhfPTJnzxsZDzOYk/EOGRTmjKlW98bOuOXIs5 +oIE9M2sFdUZbnC0PwonwDmCJ54fHtw51ceHKU5qrDZ/T1MkHspwJukP0E26OIJCb +uNrLbf+k5E0ro4w6SF27CkzA2omkoqDI319/J3O07OHeiRSnPGvVUrp7uP3xx5UM +pS4yVIK1TWSp7344PBsKbetDxafQRhJk6WvZdE0lm9QTlXLEbGHBycd9VM+X0Ymz +vdHB1y67x62VViKtfgerutHMwRlxexxkaGGStovdC82WAuiOxTwjpRTHuWSsVYI3 +0T5y8RsjWJP6cJjL18KkDknpRPk40WGICieXnSz5xtDcPqkvuuRye+pZveHwolY7 +iVG3u2D5phwTUf6LTdBVR+sGr+EmoVFRVEchJUz3W2RHjYFfamyPXkmxVoUdggkV +XdBUtdiUlQTvXFGwylcJhIF6zRrFtaRO5FGGAuJBl/HqOD4ZBw7pZW2W0aaQguLF +TpF6khvje0iuCw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFqDCCA1ygAwIBAgIIMMhSNhHQNgwwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMCwxCzAJ +BgNVBAYTAkFNMQ4wDAYDVQQKDAVHb3ZSQTENMAsGA1UEAwwEQ1NDQTAeFw0xMjAz +MjMwMzUwNTVaFw0yNjAzMjMwMzUwNTVaMCwxCzAJBgNVBAYTAkFNMQ4wDAYDVQQK +DAVHb3ZSQTENMAsGA1UEAwwEQ1NDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAKg17lPofg6ey51yxXhaGWhXaLzMxC0I/u3tAElgguAo/P2V4OdH+him +aulkY9SUOtC0vayJ5N3Hdfwsro6GB35rTX39LcMl6WONih1L825M3yUqgbrHKhxX +ijn911137dwbgF1Cmo6rt+suBDA0hFdjwFK1fh2MCm2iPkLvvnxEbR3WFxYh70ch +x6pWnFeNTE6Sgx+nC/PZW9KUj/63qXa15nmCQcHgmVQDRMo356nL4adS2ZRKl1RP +itOxAPbES7en8WC213YvsAiogDwZ5M90H76w2LwBwkaJIvaAnIwjc4jHGa/5cvax +qjfwoFvJvuUqRxyNyyO27VEysl9y9y2v1X/6eO47aQ/yKlxpMWSv/gE6kYM79C1p +QC54sCX1NXFjomwONtD3/M6zS97EoOFUZOr4iWAsOtCk/ME8+VLUqmL4VHth6NNz +4SK3go2CItmpL+W947Ktjz2N8dzXojQuXXq0Btl/qMON1S5NOtwhAAkPX9o2FhjC +TWgiPw9aJOKovmXTaDBOr32fxSxe6bYTeY/x/8313WYMFwChhzanfvQXrblIOtvw +8XVnJrWjjcrwhqe13KjAk/5XA0SgLT9MYrAkHB7q2OqEeGCTA+NSLEAJZRcYklRz +WGtXILlPV1pCuPZ8cCAD6jNlIMCU6MJ2OTZMRFnBVqpO4wLZe03xAgMBAAGjZjBk +MB0GA1UdDgQWBBQLLZ8H30CNddEega8CWnsEgfNYjDASBgNVHRMBAf8ECDAGAQH/ +AgEAMB8GA1UdIwQYMBaAFAstnwffQI110R6BrwJaewSB81iMMA4GA1UdDwEB/wQE +AwIBBjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcN +AQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADWvAP3b2KhVmoVFSdUMNVuaw+Jz +dzO7TUGPyq+UMsGq6jbRzS5hocNRt9x2ksmqMsE7Ia1V8RC+9dcbYgNKf+pKyo6+ +AOY2irqVtOtayMEOhA6imdefdn6mc02CF4e8ra4ccmGZIx6lokDL/fE77AuFrg0x +18o70fzNk9Mn4SRd2QQjmJaY6Zj3ANWrZycCiruUTVwzSjZJt1/AjiwxPSpVtnQO +anCyg8h/be7vYThVy7rAMTr5Gs6d8dzImZJo7I9zhjPra4RvRv9h2+MzoZ7aCcGV +N478xcezWroyTm0tFMXpIDaIxgmXdm0RYrSc6W7d0mO8vHetxJQTZehPi3F0mkBA +flnshyRcHfodVHs7TjH9VtFmH+HDLIdY+cALwUn3Bjxm7oG/F5gGBmmrDsIHVG8Z +qQttcWw93+39KJkiS5GwjXhX9CDPVGilMUC42hclWn31TBT0zf7AQTd2fV1hvVdv +W2HqjBo3Y3higF3qKPQzWPJe69wh8mJPzT+IwrDxZGCJWaHxAgK1yKMoopV/YTgJ +SsR6kYNK/p0hfjQldiLV8XObbY+VGP2DdqEVv79Cc7i4FNEh72j+jvVoAEWi43Hz +ylsRx3acXRc/iwQfYub6c+xo6hxm/MO4lu9fIl9nQ/yoo2nFPcE1n30XVPM1NCZ9 +dwdjglPMqaW+R8nh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFxTCCA36gAwIBAgIIXfbd8vwHGUowPAYJKoZIhvcNAQEKMC+gDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFADB4MRgwFgYDVQQK +DA9TdGF0ZSBvZiBJc3JhZWwxDTALBgNVBAsMBFBJQkExCzAJBgNVBAYTAklMMRAw +DgYDVQQDDAdFUFBDU0NBMSEwHwYJKoZIhvcNAQkBFhJjcnlwdG9AcGliYS5nb3Yu +aWwxCzAJBgNVBAUTAjUzMB4XDTIzMDcyNDE4NTAzMFoXDTM5MDEyNDE4NTAzMFow +SDEQMA4GA1UEAwwHRVBQQ1NDQTELMAkGA1UEBhMCSUwxGDAWBgNVBAoMD1N0YXRl +IG9mIElzcmFlbDENMAsGA1UECwwEUElCQTB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BD1QcLHd5AbqVZ2cxi/1YtFOgjT+RdtaVQv86jnFAnROXS5K6hHGK+oa9icXD1L6 +qXr5vtXt/DiC+yUFI+L3M9PRh+H+UPn0VDzA3dX2UWR1bf1ae0A7PeowVJ7PSXuo +BKOCAdEwggHNMG0GA1UdHwRmMGQwYqBgoF6GXGh0dHBzOi8vd3d3Lmdvdi5pbC9l +bi9EZXBhcnRtZW50cy9HdWlkZXMvaXNyYWVsaV9wYXNzcG9ydF9hbmRfaWRfY2Vy +dGlmaWNhdGVzP2NoYXB0ZXJJbmRleD02MBIGA1UdEwEB/wQIMAYBAf8CAQAwewYD +VR0RBHQwcqQQMA4xDDAKBgNVBAcMA0lTUoEPcGtpQHBpYmEuZ292Lmlshk1odHRw +czovL3d3dy5nb3YuaWwvZW4vZGVwYXJ0bWVudHMvZ3VpZGVzL2lzcmFlbGlfcGFz +c3BvcnRfYW5kX2lkX2NlcnRpZmljYXRlczB7BgNVHRIEdDBypBAwDjEMMAoGA1UE +BwwDSVNSgQ9wa2lAcGliYS5nb3YuaWyGTWh0dHBzOi8vd3d3Lmdvdi5pbC9lbi9k +ZXBhcnRtZW50cy9ndWlkZXMvaXNyYWVsaV9wYXNzcG9ydF9hbmRfaWRfY2VydGlm +aWNhdGVzMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU0Igv5uil4mbgyXfzutYC +uXV/guIwHwYDVR0jBBgwFoAUWKkdn9oNed99zMXFbaF+BQ5y0agwPAYJKoZIhvcN +AQEKMC+gDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQME +AgEFAAOCAgEAfq1TDzQLQS6rotNqtLLedIfgFnd5VaklVaYmkZBr5WoTAH4F4vj8 +c2H9GcYUfOds+S8W4Hj0QGQPea9aH7DqAi4UVpIqdWIWtwzxF90T5USYcrG/t6wU +y+hnLPJac0aFSN/tDKGL8piWumIWQBWmyxjuDtED6zcnXj+vjn1PrAyBJBQLa5tA +od7OH9+uEsMS/laINBzsfIh8GQGunWjnWaDfgQn+cUNRDEEa/PFTMItRML8YXf58 +rn9L7JxK2DAWG0InssJWmRHzMEIK62h2rUx8UrcGsPB/L59sMvN8MEDDKXmDfZCL +DKi5/DDcHaraM8fm9C9N3gIXRHoqQqpK28/M87TTZD96dyEwDKWiVrJqmh9/7huz +u49bJsmMDoyGAqTQLT94svO1CV4RkiaQf1qUDptICqkHSpuKFcTxV9Cx74M9/EHT +KxNqKyW3MDJkNZtspBfsQUZIZjQl8GM70Rj/jc7Oe/0SLQqqSmBLOfCEa7bhRVrS +H8N6Ai8yUsCxjkqSb/NCs3QKYAhWu8IzKoHjsabKcnjhdVem97I/Yd7CPmKVXpZe +MgRRd0p0BeBiXMCFiDcp5DVSmdQYkHOoLKjz0JbW76ejFdSH6rVBcqrq4tAQS8+F +FuIG6U3/4+TA8UrysW6uo1iYHPoZnNFhX9I7SbXP84rdo5xKPQZ1B0Y= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFyDCCBSqgAwIBAgIRANGxiXWWb6Y47ZK7CsVNNkAwCgYIKoZIzj0EAwQwgaQx +CzAJBgNVBAYTAklRMSgwJgYDVQQDEx9JcmFxaSBNaW5pc3RyeSBvZiBJbnRlcmlv +ciBDU0NBMUYwRAYDVQQLEz1HZW5lcmFsIERpcmVjdG9yYXRlIG9mIENpdmlsIFN0 +YXR1cywgUGFzc3BvcnRzLCBhbmQgUmVzaWRlbmN5MSMwIQYDVQQKExpJcmFxaSBN +aW5pc3RyeSBvZiBJbnRlcmlvcjAeFw0yMzAxMTExMDMxMzBaFw0zNDA2MTExMDMx +MzBaMIGkMQswCQYDVQQGEwJJUTEoMCYGA1UEAxMfSXJhcWkgTWluaXN0cnkgb2Yg +SW50ZXJpb3IgQ1NDQTFGMEQGA1UECxM9R2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBD +aXZpbCBTdGF0dXMsIFBhc3Nwb3J0cywgYW5kIFJlc2lkZW5jeTEjMCEGA1UEChMa +SXJhcWkgTWluaXN0cnkgb2YgSW50ZXJpb3IwggJGMIIBuQYHKoZIzj0CATCCAawC +AQEwTQYHKoZIzj0BAQJCAf////////////////////////////////////////// +////////////////////////////////////////////MIGIBEIB//////////// +//////////////////////////////////////////////////////////////// +//////////wEQgBRlT65YY4cmh+SmiGgtoVA7qLacluZsxXzuLSJkY7xCeFWGTlR +7H6TexZSwL07sb8HNXPfiD0sNPHvRR/Ua1A/AASBhQQAxoWOBrcEBOnNnj7LZiOV +tEKcZIE5BT+1Ifgor2BrTT26oUted+/nWSj+HcEnov+o3jNIs8GFakKb+X5+McLl +vWYBGDkpaniaO8AEXIpftCx9G9mY9URJV5tEaBevvRcnPmYsl+5ymV70JkDFULkB +P60HYTU8cIaicsJAiL6Udp/RZlACQgH///////////////////////////////// +//////////pRhoeDvy+Wa3/MAUj3CaXQO7XJuImcR667b7cekThkCQIBAQOBhgAE +AIAHrhc8JYaKCBLIKhAzM2qjNSurwrZsJ4BFGzra1Rk41HlxOUJNbPvlUXlhv4lC +NuppwN0KmSFm5Akc/c2q6MpYAUmNzkERF2LRFUN7E9ApdRG8X4GS3UgTasg1fozA +3FtPJQMHR4QYWrmyxz8tuLT26U8a5yYiHsI9vz5TY1ErzjQco4IBSjCCAUYwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwTgYDVR0SBEcwRYYbaHR0 +cHM6Ly9tb2kuZ292LmlxLz9wYWdlPTc0gRRQYXNzcG9ydDFAbW9pLmdvdi5pcaQQ +MA4xDDAKBgNVBAcMA0lSUTAdBgNVHQ4EFgQUUdMaKi387TvA9UEk1FUxCbPi3lgw +TgYDVR0RBEcwRYYbaHR0cHM6Ly9tb2kuZ292LmlxLz9wYWdlPTc0gRRQYXNzcG9y +dDFAbW9pLmdvdi5pcaQQMA4xDDAKBgNVBAcMA0lSUTA0BgNVHR8ELTArMCmgJ6Al +hiNodHRwczovL2VwcC5zY29wZXNreS5pcS9jZXJ0L2NhLmNybDArBgNVHRAEJDAi +gA8yMDIzMDExMTEwMzEzMFqBDzIwMjYwMTEzMTAzMTMwWjAKBggqhkjOPQQDBAOB +iwAwgYcCQgG+WbvZwhRME+bbdOcFp3mOl8TjWgNpfiQi2i9ZtUEw5+1qb5MJZbJJ +g8KoAmwa54OsA8ahEaHq3SnP7Cr9NTFB/QJBOO7i+iqzFs9fr4TJCiJsTZ6JnOTm +Vnn7v0a5D/H+ofc3EoT3xoS3WWzrxD1a6ulzrs/MeK6I4wavFDuAR5F60gQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFzjCCA7agAwIBAgIBMzANBgkqhkiG9w0BAQsFADB4MRgwFgYDVQQKDA9TdGF0 +ZSBvZiBJc3JhZWwxDTALBgNVBAsMBFBJQkExCzAJBgNVBAYTAklMMRAwDgYDVQQD +DAdFUFBDU0NBMSEwHwYJKoZIhvcNAQkBFhJjcnlwdG9AcGliYS5nb3YuaWwxCzAJ +BgNVBAUTAjUxMB4XDTE4MDgxMjAwMDAyNVoXDTM0MDIxMzAwMDAyNVoweDEYMBYG +A1UECgwPU3RhdGUgb2YgSXNyYWVsMQ0wCwYDVQQLDARQSUJBMQswCQYDVQQGEwJJ +TDEQMA4GA1UEAwwHRVBQQ1NDQTEhMB8GCSqGSIb3DQEJARYSY3J5cHRvQHBpYmEu +Z292LmlsMQswCQYDVQQFEwI1MzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAMATQrfyJeUAushXDigrDKU7GFL4YGrKS89wkdpFRF1AEDK2Ywhkc8hEPWxs +13LFSOjDQjyqdESKMjHoDJGVYuojrhYZq9O2gTm32vjI9JUbXrEb1MkFaMJnmYF2 +5j2vlGAqXev4EHOptQOAYllXxI7gk6rYvLQSOh9CX69of7jXfPsvZoDfRvDuxvQf ++QSDvW8mxYULDEGSsPcnGN8AxvKxOjE7TnSTMLokIclxec82QLOuSbYcIjarB3E4 +PjvQz9lDmtlKq/fr+HfZrXWWzeNH4INWI+1plZLTKqWvXnLJuh4HApVkBHGqdpCw +mZ7vgLR+zhKdL7PZrg7aDXyXoZv4s52ev7JIDpb57GUwTVOGoPDeK1ldy9juCufW +sWuL1ee+yIS3626tgQVuBLTTCO4KsvXDOTSJIJAaZK+TMeiIZCruZ14Ny700y6Il +9SbPDg6uHySUd9IpdVflzUG58wtKvjNWb0eNpK3h0OU5NP/uSP0akxPu5l9fZ7dw +LTtyOi383d9b/og7HWu2El2qNnhXyhZM2Eq+zqYKgiLoz0F1Hx6zYHBI2MoVxC85 +If/pv65hgO8gv2vZyXd7MLewrfBrVgCkM7fZEaf7/2KEPAmc8rX6ZYPl2KDH19li +XmO7foWug6FMZ7ghLCo10XLj7usuvFf75wR0/Mm7ZvS1aafxAgMBAAGjYzBhMB0G +A1UdDgQWBBRYqR2f2g15333MxcVtoX4FDnLRqDAfBgNVHSMEGDAWgBTUvkwO9nS2 +Aeg/czlkhRaB0G4PmzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAN +BgkqhkiG9w0BAQsFAAOCAgEAGepif/leSKgoi2FiSMg8PzPGLYOVdS/viahx42Kl +W8HLOZ4NqlYnnlbLgx0XxDbkuV3cGFK1Qvm+/02mlmLOc5h4igl5doer931DaTtt +y4WdmfRP96t/389msSumLSNFgkhU/+cZMPsct2ISIW2VfNbSftVM41q9tvOQtLyM +CGS+CTS4V2ck1Fh/v673QS5cmW35miqIyCYXB0aaC6pmscOfvYHSGAfbtX6uV6We +t6rBuRs91dN4baxamp/y25xsB5PwV7PxlM4y/QrKcTLuE354hy90pFsySVTmsp0U +j1HQ5zDwd1Fr7QgmN4eAXZUDFOadFFO9LqrWwWJxiw+4ArVjSuckRG9G5zCsh5MK +FBONQ90xyfL1c2YJLaHJhhXuQniRjCk50yIsmULcoxJxMjWxYqCe+HQmkfFp/ukd +90bgi9synSLV2DfK0JgtSqMn7jeo8Xq0NKcT3pdeeZqJIMQmnGyIvxoKOE8W+bPv +13sRWugJ/SO6V4BULqfkzPxEOVF1pPFSFd4fVM5qMq94RWu01R08TRVr0/PKisbJ +riRm/nCzvxfn2WrplJiQ9kjVF/3IanD7rjuDqj9X1mh3MTEjOWJ+ivP9uW8MTcBa +wrG1+Sufou7UK4fQ0a3gzG4XzqV9pQzN3lKWXKXm7vyAbmk18GXuuXqDXVDiU3F0 +D3Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF2zCCBUCgAwIBAgIQUG8TV6OhlsJNwyz0ZBQMrjAKBggqhkjOPQQDBDBrMQsw +CQYDVQQGEwJWTjE7MDkGA1UECgwyVmlldG5hbSBHb3Zlcm5tZW50IEluZm9ybWF0 +aW9uIFNlY3VyaXR5IENvbW1pc3Npb24xHzAdBgNVBAMMFkNTQ0EgZVBhc3Nwb3J0 +IFZpZXRuYW0wHhcNMjIwNjI5MDEzNzA3WhcNMzcxMDAxMDEzNzA2WjBrMQswCQYD +VQQGEwJWTjE7MDkGA1UECgwyVmlldG5hbSBHb3Zlcm5tZW50IEluZm9ybWF0aW9u +IFNlY3VyaXR5IENvbW1pc3Npb24xHzAdBgNVBAMMFkNTQ0EgZVBhc3Nwb3J0IFZp +ZXRuYW0wggI4MIIBrwYHKoZIzj0CATCCAaICAQEwTAYHKoZIzj0BAQJBAKrdnbjb +6cSLP9TmrjPJ/AfLMI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKuzaEq5qOA5iiB/y8t +gsaFKKpgVlg6SPMwgYQEQHgwozGLYDuJ4jJxRawjTMWUy92NPfkWEKg0QcrqmGO8 +Le1dWqglOqEKLvHJi5rItX8RF6cr8se558GsTXf8lMoEQD35FhCoNEHK6phjvC3t +XVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK3Ag+Z5hAULdeuuXdKAm9Y4AW +9yMEgYEEga7kvdgu2WRaITIunExqk4Xtn3C12RbBtDti7vTQCY7/Ox944tDUjVDR +aHuTuX1ffG1QR0BqXmiLNSIJvLn4In3eOF1WYzLswOq/qc94Iv3yCfcAJKV7GqAA +xVuIH4ERstzeSUpfSF5bykvYiidjrtHKKy+o8FQGeM0eDzrYCJICQQCq3Z242+nE +iz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZhGX+sEEcdsdOBCF3a +3bWHloKcqQBpAgEBA4GCAAQAl4aEPSe++eBVlHQuI020u8pj7a3mPcFYtJu4m8Xh +9y7GaqWRi9ZEiy3BnaK8OMmaB03KobMwVj95x9Brt8lZWVzA8t7xQcPXDIV0YVfZ +pVrS/i0sm3CYLzPaN6TZWoWxcla2u6343UXB5ELMew3TNPSEqVhVTCdNykCh8/aI +CqOCAeMwggHfMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUiJGPWiXs +43o+BMUtOKTytRI8hccwWgYDVR0SBFMwUYEWY3NjYS12aWV0bmFtQGNhLmdvdi52 +bqQQMA4xDDAKBgNVBAcMA1ZOTYYlaHR0cHM6Ly9ucGtkLnh1YXRuaGFwY2FuaC5n +b3Yudm4vY3NjYTBaBgNVHREEUzBRgRZjc2NhLXZpZXRuYW1AY2EuZ292LnZupBAw +DjEMMAoGA1UEBwwDVk5NhiVodHRwczovL25wa2QueHVhdG5oYXBjYW5oLmdvdi52 +bi9jc2NhMIGTBgNVHR8EgYswgYgwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQx +LmljYW8uaW50L0NSTHMvVk5NLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9h +ZDIuaWNhby5pbnQvQ1JMcy9WTk0uY3JsMCKgIKAehhxodHRwOi8vY2EuZ292LnZu +L2NybC9WTk0uY3JsMB0GA1UdDgQWBBSIkY9aJezjej4ExS04pPK1EjyFxzArBgNV +HRAEJDAigA8yMDIyMDYyOTAxMzcwN1qBDzIwMjcwNzAxMDEzNzA3WjAOBgNVHQ8B +Af8EBAMCAQYwCgYIKoZIzj0EAwQDgYgAMIGEAkAOU4daZxaYS8/F224HoCRPht1p +1ioEu7rM/CnnY8hk2YmWuZm8A+6DlE5eNBinfHIycXRnyAraFYZo0fn+nBStAkBB +Rq+HV+PQ6ZY6YWGB7fejuJUEfhpDMk2uuxpn1gRaU4vngyRWBFZDrfojJ4lxxS6T +QiXSpPERYJO20eimEf+o +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIIR0zGx8rxAwYwDQYJKoZIhvcNAQELBQAwezELMAkGA1UE +BhMCQ04xGzAZBgNVBAoTEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECxMbTWlu +aXN0cnkgb2YgUHVibGljIFNlY3VyaXR5MREwDwYDVQQLEwhQYXNzcG9ydDEWMBQG +A1UEAxMNUGFzc3BvcnQgQ1NDQTAeFw0xMTEwMTcwNzA4NDZaFw0yNTA0MTcwNzA4 +NDZaMHsxCzAJBgNVBAYTAkNOMRswGQYDVQQKExJDaGluZXNlIEdvdmVybm1lbnQx +JDAiBgNVBAsTG01pbmlzdHJ5IG9mIFB1YmxpYyBTZWN1cml0eTERMA8GA1UECxMI +UGFzc3BvcnQxFjAUBgNVBAMTDVBhc3Nwb3J0IENTQ0EwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC/arWi1WEcEwj74AN3BIzMVtdjRavjydpDvLsxnX3H +rIHXEJ5G5ggp/fl5e/+jlqnT2L6lzMVebTMjpdKFv7miyh4vAqbOXSUevkpbIL0B +D/UrQvpXQzwP3ABUwFAHQ90DXOrvlRzb+n8+r6jvRrD69IOnY+3bdwI8sJP/hvQw +SV0y73n6Ylx5bHgwSf2K7mSBIlCE1NZvWeN7KaO/McM3a1p9nZpLPTAIaKN1T1V6 +GblwM2msDKEzQGvCqirH56Qq8HWt12Xg/QGW/6N0KLj0V+EuIoLygR+uwwD55jXW +GpYDo8mPPg0RlUHv6ZNDtmhNtsYRqYN64hpsuVmtD/iZiSLbFH2wib5TAUGNqfmW +GY12kHpHZujl9SMoO6ZTL1SMtb8qPL/dXWXLINMtaH8M8w4xLdvQdRb6wNi8Lmtg +W2gbjSv7zTjKrxlvIOrZN1BdzzN/Vm/Ma1Eokozl8iXN82Jy25NbQJ77AGCMkyug +bSku3RR8xseHRPBuH2DIz2vsCQRASbAwAAJNbGEaECMOzN+OsWYLtpeLCmy1tiJn +wioyU8Pjct0G+4pBf/kjuVmttfEV18ocqN84BBOLhtbMGS3o40IqEErz1HAimeBN +8JjSQlqmDW7ggyWpz01mlzfvjUSus5f2X2v2/cCOjE8PGnbLitKcQZEIF4mQeXa1 +EQIDAQABo2YwZDAfBgNVHSMEGDAWgBStPqxIlv6twK+0qM21+5dgI1K1GzASBgNV +HRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrT6sSJb+ +rcCvtKjNtfuXYCNStRswDQYJKoZIhvcNAQELBQADggIBAFeUGI8b982R9U78wNc9 +kIEw/ZZ75SJYyPZYcLssQlKYTsxrRTX+QsS+nFGiiVzAOnY8XqhScAEB/3xEFn+3 +7LQzKdDcc6PtKpk6AuIAlkjAQIOH40+1+gV/kk3Z6ET1pdHnpO8yqh/XBBBezhkj +tcYxzz9xLOVZWUuu+9Mu2xCk1TmZMe2zsFFbBvWza10wN6rqOoiFozapR2LhE5Ar +hz9lt37pU7o2+dJn+l2dC39RvTYzK7/iaW4ajH68Jpq9c5yEpFaGBOOe7pSqS42v +sbaR/X9PzMmES9iGQAm103kKaQL425KYItaPmESoYZfXywD+Ss7s0lOh3OQAXRz3 +3ZuM9rJr3Bsun5JPQsU+2BBC0HQMWJCh8F1t6/6oy+eJ3gWtuuyu5/1PnfbN/qM2 +9As17PQySkJNJ2IGwHs6gHi7uGOsHLhPf69P+ihhU2wx76ojnYmJ5XSmYptJLcf0 +0RI1UITdkGyPIzWFm2c2C5jkm35cFc1QlPcwFHCwByChTWOSgaaRFxDAiaLsU6hi +tU1t6UqhilBp1Hpdmd2hi0IGuGnWMm6GfDhHaWhGwYak01neqqJJSYEv+aE03Ply +Q1RAp4bF1nMaZkvTMEUl6+jhz0sMhtROKKYOwZilajfqSQ/l+uDnDU76RhGRDJoO +2ePbTXf1PO3wgLdldm5zLClJ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF8jCCA9qgAwIBAgIIITFWxVuhzrIwDQYJKoZIhvcNAQELBQAwODEUMBIGA1UE +AwwLQ1NDQSBUdXJrZXkxEzARBgNVBAoMClR1cmtleSBHb3YxCzAJBgNVBAYTAlRS +MB4XDTE4MDIyMDEyNDE1OVoXDTI5MDczMTE1NTIwN1owgaIxCzAJBgNVBAYTAlRS +MTAwLgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkgb2YgSW50ZXJp +b3IxQjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2aWwgUmVnaXN0 +cmF0aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3BvcnQgQ1NDQSBU +dXJrZXkwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAHtf31NQHzcrT9W9LTBnBuq +9ZGrm2cBsnmZO6wiJuATubfDxzFvUpjS139IGW9BT2E0Jg9coLyvTQPHDEjGU8Vj +zgEWQuCqb3rDmt4n9cPuU9JZW2sRI+/B4Ymmnw6rOpItxy4P51ZfJy34T/LCK/QC +UMm3zG+gP8ZtU66ObHQkGIZi2aOCAhswggIXMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DgYDVR0PAQH/BAQDAgEGMFMGA1UdEQRMMEqBFnBhc2Fwb3J0QGthbXVzbS5nb3Yu +dHKCHmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50cqQQMA4xDDAKBgNVBAcM +A1RVUjBTBgNVHRIETDBKgRZwYXNhcG9ydEBrYW11c20uZ292LnRygh5odHRwczov +L3Bhc2Fwb3J0LmthbXVzbS5nb3YudHKkEDAOMQwwCgYDVQQHDANUVVIwQgYDVR0f +BDswOTA3oDWgM4YxaHR0cHM6Ly9wYXNhcG9ydC5rYW11c20uZ292LnRyL0NTQ0Ev +Q1NDQVRSX1YxLmNybDCBhgYDVR0gBH8wfTB7BgtghhgBAgEBBQcGATBsMDIGCCsG +AQUFBwIBFiZodHRwczovL3Bhc2Fwb3J0LmthbXVzbS5nb3YudHIvQ1NDQS9DUDA2 +BggrBgEFBQcCAjAqDChWaXNpdCBvdXIgd2Vic2l0ZSBmb3IgY2VydGlmaWNhdGUg +cG9saWN5MB0GA1UdDgQWBBSHsBmAfaLMtph7B3MWVgOx9c6y/jArBgNVHRAEJDAi +gA8yMDE4MDIxNDA4MjY0OVqBDzIwMjEwMjEzMDgyNjQ5WjANBgdngQgBAQYBBAIF +ADAfBgNVHSMEGDAWgBRkOJ0VTrqAAAkYV4R/bzI46mIbxDANBgkqhkiG9w0BAQsF +AAOCAgEAm3S+gpU0+hkaqBOut/T0E7ia3ie/wzMaRmE6X4Z6o9qmbMXxDUevqFvF +28c/vh7TyfnYk+K8aO8QtcbEUALxi1g5SGs+njrPi2Zsk5MYpWLCWV4Rnk/niik3 +u33zGZXL+SdTxnb0vg8O26qJj4x5JncMFCWhbud3O0G0emTfr3fgIQq+trubgxm+ +gpgjm+dy6KrROyWiol8thI1v3SWVtKkIiHT/BrDWaghAO+iy9dtEJep4yZ7Ojonf +tFb6ifPrGcmlURfEUaaP4+HUHcIFR/Vk3/5KGYiTkpbY/LWxrtlRIOU0ztTq/CXU +fVGvaSSZu+qTthC+g63fuM4qfJBqPgVHjEFP43mlJEELQo2V64/d9r64JpPqFOJD +N9k0FumOaE7pnQ9LZy0cNrSoBQt08Rxce4quJm1FvcFnIqOlUwF6KH9ulC5hqyup ++61P5ERkQk/p7XMOSEX8gAKo4B7WciSzX+pa0RdOA89SLqSoJR1MsGXodbCk+E1J +QQqp9e2CDG20iXj1i8r4mRcJwiR3A3cwnIjjrhkKGn8vJtsjg0lbCj37aUx9Uwux +MdQKxvyuzsmcMo8hjYIRzd/pZ3ERFUGckuD7J0n2NW2YBdFoiRGmuqjelGJ1ApEU +iLjysuWJ0fqbcw653tdiK/399L5EH03EQCHGbN3Tsyy/lLYJIOw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF9DCCA9ygAwIBAgIIBBnMnkRoJIwwDQYJKoZIhvcNAQEFBQAwgYUxIjAgBgNV +BAMMGUl0YWxpYW4gQ291bnRyeSBTaWduZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFs +IEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0YXRlIFBvbGljZTEdMBsGA1UECgwUTWlu +aXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNVBAYTAklUMB4XDTE2MDkwNjA5NDMzMVoX +DTMxMTIwMjA5NDMzMVowgYUxIjAgBgNVBAMMGUl0YWxpYW4gQ291bnRyeSBTaWdu +ZXIgQ0ExMzAxBgNVBAsMKk5hdGlvbmFsIEVsZWN0cm9uaWMgQ2VudGVyIG9mIFN0 +YXRlIFBvbGljZTEdMBsGA1UECgwUTWluaXN0cnkgb2YgSW50ZXJpb3IxCzAJBgNV +BAYTAklUMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfZw01ist+eN +/R1yrKEmpJaeGWa/cXQLW+ZyAWOFQHiDFhDzGuMEx8Fz4Rxx90AZv9H6J6rD9r3c +iadSBA2tm0qBzsGz57jaruTw2ZbatFjZhDzsuFGviXsYRLkmioPfwJDB4X/hLsSk +3X1d70ZPb+wphM86wldXRe6rXBrIud8O+5acUOgeO7haHARuQWsZ30vkFcaRghra +2TvAQpQX0mzjmq86D5aVCLauGA/sX1K48bIEA6SdhpEAFwRxNrNhIUNZstqsom1I +AUeqvLTjtBIVRS8JAz1u8CdVVn7mMgndPVVFvKUi8vrDcQliWVYx1CxcFaDO4mxl +zsIxPoSBR5gD3ooUNcgtXFB1sO5p1URYqaQxgXkKHR4PEKa3SGWqO7xpkCHG7x5b +FSNoBY/PTeqfEKVN2viDBvOvksHUuqFfOtB0Th1/AsjXnrL061COYfkv5YaUjtOg +OOSGGdZCDUdYbNRrtHR9A2p0BaCQ/HOkTEF+Tzu0H9wM+IumVfAB/cQQTGf5Iuet +BwWZZ6jjkOso06XzSmsVvbmRoppi844rwkDwrF49L8KuElRi+ZSj+16mrf2CDvbG +At/aOJ6Khxx4/NcatXgn9zOw3TcM0IW+OiO+IqTTkdu+R3Ua+H4aj6aUx+FLxiFZ +l1wVgZW2tBMlpIXNsaQGYA32cziSD4UCAwEAAaNmMGQwHQYDVR0OBBYEFENs45Id +EJIjB+/XovV37XUkRn8bMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU +hS33pwpRLYMQPfvJ9ijLaxzuVZEwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4ICAQDAggOUJgGkSl2VEqXsZp6YCkNAMlpUqTJdtkU9nsptly0oY+avVR9W +h+QVX+bIZZyaMOEqtP+cIZfXz73t019pndZ6sVITRDKgEiNKgj+P7cp9z+5qM8pv +E2JYX+yCclh/Lx0Gz5Ipz5dlC1iFimMWKkl8/q3+o4rnJOehVe4cSLtahY0Nfd33 +fW3FzJYED+6l0EuqUuWVhXpF8DCJytsB7jN2MnInIJ2E7mWEL1IuT70MbYkQSZMh +ZKH3szdgorajVsdTgPzf1yn65h36ZY6I0ZOa/LyGIURzAiQw7WWYHoN6D90V6wJ+ +uk2u1zdLrgrfV7LDBp++1uMAorIFP5jJHVBU3hCCCaHVHJHxQKDCjryo6eNmGFaH ++a1YqVIZQ0bPAtMLgazvp4YSGlavzgQh5S6rNhTtJO3PnxS4Oc+ojLvtyEHvrPe5 +MVF7FDyem3WvVZpRWG4ne6ye0+Qqai1dQ7LqeVKgpUEsRbnGLXCSouDLl7aq/pnb ++rxdVXfVoHt2Kjv3L5coCaexYukmekpNc9rBUBa74yYLn+BxAhJ/ZdHWzjfcafbZ +l5KRfnet7UXF4b7UDXAmPBNRCsZlMZvMylrA/PNGRucLYckARCSbBzOsaW+S6tVT +S0qktD3NroxHdez/wh7wF6DIdNKfGRkYo0xzUlqsayWgLPitwVA2qw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgINALalcVtzR/5aqPjmCjANBgkqhkiG9w0BAQsFADBFMQsw +CQYDVQQGEwJIVTEMMAoGA1UECgwDR09WMQwwCgYDVQQLDANDUk8xGjAYBgNVBAMM +EUNTQ0EtSFVOR0FSWSAyMDIwMB4XDTIwMTAyMDA5MTUwM1oXDTMzMDYyNDEwMzAw +MFowUTEVMBMGA1UEAwwMQ1NDQSBIVU5HQVJZMR0wGwYDVQQLDBRNaW5pc3RyeSBv +ZiBJbnRlcmlvcjEMMAoGA1UECgwDR09WMQswCQYDVQQGEwJIVTCCAbUwggFNBgcq +hkjOPQIBMIIBQAIBATA8BgcqhkjOPQEBAjEA//////////////////////////// +//////////////7/////AAAAAAAAAAD/////MGQEMP////////////////////// +///////////////////+/////wAAAAAAAAAA/////AQwszEvp+I+5+SYjgVr4/gt +GRgdnG7+gUESAxQIj1ATh1rGVjmNii7RnSqFyO3T7CrvBGEEqofKIr6LBTeOscce +8yCtdG4dO2KLp5uYWfdB4IJUKjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/ +kpLcKfj0Hb0omhR86doxE7XwuMAKYLHOHX6BnXpDHXyQ6g5fAjEA//////////// +////////////////////x2NNgfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBA2IABIrU +a9r93fYmI9mhjcofFPq45Zhgv/eRTOk3wMtvUgbPIrg6QVH9b33hgC8zVQqwyudf +oXlrAmWwI+fAQVndnKXF2Ef2HaUyTA+3kJkUkjdjMr4YsilHMslichUCcIIly6OC +AVYwggFSMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0GA1Ud +DgQWBBTldkNgouiIHq9OrU8BuHm8RmsuxjAfBgNVHSMEGDAWgBSJ9VaIZu8RFHgl +dmCDEEH4g1Qx4jArBgNVHRAEJDAigA8yMDIwMTAyMDA5MTUwM1qBDzIwMjMxMDIw +MDkxNTAzWjANBgdngQgBAQYBBAIFADAzBgNVHREELDAqgRZjc2NhLWh1bmdhcnlA +Ym0uZ292Lmh1pBAwDjEMMAoGA1UEBwwDSFVOMDMGA1UdEgQsMCqBFmNzY2EtaHVu +Z2FyeUBibS5nb3YuaHWkEDAOMQwwCgYDVQQHDANIVU4wRgYDVR0fBD8wPTA7oDmg +N4Y1aHR0cDovL255aWx2YW50YXJ0by5odS9sZXRvbHRlcy9DU0NBL0NTQ0EtSFVO +R0FSWS5jcmwwDQYJKoZIhvcNAQELBQADggIBADgEj+lCxgfdyzVfJu+YowNph08C +67YFQ/HtfXHpRC3s4WJNc/uLVc8SRZuLbLhT1KLrMpEQHgi0CjmkwtIyPtHUB+j4 +xl+aLW2mSk+1Nzyvu0sL6PSZeeIlSMYWXugKavIL9QY9/SVlIS1ScfVWFClb4jep +LDonc4XukRmYX7CgP5toqUF9zF23UnkXAIlxOirAR9aVmBfCQUTOum0N0zc5IsUo +Zy5J75cSzjBna1TVZmU/bl9/QDE+ZUEl45W/o7zbZWcUFmyaSja8YpVVuR5fqza4 +RH0Wnv8b1NHYl9h9V2w2MURE9/NCHqDRSMzLkl/9VdfUsUDAecnjVOR8L9m9/4Ja +ukyl/SETOeFanZf//wcvrhU3XgB0OvE/pVrm0eoSdUlDudIxUbRvBT+u80WwtKV6 +bm1N9xD0gXacODfIqihN0LZCH0jJ7lBgWF1CdfXG1COelK2D+51E0FqNlTIx75c6 +LigmInznm/Si3uVn0qI9Mcai7bAme22IuQvxZbCuBW3x2neBEOWpyYg1hQQMuLJW +fujiNTr4alN3rMCxxIAodX8x6oDLILGHwTe0vgi/J08kmVRuNj6sPqVYyFKmhPPQ +tsEjcaj1MtL2ZHmuQ42fJrfEEk4tNjsgQhuvEJ4NuES/YLmpnIP6uvGU3i/S/wCQ +Qk4/Xnt0pOLyoR7T +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGDDCCA/SgAwIBAgICTiAwDQYJKoZIhvcNAQELBQAwgZsxCzAJBgNVBAYTAlNL +MRMwEQYDVQQHDApCcmF0aXNsYXZhMSMwIQYDVQQKDBpOU0Egb2YgdGhlIFNsb3Zh +ayBSZXB1YmxpYzEkMCIGA1UECwwbRGVwYXJ0bWVudCBvZiBDQXMgT3BlcmF0aW9u +MSAwHgYDVQQDDBdUaGUgU2xvdmFrIGVUUCBlSUQgQ1NDQTEKMAgGA1UEBRMBMzAe +Fw0yMDA1MTIwNzAzMzdaFw00MDA4MTMwNjQ0MjBaMIGbMQswCQYDVQQGEwJTSzET +MBEGA1UEBwwKQnJhdGlzbGF2YTEjMCEGA1UECgwaTlNBIG9mIHRoZSBTbG92YWsg +UmVwdWJsaWMxJDAiBgNVBAsMG0RlcGFydG1lbnQgb2YgQ0FzIE9wZXJhdGlvbjEg +MB4GA1UEAwwXVGhlIFNsb3ZhayBlVFAgZUlEIENTQ0ExCjAIBgNVBAUTATMwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvdNRjOJt39wV0JVc+/HhhyT87 +wWI6bk12cm45MgyigruQfOPhXRuNhQDcZVV0BZyskiqDjLRmBTnw3BTowLa7HLb5 +ZcvWWdCuIfzzHAtmSKv8WDUsD+XcnYT15pwn2pd3dEoZWLhLJzvmj+55+Oy3sV2T +ijQsHXrzFZjaI39t3XXupk2bWKKxprXgccDPpn9/Tu234E0hoUi97BcEXDC3W/33 +5Tt9EqS48usTEd2lMxDE1Wd2EwmAMLHzZUI4L2dihExP/cj1/P1Sdk2Uu38nQall +8RpXrw4HM+l9w1dICzCD55LYQVYS+54PhrKFcNjqe/oqMKTTCBIDSu8q+R7xQO9e +Gse3sHCASWi5Z07J5LMf2vhriNLHG46Myvwd3ILcGlks/yUOWVekZRPuqED420oi +do8xZOPagIv1WlycknYOf9mZY0keJU27EQTuB/+D+VzOY2xQiUOcsZPYOd2hsmcD +4SI3nqLNF1UDD5wmH7jivZ1Ct/kKuotWUibnI/JHNx/SLU/jjwNfWJh2LK4Q1ypJ +jtEREWLtgpljR0c8lo8xH37B3M2VeqFm2e1EP+NiEAdR2VWbWX3Ik7LiZXF1ZjCt +iLwOnVuq9xUyAH0H6kjArcNPkr3gLwRHVe40XxyCJrvKV20wlv5pVtyDQ5uRTmVC +7MOOUn9Ai7eCZ0fdvwIDAQABo1gwVjASBgNVHRMBAf8ECDAGAQH/AgEAMBEGA1Ud +IAQKMAgwBgYEVR0gADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBTHC3Xf+R0i +DRDFmp5kR6IGjLX7MA0GCSqGSIb3DQEBCwUAA4ICAQApP0YMVIbPwwKgVjolWCMl +PtSJewyEPtUrd1uGeSGOW9rEXYRSXdMO+31y0ZG9r7AKQpivkbOaaYWUPDFmuQQQ +tbRO8njPrN/PRoxN4yM5sFEtggpNdXoLQ4bqD1dlV5EOxED0mez3G0famDeNxQXu +qzGzhhJ/hTjrSvEP+IUdYqW/7TZb3o1fJMiCTkY80QpE0eLUToA85MGe7sGejcew +MPMsLMbg1kY+qYVWr/d9SyQuUQsia5tUgpDVRT9CkjMgDcG9WGHryh74xaS7/80R +ozurlpPwJ7Wy9wTXK4R8RQaIpd4JP/zmL5m/nCmn/yAUGGLTvsolxv8cBr68OojV +zpmR1ztjPrG2myWmVcItWAy+wAx/zSdDkPU5IdbHy5Ae43QXBZnstBZ9Vc5PYoit +ZTO4xU4Vc8ICY6GcgjVxfhGA97z0Z06xiSzffq2OiU9xzBTPHhPmWE4H9M+JizIP +AzlYJd3DPhZPUf+PISVcub6jaLCTMR8C6xEfV16UgX3CriD9eLVXma5l/yHOk2x/ +NXh8gP2eLgKtYI6s1Z2cKAZl3eKcfEosbhC3yZm+ZvEeScLFU/MLNG2BcWjpUTK2 +UgLgjrwM6oCKfHt4JEhHb8LHpv1cPIvp8LG6ZMBzJENsvTrfbx/BX6oYDN/g15hG +sPA7lazR7AKcQXRqFxRH5Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGDDCCBECgAwIBAgICAS0wQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMEMxCzAJBgNVBAYT +AktSMRMwEQYDVQQKDApHb3Zlcm5tZW50MQ0wCwYDVQQLDARNT0ZBMRAwDgYDVQQD +DAdDU0NBMDAzMB4XDTIwMDMxOTAyMTcyOVoXDTI1MDMxOTE0NTk1OVowRjELMAkG +A1UEBhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNVBAsMBE1PRkExEzAR +BgNVBAMMCkNTQ0EtS09SRUEwggGgMA0GCSqGSIb3DQEBAQUAA4IBjQAwggGIAoIB +gQC8yoTBKqq9wjcRk1N9vm3Z2egeyrzTIFRIffap7x3NoCH8quoCjs4P8TWnD5e0 +nygNtJf4/1TiGXfwJAFLBJ3uDh3/EwLd/MLsnel7acMgLi6JKFyMiHTwP1YvFAFa +BlKmt6ylhJNUWSFB3GEp51N9rbCRFkvx8/sRmYB6CNgLkXuDabDHpDXMzKuJS71M +elOUQ1AOKm+D8BfDZFBuPCiuXbB9rMaDoe7qbq19WRhF6ZNViSFuff7mmA/+md9T +T1TcexdnPXND1E/QuUPQ3nTkdi2g+Md6vLN9vjKO+MDkLcaO+H0b5N+/dgH+z1pj +mFtlZvXR3h9loUPMQ4punlY+Wsl8CYdrwWCLm327YTs/aH9Sp5u9OkQjYskWQQ+X +Z0m9EpvkbbY4a681fxtInaIfUeYAqTsKTM6s7CWAzLXR4T+Z11O2YjeZKgVDfcZS +4R+ZtB3QoA7/WepN/ACdcgRvpxKmnQ+VH5BtVGb6x4UlywEl0RSFoPc17wNWlY7Z +Z4sCAQOjggGfMIIBmzBsBgNVHSMEZTBjgBTzfxicV1tiawQYNfX6wkaOjGh6F6FH +pEUwQzELMAkGA1UEBhMCS1IxEzARBgNVBAoMCkdvdmVybm1lbnQxDTALBgNVBAsM +BE1PRkExEDAOBgNVBAMMB0NTQ0EwMDOCAgEBMB0GA1UdDgQWBBRMMk8c+mUfBztx +q8rMXF5/6KRksDAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAyMDAzMTkx +MTE3MDBagQ8yMDI1MDMxOTIzNTkwMFowEgYDVR0TAQH/BAgwBgEB/wIBADAyBgNV +HREEKzApgRVwa2RvZmtvcmVhQG1vZmEuZ28ua3KkEDAOMQwwCgYDVQQHDANLT1Iw +MgYDVR0SBCswKYEVcGtkb2Zrb3JlYUBtb2ZhLmdvLmtypBAwDjEMMAoGA1UEBwwD +S09SMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wa2kucGFzc3BvcnQuZ28ua3Iv +dXJsL2NzY2Eta29yZWEtNGMzMjRmLmNybDANBgdngQgBAQYBBAIFADBBBgkqhkiG +9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFl +AwQCAQUAogMCASADggGBAKYgGSJz/Fqkc5pTJSNPD9Ie9NQO0DrkFngrYR+V2fH6 +OIJ1EANc7xOx9o8P529EcndxFDwta8qEw6ZrSHXw4pUUsVg/+uNbkYqqstILDT1O +yBINHcbWgdr/pTjKfH586yfANvHl1oEZbsvUezik76L01/SZCjwaKyO0qXYWrAI+ +GQ91FLS4KsmhuDk8wZJIeL8qfhVYzn6NsFdBaEEImtCpXLtI2ESyVQS4FRY0h3kx +tNiQiTEhHUA54Oys8lB5UoiG/JfARaiytu5/kgteEZrQfIPH/MJFHyL7CCxQ5cxB +w8ayYQk+z7By4zQH++n0HfgznLGjvZRkcFkd5GQcL/J3t27oF17+2Y0D0tSyAG5H +oJbutoBc/lD8AhDVfq1q9Ihvjrbj2D1tBz+1+qc4XCstlqv/R/Wc9FDhQkY7xCxj +tcHKjtp1JcEzesMq71bbmkd+F5AsX2KxLBpRm8/a4q7cZTMB4c1LZDIipIMhWP/B +Njpan4BKNnl7EeZlvdWh4g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGFjCCA/6gAwIBAgIIfIlDmF4vR+MwDQYJKoZIhvcNAQELBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKExJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsTG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECxMRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMTKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0yMTA5MjMwNzEwNDBaFw0zMjA3MDMwNDE2MThaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UEChMSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +ExtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsTEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDEypDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF +YBFcGGMu+kGmoSI3pB3jNWV7nuiNqf4yOlO04qF8MsOwrI0yBasL5Lmm6DT7lAV+ +RCE08S2Pxif9QYQ87gZxM6BjNqHs7FjGz0QBhpNX4ng9IWeyBAQy6k3tJPvpHX78 +TqwlHCOYmbLL1zQFUzItKatPgyEoWITLdWkzNjFwAZhUoYxtjDWAezPbVaDzNw4e +mN9rv9L3vucj3kQdIbRyzdic6jcY/SEdYBjwRz81xdxbUYku3f5NPvaOyNtmLhUg +m0RCrk7vJp30Sug+NSF6Odd5PvrK3KeHY7SCSDneTGm52V6o2iT15NAzojIrXsKS +6MtNveThkwjzy/0taLqgnSVYTTISwbZHeV7iBZbXaF6ABhP/3cF5FFkOEm3jYQ0E +GwybUZXBbSE9ovdjqUWz70ZUpmzMM1EhGUdsLsh5EAWG21AH3I8p7gl8MyeptS93 +l33TbbItc3jP3EdP5J5Q0n2jGK77WiAX8BE8iySXk9dd4iEUb5CXFnaYdCQ8D1G+ +gaN8XSxdjHnavbhKtP0Gh7pr/fUjFC03b8r1ovE1fY24g1BrImtsEOEOIFhXQ9a+ +LUnrg1Ijy2iHB6NyqowSO744DDs+4HbGLNTBoMaN4I+ZV5XPmpveZPwtBuEwoclR +4STvE31HffD74gSt5+PW2gF1KLkP+982xRn18Ya54wIDAQABo1AwTjAfBgNVHSME +GDAWgBSlh1KKTULEAzTIJ/SRpvSqaGL35zAdBgNVHQ4EFgQU+1b2ZmX0NS2gWNPA +Xj7K/IEFkrYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEALE7AFOr4 +vptKD+19EbROP8WsGpn6zl7VvrAbPInFBGEZwCZ524zZP0eEF2XUuzuDvPzDBGIC +hVAdcCfDCTRto7GcK9ICctiMqTc4w2QcKvb2OKo1u+aVrRwN8oZkbgKTk5H8UIVm +2QMmOaOoHP8TkweIw+G9ThUDo6fNspEjXEGqpxVbdM/NKvJ/zGsDIyIKQxaPeanZ +22Kpz+FbUiOVh6hbI8UZ4dMDyET8NcwrwnZCbie7+qhkv+Q/x0+G5Nt7cE4UZ2xU +UXDszARysFE+tujP2ki7UFuDpCXjvkEmM7ly3LlQ7gEDP031NSODFkQd/zOQjtC6 +isgh/5lJy51MJOW2XqfdNvYUk+1PxcsX3Mq2TrfV/rEWbAs6kBcXqyRcBN/xxTAk +twDCh26jjADUnQj40MCINgwTXDkyt2ZL/0Wtg+Z0WZRImEpN2vMY2dTQup2KPeAP +8oJ3oYV6+bSlDdCGAS3rvMqRWgwXMy8zh+3TmIlVBc0QPRv6L3Q4gWkK8cbw2z8/ +wt5dFHUTH5lFvmnsss9CnVzQ537ZBjcnkIK/gtBlrptPWDDaSTHhIPefK8iOsBai +nTkAuJutNppAK7ZXigTtQ/Rg7MtKgg4vs8qMldRuBLEU/6bpSbVbPK72VZRL3K41 +Ru+GXFmiBhE/tLh51ec2YqYwOLgi27NfK4M= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGFjCCBP6gAwIBAgIQCufDsrZoKiTAMzqvwj2TyzANBgkqhkiG9w0BAQ0FADCB +0jELMAkGA1UEBhMCSVMxEjAQBgNVBAcTCVJFWUtKQVZJSzEaMBgGA1UEChMRVGhq +b2Rza3JhIElzbGFuZHMxFzAVBgNVBAsTDkt0LiA2NTAzNzYwNjQ5MRswGQYDVQQL +ExJDb3VudHJ5IFNpZ25pbmcgQ0ExNzA1BgNVBAsTLlZvdHR1bmFyc3RlZm5hIGh0 +dHA6Ly93d3cudmVnYWJyZWYuaXMvc2tpbHJpa2kxJDAiBgNVBAMTG0ZlcmRhc2tp +bHJpa2kgLSBJc2xhbmQgLSBHMjAeFw0xOTAxMzEwMDAwMDBaFw0zMzAxMzAyMzU5 +NTlaMIGBMQswCQYDVQQGEwJJUzEaMBgGA1UECgwRVGhqb2Rza3JhIElzbGFuZHMx +GzAZBgNVBAsMEkNvdW50cnkgU2lnbmluZyBDQTETMBEGA1UEBAwKNjUwMzc2MDY0 +OTEkMCIGA1UEAwwbRmVyZGFza2lscmlraSAtIElzbGFuZCAtIEczMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAiZ7qjHoZWUC/okbVD2YOGi8Nn+SM23MW +yBGnC4+mgT5ysb6fq4ylzyH11oDIDWwalVORq76C/E0TZZuBsjREQjfzhYojs/0O +Xw0G/dNhDWXogfviZgymYnFxRx0eTbPFWE2xb8bxd06KisLC9ykZD1yPzOzjgvAf +zN3dujtkmmfWYmJ9XzA6Zl+xkAJy2dWt3oAk/O7eokTszdp69SLLx9zHAxOAYwAY +egwZoi3q3GKvjS/OS1hCS4ODdiR5JP5P1YbeJuWGKOrs9+WqXj5rPGeBz4y5VZYJ +nDZBHRlWdBgIVuizDEuDGzQi/hntCjxYJ5IDAHFp54sThehoekqh4ioi1ZRNqdUi +lBUFNd22QGj+hhhVaZ6EckG/8lQ2JCv3KNf8jNUBYGGVpeF8dNebnly+GlThWmLs +TF1/KFc2dSjJMBe140uReL2UGLBl5AEmIEJMcNU+VatNB4SZlVg13Y51sVmdpgPF +dYYKNY4WkTaaROsusPflcKNFxH2W4+3/KjYfrd+J/2PBrYTTKwY598YPU8Rz3hlu +r27su11dxDK7JNGxlD88qmsj67edZbXL062pOAlo9qCGODacyrKE0/RexE3Swcdw +LMJA4Olo9lW6PhK9qgvgpE9pHvTfpSHJSb9Uu/ZZJk1Pc/Ecp9S+C/1PSjlj2WTN +3X/cm3IbpzkCAwEAAaOCATUwggExMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0P +AQH/BAQDAgEGMC8GA1UdEQQoMCakEDAOMQwwCgYDVQQHDANJU0yGEmh0dHA6Ly92 +ZWdhYnJlZi5pczArBgNVHRAEJDAigA8yMDE5MDExNDEzNTcyNVqBDzIwMjQwMTEz +MTM1NzI1WjAdBgNVHQ4EFgQUfSzmgINqDexT7KnTBB3lna73DsswbQYDVR0fBGYw +ZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9JU0wu +Y3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0lT +TC5jcmwwHwYDVR0jBBgwFoAUhX/1alO2xNgzYAXZq16AIGdzx04wDQYJKoZIhvcN +AQENBQADggEBAGL5KCsjU/Le7oyuSTehJuJSrMFMaz3Zs9ddnTejrGHdsKM0R77A +FV8X4q1stGScxiR690WDBaGa0SH3/Q7axFRSqZFp3adc+ay8JcZ141r/yoGmlIIy +YqyGVSzYNn0xAQeRMlgBWSH/sh7EQlOjVPNRFG4DMToWnt3E8xDd02aW3Dtm5xJy +0CWFw5LDpejA94PqByEGYfRbo5n4u89uIir1WklSYB2xw8uxfU8kxzffQkM5GNrg +lsYHZOb8UbEPWrtgApsCdMPV+YCW1ltJ3mopVTiqtbvHaU1dS3r8ZrY7g904fddG +v0TXlgVbXBFsYzXM6zG2AyI8ZinI1fvaIsg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGHzCCBAegAwIBAgICBGUwDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATQx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTcwMTI2MTEwNTQ1WhcNMjcw +MzAyMDAwMDAwWjCBhzEKMAgGA1UEBRMBNTEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMZVunXL6FFloIZi +weDvxis6piuUWqB14367V8wmpFXjDQpx8ENVZ7RBDlIStIJ+QvvK7RZmMDHrua5I +N9oQYeBnsChXmT7vII0sZKQgNq0y5UKToxRcoOjdPhA49TVkzmratmxZfBxZHk69 +xEcYHKCMy/bhgSs6our+4zYOcnZYkvUTnrkrcmOGI3UftIuMHFVT7V/m7WRCsaJQ +Vhauy5Na/MBKR7K+B3hAeSOZhWuT8DvklTNrYiTVIxthDdt1H438Av1VHrQHHLc5 +rvomdcznW+vXX8WfjmmuMYUH3JVgMT2byWnpPnbGZ5r8DPZBiY/OYn4zSCyZ2J62 +giuNmO8IX6WibmbW+FSUadwLtm4EgzoN+8p9RhCNz7atcSzrK149ohr8WpoKbiCi +6eVdd6XwYgcl+XA+g0cojl36Dgi5NkvZtbHhSsh7LnCjOINX3MAN+7+qCY2/5Pks +pv3OYrK7RcK7VYbaJC0HKmQnXXmSGsXdFsZABF8TMnm/dulsXtYj33AnXusDzqow +2EmWjbvoWd4f9PJNXaQTkSFSAVFSBUU94eSgoua/kHLJW1Ac8uCC6mYu3xqT9USE +5CnoOPmeSTuSKOLgwbqA7tZODNIJ1FRJXre7iQfu4oeMcWDORZplLnUen7+gSl6K +ZEhyf9dfWeLgVG1JNl0OAVaL9P5BAgMBAAGjgZIwgY8wKQYDVR0OBCIEIBgAwOvO +4uXjvy8VD3WltiRdVJlweIZJbiryzjeFDi0wMBEGA1UdIAQKMAgwBgYEVR0gADAO +BgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHSMEJDAigCBH +u7gb8MOYQJas9/Pt75JX3qd1NP5W3g2AzHyTgF9CQTANBgkqhkiG9w0BAQsFAAOC +AgEAH2JvIk1m7UlkNfsoqlPMfq0giEs5YBZAm0XEACjRe97+3MLA2m66DGFmC91m +rWNpBvdpdW8ECNyq8rsZePWLDtjM8sL1lz0epH3VCiUOdYQ7XLNOrEzLuq2vpeb1 +jZVIXZtP8QN5+3QRHinEamQo5iqhbjY5BgxZaZDASMFhD6M3Do/u3U+t1Htl9j/p +kZTKYAHNBhoc5PFv1eyac+wtmPp61Qcz/4TWTnprjvhv8MF2UfOeR8FusuZpXaSP +mVH+vh16dAt/t0eX/gEYYFwEMUMHRmVB7sXl7PhhDLPNdZ0SI5l4Zta7HF+1TM5i +fC+uFcbHddXuMYa88Oe68Q/bJadO9cjDff8SbEnVnk5If/aGHtpguYVjaCTxDRRv +XFAtghPTaNJTm5Luso/DtwooADqWRBueudtosjfZNBIom9I1QgQ50w5EFLCrB+fk +XNVKlrMlclI877zEoWFWGYT5XSxW76AwCf/8mpwPxFupltDpCge62ENdiCGoZ54z +rTN6N/zEigOPAIBZ2ytRdvfIdV3CBuFQNaMhE78zwzS5G704NOixpIQxqOx3xKu/ +0NTISUec0VolYeEI2sl9fE/5yJdWCnSZXPZUThkiWDZE/zC66z0g6md71WzrcVoU +jkuayiuQ1qeApJbbgoxxFvKDE3p+zsSwaIIj2492aCdn7xo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLDCCBBSgAwIBAgIIQ05EU0NBAAUwDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xNTA0MjcwOTEwNTJaFw0zMDA3MjcxNjAwMDBaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCw +ErEcqBe7UgPCqEtPlbVeIu82rVPNM2ULMrKxMpYyS639SJmqJ4y2FfM9zKHnbClC +61V90MKRpGf1yiKrzYw21EYPvrTRsM9/LREupd5CEtoHnDM3qtcqu4Z+/nViYwTK ++bRba8ZC5Grbe+wF6rQgUODcYklvO2QL1eRnGOH8Ee/dqJPlidWGKCPUWItHZFmC +8tv89cRd7B33eL7LQQ9OFohFqEmEU7mveE1Hx2LYgC/+zvKweGvc5l4MaJ4Ru2jo +7/Fp3/puwFdc2xR/X/531Qhc1Afboag5rq0QDwO2ODeoxQ6ipwD9olKEHQcUsisR +MHuMpOGeq7l1QL113vUmUhgSzAT3R1sCI4/yMya9yf8XxfsboIR8jL5BIqq8eBe2 +UwMvgWZH7KSRddkDIdNK3DHxduVc4jFJtMXwpvzW4s50zO/cFK3i2prD7/lpVa8E +y6/le5OAss9AD7dNgVoGHTTBxG4K7htzp9XU9y+VwK8eqBIkIQw6P7ovvXfYPAQG +ZL4n9M9KxhCqB4Jjd4Ix45OFwBj8gNd73BXifekooU+aUhqyaQmMAkEW2ekDLHiU +EvT9v4eCwcE2vIXcgfFqtQZjS18Q9aC1I69zFaYe3p9fGpGyeXgwWzYVtD4Ts+dv +TLHm0SYTlAkMI01vL1tOcxvKKVmya2JEpOPUd72h7wIDAQABo2YwZDAOBgNVHQ8B +Af8EBAMCAAYwHwYDVR0jBBgwFoAUGx+qWRWI1LVSC6jnv37GT51tGb4wHQYDVR0O +BBYEFEpnOYodASLFPUBXp2FJNF/D5wI0MBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJ +KoZIhvcNAQEFBQADggIBADS2ijro2XcJ6PlmwtZA8r0/75fhLyJ4VCb+NYXgdym0 +YSU3B6ie/tF5OUgNHH0ckQJVsnISZtwpoXocgdi3eaAjs54KVhKqmGnUNkuk+wn5 +p7WnCWEEIoKlimPwCQv36ZDAaHlheR0+ptoEc52punfnH1MwpHPFiYrhlzE2FN1U +wiwx5q05TLqXywbiTeC68jTdsveBCAlDM298KX2Ujnz9/OMx7kETS401AoiVyQSn +71M4pQBs8o3UcIDkpRiWbCaHo9durqbz9vzolVUPDsYnaZ5UVIVA/tCf3U+ug+uZ +5HcP0wJ6KdBnwngeoFjoG/9QrpMs5a7K6mVKLVL/KAmNLxV2NgPVFzpK+64VTgfn +7kZpnfr3W6Z9SJq4prc0/pcHM3QLSdBUNQm+orfcOyU11er0aEoQP7tlmrfCYv7W +/6evllKmtWAN+aICVohLeZZ7myey0EkrDfCv0amkRYOLRsEHNJjiGW7p7Vtvm/zu +bqUoAdt/AnAzJQw2pLXBHYGU9kcYtrvB2f/nf4Q4Kr4Tocrp1uolg4zgI28qGNxh +q2HDDD6Q7+aNEmCMvvV8RktPDoRrW8iFlp5WNjXJQcmQtFHX114jFI08KbxQtTgn +MAVWaWmlNthrU2DJGycAtV9RswUXeEK8bPn3LXfoYXKrMraQ+ADYePD5UeW14tuY +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLDCCBBSgAwIBAgIIVf3fb7nGNpowDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xNTA1MjcxODQyMTFaFw0yOTA0MDUwMTQzMjZaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +783TYrfp5XdO1yrrPgEuulVnUPdCBDBlKhKiLCMHSv04YH6b0yPoVIombGPy89AA +ejDWWR5e64m5aONBk1+KzzYJ88+s/3y27N5An3g/3vaKpDhmqpB43AXR2+qOJu/8 +/2kZtcVhLu/fgj2SHYZNr2c40Jz/JfQrpMoLOAWZ0kv7ohjWpBfIikU3FjQw8zwU +BKxvqbWSxra0+ks6NraOpkuilYumyAEqTiaNTSTNucVtyZnkXh6Wii3ouaixsj3h +D3sZjzTgbCGyp4xhoLab7bTBgtMlGzt0vezBUsqB/f2NvJwopnMQTak0Tqd0UEwU +LzMpKF1JAqYJKT4O5lxlodDoaYUTxtGAJS+86ivYkPNxobfaTEOmo0raa5kAy0xP +iscyQlJ/hcjM3znO1F292hpFvDVobraU5tBSwv0sXEVI6OLI8PbmSEym00dDlDHO +J8rA0ONyIguX7QNsl8lyR7EsaQ9yXNAs32ajdb+4IzTXn1C2ciKmgS1nb/J4V6Vp +nZnita0o08NQM0eDbNNf5C8Moj5iA9Nq7i9T8BRM8eP1cttEOITsYxDGTA77fXBR ++ULVXC8Zgbo6x8UFWIgYzK6qruVg4MawDoPdV/eqSQaVMz5o6qEoq60OF8Qon9XZ +MrTmY+NnKu9oBJ4DjVU/nVLzEnANO06Nkth4shrRGwIDAQABo2YwZDAOBgNVHQ8B +Af8EBAMCAQYwHwYDVR0jBBgwFoAUSmc5ih0BIsU9QFenYUk0X8PnAjQwHQYDVR0O +BBYEFGtiJuRTlPj6/HXpp4fd6ujNtk+TMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJ +KoZIhvcNAQEFBQADggIBAIbqCyR4ISaR4BbfkandkxIuqpJo7c6qZ+C4YubgDDCQ +PMf7/LpvwvueuI+wt8jD9p5hAhexvO6Ge9CqKg+z92Kb9G2ulUxUD22fVUq6dQSx +98wgxRLvAU19MmwuxiqZ4XGjatU7CjoiHkk/2EpOqWYkqcRMgcKioH5/TD3A8eZD +odNaqt9UcVJgF9nMQe8Fx6ikFAo3AY2VBTgO9P7tPQNLUqh/vKzntaSTvWMnQmmq +YNYf7B/8yhs2blpMDPwDZZ78B4SjGxRAxgswarRuK/OtyUL88Y1GVepaKELZgrbO +Xn9dv2MVemQPmrGKz9vttstRpQwn09PUcetbjcMk0GAlAnGvCM9T6IRjh72k4rsa +Xq1P+er4DB1+Af7vunox0/XlToCykDa8alqUG0bd3WNTWUCgKQM1UPRE+8D/VBBB +Ay0CPGlHf4rcqDH368OCC+A1PQiS2IRKVmDNTg30id42hmna6PFCA0FMLMlfYsls +zuGj+au9oH6ed3G1/EEO7UDc8/1mT2CVg7pwxnJ17dgdQY9apldy65ZTyRGhYmxJ +8rcb8H7b4TyamXMhHaobmclP5s2OzyxCMTCRWwYHXkaNbyX2WVdFIJeMbLSLintD +3l99+lXjCk1okI+ixBqfX71IepjdLX9rtxO0L4DUuFaxkQaSUP7je5JmFBS2f0es +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGLDCCBBSgAwIBAgIIcG4svCQ2sfowDQYJKoZIhvcNAQEFBQAwgaExCzAJBgNV +BAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNVBAsMG01p +bmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEgUGFzc3Bv +cnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBD +ZXJ0aWZpY2F0ZTAeFw0xMzAxMjkwNTM5MDlaFw0yNjAyMTcxNzE0MTVaMIGhMQsw +CQYDVQQGEwJDTjEbMBkGA1UECgwSQ2hpbmVzZSBHb3Zlcm5tZW50MSQwIgYDVQQL +DBtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGjAYBgNVBAsMEUNoaW5hIFBh +c3Nwb3J0IENBMTMwMQYDVQQDDCpDaGluYSBQYXNzcG9ydCBDb3VudHJ5IFNpZ25p +bmcgQ2VydGlmaWNhdGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +MPY8gllarFneLwPaKskp9Z6wSE31ZS0VH899Hm1Jg/ecdivqRCNupLuK2PTtuSUP +t3dECfUKvKmi4pV0TMrVUBGtpdWbIutZTkn/cHbyg+V9MgZYOhxnNa91G5YaxPJl +hCcqp40JPaRwUMc/v+kt1KnVF8S6ZAQMKjuMzxKsdt9KMVuBwrf7c5daVLGM31N4 +MA89XlUzJKcZja4Yu88aH+qwUgf6V5DBv2eDDLm+R+ptEMzTI1pI6ueTuAMUDiGg +3+tALTa6DNrXdZUkQqYUgnQkgXgFB1bIwD1bTNfMF/stCaLQTMigSkOm19uLg7H/ +hCNPLei3CEE4tAoyfi51cq2xvHFx3N0kaqS0oWrwtYO29IJWzTf101EeyqtCTsaU ++oIqeF012mWT17hUX2LibOXgb6G3Po1q1ZFjyQ9lbNKkliVLQUyy6H7Do8QRUOzo +WozOxJHA/W6noB2RQmj2+dKn4B5XcOf+ld+zf0IwqBedl7mAja4xWYFZFX/o5lKD +tdEZwAvn2YWF0LcnpkkM7IKAoxCKct0DGUi1UP0EM6vVLmnuFmMC3yPFRMdJ6gaS +BCiD9b0HgX+S6Xl8lGEMYuGFTkZnx8TVulEFbKMeDVbbZldkDvlVZrjzBZkKJDo8 +zAWDA2ZMCs04OT304qAEztdtVPtd2htdUwSOe2g0BQIDAQABo2YwZDAOBgNVHQ8B +Af8EBAMCAQYwHwYDVR0jBBgwFoAUGx+qWRWI1LVSC6jnv37GT51tGb4wHQYDVR0O +BBYEFO5Dr49ezhJRojXRRoyciTjQVjARMBIGA1UdEwEB/wQIMAYBAf8CAQAwDQYJ +KoZIhvcNAQEFBQADggIBAIZi/Nv5K0B08jdEzHlh9r5GQcT7Tu+g4sEAOAFUuU1i +aQmb939dbhNuobZ2EyQu+7XqsSzG4eJdWhs4G5kyx8jHA9yDbxQRT7EBBVxuT+tc +BWpeH9NG+4ExIctKSdLgc2oNvUXh2Qrnm7Pi3Tfh2iepRg6Ct99cSjcYc1rhpIEC +IS7OcS30UpXSpQjxZpG4pz0FM0O8jPUnNtj+hSKQwku2ESAFIkq8TZRGkvDp2OL3 +xhysEy0nXmKIG9KeB8LUh++i6e0F2pTQ7MxmWhXVJ0O7Oz5BnwAJUrPiildL8m8J +MzuitLbRiYPldxnQLD66jV5d5Acfe/R5dKUymS6alNLAqFHNZNjbPBoQMNzljifr +A5/8x7BQNk45Zu/OkuYk13LJAvrV5WkjNQffqwdnrQCNOM+axgrcVsLZ/3UoDrbT +QnEG5Co1XE6fc4gaB45ZdW15UlJLhnZD9OaytK0ocQC4wJ2P1tWFsZH70fV7ulVd +SLMlK3Csof79DkzAyNJGIoYa7cHDdNzv+ZXfS+vX2W8iPbIup7Gihmhkkof0HgFC +mi4U7tsjjbzc1fZZlyoZtPPARKV3yKEtk60/GT7ZC9xKfgy1QnkgwVVm463X5foT +kV5llg4lSlSm/A+9QmSAroxLUINrXAS9sPUJDICsHYzDZl7bnXNU/1wujsj+S8Ir +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Xb7282BHVRWlkBABqQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +Ads1LtVb6A3ud9nQuQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +EBGChdEFm1SGK6oPPQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ZMPzTiJBF7N93R91Pg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +B2VkVmpdueQDYB6rwg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +tMA4K/XI/SwkPm7dzJ8stQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +ZYsUhdN8bHeVWbOeYy9fM04ReQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGSDCCBDCgAwIBAgIQUfweIYhY8YVzSKBdBnq1KTANBgkqhkiG9w0BAQsFADBC +MQswCQYDVQQGEwJCVzEMMAoGA1UEChMDR09WMRIwEAYDVQQLEwlNTklHQS1ESUMx +ETAPBgNVBAMTCENTQ0EtQldBMB4XDTIxMTExMTE1NTQ1NloXDTMyMTEyMzEzMjc1 +MFowQjELMAkGA1UEBhMCQlcxDDAKBgNVBAoTA0dPVjESMBAGA1UECxMJTU5JR0Et +RElDMREwDwYDVQQDEwhDU0NBLUJXQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAIwhuqvEWd5VyuXdoBjR3LczfA4+8mzkGsp8A+l+tcImTJ0AHdmlmsCA ++YX+p+P8yTMZ2Quun0mXu0JK5u/3rzofq9shbrtc+ddqAeC88ajvCSXzZw89xfjT +NLzFM5xH9WStyEDjaNpw6gobxcpMyJbVNMO9SpLP94z31Gc5WVoeJd3n6CdjUr7y +ttnqq83oaHWHtlyzv3KH9Ec2MS+9OxOMO/YItLR6dTBeOv5Z3dyeLMhfodv2RsF5 +zRO7AEoKTkIya1Zv33FlBdXJmTiAWIt7gYiftO1Ek6NFMT6wjwKGVPDGPD2BJElL +Cssg2/GRNMM9EyygMCujGBwSmMwO2uY8gjb8qhHIJPFK8MDuIVahfUpusta2JJh3 +NWDB7/TJZHhZC33xrLFpER01oAf7SQksH6u+JlAHsNTOeqhU5bEq+P2bOLVEPPEm +pDO4LpSRSz/y1/aQNDaPXtT2T4fiQuDiExMokXV2K0Bs/194aEG9unTrakoGx64v +2DOqxsrZ3xgPzADBv71IxnrAujZSapC9rQliBPzapbG+9cghMWPSV7Wjtbknaz7g +qs3NXCZpVGKiH8KnA5Qin6nU6f4KhWwKoH3fqCupvb+2V6biHdj8rXzzet+JjJ3J +NUCea330suzxZnoiivJLq6aYCRZuf9bmdDkrKeKtQWRGcOHfGVvvAgMBAAGjggE4 +MIIBNDAfBgNVHSMEGDAWgBTon7rdy/4Icssk/nL3RLeQNxv+PDBnBgNVHR8EYDBe +MFygWqBYhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0JXQS5j +cmyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvQldBLmNybDAO +BgNVHQ8BAf8EBAMCAQYwKwYDVR0QBCQwIoAPMjAyMTExMTEwMDAwMDBagQ8yMDI0 +MTExMTAwMDAwMFowGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0JXQTAbBgNVHRIE +FDASpBAwDjEMMAoGA1UEBwwDQldBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0O +BBYEFF5l07QLGRp4pUdrRlU57sazhMAOMA0GCSqGSIb3DQEBCwUAA4ICAQBLLQgR +pUvhgfgCewx1c4LL5enB4yxBOlKqWKVPbnrWXbzddWxg+wZaL2XBhzhjDSTYlBmY +YqFg/R7jujN3mYII7r4qZvbtelqvnUQCBlAtZDK6IqadXSXFY4lvxs+rOcqmQMId +8GD6sEZFtYLXhAsISfN7y38YEUBnl5jtQX0WebgdPaQurE/hQAUs7hNqg6blVsGy +AQ7Z3LEvE2j1NoyqiuGlOtQ9X3ziI8qWbbV1NTe4VQxG/QoRiDtiyNyTEdh2FgK2 +bdvJHmfaKc42LKFgyVc2DbWc7AesNbCGph7iT40YL6z4UDL38waF2Jpfor2fNwxM +U0q/tOW/qBPIqkGnJxyCs403hwGTgaiZqZYnapJCHNTtTdfZbjLkS2YdRIFiZu3Q +FW4O28IKXJvSly8ARzn56g5jJqyu5iXlIIaJnQznphTHiSU3jf0efXX0qzejaN0K +7DlraoFTH8P2pi7tay5SJS1ILYdfDmtAJv9fZOPst0CeCj7aOxOGNkZ60yAW2Pqc +iObeYAwPB6Betb5eqebaVrTxiopRLl7R0hvlMFsD/HxMzdcFNTHANULk6UdUsKf6 +YcriJmdgM0xCprFX/s3KCPzhIrj5VkVhtnfT35QixJKx2I7VslOT9jdP3lz54WyE +rJYpxxNvdju//Jl/FCYafY0Mg6TeenI/Jzmvhw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGTDCCBICgAwIBAgIEAQAAgTBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AgUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAgUAogMCATAwQjEXMBUGA1UE +AwwOQ1NDQSBNYWNlZG9uaWExDDAKBgNVBAsMA01PSTEMMAoGA1UECgwDR09WMQsw +CQYDVQQGEwJNSzAeFw0yMDEyMjMxMTM0MDdaFw0zMjA2MTQwNzM1MDBaMDwxETAP +BgNVBAMMCENTQ0EgTUtEMQwwCgYDVQQLDANNT0kxDDAKBgNVBAoMA0dPVjELMAkG +A1UEBhMCTUswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZCCFRIw2B +ECGE6HLH9dHAEW0LfaNrNpnW+oKA218mvNM5cCo2uRkeJSBHKAmJGJbIYto1qiBp +bm6XSVmAzV1iuoiLGdxE99Wfx9Jzmu5lIqxhUxSr52pDSXCUbOE7mY5PQVIvt6Pn +5I6gtdSfj7OZ+9xPYZbWM7YO0vL2YB42khAOLtjpS2GBJEltzsXnIUWrqEUA4Vig +kpvmPuUXYj7hmMnc9AY4t1Os7DLehXuGqPH+KOGpA6cpcpsixGWuZ3fK2/+iAji+ +w5skxiH74+KrGF0Cqn8yGH2iNENz4dWCNa2mXPWbPcs2EKKv4bZ27PO9P6wfn8iU +Uj81JUWkdQzGYQAiSN2PIvWFBLFjcHhT/dEsMzd4jwjQWMwybQuHfk4zIScXS9Ge +J1ATBIS25AqIMW6RX8WCmtLg61FWUwDgdA3Gk+ymZgaY9BsIPTv4w21vUv2mFZyZ +Na3W2Obc8fng7gfqQt3NGMCOEqhCPTQkQXjHhbKCLDS25eXJ0cK9V18YhH51LeK6 +Pm6Cg1Wh6fvXUqqGOjda1/5R8IwSxyd5UN9g9AdY++QxUZ9qcpG5OFjFuJvZQRjr +iwvOzFxfbUIofOU+6al0JG+14SGn5eqXfHtRn+ESBTWb1JsVvwlvQsvUB/3KMYG2 +VzUVneAfpKQpk8e4dqERCxA/8Z0OMsAWlQIDAQABo4IBZjCCAWIwEgYDVR0TAQH/ +BAgwBgEB/wIBADArBgNVHRAEJDAigA8yMDIwMTIyMzExMzQwN1qBDzIwMjUxMjIz +MTEzNDA3WjBEBgNVHREEPTA7gQ9jc2NhQG1vaS5nb3YubWuGFmh0dHA6Ly9tdnIu +Z292Lm1rL2NzY2GkEDAOMQwwCgYDVQQHDANNS0QwRAYDVR0SBD0wO4EPY3NjYUBt +b2kuZ292Lm1rhhZodHRwOi8vbXZyLmdvdi5tay9jc2NhpBAwDjEMMAoGA1UEBwwD +TUtEMA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBSetNmwIHqeKfANHTtC1Z3G +qXmRDDAdBgNVHQ4EFgQUbDIg5DF7ztqiau7SPkw8TMfV9ikwNAYDVR0fBC0wKzAp +oCegJYYjaHR0cDovL212ci5nb3YubWsvY3NjYS9DUkxzL01LRC5jcmwwDQYHZ4EI +AQEGAQQCBQAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgIFAKEcMBoGCSqG +SIb3DQEBCDANBglghkgBZQMEAgIFAKIDAgEwA4IBgQAIwcCrv+gOOWms00+87l2I +bLYcdbABLD9wIvLuLxkPQ0d2P0oJ98vZaJ0NjXSkGbDnbDNQBrVjKAZ+KQkjuhaJ +WxoihhEbzC//2HZ4XfnC/fIs6MZQ2O1/J0TibGXJ6SJMUl/mzG88iS0L/4lj6QpH +6lThXZRkVLQVAkd00xrsQi7YHcIja0O/mPOFgyaitLp2zMLKq+0Jrlu4cBVH8si3 +2/uH90DGqLPkbtw8cSPygfikVKg9XDIzvpZQtzVTjWLbWFdcAbSe43UtZxIkl5oC +lzpc3qj4JXeRY0xLd+N+tWVNXLw+P9B6DoqMZ9YHTa9r4z+ifqQ8mhcL6YfMamPJ +91rZ8nfz+MNUzrMZxY3Xr4P9FByAN3LXw70s7FhIIqQiraSOJJJJOlBi9BQP9snR +mlm0IRUbWx49/FwDT+ysMnp9tTQoL2DITQKuQ3kdzx4BUn6wg6rJu153KS/RGJFy +6KX3vR2wbaLL/ydL33m55VGgDo1nPYWNn8G+90haD5A= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +QVg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYDCCBJSgAwIBAgIIPJnf1MPzWOgwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGgMQsw +CQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEjMCEG +A1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJhaGFn +aWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNpYSBD +b3VudHJ5IFNpZ25lcjAeFw0xOTA3MjYxMTA1NDVaFw0yOTA3MjMxMTA1NDVaMIGg +MQswCQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEj +MCEGA1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJh +aGFnaWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNp +YSBDb3VudHJ5IFNpZ25lcjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGB +ANsjm1ExGh9pxbkg1JIG4hpBJO5CTiMh8vRgiM75V5gM388eREM7nMYR9IS3Mo3q +Pf51h01G3HZZsqDIZqylQgsyt9t77My1+RL8gB4A4J6HUhZOpk8U/o/pzvKrVcX8 +br6AwnK/S+iBul39h07vijV7uiv2JnTiSmiLIGeZtr8SP5YVllklDtvZQC0JdTVS +KMLmZw6bzECoG4XhVxcujVqJq9KAhmTNMM5FeYAqGK4P5TME6TUnM9HtTHJnM9Lp +Hvul1RrI9JDIG1QZqLIQQtqfYeVM3vEzpuesellQLhcGAQuG7aNqxw0A2TOyriFL +4L0nQdoMOUV6BZUqHteJ1T99EMVKlQhfOIGPmri833wTs58O/fPquiza6U9gPwd1 +OrEqeSVB+o/vNyma81ykqzEVsB2dvXM0hqoN6GuIBI3IqoWJLhizgWvjukRhrauI +FmIEn8C+F+06Hs6IfKQIzSq9FUfL9ficvJI9ViZg1I31QWZLAzTtvD/VnvkkLGvq +8QIDAQABo4IBMjCCAS4wHQYDVR0OBBYEFNVNz5B+1EjS9A4FmjkytGYMnsLbMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU1U3PkH7USNL0DgWaOTK0Zgye +wtswLgYDVR0SBCcwJYERamltcGtpQGltaS5nb3YubXmkEDAOMQwwCgYDVQQHDANN +WVMwKwYDVR0QBCQwIoAPMjAxOTA3MjYxMTA1NDVagQ8yMDI0MDcyNDExMDU0NVow +OwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3d3dy5pbWkuZ292Lm15L2ltYWdlcy9w +ZGYvY2FjcmwuY3JsMA4GA1UdDwEB/wQEAwIBBjAuBgNVHREEJzAlgRFqaW1wa2lA +aW1pLmdvdi5teaQQMA4xDDAKBgNVBAcMA01ZUzBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggGBAEOqi7TXE+0e1B2Lk1h4kQ331aWRio8/kzW+FUupOx9A8PvMJ43SC903yRf3 +lAQakpy6OM1sGWIfoxINbCJmFnIjLC8jxDhx0sQsnmkfjzOOS4WH31qt6oeHpBF/ +9WiSk2EiiUDddNhR2BnEbbKChqxWv5J+IqED2Jhag2YkkgaAfw/73PgSSYPz0SBw +v5gzAVNrTMIRtfPLQZJ8LLOajjcQSRzzc4fmvgzbqZugJ41Igq57XUuQSw+SDPBN +S5ovR66/dHNcagkWz7I/A51AhfnHX2fC0e/9HvT+cK1q0g0hfeT5U/7pps/6Vyaj +aBzuxon+p9O4CRWDNPLmyghEJ4Ic+TAx7N2PVL8jWXVzG1us4Lib5CwrPxPPVpwR +ukpUVax3pairdzTbeSUF7tVIX5Zo0YJzdRR+4sE+toWYa6BBIhqjpmbiKqf4s+1v +5OxHNj+iiiw0YrEP8VvO3YD516HcdjnLA9SvTyHhar7jczqUl0Hx1GvTUiIVbuLQ +FcLFNA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYDCCBJSgAwIBAgIIPjoUVW3IJVswQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGgMQsw +CQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEjMCEG +A1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJhaGFn +aWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNpYSBD +b3VudHJ5IFNpZ25lcjAeFw0yMjEyMTUwMzM4NTJaFw0zMjEyMTIwMzM4NTJaMIGg +MQswCQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEj +MCEGA1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJh +aGFnaWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNp +YSBDb3VudHJ5IFNpZ25lcjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGB +AJ7ytHppigLZpGYlUSd0H9chR/90owNohfpcdPvjQE9TDs2UYqhaEFERRZVc2dwd +/kEkjlZdgWxRLYq4tssliSQ+ZvFQccEK7xKmKuG1StPdR2zhdvoXuoMMki4auJW6 +OozRO5VWatNxp4ZrHTRznKCTsNJpw1AYAqh7EDko+yFY3Fk86eH6Xi6KIeRznTcU +99odXVAZLAfdm9bB8qz7SQX1VEB9IpRifw32rVv8gC2eQopXrcBb2ehrfUqnk1cL +SEVdZRzyYRTz+pyJOdwRjQGSoTG8jBq66faQ9Y43gH0gC6M9+Y3RR3/LSkRbhwwp +j1pWV5u1W78PCD62N6JsTokFHkbLI8g7OrNH0DPKZm8p2f+06PKub1dPutecA+Z8 +murM1cHitub9SQKULVb/sUEKvx0F3IHCO/k+f7PU3sPvzXHhO0znFcgowl9XAosW +hZO1CcoIDK3P0qmqWj8qX35878JLWzqg2Way91UT7WCmgpCL4A2vPBIt0Sxo74NX +VwIDAQABo4IBMjCCAS4wHQYDVR0OBBYEFCZNMP5948JcpL2Z2quza0WNKd8GMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUJk0w/n3jwlykvZnaq7NrRY0p +3wYwLgYDVR0SBCcwJYERamltcGtpQGltaS5nb3YubXmkEDAOMQwwCgYDVQQHDANN +WVMwKwYDVR0QBCQwIoAPMjAyMjEyMTUwMzM4NTJagQ8yMDI3MTIxNDAzMzg1Mlow +OwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3d3dy5pbWkuZ292Lm15L2ltYWdlcy9w +ZGYvY2FjcmwuY3JsMA4GA1UdDwEB/wQEAwIBBjAuBgNVHREEJzAlgRFqaW1wa2lA +aW1pLmdvdi5teaQQMA4xDDAKBgNVBAcMA01ZUzBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggGBAJ6stGE0zcViHa02Xmuu1xqHLKC9ekwT838Il5nzWwdFns3tVUy5qpyJkv7E +ugToITfVzwZqhThPrL2woqrs3Ki79lTntwWr7oj8eIkd8D1nru6bNLHIo+olK9fA +2VWlkxlhG4aK3CEhONAcDLjxxCjTlb+Ftqi5stja/RCO0TWujJGItHzFBrIcOIgV +9eqdp5J8ukoAcgSkGFp1HmoMYGUeVb8OkXg8XU6ZBCIcHPHM2XMAjCZqAxSVS3Is +UpylC2JZzMEB7POWCkTFkwyYuVy/qydR0REtgWx/bIw2Fjgal3sYXplQ3Z6q1VU5 +fnqStgRB560D+lc6faEyzu3pItsAY1BIGBQKMDHkL4MZtzZ3dHRUDEL07KfKdWZC +kI5XIn4GI0W1EsJvlVaSVvThdn6xWI3/+xMyPrpA71EB6QGIlL9qyWHm2t1t7Ovh +DyAmd0XVOpdl+oLoK0W9OZSa8HWb2COr91dPHzf8XZ2Y2Ym3yxMyR7AUcgwwS+WF +wr9Ibw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYDCCBJSgAwIBAgIIXVdJ3wIWTqUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGgMQsw +CQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEjMCEG +A1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJhaGFn +aWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNpYSBD +b3VudHJ5IFNpZ25lcjAeFw0yMjEyMTUwMzM4NTJaFw0yOTA3MjMxMTA1NDVaMIGg +MQswCQYDVQQGEwJNWTELMAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEj +MCEGA1UECgwaSmFiYXRhbiBJbWlncmVzZW4gTWFsYXlzaWExKTAnBgNVBAsMIEJh +aGFnaWFuIEtlc2VsYW1hdGFuIGRhbiBQYXNwb3J0MSAwHgYDVQQDDBdNYWxheXNp +YSBDb3VudHJ5IFNpZ25lcjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGB +AJ7ytHppigLZpGYlUSd0H9chR/90owNohfpcdPvjQE9TDs2UYqhaEFERRZVc2dwd +/kEkjlZdgWxRLYq4tssliSQ+ZvFQccEK7xKmKuG1StPdR2zhdvoXuoMMki4auJW6 +OozRO5VWatNxp4ZrHTRznKCTsNJpw1AYAqh7EDko+yFY3Fk86eH6Xi6KIeRznTcU +99odXVAZLAfdm9bB8qz7SQX1VEB9IpRifw32rVv8gC2eQopXrcBb2ehrfUqnk1cL +SEVdZRzyYRTz+pyJOdwRjQGSoTG8jBq66faQ9Y43gH0gC6M9+Y3RR3/LSkRbhwwp +j1pWV5u1W78PCD62N6JsTokFHkbLI8g7OrNH0DPKZm8p2f+06PKub1dPutecA+Z8 +murM1cHitub9SQKULVb/sUEKvx0F3IHCO/k+f7PU3sPvzXHhO0znFcgowl9XAosW +hZO1CcoIDK3P0qmqWj8qX35878JLWzqg2Way91UT7WCmgpCL4A2vPBIt0Sxo74NX +VwIDAQABo4IBMjCCAS4wHQYDVR0OBBYEFCZNMP5948JcpL2Z2quza0WNKd8GMBIG +A1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAU1U3PkH7USNL0DgWaOTK0Zgye +wtswLgYDVR0SBCcwJYERamltcGtpQGltaS5nb3YubXmkEDAOMQwwCgYDVQQHDANN +WVMwKwYDVR0QBCQwIoAPMjAyMjEyMTUwMzM4NTJagQ8yMDI3MTIxNDAzMzg1Mlow +OwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL3d3dy5pbWkuZ292Lm15L2ltYWdlcy9w +ZGYvY2FjcmwuY3JsMA4GA1UdDwEB/wQEAwIBBjAuBgNVHREEJzAlgRFqaW1wa2lA +aW1pLmdvdi5teaQQMA4xDDAKBgNVBAcMA01ZUzBBBgkqhkiG9w0BAQowNKAPMA0G +CWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAD +ggGBAHyHC6qWuAJ+AVJaHDpXYVBu5TmEagEEvLtVR/X7+x0nxOlFWWVP2nHUEyAG +UO+4p1c5KgtRJDNL337BMRyqxWum/Bia+COmHeOuA89MfJn7TXCSBh4UnihR3Iyf +u+J26nJZcBBrXnvZgXfELftRVn1fyOHRe0wmLjbtatnvp7YE9kq/Z/bYjds6sLiK +PTTDk3XjR0VDmvK0DpmrLt/oaGlX1SmUOJvDIyVltN4uKhoroddJ+hTQ8w3eKQek +Tugxx3w1GaLkpBuSRS8iVMEcMbrsvR5t47JmThVB63Q8a6OU27UFFV2YFbVp2AuZ +mmBwVjGnyZz4fjCQYkE17pzi4gtYHSkd/Whg2Ur23ThQxNjAObNVVkE3+0lP7xET +GRpn7M+kDUdLsxkY15mdoWed9DPKFMTkxQ1eSSlkbm69jXE0+M/DVvVUQutYWOsq +JXmCXJ+XYO0SCZDqg+cYuGrpGwwuFnX6/yYDg/Yj6xR2ESwbyI+NiFYiG2YXifLa ++l+jXA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYDCCBMigAwIBAgIEWZbiWDANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJV +TjEXMBUGA1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwHhcN +MjIwNjE0MTUxNTA5WhcNMzIwNjE0MTU0NTA5WjBoMQswCQYDVQQGEwJVTjEXMBUG +A1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwggGiMA0GCSqG +SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCsgw5qSCt2GW7ktzIXXKM9YOZFYKtYRWAt +Yrej3ajLxi4+YQYJs4vSH+OumKfc2onO9G4ZPwOClOqS4SMKrjFuzzHeohIsErJA +15ETrbGff2D1cOFim7VXwWN8QLdEikq548bn3XuhXVv+2WfkxJMFSqGx4f8r8Jiv +J84UaWOKOJSJkQAUNIfSeg+EbjWLbNECi82+PXSIPY8b/gvyY6wTHy20BzmNvAJ3 +l5Kck5PdQcOXjfUmtn8StzxqKY7KuxsnSJE/hGs0oJGc8MFw0K1gh8czx+rbRWQd +bJLD2qr1J8p22qwhvZfrY/r3hJw4gT2mZ433VejCxKzk6escotY6YTwhnpkGOTCX +svaVZ23L/jz27E714HtqAS5Z42ak8xnK1Jl/FwvGmwPYKrSKqSdMLs4NiX5ar3wF +oKQvYtNLkwF+s6FhiiIIgPG6pVpFT8+cIoRPBYr+HHPHvbyNiJJshuxC0Bi39uai +9khHykBtABnEYb1y2V5wT1UJFkhkJQECAwEAAaOCAhAwggIMMCoGA1UdEgQjMCGB +DXRyYXZlbEB1bi5vcmekEDAOMQwwCgYDVQQHDANVTk8wKgYDVR0RBCMwIYENdHJh +dmVsQHVuLm9yZ6QQMA4xDDAKBgNVBAcMA1VOTzAOBgNVHQ8BAf8EBAMCAQYwEgYD +VR0TAQH/BAgwBgEB/wIBADCCAR8GA1UdHwSCARYwggESMIGOoIGLoIGIhi5odHRw +Oi8vdW5vY3JsLm1hbmFnZWQuZW50cnVzdC5jb20vQ1JMcy9VTk8uY3JshipodHRw +czovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL1VOTy5jcmyGKmh0dHBzOi8v +cGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvVU5PLmNybDB/oH2ge6R5MHcxCzAJ +BgNVBAYTAlVOMRcwFQYDVQQKDA5Vbml0ZWQgTmF0aW9uczEiMCAGA1UECwwZQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdGllczEcMBoGA1UEAwwTVW5pdGVkIE5hdGlvbnMg +Q1NDQTENMAsGA1UEAwwEQ1JMMTArBgNVHRAEJDAigA8yMDIyMDYxNDE1MTUwOVqB +DzIwMjgwNjE0MTA1NzA5WjAfBgNVHSMEGDAWgBQGVLK4ZOx4qkZ1+REGNOzawqW0 +rzAdBgNVHQ4EFgQUBlSyuGTseKpGdfkRBjTs2sKltK8wDQYJKoZIhvcNAQELBQAD +ggGBAAqpN34ueb/PyXQ47YhrEYkJ6fcTznCi9k/zA6iHc69FB6lV0lBEmvfqhSsF +ra+PC20QXgPnhe8pr0jD4SKNRO39S6Etsudo6xc77ZZiYkS11pWKBrNE3JKP9ZwP +aYH2WnnloKb07xqA691SlbmM1mqtF0wEESl1jNRYW5X9/Wb2kHEOtdJmh5/rYsct +/ALskBrdVp2Yu/p1Xr3xIDRY8PAyMTe2cFhC0l8pTwRtYud7dbhY0vd0oipSuULC +LlCDykKrOqyMQJyNM4HkXlRdSI3cdfcqpOOecWuz4sfC3Echo7M6VzvPnNdlYhST +uToXCL8Ht775dZHxkdaz/1UXkgaFCwUkorsAEH+vvQflKFkVkIpkNV6dk/yD5Hna +j1ZBsHRFJC8CV5fXsNBkEwWsLCxthEsdt8qkrKJDHpSEVho6TcaZ0EDqr34r/mpS +RdLvn5ind7ve8BLAxSgJ4HQn7KU0AxUDdQ4ZKWCbucJTY2b6Z1qZR1fecIoRQsXH +9dbERQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGYTCCBEmgAwIBAgIESVg+/zANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJS +TzEMMAoGA1UECgwDREdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwHhcNMjMwODA5 +MTAxNzUyWhcNMzkwMzA5MTA0NzUyWjAyMQswCQYDVQQGEwJSTzEMMAoGA1UECgwD +REdQMRUwEwYDVQQDDAxDU0NBIFJvbWFuaWEwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCx7pcjx8hbFEPW33WQ1TjLujqie6kd7JBgzx3vNcQzTu2YiLSS +HL2EMLUlrDUelx3oXwl1ISTJvWO2lCCdQXQnXD0XlgW5FgzEcHPVn9uokrJZzwtC +7RNboGRNBh+3Pa+x/a5d1tpUb5a/n4mv6NTYSfLwrGfcWNbI9Bnd9KKq81E+vJPG +kvhbVnzzaBCjoWhJs37J0Mh2wUqzZIfhxpSxaM/SZ7HeP8vNj3eqJbOIEKJA8gRC +5VubLVcpMhhbuurPdoqOt6l4D1HvLzqjW8Kr4Y4FAFiOEb5KG/YCW5GLYJOzW57X +X6DtdwFHneOEmhQXB6bzCipQYIvmiCy2Y8U2JQh1dWPiSc6A/ZiYQHle1SN5T2+W +enySCnEMJ2psz6qDGslEMykpvXYofAfFPFcca0jWvl9+hKeIPvdDoOgnTNfbnGMh +e6qMgqft73dObOxFjyulh3rxHb4G9HiDWjoa0Xx555HkTDg/qUGasYFILPCtbvcD +AQV3cn7TIQ77VpKmpJSgNyjdVlWc3dmpO+lP7kS9GGHQhLZOzBKJYrk+V13ZJeHM +97YaE0MAN1ymL/SB1pSaT3+JBGnsEGKeBsUgWnZtA/aQdr5snMrRrTM4JL+SXh8C +6UAhnns3kJ9+gBBETqnpI61V/KArJBnRvbCzQz53ZWWtaUe8G0GjJRizhQIDAQAB +o4IBfTCCAXkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwVwYD +VR0SBFAwToEOZGdwQG1haS5nb3Yucm+kEDAOMQwwCgYDVQQHDANST1WGKmh0dHA6 +Ly93d3cucGFzYXBvYXJ0ZS5tYWkuZ292LnJvL2NzY2EuaHRtbDBXBgNVHREEUDBO +gQ5kZ3BAbWFpLmdvdi5yb6QQMA4xDDAKBgNVBAcMA1JPVYYqaHR0cDovL3d3dy5w +YXNhcG9hcnRlLm1haS5nb3Yucm8vY3NjYS5odG1sMCsGA1UdEAQkMCKADzIwMjMw +ODA5MTAxNzUyWoEPMjAyODA4MDgxNjM2MTJaMBMGA1UdIwQMMAqACEgcRDUgEyz2 +MBEGA1UdDgQKBAhKbskwbwPuYzBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vd3d3 +LnBhc2Fwb2FydGUubWFpLmdvdi5yby9jc2NhL2NlcnRpZmljYXRlL2NhY3JsLmNy +bDANBgkqhkiG9w0BAQsFAAOCAgEAv3lolsO37TXros819Uw2sHu424v2ZtlzeejT +jZIMvS92ssmy37tB1ehZhgU1k9EDaZb4DoP8dwdH2I7+bQaQEsdbBfWfe/x0IAL0 +XcHgIFcExAS9uliaAs/aX1ookXNxvJ613PJe4dduJ2XBCBoHrMEtbz0DrasBcF83 +y7OdMZ4xRkSOK1s6Lbkw5NYlhdMOVkdzpaets7JXuqbNDN/toSu7RRoiVp2wvGuP +T4/GhMjE47JtectUTJd+epXyRgCXHacOTOsJ2f4eyKBcbggwD3fWje84uSQqZwHI +lEHwpc1mkrgNXABzjssthHDYxBZFz7Jdyj0OOk9gtaNuY3QlWt0xgRolEd8VtFEr +bb2QLtsnD6KLY2Qk11JCoeRcwELb1/hNDjEY+Th5v9iaqqk9D0sjdjh13SZ8CfHS +ISDpIv4jCwloAQxLYMRwG4NrqIZieRSjZpxnr2/PdChNX7JzGjYsTP4jOAyVxVsT +VsTe2mA3zCy4mEHod7sznXPOd6l9sBWexVJZsVvAW0tNDBpwd0pwhMCjagMZ9Ucs +e3nvDuHtTPXV7N+AYiad4/9Vfa1/cOoIi+CCf5UfQE6BF4QK11gMwdBeTULE2qTK +4AhGaIBAWo95LPb46wWIWwzIpF8J0UqKuaQlKIl0ioidTQFwP09m5tEyPtscivDM +5ym2KNw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGbjCCBdCgAwIBAgIDAIhWMAoGCCqGSM49BAMEMIGiMQswCQYDVQQGEwJUUjEw +MC4GA1UECgwnUmVwdWJsaWMgb2YgVHVya2V5IE1pbmlzdHJ5IG9mIEludGVyaW9y +MUIwQAYDVQQLDDlHZW5lcmFsIERpcmVjdG9yYXRlIG9mIENpdmlsIFJlZ2lzdHJh +dGlvbiBhbmQgTmF0aW9uYWxpdHkxHTAbBgNVBAMMFFBhc3Nwb3J0IENTQ0EgVHVy +a2V5MB4XDTIxMDMwNTA4MDcxOFoXDTM0MDYwNTA4MDcxOFowgaIxCzAJBgNVBAYT +AlRSMTAwLgYDVQQKDCdSZXB1YmxpYyBvZiBUdXJrZXkgTWluaXN0cnkgb2YgSW50 +ZXJpb3IxQjBABgNVBAsMOUdlbmVyYWwgRGlyZWN0b3JhdGUgb2YgQ2l2aWwgUmVn +aXN0cmF0aW9uIGFuZCBOYXRpb25hbGl0eTEdMBsGA1UEAwwUUGFzc3BvcnQgQ1ND +QSBUdXJrZXkwggJFMIIBuAYHKoZIzj0CATCCAasCAQEwTQYHKoZIzj0BAQJCAf// +//////////////////////////////////////////////////////////////// +////////////////////MIGHBEIB//////////////////////////////////// +//////////////////////////////////////////////////wEQVGVPrlhjhya +H5KaIaC2hUDuotpyW5mzFfO4tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1c9+IPSw0 +8e9FH9RrUD8ABIGFBADGhY4GtwQE6c2ePstmI5W0QpxkgTkFP7Uh+CivYGtNPbqh +S1537+dZKP4dwSei/6jeM0izwYVqQpv5fn4xwuW9ZgEYOSlqeJo7wARcil+0LH0b +2Zj1RElXm0RoF6+9Fyc+ZiyX7nKZXvQmQMVQuQE/rQdhNTxwhqJywkCIvpR2n9Fm +UAJCAf//////////////////////////////////////////+lGGh4O/L5Zrf8wB +SPcJpdA7tcm4iZxHrrtvtx6ROGQJAgEBA4GGAAQBA4/bJ2e+LN2ZhmHE0KsA32Ld +tzNmGyoinLuc/yQScpEFh3LF2yuthe5OK0UKWjmbJ+Xi9uFDLqxeR2U8i5WCzDoA +bL+G4WOUPQ6V/qPe6lxbSpsB6P6UIUWWMix6GimoWxLeinqtpQZSsLpgsldOWfi1 +qiwR6txYextP9mEQau0IKOajggIDMIIB/zAfBgNVHSMEGDAWgBSHH2a+4ljxkN8b +Uts80OPFjUUN7zAdBgNVHQ4EFgQUb5u7xp7s2tm8MelQ4R7QygAiBZYwDgYDVR0P +AQH/BAQDAgEGMIGEBgNVHSAEfTB7MHkGC2CGGAECAQEFBwYBMGowMgYIKwYBBQUH +AgEWJmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdvdi50ci9DU0NBL0NQMDQGCCsG +AQUFBwICMCgMJlZpc2l0IG91ciB3ZWJzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9u +MAwGA1UdEwEB/wQCMAAwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL3Bhc2Fwb3J0 +LmthbXVzbS5nb3YudHIvQ1NDQS9DU0NBVFJfVjIuY3JsMFMGA1UdEQRMMEqBFnBh +c2Fwb3J0QGthbXVzbS5nb3YudHKCHmh0dHBzOi8vcGFzYXBvcnQua2FtdXNtLmdv +di50cqQQMA4xDDAKBgNVBAcMA1RVUjBTBgNVHRIETDBKgRZwYXNhcG9ydEBrYW11 +c20uZ292LnRygh5odHRwczovL3Bhc2Fwb3J0LmthbXVzbS5nb3YudHKkEDAOMQww +CgYDVQQHDANUVVIwKwYDVR0QBCQwIoAPMjAyMTAzMDUwODA3MThagQ8yMDI0MDMw +NDA4MDcxOFowCgYIKoZIzj0EAwQDgYsAMIGHAkIBiUL6K1EE9BeF3YSO3SMtz8ON +YwqOy8KVQupeBfdo9rBS5RpVs62CUqyJF2XOoCdw5qd8yQQB5yfVvXEJWYGTMLAC +QTsqOEFitq+sTnC0bMQqpvQmTFG3/1DRhbWQjKO9Ma934lli2yhspG46do8uvWdY +0lzUFE6vWT09ay3GPEDwJlfY +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGczCCBNugAwIBAgIEWZbsjTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJV +TjEXMBUGA1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwHhcN +MjIwNjE0MTUxNTA5WhcNMjcwOTIyMjExOTEwWjBoMQswCQYDVQQGEwJVTjEXMBUG +A1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwggGiMA0GCSqG +SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCsgw5qSCt2GW7ktzIXXKM9YOZFYKtYRWAt +Yrej3ajLxi4+YQYJs4vSH+OumKfc2onO9G4ZPwOClOqS4SMKrjFuzzHeohIsErJA +15ETrbGff2D1cOFim7VXwWN8QLdEikq548bn3XuhXVv+2WfkxJMFSqGx4f8r8Jiv +J84UaWOKOJSJkQAUNIfSeg+EbjWLbNECi82+PXSIPY8b/gvyY6wTHy20BzmNvAJ3 +l5Kck5PdQcOXjfUmtn8StzxqKY7KuxsnSJE/hGs0oJGc8MFw0K1gh8czx+rbRWQd +bJLD2qr1J8p22qwhvZfrY/r3hJw4gT2mZ433VejCxKzk6escotY6YTwhnpkGOTCX +svaVZ23L/jz27E714HtqAS5Z42ak8xnK1Jl/FwvGmwPYKrSKqSdMLs4NiX5ar3wF +oKQvYtNLkwF+s6FhiiIIgPG6pVpFT8+cIoRPBYr+HHPHvbyNiJJshuxC0Bi39uai +9khHykBtABnEYb1y2V5wT1UJFkhkJQECAwEAAaOCAiMwggIfMBIGA1UdEwEB/wQI +MAYBAf8CAQAwEQYDVR0gBAowCDAGBgRVHSAAMA4GA1UdDwEB/wQEAwIBBjAqBgNV +HRIEIzAhgQ10cmF2ZWxAdW4ub3JnpBAwDjEMMAoGA1UEBwwDVU5PMCoGA1UdEQQj +MCGBDXRyYXZlbEB1bi5vcmekEDAOMQwwCgYDVQQHDANVTk8wKwYDVR0QBCQwIoAP +MjAyMjA2MTQxNTE1MDlagQ8yMDI4MDYxNDEwNTcwOVowHwYDVR0jBBgwFoAUp3Wv +ZLRA6N04by8AIoDs7dGdG5cwHQYDVR0OBBYEFAZUsrhk7HiqRnX5EQY07NrCpbSv +MIIBHwYDVR0fBIIBFjCCARIwgY6ggYuggYiGLmh0dHA6Ly91bm9jcmwubWFuYWdl +ZC5lbnRydXN0LmNvbS9DUkxzL1VOTy5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQx +LmljYW8uaW50L0NSTHMvVU5PLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNh +by5pbnQvQ1JMcy9VTk8uY3JsMH+gfaB7pHkwdzELMAkGA1UEBhMCVU4xFzAVBgNV +BAoMDlVuaXRlZCBOYXRpb25zMSIwIAYDVQQLDBlDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0aWVzMRwwGgYDVQQDDBNVbml0ZWQgTmF0aW9ucyBDU0NBMQ0wCwYDVQQDDARD +UkwxMA0GCSqGSIb3DQEBCwUAA4IBgQBCfWFuEM4vHK41xRUjstUm4NQf0pvl5AUG +m9O6VZorEchJMkC2chEpGz3ifHpxA4M7W+KyAwhXQNmSn8hjsiMIVUTPLQFYFbvE +9zWnxIjMGzjr9VSB7r7kZgG1J9oOO7ErZLzE24aaSMpbxO3tvoPs0L1exbVUitsK +NWzkZ7CKSxFuc/YP4v0u5eFsouAaOeEUX/QlNiIx6tAODh54tpQkBQIYkF8wL3lt +Nq7xonm89cDwZIA3txl9+rGV7Zec0BAGxUMRDFZKhLhaIjHjy7in8LJ0jWIW8Sn7 +cHGqmHGm2sZOnjmx+XEPAAY+6uyv3eioVQ78cpxJekmZUaCHse9WiO+QHkeV3alw +jUf9e+rTk56ONI0suzKrCw/SlGbtBUTN6PA+azjS6DpaevBWy83xc9KeD7rcZL4n +RCzIVEZCeQb6mBzgkSohZOy4XlrdbI2GZ6KcgHFtuKzBbbebJCLlIsAPFnvibe2c +Cy5tVxXNRJg4UYJ2OiBC0o58RnUoDA4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGfDCCBGSgAwIBAgIEF8fmSDANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +SUQxJTAjBgNVBAoMHERpcmVrdG9yYXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNV +BAsMNkRpcmVrdG9yYXQgU2lzdGVtIGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtl +aW1pZ3Jhc2lhbjERMA8GA1UEAwwIQ1NDQVByb2QwHhcNMjExMjA4MDc0NDA1WhcN +MzAwNjA0MDc0NDA1WjCBiDELMAkGA1UEBhMCSUQxJTAjBgNVBAoMHERpcmVrdG9y +YXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNVBAsMNkRpcmVrdG9yYXQgU2lzdGVt +IGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtlaW1pZ3Jhc2lhbjERMA8GA1UEAwwI +Q1NDQVByb2QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDxYEB2Zwr7 +w2/PKrzm7KrstxSREj6QvB9YFdglyUeruOsd/aah8pd9gOcnkhyDi8t2Pf17zXm4 +YUDKHS/5cfAyEGC+Nr0sSxHLELtBofzlB/zWfzGTLka2fcnghWGNOwE/LP4PqRr/ +cbBunS9sl03rjlB7CXruhkiCzuguhxbd2Kb/FHDSyIsQ17uXf0ilIV1yakxI25X4 +sYjCIIKFot6fnelH+Z/RzcVXeq3xvbbujy8OeYXsQ7Mz3CXcXzIjvOgG/pSi2lFO +UxWFffVklPtSOHgRoWpxEHE75RfuQVCngDd12PdOHgqqkRgC8btZ+I8qoS6FJLm1 +MBhEXW93YcS9KeqEeQ44+wmpleOxqgQ1gZ+TjnB2ma9L5Xs5NwWSJXqqMDskUW2I +8QuAAUj3ZanfVHAZF8e66ZpPsr852XDzAp1fToMADccwn6y1G9CtvWkb+t4FnQ60 +GHFM78GeYq5rLC8pIBrf2BktROT912JNE/Nd49UTL20A5e2q43Mo3fmg3aYBHrEp +5nmoD1vhKWaVOr8FpyhUCx4nl1KBipXBfhnyr/kBzc+3rGfyQM2dQwUGvqFQpQBx +76oZp3KSoyqTwRx9P+dZOcqMIC6bCsv91+hmRcInjsykLMsB0O527z7+cUurBiu6 +Qy+HU9Sw7BaZnMWAZsiMlGBMjeXCLty5qwIDAQABo4HrMIHoMB0GA1UdDgQWBBR3 +Yjs30JzW+50spXCnPuiOd9YEWTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgw +BgEB/wIBADArBgNVHRAEJDAigA8yMDIxMTIwODA3NDQwNVqBDzIwMjQxMjA4MTY1 +OTU5WjAqBgNVHR8EIzAhMB+gHaAbhhlodHRwOi8vd3d3LmltaWdyYXNpLmdvLmlk +MCQGA1UdEQQdMBuBGWRpdC5zaXN0aWtAaW1pZ3Jhc2kuZ28uaWQwJAYDVR0SBB0w +G4EZZGl0LnNpc3Rpa0BpbWlncmFzaS5nby5pZDANBgkqhkiG9w0BAQsFAAOCAgEA +3/gcrluFgr+bx/yfvYRMHC9YERG3hN83JscnojMCIenjLHVCHRcAOPkUmlXOANhE +pLfzAHP0VqwmG3ePuIpUImg6EwcIxyJucm//XJzGb/Gk7pM8Xx213Qf6XOCFssGM +XjzpnMYLDDJ8iSbbCJWXDAS7sSKE4aAE8KapT+3uc8CbdS7xnOJsZui+DVmaj+Rw +7DUftpabBEKTwjr5slpwBqN4UPOb/7De4ocS1kocpb7t1AdmiDDs++0Ei6Db00zB +JEYDxXg8upmnue11O6vsixgWowul7lZLAKao8vggtvb6VcTa5ZvMexcTLKMcqieY +mlM/z8zSqJ/f0UHuB/WNdp9X2Q6loJJpOjasy+l12dgOPI58451PlRoDHO3exJAM +hjs0qfWXKJb3tPmwHnOEnX0IsNJOWvRQk7aC6oykbiXd4viaatFVIg84Yu4mECrH +lJVLoQfMmExiPoZb98cbqktD5VOOAZ8odR7cgPdznaIu4R0ABVch0ZIKnFIDBTLn +zSsYPEu1Feo5DiKw8wbvUWlk1BZmLcO1d/604qnyzZgX+kTrrKbQycDSemoAmKHG +Of0gpt/qchuAFJugzeZv3VEjIN6QecdlE4Di7gLNpozwZHIOHuTw9J33UblheJlG +R46ULcQdxjKdvwb+jZIpA0MoUgcZ3mX4pJMPdobMFXM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGfjCCBGagAwIBAgIIENCCcxdgVM8wDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNV +BAYTAlBUMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vl +c2UgUmVwdWJsaWMxHTAbBgNVBAsMFElDQU8gTVJURCBQS0kgLSBDU0NBMSUwIwYD +VQQDDBxFQ04gRG9jdW1lbnRvcyBkZSBWaWFnZW0gMDA1MB4XDTE5MDYwNDEwNDE0 +N1oXDTI0MDgyMjExMjI1NVowgYExCzAJBgNVBAYTAlBUMTMwMQYDVQQKDCpSZXB1 +YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxJzAlBgNVBAsM +HklDQU8gTVJURCBQS0kgLSBDU0NBIENyb3NzbGluazEUMBIGA1UEAwwLRUNOIDAw +NS0wMDYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDVBAkXbSwXJaEn +QTb7E41zf4oXI5oC3+Fs78kYWf18gwTQ02+n0vUmoQnigKimcIsPYb/nU3ff8K5R +VSK/V3XAkwU7+NdsogcchIs8LqDmGH4QyFhWDEOcnQuWLNMmBKyRvqXE7O2D9QTp +z1P7YYjQL/VtU39o6UiLZAAnsR5U2COcD+9pCwsUOeimy3NO/XKSMwjg1taS9u3/ +JmboCnONVFTx4auSAHajiyu/MQfgmEA2osMFWhb/zPIDbsS726QQuCG5piYmSri/ +ss5Z6KwvVVXWBfGw+cBtwECfJYIE9vRqXkN2ed0XuxkeScNbS7Evsmhs14HPFtps +cMY3ke7jkcP7oPNYqu1yaat1AIwA0U8/F4hI0+Z49Zc1Eb6yy+rveKs3qLPGpJXK +1JPt31JW80bqW7rxGBmnt/g/SmBimDJ8i9W3HYc++7/l3cxlPej9/0E6C61iTncE +SoV+8LgwhEXBIiDKdhKCGbpoYM9fY+9IYjUG8nq5iOLejcV0VgooIHVRw9nNBokS +GsqFSv3BZMW+fiK+xikgkdC3slXnEBD6PVmaNdFBBS63BhCPa4BU4vzyMEmiBYZB +ZDfVu3jyV+0tcEiMZUoPoKBCK3tY7GkVEqIAjEDLqqs0NjHTG+f3u+BsxrzbSXRd +Yd7MjbHCHhZesGMT/UN69dYr9xm3jwIDAQABo4HwMIHtMB0GA1UdDgQWBBTfQ8Se +X9uGTE0wTSIy/pb45p9gmzASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaA +FCP1F/DjT2o4Xwhy3jmyNrVeTOvwMBoGA1UdEAQTMBGADzIwMTkwNjA0MTA0MTQ3 +WjA8BgNVHSAENTAzMDEGCmCEbAEBAQMBAQIwIzAhBggrBgEFBQcCARYVaHR0cDov +L3d3dy5wZXAucHQvY3BzMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly93d3cucGVw +LnB0L2VjbjAwNS5jcmwwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IC +AQBbn/bjScKyj4uZDp1+4P2oc/LE5r9ZgKrKXQKeyTXASeBp9RsbgfgVS7JmYNw3 +2wBfHz2/NIytz4/vP+1wTj/QS+JE430avfqpXy24e1zlFVhznIeAJ9XdcR6Yizm3 +KWpOR69VcfRg2DG3wZU5Gaa58zDbPL61GS0RJYpUI67hTJZf08UTP0iqnEYqnqDW +f8Ijg1Wf0MACJ1a8lS3uIGq9tLx1bcVegK7SkqnazE/uct/8rNbr8tAsgfM1mwGE +CJq0WqwLTF585WKquydGl/cKNN61UvfWMWJszG0QNf26IWE+MclpSO/dYSrO4o5m +0nSf3iyj4+v9EctxVqScZTB0wIXNyMoDbsBtnCikBvrC1f6es+eZkAEK+Ufateuj +37205smB1bgMNQy2R5YjgSjsqUzHkdMqR4DeVHL85bLlTZTQrdfmOlwMyg93HQEM +ljXIvXFSN70LkpRbuYpgu6EotVK43muaNWumTfAC/RmHEyD48GPvblnSDXWlmJLW +fskXJsIRE0y6D2K7xbdqnjAUjKvmo58muQ3QghidL1mFPqplw2qps9MwuR73yaEb +hAalDCkTJQEm1HWD4aD8SQk01mV0qEin+0xTb9LNgHJh0ucVObd8kWsNopQl/Xfw +FB5eMrZt0QJn+DBYcCcvTLw9/cQH/eMrgkmzhWlNFuc7DA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +/2enhd2g +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +20kPvYUVhSA0AhJUYg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGnzCCBIegAwIBAgIEY/vaQTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +SUQxJTAjBgNVBAoMHERpcmVrdG9yYXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNV +BAsMNkRpcmVrdG9yYXQgU2lzdGVtIGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtl +aW1pZ3Jhc2lhbjERMA8GA1UEAwwIQ1NDQVByb2QwHhcNMjExMjA4MDc0NDA2WhcN +MzAwNjA0MDc0NDA2WjCBiDELMAkGA1UEBhMCSUQxJTAjBgNVBAoMHERpcmVrdG9y +YXQgSmVuZGVyYWwgSW1pZ3Jhc2kxPzA9BgNVBAsMNkRpcmVrdG9yYXQgU2lzdGVt +IGRhbiBUZWtub2xvZ2kgSW5mb3JtYXNpIEtlaW1pZ3Jhc2lhbjERMA8GA1UEAwwI +Q1NDQVByb2QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDxYEB2Zwr7 +w2/PKrzm7KrstxSREj6QvB9YFdglyUeruOsd/aah8pd9gOcnkhyDi8t2Pf17zXm4 +YUDKHS/5cfAyEGC+Nr0sSxHLELtBofzlB/zWfzGTLka2fcnghWGNOwE/LP4PqRr/ +cbBunS9sl03rjlB7CXruhkiCzuguhxbd2Kb/FHDSyIsQ17uXf0ilIV1yakxI25X4 +sYjCIIKFot6fnelH+Z/RzcVXeq3xvbbujy8OeYXsQ7Mz3CXcXzIjvOgG/pSi2lFO +UxWFffVklPtSOHgRoWpxEHE75RfuQVCngDd12PdOHgqqkRgC8btZ+I8qoS6FJLm1 +MBhEXW93YcS9KeqEeQ44+wmpleOxqgQ1gZ+TjnB2ma9L5Xs5NwWSJXqqMDskUW2I +8QuAAUj3ZanfVHAZF8e66ZpPsr852XDzAp1fToMADccwn6y1G9CtvWkb+t4FnQ60 +GHFM78GeYq5rLC8pIBrf2BktROT912JNE/Nd49UTL20A5e2q43Mo3fmg3aYBHrEp +5nmoD1vhKWaVOr8FpyhUCx4nl1KBipXBfhnyr/kBzc+3rGfyQM2dQwUGvqFQpQBx +76oZp3KSoyqTwRx9P+dZOcqMIC6bCsv91+hmRcInjsykLMsB0O527z7+cUurBiu6 +Qy+HU9Sw7BaZnMWAZsiMlGBMjeXCLty5qwIDAQABo4IBDTCCAQkwHwYDVR0jBBgw +FoAUL9s6XWCZmsXXaV9TJ5h7W6spyU0wHQYDVR0OBBYEFHdiOzfQnNb7nSylcKc+ +6I531gRZMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMCsGA1Ud +EAQkMCKADzIwMjExMjA4MDc0NDA2WoEPMjAyNDEyMDgxNjU5NTlaMCoGA1UdHwQj +MCEwH6AdoBuGGWh0dHA6Ly93d3cuaW1pZ3Jhc2kuZ28uaWQwJAYDVR0RBB0wG4EZ +ZGl0LnNpc3Rpa0BpbWlncmFzaS5nby5pZDAkBgNVHRIEHTAbgRlkaXQuc2lzdGlr +QGltaWdyYXNpLmdvLmlkMA0GCSqGSIb3DQEBCwUAA4ICAQCiEpcb6lOWyaFfXv+P +QH2dDzgNjJyzXAFtcfyKkLOlZ4QeJG7RemGJE9tIkAend0rwhySWLmzzAVW0f5Fy +TjfIiL/PzvTvmwzqpBLVBepu1F8VHzzWFt9HSMtrBKFZOamW+J9EKzgfhaUatGx7 +m7SsBdcIcnJX9OKKwgLQhkXDNSwoOVWQ96Qc7itTmxfOp2I0koaKbYCDMjVW37mG +mo3G0Y34iwBf2TuXjC0PW2yWeMfxSythJFI6dwbOLpJJBs6K8zYcC0sqEXtqsO2Y +Sl96lwXMclW9ijsxerADVGnpjX5/P7bS/uEsYzMtqzZJab7IMiLLgG5pbFOPP0GL +6iMzDWxCOZE/JgBUpybFRRvbsCTgwrOPxeV10eYJrI8JGilI5LhZDyBkjVjf5NFQ +vBFmy9MjpQfrDoU6WM07HKgpj5YBP496/JxOixvMVuu11l35a/eJdPYsYbIjmdTV +XnJKvnouW7RmtUwxL2HOMR+JC0ASjtsRvQ9nl/Gm6zEKNaU9uqXmaCmTuxwvU0zE +5e8hweG+2vk30r1BqDiErhRwAZb4nwsrbxTANFQpiajBdVnjZl4mM1X96O+nuxZh +fLJnoMPpevQe+obWxSaWAX9HpgXh26rYpowZ4EgFrXXQf0fUmR6fAKKs439s6KLm +IK/oSqCiXf1YRJdF+5dDeGnQJQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +p59GY8zPJrqCEvKeuy+bVD5+/jI0cw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGtzCCBGugAwIBAgIEAgAAATBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwPDERMA8GA1UE +AwwIQ1NDQSBNS0QxDDAKBgNVBAsMA01PSTEMMAoGA1UECgwDR09WMQswCQYDVQQG +EwJNSzAeFw0yMDEyMjMxOTU2MDJaFw0zNjAzMjIxOTU2MDJaMDwxETAPBgNVBAMM +CENTQ0EgTUtEMQwwCgYDVQQLDANNT0kxDDAKBgNVBAoMA0dPVjELMAkGA1UEBhMC +TUswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZCCFRIw2BECGE6HLH +9dHAEW0LfaNrNpnW+oKA218mvNM5cCo2uRkeJSBHKAmJGJbIYto1qiBpbm6XSVmA +zV1iuoiLGdxE99Wfx9Jzmu5lIqxhUxSr52pDSXCUbOE7mY5PQVIvt6Pn5I6gtdSf +j7OZ+9xPYZbWM7YO0vL2YB42khAOLtjpS2GBJEltzsXnIUWrqEUA4VigkpvmPuUX +Yj7hmMnc9AY4t1Os7DLehXuGqPH+KOGpA6cpcpsixGWuZ3fK2/+iAji+w5skxiH7 +4+KrGF0Cqn8yGH2iNENz4dWCNa2mXPWbPcs2EKKv4bZ27PO9P6wfn8iUUj81JUWk +dQzGYQAiSN2PIvWFBLFjcHhT/dEsMzd4jwjQWMwybQuHfk4zIScXS9GeJ1ATBIS2 +5AqIMW6RX8WCmtLg61FWUwDgdA3Gk+ymZgaY9BsIPTv4w21vUv2mFZyZNa3W2Obc +8fng7gfqQt3NGMCOEqhCPTQkQXjHhbKCLDS25eXJ0cK9V18YhH51LeK6Pm6Cg1Wh +6fvXUqqGOjda1/5R8IwSxyd5UN9g9AdY++QxUZ9qcpG5OFjFuJvZQRjriwvOzFxf +bUIofOU+6al0JG+14SGn5eqXfHtRn+ESBTWb1JsVvwlvQsvUB/3KMYG2VzUVneAf +pKQpk8e4dqERCxA/8Z0OMsAWlQIDAQABo4IBVzCCAVMwEgYDVR0TAQH/BAgwBgEB +/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFGwyIOQxe87aomru0j5MPEzH +1fYpMCsGA1UdEAQkMCKADzIwMjAxMjIzMTk1NjAyWoEPMjAyNTEyMjMxOTU2MDJa +MEQGA1UdEgQ9MDuBD2NzY2FAbW9pLmdvdi5ta4YWaHR0cDovL212ci5nb3YubWsv +Y3NjYaQQMA4xDDAKBgNVBAcMA01LRDBEBgNVHREEPTA7gQ9jc2NhQG1vaS5nb3Yu +bWuGFmh0dHA6Ly9tdnIuZ292Lm1rL2NzY2GkEDAOMQwwCgYDVQQHDANNS0QwNAYD +VR0fBC0wKzApoCegJYYjaHR0cDovL212ci5nb3YubWsvY3NjYS9DUkxzL01LRC5j +cmwwHwYDVR0jBBgwFoAUbDIg5DF7ztqiau7SPkw8TMfV9ikwQQYJKoZIhvcNAQEK +MDSgDzANBglghkgBZQMEAgMFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgMF +AKIDAgFAA4ICAQAO7Ge4zHQjaeTJJK0QmAktauE4nUT7EeCkCwA1PyNq43k3T43J +tf97QJJMpB51URwXAADB2vjfEJAgx72HbdCcLUw3ergrSpm452IEDM/APHFMR+IA +MSK/e5fBuvLeQ0kg18CDweYcch6f9U7ZPGf/RNvh8N+o7QwKYdZWkZ/ys+/nA4Wn +bbrWHI9m6kqffP142ZC1WS+JMvEuDhLXaCd6cr5+exiSxSWIqiZ1dwzOPUzyAIE0 +STxbAkng4kMFNL27B21NSit3lxBHBrURlB23lntFLPFlwsFzDJRQBooeOt1RRch0 +KV6ch2Rom5DXs5RqHEJ1u4LDvfaa7+1U2LU/25LwqJZDP1RDJFhw2vpjXlVfaIzl +IXCWrjND9p2DcrZB+P6fLERQg7XVR6+x30lggQrATzQS5b1ZAKbfUriGbP4C57Xw +Pex/2YiIvwLpeWgq+KZ2Y2zqqSoEgka+fb0/xTSphfg4kAyEQHLW7/o46auqxphy +bDh8uWqxVADI2VLOd5vPn+iFi22rKLyhgUwfB3KBGtcJbVZm9jl2IUDFAlTuvci2 +YiG/BzQE9IMTEi19W2Sow8x5GGWEqnEj8LEyJZrT0OudF2G4NVxjpdPs633ir9On +YTehLdqYV3UPPIcCdcBCU2IxQixNNSR396tAl3x8Mr9t3WQK7gZkH1OQbQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +axvatHPbOYjJFjI1P64ZRbUWCIwK/7Qb4VM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG1jCCBIqgAwIBAgILAMjjoPACCYGRgUQwQQYJKoZIhvcNAQEKMDSgDzANBglg +hkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8x +EjAQBgNVBAMMCUNTQ0EwMTAwNTEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDAe +Fw0xNzEyMjAxNjAwMDBaFw0zMDA0MDExNTU5NTlaMC8xEjAQBgNVBAMMCUNTQ0Ew +MTAwNTEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBALHBCMmweH79U+f7uUhg6R4ZGRIJL7KsBkag0YanKqO6 +83TMjh6+CkBMIhc3wpD5cJlQOhY3TeVzPOo8bJ3AI+CxFxN30i7ROxdb9aCvh9rK +YUQeQaoLfiQc9iqbhOhGdbNJktXarx7i8KopzliLLGzLCbAmpPtLiWoM+O9SSsnz +EBdQoQmRT5eY1k13cU4wbcI8OIrrJIfDxw+EYe+yWqyN4SbX/o6u1YsDkImcoOz4 +lqsrq4TRa70CtBQmONymDn9b6Dvl8GH/gtBjI4pJ6UJhrFhiMWNS4LILpGV6tNlj +1ZxvyggjuppAGCDRDaTGDlWLZyDeOQ4NE48Ul+7ndXLCIyN+YRwVy8oRD7VLuRAR +vanbZvXbvlhQu1Xc0H1UexhTmdqP8hZl0T6lJkPhTSBrXtuawPpG1HoDvtGgZThi +Fp2f6M4Vzs6R4L1gOsan1CqbH4j8hRk7adM1Dv2QC3JtUzYMAjH80BYOi3bdkPw5 +bNNozK+Xpc8i/1TjFf+Trt3LYF3QRnWpXu5Mw5q16ofTKzo1qlQ1gJbP8PC8Vvt2 ++rnekQ6QcSmp/jCgGnZjK52kT4fHPZV1gvkODj7ndVAoTTVl8tXSGbKJ3I8wDnnF +mU1lQc7oIEJ6HiFp4B8J4Eb+1zxTUGelNZvxDDOVYwZjNOlaUNknXW1MGtSyrWYR +AgMBAAGjggGJMIIBhTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU2mJJjjXKvshho51Fn6ilvQN7cpwwYQYDVR0jBFowWIAUkw/7 +G/dwVXmXGyAqZvAyG0wrLkqhM6QxMC8xEjAQBgNVBAMMCUNTQ0EwMTAwNDEMMAoG +A1UECgwDREZBMQswCQYDVQQGEwJQSIILAMjjoPACCYGRgRYwZwYDVR0fBGAwXjBc +oFqgWIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9QSEwuY3Js +hipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL1BITC5jcmwwOQYD +VR0RBDIwMIEccGFzc3BvcnQuZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNV +BAcMA1BITDA5BgNVHRIEMjAwgRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBo +pBAwDjEMMAoGA1UEBwwDUEhMMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIB +BQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAgEAi1C9UZEa +CmqUnkxlZLI21Nmv17FzEtHerEreZ/F1zJB6FaLzHuEMGGpljXtM+yEf8F8+R7p3 +zEZcPGtnRJIQ/iNb3hzSCNVLmmqgcqt7sV08os07SByncLZ5d45/d0KEjYF7amV1 +UeBLHb4nIgxhmopca8uLchANhQM+uX9rQGjAJbGKysaAgxz/8SPnbzXBYcEZJPL/ +LQSeJW4KBYdAkfp0fmDU1yLG7YXjcWZDf18eg+57Vfb4HrFxeOVsCm/K+/HzToyJ +TVcZRWG4zrfqbXTuWXNTN86/OD07a6HFqQJdIusAlnrLWNxZNwUHajgdVyl/fAwl +1ejRm+e1CGcWGgnGiEv+1FZTzZqe80v9sOPBe35ZLGqpFiMiYUExB3M0Ox3dmGSN +cBlbgr+whatLrqZzChEKz3Lp97B7tlxNpkwP6/kFEy6ogk2ayzGsWT7Hwdr7LUNL +ZDcksP3Mh5x04UZVsJFVg+Md2+XnG1WCIN8+MML4WTsUapSuRN9QrSaxpyV2S3Rx +VMEs3fImeKtKy5nhNzcQpdCW3OmZ1+KBmJn8Ag7MmIFxRPirhztiRWBZItQK6LTv +dirAiuwNfmeiCRtEBZIPKwZJTFjaibHFR5vas4f4Q1ZCjU4MlvjWa6k9ohn1834L +xwoW4jOXJGl3nya/HDo7/yVPj8Dueu43+WA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG2jCCBMKgAwIBAgIEIght6zANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMC +Q0kxMTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRF +UklFVVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZP +UlkgQ09BU1QxEDAOBgNVBAUTBzIwMTUwMDEwHhcNMjAxMjI4MTEwMjQxWhcNMjgw +NzI3MjM1OTU5WjBrMQswCQYDVQQGEwJDSTExMC8GA1UECgwoQ09URSBEJ0lWT0lS +RSAtIE1JTklTVEVSRSBERSBMJ0lOVEVSSUVVUjEpMCcGA1UEAwwgQ1NDQSBDT1RF +IEQnSVZPSVJFIC0gSVZPUlkgQ09BU1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQC6ujwpCt8rcM7k77QtwPyKiUcpBWne8tLSqem0pKM7UPeO9arx9gRJ +5NfKzgXuW/wI8LvzqqWqQn4mi3CPOwo6gud6Ow5YWtzqLDhSm3oJcAMpF3RpJCX3 +jEgE/gxwZSG4Wp9UFDGJLs2qaytm4pB/0HYIh85pEZuYa95J6G8hLClnZoJwnTFp +Hq2vqOGD28wQbrWgyB6FEpD8y1O1V9hqrx0ZND3BVotNoCCHIsrFZ/P1KLotsp2O +ILPTcCxDzot+qkIFbNDRrSr2yH/CZKXDwupaR187xIBNgKGfP/bk5AIAbEODy56v +S0UkH+PFhan8vlHN0m0MtG1Xi0/O31FtW/nWjfJ8pEjgxFcbqiwFNEGfbzC1LfTT +NgmLGe9M5PUtNg6lWB1fMdYP+xulW4fIK6UK0FfSBn2442uH9dDjLLNWPOTazBVF +Ey2qMQyUAVnvmtWWsUExaTc8hSEyB/lGFSrH+IOmzv0bTwDMTugEffl6qyPsT2MI +Emrids98blvbU3hIjya/F2/wcOLWy72r2trQOz7UxKc334ScH1vGtmoyCnLwxUp5 +TgKuTXPlwmHBaJpMIkEXeiZpEg818eoFTDo5FlnigUlS3ce2j0iMpFzZmIQCVt3S +8woeOrcbtV69/asQxi15SMtvS7fG37O86T8ETegOE95miQWWlgg0zQIDAQABo4IB +aTCCAWUwHQYDVR0OBBYEFPnR68q8UPK96qqKdEo8vK567vD8MA4GA1UdDwEB/wQE +AwIABjAtBgNVHREEJjAkgSJjZXJ0aWZpcGFzc3BvcnRAcG9saWNlbmF0aW9uYWxl +LmNpMA8GA1UdEwQIMAYBAf8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cHM6Ly93 +d3cucG9saWNlbmF0aW9uYWxlLmNpL0NlcnRpZi9jc2NhLmNybDCBsgYDVR0jBIGq +MIGngBQlR5tmWETtnlgpgFV8aWs364MUIqGBi6SBiDCBhTELMAkGA1UEBhMCQ0kx +MTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRFUklF +VVIxMTAvBgNVBAMMKENTQ0EgMjAxNTAwMSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkg +Q09BU1QxEDAOBgNVBAUTBzIwMTUwMDGCASIwDQYJKoZIhvcNAQELBQADggIBAI1/ +iT7s8LfC0IaAxGpB/Yhs/xv9vChN7aURj9jQkSCMeqHps82K3ZO++OKB9Z1yk1Cd +GP10yScseKh1Z/l2PMebyUrdtPui8QpRPeaBL/YqKJtUnWhlqRfy76smTiQJisV6 +4S/k7PhZaP2bfKaUASvjUKMvJNZ5KyZFEAAYOAxn+YbdrtgYrFKIMOJIaKDdxYog +eu4cpxTqCZfAqPUjmCkkqNEWKkMc+xyyyhmzCOutpKYVN8AURn0Ax/L403c5M6mI +Nn34bcWsi4N6bh35zg+wQkieKti2V8OSS6NseKaa4Cyl7DUqfr+F9ZYo3r2WEa9w +0AGnxGn3HWbD2TOPexwz9aqYgUDPyvA+esWE3XUxA9AbCBjFvujSXs0/GELlKBTI +6dnWXA0tXlIrrDqa+H2O55UJ9mfQIy0e0ZO4rI1U2CidFMCx7POfGd/6WbMwRApl +DpYCfBIVMGt2mMrF4tG/TUb6S8uSeDGzQEx9GAS8O+mo4t/4n5wwFIyvvpvpgpI1 +YxcSD44j3t6Aw9CqyvPaKO0mEEvXuxMCasQ0uXZq25/Q9SB4/jE+qUj1UoeYdGof +TQLFfjDNEd9d5xJDJBSUdNhdch70gcGHNhDZ/txs5WXtMEJ/hXRRe2l3irtAShr/ +W5GD0pePRDyf69YLvFkEXKZNneIFZcDGqNBNuN5s +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG4TCCBJWgAwIBAgIIJRObnlsYx+EwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgME8xIzAh +BgNVBAMMGlN3ZWRpc2ggQ291bnRyeSBTaWduaW5nIENBMRswGQYDVQQKDBJSaWtz +cG9saXNzdHlyZWxzZW4xCzAJBgNVBAYTAlNFMB4XDTE4MDEyOTEzMTUzM1oXDTI0 +MDMxOTEyMzIxNlowUDEmMCQGA1UEAwwdU3dlZGlzaCBDb3VudHJ5IFNpZ25pbmcg +Q0EgdjIxGTAXBgNVBAoMEFBvbGlzbXluZGlnaGV0ZW4xCzAJBgNVBAYTAlNFMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3/yYXAoW3QUSwm5PdHmhXmYx +Hye8p48hErSQbz4puNISN7RfVNnNT0qh8aDWAkE3USnp8W3PjzTWoWhdb7FbHGbz +UzA/LpdDjKYdgWDmogxwM9LyQywMRXbN/p3S6NU7Tkx0RgYMTXn2/6zWQGqhklcV +2TBlOeJQzr0BsXwtVPuMrHXJPrQwcukjOwuCvsIvL0wMDUj4VbZXt3khTT/Q7fo/ +qMVwlLmgrvd9k1q3jRkxafFCPLmtNRsyZlukrnwN5SwErCExM1kqegBM/7VXfG8t +dtEK1UHvzxXodwdojRSZU8mHwEZzFdisdxZlT2nS1DMGZap00EtMuP1j/2Gztb7S +7TWjfiRxMZPQ9SWDLbWk6YCpWTXvYyntk6AHX+hN7+Xy4/SwqrxUgrqwSiTF5ZK9 +0z4PXGt4mMIoLeWTt/XcJhy+fFrNljyeHhGM0M1jIMhkS/3PJCov0JyEV0IxCBpG +D1mER2bLh+KoHtm4jY+QC8+qUFEG4POcHhBnmpJhTSC7EkCRIFtvaseQICNMYX/M +8+tTgiqy4usXjIiU+Rdz3Dnp5aBfWr6ou4ZIzb8Wezk6f2CKpRjG3wLAg9EQllis +wKm69RYgFJolJMohotw62d1RgmA6BhYog8SA9EsQg3b25r+YIDklEn8bEPVS2Yjl +GbhiOeCcQp7byD5o+rMCAwEAAaOCAVYwggFSMB0GA1UdDgQWBBTgKoD3L+NtC93y +N+Fn1oXl5bIiiTASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFA4wULiS +85liyEcZLpjk0/qoQxmsMGEGA1UdHwRaMFgwVqBUoFKGUGh0dHA6Ly9jZXJ0LnBv +bGlzZW4uc2UvQ1NDQS9TRV9DU0NBXzQxMTVmNDEwNTc5M2RmYjEzMThhZTVhNjgx +ZWVkZjdlMjc2ODEyN2QuY3JsMA4GA1UdDwEB/wQEAwIBBjAVBgdngQgBAQYCBAow +CAIBADEDEwFQMDgGA1UdEQQxMC+kEDAOMQwwCgYDVQQHDANTV0WGG2h0dHA6Ly9j +ZXJ0LnBvbGlzZW4uc2UvQ1NDQTA4BgNVHRIEMTAvpBAwDjEMMAoGA1UEBwwDU1dF +hhtodHRwOi8vY2VydC5wb2xpc2VuLnNlL0NTQ0EwQQYJKoZIhvcNAQEKMDSgDzAN +BglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEg +A4ICAQBc0RLx4pwA7Ftf5crDwBXSlhgonNwOJELuMS2i8cMuIXLmGgLmbHQcJH/c +BPvsCCu8P6fzVZdfm/HHNKWee/hVQC2bzELtWlQkyVN8S7O+1VsbEmq3tzpaca7c +mkIC0Amf1LUGZ4gDE1wWvbkMlrDm1/wRD+Gj2MAUWCtwGgmu05JXldyCskgXnY2+ +wPf+RjSsK+dhPevTXPEVtn8ScjeYfGGRUmVl8Xzil4PamdiE2tApM996BXILucMW +BkQDnadTv3YblToZjz34Jc3t2Z3oJAvcn3665T79PNUenfhTex4czNakRccIZl5r +ufefw9uY5NlOZSC7g6SIbgb7J2+/0MebqtvXEd5FGfGDqYyJQDyYY0cGFbn6JAhM +TLo6rr+dO2UXwV9N2PkHcVM4AgBDq9rN9XGzvUKa9aafmZkq4XyqNBw6AUhD57es +Us6oBisTzBwLcZWAp7UI8yK5A0bacjBLd+ANud7cux1ljdX6wHVsEYEZgiuRWnLL +mF+sJ9Q3VwUGSEz7xzfiNl5f3VZoyi35WkYH7ITTISBazzrmn1yN3VWaLzvMdmto +R+SpCBwWzkDf1sAWItw2fOXRGaLchJG7lbHJCd/KjWkr/bF+kMrxilrWcMSOzlQl +0bwdz5dQoItrktm/1TcFEt7GTL8MOR3Yk/12cSCXX9yDejN8KA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG4zCCBMugAwIBAgIEWMKVozANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJC +QjEfMB0GA1UEChMWR292ZXJubWVudCBvZiBCYXJiYWRvczEfMB0GA1UECxMWSW1t +aWdyYXRpb24gRGVwYXJ0bWVudDEfMB0GA1UEAxMWQmFyYmFkb3MgUGFzc3BvcnQg +Q1NDQTAeFw0yMDExMDUxMzIzNDlaFw0zNTAyMDUxMzUzNDlaMHAxCzAJBgNVBAYT +AkJCMR8wHQYDVQQKExZHb3Zlcm5tZW50IG9mIEJhcmJhZG9zMR8wHQYDVQQLExZJ +bW1pZ3JhdGlvbiBEZXBhcnRtZW50MR8wHQYDVQQDExZCYXJiYWRvcyBQYXNzcG9y +dCBDU0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcIlailWYtOS +EbPsYeY7Q/0Z336Mf6L0g960CSD31EHswSXPw4W4tMcc9Zd1GSZ1nkyFPs0tyAJx ++rV3xWK8DS4vFbcaWWmyIiZV91A9jaE6Ieu8iyvwAJUYOESxv9xLF/cyHG499UkA +lnwQMjovWkLs8ttb/k0dBTN2/Y+cWLKCv/5/gw2X1lZFtkpYS7Cy+rwyVJEsZks+ +AkMHKUN/RsqpmY4QExyKCVTebkUy5y+cCR4iSreONByOP91uPVfreq9W93ocMv4z +USF4OwjKBi4rOb0XgY9wXlmvhS9rOmNKmdcL6x4F/XDHUqmPQzC621QUmBOabeSz +Q7KYjfgYfzqjwDkaeMdoAsmOgNPSP0LVC1ZMO2BVed4aPw9WCLfsoWHbqinplgMs +nJFbRvadGW66TlMYnxJ4Y5dysTm23lcw9V270pOgHoVQjJ9mvBZwsfuM5ArwvApr +mA2CCkShZHmLgbTGl3fxQOXv6X5FIe7plPGnJc9Zlq5+rxnr76ijr0c2z53v2S/Y +8GGJPHQakMBY6/ZrM0JA7pxpBj7exkruCklA7rZEB0ZBF0bjxww6G3LNdphnEPcM +DAa6gm09aRYHQutIi/M+cc5BtWmyOviHRALOF7zvseLl0wbjv6YJfnqpdd09NPlx +RVje18OlrZ2QeWt0rSs/Ye1kAYkyB1UCAwEAAaOCAYMwggF/MA4GA1UdDwEB/wQE +AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMDYGA1UdEQQvMC2BGWVwYXNzcG9ydEBi +YXJiYWRvcy5nb3YuYmKkEDAOMQwwCgYDVQQHEwNCUkIwNgYDVR0SBC8wLYEZZXBh +c3Nwb3J0QGJhcmJhZG9zLmdvdi5iYqQQMA4xDDAKBgNVBAcTA0JSQjCBnAYDVR0f +BIGUMIGRMIGOoIGLoIGIhipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9D +UkxzL0JSQi5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMv +QlJCLmNybIYuaHR0cDovL3d3dy5pbW1pZ3JhdGlvbi5nb3YuYmIvQ1NDQV9DUkwv +QlJCLmNybDArBgNVHRAEJDAigA8yMDIwMTEwNTEzMjM0OVqBDzIwMjQwODA2MDcy +ODA5WjAdBgNVHQ4EFgQUhJNdoxBRtDBMLMC6CNftCPADhTgwDQYJKoZIhvcNAQEL +BQADggIBAI8tLgHqpRDWLuSObGpff5nA7rTmKW8/SZlS3gYCWFZ+vytFgqHqw2A5 +Ij6UDNZEgldkN46diZuJDd1s1s06kN13J4oTWOcmluBoJPAqyWAWJDMyWUSohTeL +bIbKjP8kGMCrEmgMwy+ujJcNC3RMACbNYw+O6epDdOCEa9DGl0NG3c+/ZHayXj7J +54kspSaceFEW216cvi71kKitZVVaJmGFJyad1KXptfWIOwcjojuh3KPWQmuQQwoW +nh6eAgjuVlsvyfoe+/9nq5M6y9LoCtpTsZsH0cHeUjGexxvJqXLzAWBoEYmpMqQj +gVRG2EvmbU/pX6wId0KK3ifRKTVDHWVORjWjR/FAtakeuWF46q1KKZN5+Z27dqvg +mFUgIIFg4KAo9e1kGpUDKV5KVg/BcdL0Tiems4j3zfqNsWeqPbWwbcaJ+mTHCN6+ +xS3bD3wJT5c04ocS5RVtLN+TPgswNbnyTYJ4tVVq5wd4S39aw4fG5if88fpUe9Ga +Tbvq3tvfSy0VrVb3lLL8jHEepwX0L2ym+lfzNdmYQkqhMNr0ZjlJoVZgANMG8n55 +5ENiTU+6MkakvOweEaoNvbLPHnuN/Blu2vok9X7CKFF/RY8XdZihV6dgrEy6WnnE +ge5lWw/DtRm8NIGrmhRd8db8fraBa/in6amUYWRXp83e5ez8WfYE +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG6TCCBNGgAwIBAgIQG0uPKJ8aIAGE9/Wuuxe++TANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCS1cxHTAbBgNVBAoTFE1pbmlzdHJ5IG9mIEludGVyaW9yMT8w +PQYDVQQLEzZHZW5lcmFsIERlcGFydG1lbnQgb2YgTmF0aW9uYWxpdHkgYW5kIFRy +YXZlbCBEb2N1bWVudHMxFDASBgNVBAMTC0NTQ0EgS3V3YWl0MRMwEQYDVQQFEwoy +MDIxMDUwMTAxMB4XDTIxMDUwMTAwMDAwMFoXDTM2MDgxMDIzNTk1OVowgZgxCzAJ +BgNVBAYTAktXMR0wGwYDVQQKExRNaW5pc3RyeSBvZiBJbnRlcmlvcjE/MD0GA1UE +CxM2R2VuZXJhbCBEZXBhcnRtZW50IG9mIE5hdGlvbmFsaXR5IGFuZCBUcmF2ZWwg +RG9jdW1lbnRzMRQwEgYDVQQDEwtDU0NBIEt1d2FpdDETMBEGA1UEBRMKMjAyMTA1 +MDEwMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANadUfNwpFKRWMjr +JEctYksFgoCR0kTbx/PiVLd3qaAjPQX4QDGMFV1K/5NDEp663pf+9BKGxKqCOiBz +su0zCxaYWRUctUk8nCmmH7CHU/wCV/E7nvJfUMT0735Ap5BaE8bckGSUqEfFkUHf ++t3n0naRXmEa/nxZUZRIRyWewawyBghNJX3aOouu+lSoS2OYGKCNUdJPzN+z5ArE +qEFV+gJNY7SYEEV3E0i1xJA9EZn3+iBifVre9edVgcmrIlmRpFWZczQ81sWXDEeR +BrdmY2jsu0ViNXB9RXPhi2Ze6EUIa1VEX2s9rwBK3L7KjEaI3JEepE+EYmpwy3GI +LsiiqYI1BSe7ncMZq+qM7R1BEsautWH72otSjt/K6L5AovHGqCRlg7jn/8dbSUNT +2ZF3zj1/1Oio4H79hpc3I3ngXNStWaNZfyw508i6BSquUemjfaD/l30cHeQWNkPs +JHHOXAq5sOaZsAiraX1Rfn57HNo+eSFfU4xAUOQTViF+v+JkrZU6Yww7dLNcXtHI +Ts3i35wXnnIJJgHCuwbc3bjC70rWJ2pfr+NB099pWPNy80BxxiyuVJoSzHhDj1hn +ebDCQWlxl09JR2naAM8ne/7brO2vZuc3vtv0ffhsZB1CbgO1nxYF59AgCFc+Vzul +j2HY0BrxOyuYcOSOt+JmqXjZBOCRAgMBAAGjggErMIIBJzASBgNVHRMBAf8ECDAG +AQH/AgEAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vZXBwLm1vaS5nb3Yua3cv +Y3NjYS9jc2NhLmNybDA+BgNVHRIENzA1gRZjc2NhLWt1d2FpdEBtb2kuZ292Lmt3 +hhtodHRwczovL2VwcC5tb2kuZ292Lmt3L2NzY2EwDgYDVR0PAQH/BAQDAgEGMCsG +A1UdEAQkMCKADzIwMjEwNTAxMDAwMDAwWoEPMjAyNjA4MTAyMzU5NTlaMD4GA1Ud +EQQ3MDWBFmNzY2Eta3V3YWl0QG1vaS5nb3Yua3eGG2h0dHBzOi8vZXBwLm1vaS5n +b3Yua3cvY3NjYTAdBgNVHQ4EFgQUbBTC9VSptj9F8yMzn3M+xItrHWswDQYJKoZI +hvcNAQELBQADggIBAK2OOoHxaN23tFbxFYg4yk4pE+7zDdnMKDJMdyoatQrTgnNQ +qB2GQsxQzwh8P4fIOto+pgXUXLrHXCUT/96Y4jE8OtUSONutBK0WOukQVXpi8WDa +HHWtmw48+qdqqC3o6GmQIYvmgvwF3bi5SGF3T741F1voM0GuOO1TL5gEOB9SkY9t +Mhn7z/95C0BflI7NaLIVCwpisil19KS8rQIU7BmGYxIBN2OE1BqeD8N+AIybzDL7 +jntLro7RpnsMsNuXz6Mzakn5alyOt95kkSD6RsYNVUTrmrrEK1zujrdLcCJd0xC8 +zl89oJdekRIaFTzsBB3yvr12qmiARX/O7wwf/NYPiNjU2xCS4OFDy9Q7Zj5vglDQ +6cCWscFe775pT09xOOHNjH2N1IdIM7fHMRN3JLl0euk+bBCMH+hTvcAHRm33GclP +cERFaSMPk1SLCBO7HMi52Zdy9uYpheArDpQwBfiDypDz2lvJh9WUZUEUu+yFSzhP +vug6+nC+0rfMzGUxYirp1Dg8CpgTIZMoHF3I0QwfnuSDCAVMN9XmrUOPlRSml74K +DirUQl91AMPfmYmo1mzaynHsDAugxvbgA16IXfigBvekpZT7oGGMIsGzDlskf/Q6 +Qc38H0uKjmQ4qminPyS48Ws1aA/J180em9X9eYToDD0jqEU6DLrx/w6nsNHh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG7DCCBNSgAwIBAgIERIg0WzANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJz +aTEbMBkGA1UECgwSc3RhdGUtaW5zdGl0dXRpb25zMRMwEQYDVQQLDAplLXBhc3Nw +b3J0MRYwFAYDVQQDDA1DU0NBLVNsb3ZlbmlhMB4XDTE1MDQyMjA4MTExNloXDTI1 +MTAyNzA4MDMwMlowVzELMAkGA1UEBhMCc2kxGzAZBgNVBAoMEnN0YXRlLWluc3Rp +dHV0aW9uczETMBEGA1UECwwKZS1wYXNzcG9ydDEWMBQGA1UEAwwNQ1NDQS1TbG92 +ZW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPeUO2NjQrV7TG+U +C7Kg2RrMiMMCJn3EkphcoYY63vpuzEwDePMaO8kuSn9leJ0JDy7Y+iRo9fwfp0Wt +TeL04Rrzw+1RohugcIuO5zLY4y5whHYBgCquaLugP4JPUdCIe5aolrh6qjpSVzwG +Yur6uUcSpETanHkDAdFqfoxBN2saX/d6/zucL3/um6brJSsQ43wRZcjLx/dy8WKl +aBYqu6WSRC2Zbwm+rIowfeigEhhzbxDGbPvMzCzUkBzGuz+FJ7aDZYTK7ySdEBWQ +XF/y4Kyxqyopduwl1gmIfJdz0u9O0ZwomJ4PXLVlQg4+NlTPjpvjduQWfHfucpG6 +63yCvHfbo9qBuc4rfJLe6h6Ozw72lOl/+WJho0mQm5IaOqlwCSFzWItyt7japR1f +/egslukaahCqXCBUUloW3fvv7oEa8xf7m8illAzt8eZAffTxHhQpOcM/UZdH378J +oLAQUogHxXVWvHNQ+FgRFp0dhZ3oayF1aLBcZDaigmTORni/JynIWrcSrTDmSnCz +1VXWz9M1FD9wM60+V6kheTa35UgrrdWAQmgY/nk0hCEy6BDAdH//CVZMANDHuPoP +p7xTzYGv+iZGUiC4WwoQvs5H8a2rsDQCv+RA+VTU/jmzrsaFI8MuDWN3EeCfeSgs +ENEerzK9qgyL29FQuNK6QDYwVi8HAgMBAAGjggG+MIIBujAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADBLBgNVHREERDBCgRRjc2NhLXNsb3Zlbmlh +QGdvdi5zaYYYaHR0cHM6Ly93d3cuY3NjYS5nb3Yuc2kvpBAwDjEMMAoGA1UEBwwD +U1ZOMEsGA1UdEgREMEKBFGNzY2Etc2xvdmVuaWFAZ292LnNphhhodHRwczovL3d3 +dy5jc2NhLmdvdi5zaS+kEDAOMQwwCgYDVQQHDANTVk4wEwYDVR0jBAwwCoAIRcAk +WL4QrdMwEQYDVR0OBAoECEM95Q4/7LLHMBEGCWCGSAGG+EIBAQQEAwIABzAUBgNV +HSUEDTALBgkqhkiG9n0HSgMwgagGA1UdHwSBoDCBnTAroCmgJ4YlaHR0cDovL3d3 +dy5jc2NhLXNpLmdvdi5zaS9jc2NhLXNpLmNybDBuoGygaqRoMGYxCzAJBgNVBAYT +AnNpMRswGQYDVQQKDBJzdGF0ZS1pbnN0aXR1dGlvbnMxEzARBgNVBAsMCmUtcGFz +c3BvcnQxFjAUBgNVBAMMDUNTQ0EtU2xvdmVuaWExDTALBgNVBAMMBENSTDEwDQYJ +KoZIhvcNAQELBQADggIBACCRnJ1KDQzuSWG8o8vHGJNG/TuY39PO+t1uqygUEDgR +OA5iJ25AZCclRwnQx50SOI4rHGz012spc6mJyNuNtVr7SIw3/sZOJJa5Ja2ZkHNf +v95ncavAlgh2iovYMZardzESsXgAGIWWMmV7a4FUI2WGZrmesMwHY1CGxbQMwRRg +npDNE57STTpzTX9dJ61v3ij6tizDzMw3QwyI6+rEBZ3U34lnJGaEdxTABkUpJRsj +zqyhu05A3frE98McFassgyFLE89YILoSyccWH+gzfCGCa/F1RSjxuo92UcxJ61/G +7KQHuQamvqvWl6e5Kd58/bI4B4D7PpDqNGNv0LrEvL6DXEDubayAZUokDdsikJv9 +00DNM7yM+1ZgK/Gbz9yte8VqvB1wUgwKNQLhtHgcFWgesVw92/j1u07dXkaxVUcH +zpwQZrh/l9A4YuRYcE/gExu+Jc8tVYY+Dua7ZYnfHs1dJz2hSv+YvIupitXMnZxg +cr3eZqAyizkUPT6Yr9fK50XRc019UulbC/KT96ILgcbs+xG5kZueyj4XdV0mxMtC +8jSlnXqaoupRRVtUUrF+duNxtVY3egOnBmf0FQYBN8oNGj6O00p8FUp/kh260HQz +x6G2Bu+qnxswZ3GC7i/FNx3Ur7HbsAG5AoEvjyQKqnhcf/R/wAfnBsOj96xrNn/O +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +8Qqd5w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG/jCCBOagAwIBAgIERQqQMzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTE1 +MTIxNzE0NDE0MloXDTI2MDEwNjEyMDkzMVowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBALZD0U3UckregSd5BSEQ7xU/J2gNt6Q6sCUg1NXp +msfuCpy7hpnxYHVYX8hnOJKrIhLsMJBb8A4neKcG/jfUk7EvBftNt5OEaBq2f10K +jFZevueA1Zoz2W9MQuN/BVQIJgfLe/yN+cccSCRgo/6AcG48eobLbocNFhPpHhNy +rid/480dIZWu4EfWxdkj0X7Ia0prdGmybIj1CGQyLvHC0CP+A2jBrsnQ2mCb7vSi +Ny70Igpc2b/6KVXW04I5n0UEkZjbr9pQM+KYL+fScidZEyBCfzGkw26goEjpqdUQ +l7Ns/QChGEqKAT9HyC0R7qT10CYqN06Iv2eEYiSKqz4wOo1dSFORvcqLomCsO8uk +njHvDCldu1IlC+v+i8rd+OfJMi9IEq9aYILM7I7wttk/yRYuzVtdmYGYFt4F+W+d +OXF+SF+l/6YMKrOjkOWyXT8b8I/7WRlWRH9bGPgiLBYd28O/dhBefruvYtluW/It +HhVCBj0ZQ7FhKQxsnjUBW2dJnqKfRaabc61pjzGseUVIS7EP/L6vD7ELpMp82FOt +s6cCVdMCbTe0VmJ8Y8DoOBakggBlb5hxXHIjLKUXHe5y1XgusD79KYsZjREQ/GYP +hqbcEdnAUa7udcJ5iQiL5euMWM2Ao6unwN1jwbWGX/FjaVhyUdWSRpqS2RV7LDgn +1fnRAgMBAAGjggGyMIIBrjASBgNVHRMBAf8ECDAGAQH/AgEAMBEGA1UdIAQKMAgw +BgYEVR0gADAOBgNVHQ8BAf8EBAMCAQYwHwYDVR0jBBgwFoAUyhUncxwsTwZLP5ro +iL6mIrA+Ws8wHQYDVR0OBBYEFIXmhVdpwKfZNSe9ik3TmzkUiNV0MIIBGAYDVR0f +BIIBDzCCAQswfaB7oHmkdzB1MQswCQYDVQQGEwJJRTEmMCQGA1UECgwdRGVwYXJ0 +bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNVBAsMD1Bhc3Nwb3J0IE9mZmlj +ZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMQ0wCwYDVQQDDARDUkwxMIGJoIGGoIGD +hoGAbGRhcDovLzEwLjEuMS4yL2NuPUNTQ0ElMjBJcmVsYW5kLG91PVBhc3Nwb3J0 +JTIwT2ZmaWNlLG89RGVwYXJ0bWVudCUyMG9mJTIwRm9yZWlnbiUyMEFmZmFpcnMs +Yz1JRT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2UwGQYJKoZIhvZ9B0EA +BAwwChsEVjguMQMCBJAwDQYJKoZIhvcNAQELBQADggIBACuzpwFHOHu+yfnMoy+5 +mGrwPVNJ3BNlRi3gcPmrK12QnomUXZs+gSvNh3wxg/p38I/NkXiHLFOEWyiXp01H +rGPlnzpmthgiRCOC5+8zKjsPGPb02/9O1N3MwjAHhvb500uE5kB1Vn0uRQsrF6/N +/8SzfCO2s0BWg+liKHArrbE12JYfpaDoEdzBDkP2c28lsgeG27hm7kyNZ1n1xpRY +DoXTtTz5rPNfr3PTSk2xO7K2m4JpWxw60HiAKL9NQhEBYUD0vnes/iFvkfyhgU7W +m6S3Iye27zBL4azfNoV0DzqO6eCIr2CvaWmEk1r8XXV/TL/RKdkg8mok2oqdMe5o +nHjp4ILyNMOPxg5V6dis/x22k6I4dmCstINwSxJ67uo8kmKSo+58PpnZ6SKmLkw/ +mv9ILeY+U7AODyDXUHF4ZyBhKjmZ9kKfD2js/WPruj/D9IEar9xT3TaXNZfjgtAr +rakDR1eTuFqMI1RvSzYPaxl00qQHJtwxAt7IsMl6t/YurFOa52tj9LkUB72XTC74 +oV1RSlH7iZ0p6nvd9SkOqInw3kTYZaa0K8HEYviOpvmwJW74zYutCzxbN+7M7YVh ++qupRQzqx/+7W4zHnwjX0HjSk7Y4aen+cAVUrMGH+fIgvAFGxzSwqzu6NteX+U9V +vnDoBC4ew+IlE1F+1ugFINv4 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG/jCCBOagAwIBAgIERQqXMzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTIw +MDYwODEwMjQ1MFoXDTMwMTIxNzE1MTE0MlowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBALQp1xF4U/Z4nVKicbxTGE4oqaMqayQLbTl2ngQ3 +wWImv+kEVZkxVtS6OPziWsRVnAIpPham1ykA61MmTmqYOZA09UxHHsP1fiQfOOfi +R8WAwwu8LxTwebqlcvjl6Ls24m7p6CJqIpfk+48VT/U09KRDf48tu38vEhRHsXCg +7EbhWq/IQ2MtA1eOULzKhm0CaGCd5u+Em7cQ5+xFluqMhLFkSwLFcxdcIlGAvSig +/WCJUEvm+1CAG+vEsIqajFUX2aKYYxDc/nG42WHKvdxi/0L6EZ9++W3Zb9naLL/R +avNp3vdD9PVoooTkUdYQRqY64wVyrFf/r/0KuSRRKGfQg1dR17Oyn+DaGkUa6LYq +wGWrEzITfjWJMwbTKJO8uDJUfqbH1e3KoM0TUf6Tj6OP4PtH+rtcskZdbr5UFH3p +dKSGFL+34uieuJLWgawdCFJUMiyZlSc4akVcfkqf9xN4lc+bPavt/awQBwBeghjZ +Kw+2/aVqeGYrxxNzs4h6Roc1iLFUtoOndgYBhFcOty8FyYGt4ZqGRiyfA+QBBdvE +05XP9umx0vbwaoQEW8kdmchGHFiT8w7u86VGvuxqiycP/hDcnbK8BQJlJZNVAF+g +VmEdqPGbElHjCkSi8+UNFBqUn1K6SGfVBclVqUWMipzaQJSisAKepRfuHXmnSTLl +YHhXAgMBAAGjggGyMIIBrjASBgNVHRMBAf8ECDAGAQH/AgEAMBEGA1UdIAQKMAgw +BgYEVR0gADAOBgNVHQ8BAf8EBAMCAQYwHwYDVR0jBBgwFoAUheaFV2nAp9k1J72K +TdObORSI1XQwHQYDVR0OBBYEFLB5Wuv3vt0D9jJac89iiYZA1ijkMIIBGAYDVR0f +BIIBDzCCAQswfaB7oHmkdzB1MQswCQYDVQQGEwJJRTEmMCQGA1UECgwdRGVwYXJ0 +bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNVBAsMD1Bhc3Nwb3J0IE9mZmlj +ZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMQ0wCwYDVQQDDARDUkwxMIGJoIGGoIGD +hoGAbGRhcDovLzEwLjEuMS4yL2NuPUNTQ0ElMjBJcmVsYW5kLG91PVBhc3Nwb3J0 +JTIwT2ZmaWNlLG89RGVwYXJ0bWVudCUyMG9mJTIwRm9yZWlnbiUyMEFmZmFpcnMs +Yz1JRT9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2UwGQYJKoZIhvZ9B0EA +BAwwChsEVjguMQMCBJAwDQYJKoZIhvcNAQELBQADggIBAHfpGuYhbIYcgqlW6PWl +ACR4cNcP0gxUPn8nnAnctLahixvMztlfwLnNzZci3aXPDG4xa6qVrZS3T2A+VRSS +wckYQsoK9ZRMPOV3FRhJCIxC2wCFVMGjrnSnKN4avh6pnvAzGY6XJ//LqUY64DR1 +rbZBqKsdoT/u9b3cY0s4ubcmn9yKCNKRevVqLov7eW+loMXiTOSmw6EKjHmAe7FM +lPLH6zKTDvhT0DxCdgIomV0ajMWTZwuiTiI8TbcGXeOsdIAn/P+ra2HTZ97t/Umk +SsIAnMwSso/lQkzYwfXbl/yV8QWsKSgQ9raCFsXJNon7H/8IaorcJtAcI7WkXmVy +D3++mrI4/XD04uC/wrVmc5oQsrufDPALyQ5MwSmGZJxglkMjkOYPB8pT5LbLyRjq +YTIouyz4DvSVFZldQiMU1HThUmHDV4LosW2PvBs+yTVthoFBItbTxZP4HEw31+a2 +l3KTf2GU+KQrr9jWqzTKwdCxBP9yisuCgi6F2+ocF/oelJkodI1dD9112MbzwYX1 +YPuUfI75hjtECc4SzkfHdFfeBEGQWh7197RBeOTUvLVF90V/pW+0y5f6vx79tCcS +7+bQXYGtS6ks9P/j1XwVRnJTMMwufy5c2GcMHf9HIyPfXe+dBAS05nLmc72T3wj2 +Peb/Wt7gqehl+HQEPg9UL8/K +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHBDCCBOygAwIBAgIEWMKVpTANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJC +QjEfMB0GA1UEChMWR292ZXJubWVudCBvZiBCYXJiYWRvczEfMB0GA1UECxMWSW1t +aWdyYXRpb24gRGVwYXJ0bWVudDEfMB0GA1UEAxMWQmFyYmFkb3MgUGFzc3BvcnQg +Q1NDQTAeFw0yMDExMDUxMzIzNDlaFw0zNTAyMDUxMzUzNDlaMHAxCzAJBgNVBAYT +AkJCMR8wHQYDVQQKExZHb3Zlcm5tZW50IG9mIEJhcmJhZG9zMR8wHQYDVQQLExZJ +bW1pZ3JhdGlvbiBEZXBhcnRtZW50MR8wHQYDVQQDExZCYXJiYWRvcyBQYXNzcG9y +dCBDU0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArcIlailWYtOS +EbPsYeY7Q/0Z336Mf6L0g960CSD31EHswSXPw4W4tMcc9Zd1GSZ1nkyFPs0tyAJx ++rV3xWK8DS4vFbcaWWmyIiZV91A9jaE6Ieu8iyvwAJUYOESxv9xLF/cyHG499UkA +lnwQMjovWkLs8ttb/k0dBTN2/Y+cWLKCv/5/gw2X1lZFtkpYS7Cy+rwyVJEsZks+ +AkMHKUN/RsqpmY4QExyKCVTebkUy5y+cCR4iSreONByOP91uPVfreq9W93ocMv4z +USF4OwjKBi4rOb0XgY9wXlmvhS9rOmNKmdcL6x4F/XDHUqmPQzC621QUmBOabeSz +Q7KYjfgYfzqjwDkaeMdoAsmOgNPSP0LVC1ZMO2BVed4aPw9WCLfsoWHbqinplgMs +nJFbRvadGW66TlMYnxJ4Y5dysTm23lcw9V270pOgHoVQjJ9mvBZwsfuM5ArwvApr +mA2CCkShZHmLgbTGl3fxQOXv6X5FIe7plPGnJc9Zlq5+rxnr76ijr0c2z53v2S/Y +8GGJPHQakMBY6/ZrM0JA7pxpBj7exkruCklA7rZEB0ZBF0bjxww6G3LNdphnEPcM +DAa6gm09aRYHQutIi/M+cc5BtWmyOviHRALOF7zvseLl0wbjv6YJfnqpdd09NPlx +RVje18OlrZ2QeWt0rSs/Ye1kAYkyB1UCAwEAAaOCAaQwggGgMA4GA1UdDwEB/wQE +AwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMDYGA1UdEQQvMC2BGWVwYXNzcG9ydEBi +YXJiYWRvcy5nb3YuYmKkEDAOMQwwCgYDVQQHEwNCUkIwNgYDVR0SBC8wLYEZZXBh +c3Nwb3J0QGJhcmJhZG9zLmdvdi5iYqQQMA4xDDAKBgNVBAcTA0JSQjArBgNVHRAE +JDAigA8yMDIwMTEwNTEzMjM0OVqBDzIwMjQwODA2MDcyODA5WjAfBgNVHSMEGDAW +gBQ5/q9BCrcuoamrX0Ew3Q1TYPt75jAdBgNVHQ4EFgQUhJNdoxBRtDBMLMC6CNft +CPADhTgwgZwGA1UdHwSBlDCBkTCBjqCBi6CBiIYqaHR0cHM6Ly9wa2Rkb3dubG9h +ZDEuaWNhby5pbnQvQ1JMcy9CUkIuY3JshipodHRwczovL3BrZGRvd25sb2FkMi5p +Y2FvLmludC9DUkxzL0JSQi5jcmyGLmh0dHA6Ly93d3cuaW1taWdyYXRpb24uZ292 +LmJiL0NTQ0FfQ1JML0JSQi5jcmwwDQYJKoZIhvcNAQELBQADggIBAEBYebRpX9YR +JKX4VedmEXJxzY+ZZLTOuv5pt8INCz6bN1bCmkzy94sTuV09EMwc79JaPnapF4zZ +uPlulFiOqfgWlbE8KkHLCqFXYo8sCiKMNS4npvmJjJMExe19EOPSc8nfwzGg9NHB +djiyaw1kpDYTysawxDTuRv91T06pKTMq0AUcpw0s3vt8gHwQ6GE4DIOm04RA9Fvr +QmWFGpOwVHaLW24dW77FLe+rPQ6Unhps7qUd6HafEN4MJSx65TqaN26CSrjRQUK/ +RaabSUtXimlMGI8CrNqo33bnAJq2XimZuVjKTJHFN/QHRM4P4iaFtQRNnZ8RuYBn +HWYRdy9KYlhrJh/inf9oNRClMmS/w3fTpA7rflrlCI00MftpAjt4b/EG9NitUoF6 +cN7nwpyckDpX7oPVFZ3l/Au7GoMfL+rnbkg/cmqyZaobUhj3wRTV7U9FHMbuYHVq +TgQ5eUoMlIic+yM5fRTqy9udAzUxLqdvvCY7oDV9UQtVI2mqcAaE8WqbwbmN3yRG +iKCJDZfViHOceawAGOfHbhYqA/PH4wNlaDtP1b9LqZsfHkJCoxiblKAgo13b+ipe +3ileUKvNXa/8LPY5RVs14lE4NYHSODpQ+HF8ozuNDrXeuXKPJd7s86uv/4gfsLdH +1KyaDdA91g1xpfwO+rBRA2EGJmiycAHN +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHBzCCBLugAwIBAgIQd+j2dcfYMicfcXd2L4My2DBBBgkqhkiG9w0BAQowNKAP +MA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMC +ASAwWDELMAkGA1UEBhMCR0gxGTAXBgNVBAoMEEdoYW5hIEdvdmVybm1lbnQxDTAL +BgNVBAsMBE5JVEExCjAIBgNVBAUTATIxEzARBgNVBAMMCkNTQ0EgR2hhbmEwHhcN +MjEwNTExMTA0OTM5WhcNMzYwODExMTA0OTM5WjBYMQswCQYDVQQGEwJHSDEZMBcG +A1UECgwQR2hhbmEgR292ZXJubWVudDENMAsGA1UECwwETklUQTEKMAgGA1UEBRMB +MjETMBEGA1UEAwwKQ1NDQSBHaGFuYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAIAw123rCP30kJxNG1fhKC3KMVTaWRFQAr19n49LGirIccM1Dve9yn+Q +SXPajBBfTNqOUqKDLilRhyji18l7L6lEdTKy+hZFDi37CBQttVD3xLkQ9OmQ5P96 +a9bTsJf5eSKUEU+dul2t2VJBkgeRUolhYEslPN6xUv9KdBIlgkwQbGJa2j21bvB7 +YeGarfTTcG1tvbOefCQuJlozbtKHa/yhl10afqhUo1UxlwJeawI7LnVSGwXd9aiF +MDhGxp3HJ4aDzgzm6GvOK5NWSa879vZhZCeNQSFt05WCvjflZJNbcW0ai5M2eZnp +bBCcJ+i0ep0uP1YIjysOvFOKu1ULRaJcuAmoIqL7LtLbdoXi6Gy3qK8KK6GRU0Di +rtuvsmhp2VToGNvnggLmMRz0WNoZWVoY9D8tXU/EMLFeyoC5NsqORV4GPDwlvfwR +0e2dhKDJIK/X7ABO8NUCxvCjZrblFpFrYu1k3gBI6KntrDEaKvN+YNabixAGlSDP +O3caKM113hmbP10a8VmHP56z98473NlQj/xc1p5GOt4ZFbB/6Us9YNzuSzpDP4Kc +1kTYZUvPFVZqtvOU5lzgZdnzFDCeiCZwYWQsS1VOpTA7FgPdpYw/IgOvFa1MVfVN +MaIxCgzwjiodIGG8hyLSIVbWgIyL5stQ8Ot4K3wS8JC/jdU0mrazAgMBAAGjggFj +MIIBXzAfBgNVHSMEGDAWgBR5X9s7IX67NjUAiYeVaEgQOHVoaTAdBgNVHQ4EFgQU +eV/bOyF+uzY1AImHlWhIEDh1aGkwDgYDVR0PAQH/BAQDAgEGMBsGA1UdEQQUMBKk +EDAOMQwwCgYDVQQHDANHSEEwGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA0dIQTAS +BgNVHRMBAf8ECDAGAQH/AgEAMIGiBgNVHR8EgZowgZcwgZSggZGggY6GgYtsZGFw +Oi8vbGRhcC5uaXRhLmdvdi5naC9jbj1DU0NBJSUyMGVJRCxvdT1OSVRBLG89R2hh +bmElJTIwR292ZXJubWVudCxjPUdIP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/ +YmFzZT8ob2JqZWN0Q2xhc3M9Y3JsRGlzdHJpYnV0aW9uUG9pbnQpMBoGA1UdEAQT +MBGBDzIwMjYwNTExMTA0OTM5WjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEXoy453 +I/ORmbD5NbNEWlOO9QQQUwFTsl+JWsqd/JDUQlxabhXC7wnEZTlu1OhAL8apqzG/ +zcYXEPGAjAQRkrXZGCxZpdHeiDXFwMId5ETqnCFsLOSt954mMgiQWxzuP7epcMod +LvIG0bfZKeQin1XCDhP/1Vv9DM2wwvZmz+ijGqTjuGeHO3Ml60T/4OZoEDJHIGau +frnJphqt8jgL7jfLAsVfWmGaH2q34jI69n419yLbUk3nmbGJ1alRF0kL8v4CMr2F +zQUW4OvVoQp3L9siDFq3aiG4RcgM1mjeg4FAJo01FCtFzDEsZBe3VFLwgoEiP3ZG +F8ufHe8iDjBX4UuCTNH8x40Qb1tQo75b7YWuY/ELG29QbQjDjubWvpvSiG1HlZ0Z +MKVtzoHUP9tObfmPeHMz/6mlXi+JoPNL03/cIZN2DsmIfZvH/4m0iwjYR7RxVnK+ +GlleL7xBb46wlsjjb4cBIbx937xEwNbxLKR06w7CRP6tzSQNILkX9T81POUnfQut +EB6jzdx3wLE6a7UW2tbFITbqflgjccIWRSA4g6VRtD1RBcNG6b6I7cys68kD+445 +ro+JGaA0xqNckLNmliUGuaETnCumBuF8jr/2d7iGDqRPFI4dOy+QeEnnuXbIpWYD +p4xAoxoP1tmWC4B2S05/taS51D9jneCM8hg2 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHCjCCBPKgAwIBAgIEAJ6xATANBgkqhkiG9w0BAQ0FADBEMQswCQYDVQQGEwJG +STEQMA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQDDAxDU0NB +IEZpbmxhbmQwHhcNMjIwNDA2MDYyNDEyWhcNMzAxMDE2MDcwNjMyWjBEMQswCQYD +VQQGEwJGSTEQMA4GA1UECgwHRmlubGFuZDEMMAoGA1UECwwDVlJLMRUwEwYDVQQD +DAxDU0NBIEZpbmxhbmQwggI4MIIBrwYHKoZIzj0CATCCAaICAQEwTAYHKoZIzj0B +AQJBAKrdnbjb6cSLP9TmrjPJ/AfLMI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKuzaEq +5qOA5iiB/y8tgsaFKKpgVlg6SPMwgYQEQHgwozGLYDuJ4jJxRawjTMWUy92NPfkW +EKg0QcrqmGO8Le1dWqglOqEKLvHJi5rItX8RF6cr8se558GsTXf8lMoEQD35FhCo +NEHK6phjvC3tXVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK3Ag+Z5hAULde +uuXdKAm9Y4AW9yMEgYEEga7kvdgu2WRaITIunExqk4Xtn3C12RbBtDti7vTQCY7/ +Ox944tDUjVDRaHuTuX1ffG1QR0BqXmiLNSIJvLn4In3eOF1WYzLswOq/qc94Iv3y +CfcAJKV7GqAAxVuIH4ERstzeSUpfSF5bykvYiidjrtHKKy+o8FQGeM0eDzrYCJIC +QQCq3Z242+nEiz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZhGX+s +EEcdsdOBCF3a3bWHloKcqQBpAgEBA4GCAAQQvQy0csozD/hMDOB2aV3s31p+Ugva +xew6MW08yjUBuyDdw5hnOkttKOH8Ifj5KOdsTTqeltb/wXnDM6S5S7pseYBxTSwU +Fl+DfEFszgfCOBwcPbBamj1tj8tcOARXniSmE1QWMRtAHbrtqLsp6ld9vNc12cbf +D2DRFxUIXYT4OaOCAewwggHoMB8GA1UdIwQYMBaAFIdYnCnZdpz1t+pmGjyMpfyi +aL6UMB0GA1UdDgQWBBTWn2yn8uCrLFr68Z5pcmg2TTHTkzAOBgNVHQ8BAf8EBAMC +AQYwKwYDVR0QBCQwIoAPMjAyMjA0MDYwNjI0MTJagQ8yMDI3MDQwNjA2MjQxMlow +FQYDVR0gBA4wDDAKBggqgXaEBQIKBTBPBgNVHRIESDBGpBAwDjEMMAoGA1UEBwwD +RklOgRZDU0NBLkZpbmxhbmRAZ292c2VjLmZphhpodHRwOi8vd3d3LnBvbGlpc2ku +ZmkvY3NjYTBPBgNVHREESDBGpBAwDjEMMAoGA1UEBwwDRklOgRZDU0NBLkZpbmxh +bmRAZ292c2VjLmZphhpodHRwOi8vd3d3LnBvbGlpc2kuZmkvY3NjYTASBgNVHRMB +Af8ECDAGAQH/AgEAMIGbBgNVHR8EgZMwgZAwLaAroCmGJ2h0dHA6Ly9wcm94eS5m +aW5laWQuZmkvY3JsL2NzY2FmaW5jLmNybDAtoCugKYYnaHR0cDovL3Byb3h5LmZp +bmVpZC5maS9jcmwvY3NjYWZpbmMuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25s +b2FkMS5pY2FvLmludC9DUkxzL0ZJTi5jcmwwDQYJKoZIhvcNAQENBQADggIBAA9C +ZXlAaFjIFSBS/7eheaYWFEyusE69Iu/RPMmRgWVolSxhd+yNPMZdelpZ1A+0pfxM +kuboxybTeF5PxshM6ltFYjS6ir8WFghI8+W62XbhYx3KEBzDcVsUgTW8HQnx1dYh +GvBLfBrO/OytkxHOu3rOD7do7Lg1YT796JiOnnQqKLgv+7TyzOEFIXGMXgmXK+a5 +v9rydNjFk0Ws3eVa8BUIidwxGynhKVF3+ZLhwU4a+8ZJfj8oENm2nPm3TkMu8Nlq +BtJDrcgrhh6EMqlLSxz4/VqFSexrKXjkdP9E5sVyaoZBS3crQMT8vDiL8YU3KQ3A +0xsFIC4XwV6htY9eOWrE42pKwdHCV3TJDAoB23MIaUGw/FAXHG+ocNRdo1XrrHAy +0lkBNlHPvs5ZTpg+sSiGWycSCZFG/dKKCRBXxcv2cn5dxgqQEnqHQoqRAFVuyUAC +WD+qiNbvN4pQ2d1ZvjEF7imDor7AFrYzsh3uMROOgyS2R17318w/d7IDXi+A8u01 +SMtZrOnQPo45PqSy3T0UYBqBk7ovh+byJrpJB80HxZE+ZFF9/mZ1FboAvRhmQIta +wsRkTTAJVIZTRnTXZaX05K2hL+YaTUbUwfNnRsKmiAalaAPBj37oUtMEBLwBQnT4 +YclM2aMYo3FJKHbA5Jq81lMj+a/xyMrUG893288T +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEjCCBMagAwIBAgIIIqjE5ukqPyEwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8xCzAJ +BgNVBAYTAlBIMQwwCgYDVQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNjAeFw0y +MjA2MjMxNjAwMDBaFw0zMjA3MDExNTU5NTlaMC8xCzAJBgNVBAYTAlBIMQwwCgYD +VQQKDANERkExEjAQBgNVBAMMCUNTQ0EwMTAwNzCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBANJAgb5swU/j+0s1q23xp/KPNzAX7xWia2f/LdBHc6PviUK3 +ul8vka6kaf51fi4zYqkHYQtEHzYQ9Six85c5oTLEvrwmw30lttEkgTNv7N38a9zQ +Eb5PKRL/BmPLcNmTgoCBPdPzLy5v7xhIgfeEu9L9LRZbFp2FlMRdgy266/3LUy1l +QrV0E4Jd9RZLV33NwkjfxKiwcesL7wIRKOkXK3ehilprAOvA4Hrwqd9lkmhIBaS6 +DbAN3aq/eTZB7A2lGuzGFgrNVqAZTRFhJxuP6q8K6FGuZfFGTHlge7sjfePb0KKZ +6c2oRsNil2EI0QVVtXhmpWyHxqXZLRiI1iYPqQRZr7FGiLilOSHS1HfRZ3UYlWQS +4B6yWSsnrWKj06UHd8S+4/NItHiLt7vTjWvZApaKezZA11+Yt4gk7pRi4bLUBbjB +zn19vvR5wpeVU3kLfX+opvBdrUz5W5KiGLQQ61ud9xLQmbaVKgfxItIelbk06adl +51g5exkf0BwMSuZpA5oNcAMwireNA4CXUrt7Z2w/O72axLjPAWLvtQ4BxS46l/7T +HR5z8Ss9p7Tfh/1+k/cPktwVTQvO9aOcljGytQx8e5H0pj1OPUh8N/xju9+Htxyt +VYFAlmHRX3f/c4pNU9I0JNmZSQYH6/2Ck7L7XCac2KGUd8qI9vfLGr4A+xbJAgMB +AAGjggHIMIIBxDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQUoUNtuE8cE05Js4faVs7oARAtT3MwXgYDVR0jBFcwVYAU5WXl0gc3 +WY49k4/DWBZggEOZtOehM6QxMC8xCzAJBgNVBAYTAlBIMQwwCgYDVQQKDANERkEx +EjAQBgNVBAMMCUNTQ0EwMTAwNoIIItklK//mqVcwKwYDVR0QBCQwIoAPMjAyMjA2 +MjMxNjAwMDBagQ8yMDI1MDcwMTE1NTk1OVowOQYDVR0RBDIwMIEccGFzc3BvcnQu +ZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNVBAcMA1BITDA5BgNVHRIEMjAw +gRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBopBAwDjEMMAoGA1UEBwwDUEhM +MG0GA1UdHwRmMGQwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmljYW8uaW50 +L0NSTHMvUEhMLmNybDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5p +bnQvQ1JMcy9QSEwuY3JsMA0GB2eBCAEBBgEEAgUAMEEGCSqGSIb3DQEBCjA0oA8w +DQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIB +IAOCAgEAZhKKbn3m9M2eNpWWzrfa/5L+LHfnri+fgrVMFuui5FxgOgFdI7vTciJI +33duEQqNtmLMqjsHS6wNuVaA7v5a016C0pWTZ4U3/xb29F3CdwhZLGvCfiOX7Ucv +B6MYs+tnggi8sNTJR8bsK0w/F/v9uwbBAZBWlVY+Pfw7pTqNLQA9i52NFkd0W7LH +WdnLL511ZDY3jiRGQXKr270cKnBnxtfhzsSXgQtXq/aZ20NSab7lIBjTYZ0DKH5a +qkRFx8virSYDPeRLJayxBqP3OiipdMiImXRfCcnZ7fX6sh8tYPoKIKM769h6Mttd +K+N+YbzVnldJjwhcJ/adeR8sWoMt3Bn3mqvZpwErHypn7CHJJDDmDGFUYHWmQZOr +Isq2ovcHKWBSTDawpoZp+kFdS7TT9oNMyO9ZGaCGNAY60eg8AHpLpk5vko166Ael +W3Ylm4hGaT1oHZaK3/4YLcCc5OMO6DgaqitbuRrvoYVkqopwp0AThQoALiySdkjW +TagrxnAXqHSlvCi1+Dm1C+cMRMkdjuyk1SuZGbtSQfmPX/L3HbB8XwdWpxYTzcc0 +hUFiXgx5CpsfFFErzrk89pJJwN5UiygghFxva3n2Z6hzh+NSDno/HUUej118qpII +9c950sh7CVKPFpgSQN/Qi8z2GTU1jYpGmY6G6+iihpzsM92FNvA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHEjCCBMagAwIBAgILAMjjoPACCYGRgUQwQQYJKoZIhvcNAQEKMDSgDzANBglg +hkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMC8x +EjAQBgNVBAMMCUNTQ0EwMTAwNTEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDAe +Fw0xNzEyMjAxNjAwMDBaFw0zMDA0MDExNTU5NTlaMC8xEjAQBgNVBAMMCUNTQ0Ew +MTAwNTEMMAoGA1UECgwDREZBMQswCQYDVQQGEwJQSDCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBALHBCMmweH79U+f7uUhg6R4ZGRIJL7KsBkag0YanKqO6 +83TMjh6+CkBMIhc3wpD5cJlQOhY3TeVzPOo8bJ3AI+CxFxN30i7ROxdb9aCvh9rK +YUQeQaoLfiQc9iqbhOhGdbNJktXarx7i8KopzliLLGzLCbAmpPtLiWoM+O9SSsnz +EBdQoQmRT5eY1k13cU4wbcI8OIrrJIfDxw+EYe+yWqyN4SbX/o6u1YsDkImcoOz4 +lqsrq4TRa70CtBQmONymDn9b6Dvl8GH/gtBjI4pJ6UJhrFhiMWNS4LILpGV6tNlj +1ZxvyggjuppAGCDRDaTGDlWLZyDeOQ4NE48Ul+7ndXLCIyN+YRwVy8oRD7VLuRAR +vanbZvXbvlhQu1Xc0H1UexhTmdqP8hZl0T6lJkPhTSBrXtuawPpG1HoDvtGgZThi +Fp2f6M4Vzs6R4L1gOsan1CqbH4j8hRk7adM1Dv2QC3JtUzYMAjH80BYOi3bdkPw5 +bNNozK+Xpc8i/1TjFf+Trt3LYF3QRnWpXu5Mw5q16ofTKzo1qlQ1gJbP8PC8Vvt2 ++rnekQ6QcSmp/jCgGnZjK52kT4fHPZV1gvkODj7ndVAoTTVl8tXSGbKJ3I8wDnnF +mU1lQc7oIEJ6HiFp4B8J4Eb+1zxTUGelNZvxDDOVYwZjNOlaUNknXW1MGtSyrWYR +AgMBAAGjggHFMIIBwTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU2mJJjjXKvshho51Fn6ilvQN7cpwwYQYDVR0jBFowWIAU2mJJ +jjXKvshho51Fn6ilvQN7cpyhM6QxMC8xEjAQBgNVBAMMCUNTQ0EwMTAwNTEMMAoG +A1UECgwDREZBMQswCQYDVQQGEwJQSIILAMjjoPACCYGRgUQwKwYDVR0QBCQwIoAP +MjAxNzEyMjAxNjAwMDBagQ8yMDIwMDEwMTE1NTk1OVowOQYDVR0RBDIwMIEccGFz +c3BvcnQuZGlyZWN0b3JAZGZhLmdvdi5waKQQMA4xDDAKBgNVBAcMA1BITDA5BgNV +HRIEMjAwgRxwYXNzcG9ydC5kaXJlY3RvckBkZmEuZ292LnBopBAwDjEMMAoGA1UE +BwwDUEhMMGcGA1UdHwRgMF4wXKBaoFiGKmh0dHBzOi8vcGtkZG93bmxvYWQxLmlj +YW8uaW50L0NSTHMvUEhMLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5p +bnQvQ1JMcy9QSEwuY3JsMA0GB2eBCAEBBgEEAgUAMEEGCSqGSIb3DQEBCjA0oA8w +DQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIB +IAOCAgEAXtkakIZ+r8HNjc/MJ2z3Z+CN3WIyJhrlv3toGjAjNkQ4msWw9PEWDQZS +yhRS+UPWVHG+ADYk9iWiqsCoWe3qwfsO90wWiR3Sc8Ltbma7myIe5BA/ykK8t1x/ +KEyS5defP8p41QZAh36leAx7Eu1uOPxOwAdBKYqoEF101SJV5wQVrQa9SOuV9JuR +qff4QBPqzV3O2PUM50/cqZFL0WAFFe5H+XbFIdMXcscxYfP/NbfjXb+UDB5DVyE7 +FoO2j7o8IhLZHFyckLE7QaUeShjXYSGhjIj3jMGEiefiWL5RaxygvweZo2mCFKGX +5RgHo3SNphWClTuwkR3XSnliT0qvCzRP8xsXQTSu90ltE04i/0cBTxRJvf9ezp6Q +k4pmCG3AKCa6/PG9t7VdZuptl3bxY2aAV1Q4iVLuuooGABXCnDQ2Tq2Glo64EsGH +QPkru9RKLvcoDibjIgnuMsp4u3xiGTB3bN8PnLTVaHXJHHtDi2ob23RksD0ltj8S +0LxwND51o3Tlg/avCMVlHHuN2bE1aQx6lm0MBcWiSDR1pXKI+pxhUq92Sxeh3dcp +lmsHf14fwn2T9SUFcDtOK0mntya7tjf6RAkkCd1jVveO9C18rLhHNB4/u8dh0vEk +UVywW/p4FGfy63bzeJR8MeFiGMefYXgn0uRoxb6yQLv3QmOVHVo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHFzCCBMugAwIBAgIIP0sOYfGcIfkwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGIMTkw +NwYDVQQDDDBHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENTQ0EgZVRyYXZlbCBE +b2N1bWVudHMxPjA8BgNVBAoMNUdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgTWlu +aXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMQswCQYDVQQGEwJMVTAeFw0xOTA3MTkx +MzUxNDFaFw0zMjEyMzAxNTQ1MzNaMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJ +TkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4 +ZW1ib3VyZyBDU0NBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArDZt +C6KBnr3AFw3cUODBdCbirTo+kJ/VtYrBNWPnl8fi2BTqjkpODSCb8B66Z3PvHRN7 +xQmckfQd+goBoMsepRzzfGhrwSRhrPOqXv2LX/xbJch1fiNj1+/i5we/BU3YQKHV +P4XhuU9pVxiJMTaUcHpy4rplfACmsB31FJZUMWQR7t/7kB45XqhgVFg56u4zjl6o ++jOv6bygfpF9RHQcoo6C9lGqoMKx8KvrMSOLYJbwZ8+AFcryQ/UcCpTM8H7fMCAQ +mCGEEWIEmtbHhcnAETR5gsCaEQsdHdtjqpN8NDxXuJk/YInfQ3uPa09H4Xpx8os8 +rX6Bc+uZBXYsJJOKJNnIi1Cx/jaA+nXAMMDWOHE21Tmjoaqjh1mZlKZe/7/5zNpb +mORHeIJxGq/qqCOlC3++QMFDhXCwWbjRSantPUhIiF1i9ZaCO55QWX5GGs50cqWl +njMyinoA94eY5PIAIJXxx122JXzcq/PIAzwyNm9Hl+HxgIDEu7xDib31rNS85OjV +xsAKKvEWMJYHpTFy32eTw963BCFBebgABWcIlnw7uX9tERlAkW/L/yb0rBY8KDv2 +be6APGu09Aq+5AEWQAO/uHJFOEH1MJy+b8RTWJsleLmtTzVpaeTVQP+X+FrTp5Qw +NU4rJpcPCQI86oHOx3HtxsutlrbeueqymDGhaFkCAwEAAaOCAU0wggFJMA4GA1Ud +DwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIwMTkw +NzE5MTMwODA2WoEPMjAyMzA3MTkxMzA4MDZaMB0GA1UdDgQWBBQaz0fHmOU1TI+f +VauomvnjxzydezA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vcmVwb3NpdG9yeS5p +bmNlcnQubHUvY3NjYS5jcmwwFgYDVR0gBA8wDTALBgkrgSsFAQEBAQAwKwYDVR0S +BCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0RBCQw +IoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwDQYHZ4EIAQEGAQQC +BQAwHwYDVR0jBBgwFoAUoFn8AxKVTcE62USmIMCeZ57VU6cwQQYJKoZIhvcNAQEK +MDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEF +AKIDAgEgA4ICAQAXCZ6QXDcFLJ7iHt6umeEW1N1QkTTmiYLvtDW/J7ofDtKkA0GA +iqDypuUDPJG4jnATGjzMMIhuZ+NhMa310L28foxsU/E39bHwV7/2r8BRZ2+oPhXx +ZmC90q8/B7oAAtyH4w8DOK0FXwlViwtrTZO35hkjFFtHLsyV6/UcdTafS4nWvXDm ++JfkBFW5HDWmi+i7KoWFbLUu/p09VMa9yZkaJoTBch45zAM1fVSTOT8ZyFxSwkYR +rDzlitdnZ6VMK4LbMu1L0D5oIFCWqR1rfaS5qrXWWLhmCy5E2q/2V7RqJzjNzrSU +PIrjnR6IjYt3Iu8BV7oqhH3BQ42Swr78xjMN6Sk2amViHRfPww87UK6WvB/gbxQb +y7Qw31o4rwSOZnYgBIKeBUv4oxMX3OpCh9g1UtQsJwcI+zf43ksQKdSJckbYu7GZ +1itTq78YcBBpY3xIuPvVw/RDTXl50EXcklB2ahGcHY8CJ+PkYHDNCrSVO5p6nnxJ +FFob4T4VjV0VPilgcGssyajD4STu9w66E/PBuH94TWYuHMWXXSaeWDrY29fmD+TN +hafL572s1eoKHM0ooXRX5oS/F+s/B56TJ2RtSABlePdtelODWgdPlZQgDfWKEY+a +zkHNNkK2Rcaed0BLtZSvi0RIgxSiMsqFuLNI725e0gQ7Jh8ef1HOGXVHhg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHGTCCBM2gAwIBAgIID2Z7nPfeOoIwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMDsxCzAJ +BgNVBAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10 +YW56YW5pYTAeFw0yMjA5MjAyMTAwMDBaFw0zMzAxMDEyMDU5NTlaMDsxCzAJBgNV +BAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10YW56 +YW5pYTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK7r31lmSx259xUU +Lh+LZ0kzuJthHWhbxmc8l5Abb6AOUlaI662YGh7IYVnGBwspj9PXfupkh66ohSNs +uaPCYhD6+ksHw75k4AWAt7KXl87m7MTKoD7UAYzfKlsq4mCB3k0HqYwHvjfUcwVC +S1W5IgK2hRSr/dGY2D+iJbffS8QCT+O23jEKWexkhQ7uHxuofsdQk7DYScxhjesR +T9RX4E7WulWfkNBYR5umI1EzibYrtvwRPHqAu/JPuIVYJwVnrpa9+pjdsHAFGLnI +BvXFp4YWtpGwbOYNf/qXGPsRiU1rp5VfcknxkBCRIXSP726hyn595YdNpf8utMEn +rYm8yhXVlLMxmzjnUeeSW6ltZszXZQ0m35ffPKmckhfB2zPMC4jgHQ4MmBrKJ5ft ++OWDedSqYG48IYCF+igH7ZLnM13cpNWJ2yjusCUn/SZPAMXyeodhdV4JeZsYFTn6 +HXNgD77Jl10GsL0OPn/klnno5Lsi3Q16weJaNf2buooNRFrJjekwXNVVZ+fPqp1+ +2+Rg2vkQLfW9zL3Sbi3N/CknRmdCJk+vJL2NvdaVdBBIgQbTVCRoQ40xoPeNGMuJ +ig59qXdAhHwlFfSl08jgFyKwq5YkvBBp+ECwsYzD0fTDRFvCJvq3fiZqHwYMrsFs +5VNRbZ+WJUUiVf7DY3o67yqoCHSrAgMBAAGjggG3MIIBszASBgNVHRMBAf8ECDAG +AQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUYQ8cnhH1tL3BopmcFj+u +K9/szDgwagYDVR0jBGMwYYAUkPfRchwDH0gmljfe8czRlPWHrPuhP6Q9MDsxCzAJ +BgNVBAYTAlRaMRQwEgYDVQQKDAtJbW1pZ3JhdGlvbjEWMBQGA1UEAwwNY3NjYS10 +YW56YW5pYYIIDmswsj5q5x8wKwYDVR0QBCQwIoAPMjAyMjA5MjAyMTAwMDBagQ8y +MDI1MTAwMTIwNTk1OVowMgYDVR0RBCswKYEVcGtpQGltbWlncmF0aW9uLmdvLnR6 +pBAwDjEMMAoGA1UEBwwDVFpBMDIGA1UdEgQrMCmBFXBraUBpbW1pZ3JhdGlvbi5n +by50eqQQMA4xDDAKBgNVBAcMA1RaQTBtBgNVHR8EZjBkMDCgLqAshipodHRwczov +L3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL1RaQS5jcmwwMKAuoCyGKmh0dHBz +Oi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMvVFpBLmNybDBBBgkqhkiG9w0B +AQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQC +AQUAogMCASADggIBAFv1yVuZ5Eir+zju1rQjK2vnBYv3xD6eIEYLQedxSL9SDpRg +gNHQFJQJzrJ3TqIDMMPx1LvkCbSjodAuRYS6bWmf9DHTjpwSC2kIvce5KfAjpCyf +gTwVW7/NfKqzlaxOh/F7y9yNG0ITcuC9P+/7xrCkJbZOf2cozNi2grECfvgyrj8C +grPiQjIX+kiryAPHSXaf9iWZ9n3eVeNLNFI+ztG730B1f8MBTs56kGznqF0/Wmgp +xI8JeJz+aTPOqX01Zcv/3+eYuzNwhlkg5+IHxCQHKMTsP/m47bGpX5ETaE+KG312 +OXv55yxc/SMNSDJqz1gJpqspTZhwoe+N6PHv+7rcNS8IMvS0gn7Sd74Sd82HPBc7 +LeWBW5/981y6iwhS1AsOkhJ93ngXsEo3je+SLJPTKO/Fs/SXbR79uIpaSi7vMNwp +JqvbjQszUSfa9HmCOFdO93aoNBSk9Y1gQiLAz6aWOm/SQoOj4URTWF+a6/cWBI+K +4NDuA/Clu3RCyK1LGV/gQQWM0AHyqqD2cuOCi85DN8P/3PHCa+R6VVXbXLIu8ldl +7Cw/pO7agUp3qL2bGN69HI4pdhxMkh1dNLJx0wsbSFf162ZV6+gKRx+ZZ3uOBKq9 +CL/BfCbGI1Ug0E54oL5COyVAQce/TkGE9f+M65AD4NTinI1xUHD/SmukqWud +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHGjCCBM6gAwIBAgIIH0sDb0DFHj8wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMH0xCzAJ +BgNVBAYTAkxVMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1p +bmlzdHJ5IEZvcmVpZ24gQWZmYWlyczExMC8GA1UEAwwoR3JhbmQtRHVjaHkgb2Yg +THV4ZW1ib3VyZyBDU0NBIGVQYXNzcG9ydDAeFw0xODEwMzAxNjM0MzZaFw0yODEy +MzAxNjM0MzZaMIGIMQswCQYDVQQGEwJMVTE+MDwGA1UECgw1R3JhbmQtRHVjaHkg +b2YgTHV4ZW1ib3VyZyBNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxOTA3BgNV +BAMMMEdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgQ1NDQSBlVHJhdmVsIERvY3Vt +ZW50czCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKgNuEvu/MySNuvZ +4XxxowIaTEpgbu4inDQWJee3UXFT9ua1K66cn/IByqIrvFjiKbww/kTcAOz1RsEY +8Ic/qkFqe+Yeyna6TY+kgusL4cGtBJbNa+pzmlQ3rg9xXJAONSQD6PjJHncPxLfk +Wzl/YzhzV8ArTUAvKlVar6YlZTkNuWd90705ipcrSf359nxI1GPdE1kszDregjSG +ogf9Lw145/fRhQA7YmGRefh7v78lgibb3ZheMpTQ/+hHOvv4XwqYmhP09H6ooFao +NGBlp+tHeaBiAEpm26aQvtNJudO+0zIeO0bYgKIrUZlch1YaLyHFLjZ/KQDdaP7P +P3YiWWwyaJrRn7heFfv55btAIH69j+ukuVxPq8koEXPMZSnLIugjCYSsLSLy2icy +85Zp4qwlghb0cy/+x5M/32duORrcKTU5vLyMQkYpAQFs7VABuer/Ip8t9+oBYDER +FwOlt/zih8kQiO7njmIe145WVTRG/28bhpmOlXpaC2JagR6fVVqkVNWuYK+Nrujn +cZ/ktG53szuB/egIScJqfbeNvnbwiop/plVL97A2W0U8ATPTIDtzLWcRwxdGvFx3 +p9zaKuSB9BIlWW/8VZmMkpwaZhxZCris1zHDoiVgIZQA1nMWAhB4qpNwaExSJxH8 +14njkRaoB1hQueOJZ8lH5yv+6I7XAgMBAAGjggEoMIIBJDAdBgNVHQ4EFgQUoFn8 +AxKVTcE62USmIMCeZ57VU6cwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBT77NlP +9FmkQ9GssbDT5sHjcqRrODArBgNVHRAEJDAigA8yMDE4MTAzMDE2MzQzNlqBDzIw +MjIxMDMwMTYzNDM2WjA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vcmVwb3NpdG9y +eS5pbmNlcnQubHUvQ1NDQV9lUGFzc3BvcnQuY3JsMA4GA1UdDwEB/wQEAwIBBjAq +BgNVHREEIzAhgQ5jc2NhQGluY2VydC5sdaQPMA0xCzAJBgNVBAcMAkxVMCoGA1Ud +EgQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwQQYJKoZIhvcN +AQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQME +AgEFAKIDAgEgA4ICAQAd2HY64uwJixgz3vkVdgWPFyMH+m/xijtlXQ5tSgMEOGdO +KPFG019CGANoK9ADUpdbZ3exz2w1YYLB2CyaiPgLSPrnS5f2jho+fJ/nCWYSinOQ +yXejnN/vyVOkOMRurvFCJL1nQt9rJUO2DWGy2zyqlrzvFnAQ4LU9HdmWSM3Bi77Y +Hg1qD6SUM3t/57lEbOI/e/cbvIqcHI6eCXv+G1NIqDwgvTq15ikcTaIpfsjV1r5G +5Wcgwfii+7KEYEPKd/IceSXs6PWAdBxNkAe8y730sOyF0NRKrtBVBddUP+MJ7kUa +JCp1XrH1NjEhmgdgvOZSkmwsE2XfMf0NtiEAcAQuG09nDYGs6Sc3gI/pWP0W3hj1 +iujFl3v8WsJHadWpc+VuLV8q62Dps4Ow/d50CqcZeRZ+EjxgVTNV4VjrfWlK/jZX +d5gEFE0BQARz7vzT7DyWY38GrBQ7Thh4iUnt9hKdzmvLd64uefL2uHh0JbyMprMe +2g6uTtOe2VQH67XhA0wA0aFdNFYxk56ha63puhsEhdofHP2qMGO//ZPTYZwJWXmq +rKfUPjbOUg9YMjNZ5lSKUOV3VlWZYC2yir201qwGNg6kYurO6DJ1Vq2uPIpAefjA +A3t7qopUzBy0LEG4Qbd2jGCxWgPW/9/H9bF0DKCyVfGwDp0Wfi0j3+uDLgaRLg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHGjCCBQKgAwIBAgIEUNtgtjANBgkqhkiG9w0BAQsFADB0MQswCQYDVQQGEwJU +SDEkMCIGA1UECgwbTWluaXN0cnkgT2YgRm9yZWlnbiBBZmZhaXJzMScwJQYDVQQL +DB5EZXBhcnRtZW50IG9mIENvbnN1bGFyIEFmZmFpcnMxFjAUBgNVBAMMDVRoYWls +YW5kIENTQ0EwHhcNMTcxMjEzMDI1OTQ0WhcNMjMxMjI2MDg0NDE5WjB0MQswCQYD +VQQGEwJUSDEkMCIGA1UECgwbTWluaXN0cnkgT2YgRm9yZWlnbiBBZmZhaXJzMScw +JQYDVQQLDB5EZXBhcnRtZW50IG9mIENvbnN1bGFyIEFmZmFpcnMxFjAUBgNVBAMM +DVRoYWlsYW5kIENTQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz +PRSu0mIsuChreTdACbfv7ULeTT0e3dpCLCU8bUnYzgJ4mmdTnc32PrUyWGViU5J1 +yhdSkndRpK5KQdeYRp4Wn5ri6hDo/S+EjYw31k0elOh+F4+wfx0Z4vLQEZNHD6J+ +w5V+K14RJTvtbIOuyeuLan4a0OxUI4Ai75hri7/lo6JEJJAIO6ohOZ0KMcAaLMZ5 +qwZaeH/JS9c9u35Y+kMNY1+hZjvPcb4wHcwPLwSirtlfmVKXshO37D1XIJUuhtdL +mOq5GxXSza6arvuaTpfwt4im4oKGYTKGv27Ke9WOWnujMhugPhCzjtFd7GGOPCTg +5DgcyqDO5MnyqsV/LsZkx1wvqVXpfO4D260CG6lpUfi83subz3zQpX5WaMZnLs1R +xGtRsb+qzmGUClr1xxw/DmzP5mBDDSo0gmG/0pvPEzCG8Lyz8DdWPz27g6/oXWjD +gvcoGlyBoCcX51yntvNTv6cAJzFSoXwSL3FqqTaxWBdLv+tuFVikCG6A/urUyalG +CP8ZLO8Jw2SJU9zjGDHL/1Zd15LLgVpR1DEoNDOvSfVp0C3GQwhFurayc2ARPR90 +zDOyCV3bDtqCwNIczVlYJ2KLMjkUvunIb3y8Z41MtqpuvUJ6+crWNC2Qt/i7Chqk +HjkiiBQ5NCgmlBIGOsFreWDPpjMUfufKdhIT/PY88wIDAQABo4IBsjCCAa4wDwYD +VR0TAQH/BAUwAwEB/zARBgNVHSAECjAIMAYGBFUdIAAwHwYDVR0jBBgwFoAUgjS2 +sXTry+Jxrq9EbMTqMSI4c+wwHQYDVR0OBBYEFIqOYuJRC3tcgJaF7HHuggVZbqap +MIIBOQYDVR0fBIIBMDCCASwwgZeggZSggZGGgY5sZGFwOi8vQ1NDQS9jbj1UaGFp +bGFuZCUyMENTQ0Esb3U9RGVwYXJ0bWVudCUyMG9mJTIwQ29uc3VsYXIlMjBBZmZh +aXJzLG89TWluaXN0cnklMjBPZiUyMEZvcmVpZ24lMjBBZmZhaXJzLGM9VEg/Y2Vy +dGlmaWNhdGVSZXZvY2F0aW9uTGlzdD9iYXNlMIGPoIGMoIGJpIGGMIGDMQswCQYD +VQQGEwJUSDEkMCIGA1UECgwbTWluaXN0cnkgT2YgRm9yZWlnbiBBZmZhaXJzMScw +JQYDVQQLDB5EZXBhcnRtZW50IG9mIENvbnN1bGFyIEFmZmFpcnMxFjAUBgNVBAMM +DVRoYWlsYW5kIENTQ0ExDTALBgNVBAMMBENSTDEwCwYDVR0PBAQDAgEGMA0GCSqG +SIb3DQEBCwUAA4ICAQCVARjy/zVxpR5dwBJha/Og0WLMCLV6/O43V10d7aE86wl8 +++1P7lEGQdufsNSOnUv804KAFxLFoGlaq/WRMvIedwvnzAYj6LGPOZld9YpBHtrl +YBg6QV7Gkou12RPShk/HunlqQz1Rwe6zDpDL8VO7+3KO5tuSs/bQTfxyqKr/t6TO +hiCZUrERC97bUModLSQDltrVkzoSORgNodexr54qdMaPATz6h3yVeH+kpd9t7PaR +gMSbbTEc2eDNMXP+/lENBswbca1tjZhTpHTYB643/KWQXAqi3+DlZsfiUviKG2nv +226xJyLLxPbmQvlGnbevpB6EigjsOFmsULxZ7qK2S11QbOJAtemNQxd8lEHmX8Rl +vt6P76Fe5bl6qwvH7prrEHX/XS06dl9osWuVvf2zDAkn/LVdfsS86vtuT2T41Je5 +auglHuahLA8wqqf29waVHW/8GisxQAFi9/dYsWILK6ixI/1bYd3L9hVC94zY3uBW ++Nn7EJr160woCoJOLePUSfZzJPTOVaMLsHyO77lRUcoUii7sP2KNDo0aYwnvd7gL +5Hqk+qI9sYJoTV7BULvkDt4SCEyP7MmIijP0TZw0hWuRQn6iwXxhfTgMSymNpJZ7 +OZlhtvmj9THUU9bM4lUUoE10zCIgNzxjUIYu8izXoSjbLHqCP8+EPqsgXD5u+g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +/I1gZQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHKzCCBN+gAwIBAgIIIxg899ysqywwQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMEExCzAJ +BgNVBAYTAkJIMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJBSFJBSU4xFTATBgNVBAMM +DGNzY2EtYmFocmFpbjAeFw0yMzAyMjgyMTAwMDBaFw0zNjA2MDEyMDU5NTlaMEEx +CzAJBgNVBAYTAkJIMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJBSFJBSU4xFTATBgNV +BAMMDGNzY2EtYmFocmFpbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ANZk5A7BRNDu9KPUqvbFThjbUZPHBSZYRolZe56o5WldyfCA5fN747I6Wn8v1oWd +2q++LNnBlIgm+9qY492LButmiLQET3e6jvmbyhQ4qCgWvVz8CVDWN0STPvOCzxhV +sHt2PGjLOaIJ+rFSnOyYP4BD25JpAKA0X/r3CWLcoXmAh1JlG9JV9V7/c8wqYpzm +/IONIig65PMaOJVAGJd+UCTDIN8r2C46TwMtG10Ak2F9EQsVgOf9GRRXfY32CaUV +fJfKTMCnlQa3D3o+FfSXclun0ILesvFsPkjgzaUe7dirAOt7jzeqWxj4lYSjix8f +DgBCkBSpi4PQaCzJ5c3EsuVCyzlGd6NkggSeYgP0TEpPTv8oV0LYcqs2g2rmMdiM +NuWCClObvDi+9OKCoPrgPZdzX5jLep/AQ1dS0aVTjETG45xYogNIfth7LHTKUoO+ +RN7Yo+AXk4Wy5UJUUgmRa1zw1fiXvCDe6h1Q7TQhl+Hp//EpuTdh0xqf6bgN/l4x +i1VJfX8ttF5V39sPYjXwghXSzIrgsTjfqSMRqcIzBqQt06t7Ki7XtDSY/dF6yAoY +omHsKKCrJl89yhKMaLpYdPtHW6lfvQoh6QEn0WnLc7u+xcJeVc6RK290sVxJIfAi +lVn+lr4RCyzgs/xPjtbGDJ/hSlv7o2ETtv/UP6ALOkN7AgMBAAGjggG9MIIBuTAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULKS/ +00LOBs1wvA1e5YjWsJx70hgwcAYDVR0jBGkwZ4AULKS/00LOBs1wvA1e5YjWsJx7 +0hihRaRDMEExCzAJBgNVBAYTAkJIMRswGQYDVQQKDBJLSU5HRE9NIE9GIEJBSFJB +SU4xFTATBgNVBAMMDGNzY2EtYmFocmFpboIIIxg899ysqywwKwYDVR0QBCQwIoAP +MjAyMzAyMjgyMTAwMDBagQ8yMDI2MDMwMTIwNTk1OVowMgYDVR0RBCswKYEVZXBh +c3Nwb3J0QG5wcmEuZ292LmJopBAwDjEMMAoGA1UEBwwDQkhSMDIGA1UdEgQrMCmB +FWVwYXNzcG9ydEBucHJhLmdvdi5iaKQQMA4xDDAKBgNVBAcMA0JIUjBtBgNVHR8E +ZjBkMDCgLqAshipodHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0JI +Ui5jcmwwMKAuoCyGKmh0dHBzOi8vcGtkZG93bmxvYWQyLmljYW8uaW50L0NSTHMv +QkhSLmNybDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZI +hvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAD7CYiorQAynBXHCxIDg2rJy +PwgL66mI0wthc7RiG9KcYXVmFfJu/rA5J/WKubiz1U/di1aVb4aERailuogeP57A +yArhPj+1/3PxFBJmrHJm9viigdwcenV9GmOevepNuuNH5qFb3NdLnXDmCD/3Y9tZ +V/PKQkr4AO70h2+FXDM36h7BOa9jCgPBnyKUOE4V7OJS67/sNXQ2fDqURgzORC83 +AEU5+r6myrgvWgIhHXTEHfeYj+HzQ0P/sfZOibGO9XAQ+ZIDQdutlKHeGulTcH+z +261BSKPZpCtQS/U99ttnv8ACuIIwpPJH/exr/wzwH30KmpAIQK6gDhf8AIQ2kFlf +MdfKJGAnUARv0oZW9rBH5KyFD0fr9+5mqYyBUguDJTB7pmGj5BK2wL42L9zjoLy0 +E1QXOr+T1oSamqfBIzmA8mcZ4w35urAARM2ZvzAkU6ebR2eW3ebbcGgVFSTBpns7 +d4oHkv8FaEXtKbiCer90LiaY9SNwhy5aNwBzeADJfGCNHhli3LKpr4MfCLO2BiDd +Eb7iVRbl8m2j+kTf4omD2NjpUgLq5ihgrIncehdDqwPCJu8tdu3c0rtzEFavWxUn +P9J7GU5n2+FDBxFtZJlrKw5mImZ2h1/noO7yZdRi8ek7DPjLbpLC2JqiZakTSrrl +fG3qPR2da4KrS3DSqva4 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHLjCCBRagAwIBAgIIOtxNFRso4/kwDQYJKoZIhvcNAQELBQAwgYMxCzAJBgNV +BAYTAlRXMRowGAYDVQQKDBFUYWl3YW4gR292ZXJubWVudDEkMCIGA1UECwwbTWlu +aXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSMwIQYDVQQLDBpCdXJlYXUgb2YgQ29u +c3VsYXIgQWZmYWlyczENMAsGA1UEAwwEQ1NDQTAeFw0yMDExMjcwNzUyNDhaFw0z +MTA3MDYwNTA4MDZaMIGDMQswCQYDVQQGEwJUVzEaMBgGA1UECgwRVGFpd2FuIEdv +dmVybm1lbnQxJDAiBgNVBAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEj +MCEGA1UECwwaQnVyZWF1IG9mIENvbnN1bGFyIEFmZmFpcnMxDTALBgNVBAMMBENT +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvPCNUEPmJPJrd0bCX +YYacgu69ObWV2TGjdN9TjLLHmPG58f87V+JercHY+XXo6syCm2ULHIXBTizJy2w3 +vehznQPugLC4MP4Q9CjtNOAE+YDwsLhpvzv8LWlSphrA1Vtf+CivKqPVH5I7QFfC +f3dXELXnVaF7RCQXmu+uKy8vRfHpQFgbyN6z/vV7ypxa+RAh6iEdR6O/nVYR4Xvl +efChU0/VqL3shJM3AohYPXKg5CWVh7xFbhBs08jXfNrCjjz+PQtcNyqUUUsKstgE +NTbc9VtRGFbW7G0LCwf+ExG4fnDbBaFurpQTWPQ1T7QKdqveoOkl5nBwLIechF6W +7tYZTd3x4Somc1sxe7oK8hy+yURPnlT/mDmpdP0abYib4Cng/feFMpUZ45zN2hDk +AADwl0Tu+XOv7uAVlhKBgJIyZ7Uj1xgF2EWX+kj7xscZFouoEgreotglHJlAjg3H +RpF/u46DqxmmLQ4dK6HNH/mZe+FqgcQr3LFUe9J7h1VloY8TxvHgKGWOp5up21w5 +hL6pyuiyNcIfzctJoQ/y/xALX66u0J4fWyClpUjG9W5T47cIa4yLZmB1KA4AT7Ea +AuDP0lXRWY+Jsoa4xoIu2yFYRkZtOxLGEB7NxPnVxWHBOQ92Z3wVOXryB0F2+H/V +820SrWHoFJKF2a4YPWB64RH6jQIDAQABo4IBojCCAZ4wEgYDVR0TAQH/BAgwBgEB +/wIBADAfBgNVHSMEGDAWgBSDadJfTXzw17y2nFeQlAJmrgdW4zBjBgNVHRIEXDBa +gRRDU0NBLVRXTkBib2NhLmdvdi50d6QQMA4xDDAKBgNVBAcMA1RXToYwaHR0cHM6 +Ly93d3cuYm9jYS5nb3YudHcvY3AtMjQzLTQ0NDktMjM5MTItMi5odG1sMGMGA1Ud +EQRcMFqBFENTQ0EtVFdOQGJvY2EuZ292LnR3pBAwDjEMMAoGA1UEBwwDVFdOhjBo +dHRwczovL3d3dy5ib2NhLmdvdi50dy9jcC0yNDMtNDQ0OS0yMzkxMi0yLmh0bWww +QQYDVR0fBDowODA2oDSgMoYwaHR0cHM6Ly93d3cuYm9jYS5nb3YudHcvY3AtMjQz +LTQ0NDktMjM5MTItMi5odG1sMB0GA1UdDgQWBBQYQYacOaS/W6+bXEiickJ5qkcH +xzArBgNVHRAEJDAigA8yMDIwMTEyNzA3NTc0OFqBDzIwMjQwNDI1MDc1NzQ4WjAO +BgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBADmxwvp0dlIfyhsvCqQd +fehTN7IuIjPVA9bwP+9v17eJFybhIO66NKiVn7eL6vttZopclZSJc/YjuY40L4HI +UKWfqgQ9qYxkjyvdgb+CHbuITc1nfze1+psM16LTA/gWc2P4kPblaK/8g8zO6h4A +biSujc/vsiYE7SLTP7pEA/zj4gbevkXju8FS3o6g3GtocYzQ5MKVTlDq+nZzkGJG +OTGe3wYndcduN7cAbc0O7qJUQRRKnnINNELluP5b5PBNzWjIKU305HEl8k1cRlqI +5QKJhklVhEU1GHEJZzNUMIqmlK6mhsju6edbKP2HqH5G0yfMKEWoXaqSahSyBm/0 +RHJS+Ycpiw0FhuqLDfZlBnkZwdI+nskw+l+88AwQ+U7KqL8EQng94+IfSmeMcWah +bOVxp6sp0xsaJy+WLCxkCvaSa2qb55ixlMX5GCojp6IZFUW39DZSr88YyULke1+7 +6p99CyMQsqN7O9CMuAckV7QiMPtm+VEl3Wgksvv0hVPEsniFbz6z8qlCJHb6G8pB +L4zlFF0NzqK70jtGT6VefR/IFdIjqCYPvfq70QVUwbfvJV7vfXcorHvGwtfW+WYT +mf+KkP0gbeJJePAqDxs940ORkYarKoI5z9l7NYz0sgefSeS+9syNOpgrkFC4EXOO +bqHbVNqgOMvNORpSLBPTahpH +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHMjCCBOagAwIBAgIIXHGxkAyPUS0wQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMH0xCzAJ +BgNVBAYTAkxVMTswOQYDVQQKDDJHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1p +bmlzdHJ5IEZvcmVpZ24gQWZmYWlyczExMC8GA1UEAwwoR3JhbmQtRHVjaHkgb2Yg +THV4ZW1ib3VyZyBDU0NBIGVQYXNzcG9ydDAeFw0xODExMDIxMjE4MzZaFw0yOTAx +MTIxMjAwMDBaMIGIMTkwNwYDVQQDDDBHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJn +IENTQ0EgZVRyYXZlbCBEb2N1bWVudHMxPjA8BgNVBAoMNUdyYW5kLUR1Y2h5IG9m +IEx1eGVtYm91cmcgTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMQswCQYDVQQG +EwJMVTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKgNuEvu/MySNuvZ +4XxxowIaTEpgbu4inDQWJee3UXFT9ua1K66cn/IByqIrvFjiKbww/kTcAOz1RsEY +8Ic/qkFqe+Yeyna6TY+kgusL4cGtBJbNa+pzmlQ3rg9xXJAONSQD6PjJHncPxLfk +Wzl/YzhzV8ArTUAvKlVar6YlZTkNuWd90705ipcrSf359nxI1GPdE1kszDregjSG +ogf9Lw145/fRhQA7YmGRefh7v78lgibb3ZheMpTQ/+hHOvv4XwqYmhP09H6ooFao +NGBlp+tHeaBiAEpm26aQvtNJudO+0zIeO0bYgKIrUZlch1YaLyHFLjZ/KQDdaP7P +P3YiWWwyaJrRn7heFfv55btAIH69j+ukuVxPq8koEXPMZSnLIugjCYSsLSLy2icy +85Zp4qwlghb0cy/+x5M/32duORrcKTU5vLyMQkYpAQFs7VABuer/Ip8t9+oBYDER +FwOlt/zih8kQiO7njmIe145WVTRG/28bhpmOlXpaC2JagR6fVVqkVNWuYK+Nrujn +cZ/ktG53szuB/egIScJqfbeNvnbwiop/plVL97A2W0U8ATPTIDtzLWcRwxdGvFx3 +p9zaKuSB9BIlWW/8VZmMkpwaZhxZCris1zHDoiVgIZQA1nMWAhB4qpNwaExSJxH8 +14njkRaoB1hQueOJZ8lH5yv+6I7XAgMBAAGjggFAMIIBPDAdBgNVHQ4EFgQUoFn8 +AxKVTcE62USmIMCeZ57VU6cwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAW +gBT77NlP9FmkQ9GssbDT5sHjcqRrODArBgNVHRAEJDAigA8yMDE4MTEwMjEyMTgz +NlqBDzIwMjIxMDMwMTIxODM2WjA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vcmVw +b3NpdG9yeS5pbmNlcnQubHUvQ1NDQV9lUGFzc3BvcnQuY3JsMA4GA1UdDwEB/wQE +AwIBBjAqBgNVHREEIzAhgQ5jc2NhQGluY2VydC5sdaQPMA0xCzAJBgNVBAcMAkxV +MCoGA1UdEgQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwEAYH +Z4EIAQEGAQEB/wQCBQAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEc +MBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQBAnBh6oqsvpvKa +oRJgE6youPoxdCiiDGxFbccv1Evm1fvXI8d21qg9qPP4U0yzM+/y0WJfUqidopR3 +GQGVXB1mjrfjM0g9UcAzrjwZOHPiz8DcRzseKu9ZZlH3BFTZ6Hik5kSOb0oaaOvm +0frrrioFRiqEY/hNnqLGk83Q7z/cgPt+YesDuFq9GdKElAIqZIkwtkZbd63Byqp5 ++QygNBk/ctKf1XA32c0V4UNaM62g5uxP795hJ6B0luExAuPVMcTZIIDI5cXwr4iY +OzlY/4SHLBKv9epdcOlDZZLipm75f6e0upbccVc2NkhvQFMFIlRqyxavxJdVJIX/ +yrWujn0s9L1Kg/mMz1NqFWwFXl0uzCG6c8t5ifwI2AjxleqlufhubigZ28QmUAGu +KmZg+Loc/T+4AJibGhATQdv8EO6MZPkeNbfZgdhXUb7qbGf13eogwjsSzoB9QM8o +2emeZ8TW2aKyFvA1mYmvvI6eVvVh6rURqiigAqPJXZJiwsFYqF2cEzj2CIFsCl8r +6McEHjVlyqm3hEaqXiuPgyUYPm1OUltjA9WDz4gBTgG90Tvj9tMPMl7tAp7t1ahz +kliHGw9B2a5BVL9Ish3Vpz1eEQy/vJTEZc8JFppaaoFpR8qfCWOUb9R3YxPc4M2G +MTeNnPFmgAkS18BEwinnXu4HaIe4iA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHNTCCBR2gAwIBAgIETjLQPzANBgkqhkiG9w0BAQsFADCBozELMAkGA1UEBhMC +VVMxGDAWBgNVBAoMD1UuUy4gR292ZXJubWVudDEcMBoGA1UECwwTRGVwYXJ0bWVu +dCBvZiBTdGF0ZTENMAsGA1UECwwETVJURDEiMCAGA1UECwwZQ2VydGlmaWNhdGlv +biBBdXRob3JpdGllczEpMCcGA1UECwwgVS5TLiBEZXBhcnRtZW50IG9mIFN0YXRl +IE1SVEQgQ0EwHhcNMTkxMTE0MTYzNzEyWhcNNDAwNTE0MTcwNzEyWjCBozELMAkG +A1UEBhMCVVMxGDAWBgNVBAoMD1UuUy4gR292ZXJubWVudDEcMBoGA1UECwwTRGVw +YXJ0bWVudCBvZiBTdGF0ZTENMAsGA1UECwwETVJURDEiMCAGA1UECwwZQ2VydGlm +aWNhdGlvbiBBdXRob3JpdGllczEpMCcGA1UECwwgVS5TLiBEZXBhcnRtZW50IG9m +IFN0YXRlIE1SVEQgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCj +Mg42Fipd4tZOLauEOb5fZlfU4xSv+PsNmBzrNdntXOxhUH7oBGIhuiTvtLE+2T1l +5Qiq6ONbn0nJv4RSIjqCIhk673NjsED41B+Fl7LDOvVcpeF9E53maZSK/c3Pm6Qw +EXAGgJo4dRyGirCaXfmUKT5fsrc05L74dZufG9FAWo4i2xNxoyDaOn0EX6+YevSd +u5yyLjMDcHNQpaytu9xXTkzgf/KjKu7/m6rwmS1LFvELMreIpdXKLpLBGQ6Il6Rv +O1Uqi4QtCVWGWEZpxQ5Dy5v49NriBFYpUe2HrxiZhbmTXb/YHnYKvMCd3EIZ7B83 +kq8PLnChAQNcdwn472zneWJiNkU1Tlx4v5HjyNShctU+4KZcVAqqjU3+376VZHqJ +xbLy2WUdkayvUYNVfT4Rj7SAlRQtH5I/OwCq3kiAKrQGVD+LPiItRLx8CgezjoBT +e7/Ic1FqkG7dc6orAKZAfYc1S59RnIPnpxVogHMTQgtYrBjsdoRw/bzLQP/746mo +/PjhzxiHAtxJ2ghgkg5vcXMFWyr7UHbdV6pNnwjGkOQjjC6YEvAlL54nXfpcFR6A +vWFBC/kFGtw39eAn3DILjdA353wt8FZRlCh3LuQpcLQq2tq2AfDBrMJ3GXw9HenR +p5du95QFsmbJFBLbuMPKSdythSvOQbxZFaGtbS1RHQIDAQABo4IBbTCCAWkwEgYD +VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHAYDVR0SBBUwE4ERbXJ0 +ZG9wc0BzdGF0ZS5nb3YwHAYDVR0RBBUwE4ERbXJ0ZG9wc0BzdGF0ZS5nb3YwKwYD +VR0QBCQwIoAPMjAxOTExMTQxNjM3MTJagQ8yMDI1MDUxNTEwMDkwOVowHwYDVR0j +BBgwFoAU5i1lFvYVqGrnie6BPL8+HcKggPQwHQYDVR0OBBYEFPGKi/tqRKNGgzTS +1ZIVgViCSkz7MIGZBgNVHR8EgZEwgY4wgYuggYiggYWGKmh0dHBzOi8vcGtkZG93 +bmxvYWQxLmljYW8uaW50L0NSTHMvVVNBLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9h +ZDIuaWNhby5pbnQvQ1JMcy9VU0EuY3JshitodHRwOi8vY3Jscy5wa2kuc3RhdGUu +Z292L2NybHMvVVNNUlREQ0EuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCGouFdsaC0 +W/BDaiuR7BG3YdhwD8OLoFeJC25DI8A3R5zNnrPtq/ERvLexhxTeOLkCI8O+LbSN +jioVysMla6NwSkh+Cg0x3fnL8H/3Q4k1XahEUBUzvWq9L4q0Scni76PZ/y717UeS +MTxTKAY/JOew3UG9+5wI2Mpv1B4hsHDZU8E6tZFTtArR9R5o3aEVR00+0P9stnXF +LHnFi2XI8Jv13OyOXX2Ktu4yE/eHOKq8CuCPSTlu3mFzwudEDZ9bcduqslkmA95l +CPxs99rbXn1qnellFsLcGnXghowxfdeoOFRdjxyXoSAhEGaz9fO3PCgk3XjxLfkp +E3Mb2afeHOiMOSHYeoglROq6Zxxr1AJ1dLQZR1t4sQe15xxDMdGt6z6uPhgYSCqY +LmWFoI6X2je2MK0is5nbOeZSLYUMR0uamW8OxIitp6jn0JKv2783CiwKQjPNeER6 +xlvks0PUjaiu/UiPb6/TVP0hTa03+JOjaeC3gNB3CkyCK3+B/jzeZh4bmHTTbzuT +6YjInv+eawBFfcmAIavbB9cfCkjZd2UNtUJtbaQsgoj0W77lR4Pd9N4E/lMsSKeJ +Qo+/lKucOtOdCjPPIq964fEhP8QAa8Iojbo+tKAoYPHUIz77T37QtqevgcSyjOuS +21BknRcScWo2FMKUoRKV7YujQSulZ11VyA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQDCCBPigAwIBAgICASgwPQYJKoZIhvcNAQEKMDCgDTALBglghkgBZQMEAgGh +GjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAwdzELMAkGA1UEBhMCTk8x +MDAuBgNVBAoMJ01pbmlzdHJ5IG9mIEp1c3RpY2UgYW5kIFB1YmxpYyBTZWN1cml0 +eTEkMCIGA1UECwwbTmF0aW9uYWwgUG9saWNlIERpcmVjdG9yYXRlMRAwDgYDVQQD +DAdDU0NBX05PMB4XDTIyMDUwMjEyMjkxNloXDTI3MDUwMTEyMjkxNlowdzELMAkG +A1UEBhMCTk8xMDAuBgNVBAoMJ01pbmlzdHJ5IG9mIEp1c3RpY2UgYW5kIFB1Ymxp +YyBTZWN1cml0eTEkMCIGA1UECwwbTmF0aW9uYWwgUG9saWNlIERpcmVjdG9yYXRl +MRAwDgYDVQQDDAdDU0NBX05PMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEA3R9ww4C00pczv9L2WLDkfTG6Txuc5a8Ur+fnFe66F+xxhw49RHxCSDw+myr0 +2Ay2oy2h85OhaOG2XQ3QsQP35nxXBIa7fJdcn3LPlGdIMUUuUaR66/UlaVxszdVD +LlhnAtQzBY7GPmPKQHB3i2kJmKGrux2tF4cbw3/UoygFwUDHUA7AZDhXHUh41Rcf +n4DOmd9S49eL9+ofqH1lj7YJcwlvroHXQYDRJmHtR2Ol+68+LTvM89KrdZYyCF+c +sl8ovBqi4rBGsiE1ULPARylRC0iIT/Pim5C+Mivt/NWosn+4/Ui/pQA4xrvEAlYZ +6oEkrNPdgPMy+95B9jrBcnsggCSU9LX8UrQKRIFkzm2afWWmnJxzEAgj73WFoos2 +Qybtylq5ww8AiOd4BB3h17rdPeB2MKgX2N9lzNWPqR2/wGAr0B+0chzPbxSxOvVG +L84rMkDJu6hQtn/OIUUZR+ux+p1GISVynHhgy7Cp6FgLatVAoIbmDafhBWfYYByq +CkwlLdzXcgAiH1OAQK7qQnJfTe4+W3pVtKq5nM1hiubdIj5RGvae++6OAHZkP3OL +40rW94iVfAsi88isEJ05pz5YTE69G1MttFRgxk3m/gIWPs1qZhaPQKCYhLakev8p +/N439xp6jhue+UzxsmBmsn6/aH0cQ/VreGmEfxMnJEp9dc8CAwEAAaOCAXQwggFw +MB8GA1UdIwQYMBaAFB/DeD9tcyIdj2evUKVlAHiooUpwMA4GA1UdDwEB/wQEAwIB +BjA2BgNVHRIELzAtpA8wDTELMAkGA1UEBwwCTk+BGnBraS5lRG9jdW1lbnRzQHBv +bGl0aWV0Lm5vMDYGA1UdEQQvMC2kDzANMQswCQYDVQQHDAJOT4EacGtpLmVEb2N1 +bWVudHNAcG9saXRpZXQubm8wbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDEuaWNhby5pbnQvQ1JMcy9OT1IuY3JsMDCgLqAshipodHRwczovL3Br +ZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL05PUi5jcmwwKwYDVR0QBCQwIoAPMjAy +MjA1MDIxMjI5MTZagQ8yMDIyMDczMTEyMjkxNlowHQYDVR0OBBYEFHD3VtLBi1oI +jJ5HRryprB/mOGrmMBIGA1UdEwEB/wQIMAYBAf8CAQAwPQYJKoZIhvcNAQEKMDCg +DTALBglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAD +ggIBALvdKBAKhrSaPF5dqXHjVl7d9WZoD8F9Btk9UG+tbYPQwVakHC7RSWWk5soT +R1YNhfvYRwsDrmUJFjsKeIgkvU+lJox19KH9n9u4zBeTHwT2nSALVJrrh64pb7fD +a7gWxJLC7pqApF4Na7KJbyqJ7FISRgRFQmx5ftgNkv3zaFICYb3S4n4wO2H5v6tU +ni1AI85yI+iO8/EQYPdzbYydl76uhbgpJlLdt5EoC56iIW+GYKweoF8bckIDV80W +zK9klLgRDks4gakywxAgTUygNe1l1fnFZSLapEhvg/pv6Hteb/EhDEmN7GrAyfK/ +sxo7fVBNjRAudRBvipLEUFrqvqZb2b4nBBO4fiKkCkji0Sj2r4mu4FnJdaC7vXzJ +Kpn3Y1VhKl9bhyqI6dIaN8zbZpM1UqZOtTs8IynFsq1utzjdNjFjxBZK1PkXwJXW +og6K6TijR2T/qY9xT69NtpYLuHGmiDazjjFNrfjX9mJwbNSqWSNZ4/4fSiimtX4M +c9I6eo7omr9TybQES1TDlEl1qSa7y4VyBqR8CgoObbpQj0mC//ltPeCK3PmE7L2M +3Qgt7ekZquDgqIIVFwL2Jt2QZ2uhvaUiP4N/jE+t/CASXEfcfeKD4kdWItF+/MXw +zSwiR4f47ROSKw5ZDoDObMnENUhYei0sFUjDWXbr62vfPLkb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQzCCBSugAwIBAgICGC0wDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYD +VQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTExMDIy +MTAxMTEyMVoXDTI2MDIyMTAwNTUyNFowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoT +A0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYDVQQDEyJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEApTvJoCiGVxPnny5LlRldjDZVzY4GWTsxy6QI1xRi61/F +HdLLiXTYNYR7vCt9ga3x1ja/AE5grlefFVycler2WK+amRyYmvdBbrQ1bYEEKL6N +n2cdox60tAA6A1zb0T3Ayrl4dmeQGdScDBQKVjpTchu2xHYOmTLZJCRfJgUet+hk +F31eQ+MEL5+thbcAl0OmAkrAmjYFtFcABq91gSZHxRAgE9p08f+tYPvTwk6woXX6 +dqFeW2/BqQqTJizjjfPOeR4loNsi602nPpYOk0OicdTwW5A/nMCAKnlr8LEdKuUl ++YERh+SZm7oXQUJJxXDt5bIourZKIhzGfQrGAIYZXWHNTP/kcbCBDdrQ+/PL3x0R +pI5qrQ0QyLh7vPM6MEKMbqGbq9PYr37N6fho58BerVRKHALjxyuxNlBNfK59rYpY +EiNxGk5+pHK92kH4YicbYdU2k7ppIDTckYGEGWayWKyb0S+jLapEhWAaBzaA6WzP +GHbJwvV7f4MOfsC1rDB8TdOkm/sBCkZ+iMgwE1b8jSBC15q4nB5+w2enwbITdIG9 +uyA+EomD+4Fn8HcBXiR3F0wd51AEgEWLyYol2etUVSQSbyk5/pzWSNtjZmMDkCWM +KNA7sckt/zKaalJByqpVvzSLbb71eACDEM0qGK9YHu58/4duDPE8+V2zpp82IekC +AwEAAaOCAfswggH3MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGGoHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDExMDIyMTAxMTAwOVqBDzIwMTQwMjIxMDExMDA5 +WjCBkAYDVR0jBIGIMIGFgBSJUhghMvDepX8TOhcqXVYXoHkSaqFppGcwZTELMAkG +A1UEBhMCQVUxDDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMD +UFRCMSswKQYDVQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5 +ggIYIzAdBgNVHQ4EFgQUqdxox52YhfGyz4BsPFG1XzgsB4IwDQYJKoZIhvcNAQEL +BQADggIBAEOGOPb25HFWvAypRDoEQkAoUVeO1YskpevS5VsQgZcHAGp2tNw4/1Tk +B7yj+fl7aPlGcHC5UBeMaHhx40Qxy+Ag4AXoc7khCFhGiKccYIyyJMiNRVd9C2si +tWtV4sk5tLyC7EvF1JOJeG3UVlagZ/m/9pYP0KsiTWYt1mVcZsZK2GzdKkWGJj2J +ynnSgXcwT04A2+DuvXH6gNy1xbs5HJIuZz+3YvoVMDSABwMSTEbDopswI6xsVyga +p1H/plB/eRLh3HOPbiTp1k53EPrno2H8tSJ4rQgWVuCUGlYYKoKsrGZuOe/rRwYB +MRnVuI3brRGvZ807LYiRZvXu3qoDLThODHk8KG3p7FtcQZWozQHWe6YLeqIiwjHa +4BfaqorxHkB13IHsyefPGnf1K8cducm16IHRUZj35/B3IG25Xso7E9l0jU90Ha83 +fxXTAWz1DYj6h6AqtI38cTzx3guO3acGR0Lq4pwoi0U4n5Dx1ttPZGdNLS/UPXRR +zWEH041nFKZmVM5M9Cctxwk8jcVzk2XRFTSfVHOyA1UjF7JGPyumiiPlDi3scdAF +77HdV6Go87TiBh5jLQOCfTdq+TnYNu27BzVkds1SXeClFLKFX1Sp512TrK1yvJb5 +FKgfAQ4eypQd7qmVTeIE034/0QwdfhBRzLFXrHvPzwFxu1Pq49lf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHQzCCBSugAwIBAgICGDcwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCQVUx +DDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMDUFRCMSswKQYD +VQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MB4XDTExMDIy +NzIzNTg0M1oXDTI2MDIyMTAwNTUyNFowZTELMAkGA1UEBhMCQVUxDDAKBgNVBAoM +A0dPVjENMAsGA1UECwwEREZBVDEMMAoGA1UECwwDUFRCMSswKQYDVQQDDCJQYXNz +cG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAn8NW03F55Sf4tvQMk2KN9CDsMteBreJhHmfj5QH4RjWG +Dwx+XisGmZDMxuklCfCVCgbKlV9pYlrH2niAA9Kdcm/58AqX/9Vi0ks8nEkUY1g+ +Cb3oP0lZZR0QKVrSyD7C191d9/eAAjXrYglZUK+cq2f1zXqKcPclNhkOpob9e29Q +lLPO5Nlmfk6ZJKVUg5+exQvSGI3kDIS6ie4cO18cLL0rVdG8J50WQuHK85di/P/U +vWjXMZfOEPRUiv7owKZ5Sz9nZCY8yHlFcCDajwZ00L2OeXMbjDfe/WLSsxjPRLcv +DKNUD7Ce5BJzj+EgM3z2BMICNhIfsi6R5emxu3PWguJXrfn6YVsmoksQ1xeKdlGu ++exEi58Hvqx8WJFsySBkz0s/7d1rf8FRqhl13qv4G2v0OfC1LtG9L3uOFR0ZwjWg +aLNMq6390Q3s0i4Xizysk8aON2UjtrqZeSopJAos9E4+TGs+Sp21PqieEeYtEDuT +N3FyO8h6jljsyEOdTcmbAUIGpFKy1k7or8KEeZkSu2qOD5zJNmKMeveytPmAnCC4 +wRAUYUCLbqxeBRnWxr1b7ZMXYeNMDaK5Ceh9MDTB6kCpUCb93H3csVX1huxRTgSl +QT99UvwI9AY71pzGc61dPvWtR1CnVCrjG1drrr0nxDRT2veJUxK7ld/D3tQdBrUC +AwEAAaOCAfswggH3MBIGA1UdEwEB/wQIMAYBAf8CAQAwgfEGA1UdIASB6TCB5jCB +4wYIKiSfpoFdAQEwgdYwgdMGCCsGAQUFBwICMIHGDIHDQ2VydGlmaWNhdGVzIHVu +ZGVyIHRoaXMgcG9saWN5IGFyZSBpc3N1ZWQgYnkgdGhlIERGQVQgQ291bnRyeSBT +aWduaW5nIENBIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EgaXRzZWxmIChzZWxm +LXNpZ25lZCkgb3IgdGhlIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzIHN1 +Ym9yZGluYXRlIHRvIHRoZSBDb3VudHJ5IFNpZ25pbmcgQ0EuMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDExMDIyNzIzNTgwN1qBDzIwMTQwMjI3MjM1ODA3 +WjCBkAYDVR0jBIGIMIGFgBSJUhghMvDepX8TOhcqXVYXoHkSaqFppGcwZTELMAkG +A1UEBhMCQVUxDDAKBgNVBAoTA0dPVjENMAsGA1UECxMEREZBVDEMMAoGA1UECxMD +UFRCMSswKQYDVQQDEyJQYXNzcG9ydCBDb3VudHJ5IFNpZ25pbmcgQXV0aG9yaXR5 +ggIYIzAdBgNVHQ4EFgQUKw+Zo0vp1a4Akzp4aMvNIabPR+UwDQYJKoZIhvcNAQEL +BQADggIBAFPUqNSloDycPGgr9iV9Sbr06U24ds3RoT9fMpdczu15DUKoX/1W7hS0 +V9Kj251iYLbVaf8gaJtfgOfTrjJwp0h+OcToIMiCMUex6awFc6hP6FaLbo1zvYZr +oEWznJUowpyfs94mWnp1lixosvbj1ZCE71k7EqB3QThwFGFWTQnXvgGeMTXn34Hz +DrN5h1bnpfCOdiWxVCdV0o4pVr2Qg6a4psEO7vteuHzOp9Fry6QsYFMv+f2HDelg +ihG6orAkmKb3PYKcbpa4NcTXwMbJT2/LPnCPwapEnzCMUESCqh7Z3r/+FG0k7JlN +kRBwOoGiRyW9sEjKJWnoYLPAvNYgicrXor+vo58c2PU4sTgnYg7AROvSlKOj5SSe +VAVt/LdVjaIpPX5s4Oz2br2btX+arlOhh6sRl36k0T3mCXkWqb5Rot62y1K7eDPf +1WyZSwvjJk5I8fAmUjrTxg4iKZyUdi7tTDSvQ0ItIVoO9WR1ojK3S12uktP87Maq +xOrHNAPSdDozFcPTWQYG2qeVINO04toNSiXvUfOIfqZAfizKOHEMVQUI13wWNTS0 +bUgYT0ye3ZW5nlj5wwDz1uRAXwuC2inl+U6X0DumHzBFRZDBDkc82w6PSFKtKDCB +O5Hmh6vHLq8By+MrdXNi/qZi1uPfp0keABsoeqGICnw+48GNHKnB +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +fIREwHZP +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWjCCBUKgAwIBAgIKQ05DU0NBAAAABjANBgkqhkiG9w0BAQsFADCBoTELMAkG +A1UEBhMCQ04xGzAZBgNVBAoMEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECwwb +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRowGAYDVQQLDBFDaGluYSBQYXNz +cG9ydCBDQTEzMDEGA1UEAwwqQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5n +IENlcnRpZmljYXRlMB4XDTE4MDIwOTAzNTQ0NFoXDTMwMDcyNzE2MDAwMFowgaEx +CzAJBgNVBAYTAkNOMRswGQYDVQQKDBJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNV +BAsMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECwwRQ2hpbmEg +UGFzc3BvcnQgQ0ExMzAxBgNVBAMMKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AKpWShb7G/iqU2TqRr+ZeTYboFz4p5w+Mskp4SmHsYXlyrimej+QVOYq1JH+pns2 +tN9qaDORfbT5tQ4qTejk+K6lxGWYaX0IIXS4rzRs8PlwfikwSv9PZPq5LfrztW2e +WLKDjY9yrOWnsGl+nxKU1phpvWM5QgPf1odNbH9CJZLwP5Nyy81wp1q2oZp+G6CJ +0cPkRstZXojLBSmklusrnMEylvXd4xwg3eXZOhMukFw0OmVK2Nh5K0jfAnrnzwd7 +iXe/G0ilgaun6aKkxR9TXqoZD+09DsUZPrmJa4eAOnERZNFTjGljGUrKZDAAaqC0 +xp8C1AZEGYKQ3kw6logPBB5cu9xlJ8IByTZ/YQpmTIFtkYuerTiaU2KoKKzRTRJN +vA3YOobiPa5quy5czh0mTiLtL1Z7+QV22Lr0o5rXAtmQaiEPkdppd09mTrDJ5R7E +jOF1FrVAPehs40D44Aootb1aXqYU0g+HO0vCVFwj+PZotwoeY9DNU6LO5N6s5Qcx +eFrgSHMTlkNsoFnf5xf4pqUvDAhM+/RLgLA0EpcEWHKU3tXvxhL8+I4Xd4q1Waos +NSYSfTH6vtiJwIrd6g9ixifP7bClUQkeMBOyBHHLEnogVZig2596OznkxZDyCgSF +Ptfu1kmGPSAN8wqAc1rVdE1aQyUwqrreWEeIiuQ+e6uPAgMBAAGjggGQMIIBjDAf +BgNVHSMEGDAWgBRKZzmKHQEixT1AV6dhSTRfw+cCNDAdBgNVHQ4EFgQU8XtP+ydu +ng6gqo91WbQUwZrxNikwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgw +MjA5MDM1NDQ0WoEPMjAyMTAyMDkwMzU0NDRaMEAGA1UdEQQ5MDeBFWxzc3NlcnZp +Y2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NITjEMMAoGA1UECAwDQ0hOMEAG +A1UdEgQ5MDeBFWxzc3NlcnZpY2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDQ0hOMBIGA1UdEwEB/wQIMAYBAf8CAQAwdQYDVR0fBG4wbDA0 +oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fQ0hO +LmNybDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9D +SE5fQ0hOLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAW4g/LqifXKpvWc5prrVQBQwa +gzml3bYNvIpB1BjlZeIASOlttCcr3IY52yZeM8/7A5A1660dABs3Fwv3h8BOYcjF +LyAoe2mND4s5JGb/FpzXOms6wfQvwekBQz/ksSiktJ2jMoIuUTffvsQPmnwIQPjq +v7gCcJY8qxYWTTf677x/N4d6IHnMCu8Qc+Bpe4A6TK3uPI9uxLZ7aUkg0YCnRXCp +MWQKkmWzzPSBMt7OuTylD92UhHCZYAY5qLpGrn6HN0APCDvz24dY0vSKNKFigOGa +VeV8OP2TQP1AGnHon2oq1iEEGYl/b4kw3ktX97hZdSVtFcDA7CBsCEp7MLDItVEt +wUkMuJI4nqYc7a1bbqVkZzEmA8kzPSAxCOEClQ2HCDlPl6V5H4cTnbGRpssUqyqZ +MaNgKWea46G3iensU/wt3aFYjp/EWg6wl9Uzgw0hT9FmTJY01pmnq9vhEfrcfAGN +ENhqrNN8yKVadBAPRBrMX9mlo3n2MeCH9Jm4UvIsmhS7K+LAJRDTS15c044OLL6S +69NpcRAjdCOE/3dg4p/jLAnJo577lYtdfK1EKr+szpalmUTwfQniY50jSU31mVQ5 +iKhH4N/lvJ7XpkiTRanPbz1iWr56EBrxxpAA0MJN8sGAhruO7dQ3B7lwWH30ex9b +5nqC6wp7G6lSC+4SwbQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHWjCCBUKgAwIBAgIKQ05DU0NBAAAACDANBgkqhkiG9w0BAQsFADCBoTELMAkG +A1UEBhMCQ04xGzAZBgNVBAoMEkNoaW5lc2UgR292ZXJubWVudDEkMCIGA1UECwwb +TWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMRowGAYDVQQLDBFDaGluYSBQYXNz +cG9ydCBDQTEzMDEGA1UEAwwqQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5n +IENlcnRpZmljYXRlMB4XDTE4MDcwNzA0MTYxOFoXDTMxMDYwOTAzNTQ0NFowgaEx +CzAJBgNVBAYTAkNOMRswGQYDVQQKExJDaGluZXNlIEdvdmVybm1lbnQxJDAiBgNV +BAsTG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEaMBgGA1UECxMRQ2hpbmEg +UGFzc3BvcnQgQ0ExMzAxBgNVBAMTKkNoaW5hIFBhc3Nwb3J0IENvdW50cnkgU2ln +bmluZyBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AIE7XHumxMj6lZGSOTXrsUMvdozrs6IIbGuv3FdalPhFyLIorWZzNLG/dCi9wdIp +WBowzSzUrW10wqc27Xrr5PSFC4ItRx8ellbN4Sx7BT6vMlmi/O7iw2LbqGDbcxR+ +hGy3EgGLOraYe+jW6jCMx9Dv1fIHfQJpnkE4xtjaomdFL15Ze/HEE5z94LTcds6d +J10/zNEYb93HwfNHbgDfDh3ISoqNHyIonZ2unlpg3C/+pkBhXKe0PuvP+qr+DBgz +Ns1cQ4MI8kihPMxHPWhRLg6VLkbm12V2SB71+8e+tR1EuHxn8KxDTFNuWuFAf3We +9M7RgEhGs5RHuRaf6hS2YLEpcKhH7SLqboKUsBD+N27M0JxoH25X2huMk8mvFmnV +ojR22aqGzehkoMee7cBG/dB7J3HiSBWSnVCMXQ3xkYvP4TRi0FTrTbS7RqItHvcp +gKQDRfa/0Zz8sh15wf3CdmrXs4EBW756T1z4wC9ZUc4kDYHLCdcC8apV2R49vZic +WvU1/rDruJIN9lRbdeOWK2av9RmtrOT2b25c4qg/Raxrgehf1wifqcKx9wBfihiy +JDzz5sTjXLnf9JugEujozyZ2u06t/qfuEvWoLhqL/IujbCenet15FGVp4MlMi93L +E/aGSCR+fSbipKrhmUrFEVDGmKHIvgT5TF3Un2PwUwklAgMBAAGjggGQMIIBjDAf +BgNVHSMEGDAWgBTxe0/7J26eDqCqj3VZtBTBmvE2KTAdBgNVHQ4EFgQUpYdSik1C +xAM0yCf0kab0qmhi9+cwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTgw +NzA3MTIxNjE4WoEPMjAyMTA3MDYxMjE2MThaMEAGA1UdEQQ5MDeBFWxzc3NlcnZp +Y2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcTA0NITjEMMAoGA1UECBMDQ0hOMEAG +A1UdEgQ5MDeBFWxzc3NlcnZpY2VAbWZhLmdvdi5jbqQeMBwxDDAKBgNVBAcMA0NI +TjEMMAoGA1UECAwDQ0hOMBIGA1UdEwEB/wQIMAYBAf8CAQAwdQYDVR0fBG4wbDA0 +oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9DSE5fQ0hO +LmNybDA0oDKgMIYuaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNhby5pbnQvQ1JMcy9D +SE5fQ0hOLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAJCBElNvSZFYGw93IfKHJMR50 +WBGS/nyjAn6cPMj/v2Es2/vX6hxG2iEY84ss/AiAIljgqDxuDNrcBriEOr+vX14t +c9FYO75CJI5rN7gStRfkwInFlgAWFOh5zQzvWfrLBrbL3xM2Yd9E3Bp80nE7pJWw +k1PyNOgJuFpPUSs17jSecBXgscee+5GxwLjQX73hQNLYigeSVKorelK/Be55UrYH +VW3TNS7OML+8TAopbOcLlIt86kA+o7jLVkw9g0d6j9TlB2NuIDXIFxand0MHD2RT +lLapaf9vg/WXDLGoT0GcQM8/O5SDf9if9zLhHOF/CKh93Z+QGWTXvkAGUuZJSDH8 +zd9Oq02QGDL8dwFzds2RiLlfbg4HjS9TbobQ4si+MHE3lslxIti0MRPU2FkelHiz +P/QQqlv45t3l47qWS26+fMcTXJ8/vZ43YzAwIu34vX4JcU/aq9vcvRf05EFKI3Jx +0ODoSZxDuwjzuuqfyxJBIIxHlaUrGSYL94klsl6755arW9EJMsepBHiOBWOoG5Lu +ZOLk6nZIz2yUbV1eUo7eymjUYWChKwkWllCVKdMquT3ToxRw6XkMJ+iblxRl779J +2t2srVTxBJWoCy6SiscW3kWgXikZRf7XSQi1tFFb8P2Ys+0NeXqGnvBMFuZwwZam +EHwNCySze1iqK3pkIFA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH2jCCBcKgAwIBAgIBOzANBgkqhkiG9w0BAQsFADB3MQowCAYDVQQFEwExMRow +GAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEXMBUGA1UEAxMOQ1NDQWVSUC1IRUxM +QVMxCzAJBgNVBAYTAkdSMScwJQYJKoZIhvcNAQkBFhhjc2NhLWVycEBwYXNzcG9y +dC5nb3YuZ3IwHhcNMTcwMTE4MDgxNjQwWhcNMjgwNzE1MjA1OTU5WjBQMQswCQYD +VQQGEwJHUjEaMBgGA1UECgwRSGVsbGVuaWMgUmVwdWJsaWMxDDAKBgNVBAUTAzAw +MTEXMBUGA1UEAwwOQ1NDQWVSUC1IRUxMQVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCHDE7BOUwMDROj5yVU9duYR2bx/Z423NY5Ss/vmNoKu0qmbrcN +Uf8JQQuSD32xFIQQ/mvbp5Zkdb07SW64qC9SRHCRvrEL0dqYGOAX80WOr4yB4ber +gbxcy1ZmDxpbEvglWBf1iAC9nwxunLDE9AdcjYssGHCBcNhnQaBDRy9owky4fUWg +xzFYrTIBzsCIun4hnDNAEkuvnT2iHghAO8F/iYmbg7GmcU0w6/TYnV6WQ3iw1kyh +Ls01J+9Mkisao8Bwjm7C+Hydf48YGNEHjLy/9fmeZxh9ZF/5L++G7BhT+7R8a0z4 +qqUw0DxgQ4sO02sko5zodNzhmma2yzdD3DWL7DCfmgr6by99EhaBVonyAvPW6TVi +eQvrGJJYXg7HbpJaLX8fi9hbr3jPf0P7F13n4EezPYqQjHEEwwXgGp7PXDxWXOQu +mBhxuf8Dx6LEFP5R1y6Qk62mMEBE+gNq6F7h2/eFnSJS91rkarlVP2pFRYUU6cIh +7iRIXpF3urcOuq1Lnz5nPRPlhkKR+mvPwT5VHspX9Js9rz13RyKqWRrzB+FO/wUc +8LAz3jiNfI2jMfqgpmqJ+ViV5qcqZ+RsKnw65HisnKY4gEztVC9Lm/yB97DK5bx4 +W2mAZxm+iSB9hWjWKk2SC8zF6DG5oSUhJqBrKoB3ShhShpL8h45K7z6HnwIDAQAB +o4ICljCCApIwKwYDVR0QBCQwIoAPMjAxNzAxMTgwODE2NDBagQ8yMDE4MDQxNTIw +NTk1OVowDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBT2KLaV9Au26PI3qO754Zsk +t2XUwTAfBgNVHSMEGDAWgBQRUG2dJ5gf24lvUsuTRoPld4KCLzASBgNVHRMBAf8E +CDAGAQH/AgEAMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cucGFzc3BvcnQu +Z292LmdyL2NzY2EtZXJwL2NzY2EuY3JsMIIBvgYDVR0gBIIBtTCCAbEwggGtBgwr +BgEEAapsAQpjAQAwggGbMIIBXAYIKwYBBQUHAgIwggFOHoIBSgBUAGgAaQBzACAA +QwBlAHIAdABpAGYAaQBjAGEAdABlACAAaQBzACAAZwBvAHYAZQByAG4AZQBkACAA +YgB5ACAAdABoAGUAIAByAGUAZgBlAHIAcgBlAGQAIABQAG8AbABpAGMAaQBlAHMA +IABhAG4AZAAgAHQAaABlACAAQwBlAHIAdABpAGYAaQBjAGEAdABpAG8AbgAgAFAA +cgBhAGMAdABpAGMAZQAgAFMAdABhAHQAZQBtAGUAbgB0ACAAbwBmACAAdABoAGUA +IABHAHIAZQBlAGsAIABDAFMAQwBBAC0AZQBSAFAALAAgAHcAaABpAGMAaAAgAGYA +bwByAG0AIABhAG4AIABpAG4AdABlAGcAcgBhAGwAIABwAGEAcgB0ACAAbwBmACAA +dABoAGUAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUALjA5BggrBgEFBQcCARYtaHR0 +cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS1lcnAvcG9saWNpZXMvMA0GCSqG +SIb3DQEBCwUAA4ICAQAH87CKK+qwLrejOsFtMmtCmT2A8IPr62vFF3xZeSMosfYL +IU5tJKSJbTBPS5R6T/YGVgCp8lnByCOGmUkmLlX7y1ebgmcVZ0ktAUb2vfrhKk/M +2v7mpuFhaGPRJ9E8lg5giBoEsMrCqTs9kzSW0ultQ5LXN+MUWezhzQAQW/BwHtcN +dkb1WiLhQ9wHpaBJI3S1uLeJwft4HIziGPG1XQGshuCWGB5d877UKS3yi2lE3ZKe +l4bsD51L8xFyNn0iPNoqMnuNg1vXjkytPT8YwMlZgQ2fdLtYJ4P7qTKuQwgzlNDH +lEOUvJXW6VpfzBsRPWrcCRv2vpNsYnMBy6yUrQMGor58kLKEMTTGqAkRJFgZ1hbe +YxpzYf9Po9NlcCEbw5PSh/uNgiydnNRVbH1jHAqP1H/cblWfJrc9QTposAVoJVSp +WcGxxFvjc8KYgwrf4QpIl/R5ECGkPQtzf557i2gfpybEZxWNJNrYoF4HIUF+7x19 +3FneHLohSs5XZ7zOS+iKNHMmVVwKMjNwxc4FmmktX60r+6VXr8j7Q1+2q09ToSKJ +gAg6a6Br2oROq8dbyxwmA/BhW3KHE309g2Ewau3liZJAiHQq0mMChVLXCnfS5sUR +xeHQDZPLPmkUFPxtnzZNjadk09SLZbLAufeWuHHOdWb6ql7WXLe/4SBa96O4ow== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAKEwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNjEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMTYwODA3MjEwMDAwWhcNMjYxMTA3MjE1OTU5WjBwMQowCAYDVQQFEwE2 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ9oMeJqcw2II+uH +fI/EWndSP+M6C7P0bgMrWYw8YqZxNc4KWOZN1uA4SV4flOk+ID52owRiUOFfV8fR +o3I8OMCaaTXhjesKNqiXjtfRLxzE3KzE5/rCDp6NM37yRvF7NFmR15JXppROnTV6 +6VvPYExxXXcn3/hSHa7RAWUrxp6fMKpTbKD+5KOd7gxAzW3CJ6cEEEESUqN/U4YU +31lHl5jwE413iydehzihBsK189aelZmrowU5T5stJ+TApVHW5szWx1yTFyRltkjb +KiRye8yT6rc9ymKdB2n+zn72GUzox8kSLsDpi0LvBS1/fmZYh5a/fVm4LYdbJ7i9 +irF+LS2GLd94REZiVEMp4/svTNi/oOBh+gmluQVXhwMd85yNT0j6P8FR6K64oQ1l +QEndU+MWBqzgQSzXjmYRAjvgqeu1upthk7VXugE69Kflh2HYf0qxEE0y3Fim+3aT +oyeN80S6zXCLvDj6anFZCry+nhQ6GdOf1nMEOm3h0IXnlszJ4hpJC6P+TqZgSUE3 +WBvibtve4vmIU0754exXW9h1bZvACSRugP561PUVFS+YxaNABeehjct30utMyF1u +bXNDwuVMhFnUd7X3vrSQU+yE9P4si+vXEO6f0SUvkl7wR9DSDxQcc7J+RgC6Yqov +vyQSJclHVhCTmV8NnnQMqRunxNqLAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDE2MDgwNzIxMDAwMFqBDzIwMjEwODA3MjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMuOMW7BKRYyvkIpW9sky4JRX4qyMB8GA1UdIwQYMBaAFMuOMW7B +KRYyvkIpW9sky4JRX4qyMBIGA1UdEwEB/wQIMAYBAf8CAQEwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEAna0e7FSGJNuMHG8yGt3bDf6g/+h0QuY4 +kdwgZ9UxuUoFTu385OlzcmdAyDOHSsEcGyg2KTeIDaZ8MtQj/qmeozpk3RtfQnVY +pSwzXiqFBj2UAEcGZuXK6jT+r4ZLIE56lFSY6i83JMNRY+hKLCN15CWTxNAc9l5R +PLRpWUBf0O4stsC1gsmnKp0Ngz5ekQ4zSktsWO+14Su7xN1lu9ZHOi35Rm8nrNCR +chotfYRQRPu6j7SVJd6uGfX7glM5mnZwDrYmpf9HOazJOaWxalU/n8LvuGAQSYvz +cMgjg5cwoFF6N3lg1xmvIXBvq6NHg1R4s+d2M8OdwZ9usWjhihNDsA6xXXfStmhP +YZbjKZWXVtDzlwW8jlUVuP3m2XCSBWmSzpF+zz4RymXxOdrLlyHG5QaNWxqp7OuK +b+bPMciI6ggagROpFc4QsQltvzc9E4J0IGVRXlXcGn7PhjA7N7eWsyOy3t0lfAya +muoyZOxkTP+w8SB+k0X2S/MD/eLFZOQhVPeT8MLWZ/G/ciQqwjI/f9H1vS0ri3Q9 +ns4nKvTLi3E48dedxBj3a2adoSlYpqL+eL+Neca3TdON7IA9FaALyJFlOLxYddaj +cEK9XIhkFmdkuC1LPZ148k6SOJxEoR5JRYhGHnZB1MfqOsJk3JcT1R3nH/GrDiGr +GUOD/nm2a5g= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAKIwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNTEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMTYwODA4MTIwMTIzWhcNMjYxMTA3MjE1OTU5WjBwMQowCAYDVQQFEwE2 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ9oMeJqcw2II+uH +fI/EWndSP+M6C7P0bgMrWYw8YqZxNc4KWOZN1uA4SV4flOk+ID52owRiUOFfV8fR +o3I8OMCaaTXhjesKNqiXjtfRLxzE3KzE5/rCDp6NM37yRvF7NFmR15JXppROnTV6 +6VvPYExxXXcn3/hSHa7RAWUrxp6fMKpTbKD+5KOd7gxAzW3CJ6cEEEESUqN/U4YU +31lHl5jwE413iydehzihBsK189aelZmrowU5T5stJ+TApVHW5szWx1yTFyRltkjb +KiRye8yT6rc9ymKdB2n+zn72GUzox8kSLsDpi0LvBS1/fmZYh5a/fVm4LYdbJ7i9 +irF+LS2GLd94REZiVEMp4/svTNi/oOBh+gmluQVXhwMd85yNT0j6P8FR6K64oQ1l +QEndU+MWBqzgQSzXjmYRAjvgqeu1upthk7VXugE69Kflh2HYf0qxEE0y3Fim+3aT +oyeN80S6zXCLvDj6anFZCry+nhQ6GdOf1nMEOm3h0IXnlszJ4hpJC6P+TqZgSUE3 +WBvibtve4vmIU0754exXW9h1bZvACSRugP561PUVFS+YxaNABeehjct30utMyF1u +bXNDwuVMhFnUd7X3vrSQU+yE9P4si+vXEO6f0SUvkl7wR9DSDxQcc7J+RgC6Yqov +vyQSJclHVhCTmV8NnnQMqRunxNqLAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDE2MDgwODEyMDEyM1qBDzIwMjEwODA3MjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMuOMW7BKRYyvkIpW9sky4JRX4qyMB8GA1UdIwQYMBaAFGQ6dlrf +VzGTRWbOWFUmmBWWO/7cMBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEACJ7F0z+t+6OZk0LncQobwDidYX3FyIP6 +9xHpkX300GEJY25m6k9Ki07kvTxRp3paxdIUhO1ZuKb4Tbs91qziGC3S1eKGuYQK +Y7RKI7vvBwVyqXsBpFTNbGnuzvJS0FoqG1kNmvwQYiG9govUKeMvsotMsNbniKOr +CUi1e0nSMbKSRDrhOyhww1t56TB5Js29yCVNDKN1z2xNiUeq5GbRTSJDapQprMVh +JnyTgjkUtOpH8zkWS7yvG8VWR4inLk7NIDnwnViOfXmGE4lBF91up1QYH3mj+xYL +mPlpanQ0bdL0GMwMpCWYMHdkSCEqen8ROeHgSF/XMKUdBJq9Q07xr0ZMpvH5w2mB +r3fjTWsYUTN5RqPbU7gTpqS+RTcVlusnehPeu9fETpqGdZrm7P4vLuPfZaBTkBV8 +hijFej6jKZMqUxcyhUP9J9uw9I1GR/T7XHUfwktXhicImHxgM04VgaJDHQ5ZlbXf +8XsRuVxMZzYElotKLynGUIrfkLytVT8P1ZAQzHrA9tGKuvTFahxHD7Ju+y1iwk02 +q2mIY0Jy7tnwEeVORlA0v2scnpNfNhos6rHl8Al0uchHtWxCT6lTP1H13WtDn5Iw +Cqrf6lpws26zQL76nmRV1Re52a8FFQRZeAMmMMTOM2niNp256Lw3GBO1hQeG77F7 +J13PBVkhG8c= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAOAwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNTEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjEwNzIxMTIwNzEyWhcNMjYxMTA3MjE1OTU5WjBwMQowCAYDVQQFEwE3 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKDyLEOr3wuc6YrA +hadiiDqoXjjTObKKvtJpymfZBfSFWInFLIw1hyK6WjdWecGvJDRzF9llAK6FzJXD +Lgb8hYkM4COgbgyGtnVyezw1Z/HcCdpnz5IS6LhsXGn2uqDnvo0+AXQI+0joYl1X +vwMEthJyOAIRZhCkc6Oj/byufG8HLh7IrHkFLm2JgnKUBMR4Ne7/6J9P8JyEhLqA +puE8dJWSSNu5YzepNBPdgNo9c4FdIeGyKC8yFtbwJtYSfYubhRxhRC9dGghjT8Ev +fQGH2gEcZfpv06m0yc7lMgat0EZQZE4p1XoD8PLIhR5omS5yAEim1ORZu5vrb/TT +S4fNt84EctlB7DbCWmltsVWnUdAgqtgHJrCvz33a0a7eabIGncLO1Yj2EJZZDEbL +dvuReSisO7RwCXQPB1doXdqCbeBji/iai8K48KZ8XvR34Xgd1GukrbvhxgQ3mnvx +G9oBgRc8cWWr6L7VZyNyyFCvdhzrdONG4Taeoa6rMFQ8fGeLgPmBXjLBigmfKIfd +tFIlCTVxbK3ULKHK7J4o7v+gTEvMFplJUvbc+wpDIeL88NYX/OekgNj6N6MmPdcA +Q0IRb/8PK3tIhXtvMx+ljXxYrcjsbF2P4UNI785phf54WHwMiI03sDaKJQ+2s5tk +mVKt8D/bm3ZXzznavOxmwfZVAFVxAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDIxMDcyMTEyMDcxMlqBDzIwMjEwODA3MjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFEH1vvhYbNcdDNjit0bSKnzgY8Q6MB8GA1UdIwQYMBaAFGQ6dlrf +VzGTRWbOWFUmmBWWO/7cMBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEAghRqa0nDvA3guEk5hhK7YddjE0c5W3lz +6BtVy6wY4/6J9u5dTwQywyEqlUojsAFPJQV7ZgIj7eV5Ngd6J7BR9Kf44kDcoMeh +/pC6TNRDNVBu89QOtXBVX0wTNYVCOw1XWpqgTLYU9MoJxcaaxH9RKYApQ+PMwCDl +ODV0OZjBX9Q4Jebw/KjY3LNMAnbsFROirznYdvALRIye8OE2u6ruxZYCpl4R5B5z +ZTyUug2wf4vnYd2ia8qTgPnzd85/An1WqgIoCj/hnenOXEaaJ9/nJu6nfGxETM1n +HCJsWrqFA5C7YtrcCEUA71sZpnq099p/JVu1zI9rPwkWRqrMY9fSCrUGJPbSYox2 +1Ay6kSBKMz22NifLvFZ5jVNXcnbxWslNrEzgIwUfQC8m+CvQoyS/IR72ZYoAttSK +0WNQ0/OgjD9oiGz4W87yFWjrtCAU5GuJ2xUcdALuB93gOw3cv/edg9Pi6K3P+kwQ +tS9+muuA9pZnEOdc+LX7c831iFZopoC1D9vaUyYkJ7sEJpE+tMo1YD+zCJ2kZUkr +mHRFr9gt9cLxWoesrddnioF6V9bBdAcIIrs6/jt7edt9jvU6SGtCmzO/XdyQ7qBj +cPNA9wATeA4tftdr+tKdmYHTsXX+ENNVsTGkPbJkp3j/y1GLA3pcZohMOkyV7G7O +/77KvjQLFa0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIH5DCCBcygAwIBAgICAOEwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBODEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjEwNzIwMjEwMDAwWhcNMzExMDIwMjA1OTU5WjBwMQowCAYDVQQFEwE4 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMzzTJBjnWB5nCv7 +71Kt8IMEcxXmRj5E80ZcuyEH/tK0wKYF4RnKX6DcWK8qKV7QK/4Vnb5UW0fsz2XG +bkpOthj63f9SXyDs9A3RJ3u0rtcgO0wl/xdQR+6kuCdvyZeEWksi7zgz6T2jlL3z +8545SohBFAwnTu0b1tMeFVXxPqhVNZifE2d3mdzYVFAZaobjqPMI8romxNM6TUKA +3Zp9wYs4v4+VqBQr5V8udsPEs4q1UHsS3/iTLdwi1zOGLx39k8POjiYyudHXUDug +9Pu/GQx1ULMl6X6PfCI2wu94CiQckEmMtYx8fj6tYA7YhrDMJ6NstTteORmjS0Za +7YXrzLjzB2p3JmeV+gVeK4R15gxTxTCZOwR6yKGyieesd0rSVrYaijz39W84mrSx +2r6/oFRh1r4Dy6VhAvVPffu60qssljxeQIfeU/0SA04wPlYf+S2hgfXsZ4TwTagy ++WpHaH05g1YPYAodF8pfMgQFP1ULIfAboGX/AZUcrlBBgfBJottuPL1l0clpwk3l +fXJYru3/bdTiQmg46Z+JPB202S7xAAuTl6T3VmaIvXIQHIpaKwPw7O0ZFfJOA7r1 +O3flbj00q0O75e2BJz9FZXwigG3Zt881WwcffzRyQk1heFTz7EfFJrCIljGQMFgZ +vUUj/iiNAO2EUrhGzPxYD88ASO/bAgMBAAGjggKGMIICgjArBgNVHRAEJDAigA8y +MDIxMDcyMDIxMDAwMFqBDzIwMjYwNzIwMjA1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFJy+kcu7EEEXnYUlI0QOWuQGq5aRMB8GA1UdIwQYMBaAFJy+kcu7 +EEEXnYUlI0QOWuQGq5aRMBIGA1UdEwEB/wQIMAYBAf8CAQEwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgkqhkiG9w0BAQsFAAOCAgEADTNq8sOg2D1Y9PQGyqZq4E1Ed7coYG1F +0UIW0hcEEpCjoJHJfcUTvEFidNGi/SmgDmGHbyrX+LNvASqTlwsCSso5PTbJFvMY +OdGyEaWb4up8kzh/wSMtup7yUPmVB2dxxWkHLhmVbmyh3D0RNGT67TRb+6MUPjPL +S48leBGLHOHuzMgA6psp/7cGd9CDpirtSnX+Dzdrm1paIGhRZOiL5POEGZOaMyKg +PvJ/PtCRhFJQiiSTIrUeK9WKOdLQ2RwXjaE3tCvl/9WKEtA0u2LjTaTKjCbqKQHe +UcxJ4WHtd4k0Lrxmhg2QQUNci77cLHLa9iYoD2+arVwD62SxXPT9DVAzGyp140Ox +LGUxOa3JXPuwJBZjm5NvgVuH4cf3OYFkIx37KM/+iFYeN1i4NoM4cb8wCDwu3FgO +VQVfFSJWp7Tm84h+Yrub9ug80JoWoR8PzWFiwfTFLuPNvRenpLY+vyFp2wEonpgH +Uv/faCCgfA3LFj/bYN+MrffW8lPfOpDngFusbi10+RQ1LNI7PU3r99rP2pNB4dIT +YE0v2mTAxwMQAXFSgO9fC1ZzUL1w7Fq9AH0uM6JHqLtshvfZ+cGpR3VQXz1nYOb3 +OSdzUwqGzna1AXDP7uJexeHD6HS1LZKAwHV66WXCrJOHh14PSHatBFEs/I1PNMqg +8RlCIw5E/LU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIIGjCCBc6gAwIBAgICAPQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEF +AKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGHMQswCQYDVQQG +EwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScwJQYDVQQLDB5JZGVudGlmaWNhdGlv +biBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMMMkNoaW5hIFBhc3Nwb3J0IENvdW50 +cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFjYW8pMB4XDTIyMDcwNzE2MDAwMFoX +DTM3MDcwODE1NTk1OVowgYcxCzAJBgNVBAYTAkNOMRIwEAYDVQQKDAlNYWNhbyBT +QVIxJzAlBgNVBAsMHklkZW50aWZpY2F0aW9uIFNlcnZpY2VzIEJ1cmVhdTE7MDkG +A1UEAwwyQ2hpbmEgUGFzc3BvcnQgQ291bnRyeSBTaWduaW5nIENlcnRpZmljYXRl +IChNYWNhbykwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCq1rn5Hup5 +wiRZ0ld+K5NDTwSayaZoWLJ/hmM8MjYMUYCWH/pXrhD0WvSi5JcT5Qgoi/lpGX47 +VrkaiMUeqFQEPMOzAjMWNVhk2VPbr7jW8mwO6koU3zI/gGYtfr2CzqJ1OtzuDwY/ +QKaiAdGFiMgQom3m2xoBk8m9Zo7LG6BYso6f3tGm27T4s3iirO/ZX6bwt2Pvp9Nh +vxyga9eoPZVHN5pYYd7LlauUj5PQ1AB8IvtbcPhTbtDmgUQAxye3uy++cMGJZPnc +TN85x9S2Ama6i3vGP2J4KDgGdq+4FxHIcty6A/HEwtBy8SrnQQsqoxny5QndV4mP +VUS1Yg8PLxaKgDor2wdZUWZpu8tguNRrbJpIQYoq2qfHD/1HYV5I1XUH4XzYTqzf +3OsciP+VNwv45HviBH2pNJshmTBns/IA56Y0477x0ZX0EoEuQdcQkPNt6mcG7kOT +fjSl6d9lWPu8EDNil2LpJ/fkJBsoa1Qgq4VJQ9XkWWX9EvGU0VQA+DJrQl3mfYxE +x0gW/c5kPF4SAzKy9VncZTjMOIqFbMD0XFM0uFMv7p+tSStJVxvoBgs61pv3im7c +sBx8jFekJM4BhixcNpGMRbEHm1YZ9TMODe4pppnwlyrNR2nQ8ubsU43ONrmBAa1T +H/wErayvsg7UXLUa3ya2Iaq+miwKgJxVDwIDAQABo4ICJDCCAiAwEgYDVR0TAQH/ +BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFInWgC6pUEVzu+W6 +ZXap7BJAsL/2MIG0BgNVHSMEgawwgamAFHjvRHEzVFnmmK2UsXW5J75HSfA9oYGN +pIGKMIGHMQswCQYDVQQGEwJDTjESMBAGA1UECgwJTWFjYW8gU0FSMScwJQYDVQQL +DB5JZGVudGlmaWNhdGlvbiBTZXJ2aWNlcyBCdXJlYXUxOzA5BgNVBAMMMkNoaW5h +IFBhc3Nwb3J0IENvdW50cnkgU2lnbmluZyBDZXJ0aWZpY2F0ZSAoTWFjYW8pggFf +MCsGA1UdEAQkMCKADzIwMjIwNzA3MTYwMDAwWoEPMjAyNzA3MDgxNTU5NTlaMD8G +A1UdEQQ4MDaBFGVwYXNzcG9ydEBkc2kuZ292Lm1vpB4wHDEMMAoGA1UEBwwDQ0hO +MQwwCgYDVQQIDANNQUMwPwYDVR0SBDgwNoEUZXBhc3Nwb3J0QGRzaS5nb3YubW+k +HjAcMQwwCgYDVQQHDANDSE4xDDAKBgNVBAgMA01BQzB1BgNVHR8EbjBsMDSgMqAw +hi5odHRwczovL3BrZGRvd25sb2FkMS5pY2FvLmludC9DUkxzL0NITl9NQUMuY3Js +MDSgMqAwhi5odHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL0NITl9N +QUMuY3JsMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG +9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIAOCAgEAdmX3Ls6eTahH+0m+JKtB9Rxl +WkI0zZnnFTvKDn8tjIsN9gsLNnJEFXHSF6t1r+QUklLYmQQNlwT6meiblPHv1AU+ +nrbBLtP6AmZMlu0oTuPjZfiAvGQWAAKaFxGLl1+LJNgXYfqm/iuLDNlHYDnDpaOD +UTnlgWY79Mt0gF0lp1xcSHM7h3xI45/2hA73zf5AxeoA5Q8CpJvVBQmCNjPuODJH +ZILnAQDguuLto3BBOwRVS93iYrLhsL+SMxzefSR5WwLcU+j1NDn7JW7gIjYKYDf0 +snWxjk/2iwcep9b9E8fE1VoSjGQkmnDnZhgtdoLrl/XHlWGo6J0Uv1RbHbB5zIJ6 +gGQrE+/OHEY/GoS7QgQsSFyR8c1P8bjIY9uOE4/vOkPs/UPDfaWIg2lxsM6Dv+Iq +r5UzyQ6EVPlaExDNX1m3+D7AncxIegJ8zQZ6sA/ctPjVJg9e6Rf0iyJbI0eprxUq +FJSpw2kuIZUIYUyE2bRp6sn/ddVrbAvR4HuviRv3ewv/RX/Gzyx1vWtx5zLbWv2j +caGGzNyOShpd44E0HgHx93t0l4zEoilYmAo6IiIhzZAQbG/8zs54xwryUitfjEeM +UY8bNYgpNB8gJA0iuJDEc62tg+bbwT/zXMC8BseT7E/xiTEI2p62jK0D5qlcIi8D +zRsf9JwkqeJRrXVp0sI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIImzCCBoOgAwIBAgICAPgwDQYJKoZIhvcNAQELBQAwcDEKMAgGA1UEBRMBNzEa +MBgGA1UEChMRSGVsbGVuaWMgUmVwdWJsaWMxFDASBgNVBAMTC0NTQ0EtSEVMTEFT +MQswCQYDVQQGEwJHUjEjMCEGCSqGSIb3DQEJARYUY3NjYUBwYXNzcG9ydC5nb3Yu +Z3IwHhcNMjIwODE3MjEwMDAwWhcNMzExMDIwMjA1OTU5WjBwMQowCAYDVQQFEwE5 +MRowGAYDVQQKExFIZWxsZW5pYyBSZXB1YmxpYzEUMBIGA1UEAxMLQ1NDQS1IRUxM +QVMxCzAJBgNVBAYTAkdSMSMwIQYJKoZIhvcNAQkBFhRjc2NhQHBhc3Nwb3J0Lmdv +di5ncjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALDxejKMY/ZSX8E1 +K4BbQ7Ardrjc4aVlAEa5LCg8InXrU79rrO794yeIW9OPEIXydi25FkUvmEv82LQu +bJUEWbIhDwLweWy95XpUZWLcnO+NFpGIqRJKkSR3i3LK7kmpeUxp9tIJPmYn1b4/ +6QDEtLqE2RaAweHJyOhieGNcY2RHQKT53tojlIUD9NwWEk7iQ7DP4HrDp9kCcgGF +eVkgPDOmC7IrVVV1gj+MMrS1Tqxdw2cjXU5trL3FFgUrgvFTwv9AIV3YFbUubufk +888BY0Pg45HCOLuSwbl6CmgNs+5Y3qKn6s0xYQWKz4RqbBQ0J1e63RRsys8lN1tB +a5FqN3D1bDSamp6JfVSaIBQIPvvsC/A5bqyvRfEWPewz9PN8NlLaMh4rZNm61lYv +y5Twjd7cVFp9iCIQFRF/Wi1bb4XD6bkvSJ9ph8tzk5Na3dqkCIS9nJP1j5Hm9A8J +8PrfnkRE/sI4UF/UNt0nUg3tuZEp0RN2CnQVJ2LK6aJmR23Ic309PvTOTC1rP6Pg +xqJsDzTmC13FU1hFCf4mJF6PXUHZAT9/+O6A9/j6S/FAIt5ZkyxwWCqjy1D0ssUH +tQ87WmVOsdPuEqsj4lz/gwRD30F4hv21ZFGkPWTz3n/m5kLld8Hk7zHK4n4GzwIR +bRCw0VtmoF9P79dkLBSeYEYKiM2JAgMBAAGjggM9MIIDOTArBgNVHRAEJDAigA8y +MDIyMDgxODAwMDAwMFqBDzIwMjYwODE3MjM1OTU5WjAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFI37bYzK0ruCb2o9fXClu42A6fN/MB8GA1UdIwQYMBaAFEH1vvhY +bNcdDNjit0bSKnzgY8Q6MBIGA1UdEwEB/wQIMAYBAf8CAQAwOQYDVR0fBDIwMDAu +oCygKoYoaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS9jc2NhLmNybDCC +AbIGA1UdIASCAakwggGlMIIBoQYMKwYBBAGqbAEKYwEAMIIBjzCCAVQGCCsGAQUF +BwICMIIBRh6CAUIAVABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGkA +cwAgAGcAbwB2AGUAcgBuAGUAZAAgAGIAeQAgAHQAaABlACAAcgBlAGYAZQByAHIA +ZQBkACAAUABvAGwAaQBjAGkAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEMAZQByAHQA +aQBmAGkAYwBhAHQAaQBvAG4AIABQAHIAYQBjAHQAaQBjAGUAIABTAHQAYQB0AGUA +bQBlAG4AdAAgAG8AZgAgAHQAaABlACAARwByAGUAZQBrACAAQwBTAEMAQQAsACAA +dwBoAGkAYwBoACAAZgBvAHIAbQAgAGEAbgAgAGkAbgB0AGUAZwByAGEAbAAgAHAA +YQByAHQAIABvAGYAIAB0AGgAZQAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAuMDUG +CCsGAQUFBwIBFilodHRwOi8vd3d3LnBhc3Nwb3J0Lmdvdi5nci9jc2NhL3BvbGlj +aWVzLzANBgdngQgBAQYBBAIFADBSBgNVHRIESzBJgRRjc2NhQHBhc3Nwb3J0Lmdv +di5ncoYgaHR0cDovL3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYD +VQQHDAJHUjBSBgNVHREESzBJgRRjc2NhQHBhc3Nwb3J0Lmdvdi5ncoYgaHR0cDov +L3d3dy5wYXNzcG9ydC5nb3YuZ3IvY3NjYS+kDzANMQswCQYDVQQHDAJHUjANBgkq +hkiG9w0BAQsFAAOCAgEAX9W3TXG+J9BGjT5MULhDPnIEMnS4L5B1K9+WHtlxhNQl +Dwcc8ppavx73q1w/aIV1tHQ6kDmR13mpGTv3UdPN0RKnKabuCwwuzMimn2Bs4rfS +AqhXaZJOnz+PjGbinMkSdzo586Q6oXJcIiMOHnC1lO7hNdqcNRISs7Vf7E3NAs4J +xK2N3Kc9x9Z+hj1cDkxU1oRJER3aXFc0QXcmwHh/UTDgx2P0+Jmn/Ndm0nVq4FsQ +MuatXZavPHrMgP6QbrlhE7hjZ3N0gFiSvX19h61sTnlsg+89DJx0TOboPIqctlE3 +gEvtTl3roR+Va+68lMqrKhOGIAEo2wnkBygNyDNub5PbmXiXcoNVWgaeu7QO30HM ++GAN6vvGnu7owejFjuk8Pb+MPV3c8KfjdGNiNdiT1sLTgwzosbchcW9947usMtfq +DsfOXEk+DIZAyN9yWuDE+s+QH7OgqYAiHZCoaIkqik3f4p/WiMg10f2xHWb7ACIT +TOi/96kYMCci71KG0dZ8pRYxgvPabJNfRuDmuvZVC3f1v9F0nSgbSwDRDtuB+RSQ +NXV8lKb9KUfnA0CY5AuBNIZ4rlZuaRLrP9iEDCKTlhTzbw3QrCTq+9zZMN3DKMhi +zrsgTFb8AObK/yPTynXiqK+Tg/hjCvpvaMv5GkED85T9DPZkw94W3uZfN18Jybs= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDQzCCAuqgAwIBAgIBDTAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTA5MDY1MloXDTI1MTAzMDIxMDY1MlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAASIj3Od2OJzyB3SK/5Ak/vn+VkV1KJBhAL+gsD+f3fAXFggT2Kj +sro1HOAVSpVZJG41dTe2qsP//t6yWGHrRynWo4GUMIGRMB0GA1UdDgQWBBRpNBdk +O9jazcNRvoSiAhBaw/5EwTAfBgNVHSMEGDAWgBTBJK3rE00Yxxd2GTC5jhGO2u3j +uzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDExMDUwOTEwNTQ0OVqBDzIwMTUwNTA5MTA1NDQ5WjAKBggqhkjOPQQDAgNH +ADBEAiAJv+QrIfJ459Ui/ErkiEoPd7f7xUq2RDHzLSEFqfyOSQIgevn0XNegaW0d +x55Ttwd79BCz0Mfbkv3gWf8yvHUoHH4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDRDCCAuqgAwIBAgIBETAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTA5NDU1MFoXDTI1MTAzMDIxNDU1MFowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAARjZPWm/MCx/pIVAhUUulJq66N2bF713uC5Xf87JmN5SYfWW81s +9ncnpfA9iYrP+3GiF/6bkbo6auw1Bbb+hugWo4GUMIGRMB0GA1UdDgQWBBTBJK3r +E00Yxxd2GTC5jhGO2u3juzAfBgNVHSMEGDAWgBTPEDRWix2CbX/3kk8/B4sLvBKF +rjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHRAEJDAi +gA8yMDExMDgwMTEyMDAxNlqBDzIwMTUwODAxMTIwMDE2WjAKBggqhkjOPQQDAgNI +ADBFAiBazrXkMUxl1f87waMeB0YePbcQf2C7R2RPHK7/TBQDGgIhAI/3GP0jOElz +hqt9h+lyCyKsrxwnXxjoelEIPULb96qW +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWTCCAwCgAwIBAgIBDDAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTA5MDAxNloXDTI1MTAzMDIxMDAxNlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAARjZPWm/MCx/pIVAhUUulJq66N2bF713uC5Xf87JmN5SYfWW81s +9ncnpfA9iYrP+3GiF/6bkbo6auw1Bbb+hugWo4GqMIGnMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBTBJK3rE00Yxxd2GTC5jhGO2u3juzAdBgNVHQ4E +FgQUwSSt6xNNGMcXdhkwuY4Rjtrt47swDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTEwODAxMTIwMDE2WoEPMjAxNTA4MDExMjAwMTZaMBIGA1UdEwEB/wQI +MAYBAf8CAQAwCgYIKoZIzj0EAwIDRwAwRAIgVMoejWd7ULGPlqMviLKUZMP/ZJDl +EjbhbkaK0ur5iQsCIFl8qa4YSxhCCsUoRQQ+bfG3U/mdReXZUZWmAwneqJwn +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWTCCAwCgAwIBAgIBEDAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDgwMTA5NDUxMVoXDTI1MTAzMDIxNDUxMVowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAASSVtjywyFbyHS8r7h43+RYOVAy7X7yZQwhiWlifum1eB7vqcq5 +TpOHdhQUt1U0O+kP/+YUD91AoYpHztWwX550o4GqMIGnMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBTPEDRWix2CbX/3kk8/B4sLvBKFrjAdBgNVHQ4E +FgQUzxA0Vosdgm1/95JPPweLC7wSha4wDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQk +MCKADzIwMTEwODAxMTI0NTExWoEPMjAxNTA4MDExMjQ1MTFaMBIGA1UdEwEB/wQI +MAYBAf8CAQAwCgYIKoZIzj0EAwIDRwAwRAIgB0N/ATdxjFtoJ+4KesBZnlIx7I/S +XlfmXzuItZAScz4CIAg8HF/2+s3WuGvOI+mmvvLjsnWsLHBFRIRVKf+ZABI7 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWjCCAwGgAwIBAgIBCDAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDUwOTA3NTM1MloXDTI1MDgwNzE5NTM1MlowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAARF1uotdOIEbUrLwgXV1+KDl3mH/huiKSNKP4tEHQQCa51kgvJo +89MTL9ykKsk2oaDfQ4c3uqVQ0+pOP8Phne3Eo4GrMIGoMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBRthWD8n39Qzfd/my5mANEjQrBc7zAdBgNVHQ4E +FgQUbYVg/J9/UM33f5suZgDRI0KwXO8wDwYDVR0PAQH/BAUDAwAGADArBgNVHRAE +JDAigA8yMDExMDUwOTEwNTM1MlqBDzIwMTUwNTA5MTA1MzUyWjASBgNVHRMBAf8E +CDAGAQH/AgEAMAoGCCqGSM49BAMCA0cAMEQCIE0xhXGPEMeB53yIm6/pyrgeKQmn +FaZqasuAj+sAyV2kAiBhgFNEpeLbFpmdhFAP3Nyjss7/ggM65C6ZpS3Dk2cMYA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDWzCCAwGgAwIBAgIBCTAKBggqhkjOPQQDAjByMQswCQYDVQQGEwJDWTEbMBkG +A1UECgwSUmVwdWJsaWMgb2YgQ3lwcnVzMTAwLgYDVQQLDCdDaXZpbCBSZWdpc3Ry +eSBhbmQgTWlncmF0aW9uIERlcGFydG1lbnQxFDASBgNVBAMMC0NTQ0EtQ1lQUlVT +MB4XDTExMDUwOTA3NTQ0OVoXDTI1MDgwNzE5NTQ0OVowcjELMAkGA1UEBhMCQ1kx +GzAZBgNVBAoMElJlcHVibGljIG9mIEN5cHJ1czEwMC4GA1UECwwnQ2l2aWwgUmVn +aXN0cnkgYW5kIE1pZ3JhdGlvbiBEZXBhcnRtZW50MRQwEgYDVQQDDAtDU0NBLUNZ +UFJVUzCCATMwgewGByqGSM49AgEwgeACAQEwLAYHKoZIzj0BAQIhAKn7V9uh7qm8 +PmYKkJ2DjXJuO/Yj1SYgKCATSB0fblN3MEQEIH1aCXX8LDBX7vZ1MEF6/+f7gFXB +JtxcbOlKS0TzMLXZBCAm3Fxs6UpLRPMwtdm713y/lYQWKVz34c5rzNwY/4wHtgRB +BIvSrrnLflfLLEtIL/yBt6+53ifh470jwjpEU72azjJiVH74NcPaxP2X+EYaFGEd +ycJ3RRMt7Y5UXB1Uxy8EaZcCIQCp+1fboe6pvD5mCpCdg41xjDl6o7VhpveQHg6C +l0hWpwIBAQNCAASIj3Od2OJzyB3SK/5Ak/vn+VkV1KJBhAL+gsD+f3fAXFggT2Kj +sro1HOAVSpVZJG41dTe2qsP//t6yWGHrRynWo4GrMIGoMBQGA1UdIAQNMAswCQYH +BAB/AAsBATAfBgNVHSMEGDAWgBRpNBdkO9jazcNRvoSiAhBaw/5EwTAdBgNVHQ4E +FgQUaTQXZDvY2s3DUb6EogIQWsP+RMEwDwYDVR0PAQH/BAUDAwAGADArBgNVHRAE +JDAigA8yMDExMDUwOTEwNTQ0OVqBDzIwMTUwNTA5MTA1NDQ5WjASBgNVHRMBAf8E +CDAGAQH/AgEAMAoGCCqGSM49BAMCA0gAMEUCIE1+aFCyg+yYWiw087Ifnx/rn6s8 +xJNcuFPCmLVO+H0BAiEAikCaa26ulbRdEhStLJ2ZXZrfbuG4VZIoS4L1Q1jnufQ= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIUCrKVF1EjIKVlsAlyw2AjKINAZ/wwDQYJKoZIhvcNAQEF +BQAwRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoTB0ZFREVSQUwxJjAkBgNVBAMTHUJl +bGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTE2MDkyMzA4NTkwM1oXDTI2 +MDMwNzE1MDgxN1owRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoTB0ZFREVSQUwxJjAk +BgNVBAMTHUJlbGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDAyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAod89IU0sADLBwfm6vk24i9FbcdWysJuZj2SV +nMSX2hqSGFvgp717DP7WmbKvAbjS/3CwtXKpeikTWpvpHI/Vjsfuu/utishknqmT +m0l8+Xgczgm0k1Yu8CsIwKSSl9q3WHb05OgHdmw5M9DjVLZNx7Put6SzLx5A1WTt +I5wx96RibcvODv5BLlhiL3mwJRHh/vU6bgS3CATus7H/VXc3Cnljt+VLZMM4pKJ2 +EzIcqIKDnxDcwJ9oh2yeblR7ST1LWT4H+1gWmapivWlA76G7VG7e3k+nbJrjvoye +HPL9vsc9qEKC/rPcFS5LEi/77yB4PrVRVtx0mTc/a/RjGUUdSCwprm1C4qOlu3sA +jM1SURGewMm8CgjvQ7vrSKs1J2pRiAVoOBSAmrlyOxKQdPsW3kYC92rgOWFXdyyA +tb/XEO8ZqE5/xrL+hCrcCAwrbKgOfhKeIR/Lm3AB0+0A0QxMBmpDtDQjjzDe2d+P +Zh3mhCXFudFK1s1TNuTR7pfrq/saoQIhmhgdQEai6zn/DCLLG8g3XneyTuf3tghX +Ea6g6XG+0keE/K3QmHMAsnK+dCIbAgV1YA3NBKHcX3IYjTvcPBI6J666IFCzoXkc +RDXbOiqLMalTBJ1HLwg81/Wc9aYf8barHrgMucu1dFE9KPOgAGt2DksWvANx2utA +wwVGwFsCAwEAAaOBmDCBlTBDBgNVHSAEPDA6MDgGBmA4CwEBAjAuMCwGCCsGAQUF +BwIBFiBodHRwOi8vcmVwb3NpdG9yeS5laWQuYmVsZ2l1bS5iZTAOBgNVHQ8BAf8E +BAMCAcYwHwYDVR0jBBgwFoAULCmCmIQoKTvrxAx5MMhs84ArrnYwHQYDVR0OBBYE +FDWgBIwoI3k1s1BK5EDeZPmys9TBMA0GCSqGSIb3DQEBBQUAA4ICAQAWLSoEwKMz +fn7/zaPD1F8KwmXq+4sYnhxGniZ5mDJ5wGOyjP3iQmNTWjDM5CEYfHxkrB0IB5Pp +m3fGyRQToTXEtTMRCEY1Bcdz1mc/2p0mmgJRwuBguJl8QQFDLHlPSaoBVmNG0uly +J1M6gwVtsPzqAL4jkycHLmi9LX5b4whp4xE8VyiyxBBHM6iG1qcvzlvFsPxSApse +qtEu3FRQGb/7hD8whJKP6KMwxFcKc3buOo0NfvBol1GbElN1CNbQxBCbYmZBKX2h +ygjvp0kz9LOEZMd7wmreUMvs5dmfSuUizPTldhYsTdc2ByRS3fAbOt/ejCxGRdGi +79OJy3NyJK/J3JDwBsgB+gBzd4l0pdRH8DOA0N7qqxBq86J7K4lyPnmncdgTkhwc +wgXtfnGCLvPztRRUN589Pj2IY8itUQWMxqSTeo6FwePi8IBNGt72LjnCci5ql35r +6dCTgGkXm4e5VRn5kM9D4Afi3FL3S9Ixgr+6MCUvwb/yTQGZetslH0KhcpuzMCw/ +ZGSRa7h2w1WD9TquHxUPaNpfBWeu79/3iwimWABJ3R4dsLH1xUuKKxhSgk/nXSJ3 +dk/4352CI6vWsbFgUVeV0TOtxyisKHPyzw98ZDNGQX0QRBWG9Rn1ozPVeJH0DUUk +0re6yJfd/Pb6wu+lhQMQiIqs9m3H5qzNaQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIUPgR4eR6DWSROqgpvR3Q1xhQfahUwDQYJKoZIhvcNAQEL +BQAwRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoTB0ZFREVSQUwxJjAkBgNVBAMTHUJl +bGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDAyMB4XDTE5MDQwMjE0MzgwNloXDTMw +MDEyMzA4MzQyOVowRzELMAkGA1UEBhMCQkUxEDAOBgNVBAoTB0ZFREVSQUwxJjAk +BgNVBAMTHUJlbGdpdW0gQ291bnRyeSBTaWduaW5nIENBIDAzMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAi+kv0wzqHZHN9iBClpiTahYNelvlk+SQegY/ +VzTMJVRr1V0Afw4XvdjTvCIUqsbIkzxPPS34atQhv8E3GGq90wh3gqIBedoJ0LQo +APkB4CQ4J0QjSKQl8ovMnALbGwwAtpuizBFB1Cei3pOv+Wdpau+pFOJf0RhJLDyM +Slnlp7cFPOkdv4KnO4yif5xs/NgRbrxzcbxdMkW45xTiM1J7Qjlya1VvLPrUNHt7 +EJLxLtx1BarXw0MHYkAhbFEWtvRRjE7+EEIYBQaBCG/L1c24My80h97eHwhU7faM ++40dvW+0KPoQTBt38IHtyD2DjKiaXjXnIVWPt8iJmNAN4P6pttNbttS8UOUWbP/3 +VVeJQet1bECpWdxL9WE6t8ZC6H7L0UlVgzZmRVIrtINu9JsfVO/aKSU88h90Emdk +7E/aneuajjvG0hB14KeaVjgwsUes2isiC4vTIJ7oCdE44L8a0F9onc12NnkPB3DY +ASRmh0vv+Wma2fI9o5/MGkYSxyyM8VzAwaax2Gles5Bmm0WecOjPFgh5tsxSb65T +AA0IAwc5X7+TBsbVltSjfNIyPiW/cyChYuExcK5WXVwYvMfSWbo65UqeoW7WBSsm +4p2STPkhFm7nMysClWQzN1gLDgzmio8jV67s+rsPLPgIjLZxxfYiGFmD8c/GFq6l +Ddud1yMCAwEAAaOBmDCBlTBDBgNVHSAEPDA6MDgGBmA4CwEBAjAuMCwGCCsGAQUF +BwIBFiBodHRwOi8vcmVwb3NpdG9yeS5laWQuYmVsZ2l1bS5iZTAOBgNVHQ8BAf8E +BAMCAcYwHwYDVR0jBBgwFoAUNaAEjCgjeTWzUErkQN5k+bKz1MEwHQYDVR0OBBYE +FC1lDT3jQLZIDA/CQPJJ8ukRv75vMA0GCSqGSIb3DQEBCwUAA4ICAQA5SchuqwLR +/Hohc8l1sY/KJ0ZRVrwovzuzbMB/Z2oOTHuZrQ9NofnImerHRdS46G4e7J42TXXn +lN55XWgQ56wodSHRu6/zPmh+KVPib45SX5ponku1To/DB/n6Z37DijDuExyMp425 +3J9u1RyGndHe8TIAJG5ZleE5GLvT0LcFon0BcRVD8ZOpmvtYmejbOuiPfdpkYyWS +F/MFCvW+qQrtLOm1shQ2RkTsanPvaGc5OMAG1svJYZwaACRzk3rcGFX5BUmKnIag +HG8D2RwYnsaXCU1kSbR8jrszERfpUSgN0ZP+NRZOFGTklC6H+VlKEs6FNvLnDP+h +LDBK5qE4YqM9J4ULVInroC3+e+w6xEsL5zX9oYZtGrlIEjI8FYR2B6rNuFKhkiWo +X9C6IY4mdHD3d+a1nszWnK7WBeHQYCYaAkFw1OrZndBdCNy1erFATXbBLmo/ShwL +v4+0HP87G9kN+/ZTHEKcgfkO9PvHw8kjN/+FEGoQSvJZu0eYDThMJ8xSuVZiKgfP +GpXVGxZIdatPKvZcjK8G/5JerF+HjgUJ3dFkOtPbxWYzoxpjOYO1vkMTynkOPfGd +oCgmDZ52/LH2C/rCfsxPEVrGO09Qt+7m4r976hwfP2BY+fVTupTakT7H3zOl+dKj +zVrf4eHUcUWRN9oX0PU3E9M0U3FQBOBh0w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMDCCBBigAwIBAgIINYd28FCFBoowDQYJKoZIhvcNAQEFBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDIxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE1MTEwNTExMTAy +NloXDTI0MDUwMTExMjAyNlowfzESMBAGA1UEAwwJMjAxMiAyMDE1MScwJQYDVQQL +DB5JQ0FPIE1SVEQgUEtJIC0gQ1NDQSBDcm9zc2xpbmsxMzAxBgNVBAoMKlJlcHVi +bGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMC +UFQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCw1KKwHw3wVu1uDMEr +8bmdX7MfDeqPUhXfBv0eAtHl/9N+qU787QzDevZG4qQsdNgW35e/+LnZjahdgmtP +SFYZ7wBpCDqbQ3OHEOzvq0fuFRsH97lR63+8bTCQrG26e2h5Pvl8nkDeAwSSgewd +a3nhNDBu6+L2rHNwObeJ0DnsT0tBurINcfiJ4egjPWmRENbnbEEuBLcO7QrZxQ/7 +Xfuc+43Eeyu1DKUgzl/gLoXJbMeNa1TIl/rWlrdO3WiBmvez4sib/oGSMBIIx4G0 +jUhxdeZXG4gugTxIPhxNlI/lbjuBpZzM5rhSs855sK7HcriKMwYWkjfEZLY+QUtq +OK1oEzx4zUprPJnpZ9B5yAWgz/LARsyRDmUpbq4jKhMLlj0jIQAi9x8QeBZkQNky +CMSbDH88rogkZU6KUs1o1htMlOC566tT4vXxQk9nZK8FGUZdFlFckwQra3TQLDNa +j2e4NHuivwDo9oo7aocZfDoHqQEEx7Nci7ZLRzqLGbUEXdTwYkppw4HsyyO1Gk2s +l5NUA5BPZj0AuW9LIk1J+hOrBvP+pJ9LNRpnKG7Od9Je5KDlAQQy/xe+yZA17Xuc +OXXncgCGfKcdO7IulhYFdLWxxgRoUzEXIWM5CJCD4HnNJ6cDMW0nIqBQzCbhWpQ7 +yXOwEy1CTwZPNazl2E8wOXVoswIDAQABo4GlMIGiMBIGA1UdEwEB/wQIMAYBAf8C +AQIwDgYDVR0PAQH/BAQDAgGCMB0GA1UdDgQWBBSgwWB91/VFiA6pVv7wodMuoDck +cDAfBgNVHSMEGDAWgBTosCEfvVUIx06kRGN7uF33aA6X1DA8BgNVHSAENTAzMDEG +CmCEbAEBAQMBAQEwIzAhBggrBgEFBQcCARYVaHR0cDovL3d3dy5wZXAucHQvY3Bz +MA0GCSqGSIb3DQEBBQUAA4ICAQBNhXBFzAVMO0cecKdq7HtGe2iLREcEtv4c5uXZ +CRGZznovewXUP28VkJkjMxxbuXgR7xGe7Xz8sym8oxqkwJZ7lHyuKCjgVrxyB3Mj +P8O76sJNjimkhAtOrJTF9myMLm8Y+jA3TzOClxFo0cPGAopNfb/QGgkj9pfadKRC +3Iyq29htyG5tzfPLT3H04PprSeg/ZcU6bHcpl4+7dm5mYu5b6n0Yc+SUbc9tHa20 +GpmEQlJFFBKWgdbLgmMmBMaHYFRKR/XbmUD5Roq7gIqR2qOZ5JPko8IaDv3qz0yI +Y7vE4VRs2ZAETzcy6E+JPqSwoeC2cCyOQ3HaPr53BlIuJT5XRWAbm1PrLpJ25Hzp +3VKkctiD2bHPJuvrN/gY/MKoG8r0/vS1aIxwjD2qtsecq6uDbUeVKRbzKm/dSBWy +3/BOzIytL9wNNQsiUqNbj3I9D9aWr+brm/KRSfdchm9tbK3ZvoXHJkxd+yj/13Rw +HW+Xz0T0AthhhgODbeHkATBa1S6QChd+G9LxZ+WwTB0jTdnIQVlGhELS+MonYvGi +CfinE8vhmjRBKS0VD6TVGQjXaXIxYcPmF52Ov49n0bFznA5p6ZKeY/HEHgyOvtDT +eSJEJm2Rz0PMmkz1GdznPcS3Z5TI8PqlseqZKaETs8fftvUBbIBdVQe00hIRleDk +mRnr6g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMDCCBBigAwIBAgIIPM0L9zBlsVwwDQYJKoZIhvcNAQEFBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDMxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE2MDEyNjExMDQx +M1oXDTI0MDcyMjExMTQxM1owfzESMBAGA1UEAwwJMjAxNSAyMDE2MScwJQYDVQQL +DB5JQ0FPIE1SVEQgUEtJIC0gQ1NDQSBDcm9zc2xpbmsxMzAxBgNVBAoMKlJlcHVi +bGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMC +UFQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDEcTzTF4jR/QGjkwEa +hugTW14FfgqVDEPhxmDk3iPhI127DGSfnDbXEZGJiiXks1uHT1V3xCwmmZwHOb3K +ILOM7EYjG7PtaM3rboEnGIpVetB2vYyjgm6E+UST46LZC/CEyCf2r7srFycecubB +xsM1Gzxc+RJJr/j5bYFrmzA0ZsM88RTucSl0BavMEo/1mGV/UgtCk/5trP3wCH2R +SHJzTxF6PwaudjAoELdrFeZ/mXKbVViyPFpW6nOZi5zrYL68hXetigajIAebT4xC +mzUFOFTdmTsstoCYRR8CMnujIlur70AgmYq3ALoiLGMyZRfQmquFjk1efox9WjaN +iRFCLHTEUhwZtT3AnvcrgsF7idK5Y6U6mGuYOcKJEQe+NBFPHsLX2wqd3a0fusm0 +jyJFhUvfxtFLrXSwqcTXr056Qd86Wa7yl62rrOl/NP1uSNBENw4/hGDV8OJ4toPR +L1+SUcKdr31COwOh7A+4usz7Xt46EeKsOkYpBY7U46iJLbhQBd/lLsmW+x1sUc6h +hg+CPJZF9oNneNaWkJ0AmSjDsO+5+ZcGTJ5zB758BfgQUSXranzMQxqX0Jn7I2MH +AEtLJXj/nJeVWhIVgF3d49wJvEu/5ee6mAn3aq5fE2LMQccIhWLLliwXl3DsM62W +ujvl00sy0UPWbXQuHC3ySDvRZwIDAQABo4GlMIGiMBIGA1UdEwEB/wQIMAYBAf8C +AQAwDgYDVR0PAQH/BAQDAgGCMB0GA1UdDgQWBBRsP2GDuzGtGVR06lYGr0vxWr2u +QTAfBgNVHSMEGDAWgBSgwWB91/VFiA6pVv7wodMuoDckcDA8BgNVHSAENTAzMDEG +CmCEbAEBAQMBAQEwIzAhBggrBgEFBQcCARYVaHR0cDovL3d3dy5wZXAucHQvY3Bz +MA0GCSqGSIb3DQEBBQUAA4ICAQCVTyP7z3vqSG1QJE6PXoU1jfg8U4XCbX0aCznD +kaiDzl1Q+b5xKweJs6eYcdVptRkJVcsoo0pa853fmKYWwHZgq19f5+ag2Qscubwq +/F9TM0Rrrrs8wyQAs65DKk7FfXLJ+2SV4c1rIrCpYEbZxYS3DB1qzzNrpmFhB6YH +U0/qliX/rcjn52x16UnTEJGl1BhWRZLLPeL6ONTB2YtI89xIOUy43PHHO+ag+lQX +xxMXU5/Wsa0C5VAbXqZcEeFUn62YeK35MHet2Sas8pjnrYm0QNlun+7smq5KquZw +gPhDSmzlfqB8rudBAr+tba17IksSnFb6z1ZnzYENgiv+llmOgkak6eWWhq/rNqEO +YhfOpJTePbOIhNU3gjhHd/k/CCUfLXJmQ8MLWi2AMDikaMni35tROfH399semJKs +AuTmhnAuVLmBLIS70h0tWu2PRSzZvmBIgkNjh9sYoYP7PxZOgG/r2iq4RZVS1p4L +OJwJzmb0vBkH4kuEO3zPDIKAAU/QL0O2QiGfnEWeGjRP/VonRzY2076SMTULgupe +U3RoZi6n34af0feVal690ObyN8lzSQICYe2LSjEdBPqxHRkpWOwNyhxC2Mlo7l2V +xEGGEa96iUWPLWQ3lZlbPfNGPWEseAXCZK+s0Q4kMRU7qdQFqV3RifAB7slrdC06 +sW6ANA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGMjCCBBqgAwIBAgIIK9u02BOdamkwDQYJKoZIhvcNAQEFBQAwgYgxJTAjBgNV +BAMMHEVDTiBEb2N1bWVudG9zIGRlIFZpYWdlbSAwMDQxHTAbBgNVBAsMFElDQU8g +TVJURCBQS0kgLSBDU0NBMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAt +IFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTE2MDMxMDE2MzQw +NFoXDTI0MDkwNDE2NDQwNFowgYAxEzARBgNVBAMMCkVDTjAwNCAwMDUxJzAlBgNV +BAsMHklDQU8gTVJURCBQS0kgLSBDU0NBIENyb3NzbGluazEzMDEGA1UECgwqUmVw +dWJsaWNhIFBvcnR1Z3Vlc2EgLSBQb3J0dWd1ZXNlIFJlcHVibGljMQswCQYDVQQG +EwJQVDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALB5uZIqSYC/Dx7f +LLP2n8JWiR6bAJMf0/iaPGSYQYAEbEFg8v2OJ6Ff1bk5Sgq3Neo4sJ6Haf8F8LKB +/qxM5nM2JpPq6P/GjKFzbpmiJ5LN3OpassMlC2PiC3DhljcYQaXy2pP8xDjtFZLO +UGIwZ9pnzVaRZbUg+yXEeTHFYshWL8SzbzCjsF5z3XRu6Hf63K3pWzBY9hRVA4O7 +yj/+gpFpr7geWBnpEsPs1i6fKdD4Jq9rX+uMm+VDLf5Mp/rdcA550a7UQ1Ofwbyg +0EG9DrMKbKCbqQ5Eh18Y7Z14gV/9qVAQ4aF4bW5goNyZ5JtXPi4JX/3LpuxQpMbn +k2ta5jsAYAr8cgL+pjGaAM02KswRnHqppnZi/1X3b8mL5hMUOpf8t0ZjV2czlL9m +m3gnAVFr0sCU7H1jan2WD3u5YwuRfjGVeZ6UKStQM+qrCllZwjl5h+XwVvhEiEgE +Ucc7nmSmqtdJll5zTyEYy0oCOf6LXJZJo0EyXqt2iWFcEPtkuRQ/PdOUTfxGDf72 +CkK9gnbpVPVev9X75fOQoedRKGdQFUIhcfuYiTewaofWZItltso97epthbhgKWfd +crWzvRgN/SEA4OyatjgWrSRi3YuWH+I9sbF/IUPcTtm3Zp3Y0wZRWl9vaTo1mR2N +brUkvR3iH5mjiFz0t1N2l7k5BvopAgMBAAGjgaUwgaIwEgYDVR0TAQH/BAgwBgEB +/wIBADAOBgNVHQ8BAf8EBAMCAYIwHQYDVR0OBBYEFCP1F/DjT2o4Xwhy3jmyNrVe +TOvwMB8GA1UdIwQYMBaAFGw/YYO7Ma0ZVHTqVgavS/Fava5BMDwGA1UdIAQ1MDMw +MQYKYIRsAQEBAwEBATAjMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnBlcC5wdC9j +cHMwDQYJKoZIhvcNAQEFBQADggIBAAv1u/nWAec4zfAmqU54zB7Vb+JBM48uiWZq +KHNfDwtacPqw4/KuRyhDUeACi3fCM0FDbEF4pSOvUHxQdIj5N0sfRvhQQZvrwszd +ivRHUGQyKatkbViwiA9PDPnI+7xbpKn6RictMBsCvgEUgRpdnJj7hexkqGwbNlqe +h521wfjt8X8nCCdjVShf0IXGV3s8WGZWUtjEbu2nWEMZOjYQyo8Xg8waMoo3eVmk +5fO7/Oj0h/ArxLwtZu1sFdGaduubMVKyQ7Vrtxe5e8wZ3k2VyrBepSMaH2eVXx2C +b0KxDFJfH77WtyjEJzLuHDtvpGw3MbtOcZMMAgLS2gRZF9xlCC2FxjwEH2X4aaJI +wlo+QIO4F+VrwxEMkUSCr9ATa/ikrSotAoB3GOX327SZKxINuhHGOAKfJB+YlhwY +pQfnLLoMoqlMzoTQB7LAzECNhgZAXGNqPF/Ni96j0IVz+xfkgzXEuiP+O4nV9rdL +6MNaGaSvk6E5+9EHZVixn3Vrnx1WY+HibmSu2IhQeTvu9jTM4YZYbgBwZvPVgdTw +0Q5BbiOYEuKuxvc87brFYwODlqeBMW5yo5/ZE1HELlc13DM/GKynJZfejsnt1eUl +jLod5uKl7zCLDyowFxiND8CKeukDI73U/nza4LZnGSCCxCYFL+adTtqjbQHbKVdM +az8MvCfK +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGRDCCBCygAwIBAgIQNxQu00QT/85dpD9Gtp56bDANBgkqhkiG9w0BAQsFADBw +MQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNl +IGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMTYxFTATBgNV +BAMMDENTQ0EgRXN0b25pYTAeFw0xOTEwMTQwOTI2MzBaFw0zMDAzMTUxMDQ4MjFa +MHAxCzAJBgNVBAYTAkVFMRAwDgYDVQQKDAdFc3RvbmlhMSYwJAYDVQQLDB1Qb2xp +Y2UgYW5kIEJvcmRlciBHdWFyZCBCb2FyZDEQMA4GA1UEBRMHMDEtMjAxOTEVMBMG +A1UEAwwMQ1NDQSBFc3RvbmlhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAtOwF3FBgnLQeCZ52MPWYYq4q6ufOWZFchO13kSU5OI/4ZHn6CmZqH8UO9n0h +LplM+PqHVQ3GC2AjvjSDzRRv2kV5T0wPF+iMRf50QWfBU053Mv27Tci4ErAelM1S +7U1U5VnNtwhcoxTiWSSbFj7Eo2MDB8IlTV0DfMZE3mg3ihpp0MFBgaxw3Su5GThs +qiH75g5M/ZdzPuo9/DHGqvjzQplfdt/MXNnDAP15zUgSyVzJRYdhlGiNfo6oqSaw +nmtjRKvaM5wn3CcQzsOhfabCjJWpYMAOlKZMABLxzwSJ38SU8X3AvmwbyGyAiFkp +qD7DdmfHfUa22pAVroVvklM5h9s6b0DC94Ki+kYODDvCFa59YMAQ6HWV45b0SrMC +4ykbuAT6rnKnvqRmP1U4ugNFQ6Itiqmii1iqUdtPqq/w7QYjRBED7ksVV1fkYTTk +ClSV2UZiOtfzBmxBtfMTK9qV8LG/vRd86Ng1H2osuKAANvoHImimsVWK/sVPd+fJ +s9uQ1UQ53TDzYnkynGttyUiutk2UdwzD9bBGm6b0kV3vpbHvHdJ2lQyKdtKqjW7E +vq2L9+NJfatGqam+LEV0yHiPAckCk/VkQOfc9fcxCemkvpZdFy1q3t7FEOTTtKEe +hFECSAMyYtjoeHeLRWcDDmvRQP64OJW6AZOPOoceQCXEreECAwEAAaOB2TCB1jAb +BgNVHREEFDASgRBjc2NhQHBvbGl0c2VpLmVlMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSpeg/EBHx1Yby35Zk1/nqsfuurIjAa +BgNVHRAEEzARgA8yMDE5MTAxNDEyMjYzMFowGwYDVR0SBBQwEoEQY3NjYUBwb2xp +dHNlaS5lZTA7BgNVHR8ENDAyMDCgLqAshipodHRwczovL3d3dy5wb2xpdHNlaS5l +ZS9maWxlcy9jc2NhMjAxOS5jcmwwDQYJKoZIhvcNAQELBQADggIBAAgDFm1FTXWC +nTMpz4Cv5D7PXBgJY/EoVDaSvrAGcEXGKBsym+He23ecPrbHknIdicGkvuwsZB8u +4DBf3Rfp4NTtY/G62SiVZKsf73qvSoQk7cTcIqh9lRRGaeNv4zAaUTwfEE1iNOs0 ++31kR5N+8iX1U8R6LMXjkMHdpwRddSYBAetaxU3oqQACxB/e0IIPanr+9OWk1avI +DzuMUj+RDWev577LFZTLVHZXZ/kwWyOhDjMA78hrseHnf+HHrCctQStqGPe0Ja/x +ecYPs/MY/vuH9pnS+x07SIDvSx3qtiPeSnEVmMV729YnflLk5X/9Ll/bEJn1FM7H +uPoNrLGn4uynotjD59DFHkPOeeCGWlqE/pkI8i90Cp2QX7vHMtz1BFUXLWwJHleD +gfRFq5zgCnY8L/6gXcpGvV7et3l1kVUS12fm/WBrXmYJq4jBXUxJCtFZItYJmjzl ++axvA2pc2sqrU2FwtN+ctU6p3AhzZu4D+GCrQr1/1kDNcOvuEHl35H5+xOKHBuUC +3o1hW3F4T42KxCPL6oZu1erpqN5ICq+aMJZfO4zTfcmeKsWW8o6QWYoOKCt/aHeL +ElsozwRftXyICNs2wzgNC6ku13ATOSzDb1Rve7hHW7ASHgBPC56bzF8Kkacwl6DB +4xC9MRaj1wfq+vOeCV84amKtapWCGLUw +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGczCCBNugAwIBAgIEWZbsjjANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJV +TjEXMBUGA1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRp +b24gQXV0aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwHhcN +MTcwODE3MjAwODUzWhcNMjcwOTIyMjExOTEwWjBoMQswCQYDVQQGEwJVTjEXMBUG +A1UECgwOVW5pdGVkIE5hdGlvbnMxIjAgBgNVBAsMGUNlcnRpZmljYXRpb24gQXV0 +aG9yaXRpZXMxHDAaBgNVBAMME1VuaXRlZCBOYXRpb25zIENTQ0EwggGiMA0GCSqG +SIb3DQEBAQUAA4IBjwAwggGKAoIBgQCXzeLqVKPfHpRPh03kQGK1EY9dd/AfEsOh +5srrgtD2K/5b+b3BO1nPoyjeWkvtAae5ESgpa8Ncj9U9z0M0rgUpy9u6CgViWbDg +tMpBg0W8s7JwXeATpX6GF3OXNANS1c0C0HKJXXuF+DEKEnaPvHNZWEMUnROzlJlT +LAf81sJbNkdEePZWp+kac6Lwy0QaLB4bZkr1FOVVejUQSlGBNk6JeqEeg9KBPZYU +Bbudyt8lA5UkJNVjj1PFlcSIQFRyABjZNTdpDRZPny9IBeDtqI1x7+mZo3SNmX96 +tIoTOQ+R2x/1IqL97qdCrIk0mn6uvk+rIPH/jZCN0Bq337CfiFA4EO19jndDEQ7z +ea6TsBm5Lj34IohaG/SQoQHNJ/NpSnHioxAa3eBvACJQNBVyTEbJCJOHVnTmylJI +1voETOVa6iznDB95fiQcwOE3ugTACuY17d9pLjM9kNpTA6KUow0rIHABkRcsZmzR +e2+ckojoTbKmP8I6kBLjMhANBltyOj0CAwEAAaOCAiMwggIfMBIGA1UdEwEB/wQI +MAYBAf8CAQAwEQYDVR0gBAowCDAGBgRVHSAAMA4GA1UdDwEB/wQEAwIBBjAqBgNV +HRIEIzAhgQ10cmF2ZWxAdW4ub3JnpBAwDjEMMAoGA1UEBwwDVU5PMCoGA1UdEQQj +MCGBDXRyYXZlbEB1bi5vcmekEDAOMQwwCgYDVQQHDANVTk8wKwYDVR0QBCQwIoAP +MjAxNzA5MjIyMDQ5MTBagQ8yMDIzMDkyMzAyMDcxMFowHwYDVR0jBBgwFoAUBlSy +uGTseKpGdfkRBjTs2sKltK8wHQYDVR0OBBYEFKd1r2S0QOjdOG8vACKA7O3RnRuX +MIIBHwYDVR0fBIIBFjCCARIwgY6ggYuggYiGLmh0dHA6Ly91bm9jcmwubWFuYWdl +ZC5lbnRydXN0LmNvbS9DUkxzL1VOTy5jcmyGKmh0dHBzOi8vcGtkZG93bmxvYWQx +LmljYW8uaW50L0NSTHMvVU5PLmNybIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDIuaWNh +by5pbnQvQ1JMcy9VTk8uY3JsMH+gfaB7pHkwdzELMAkGA1UEBhMCVU4xFzAVBgNV +BAoMDlVuaXRlZCBOYXRpb25zMSIwIAYDVQQLDBlDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0aWVzMRwwGgYDVQQDDBNVbml0ZWQgTmF0aW9ucyBDU0NBMQ0wCwYDVQQDDARD +UkwxMA0GCSqGSIb3DQEBCwUAA4IBgQBde7TguB0/LwsQAMuoYnKOgwSKMB4LPzQt +zzLtjKlqKvWZXFwKIwvVnrS56t65Fv4lAvReH97pwaNdFmkYxjPZAjo+BtJazSBN +Z4XQ2+BU/p2MqkwJGlnU11oprsBZMX41ZFylyWIK9KjsuJJoqiZVKddUU4GVaslf +H7og6PCUqT73XprGCbav2wInuqj9vF5OHewWTHvGv7TFAhNnvUfS+eWBOCaduWHV +Cz+8vL5FZYhYRhML/J5XxfyX1sEaL3IAwqUlOWfAI1B9bT+fmuBKIFVDGuP9lQob +Wrj59RhWB0bLskFXA3Dp5f9TLoMjmuaZNGUGU63RbT/tOlLgFyoRQWKdNQl/zckm +otvRvNctnITIKjTL4Kn3HcETAjWGVwy0yV/95eK/lmmo4Ua/uYJNJy7lU5Ve9dBM +9mWl4wB2bvlsrEnpE5TVk6JrovbOhkOhtW3UwUjJ6e64QE+cshZTMJhJ0VmfUb2W +NlM5D4+e/zZWRNbT5+EYXE2f54v7Ucw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHCTCCBMGgAwIBAgIBPTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6Ea +MBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBwMQswCQYDVQQGEwJFRTEQ +MA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3Vh +cmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25p +YTAeFw0yMzExMjExMjE4MzVaFw0zNzAyMjIxMjE4MzVaMHAxCzAJBgNVBAYTAkVF +MRAwDgYDVQQKDAdFc3RvbmlhMSYwJAYDVQQLDB1Qb2xpY2UgYW5kIEJvcmRlciBH +dWFyZCBCb2FyZDEQMA4GA1UEBRMHMDEtMjAyMzEVMBMGA1UEAwwMQ1NDQV9Fc3Rv +bmlhMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAskw4RNeiittO7Nxa +eorSh5qEkkSVIiR0PPYDI6aHkV25xmUKzM3msniFB53mcFrbGMDebpOZIAJ/wmQc +k26pu/mm8B9pY91fznXPZOVOmRjR/vpSDtKxqAq16pQnMZLr0LDQcXGwIEW8jxhU +zh/UQGXK2VNuf2IGOzXDUg2cIpWQ6YCRNUkMxAM/uAU+NSCtk5JtNjhJz0uVig/C +K555kq+eJ7IageynHx/QKZxdXB7Nt1K9Ks+ojT37U1J4cTlxTvZO772pRSuaNGF1 +3gYOHiXapHaK6pW4b3P9XrO+5kiFwqdZ1HBDUoniTkYk1fUfCQ5/1jPRi9J/ofqJ +NDmTjDAz7RekL0S/Byf0WUwBIN3Yx08f+i9AsQKU01aYg6HAGuKpGgIAng8DFe4O +I5YSUFi+SFg3Kf1zOYGbSweti9WMFwTvvb+qhUzlmUqD46iTFqUbGURyJrAYoObL +utbgo2xXHQ5QllHs1L4dSnOtIHCXQb2jUyiQeAOY1MzJwRGulIZ/fDHpCQKn5In1 +ojLca/c53PA4+DBvzq2yx6jUlPJpH7HEmsOncU94yp4B/MFCSX96Fda443aS9ZJL +HqSQKWz8gXa3ET8An4QVLLPDJUnw+4eXUMky6BhSfwIGbQWJFhk6XDIlTnaRkECl +lGVl6s3Lv/evscMW+6hda7aQoncCAwEAAaOCAUwwggFIMCwGA1UdEgQlMCOkEDAO +MQwwCgYDVQQHDANFU1SBD3BraUBwb2xpdHNlaS5lZTAdBgNVHQ4EFgQUjtX3Z2eN +mw5SMfMKIjjRem8P468wEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRV +q9JvhX7uQOBhSt+YPiu2k2xVvDAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vcGtp +LnBvbGl0c2VpLmVlL2NzY2EuY3JsMCcGA1UdIAQgMB4wDQYLKwYBBAGDkSEBAQgw +DQYLKwYBBAGDkX8BAQIwLAYDVR0RBCUwI6QQMA4xDDAKBgNVBAcMA0VTVIEPcGtp +QHBvbGl0c2VpLmVlMCsGA1UdEAQkMCKADzIwMjMxMTIxMTIxODM1WoEPMjAyNjEx +MjAxMjE4MzVaMA4GA1UdDwEB/wQEAwIBBjA9BgkqhkiG9w0BAQowMKANMAsGCWCG +SAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAGsSn ++3A9C91NxJ6ep478eUNQzmZ7qXKcu93IQ6dWU+2pKDLHaAC7RknpvAqkGqSZ03ab +Ffnr4csrhZJ0oZft33Hz7KojZ2B52wbzS8XXmI6scnOTTFLCYZ9Vre0To15wpSnm +hFukj/Hj8REzUQ4cLc4xHXaLu6OmPUu/H/w9Nh9LDnFRveWn/cAoPt6CcMIZh9H9 +OGmz0/+FA+irO3I5r/yZbjIIyST+8/CwFGn5hdPtVskhVVRpSCKlmzep9qlJjRR9 +gG6GLkkgUaSSALUEnjDMxcUuUmjYFHU0kdkIbS5wmX//L+KcrQgt+x2gPQZXIaBX +zhRg/oEA+XrRIEhW9kzp9gSefcK33+gRdA2VojjpaiJzNsUWorMyHibJA8HpOH+i +hjiokHvl5CroEe+YGNwgZL8BbXGcWHXMKyl3qTHatVl4px4+9oSPx9gspC0d+Fux +Kmn517k4c7NOKYw33lnhSlg48m4hwBTFlM/9nz/xUXp0vGBcQpsxeg9As46/HXuS +APZgoqJHvbqCbzGsTx67V2w1nA7n0aPAqPVjqeRGqgOx6tszNjIgFOQNh6W4NVCY +hTS4wBlUp7YEI4GiWgoL3Ixqj9UZ85l3bmtVZNU2G3lrqr5ugavy2OpQzXIM3QuE +rsu9+iSeQNqw8MfREvASDvibDkvPArgCtAFv4TY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +/2Awog== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHJjCCBNqgAwIBAgIIXJOaHimzUlswQQYJKoZIhvcNAQEKMDSgDzANBglghkgB +ZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMIGBMQsw +CQYDVQQGEwJMVTE7MDkGA1UECgwyR3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBN +aW5pc3RyeSBGb3JlaWduIEFmZmFpcnMxNTAzBgNVBAMMLEdyYW5kLUR1Y2h5IG9m +IEx1eGVtYm91cmcgQ291bnRyeSBTaWduaW5nIENBMB4XDTE4MTAzMDE2MzkzMVoX +DTI4MTIzMDE2MzkzMVowgYgxCzAJBgNVBAYTAkxVMT4wPAYDVQQKDDVHcmFuZC1E +dWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczE5 +MDcGA1UEAwwwR3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBIGVUcmF2ZWwg +RG9jdW1lbnRzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqA24S+78 +zJI269nhfHGjAhpMSmBu7iKcNBYl57dRcVP25rUrrpyf8gHKoiu8WOIpvDD+RNwA +7PVGwRjwhz+qQWp75h7KdrpNj6SC6wvhwa0Els1r6nOaVDeuD3FckA41JAPo+Mke +dw/Et+RbOX9jOHNXwCtNQC8qVVqvpiVlOQ25Z33TvTmKlytJ/fn2fEjUY90TWSzM +Ot6CNIaiB/0vDXjn99GFADtiYZF5+Hu/vyWCJtvdmF4ylND/6Ec6+/hfCpiaE/T0 +fqigVqg0YGWn60d5oGIASmbbppC+00m5077TMh47RtiAoitRmVyHVhovIcUuNn8p +AN1o/s8/diJZbDJomtGfuF4V+/nlu0Agfr2P66S5XE+rySgRc8xlKcsi6CMJhKwt +IvLaJzLzlmnirCWCFvRzL/7Hkz/fZ245GtwpNTm8vIxCRikBAWztUAG56v8iny33 +6gFgMREXA6W3/OKHyRCI7ueOYh7XjlZVNEb/bxuGmY6VeloLYlqBHp9VWqRU1a5g +r42u6Odxn+S0bnezO4H96AhJwmp9t42+dvCKin+mVUv3sDZbRTwBM9MgO3MtZxHD +F0a8XHen3Noq5IH0EiVZb/xVmYySnBpmHFkKuKzXMcOiJWAhlADWcxYCEHiqk3Bo +TFInEfzXieORFqgHWFC544lnyUfnK/7ojtcCAwEAAaOCAS8wggErMB0GA1UdDgQW +BBSgWfwDEpVNwTrZRKYgwJ5nntVTpzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaA +FOOL38sKr6ecUEbQL99PPIx7OkcsMCsGA1UdEAQkMCKADzIwMTgxMDMwMTYzOTMx +WoEPMjAyMjEwMzAxNjM5MzFaMEYGA1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9yZXBv +c2l0b3J5LmluY2VydC5sdS9DU0NBX2VSZXNpZGVuY2VQZXJtaXQuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAqBgNVHREEIzAhgQ5jc2NhQGluY2VydC5sdaQPMA0xCzAJBgNV +BAcMAkxVMCoGA1UdEgQjMCGBDmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwC +TFUwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEB +CDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQBrc3A/zV4jm4opX35zrCc3pkP4Nr4K +xqV8gJXCWQCjPRMNujIAIAAVPgNVLwiQXAhLBAV28STamlmpGe1ZHhj4YP04Ym5W +FMDOyGQdQipcdHnwV+zLJYWmLTWlUScLc/8dwZwHIY8/zwtQXLwaxU+DUu3DoN2Y +myRieISFbcx4Mb6v5FHtkP0xXxox2PkLn4Ga/SJi/e/ijpsWriGcOlURCfWJ7KaW +U2R06iNKkKiHV+mJ6ihez2sBbzBWI7Edus9DJRUQQnpcmkGY21XAPxHibuoSQgJr +pBJoWO91zjY1EEW157fs+FEtNPsJt+tjo5hI3KBlWJ5Kp7zoxVUwmn7urZtKKevf +XgyhySc9noIenm9MsRzc4xPNw4Lvg8iSwoBQqF6ye21z5hmmMLqXb8fIOg4uySeM +9EK2UzpbpULkVqmQ5zFOUGuX+DAUsHewt3aCkWBhomaGH4HezdlL1wkrjGLuTlSr +s82IxTP7AFWfcGJXo/W7pTU3U6bbheR/rzrSoVkmKqyHmcGwqJSF9A+a0D8sgoTo +bl2OSvk5iHLJ7b304+QiH7dqZCBHKTYQKXV3SmbKtFuZmvvqd+Y5EuGgCTYoUVtr +aZ8xB8/XKVZTLONnfHwTieJxmXyh1ujse3pXRSAO+Ngv4LgYbcAjcEFfWuZrvDwb +L0zY2sWPgl32TA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFPzCCAyegAwIBAgIIadagu4ceYDQwDQYJKoZIhvcNAQELBQAwPDELMAkGA1UE +BhMCQUQxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDTUpJMREwDwYDVQQDDAhDU0NB +LUFORDAeFw0xNjExMjQxODE2MTdaFw0zMDAyMjIxODE2MTdaMDwxCzAJBgNVBAYT +AkFEMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA01KSTERMA8GA1UEAwwIQ1NDQS1B +TkQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDN71Mi518vFkURYnYP +m0T7KrIXLHQpvtIr5zc/Ep1aislXtcx1YEyKLbKEs00KF94gIFSxDIDob0ip78f7 +qnRNNWumwVseRFVVcKU1PTIxbvo0+lAmZKxpHppDDZv5LYsb/LRgfCcHSoHdCvHi +r/ctpf0F6mnPj7KfZNqIHkmrxYXhLBebeW1YaTE9ku08nH7VgY0l3hkUIXGfCkUa +eVdsNHh8QbA498jMDJ0luo55eCOVn+YQ+1D5uuJb9+5nOB/lvChj7G5Ll/3Z6Zb7 +wSEpK1g+gKjqPpuKUesCU7irFASVPM+iw/ngnjeKKHAV4d0Xl0yUbsxREnysYD/5 +SrIEfHencXEPfl9DKHKYoZXphsn0I01T3YgRLljnYtcrN3+GqPBc5L9/Nv77gkf2 +DGv1hHxjWAu6kvCtlPY2M6SWexjMJ3/B1M8akGrYdY76BXAjWfVB2EkwJLxNpTej +5n54IfnfEBsM8NrR9ZkggWJ7Yor8n20Fit37nohFNzU3qYJw1l1z3k9C+m/CsBvu +ueLDjgazSAcIgRtiE13j2JBMZLQrKHepdq1lplaRStXA99VNa34KIS7GqEIamTqn +DZlKS99FVc/aS3kd/icKAKUsQPnLW3amECnJHbjgBHinGTpI8eubr4/R1SEZsqDu +8HxGHszofW/auSd4yH/OL7U0AQIDAQABo0UwQzAdBgNVHQ4EFgQU2LsHZZGn7y9l +KrbdmIt3A+YEN94wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DQYJKoZIhvcNAQELBQADggIBAAo8CbkW4L+EI3y7b1WnfJ73IA8LAxqqY83K1o0v +GmCnutcvmp1M19VdHaxg83I5Hhy8VVZpaOE2TDAtgB63lh+YCY5kydpljvTj67Ti +8k5lpfpRNIB05Z5NAGgYOV6u7D+dBkhsoF3XcSwXLWIQdN63BajyZhaLf7LQpDHP +D4BVLLSF/d3i/pQWgucUn60hJQtV+SqJuI6W3f5Agg6ol3BnD98C7LUTW7yFJAHA +jhdg7q2Q+PZp2JtYw1QYuHClS2hDv1/0YC5/zBbeDKtl0B6E++0n9K4piNyrb4fy +r6nt3C0GkoCQDbPP5J1xVq7TucD5oAZEBOblTz8tOiUf4Xu8rwq5TTDtDqEIchg0 +xQeJsKKTZ5T4IMBiPTkj4M6l/9FFvbQOnPtJDE38y9HN8FkDT+IHYYfMw75Z5dM5 +X+S+47j6N8cEHhDbWd1ZBDedE8G4PHoerJ77x+omVtqUc2ILNm+wuDFmz1HH4l2v +lrSsf6yNsUBfZgOpsJJ67S2N4FX/d/5hDzG8yUbZjAyymwzzTgraKAzqE/wOTiNi +tNlO8BGnZzu/pKpH9zM8uYJL8LmRg2iA8Ar14XjJEgQPqGqBTSIABGcZ0nfmT5NG +CAI5uOrX5oIvAYBEY0mEpgjdRw7CxsWmEit7T5JEqCJ9Pm6NaWV9mbqgY6qxcgaj +k0H0 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFPzCCAyegAwIBAgIIcTNkVInNGoQwDQYJKoZIhvcNAQELBQAwPDELMAkGA1UE +BhMCQUQxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDTUpJMREwDwYDVQQDDAhDU0NB +LUFORDAeFw0xNzAyMDkxMTUxMTRaFw0zMDA1MTAxMDUxMTRaMDwxCzAJBgNVBAYT +AkFEMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA01KSTERMA8GA1UEAwwIQ1NDQS1B +TkQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXOKEhcYJqEWAOODku +Br85VgRw7f1w8UW3lfaspxUdjqohb/JGhmQ4+illhfg4bqVyx1lIy3N8qczRU7uJ +Zufg8riyZQF8jrHfUadFJYmSPf19Fy+DPh1Ys/87kPARuhABNYedGa6SSz0ymCYO +dN03kmuM4ovIDdCLF14j5svncMfRYzUF/qjp4lD9YWUah+wJQEeTzShiRVKxXMLV +Vv4z3fiaQvBUeN+wGo1ELuNCThtL7h21dI3yv+njiFhT2li4nYqTqCO1EWvn4SOS +1QOY3TovY4drQQsWjRr9DpvH1AmmE1H+dFd2twk9na8nVS5csyVcEVSsgP2Tj64R +HFr+ISH1zf76uKg4b/Pplsl+BbRNnxiJMs9Jb0mNT8O9yioBIBWiDj9yoEOt2C5K +R8LqPV9WFSiy2HjNSchbKb8z8YKmx5837CkUe1wsDp3C8iDH7d8W0UD0AcOltvZw +OnH/w1AJkJMasnuT///Vh3mcPkeKyC8E47bED8yJ5k6aidyGNAVTSBQ6HPB5d0tA +NZA6dGnaIb0lYN1o4BHh+IfnIfPF01dGmMkPjHE1HgozaxwcloIdmJPwQ3L/pBEz +Q5h1naaxRdxnvK5tI1HgQFW94P1C4x0UBA5/Q9FXjSirGOKJK8pFGMpxe5Gjplzm +ogO8YyYOPgxidz2v3TthzlwQ+wIDAQABo0UwQzAdBgNVHQ4EFgQUAxsUqEIbaO+g +v9CByIwrZCcFQqkwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DQYJKoZIhvcNAQELBQADggIBABtx9HXWvVuxcMGDZyaPrQVbYSn5bC/GFX+TmYF1 +7Smgkbs6Z609fGyYGmi4o8TDIKDeERT6VHxwL11F/5iX6wibmljt13DNXP2AsKWJ +Dnj0o4omrJds5oH+n6tYohyt0f2wuJ219M8eo2MTV1O+F6SNCvFtkLafwRTepgx3 +8t6yRb7AnpbJHjMuRrIaYT4ggwKpiyueEGW/0fleKWiSXKYegWQrc1TBtts2K4um +odZit4TqnFUSXom9yo70CYTIosQ/BI9ytxRiHqLLLnLP0M1+EToYlkfr9Xan5ZQT +/nM2s070/3SVQ/KIZQiICn7KKo/ixEKyyWNfgRL1sWIMVKhRdBW9K/kGlj6aejlZ +cYsjOBvLjebkuVV9W5cY416xgVOgLmhJMA2TsPOUxk58bjx5N+xOOzn/r5kOcdCn +wv9YebV0msV0NBibRd78sXhrKEuFKYTSiMF/n27sHu6j1cFHUtWHVg1wLzlkto/o +VBdhpTk+M5cOzfbzBg/2H+PnENreAwWVkoxjgFeb0oICTA1AP/F4OJ3sycptBgce +3SweKGEz8vsb/IP4A14tszRGeZjN6z7owCHR0T5hin7CFgYAVUwcwNKOyFEqN0yj +AJJ+WVPllWUBt0elGSYazk1KWqSbv+ezieuPRGy2TO+SeqIEQQdMQeEPFJxZtLdJ +6OHR +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFPzCCAyegAwIBAgIIcb/A+CFvsCIwDQYJKoZIhvcNAQELBQAwPDELMAkGA1UE +BhMCQUQxDDAKBgNVBAoMA0dPVjEMMAoGA1UECwwDTUpJMREwDwYDVQQDDAhDU0NB +LUFORDAeFw0yMDAxMzAwNzM2MjZaFw0zMzA0MjgwNjM2MjZaMDwxCzAJBgNVBAYT +AkFEMQwwCgYDVQQKDANHT1YxDDAKBgNVBAsMA01KSTERMA8GA1UEAwwIQ1NDQS1B +TkQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDfqCqZlucURRLtwELc +CJkeHN/4Q3VmqO01vULoNuCbDNYaiKQTGSQZgr0oe25/JwGGSmh9duqDApo9iYBo +/xvT/asnu3BF3N+PI3R3vegCM1ShfO8sRMPYRvx7Z+FC7PD2tur/EfgqQNS1kiS9 +J8ZBcRjE0g7LVdMWFQGvHIRlg+2wGmef54lhc+kEDsTEgtt9DHJ9lGeJFGPUNHoX +kzWS6K8y/XsLIQrcET/aD/19GzWJgXWnzIpqOaRDEVbsLLn4iN9M+mV0rQPIi+8I +Anmk8mVoaIxaH5gH/A7ROZJenW3sBCncLksXISA7CzJCZfNBy2SIukDIpQRUiOUo +aE7i/JGqu3zWA0NwZ16R+c7fIytCfHmp5oVbAX279uNu1S7h3foPctOruTblwKNX +mJJ43/Ul6duzLVGKCt7s8u75XymOiSWBrFY+JqkDUPH1Pi7ALKiwusG2ZcTC8ZBf +nhbWU5aGKrge9fQ1ADv5lB2knsPtSNICIuTlENefyFEbUe9NPSQGDsaWly9AN8Yb +9XaAP5yzub72zDex9pEirrWojNmbA8x25HsYXHYT5vqZOPWDrKkiV3CsonkdlItk +a9lE4aJY19ZsSw+q3ci8f0fLrLxFvX9MZazAgG1EeAOJUgNA+Xkii4qjZIzYX/MR +HfsEfVBIGfSZjraYDj959LyHXQIDAQABo0UwQzAdBgNVHQ4EFgQU0eDSC38c3I6t +ovHw2KN74oL5iaYwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DQYJKoZIhvcNAQELBQADggIBAKQgdw/W+Ew+swN2xW97Uy2w0ChIaNV9iQU3PXiH +4m6jwYeeGWYhU4ccXzrccxbwDkLw7OkeRrBfFy8lH+9p8Zu3Mb/Izxdl+DJRBYPm +CMqOzUktYWq01+YUrDQ2XMv8NTmjD3agJ8Ue2eeYK1zHvKFuWmDMc/sv9yTp3gMa +oOTm4nLTIdqLkzQ5bH2sGXT7BlBWpfysvDfVyTtv75J3ztliS517158snYGcU3yz +qdl7vnn7TawJlDAUcBMW8tmOD4x9YG7qBntx0BVoHZyt7DLOmEm32b5d/lbD3Sl8 +b8rg9437ahyT53+5LSGzUOI1IEJiB2injyaUrnXzBJngyoc7O/PzIEesRX0lqSu1 +qXVM4uIQh8QpACMOB6p1IQjOBKYMWhbquqGt8OJpXaf4hkmmUlNWKCAhdCBbRedM +lowK5sNp/Hxp/zqg4uNWgyTl/BPOdulw5EPm+sja7cmxeUPtpJBc9GHVwkdGOJEA +OEOBn/hiC8II52ebPkndjIyb24H+vi9YYjLoIiaqkwZOR+Sl62XW3fGbfBMWPX9M +Oy40jmGw06nlkxIyQUEg+xC6QQNg4aLP3C2Qpd1Wx5QM9l5gnQlbXehvpeoH5aE2 +NbRS/j5IuJXFESQNnmrENz+2sSPX8haEaodhNee9dZyTrAefnGzT/pTdwy4u+lGK +Z2/V +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFfjCCA2agAwIBAgIBdzANBgkqhkiG9w0BAQsFADBZMQowCAYDVQQFEwEyMREw +DwYDVQQDDAhDU0NBIEFMQjEdMBsGA1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3Ix +DDAKBgNVBAoMA2dvdjELMAkGA1UEBhMCYWwwHhcNMTQwMjIwMDAwMDAwWhcNMjkw +NTI0MDAwMDAwWjBZMQowCAYDVQQFEwEyMREwDwYDVQQDDAhDU0NBIEFMQjEdMBsG +A1UECwwUTWluaXN0cnkgb2YgSW50ZXJpb3IxDDAKBgNVBAoMA2dvdjELMAkGA1UE +BhMCYWwwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDITg/8Pfm9mVxq +tuirswdRqP87ZZyc67yfOK2CuJJxBwrvbUL/6QUq1gUHlG13LRyD86Ul4k9a0c2F +n0nP+t2ifBsWS30wT/fWjchokcQb65awBk7cH76RiVugFC7L9fZaHNE0S3WAnUyc +r3KiujefumMjUdby/wqL3Dae1RguCNtwz4rSwVKnSFuhVMg2SIzrIql4A1VQEdz4 +2USYOGOqnpdxNOB+WV3kFjmVZYoXQFFzrv2Q8aBPRCxACWNXOzym+vaiPbp8XQf9 +/ciIhUda9pCOCq1SFDwXA/VFAeUaJW7j6e61ek3IUlsI9UC5ZQD2GroNMweClTDq +dEwGcwC+794FkosScwmPmp9LT5eYvqCZ7i49jzKmgF/5tF4IjKcluS7lVOMEYZqy +QE1KdAoIHb/XWmqdc0IRahNEZKJ5Lv3Flx6/TyjLgC5OT/I9m539ULqnNlU8ckEU +Mve8142lf1UNaSAu15WajDm4/6xF2gloY1K1SPuSOPK76DYVvaw61aa1XI3FHBwf +sg+JKl8siNmUhvZHN7lclnGApUVba4WaDKAFPVcTFln9iqYGpkehv0ny478BUCJW +KZWWuO3jmXvPgQK/Qb8wIV10C0pzKwano3s5cp4Od4YvGjQiFFZI9f18kulPCQCb +py8GYaX51j0fxRZnUl88NJ3RgPWdPwIDAQABo1EwTzASBgNVHRMBAf8ECDAGAQH/ +AgEAMA4GA1UdDwEB/wQEAwIBBjApBgNVHQ4EIgQgOC9Vuyo/hLJQsK1qJ9XkIh2z +51UeDO5OWycklxwT+UwwDQYJKoZIhvcNAQELBQADggIBAI0vL9HjtrWieZRHXSrS +MOjISsL/KyK2hgJa2T/kUS+HkxP3oFLGjPTbKWVUGhsYM6tK8piMI8RqUIpZ5OEI +2LNQAktqivA8YMNG8ggVx+SGPCb/9Xt/sZZuplAfwo7LD7RnPI3csKYmXEiu10zN +NEZ02x2sfGIZFyVo0SWM/+yYkDMApsiEMwM/GSOfrpByWcQow/mmB+DGIpNeEzqc +GbY+hCMYa+Dl/numldwwgk8Qkjyeoq6rU+OfmkzzmVBDXmDWTl242e1jJdmhTREm +Lba66jh2xZGwgmQueL1vWsNefm57ar8yxVpUk0txjNZf4oYyi+GJbu1gdZWPfyxl +GVu5BXB8x8CsCiQhbJTzc+0EFnm5LpbNK7ufpiDbxPjxWYZrlSA/5E3JzIHYZOU5 +oGAc8iw3Tvr6+V0iuVQus38nnykqPhp6UuXIjTCLO4Rc54kMsBRL3ZQRfiYsQr06 +KEHz4GHWOrIhCpN52+0QRyfAZYfFrAOjANlBmWRdqIP6NkMzoPe/JFMm8LHB9oaq +XQ1QbtMjFeJdrtmFMBoWWX5ZRawF6qcScarhAxa48SWzbJ8rK5y/5V1539/mW+sU +0O/aIHcXDJVPqY2QQriVvuDyXtCA6gSwUvD9KnsCEMIb8RH6JORjaifDJ2KA/VHz +l2pA4vlH8gwzAd5PWv/8Z3BU +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjjCCA3agAwIBAgIBsjANBgkqhkiG9w0BAQsFADBhMQowCAYDVQQFEwE0MREw +DwYDVQQDDAhDU0NBIEFMQjElMCMGA1UECwwcTWluaXN0cnkgb2YgSW50ZXJuYWwg +QWZmYWlyczEMMAoGA1UECgwDZ292MQswCQYDVQQGEwJhbDAeFw0xOTExMTIwMDAw +MDBaFw0zNTAyMTMwMDAwMDBaMGExCjAIBgNVBAUTATQxETAPBgNVBAMMCENTQ0Eg +QUxCMSUwIwYDVQQLDBxNaW5pc3RyeSBvZiBJbnRlcm5hbCBBZmZhaXJzMQwwCgYD +VQQKDANnb3YxCzAJBgNVBAYTAmFsMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAs0l4eiPng9/IjUFA+2/0Dr9Y/B6niPWwrGl7u0kSew0Y0YZYPlcnloLu +408jWr4TMNKvxPsjgki0JFbJablWr8/ehvfGcpJatvBe+6FOFF0ebVN1hXl/GSeo +1I7Hw8NXkbzlft78g0tje5hNXldzdIZlb5zgXMHggifnWGG0mY02LgbRPIfU4fLw +2EK/V1FBW1ufB/MLr2EypSPciyo71QwDRFWd+el0aTw/rITlUGS/oeZzFmEtZ6Eo +qMX43bWDpGoVWt8EKu/VPBFtl9itaMbmwZ3UBnwTdLXYKqzteC40BTkxBZbBJ6e+ +E50xgXc/FhlThX+Nc1TFV8WzwPNWisO4btDaSoFmPY43++zY6VGpd/17tVmXiptO +W+QhI5oeuEtMLEZ/dhRPjWifRI+FzJ/qol6WTqdmaDPrkpqBeYuOPIIQupinnuMn +jmsDE+WIzF/YnL1l3HnhdYIZ0GQQFwnLoSH8K19XLHwijh1vEN1D2su8jodGb2t+ +wBxdizPKsHERq3x3cQB8ngQfmKfk+aKAldDplUZbeLoU7FvYFnc5BCZcZTt2G3/V +i016HTTT3xl0H/Kd+cvdBiysDbSy5phiGAhckkUmb0qRq5KkBp5Mp06WdwGU1baO +iWfmd0Xq3J2q1ynrpdwaDT99jOrPTXS1gJrJv2qdkoEPMtS/NE0CAwEAAaNRME8w +EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0OBCIEIIrl +GptdmBRuxFhzbbvUbD0RFvccsmfpoLh9Wn0MhgpqMA0GCSqGSIb3DQEBCwUAA4IC +AQB8vFgiPrThjwUEtiUmk3+Fx9s+nViBqqRfY1qcU5mxwaQduqwNrQkRO8bf5fX1 +eq4uJG4VEFMNV6szwEsP4DC13gTOfM3ep8q1IFhxt+KnAtSPr9EtR6cKUwQIJE9z +W5MVRe3mGyohPgrFyJxfmn0VI2BCfZn/FCnFnEpDA9YjX1gcYCm9odPau7MiimiJ +S1cOElzZF63+y1hPb72AfaKobWbe2L0bZfCqdegCzLIGHCHFLbmOTg/v7/OeVMN0 +SSBNhVmj3buV4gbGTzUse99mdZmO8I74Cd3Q/R6Mq55elqko/Nn9tSZFaSHr01uF +bugYRI8EkAM5jiaSwpyNvgEK1jpFDAZZO+hx1Qv8gmEcf7xkUhyxMgdsgNJJoX+i +11PSa5j/gwVfmv/KQK9iOG4hYELjWVcr+lTf/vD8oLGf+8U+uKiro0rnpH/NBIRJ +GneninJG5WUSfLmbwLZxoPQfF9KVMSmSA3x5MtdAdfoFfqdvDzU59ogjGr2fUPxq +GtCdXCtC5w/ZNvZcP4WOuD1eS6SZidcnxsy5hd0yXUoc+irfvsTR0VLqTVwRECcY +TTjQvcLa/VR4ZsvNbTSSyifqw+6HjIQLh3bcfTC8Fsr1q1jHus8H4ORPK8LReZ21 +LC1ICahc9fKUzVtTruBvuPMOFStcthBvjoUZnB4AzuCPhA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjzCCA3egAwIBAgICAIEwDQYJKoZIhvcNAQELBQAwYTEKMAgGA1UEBRMBMzER +MA8GA1UEAwwIQ1NDQSBBTEIxJTAjBgNVBAsMHE1pbmlzdHJ5IG9mIEludGVybmFs +IEFmZmFpcnMxDDAKBgNVBAoMA2dvdjELMAkGA1UEBhMCYWwwHhcNMTQxMTExMDAw +MDAwWhcNMzAwMjEyMDAwMDAwWjBhMQowCAYDVQQFEwEzMREwDwYDVQQDDAhDU0NB +IEFMQjElMCMGA1UECwwcTWluaXN0cnkgb2YgSW50ZXJuYWwgQWZmYWlyczEMMAoG +A1UECgwDZ292MQswCQYDVQQGEwJhbDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAJL5cWFQcFtQ/ZTl+ttNzUrEfEpPakzAqD0WPICLIBzo95alC5Wn2ybi +FJ8Q6cvgeTucLo0XMtkBEslsbmxXNW7MqDIVFqvYH4Y4QTM1L/Z7d3T6+vkLbd+X +zGQE4JvuFn7xcDR/FHD3JKtJcSAv42hHNgQfsIe2keB2tcOpPqWpeIpPNgFmCo2s +9yclyBnaiUbwqn8Y54/spNa8SnrYhjG+G5p3AVjwPlbskFrgjNB07N8mUrGsHu/r +7k9vdT5JbgfBZ5033dF8gepa4z0NOxmu/LiYK7WG+nBLTg1fhGEAu85IAwVxSW9C +TtxUWHQZL6UHlRyXUvT7JJ2hDDy6NtoWoT3Y1PlfUBrszC2jc8+H+Sd8Xt94Wspz +VVCvPPnb+ELi6Dk660uWj6sB9JiVuygjKAw2ZS0ZUnT5+QCPlMoPHXMz9wsqX+cr +YGhoveBzL0CojHgC1rSbyOmBwYjTyymvJlnxiQzAXWwyP3MT+G0DKueRzoPTbxTx +3nYXukeUViyOwb27kLXdGfGyEx8/TVAEyviiSh1oOfwgFgNlldcwHK++4BDHny7y +7O6TGe6pW2y8EoYvQTlJt83hAIVnLcjompw1Vo9/hYekl3Bo4uzXBFMSwkD1xr8H +/s9C5qF36lubsGEhAmpaCfRYullXvIStnuImHw1A0ejhUZZp7EddAgMBAAGjUTBP +MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdDgQiBCCl ++EWCSQ2g+cbf3rLEazCaywth2KpffyAle973On6TfjANBgkqhkiG9w0BAQsFAAOC +AgEAiLMVXNVcCp5ydqvJ2Wa+LfKUQI589wMQg031/jSKfPiR4gfeHvNZAlxUywv1 +9Q33AIBd050gS+PFdUhFpZTerH9gSqPyHYOtaTCtMhiz4l6yY3pX4ELBtvXifZX6 +RlVjLinby1SwmPl85cNqaUPvZlRjyPJ1EdHm2rvzCgnJ7IhWQy9X8igfJG4W6jqS +hLfCK4aZucOHqsep+AnDfQqLBVwyAdMRToAo+lv/WZ5zQYfZubrSEEbyByJOcH0+ +c0AhC17gyMW9/jcSjfzfDBi8uX+DXfIOLD5zMogjp7pwUmcXP21UZJjXmRRmRtth +mM1V9gedkU6mFEE4ZEX+SxUZubPlT6h5Utj0c3LiAShjEtbwfxZ8Bm5Lk19wH3qi +a706wZLh9Qh5XAbbgzu+RC9hNzFvENR5lvtYYrNg07WHqa2IfUosA7tMduvfcwpb +uIWBzuumzF2XME93WLJWMAt2aLzkbizT9yu3Hvbv/5HXbl6HuKoKc3pNpM6GscsU +tXbmCNI9R7G+EFXodtYJrA01dAKQUPqsyYDCyLT+oZ2K+BeSKsash4cxWgE4UTHQ +n8J0vL7rJYKW/PR5KMJwuLPpaF9uzGIrYfyu5eQYzQISeetDbAbV1VvUTM9mtWzk +Cz9l2Jnm6FFByF5eI9xG8UPmbzAAsWsC1vdUEjwt1YrFSwI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjzCCBPCgAwIBAgIBMTAKBggqhkjOPQQDBDCBgTELMAkGA1UEBhMCSVMxGjAY +BgNVBAoMEVRoam9kc2tyYSBJc2xhbmRzMRswGQYDVQQLDBJDb3VudHJ5IFNpZ25p +bmcgQ0ExEzARBgNVBAQMCjY1MDM3NjA2NDkxJDAiBgNVBAMMG0ZlcmRhc2tpbHJp +a2kgLSBJc2xhbmQgLSBHMzAeFw0yMzExMTcwOTU1MDNaFw0zOTAyMTQwOTU1MDNa +MIGBMQswCQYDVQQGEwJJUzEaMBgGA1UECgwRVGhqb2Rza3JhIElzbGFuZHMxGzAZ +BgNVBAsMEkNvdW50cnkgU2lnbmluZyBDQTETMBEGA1UEBAwKNjUwMzc2MDY0OTEk +MCIGA1UEAwwbRmVyZGFza2lscmlraSAtIElzbGFuZCAtIEczMIICRjCCAbkGByqG +SM49AgEwggGsAgEBME0GByqGSM49AQECQgH///////////////////////////// +/////////////////////////////////////////////////////////zCBiARC +Af////////////////////////////////////////////////////////////// +///////////////////////8BEIAUZU+uWGOHJofkpohoLaFQO6i2nJbmbMV87i0 +iZGO8QnhVhk5Uex+k3sWUsC9O7G/BzVz34g9LDTx70Uf1GtQPwAEgYUEAMaFjga3 +BATpzZ4+y2YjlbRCnGSBOQU/tSH4KK9ga009uqFLXnfv51ko/h3BJ6L/qN4zSLPB +hWpCm/l+fjHC5b1mARg5KWp4mjvABFyKX7QsfRvZmPVESVebRGgXr70XJz5mLJfu +cple9CZAxVC5AT+tB2E1PHCGonLCQIi+lHaf0WZQAkIB//////////////////// +///////////////////////6UYaHg78vlmt/zAFI9wml0Du1ybiJnEeuu2+3HpE4 +ZAkCAQEDgYYABACRyRi13iGJwTsAzRVsHIQc0zOM5S93g1q9zNAthlNEF3eRC9jS +EipBtYtWZTfJD2kZ27zySzSRWAnQ3KIW5+xJKAC5SG+JfeMH6vv1yAesOUzwRdRc +W9M4oAJZc1XQTqOzHtrUXiA14qfeTf/2qYFA+OdIWtZUjRhGZHwJMdYSHnkRn6OC +AWYwggFiMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUeS9jCIkmh7iK +TkhzVUoBAF381jowDgYDVR0PAQH/BAQDAgEGMC8GA1UdEQQoMCakEDAOMQwwCgYD +VQQHDANJU0yGEmh0dHA6Ly92ZWdhYnJlZi5pczArBgNVHRAEJDAigA8yMDIzMTEx +NzA5NTUwM1qBDzIwMjgxMTE1MDk1NTAzWjAdBgNVHQ4EFgQUeS9jCIkmh7iKTkhz +VUoBAF381jowbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEu +aWNhby5pbnQvQ1JMcy9JU0wuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2Fk +Mi5pY2FvLmludC9DUkxzL0lTTC5jcmwwLwYDVR0SBCgwJqQQMA4xDDAKBgNVBAcM +A0lTTIYSaHR0cDovL3ZlZ2FicmVmLmlzMAoGCCqGSM49BAMEA4GMADCBiAJCAThm +fcyNpdidx6pGlfddRs/7PP0UDKchOz1sxlabtSehgUF5Tyjc2WSIa6FyG29nvQqM +8xTrIFWt/j7Hck4qJW2PAkIBiGlvBs17P+yZ3XGaQLU3kU8YSIBYlDzyX/evejXo +gvq3uuS+cdEe7Ils3lcqCuH5dAUSHeb/Z0wDzPtzGFNJxCM= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHBzCCBPGgAwIBAgIBNDALBgkqhkiG9w0BAQ0wgYExCzAJBgNVBAYTAklTMRow +GAYDVQQKDBFUaGpvZHNrcmEgSXNsYW5kczEbMBkGA1UECwwSQ291bnRyeSBTaWdu +aW5nIENBMRMwEQYDVQQEDAo2NTAzNzYwNjQ5MSQwIgYDVQQDDBtGZXJkYXNraWxy +aWtpIC0gSXNsYW5kIC0gRzMwHhcNMjMxMTIyMDkyNTU5WhcNMzQwNDEwMTM1NzI1 +WjCBgTELMAkGA1UEBhMCSVMxGjAYBgNVBAoMEVRoam9kc2tyYSBJc2xhbmRzMRsw +GQYDVQQLDBJDb3VudHJ5IFNpZ25pbmcgQ0ExEzARBgNVBAQMCjY1MDM3NjA2NDkx +JDAiBgNVBAMMG0ZlcmRhc2tpbHJpa2kgLSBJc2xhbmQgLSBHMzCCAkYwggG5Bgcq +hkjOPQIBMIIBrAIBATBNBgcqhkjOPQEBAkIB//////////////////////////// +//////////////////////////////////////////////////////////8wgYgE +QgH///////////////////////////////////////////////////////////// +/////////////////////////ARCAFGVPrlhjhyaH5KaIaC2hUDuotpyW5mzFfO4 +tImRjvEJ4VYZOVHsfpN7FlLAvTuxvwc1c9+IPSw08e9FH9RrUD8ABIGFBADGhY4G +twQE6c2ePstmI5W0QpxkgTkFP7Uh+CivYGtNPbqhS1537+dZKP4dwSei/6jeM0iz +wYVqQpv5fn4xwuW9ZgEYOSlqeJo7wARcil+0LH0b2Zj1RElXm0RoF6+9Fyc+ZiyX +7nKZXvQmQMVQuQE/rQdhNTxwhqJywkCIvpR2n9FmUAJCAf////////////////// +////////////////////////+lGGh4O/L5Zrf8wBSPcJpdA7tcm4iZxHrrtvtx6R +OGQJAgEBA4GGAAQAkckYtd4hicE7AM0VbByEHNMzjOUvd4NavczQLYZTRBd3kQvY +0hIqQbWLVmU3yQ9pGdu88ks0kVgJ0NyiFufsSSgAuUhviX3jB+r79cgHrDlM8EXU +XFvTOKACWXNV0E6jsx7a1F4gNeKn3k3/9qmBQPjnSFrWVI0YRmR8CTHWEh55EZ+j +ggFmMIIBYjArBgNVHRAEJDAigA8yMDIzMTEyMjA5MjU1OVqBDzIwMjgxMTEzMDky +NTU5WjAfBgNVHSMEGDAWgBR9LOaAg2oN7FPsqdMEHeWdrvcOyzAOBgNVHQ8BAf8E +BAMCAQYwHQYDVR0OBBYEFHkvYwiJJoe4ik5Ic1VKAQBd/NY6MBIGA1UdEwEB/wQI +MAYBAf8CAQAwbQYDVR0fBGYwZDAwoC6gLIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEu +aWNhby5pbnQvQ1JMcy9JU0wuY3JsMDCgLqAshipodHRwczovL3BrZGRvd25sb2Fk +Mi5pY2FvLmludC9DUkxzL0lTTC5jcmwwLwYDVR0RBCgwJqQQMA4xDDAKBgNVBAcM +A0lTTIYSaHR0cDovL3ZlZ2FicmVmLmlzMC8GA1UdEgQoMCakEDAOMQwwCgYDVQQH +DANJU0yGEmh0dHA6Ly92ZWdhYnJlZi5pczALBgkqhkiG9w0BAQ0DggIBAIWpIVxn +Wrsh5KtBzbzoQ9Up31P3aqgl1NoHLrPNHoZC9IsjPD5yhw8Pq7BGtbP14NNVI+tZ +tkgTsY3BEdmrJ9VnqPCVGSSFwQj8oQrKKxRBb/jFYR+f1LfwOrqE2RyvqDplpZOW +GmDgrNZx/b5Kw4krOUCzvtZv0lHk1Jas3ne+VocxjNz7UcZD1FUS5xACk6zSijCq +esdUkDm0LNfx5eFsHsPWOJWTyJ7IDgEkgY+uq5Pnx83GPcMlLK58o6RDfKsO1Ukw +u6/BmG/d4zs3eHsjuEUCOF8HRlrlSTE4opqsI0Z8PYgRmd4ZHPBSSj9hTFQpWymG +zebjt5eYCMJvb80Cm5GIkSHrSKN1rCraYm9zi5uRShwZeY7bitWPY0iozjL2Wkrc +gKOXPQSRTf8KtQBO2nMEODb9PHke9wWBoSrAvNakUl8pghiYBkUZwcdjocuKEBBg +PEiUhWo2bDjNnnEkghg5AGW/rdRHlLlrbgnJQVNMX81wtjA5QEQNBmZDLRZyh0Pg +tR9ZET/1txZGCPMWrh1fQBA6uI009YaZwqoqXNzNaTjLAUQ5vM4XJtqxjNFRJCcy +ZOTPpxT/PVe0LS5ZOtYYIMtOomMXKqqo/QgyYzU48uhGpujERuFiP+yKT7hVg1Ho +1sQtzALrc5NTBPgmdwVrDPxPzJRw132Gq5cW +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHoDCCBYigAwIBAgIEWuHKTjANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJD +TTEvMC0GA1UECgwmR292ZXJubWVudCBvZiB0aGUgUmVwdWJsaWMgb2YgQ2FtZXJv +b24xDTALBgNVBAsMBERHU04xHzAdBgNVBAMMFkNhbWVyb29uIFBhc3Nwb3J0IENT +Q0EwHhcNMTgwNDI2MTIyMTQ2WhcNMzIwNzI2MTI1MTQ2WjBuMQswCQYDVQQGEwJD +TTEvMC0GA1UECgwmR292ZXJubWVudCBvZiB0aGUgUmVwdWJsaWMgb2YgQ2FtZXJv +b24xDTALBgNVBAsMBERHU04xHzAdBgNVBAMMFkNhbWVyb29uIFBhc3Nwb3J0IENT +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDOIOzYmJY35HQJnK60 +xJydEUICxug7H8JWVZYHrU/F3bXri6NzyIQxz3UylYhzwXQ8ejUuydjBIK9eC/oL +4OZKgCSP9xg7/Acuc+xFawlMST2HZlTlyfBMzDIejM6i1WOmkvRt4p3equQAoybf +lXsNpAN35eJY2n2awJuZRuvc9xHoldc0q/9Jat2dlxgSHnOSUc7JMi6Hy+L8BwBG +u7ju/aat91xWO2DPlC+NuYI4fnFINKAknlw39JIbrHVnBm3KKZmXMs6BvJaznIH5 +gX1MlRepY4PYi8vOQd/H0idYUNOlUVJ4QA+i9tghAXjnWAkmM1b3PuyuI2GFQ9W0 +R7WPXN7dY9Lc2fu4aaKv7kta7WORPZj3L7MiuCBs2nnOIVvXA7e3bTU1iLOtKSxF +LYyaJT0Z63GMPiEozO1mWO0AdWdmyhrBX2IwdF8V1Q8IJEG2WQf8+KhnSmt6kO1e +FWMMgpjyx6Wq5L2zUu6JfVDFO+FycH6lQiStcvDL+puaviNaqZkI5BvVljuAvdIL +XNcVfNQhnKDelaQzvIOgjNkK2BCtLzUO/jjNLveqYKbpLnMsSOMIrerZNGr0gWVw +fw4poIUHT1pg4y7JWs/sDvDjeP88eCSz8gl0D5pC4aAc+djcMUlbz5yTRlCje8ZT +yfS6ejfHWFBZSKwdGgi0daWcrwIDAQABo4ICRDCCAkAwgcQGA1UdIASBvDCBuTCB +tgYIYHiMmkIEAQEwgakwHgYIKwYBBQUHAgEWEmh0dHA6Ly93d3cuZGdzbi5jbTCB +hgYIKwYBBQUHAgIwegx4SXNzdWVkIGluIGFjY29yZGFuY2Ugd2l0aCBhbmQgZ292 +ZXJuZWQgYnkgdGhlIENhbWVyb29uIENTQ0EgQ2VydGlmaWNhdGUgUG9saWN5IHdo +aWNoIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmFudGljLmNtMCkGA1UdEgQi +MCCBDHBraUBhbnRpYy5jbaQQMA4xDDAKBgNVBAcMA0NNUjApBgNVHREEIjAggQxw +a2lAYW50aWMuY22kEDAOMQwwCgYDVQQHDANDTVIwDgYDVR0PAQH/BAQDAgEGMBIG +A1UdEwEB/wQIMAYBAf8CAQAwgY8GA1UdHwSBhzCBhDCBgaB/oH2GKmh0dHBzOi8v +cGtkZG93bmxvYWQxLmljYW8uaW50L0NSTHMvQ01SLmNybIYqaHR0cHM6Ly9wa2Rk +b3dubG9hZDIuaWNhby5pbnQvQ1JMcy9DTVIuY3JshiNodHRwOi8vd3d3LmRnc24u +Y20vQ1NDQV9DUkwvQ01SLmNybDArBgNVHRAEJDAigA8yMDE4MDQyNjEyMjE0NlqB +DzIwMjIwMTI1MDYyNjA2WjAfBgNVHSMEGDAWgBR/J/U7y8Tc+BThjPGk9tdRfW7b +4jAdBgNVHQ4EFgQUfyf1O8vE3PgU4YzxpPbXUX1u2+IwDQYJKoZIhvcNAQELBQAD +ggIBAEbyqZgDdFo99jC/k14eoAcTVlgXWhG2lcR/cbmBscO+OmQoKt/GMje3hZmA +GE9wInue4uSF8M0vnZCdoI8+7ahDopyrWAXiLIfskvUMIiehB3jkVL1kuEOXI0JS +7Fviz43q7yNnfvcak/Kbi3XgLjRY3L2/ZUQ6DYu30fOscgk5fbMDJCdWFLRQJBwX +eWcRpNVIeYIOj19Hzks9bsinSJbCMr5YIvCI2n1BFJUkF86ExYOgVeCrIt4paorV +0vHPYSI91pSKVpFxjWYVSqiNyL++UfGHNcpV8yUe1toSaGh9eeH6RIyXqUVBbNT/ +X4WMVAsEIKCtFIfHDB3wASjn2xze2uZBTpyiXKvLgQwzDaQX1gEPnWai0ZfsEWuX +tLeXVojGckoHBgmEZd7U0iF4J0A+jhp29vTC7/Sznq+mW4UtwTIlyDiuULZQ2cNk +eVxh4NOTd5EmG9ppf4ySB/0WbSviDL/nf2uhiCVubESmSQnEH96/lK119Sevv2jp +X7M+LzgFAOp+KbyNYil7nZPFQntt611/kUmFZp1uxHpe9XhkVyq7yGEX87U5BtiI +3Uf0eFw8bu5VkR/JgNwn7Nfg8JWonuYZtfwkes8w5enP3IkM9ZQwL0L4q4AWBtov +zh8JJa1veA9l2k6RmvWbmCB3jbdFCBdwnVhGSTPLuxyYaICi +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwTCCAmagAwIBAgICJ14wCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDEwHhcNMDkxMTE2MjIwMDAxWhcNMjIwMjE3 +MjE1OTU5WjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDAy +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABEJLmld5qgzcwbAp4PJAUAafHfpnKDaZEC8EqGoXBAYsSZ83JDcHfv66 +sT6WFEYV4cdGVULJEY5VgUG6/BV9cTSjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEw +HQYDVR0OBBYEFJexLqpFB8O+KXUn/cMUc4PNgzkyMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADSAAwRQIgBiQNQY80f+tYJfJTMSyMOq8cDz6XpV98LsPnGJNb +7t0CIQCcdCZyYL/nYn9UI1GhoVRH8V6/7m0rnRvrgVQMzF8s3Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEmTCCA4GgAwIBAgIQCZ92HZZyke1ovXfZ70liFjANBgkqhkiG9w0BAQsFADCB +1TELMAkGA1UEBhMCSVMxEjAQBgNVBAcTCVJleWtqYXZpazEaMBgGA1UEChMRRmph +cm1hbGFyYWR1bmV5dGkxFzAVBgNVBAsTDkt0LiA1NTAxNjkyODI5MRswGQYDVQQL +ExJDb3VudHJ5IFNpZ25pbmcgQ0ExPzA9BgNVBAsTNlZvdHR1bmFyc3RlZm5hIGh0 +dHBzOi8vd3d3LnRoam9kc2tyYS5pcy9yZXBvc2l0b3J5L2NwczEfMB0GA1UEAxMW +RmVyZGFza2lscmlraSAtIElzbGFuZDAeFw0xMzAxMzEwMDAwMDBaFw0xOTAyMTIy +MzU5NTlaMIHSMQswCQYDVQQGEwJJUzESMBAGA1UEBxMJUkVZS0pBVklLMRowGAYD +VQQKExFUaGpvZHNrcmEgSXNsYW5kczEXMBUGA1UECxMOS3QuIDY1MDM3NjA2NDkx +GzAZBgNVBAsTEkNvdW50cnkgU2lnbmluZyBDQTE3MDUGA1UECxMuVm90dHVuYXJz +dGVmbmEgaHR0cDovL3d3dy52ZWdhYnJlZi5pcy9za2lscmlraTEkMCIGA1UEAxMb +RmVyZGFza2lscmlraSAtIElzbGFuZCAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAsBbFrlwYPweEjQHcAa4ZuJoQSlkxC94WmX60RXHh/UbNjc0R +QiZd78zjWombCH0kAovaRfYG0Dp6d4DjmU92i8pt52yWK3O1PqW0w7kZWT48znbe +DNNRmpRas8CRqsEulPpE9rSXmpJIPQXrGrNC8ZxaEKqhvr3R4eEKkEz/3F6a31xw +LC5qqjOBTYlE/CQL6ukxZiCjdqsN1TE4iZnVPdgvF1jMD7xXr00XPFLeebsPH0W2 +3xPjyFQ36h27W/GE5lpjwPWiPp46a3/tFqBVEImP7G/xalDKksdytjT/rxLeHpJa +Yo9D+t3CgkyLFfZdeExU3/yPpt1gNPNtbJ13BwIDAQABo2YwZDASBgNVHRMBAf8E +CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUhX/1alO2xNgzYAXZ +q16AIGdzx04wHwYDVR0jBBgwFoAU6wU7JxBTWZabvqEcM8xNSxYyCKcwDQYJKoZI +hvcNAQELBQADggEBAGqC8a9Qn9Hh2+oweMCkdRk5xoHCMgn7a/kThITnGkVu1Cyl +MZT/60a/dCBJ376uiTwrmaPmWjhH8mf7ho3CxW1JV3vgtz2tYXN9ynpM3uPYlAXs +EZAsIGqVMP2j3r7K95zemDDSE0bOry0zmC+2u2r+AFPwnq8PRlwyMpn/h+py1kiB +V6KT26XCXs9nWX48Sx1r06/NOEGmhwr5vMPoCHQ+2gwwKX3bUacoEzyhnD7eamhA +CBnhcxq364JYnW8vz9uQQu2F3inZzBh7D5g1QTTUxcTrtgmqEYjUTzxw+mQUNNMe +V5WnG/ykf43yzhuZRreGZ/ZKBgGh/FotULK0bck= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8DCCA1igAwIBAgICATowDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATIx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMDkwODIxMDAwMDAwWhcNMTcw +ODMwMDAwMDAwWjCBhzEKMAgGA1UEBRMBMjEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAL0mOW1+/OPT9mQQ +wOWyl2dYN9DBheu2wFNnYZsUc76tqgMmyr0+le16FROYqkQDMELaiGFFhRun+gKm +hcXo4s0+wTykd3ctV7Zfv92tmSKTiPkS6/auPkEuBiu4Moasku8ofJD6+KHd7lZn +Az1kJt4nae1NmpdPDlSZLBxOKwBKMnzZulFx5bHX1TRKLfu0g+h/FCtgx+lMsv+j +YL+eM8HH6LpkOgXhw2cx8EEGlDE/I9V+3h0aS71Wp+J9QxX/Jx5CLASjmRNPHF4M +CHjwk7hrKfCjcVFswdKQkAPspjmyh/8P7aKqvy96GB6sir7qeVAbMawPhb2d8HaY +WligDkItKW24F1GW2lujNIat2CG9oo1nXkGnRRx5dUGymmymXjTEHFpKCm7SwweG +FhrQ0TgGa65pMBWg2qctnaGpfAMUn9YQxX47Qkbfijp6htA4PgQUqU+kQgfeXVOs +vMBH1nW/IxMQ14yqYoa1zGg7JWzRrWyUBzt+hel7xXroT1E1SwIDAQABo2QwYjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjARBgNVHSAECjAIMAYG +BFUdIAAwKQYDVR0OBCIEID7D2583yNghzZxdFFIcHYW+lII7b2ygaHkEXyt6YTMq +MA0GCSqGSIb3DQEBCwUAA4IBgQCqKtMMV/XCNL6MSmnIE+cfCEGLGDtjdcB3eLyl +At+GaQ/1c5/QxwmaUSGR4317EgnKWAmG6PX6QCs4+jNAo+wa66n9As8bo3+z+35r +W40PwMAp8AGFbiXppivc9JRWOgpVisTQlrfbQ1TEb7BnX9tUTu1xKAD7eHN/rNuH +08KA1LS+kJJE5dQ4n6XKSEjemCRkY+AaGVBkPrBUgM1vaKBNb2jE4r3/Kmhk/xwC +Fg71X2SWod0QK9q1WSpJJq7yPPK9ETST9fo21v+Y3sWOqms60WZBG6uvHqMOiSXF ++DejMby/OavqZyLaKLO9FA0H9WwA8CirY0iBfdWf1K4HHul4D+kwYHAGzH61MtG1 +p+v3rEKypVyRset2JfkCVSR+isn/G5GD4KJ9URsGFyA3adZjKrZrLWORXR1yC32W +j/QWG95HFN0dTt8p0y/YyE+EOy93B47T3BJi4r0aq7S1Y+WVVokTknkA8oHwq87D +CQQ2o/el7rkOVV0eXiydNy67Kuo= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE8DCCA1igAwIBAgICAiYwDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATMx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTEwOTIxMDAwMDAwWhcNMTkw +OTMwMDAwMDAwWjCBhzEKMAgGA1UEBRMBMzEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKwRlCLLdLQCMCo0 +4qQYXXY0lbfaGtWOq8FdwAXi5ztrpkeLFrnXoVSAfh7ddOkHJtfx/yXWs/mJ8j96 +wO8CMNVnqPc5HPX+G3ZPXegSJiSMoSsq5U+04IjDCyxVbTyHY/mDDwAen5QKlySP +GEQyFaq/iaUk4fu+eE903HgHn2aQ5c3z2Bw22UaGaedzWDJKMccY0O2aaWvhEyg/ +fnzPmGBzpN0eX0GnMPGsk64iZ7iGlcEz/QEKifC+YhMzM7GO29ZGdW+ROaVLmwU4 +curgEAfxOYQ/4xXt8nOng0r5eCw9tEoYBxcvqO4vUb8lT06ZaxvKRbIzfKhnRu7g +eGj8M+7Y07dEHXniWrDJJ3LzoT2LjE+3ehqSoskIS1EmYYlI+cTyhUxuQXvfQo0n +8eyc55uR6fFp1XfuZ61RvXenvwTEqklRQNmlcWnZSytIYbZCiHzAcKo0emIu0XuP +k1roRwdpWsB1WjnhLhT96k+WK067kbsRWKF65OcpsnxM7aEsHwIDAQABo2QwYjAS +BgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjARBgNVHSAECjAIMAYG +BFUdIAAwKQYDVR0OBCIEIDyuu1iYglrLQv22s0mRzIlq69Qey4w96T1CMLfJGjJ3 +MA0GCSqGSIb3DQEBCwUAA4IBgQBwJTlACb4ipV5cve4YfIi1Gkzw+fLpnUxKJ921 +HoKzI0ZeYhXyF7LbzFiGVDlc/cyYojEUQIkARTQGiIkNrFyEusM1e0Tk0WxEUUIO +JQiZ6gc1Zs8uBwL1zpH05ycwsGUwkYcmDk3qRUvKZDnf05dm5QZBtSV9DQc+Rt7P ++wM4toV9YsJxlqHlbu4NdZuzE9qQrwB4sFPeO/AEtL8xY1kqz3/JsQWJqcTxkUxc +mTbphynk/4SUr/cmEx89Y0Ldc+qDGSRQNg5d0OKAWBuY+6j45kxU+Nkl+gl0ECor +LYus5q0QdxaMSWrsHZv9Jy2JbX5SZHskeKjSrO0zj6d0tcy/1m7GuKhZUPmWYEiF +61V7NR+2eMUR0JN4C3nFZf17e/QHu0LAhGpQNB/DkX1aGykariD2IVeu8SBzZDzC +b0RnJllVk46axj2a6iNcHSe4kGVl53qiy9AhpZy1TfmziDwyIRpxQKE0D8mfBqCe +bwoQYj4ilZfcwkwIoiUNfZc+0mU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFEjCCA3qgAwIBAgICATswDQYJKoZIhvcNAQELBQAwezEQMA4GA1UEAwwHQ1ND +QSBOTDE3MDUGA1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5n +ZG9tIFJlbGF0aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRz +MQswCQYDVQQGEwJOTDAeFw0wOTA4MTkxMTEwNTNaFw0xNDA4MzAwMDAwMDBaMIGH +MQowCAYDVQQFEwEyMRAwDgYDVQQDDAdDU0NBIE5MMTcwNQYDVQQLDC5NaW5pc3Ry +eSBvZiB0aGUgSW50ZXJpb3IgYW5kIEtpbmdkb20gUmVsYXRpb25zMSEwHwYDVQQK +DBhTdGF0ZSBvZiB0aGUgTmV0aGVybGFuZHMxCzAJBgNVBAYTAk5MMIIBojANBgkq +hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvSY5bX7849P2ZBDA5bKXZ1g30MGF67bA +U2dhmxRzvq2qAybKvT6V7XoVE5iqRAMwQtqIYUWFG6f6AqaFxejizT7BPKR3dy1X +tl+/3a2ZIpOI+RLr9q4+QS4GK7gyhqyS7yh8kPr4od3uVmcDPWQm3idp7U2al08O +VJksHE4rAEoyfNm6UXHlsdfVNEot+7SD6H8UK2DH6Uyy/6Ngv54zwcfoumQ6BeHD +ZzHwQQaUMT8j1X7eHRpLvVan4n1DFf8nHkIsBKOZE08cXgwIePCTuGsp8KNxUWzB +0pCQA+ymObKH/w/toqq/L3oYHqyKvup5UBsxrA+FvZ3wdphaWKAOQi0pbbgXUZba +W6M0hq3YIb2ijWdeQadFHHl1QbKabKZeNMQcWkoKbtLDB4YWGtDROAZrrmkwFaDa +py2doal8AxSf1hDFfjtCRt+KOnqG0Dg+BBSpT6RCB95dU6y8wEfWdb8jExDXjKpi +hrXMaDslbNGtbJQHO36F6XvFeuhPUTVLAgMBAAGjgZIwgY8wKQYDVR0OBCIEID7D +2583yNghzZxdFFIcHYW+lII7b2ygaHkEXyt6YTMqMBEGA1UdIAQKMAgwBgYEVR0g +ADAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHSMEJDAi +gCAK+NqGCcYEw2MbzPyryjW2vKp6ZOUX7VUGVIfkojLcyTANBgkqhkiG9w0BAQsF +AAOCAYEAK+18Fn0bzzyb9HwC7KNuynPTvifjgvedFL1447ZqxolK6JrYwSu0/hF+ +dR/euxrJcGuTImsnD6cdJh0PP9KrSh6byXFVrSgjW7Of6dEIj7FFQRyvrBYcpMk9 +3bS1IG+Mu47soKD3824Ssvl1bRV3+ZG5rsU5952tBqQj+7NpCgTJGyucSSmgH2Qb +bjMp2IkZY33vs3hVt5mw8xQdoPz9Ow4qoL8GkuA7ICHvO4VAAbKeU+5QSvxpD8nM +hLj6gLF1cRHSflxeLgwvKY+4djUJbGhopotl2LH2/7dBsoZd46ObriVvfXyv49ti +mf7Y+EhDIkHfEN54eyLsJSvuRFE3MGck4swg7UDLuRKdPf7LYlS5mQZK7+5x7asS +dvJitEQ5JrnJZyAjTtHNvSmdze7QCPrKIe+aJuKvZD9EwD5p/CwqxkBybXdazEn0 +qpbJs2EEnB7ObTaLvsVtvAcwHr/E+1YTS3S39btRT3i4XZeeQiNPLocxgP8oIWsk +KsmzHrxh +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHzCCA4egAwIBAgICAicwDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATIx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTEwOTEzMTQyODU3WhcNMTcw +ODMwMDAwMDAwWjCBhzEKMAgGA1UEBRMBMzEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKwRlCLLdLQCMCo0 +4qQYXXY0lbfaGtWOq8FdwAXi5ztrpkeLFrnXoVSAfh7ddOkHJtfx/yXWs/mJ8j96 +wO8CMNVnqPc5HPX+G3ZPXegSJiSMoSsq5U+04IjDCyxVbTyHY/mDDwAen5QKlySP +GEQyFaq/iaUk4fu+eE903HgHn2aQ5c3z2Bw22UaGaedzWDJKMccY0O2aaWvhEyg/ +fnzPmGBzpN0eX0GnMPGsk64iZ7iGlcEz/QEKifC+YhMzM7GO29ZGdW+ROaVLmwU4 +curgEAfxOYQ/4xXt8nOng0r5eCw9tEoYBxcvqO4vUb8lT06ZaxvKRbIzfKhnRu7g +eGj8M+7Y07dEHXniWrDJJ3LzoT2LjE+3ehqSoskIS1EmYYlI+cTyhUxuQXvfQo0n +8eyc55uR6fFp1XfuZ61RvXenvwTEqklRQNmlcWnZSytIYbZCiHzAcKo0emIu0XuP +k1roRwdpWsB1WjnhLhT96k+WK067kbsRWKF65OcpsnxM7aEsHwIDAQABo4GSMIGP +MCkGA1UdDgQiBCA8rrtYmIJay0L9trNJkcyJauvUHsuMPek9QjC3yRoydzARBgNV +HSAECjAIMAYGBFUdIAAwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C +AQAwKwYDVR0jBCQwIoAgPsPbnzfI2CHNnF0UUhwdhb6UgjtvbKBoeQRfK3phMyow +DQYJKoZIhvcNAQELBQADggGBAJ8KVcP/b/PMD367GOvr1mQ6RacQ6kN61Enk9Le3 +iUsE8OEcv2xt0OCoLbCZ6CuZhz/ExqipQC5bpODW/HuK173Mrqjvl9/XnhZePYjk +ze9Lk/rsyEurlEBONW6cUVi0jBo+zB4JMavU/bQ324JdXS3cl3aGkboG41cnjh9g +l7bEz7Rhddsycsp86qJv+V2jlOPUNNl6DaXSWe1lYiClyCn0hHSsDX/ZphfpP97d +cz9/wyymBQTakweRh1ZATIc4hBGksPkl4ZbEDQ03kA7zm7Fl/t6jS3A3V2BMHG8D +FFP5AwtBDgCcnZlj9mZtWShu+j6H9AYEfzYshQTHuXM6XFzlIZ5h8uq8w3lCLrRX +gSF2H3XPbZdpRjuXPKNHn1+oept3krdkzbACU0WRaA8fgnHrbHoLr4RlWDkSAn6A +d3tjd5bHrtaVJwMqiHcxFpTZovCaygrqJqbl8BIjZXS40HZ7VmzL2JsaqQf75NpD +gyxTSNhubcF1cVxdUYYN2yxCiA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIPKMMpnooSqcZuzoyq3mq9MA0GCSqGSIb3DQEBCwUAMGcx +CzAJBgNVBAYTAkVTMSgwJgYDVQQKDB9ESVJFQ0NJT04gR0VORVJBTCBERSBMQSBQ +T0xJQ0lBMRIwEAYDVQQLDAlQQVNBUE9SVEUxGjAYBgNVBAMMEUFDIFJBSVogUEFT +QVBPUlRFMB4XDTA2MDcyMDExMTQyOFoXDTIxMTAyMDEzMTUzMVowZzELMAkGA1UE +BhMCRVMxKDAmBgNVBAoMH0RJUkVDQ0lPTiBHRU5FUkFMIERFIExBIFBPTElDSUEx +EjAQBgNVBAsMCVBBU0FQT1JURTEaMBgGA1UEAwwRQUMgUkFJWiBQQVNBUE9SVEUw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAAWxsOC3Egy7GH6U5sMgf +7eQLgxrKGUiVHaNpW6T6HC1r43tnUQqwpXHYEpL+Avj3CLQE0+75hGEA3vWGMalr +z+RzUezydAS5HTVPppuBxY9B7odmWK9O8hTT4K7rEbbWYqy+lj+V9a/Q3IUKI+DV +ZEvX24EaaFlVKKniaJBi7JLGqklpPddJJz8ZGnh/M4ECcPMc4JI7KywpSh81t7p9 +sDzHgYXjFF3Ji4zn2Ly2P15aaCg/bebN3j/fo1r1OYkLIjWlgn2TDYsDqyWmWY4u +ssa5F2J8dcR065lYl+UWv32iqWEtk32in4XRv7Rj73ZkSEgRDZDlzByx4sIvPmUq +ezLx2s3RXc+cBTsTcudtZEyPl2gLWNgLIQqzo56R3q6LJ5gjM4OgwpYFW4zZSbkb +HQqtKqx3/L7KQRNWg4cygMOhNvk6MOkSEcvq/UHnKjLs+LgOImne/Dhn/+nYzZzj +rfkRwWli5hzcSVLqmpVvpIKTNcS+0Wyu+YQiDfcd2SXNPDn8qocqqFaTDGkKcK4j +LWWC1G/NN28e4tqm/h7iCu1klGQQ7pnr9O/MNUSguXOLY/lNhDWGRU6xhujbuDam +sKMf1NPoiQpdD2ePhNpUkg6gx9yLZYqUeTSeBN5FIODfbrzaqov5UyAhbrFtzFiN +D9dn+NH8x/dvrsVWTOnoLwIDAQABo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEAMA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUncxFdritbypKhygDL/NAWPR0yT4wDQYJ +KoZIhvcNAQELBQADggIBAExvaGpHfl/GOZQAayh2jxIlVzSWO0qnlPyqIKEZWlFT +TOZrSFcc2YJQNDvtqIzE0yKay/YD2H1nsuGGEl9cxAAK9R3j3PHURmSL0Y7K6CLC +J4NFA208Cii2PNHCC3ss/wbcUqbQtcOrSuBUIhUEK6PtEwOd6fft6vqs3JEiDim/ +BceVEgO0CFxwJDgBYtP/ELm2FqL2ZEC9qcwDd/Ahbbz41gayMAbSar8KD0JOtzkm +jWJOdSWAoJl91BrqKo90MOt65iLWmcRRAjna0RDqI35AbK1CBU0cbM4B+XQxi5Wx +dBr4jjwXNSQpPAk/q+f7SFBNMdgGTpxQJlmrPkqRVCgzwcviGZy6ggH/5u3H23Qt +mFYLoxClKSYOcU8UDWvbN99RlYRoOeDRrNo79bXpHxqn3pHwGVMOYWLWLtdRRozZ +H9UuVdQ9vOK6jeL6lmMVpPiIaWzd8y30WVDLGWOtoARWLnfDcQG2EKOxYRy0fDte +8PMxWnj6w6pxj+YqGPusezaYOB1zL2TmpmFZ2af/hvkuwAtMSnhO+r/PMjNUPJZH +ewv++07JDx9cusamE/kMocsywTID8eqduf3GOIE7SdskYpVWhaNjaWdZ8YFWn6Sd +m1beXKLAaIrOIMtqMdLfp5bH6DxpVxWQC6QRk+1ckGXL4UmqUVQRFcTJxtuBejTu +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFnzCCBAegAwIBAgICAy0wDQYJKoZIhvcNAQELBQAwgYcxCjAIBgNVBAUTATMx +EDAOBgNVBAMMB0NTQ0EgTkwxNzA1BgNVBAsMLk1pbmlzdHJ5IG9mIHRoZSBJbnRl +cmlvciBhbmQgS2luZ2RvbSBSZWxhdGlvbnMxITAfBgNVBAoMGFN0YXRlIG9mIHRo +ZSBOZXRoZXJsYW5kczELMAkGA1UEBhMCTkwwHhcNMTQwMjIxMTU1MzM5WhcNMTkw +OTMwMDAwMDAwWjCBhzEKMAgGA1UEBRMBNDEQMA4GA1UEAwwHQ1NDQSBOTDE3MDUG +A1UECwwuTWluaXN0cnkgb2YgdGhlIEludGVyaW9yIGFuZCBLaW5nZG9tIFJlbGF0 +aW9uczEhMB8GA1UECgwYU3RhdGUgb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQG +EwJOTDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOgOIoah4mu0doKD +E9QFb8XEnhrA3uzzy4llbGUKdICRfJcnl9W48gu+x0Crhul3MCVc7DUqyeuDUBUT +mFZvdY814ybX5GGKYmMsRFirJBDkEWY/YEwlXZN2Np2Qnqwka3n56d/EcDToEPzq +Q9eqp9oEQb6jeRGbOHd1+AekVryh/xGbht4OrjP94J7abpBDOUDspfGmzUdNZhk8 +ZgZ/WUstFlTOR+BEaU72pbUb54lJBDUhBy4UkBC2+VukNKwG6Cgi28lckDuA8WTb +mRsCia12/8f4oVMXRG6uo6BjDqOTHUT2hBrNu9+ukSruIe8MdfUfVqB8l7oqFIZc +o+JvY9wvn3XZV+ykQmrG9gv+1hgxTY9pXQpDN3L9/YHkkGrCC9X9IqdobGsp1Cg4 +VU6tTf4U2I2+jNWit3vbY320vFLOgADSo+pPgMtW7DMRLku4nET00ocZOX4IpNxj +hYKrNwiST0OhbAofW2stnTBkIcp1L8J1wB61DA2KZ4wGE2Ey1sQlvqxUQWz4ogE/ +XtMvZtb2v5tgl1rqu7qB75d1UDrM7KsrHbRPUxI3Zet1H8sviEnzCyIA5AwtS3vg +NMQ03jodJYZMFS7ysKcIL9XpoM5yhtzC/f9DDTVHo84dwvz9tLUOj4suxBeRIN1b +BcOyYtHe8gwDKZblggXrB1V+fY9NAgMBAAGjgZIwgY8wKQYDVR0OBCIEIEe7uBvw +w5hAlqz38+3vklfep3U0/lbeDYDMfJOAX0JBMBEGA1UdIAQKMAgwBgYEVR0gADAO +BgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADArBgNVHSMEJDAigCA8 +rrtYmIJay0L9trNJkcyJauvUHsuMPek9QjC3yRoydzANBgkqhkiG9w0BAQsFAAOC +AYEADx+lKf1SqkmVtHGI9JZwHo5ZAWy1/wOVgs8nHItJNBCB7bJ3zWcPflw2hxJD +8P/UAu9AlSEEYrBXYNFz4Xe65em+lk3Xfbgt3rtuJESDgALkB2pdrhW7O5jB4VhV +JsDdi/Wuhs4N3UXJdiLHByn4nN/moe+YoZs1vFo3d+T6S18rxvdUyq3bbzj9AtI/ +Bl3Wv6MGklFBtnnhFFL9/wxPTYy87BIXPLTR9LatFV1e0/4nT3CubORciGkrVDkP +DcElE7IpfeHQtRD8jdtS42LAFotKYox8URHEtIFs05kob0wDp0Bp1b0BkN/KBGBE +w6Trz9ZhFhT9xmzi7SMSC26nrteC/TMHy46LSbdc3V5rwmQeAOvivGZtri3SwvRZ +cK658jzPmko+Urk0HCz/x5Mvo5qKzOMEtGd+B/y4Ifz6TxFwVNLW++adZse/V6RP +FTkE9glBTv0SkMh17Fg7HP667iWyaNoBlSI8P892+OQWQYU6jdIH5t+4YmneDZOt +bBLk +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIERDS8RTANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJT +RzEhMB8GA1UEChMYTWluaXN0cnkgb2YgSG9tZSBBZmZhaXJzMR4wHAYDVQQLExVT +aW5nYXBvcmUgUGFzc3BvcnQgQ0EwHhcNMDYwNDA2MDYyOTMxWhcNMjEwNDA2MDY1 +OTMxWjBQMQswCQYDVQQGEwJTRzEhMB8GA1UEChMYTWluaXN0cnkgb2YgSG9tZSBB +ZmZhaXJzMR4wHAYDVQQLExVTaW5nYXBvcmUgUGFzc3BvcnQgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCm9kSGfbxZ6atkhOldtwBWpMJcz99C2ma5 +J7PLPAfrTy8tzZJoJoXOYqGcdtmyN432HRasaAiNdobaernrrh7mjBdQzWD7ZVUU +5ER+NpqhB5mzsFWnSgZAQD/c4ID3Jc1k1d4mkBokQZre0LzCYhlmDSMRbL/Rh8AG +ka4XhzpyoM6Ckhaj9MgzF1SWPb2bALb/FIzUlLsiihpASd52G8mTsvdpHSCtX+12 +7mUib/alqcCqgJpjkiy397Pq8h32s7QixiU+hD4zhIstmdL+tz/vVymhy0Qr2tZ6 +WT2YKNU4xcAIeg+RlLGvYE7JkO/INT8e6bYqsZ6l9+cYsvQBzOUy2tKdfpanfY0P +F4+Rz5bNAlwTnhRU4LtKEWmCe3hkluS8MmvaUQKy1aNdn5x4gljYkoZJ/2+m61If +PRSpS9c+wTxdOPYLgGGAg+dn/cC0btNNcdzCqbkOHXuBqAorh9XV/lbfW09LEpdw +Tq9kIhatbY4jMqOnq7dCoUZre0HF5l1uxRkFRceSakFQvQcjmlK+AL5TdYPOhXyp +LYEy6yhaSGQ0SPf7Vppgg7ePzqRWDIlcbaxFkccDZf4B1knV/N0dxz1syNsjyIUy +PoJtr/95inm+ZrCuvV2hFxEIZZtgYUtVccj71bAku2wYzTwGVP7eIQj6idMH88ww +jzskQvVKSwIDAQABo4GUMIGRMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG +AQH/AgEAMCsGA1UdEAQkMCKADzIwMDYwNDA2MDYyOTMxWoEPMjAxMTEwMjQxMTU5 +MzFaMB8GA1UdIwQYMBaAFNdXV3z5dWPTsRo+Uc5MV1cK7c+MMB0GA1UdDgQWBBTX +V1d8+XVj07EaPlHOTFdXCu3PjDANBgkqhkiG9w0BAQsFAAOCAgEASWDn6ASyJ503 +sIZXmB64YlgrH45tq1lPUj+9zHI05p2MgcWjchLl/z6oTB8U2RH4RrLLZJkVxlaN +KTYu4XK+FZD001dqGUhfvACBjBHK3LfcPejvf6cYdpwt/ujCADqUSZVd8JSp5sfO +jqLkmfnaXvzdj6bHLwYAysY9qpoqWKEA0dJcc2qhWuZ8tvZovp0MnL+JNSl1JT1P +HrHJKeU84uNY7DRf+3QApvP+fsqoNv2aJNzx1pWiQdclGQ9TXlJ4uNQRe3U51DeZ +BpKVrxJ5dxCAXDNw0ANSgvFNeMp4oX5v8XoKgx2y2HbzcPwBqMuShOYyzPAgl+uy +KI9z6GPqJI/13mXcItBNWoaMe1NboLqneZTnif06IQoSimLxRLas5I3KNobfqvSC +4eEeUFjaDOlI4st1JI0XTzL3/jzhw5KryXf5tnbrytF0LE3rYQw7Zwp53PinSbMF +tBDiuKhskXcYhOTZDtFYguRpNoOyogj93XyimMojCg/yCqa3rB2CwxAik+lCvk3T +pDw3keMm3mWVCQculgEzEsKsCCr6zgJ0OWpntD1yH4BDF6GXPX87h6TqccMO10MQ +qDn4Mes4PnV6BMVYoPKoPavMw9wv9D4Rv5XBzrnaabpGnWgjX7/CLf2osopsWFcf +aeSSIpx3yEI79FNUFS+/h9Wz3TZpR74= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +dBZvywbuWJK71w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGpzCCBI+gAwIBAgIBBTANBgkqhkiG9w0BAQsFADCB1jELMAkGA1UEBhMCVUEx +DTALBgNVBAcMBEt5aXYxITAfBgNVBAkMGDM4LTQ0LCBEZWh0aWFyaXZza2Egc3Ry +LjEOMAwGA1UEEQwFMDQxMTkxRDBCBgNVBAoMO1NFICJQb2x5Z3JhcGggY29tYmlu +ZSAiVUtSQUlOQSIgZm9yIHNlY3VyaXRpZXNgIHByb2R1Y3Rpb24iMSQwIgYDVQQD +DBtQb2x5Z3JhcGggY29tYmluZSAiVUtSQUlOQSIxGTAXBgNVBAUTEFVBLTE2Mjg2 +NDQxLTAwMDEwHhcNMTQxMjMwMTQxOTUzWhcNMTkxMjI5MTQxOTUzWjCB1jELMAkG +A1UEBhMCVUExDTALBgNVBAcMBEt5aXYxITAfBgNVBAkMGDM4LTQ0LCBEZWh0aWFy +aXZza2Egc3RyLjEOMAwGA1UEEQwFMDQxMTkxRDBCBgNVBAoMO1NFICJQb2x5Z3Jh +cGggY29tYmluZSAiVUtSQUlOQSIgZm9yIHNlY3VyaXRpZXNgIHByb2R1Y3Rpb24i +MSQwIgYDVQQDDBtQb2x5Z3JhcGggY29tYmluZSAiVUtSQUlOQSIxGTAXBgNVBAUT +EFVBLTE2Mjg2NDQxLTAwMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQC0Yg6AalLDpURf2524vTYZRM8Ja/nh++RNo795WMaljLBedZNhhonImTIjw9Le +Cjr0qmF2VCz9QHcAIO/zZlw6dJN9TJxJEKZi1O3PPKv3W8CsVugdUGq8LTThDFnY +gIwWpwmPstWKvF6Gd+qOOWxA28OJVwZkskQmwCnKHZZXTR8Z4GWMv/3UFZc7ADiq +zXvrS0P9oDoMnsQ/XBqVxU9HsmlWiP/yyBMlxUPrr5UaT5StSERt2SkOlarWMjxh +ZlQo421mh1a9D85IqjwshkSt0i8pAkXdkTAfaymp8d0Pv1FErZlilZr/8iPGECD5 +tJA+Hrw1lRx66AOWjlKI4FoXqA1lgSWPA4r5sYOhHvBEeEPfg7tk7i0Gsd4axAxU +eJoCoxzOEgeF8VtzFfDGlrp5l2Yz/l+hP05Ghir7iyw5j+K24ooK0xj0Qu9Cszd/ +HqU6K8+NJaXTKVa1K6G/rS7zoN1hZCrMs9vXsEMQaiAiAuHyKQ11+fy2tl/S32Mb +MpyiTc9VQ84mIG/ghhr93lkMKIsmaXt85CLA9p3bZoRGE7vuQUS9fjvmir1S+qYN +iI6xUQOyP/Kn1zrdegRcJ+Xsbc9AYQoUvoFhngW3SqQfF81kdEa5cM0ibJG8gnrK +UWudB+coHaDWIgHQov69mW22gP/9jREjrq4OvsFzto32iwIDAQABo34wfDApBgNV +HQ4EIgQg9QUg7CTuC6KdeKrMR5szaGZEr2wjw6ZnvHcwzjLLPaEwKwYDVR0jBCQw +IoAg9QUg7CTuC6KdeKrMR5szaGZEr2wjw6ZnvHcwzjLLPaEwDgYDVR0PAQH/BAQD +AgEGMBIGA1UdEwEB/wQIMAYBAQECAQAwDQYJKoZIhvcNAQELBQADggIBAJD707ww +xjpjGFvwxluQNrkTLx9rAZybqD9K9OegHBkErsiLYw8+Nys9NFfwQnIOTcp8QagG +1FivA+tgIcvkv6LnwO1hNG3awQAX1DIXrBI3Ly2JWGkE+WfzbP56whI3C395yYY6 +91QjaLZ1ouKf6Kgb+O5NR99ojChmLRDBRbtO1eDkWNVWGZ3BQDGjkP4QZh2PxaiO +Bt4mxHTALiu2W9Y1gZa90hNseSmReYpVfVOzgwd7yJXFZzv/j6OHuiBmqyr/yPCx +yDsnTnX72c41S5mmNpYqDIBEwFIBwU7Z7EgMjvXtLPQQpWqjWWWCgVN4rH0h4bTG +fwjsf4BSbRZon8U2w6+8efU9m8DcpPiqg20Udo91vDdQ8V4bNiFGSexAIIrmx/yR +YKeD3toRZfF/WoMfOxIPFWz0l3fMj+aOriALdirbPo9C+DnPq8LaskNFWIE+Xtde +vOa/YsVzFP8K+4ZlyB+ftlmAFdWGtnyFXWetBRyaC4O5/KqYISM0RWOUe8VxdKhM +O5+vwqHT0EBMdXIaIDOKzoRboxG2QZTumXwioOGnIazqtA2SqbXeV2gm1i77TZTy +cJYzKBL3MTifMYZISe85dDJCs2ifhAGqa5RerOpACTsBo0KRmtWLY55oqH2mkusN +FFW6sQoWo1vGEx+P96vgRF9vsAywYd8kv22b +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG+zCCBOOgAwIBAgICB9QwDQYJKoZIhvcNAQENBQAwgYkxKzApBgNVBAoTIk9S +RFJFIFNPVVZFUkFJTiBNSUxJVEFJUkUgREUgTUFMVEUxMjAwBgNVBAMTKUNTQ0Eg +LSBPUkRSRSBTT1VWRVJBSU4gTUlMSVRBSVJFIERFIE1BTFRFMRkwFwYDVQQLExBH +UkFORCBDSEFOQ0VMSUVSMQswCQYDVQQGEwJYTzAeFw0yMTA5MDkwOTQyMzhaFw0z +NDA5MDkwMDAwMDBaMIGJMSswKQYDVQQKEyJPUkRSRSBTT1VWRVJBSU4gTUlMSVRB +SVJFIERFIE1BTFRFMTIwMAYDVQQDEylDU0NBIC0gT1JEUkUgU09VVkVSQUlOIE1J +TElUQUlSRSBERSBNQUxURTEZMBcGA1UECxMQR1JBTkQgQ0hBTkNFTElFUjELMAkG +A1UEBhMCWE8wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCXNtQuwyK5 +AWtnIGhJidqSgzR4QJvqI4FXcNAl+AWYpw2+I4en/fg2GLijIYWNnUqVjytaocUz +PgXm97knb7tWQJM02LO9JHE6CGL4N7uG5/tqoHq+IKBe705uiyQSlHO7Y0QHxC1W +pC0RjWJuj8uJ1hCP31PfJpNvt1KgMJkNbvq3IFP+skivRKkRv/qwCuE4CYAL4b5x +sqpmDwZC3uDHbM0svaTStAXQRYfMfx/uNDY6hvHF8AmfK8r93NGWt8aHVyv6Ojyf +9ariGZzskpQkzZOWXNCR4PpO4WRDLa4DmtapftlsWeuOgxDC4HrVC0PLoOY5vvi+ +LNt8leXxtcVlYujCmmCIpZyx3DqFRgXGK3EXbtjlcpjAWxxJaCZtLl4wb5jsEj/3 +FNM5y/wGk8pJKk9mJyPi5n294Wb9Yiljk0fHReLDYVN12I7fnf4z+VzP/s1WCxcU +jI2dEKtwyVRkXRxgtQntl1stST/wvZxqIRUHzVrp7RUAWAEBUxNNPY1UCEZ1WDLH +BSLIXxqM99B/gJeCGJIfJlKFu9+niipdYrwo/nxrsqN2lixgkc4fZwjqc1QBkWjy +shpPNIXs6SqrU5b9RiJuRHqw/WDpMDDqT2OKuuIo7opgZiQhFGNSzy/Sg2J2NlxA +GLcWh+0VEf07bjV9GsZj5iv8f9OiK2jS/QIDAQABo4IBaTCCAWUwDgYDVR0PAQH/ +BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUcpNXgBPn+bF7 +xz6y0KE0tEDclTIwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3d3dy5vcmRlcm9m +bWFsdGEuaW50L2NybDBPBgNVHRIESDBGgRVpbmZvQG9yZGVyb2ZtYWx0YS5pbnSk +EDAOMQwwCgYDVQQHEwNYT02GG2h0dHA6Ly93d3cub3JkZXJvZm1hbHRhLmludDBP +BgNVHREESDBGgRVpbmZvQG9yZGVyb2ZtYWx0YS5pbnSkEDAOMQwwCgYDVQQHEwNY +T02GG2h0dHA6Ly93d3cub3JkZXJvZm1hbHRhLmludDArBgNVHRAEJDAigA8yMDIx +MDkwOTA5NDIzOFqBDzIwMjQwOTA5MDAwMDAwWjAdBgNVHQ4EFgQUcpNXgBPn+bF7 +xz6y0KE0tEDclTIwDQYJKoZIhvcNAQENBQADggIBAHax+A9P1gtpUITQRHdLOllU +WJajJ077hXWheE4wXfN7j7nv4v9WyITdHB01P3gXrCU3F3eDPJNme9vA/c4COVvi +B3emMYlY5KX9uX0zm+yNAYlffcmXmcw44kt1NSD08+SzvLcs/m2IkSCXoXqRjJ2n +lhrAGQayuxy/ZKZ8UTnMEjNAWC5Ek8q6b9I3tRIaukwu2LED+ts/pJ3iRbO+nPBn +lYBLwVJrPtIyTo11uKPq6X02EIIi1uUo/xrRCG3bOl3iAkBuaKNiaiZaKdla4D9t +yY+SRSoN7w8H4LC9p0pF+vXQRVZcFhSWPTzyT5+JxUKqs/PC610l3Hi9b6UEl1oh +/Q5S61Zg52cz1/BIrJoCSOH9sX+u7ps2V+4W9jIr292uf7mqlzOwLgiFAPJfCWJ8 +HFKfrUDxs+ZILPUawJTOSQ0QezN96W57CFCuegUR7UhGvCVCuQJRTKnN8XamUbHa +fxB6oNnUYZgmBS3TqvbQeJ3cnvdIHlBq9/jotxguR10yGfTyhYgE0l+SFrqQ05u8 +s73qyJGej7GXolC/8m3COj9XtKzEHbspQQvBdqsK2LBWfcP/7r4fFhOx0Z7x8kBY +89zMQzEOY0TyYc2tt6tKSRvSESuxgKTHaydwtFL4qQY5Mt9GxpLD995qOcPBxXTT ++xLuVWQmqUY0i+cZZ8Wa +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIICwTCCAmagAwIBAgICJygwCwYHKoZIzj0EAQUAMFcxCzAJBgNVBAYTAkxWMSQw +IgYDVQQKDBtOYXRpb25hbCBTZWN1cml0eSBBdXRob3JpdHkxFDASBgNVBAMMC0NT +Q0EgTGF0dmlhMQwwCgYDVQQFEwMwMDEwHhcNMDcxMTE3MDcwMDAwWhcNMjAwMTE3 +MDcwMDAwWjBXMQswCQYDVQQGEwJMVjEkMCIGA1UECgwbTmF0aW9uYWwgU2VjdXJp +dHkgQXV0aG9yaXR5MRQwEgYDVQQDDAtDU0NBIExhdHZpYTEMMAoGA1UEBRMDMDAx +MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQ +nYONcm479iPVJiAoIBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs +6UpLRPMwtdkEICbcXGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Ku +uct+V8ssS0gv/IG3r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndF +Ey3tjlRcHVTHLwRplwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFan +AgEBA0IABG4V/VJk2YqtLVcVWZwmXj//BjAglZhIcvJk7h322AfhahzeFohUf3i3 +ViTocT7+XXdPUUoJcOc+Om6Vw8byw7+jRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQAw +HQYDVR0OBBYEFI+0Vh2Bzou02mQlkjbxwZ76oYeNMA4GA1UdDwEB/wQEAwIBBjAL +BgcqhkjOPQQBBQADSAAwRQIhAJCHjZSASEFIGcOIpSRE+6rhO4dpSib5PnJmt5Nu +TNUxAiBuOc48xIG5HiPC4BO9ZnMKVx22PgCS1uWQoaibihkO1Q== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC7jCCApSgAwIBAgIBAjAKBggqhkjOPQQDAjA6MQswCQYDVQQGEwJBRTEVMBMG +A1UECgwMTU9JIE9VPUVQQVNTMRQwEgYDVQQDDAtVQUUgQ1NDQSAwMTAeFw0xMTA3 +MDMxMzMxMjdaFw0yMDA5MDExMzMxMjdaMDoxCzAJBgNVBAYTAkFFMRUwEwYDVQQK +DAxNT0kgT1U9RVBBU1MxFDASBgNVBAMMC1VBRSBDU0NBIDAxMIIBMzCB7AYHKoZI +zj0CATCB4AIBATAsBgcqhkjOPQEBAiEAqftX26Huqbw+ZgqQnYONcm479iPVJiAo +IBNIHR9uU3cwRAQgfVoJdfwsMFfu9nUwQXr/5/uAVcEm3Fxs6UpLRPMwtdkEICbc +XGzpSktE8zC12bvXfL+VhBYpXPfhzmvM3Bj/jAe2BEEEi9Kuuct+V8ssS0gv/IG3 +r7neJ+HjvSPCOkRTvZrOMmJUfvg1w9rE/Zf4RhoUYR3JwndFEy3tjlRcHVTHLwRp +lwIhAKn7V9uh7qm8PmYKkJ2DjXGMOXqjtWGm95AeDoKXSFanAgEBA0IABDVS8QvX +fjUi24FQ378LV4QHn0eW/G3AjVuyP+DxAZGBJ3dTAzmszHvoAroA2/rDAbZyOqwA +WPD+NclxXKMbTLOjga4wgaswGAYDVR0gBBEwDzANBgsrBgEEAYKmDwECATAfBgNV +HSMEGDAWgBR5a8JBcPGsX+4B32yyXiE2hS5xxDAdBgNVHQ4EFgQUeWvCQXDxrF/u +Ad9ssl4hNoUuccQwDgYDVR0PAQH/BAQDAgEGMCsGA1UdEAQkMCKADzIwMTEwNzAz +MTczMTI3WoEPMjAxNTA3MDMxNzMxMjdaMBIGA1UdEwEB/wQIMAYBAf8CAQAwCgYI +KoZIzj0EAwIDSAAwRQIgJGigF4XO1FzUEuItK8zIod3o/rQylpPu7/lvM7Dwf+EC +IQCI2EcrB/sl3oQJrz9YxcaaRB/hVlaivxBoHHGJ6lJS6g== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC+zCCAqKgAwIBAgIBBTAKBggqhkjOPQQDAjBBMQswCQYDVQQGEwJBRTEMMAoG +A1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0EgMDEw +HhcNMTEwNzIwMDcxOTM4WhcNMjAwOTE4MDcxOTM4WjBBMQswCQYDVQQGEwJBRTEM +MAoGA1UECgwDTU9JMQ4wDAYDVQQLDAVFUEFTUzEUMBIGA1UEAwwLVUFFIENTQ0Eg +MDEwggEzMIHsBgcqhkjOPQIBMIHgAgEBMCwGByqGSM49AQECIQCp+1fboe6pvD5m +CpCdg41ybjv2I9UmICggE0gdH25TdzBEBCB9Wgl1/CwwV+72dTBBev/n+4BVwSbc +XGzpSktE8zC12QQgJtxcbOlKS0TzMLXZu9d8v5WEFilc9+HOa8zcGP+MB7YEQQSL +0q65y35XyyxLSC/8gbevud4n4eO9I8I6RFO9ms4yYlR++DXD2sT9l/hGGhRhHcnC +d0UTLe2OVFwdVMcvBGmXAiEAqftX26Huqbw+ZgqQnYONcYw5eqO1Yab3kB4OgpdI +VqcCAQEDQgAEqA29DKTz22sEDYkF//U6p+0Q4XcqlxN3M9glKPeU2veHQvr3NvBf +J86Nzh3E1gzGcI9AaYcFSvg0aKDFiz73rqOBrjCBqzAYBgNVHSAEETAPMA0GCysG +AQQBgqYPAQIBMB8GA1UdIwQYMBaAFP9wD5mcbLcPc54m8LxIFUHHbyVYMB0GA1Ud +DgQWBBT/cA+ZnGy3D3OeJvC8SBVBx28lWDAOBgNVHQ8BAf8EBAMCAQYwKwYDVR0Q +BCQwIoAPMjAxMTA3MjAxMTE5MzhagQ8yMDE1MDcyMDExMTkzOFowEgYDVR0TAQH/ +BAgwBgEB/wIBADAKBggqhkjOPQQDAgNHADBEAiBiiYSZuMWYoqNw2OL9a9On3EuC +34RUivT0aA92dAo0uAIgUQPkBWdM/Dz+0PAijw3BKv09+7Azb4QvI6P8aqeHZQ8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDrTCCApWgAwIBAgIKGSdxithnyKB56jANBgkqhkiG9w0BAQsFADByMQswCQYD +VQQGEwJJTjEkMCIGA1UEChMbTmF0aW9uYWwgSW5mb3JtYXRpY3MgQ2VudHJlMQ8w +DQYDVQQLEwZTdWItQ0ExLDAqBgNVBAMTI05JQyBzdWItQ0EgZm9yIGVQYXNzcG9y +dC1JbmRpYSAyMDExMB4XDTExMDgwODExMDk1MVoXDTIxMDgwNzExMDk1MVowcjEL +MAkGA1UEBhMCSU4xJDAiBgNVBAoTG05hdGlvbmFsIEluZm9ybWF0aWNzIENlbnRy +ZTEPMA0GA1UECxMGU3ViLUNBMSwwKgYDVQQDEyNOSUMgc3ViLUNBIGZvciBlUGFz +c3BvcnQtSW5kaWEgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANJndEn2XbwGN+VUFPvmoNuasd1rbjp9iTqlax6/ovvlbkxv04WigX/fAbbPRpd7 +T6qHABdOUhtdVgonMv1Z5tTR6JwCbC8ccfWCSe0ZsEEnvb6ontGf8onnScFVqY3m +awutbeU74JFby+IP2aEceOfIEyTIVQ1Cc4TDi/sJIkykuvjk+6JJxidw7iGgRHpZ +9bJbGxTxHwA9OX8/4FOdn6grOvB9iILEV+isVle0Wae+t/svvEpNhMx2scB5FhhJ +NC2iT98axdLWGJBzhA9fhD4Fnwz4bLOzAQcTppyV2XQdawskh251oVES7DkVfHoP +RJPcpZ6XOetuYehafe9utBkCAwEAAaNFMEMwDgYDVR0PAQH/BAQDAgEGMBIGA1Ud +EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFGtavbR5qFhjKY/4fNJckoORmWeZMA0G +CSqGSIb3DQEBCwUAA4IBAQB+8HO+jJFOVpm7ZYyn1u874Cc2THInbZGyjeYX+SPO +581Ovx/TFXv0uSvnKssOaAjQUMpCgOir1zW55Lu5NpuT7NDovlvPCE4aVAtIeFnG +SkPXQ07AucABUHs3mBdq/45bD/0vdb9xyiODFNYtJr77GWb4pAd/9oBXm7Kbra33 +G8wOAr16TTzrJQVtIoNsDgyndV+gfQ2rd2OvZWGTnsO6yjS0IyDbThbH2aAjnF5m +Y1Qp0R6tKqPZZxTbzzb965vjZCziniTUPYfB+EPXlA/3UgcrONurqrW7q++uZTpz +IZ1yRM5XybhXjinagl9zFbKrjeRH/B0Z/JTQzsK0dq82 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIBHTANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHRTEQ +MA4GA1UEBxMHVGJpbGlzaTEnMCUGA1UEChMeTWluaXN0cnkgb2YgSnVzdGljZSBv +ZiBHZW9yZ2lhMR4wHAYDVQQLExVDaXZpbCBSZWdpc3RyeSBBZ2VuY3kxETAPBgNV +BAMTCEdFTyBDU0NBMB4XDTEwMDQxNDAwMDAwMFoXDTIzMDcxMzIzNTk1OVowezEL +MAkGA1UEBhMCR0UxEDAOBgNVBAcTB1RiaWxpc2kxJzAlBgNVBAoTHk1pbmlzdHJ5 +IG9mIEp1c3RpY2Ugb2YgR2VvcmdpYTEeMBwGA1UECxMVQ2l2aWwgUmVnaXN0cnkg +QWdlbmN5MREwDwYDVQQDEwhHRU8gQ1NDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAI/l7MPcZemqiAghuGCly77aJgnxT6z+itcl/faIxl4cXgA+Gaf6 +8rwz9fAdfV06x7fj/bamfqJTKdQGho6rpi7Dq8+3raRw7Wgid1PHa2Lsc0nJghMB +A7iy0DoNg0vS0nCWgkZ48VkxFczCrrKNBNeeaslf4WJwTClz6iigkiP2o3RZCpp8 +lKCVAp/oVU456dTuJxutYsUGqkslcCHlrcj9N6Twe9NEOLh9np9XMVwyAhPWcSaD +t/zjJXPxw1EXd0K6TWP1YkZuevviGnhPT+sDl17dB5U+ydOloIEDiYTh0YOsSPae +LPpoS56vc81adxAb1QYCJATsj6S0CenvdecCAwEAAaNFMEMwHQYDVR0OBBYEFJA0 +ItwjmMV3zq6oV0LSlO46oj0iMA4GA1UdDwEB/wQEAwIABjASBgNVHRMBAf8ECDAG +AQH/AgEAMA0GCSqGSIb3DQEBBQUAA4IBAQAufV7CsFIojKGoVnITTupDF3FXHVrA +JaTvvg2u3sA7LuAvLlVksfOv2/OowwhYcuVJ3H1Gx27fxSqlJvmKHisRrvJVBfnI +f26Oz3GUNNbLOvClPTfbDbJgGY5nik867gSBHCAxbmhveBT93Je+Y33RO8t1CGOj +0wV5QyRNMfvqiSeO3Ue4yrTFwSutUcsMzEqmFjE/HV6vARX55WaFvpLar3E3BLCG +5G1Kgoilruqh93dSIOr3/jAQ1QxYR9iPo+M17dLLCYH6eRlXi7WlUsmkSYu2ghR4 +sikGx+YdyJhF1xO6SufczJTp1CMOXnjDqu2/5auA5fmi6v6uk42BqJx0 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEpzCCAw+gAwIBAgIQRS4dUv1TgLdDX+qzX/PcbTANBgkqhkiG9w0BAQUFADBk +MQswCQYDVQQGEwJUSDEbMBkGA1UECxMSQ291bnRyeSBTaWduaW5nIENBMRswGQYD +VQQKExJDb3VudHJ5IFNpZ25pbmcgQ0ExGzAZBgNVBAMTEkNvdW50cnkgU2lnbmlu +ZyBDQTAeFw0xMTA1MTIwMTI2NTNaFw0xOTA4MTIwMTM0NDlaMGQxCzAJBgNVBAYT +AlRIMRswGQYDVQQLExJDb3VudHJ5IFNpZ25pbmcgQ0ExGzAZBgNVBAoTEkNvdW50 +cnkgU2lnbmluZyBDQTEbMBkGA1UEAxMSQ291bnRyeSBTaWduaW5nIENBMIIBoDAN +BgkqhkiG9w0BAQEFAAOCAY0AMIIBiAKCAYEAseZKWDmIk5eqh7Kq7bZl0x/kM1dB +04wc9QZ5XQrbHW/KnWoceTDD6QKz4PTKpcZX0Q3b8CBHWikDub6H7sZlD9VhBodp +7I88y1Tvrz0riK+0/w2eVc3veaZwtDAN79B3e8tcKV57G8u3VUK0lpd1fGXr91OY +tyaq1K8kmZIBDh3nI359FynwRvcOaVjb6bE6DVGmy6fNYbEhVdUbVzpurO1kPGF0 +QmkRv5NBFVlEYG0bOxTpZ+vsoAxOVmTqQwLNo/AK+5pCcH2O2UwoSk7XYvB6vJRn +51dj7xQ2SlvEbU4micJ5cQ5vFxYN3fZfakkn6wpcucvRKlMKqFOVbjFG/6wne9SC +hCNygKpREJqy8qmRwsntEVShA62c6+8dam05dFLhNNpecwTpPP+5y5HeXEZWzsxN +/n6YkIXbTh37C52ESuZ3/pnz6WMVJ3vCxmEIjYowVkc4otP7Imb6dD0EsN8eih1g +F6JH11FO5+yfKKWqAijCOyg8vQKBfnWxKYQPAgEDo1cwVTAOBgNVHQ8BAf8EBAMC +AQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUXKIrx786BH2XMN4+82Ov +ivtbxkwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggGBAG0IfbV1 +okgAQHwXiSgQLBD/Np00YSsFzd1+rA3UlDhllxZFukPhaISLiz4VHf0QpxZ4j7cq +9KeuLBRzqGELLdZJPlv8UUjtvwG4l1qDCjPv9WIh1JXfqqPdESIolpoPURYonNHP +7zRT3MFhMgU458FfUUpC8oORIe1ojT3GM7QhCrNHwxPZ4DMwf2FJaS5pET7cu2Dh +Y8/nBdmZcxdFT6TOfhyDkQB+ZuySADsx3s2mlfMWWstoDTDh7pbSMpxe9KYAOW/I +7hEO3ajOWNjLMRoYwRmMzOjOgCZ3RdeOqHhsnULgPGEYvOn71FsEmWX8IS/QG+Zu +a5ZYt7KYv86d92nMZLlxABHuAd/z8WuQaNFfcb4YAa/dR1LVQuKo4z9kcnX2fpIP +6uDT2pjhMHBlCHFweXABxyLvHZdWZFVgN5eKF32YGYofZQmx3AP6JZwvsxOAZq5v +aIewh0XLu8wJL+4Ar/a6BzTy0FqY/NUVr7ZxeD7AsfGDNBH8cSgxHDk3KQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEvzCCAyegAwIBAgIQNoSHinM/c4dJ3ZSo1/ZlvDANBgkqhkiG9w0BAQUFADB5 +MQswCQYDVQQGEwJUSDEnMCUGA1UECxMeRGVwYXJ0bWVudCBvZiBDb25zdWxhciBB +ZmZhaXJzMSQwIgYDVQQKExtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGzAZ +BgNVBAMTEkNvdW50cnkgU2lnbmluZyBDQTAeFw0wODA1MTYwMzA0NTdaFw0xNjA3 +MTYwMzEzMjRaMHkxCzAJBgNVBAYTAlRIMScwJQYDVQQLEx5EZXBhcnRtZW50IG9m +IENvbnN1bGFyIEFmZmFpcnMxJDAiBgNVBAoTG01pbmlzdHJ5IG9mIEZvcmVpZ24g +QWZmYWlyczEbMBkGA1UEAxMSQ291bnRyeSBTaWduaW5nIENBMIIBoDANBgkqhkiG +9w0BAQEFAAOCAY0AMIIBiAKCAYEA1Rv2CV3eIfjW5fxGYK8bmraJgWK94JNmf25g +/1nO9q/OvAMnBjkwpan/pdDU0NNtTWWj7qUPG4shdf8pBPTlor2lOP1cr1Lbwt7t +/28oiMhaUZamCj3PfXRhpeT5L5ms47f6Z2/JOwkQOs70JBY7VkbvLpptwcFdUXhy +QyBQjy6tX/OYxEeInj7+rvikwSv6GsjA7cPEWDJNnR6/cYqI3sIvi/wh0m/tnaGH +OdPUHqqBIBxpxijW2lEQF0kvuT3UJHbJQ8KpxyEykCWgFO6v5aSpd3Qm9+HCZU79 +uOSSkdTJwNRFVtiSmyeLO8XIYByMK6iKXwaaTK+o+yu9FJ2rwxvv6hvABcGf3isd +C7IzYpEwaXK1ZrrARLyGBqYq/6zt9ubTvjqhLIi3l+GqSaw2F47VEyZhhwkO8eoY +s7n/mdgJRmSE2L9oCoydtBBqIRFbFzrA/AbS7IibYmw3ogYXKgCwFUVFrDC1GV96 +EdseyrZbm3H4Ror+0EfwxJNd0o2NAgEDo0UwQzAdBgNVHQ4EFgQUHibmWPcVfw91 +FZ1Ud4o4UCNRKnAwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAw +DQYJKoZIhvcNAQEFBQADggGBANJovnOrPHjfwqMpk6EPowXkKYmhg4pphrGkEzlS +4UToW9YIEojS3eOTCwg5eYFnd9rDwIsGkeNxbqsExamuTta+mEW8b33NxhgD31tU +jlzbkOzdgyD2spQ65gLbiLBRBEIIO631O99YE96MpZw+2BPB6eeNwFjntkt5ggEf +wKGOO95nnd1PQmEPyDwdli99AqQIGWMB+oYLczLYhaVoJdTzUc2u4vHPsqYlZZca +D4oOrXAcaDjY2RSVCQai79CXRphpKWKKfwUbk25+YDuRajruX1kl2gDDNO9yhRiM +3KA9J4DD8UzZ2Cnx7YpfqUBkX6e9wfsbRBYPu66oSRoQUv7xCDAbT0fLVWq/8aUC +kzZ6BQrtxcAggJuxkjHNIep5b5aPxD4Y7BcHRQK72WdK1cMXuDO8+fX+IX3L2qKz +pny4TmcAgodBmaEGoYR6ECgfUp0HfMAIDDxex75cXwYRDKpjG9IajTY5Axf9/oey +JD/p/iFsTwKRpkVsBgRbMlupVA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIE0TCCAzmgAwIBAgIQOSDc/8dEnoNBmYap0BATVDANBgkqhkiG9w0BAQUFADB5 +MQswCQYDVQQGEwJUSDEnMCUGA1UECxMeRGVwYXJ0bWVudCBvZiBDb25zdWxhciBB +ZmZhaXJzMSQwIgYDVQQKExtNaW5pc3RyeSBvZiBGb3JlaWduIEFmZmFpcnMxGzAZ +BgNVBAMTEkNvdW50cnkgU2lnbmluZyBDQTAeFw0wNTA1MjUwMjIwMzVaFw0xMzA3 +MjUwMjI5MzBaMHkxCzAJBgNVBAYTAlRIMScwJQYDVQQLEx5EZXBhcnRtZW50IG9m +IENvbnN1bGFyIEFmZmFpcnMxJDAiBgNVBAoTG01pbmlzdHJ5IG9mIEZvcmVpZ24g +QWZmYWlyczEbMBkGA1UEAxMSQ291bnRyeSBTaWduaW5nIENBMIIBoDANBgkqhkiG +9w0BAQEFAAOCAY0AMIIBiAKCAYEA0NPBiFWTFL6Vhdktvcgez5KXLI7BvH95Cfiu +XqWLQm/nQXcHqrSoxuGWTmnKMXXa4v44lXIKKMTt+8NcttWJtPmthd0tzTbJt4zv +O1GuzXwYj0sOcAmX8rbeMTsEJNTH1lYdPnX642ON3nG/nJNJ7SXqxBUKYI4yoNdl +jBh8Lgya+6jggTPC8Opje6u/aFv/IjWFo/ngwS9bCN5bij86VirsTQ6ELpeq8bGl +q5AlgErz6baaUUFT2INCJuywFW/j0exP0J7yyH9pna7tVtCwkFijaazGjmkntICD +tcUif0EXc82gccBFF9heqTabNm8pG6as44PVT87a1tN0JxXy8yDA7MNTw9ADV9wc +R3+kvf5eVl1cRSjQyryhaNjngmCOy3+LChNoxvy91YQqnCxxgMrO5qBI9zDnwmct +XFe4t8FYCUytuM1H+n8j3YXNZ1Q/FFkJ5zxZv5hye218W5KWEd4BWO9uoyiQK5qS +z8qTn3ZEoP8XYJkNb55AA0E7iZYHAgEDo1cwVTAOBgNVHQ8BAf8EBAMCAQYwEgYD +VR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUtR3evc70yufe3IYd6QluBrQkqo8w +EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggGBAGKFO5G4QyfXe33X +0Nqtm3AV0ZVN3lOJb1s/eKFx+SVxwM3v0EXaUXAPeVjGi3HaCsY3cIKAmmZuIx77 +LHh36MVVhFqwZu0mT8bVpma7V+Fd18Z159U0k0NnYe8nJv5TB/y118wHSgPyH3oo +ykK1WDhw59QKSa7A3o/v1cdD6S00BIt5QphixXOyfqrivc0+qfIjLBWrctdRhTlh +qjeVfqLM8geGNX8SfA48SmTqiymzOX3BUYqYJ1et5lp3p31GBnAk8jWUEZY87trV +8bLPFUyFro3WpaVOGaEUA4ebxhtjZf63jtY07wDMCMt3QsvoyKAFtvtmGOZ/UBBf +cWaKPP6nu0uaqubqldO7I2/vpTWVIgEOks4KQhphssJSHA1xWb79LdyX9CcS0o8l +3AjnYJWkjhfd1QsZ1eMmyAH5rrRi6e1DJliYaD59y9+CA97DbQYNmGiZv/2hk3eQ +OSccIUixVIIpDMnYvyhOKhQd2MD4TdINtC+wwHKqCSxXaTMBtw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFQzCCAyugAwIBAgIIH4D4aMvjPEIwDQYJKoZIhvcNAQEFBQAwLzESMBAGA1UE +AwwJQ1NDQTAxMDAyMQwwCgYDVQQKDANERkExCzAJBgNVBAYTAlBIMB4XDTA5MDgx +MDAzMDQwOFoXDTE3MTExMDAzMDQwOFowLzESMBAGA1UEAwwJQ1NDQTAxMDAyMQww +CgYDVQQKDANERkExCzAJBgNVBAYTAlBIMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAwADoPZx/k6COF5EbD5Zp5gZelMfkocGEMSl6TaXu789XqgHTdt4j +qpvjlQ+kITn+yQWzd22V+24fzefbvn/iwwbu2soH/9m9jG93rj5oyEgIwNyf6hg2 +QH+EsY51Mr+S/ogZdfnWUUs65q0ngTu/3KD/liHjzfr5LTse98uZp8T1AE8ac0Xh +WA4M9Cpf9QwcdSOEVrMgtvFi4cFRe/Q8NqYX6NFjF8G8G1T8zTSx9wJeVpp2L4XX +47iJJHjuah7dMxFJXlBImlzeD2gsLLcd9E3+5I5BcOeG48Sn3LA0TLUtlAO39uzt +IfDZP+zgNf5dGNJ+sJf9gcXie7W0gDrIQ2C55l1oK1jB0ptubdL55A676CyXk+nQ +WwPj9o3/86YbkKqE9S3lTdNRDTRgiCHIfqFl2E3iuCdDNVlsrB+m5MZvdAqOWGjE +HwpVk7QJ5wiKCsx0ACh5ipLf/T0gJ938x6InJ39zneXD4H4Dq9WstZDjedE4F0bk +SAHrQeGZubbsNyzRKLaw4wK1X3UowP4RZ0j7cRRpjE/Ttwoyh5pwZ/iL86zI+rPd +i9ZPTaSa8hgatgxs+niMhGAAK5tydzn0TS0mIdntKJtyE7+oJCrCXtITEvwgwZcY +ezifqzpN2ZSu6GDH9ZGHr1Rv+O2j89VcNzKoj3KSsG88adAqQ7GyWH0CAwEAAaNj +MGEwHQYDVR0OBBYEFIwAVk5KjdXrLIgHZe1nurYyKk9oMA8GA1UdEwEB/wQFMAMB +Af8wHwYDVR0jBBgwFoAUjABWTkqN1essiAdl7We6tjIqT2gwDgYDVR0PAQH/BAQD +AgEGMA0GCSqGSIb3DQEBBQUAA4ICAQCdM2vcDwzeXkQ3hHPyAIzhpNHG4omH7S84 +BidgAfwGtXAccu+HvPJ1RhfFiS0htQnqwhGIgK/47H6t4oIWM9daUExzlAGk8DBn +UlOr/Q/U5F8HmmCoHN/Y93GUCmoxzVY0ToRPDOjTaMo8iFYYPDHUtGJ8UvRwraLa +7JxsJD8IgITAxKEk/Jz8oH0iEURbjWP6m6FT7sXsG16NODhvnpKgY1wyH+TlA+sw +KA1PiQtzo44zDZy2zuGDVKBCrFZhdVzOxB9UCIek2AonNaeJ6mSnpOMdzu18SnAS +XtBiVk/+yUbyVHXe4Qyg4o+CO2ZKaouFdcaXKX/YpqyREn8P5ap/TQm2Pb2aXzou +46EUUvuTGngrvNlta+pl3GPNe6qwpkD2YeZ2UiQvwc7VGXsLnoNNwgb/d5ksqhvh +hIrWv7aMxAbBNLB7fcdKI5VKxTAaCK/hyd6iz5B7goYp8GM4Dq+m0+wCKO42N1lf +ZEXleHCHvYc7uWiLBbSKOgDvhmk91DFfXllDQFumtI7b3xao0/VHeQ7NpEdM88BD +MhesG08gN2DJ6+5TXA4E4YXyzjHnqPMFJJNOXcNqhc/xw3AvrCfzLH85Wwlmkb4x +sPfM1zRzA0jvO2iAhSAiDwdtKaiU0dN9E/kmVcEHfqX9CvKGSjAhvw5hvMLfbys0 +V4REV+oMLw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFQzCCAyugAwIBAgIIJuJbWGqzyQQwDQYJKoZIhvcNAQEFBQAwLzESMBAGA1UE +AwwJQ1NDQTAxMDAzMQwwCgYDVQQKDANERkExCzAJBgNVBAYTAlBIMB4XDTEyMTEx +MjEyNDk1OVoXDTIxMDIxMjEyNDk1OVowLzESMBAGA1UEAwwJQ1NDQTAxMDAzMQww +CgYDVQQKDANERkExCzAJBgNVBAYTAlBIMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAq39D+mMbJHO28nF0ppVhdnzOFmYvr7ItYP5Y4knkATj6pAQKoX3O +QVXNRvIRjMBXBxRFm1jUfG2ylgC7KngheyDQ7AuVH05qEz86uJodTxbuxFXM1d5Z +HF2j7VfAfBWqYz38DVIVWN7VLd8wBZnWrNeMr4wZIuuK6fhINPYY54Sj8mEkrrsa +egQ06KfUclbb5KTaEt+PXwltixfd4f+iXHifS27A2B7CloA6nn3BkB+q5ksfpHWr +xptNj0k8MhqNQKUJqo8ls7yophPfQSW1V25CyR2PPgkCHO+7a0lkWsZMJKA/j7mN +nlgK+m6nL5WuCKWU1haG6fzg15PxVImLlHlnQcS5DzrCGvtcfAMk3hiaaUzIfjtK +BN7a7A3y1Qxr1fJ+uO2CjHxA7a//lbHfTElKnf+1z9P3fKZZVC+BC3jJWX/9VhHg +mx5r/DDSjuOallEF1+I3Eb70TTC1yFzNdTtVm7uKYF9dJvTceXS8+HHbUEEm5J9M +LVJSzUx4nteGzR/uHc18A9bjZOti5IvToObyw9BXJKs+P6fXCbZcFjjkWSjvyxHC +RqsrsV16PQLbZppZ3kit5f1OQ70nkGGeJDPcSV2MO4dbvXFq+5WVbDtRxsw5DLqG +fIIFzNT2tsINM/VV5HMZ3K599d7x8rD0gH92FK3o0YckAmuCRh4znYECAwEAAaNj +MGEwHQYDVR0OBBYEFHdPp1M+GW3nsxd08qyy7NQ0VCb6MA8GA1UdEwEB/wQFMAMB +Af8wHwYDVR0jBBgwFoAUd0+nUz4ZbeezF3TyrLLs1DRUJvowDgYDVR0PAQH/BAQD +AgEGMA0GCSqGSIb3DQEBBQUAA4ICAQCQj39YrXWx5fMi3RoEfGwpp1RXgpWwf2Nq +PJnhtYLN4KPZgwKAbufV4+xVfgYcawpqZEe9BSOe+4zH1aIJMiLbUuLNJPfMc7Ee +RpikQ/1hLGZ+0/LYD9NPWGX2cGFG7c2/3yLWcFyCkZ5xoPjMZ0AFN1TcCshCgpoP +K4pgq9RFuqUYG6B6EtLVQW0WJqw5kfnhLZX8af3cY48Zb4kyLHeuQvhn7gdzq4dt +Tylm+w486XxVYFzdsaewMo0JruHYNzPjRRqsbpZtdn+Zl3rjPGqWTDJmShqb67oG +evV1rOG6wxJsV3jgquNULeRF45xw2rlvCaRgCbTEDjqMpjYcl4Ev1PwY/ntWT1A1 +ztyCq9azZjo34XlU5yLLIaKTU3PMPJMF9HiAO39xWjFva9+xrc/ip0vfUxrpSg19 +JtT9T+0e0Sq19Qa3s6wswJQFbzLzC18bsAWKgDCMaK2oExVdcL25RiY7COvw3dCA +pfxtJnAQstfKUuNtJb4ayeZWyGnJ5ExSgkzgGWOvNLMPH1zk4+8gQvMEOmS4+1ad +93JTVywfdB9Umd2uoZZ0QXfq7So3377e71nxJEz16SH0wDlYFI0Y6r+xlKBCASMp +/jY3NKrcnYkM3o+gjPALYakqFOpmU8e09l4J+wnpgK+mGwg1THcBL9ZhTeqngajE +vq3nkr/oew== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFSDCCA7CgAwIBAgIJALR7ODlxL1mJMA0GCSqGSIb3DQEBCwUAMIG/MQswCQYD +VQQGEwJORzEMMAoGA1UECBMDRkNUMQ4wDAYDVQQHEwVBYnVqYTEaMBgGA1UEChMR +TVNDIFRydXN0Z2F0ZS5jb20xJjAkBgNVBAsTHUZlZGVyYWwgR292ZXJubWVudCBv +ZiBOaWdlcmlhMSQwIgYDVQQDExtOaWdlcmlhIENvdW50cnkgU2lnbmVyIDA3MDUx +KDAmBgkqhkiG9w0BCQEWGWZmYXR1c2luQGltYWdldGVjaC5jb20ubmcwHhcNMDcw +NTA2MTUxNjU1WhcNMTcwNTMxMTUxNjU1WjCBvzELMAkGA1UEBhMCTkcxDDAKBgNV +BAgTA0ZDVDEOMAwGA1UEBxMFQWJ1amExGjAYBgNVBAoTEU1TQyBUcnVzdGdhdGUu +Y29tMSYwJAYDVQQLEx1GZWRlcmFsIEdvdmVybm1lbnQgb2YgTmlnZXJpYTEkMCIG +A1UEAxMbTmlnZXJpYSBDb3VudHJ5IFNpZ25lciAwNzA1MSgwJgYJKoZIhvcNAQkB +FhlmZmF0dXNpbkBpbWFnZXRlY2guY29tLm5nMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAuZnBjPIxoeSzgmTDvboZxvLBMkZpVYOfLgC5T3/ZGl7RUMOH +N+s55/WJ8QOJZsnIl97RLfR7qx3Y8CPNVcjP8jwpnbB3LM1oXSifhmDcguP6PBML +PxsAKbenpeISCb1AbOq4nn0aWSpzDytoD5fssxfBQ7wZeIltbzRikThSiH5BctG/ +lYqASb6XxH5rDGnsylerdlcelhAi6LQ0+vxqKzmpnCFoXiug/MrVzq9FA8iamOqw +ZQCYBoHlpfc2akKSi7DN7QMCV2Xc85LAxQxgdTGKa7Kp2SeVZ89VXeo/wx0FlJZk +YeqfY9oqZSW2yC8wUshQAXyfxjDlP8tTMayEn6igrkL5E6eJiPdGUwAdLFkkexbC +ByxDTqxOEaYHG99Vp5ieofBOXiJXRTax+CGEeJYGV1dduL8CHdAxhqlgVVIkYlRh +0VMFMdqFeC/gD2nrpt+xMYjlYTcDddUNAk0P5gB2ae8XHcnXKHrTR3FvmniQPiMW +Kb3QLESUyz3Jrn8dAgMBAAGjRTBDMB0GA1UdDgQWBBQEmSLDKhy1ewAHc9/SUryu +MrLa6TASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG +9w0BAQsFAAOCAYEAfevTZcma7EebYMlD5eL7H5Sizl7gp6m38qwKk4X6eu4B3mkd +hhTiWfHZTwI4k2uNFLi5D8ie5l6Vur8bdT7MNca9alsGFvEikZRrgS6RDAFyJp4u +ROJiI/ZvXHZTlo0RMC36w2VWbHS5JmuuRGfq7T7VHQgzwlzXh3icQNnyOVjiY9op +oyVnUC+8SXIPi+0si2vXK0uV1vZNpY3djVyf9kYDRzNOObzQXlezerew0+oGDjWL +fYLCMrcSWZYGromfCBlF5FAyz2yLzf3vTsZb5QRhKArY34Kz6xN/Ys+kv0ZiKmJt +Ogtq0PNocuVfKmF7fsI0b8ISv9yrohCbjJJGuxT8PP0b/u6YOu9dLIKqo9CLP3qa +5rmX6ZJFNUAvt1tHrzQpDsLQ0KS9d4eioboGyqpFhELr2crdOPo3dRDeLyB8vz0X +DUoKWumEVVpUSGpsZuV35SVfH01ho3GVcSUp/bGcgpN+0zWZ+VKTEAQ+8JjE/wYG +lnguQ1jhDKgtovW1 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFZTCCA02gAwIBAgIEQuV6ijANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQGEwJO +WjEiMCAGA1UECgwZR292ZXJubWVudCBvZiBOZXcgWmVhbGFuZDESMBAGA1UECwwJ +UGFzc3BvcnRzMSYwJAYDVQQLDB1JZGVudGl0eSBTZXJ2aWNlcyBQYXNzcG9ydCBD +QTAeFw0xODA0MTYyMjQxMTlaFw0yMTA0MTYyMzExMTlaMHIxCzAJBgNVBAYTAk5a +MSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMScwJQYDVQQLDB5J +ZGVudGl0eSBhbmQgUGFzc3BvcnQgU2VydmljZXMxFjAUBgNVBAMMDVBhc3Nwb3J0 +IENTQ0EwggG1MIIBTQYHKoZIzj0CATCCAUACAQEwPAYHKoZIzj0BAQIxAP////// +///////////////////////////////////+/////wAAAAAAAAAA/////zBkBDD/ +/////////////////////////////////////////v////8AAAAAAAAAAP////wE +MLMxL6fiPufkmI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq +7wRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3QeCCVCo4VQLyXb9VKWw6VF44 +cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOnaMRO18LjACmCxzh1+gZ16Qx18 +kOoOXwIxAP///////////////////////////////8djTYH0Ny3fWBoNskiwp3rs +7BlqzMUpcwIBAQNiAATYOcPrJhRUGUmEZ58G4mmolHmoXCSZjd8yzVKrHc4ofPPq +5cV7zPSoGfiPaxuZd2VsDLYO2NOhDO+Bvmjr4jJv2b7THK0HZaWEq+U7kUd+/ekl +poTLy6m2H8pud6rGbkejdTBzMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/ +BAQDAgEGMA0GB2eBCAEBBgEEAgUAMB8GA1UdIwQYMBaAFPnWyWn+l9GE7vLB1+Ug +tmAyvj33MB0GA1UdDgQWBBQhdDY0RkTZm+HYcGKPXauewtcXJzANBgkqhkiG9w0B +AQsFAAOCAgEABxmFSaPopNyRrECmRpYCEOg+Ug+Nx2WfAKsZpMYY/eX7qiXuOm/M +KTG0kiU9mLmhJMtaEJyVOgWl+Cz7crfoblsAJ2ncOVdNHYAWzDZljdlXMpbUqPGA +alKS4VAesSkqP0C1VP2CHKMvKnAUt/9sHjJu6cQ9hMlKCYTb9GKNlTZSGKNJpqhN +ldWb6CbEOanl0rhCYR1ssdZvThEICNP02i6y/WgQA8JMDUFZPySPe5NG0CHZfzmg +aL/xuPB3Xajg5/yI4ZbX0X9bjVuP1Cs2OxwwmE45CJymuWVs5ho30odRARBaCEqU +IOV/vBraFafDuJvE8vcDbaEqOi1lH4ugjGWnLmn3XYvlkTyKn0OJHyguBH6Ya/Tq +aAz3Jf4Rnlo2xA5xd9AmA6Zh6HzGt3ot9i8iPCqZAos22zLQnTurbfXBr04k9neb +eApQ4mXNhcZMDpFTrNBZBRydsrMmMh6qNuZMFYGVAG265fVtWQq3FOPAQUTLoaAD +rSIgTSjPZaBG1MNt8/hvtGz3wQGid4tMhuMh1Z+JvKcQbKHrDsU+c+rutMCuRtAm +iH/SxSJe7FNARxWX6+9IUTSAxBCFHq/DvbsTg4n/6GzBEtIthNYPU9gr08X2rGTN +VGx1mrHmPOUH4oRwk2Hsb2riiXrGdEpihanfV+wQELQpWACU2yPPW6Y= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFgTCCA2mgAwIBAgISESAfRHwtAqDNYhzCD7wFxpaeMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAlFBMQwwCgYDVQQKEwNHb3YxEzARBgNVBAMTCkNTQ0EtUUFU +QVIwHhcNMDgwMjA3MDAwMDAwWhcNMTYwNDA2MjMwMDAwWjAwMQswCQYDVQQGEwJR +QTEMMAoGA1UEChMDR292MRMwEQYDVQQDEwpDU0NBLVFBVEFSMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAwEJE4FBX1pdtX2sgDUYR3y9v6zjxb9kocQnO +yiOI4tVE5cvKM2AdlX5Qqt+VNjD2DVAVgtqqJs7CgbF90Q0dBlcopNOsZx/cYn/Y +8jMFWLYLrkQGP3qqX5U5IQNeh1SOP24TuvGZUiuo6k8sJvMmKP7mmS/pUa1364P6 +fDG9DRXK5tLvpCcprOieBZ35tb9t2Wz3kTNGqk8hwBax2NpBHRaSYkD5XH5IJxxk +nQt0RBvLPxVBuyoZDkkzUhlnV8OWn+REvb9PtI3dG64y4NDrc2ZRcFbp/3bvysy+ +kbM0CEZyu6JrMSYxpMMPNzKU4t25KPSE1sIJ/lqkSrwyNnYFyomPvchrrwEGYLtn +CMTtCwiMee4bkJZVdUALzePzS3Oj5DvQ64eW5+RjYQwiPPzyzz5qnLbiPhERu+Pr +je/yEHzRKZcJR7Z3tExw7nuq7tHJTMUscm09G9J6/LWnBavtFIiBRerNJSpXlMiY +SWvkWp/wgyKqcAVnHnDXPnNKBxJr+VvLeccxuJdmwdIWFSsS0mpZxZoKSGbf7cTk +uDsTa4T1PBZez0iSzAhuzQvhJbybH4zhnhilKtarR1GqmuwLBSs5QPgQVPLhiVlx +0oW5XthSUGyuc3N25VLH18Hd3JrlF3GwyTZao6mQv3rd5VIKqN6bhfGzJCOuddIi +3S9UZr8CAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE +AwIBBjArBgNVHRAEJDAigA8yMDA4MDIwNzAwMDAwMFqBDzIwMTEwMjA3MDAwMDAw +WjAdBgNVHQ4EFgQUkT/ymPDxXrZYjtd+vk9vId0dde8wHwYDVR0jBBgwFoAUkT/y +mPDxXrZYjtd+vk9vId0dde8wDQYJKoZIhvcNAQELBQADggIBABLkBIrYpQ3uR/So +IG8KObK5HA12bzT18RYDi2701AvWjhL2ViiqGlYPCjYFfwRIVltIOuYx17eUgq4u +JdYhGnyUC6Qzf571oPa6nLca5aru2IcJO6PRZL3aPpcGSTVzAaal1p9lMMpkyFJ/ +hJ0GcITMNPvTEPwGET8gOnC9Ne3Kx0fzR3XdkHDeX+YHoGt9+nywC/aA7sm928i4 +NN6o6lWFVCbjBc6JbOpgxtrtmxoaaapl9fy0ZxsLj5lORtaMIogRAryplHvvg+BW +UnPr/5ULZn+4GFNxA+fR3MULNBS2qa5wDGMP4pryrYRcPydL8IDHcra1IGrX9sn5 +KOdeJkzjWXh/XP/llRHgGFDPMPWZR/bnWU1Qsn9rEdll4400i8jv9jSsUB1jtDOR +kg1XKE2d5gJuIdimqKPOcnpgayk+kZzwjmLmxCv/XFeyiUcnIYmXSdx2oDBRv3+y +MSpw/IXDJURGj2sKoa4+WBfquq/D1H0ulw97Yo6hgY/h9aCHpS3IUQ2TUvYxuQbq +wSNv1dYK1XyYrEGhU9+CCTwfFcEgmI1v45bxA9UZFQQXZK+nJZShLzVfjkyEFS0b +xfjydj/NgIltYDPQ9Pcx564RFpDwg72oepRwee3wBhRA0xit4aEQymPEo2hxA4Iw +MR8L1II3WUELx9zzvXQHE3LI2YWb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjjCCA8KgAwIBAgIETyfGUjBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQC +AQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASAwgaAxCzAJBgNV +BAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTELMAkG +A1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdpYW4g +S2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENvdW50 +cnkgU2lnbmVyMB4XDTE0MTAxNDAzMzAzMloXDTIyMDEzMTAzMTE0MVowgaAxCzAJ +BgNVBAYTAk1ZMSMwIQYDVQQKDBpKYWJhdGFuIEltaWdyZXNlbiBNYWxheXNpYTEL +MAkGA1UECAwCV1AxEjAQBgNVBAcMCVB1dHJhamF5YTEpMCcGA1UECwwgQmFoYWdp +YW4gS2VzZWxhbWF0YW4gZGFuIFBhc3BvcnQxIDAeBgNVBAMMF01hbGF5c2lhIENv +dW50cnkgU2lnbmVyMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyjTj +0smBAi13CocOD5rY7HjvaUT7YFGHdnpInezRas0h0wy/5OLr0/Dt3ik9RAmdmdn9 +9gFtla5xbX5uIzJ6aGTFE9C0s3ajfkiJu5YI+K9y3MJbelmCgyCHHM6LsIAQkgvp +/CNn4dOQxcsLlOGU0zWNWkJQFUKzQN+AZ1xCnQbMzrUw+pWNPV5O+VGomzhobRP0 +n5nQT7YhZgEH+UFT1nQz+1FZcydyQU+XbBt6sVu/V6Ty1TLlE5GdHJbZPT7iyIHY +MgqqmWbbmt4FQpSmSjB5aPz9uLC/EhrkDQygrnPQ0fQ5ld3FfmYn5iFTystw4SKg +6JYJOYl9ntml0NmTwsjfRQWHm65GJAZnySVcGlwBtkuqmqHlmdLwabNm+zkh+y+B +M9sn0hbnt7RjRAf7P0ujCQ0zaJ3e3jKePpZlggGqxiYO6IMda4qKfq8tFRL0uMO7 +xHUwP4N0XdS8xfpzW+PjumvuFCWlLD4FwEIdbV29s9N7l6+zdoxlErD65TaFAgMB +AAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1Ud +IwQYMBaAFLY081KeLtXtd3N5qFvmSl2t4PWcMB0GA1UdDgQWBBSwUH4L9jMGYpP3 +Sbk5LEssSjjS/jBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJ +KoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggGBAJ8+j6qpGKgCvj1RhkhU +Vlg0j/8SQmmQabKlV84guVGd4dqwV2mnQ/AiD/BaZglTrmaFL1uSogS8UpKtvHMz +g1KXkdv9BTEGuzV4yx6NNB4gpdrFuCi+l7n2zO53RdsXL1ya8Z+voZ3V38j8FpMI ++oRxd1JSrg2KqReWrEgaHATuaC4juOfCWDHY6m5Rz4qfdVIPLcEMle12LxHcRpmb +J5bfu1vH3YiAmkFkO5uZ15RvPCdnT67kxIgZvBkoKn+htGkCL11faNltd48p2VZy +Ljad1+Tn5CADKFKy6Jriu2MGaWwIe0LjSvg3KjrqDb76rGsg4xvek32742rhjM7W +qINmKTR8FXXPjWfGZedwnm67xyUIdYu4BLzkK7AwZql9Q5Pm0KokzQtNAY/euvsM +JoYuL7HFBmpSTqzqTjtkdmASkdAQ76MTiOfCo9InU3zMOHVA4O5oUilBJ1v+7mEJ +LT7xmjIs/E8FWN6T6gsyT9nTj3de+48Lm3hXt3x9i+x6+w== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFlTCCA32gAwIBAgISESDSyMJxONYlKcNy4iTupiEvMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAlFBMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtUUFU +QVIwHhcNMTAxMjIyMDAwMDAwWhcNMTkwMjIyMDAwMDAwWjAwMQswCQYDVQQGEwJR +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLVFBVEFSMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxSjCywvPfgpbe0+XnhyF5grNy7N15smc/wMX +TxlwRjnk7reymtS9STOSkKXkZ8M1OhxeTg4iUJWDFR/arSYbJEdzydAnujGh4av+ +5RIKWZFyXfIv2rAE3u+UPrc8uFYIFovFjBGac10dAwW0C1FAbZ1WYPk/jDW+m4Z+ +/gsJ/XfKq/RRG8aQDrU3cFn88NUUXn9DOwM3DIg8VE+4rTuuN1AIFamo6+PCEyLI ++1xZrE45K1N9DHwaFKxORDf8pCtDwhPiLFxqHY7+saZLvfpghAIXVycOXp9rERn2 +ndTPGEsOtyDlVdUsEzQwa4XLqX4mKNAtE1TTUYMnh1EiDISsM0mi4l1Z4JzlIwMY ++w7cSpkK4JI/ZoO9+Ws9C8DTclHHtdRJOB+uCG2SRktrFAnKcAtzJwYBwxcI3khS +aff+8Re8tB8sAj7M07YG0nJrOLktFIm3cygsvn6xNmaWenOg+DLz+Cb3VDYQiTm7 +G2oJu3bYkRXIuycGeB0DRd63yNtFwMq8REo0bA/OpF7Yv30Q1DqZQ/vxPVrM/l16 +5CVRar/+RGgOamHMWWNDJE/epmxapEcBU+Uc4lfXGmTBoywruZM/yJBd/x2cfBEw +z0UNqIdasS7Q5fbCIsJrzwBzJZCDtY1+EYQDsHpoBL4XeNY2y7W/6t5cYBav/H5+ +RV4DeV8CAwEAAaOBqDCBpTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQE +AwIBBjASBgNVHSAECzAJMAcGBWCEegEBMCsGA1UdEAQkMCKADzIwMTAxMjIyMDAw +MDAwWoEPMjAxMzEyMjIwMDAwMDBaMB0GA1UdDgQWBBRhtvP65ZNfu3yOGxrwX8R2 +qGuxPzAfBgNVHSMEGDAWgBRhtvP65ZNfu3yOGxrwX8R2qGuxPzANBgkqhkiG9w0B +AQsFAAOCAgEAnX5xGLrXETo/ROlaikDxMxUHnMhDyECcjKcKpZKv8amVqbttbIqF +Q7aw276bnp+Hxd5co80LSGlGkZ2YTwyBWdJdZ9CShv8x6mG71A6KcXSWaF3zbIAt +DYLYXjrSHZdztmBL/prrPZY/5B1Hv1vzIvXWEtI3BATwYSBtK6PV5A2YFwgLrLOy +0Y+sp9fuVVaKY89NxI7nB1bF3YgmynsUwj1/HZQwTt0wzoK9eYkQxPRi9E6VK43p +NYNv5fjZlWGzN2D4MVCDqQNuJfvwE/4YjZt0j3VWuFHQaS6c1rKOHsdOoa4Te1ww +P++OaLxN84l7NDlZQgQ70Kl++NaJAYW0zmwYekbRVOdfschLupJ74bpmfVBr1pb/ +wC8aUPfZgcV/T/gup7mTukPagQdZoSxdXUEiEfbqbUlq534awWvAT+35eTfhaRZ1 +PIGI5g2gKRO18O3USZL4NjzIjrzkfUIQQv8o8jxS1fuXasKjspsNwT6sbtd0liwR +wRyOh6bmdPMvxbSuoGCQbUD6XIiXKDnzUucpvG/sF+H379HD/AZyZLONLNmwtJk2 +ukN1NxVDVJsq3uWD9sexR5bXl5nWwJdmcgqZn6OKu+URZOrAjPBuscLEm32ggnjm +WE5xddY9JbtWvImxsiBjECTDYSSk+3j5ML8h5KUcksVSk0wA23tM79s= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFrTCCA5WgAwIBAgIBGjANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJCRTEb +MBkGA1UECgwSS2luZ2RvbSBvZiBCZWxnaXVtMTcwNQYDVQQLDC5GZWRlcmFsIFB1 +YmxpYyBTZXJ2aWNlIEZvcmVpZ24gQWZmYWlycyBCZWxnaXVtMRMwEQYDVQQDDApD +U0NBUEtJX0JFMB4XDTEwMDExMzEwNTk0NloXDTIwMDQxMjEwNTk0NloweDELMAkG +A1UEBhMCQkUxGzAZBgNVBAoMEktpbmdkb20gb2YgQmVsZ2l1bTE3MDUGA1UECwwu +RmVkZXJhbCBQdWJsaWMgU2VydmljZSBGb3JlaWduIEFmZmFpcnMgQmVsZ2l1bTET +MBEGA1UEAwwKQ1NDQVBLSV9CRTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK04A1xvqr/xOomryl2GT/jUrei6e32w9i3BwFE5YxTjzFviPwZR1gLRZkBD +CQXQbT0TJ/kmQNTVheYZs5hpntHdzVYE9hZEi6derR2JQ68hs80Nbj98QM6RnV9n +4oChu9Tg+JuOZwFxNM/ISzcnIiuwDEpx4eGiidTOiS80iLifjIrTd92v728Tsy9d +RGgzCA6uVd9eeXwSm7JdpyFcNhTbGYjmff4Xv+hYVyA8g4W4/7m8csBMmKEipEbQ +znBnoJo4OhB2bbr5zdbuOfjZg0nXi/6l55H87TJ/zDsFpwy20GNglkXff4B/iXom +iAT//dQ/sCFc71+qJ9qgd+yzlJBQpcboPFsDvR+/2GV2j6NEifHe0ugRhBonxPBE +mDFSUur5VYwmxXKFy+QI++vxTl603AiOhKbBIIDlqPTyaW6981t794+KI+4/pRGg +Dih3CJ0fkUOg8vZwV6SJhwXq2VSKzy4yU8Vg4SUhHDG2u4YhAwFBtE3NBK5j4ygT +G8eA9gtGBnrJqm7Z3KWM1HlC8Xx5qhIhGYq5/jPrLI6CIV+BEqLZm2l5+yN1KHw2 +4mjmut+e+Obt+Fi+UpHmQc2FrSbwM9/v1WN0wyGXrvsHpokZYNLNQfy98qb2y5eZ +JhkfnDvgQJeNyaNCbgVLzxzVnGuxcmLNWRdrh2+cKYYyjzQHAgMBAAGjQjBAMB0G +A1UdDgQWBBQGR8NhYH6L2czNjegdp9BCu0iAxTAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAgEAPAV+PIRBKPSyffjrOARx +NxW1LdSB1CV2KhU5qgeH8sGOXCuTLYIuiPwCTpMDdCZ1bcLx1Ny0GSe2wbVIr8Ma +nV54fth2UnJbe0VFcE3mPSEVrR0nTFBP5YIHmF+txrlcF5jfWQXHE7zbHSoVodnN +NMNpeVTADEfGI1vqv4TAprvPi5HzK6wXMMdnxpTcAKErg0Bgyx7Pv8lo0Uh2rsjt +p7SABtZtpUhxD4igxR4D5FFfMb9d6gDJEa6OFUkDr9ApgVoTcbL7aOOq0fQe3GZx +eoz4H7SIb4KicOuFsbF1BlJ9WwWlZBhrlACt3y/C1mCCr7qaxhbmJeUNALTJVTyx +F/nq5urWC9lbTyrt/841yOfWc1eXLe+d9YrPxfV0xwid1c7DESW9BCljVvbBrC8J +GD+qmbGssjxp0vsYISJClhEUXMkGrKHOcis15XpHeA9hfogCW3bHOW5UxwcJN1AC +VmwRf6jJeBYTcDLNML+Z0Q9RV+hPPL8rFbqH+qc0NDjTaF2GF686+eINloap3ClZ +bVrq60uwoeZw77bkC9fUzvFUdBFZjODajg+5qoxI1ZIDVgE66BvjITFGSyyB7RYL +5qMZvIjoWxr7BFHOLUgk0t6k2MSBNCPa2y23NKhMr7PuNgekCtj1LKI5Uf9ZDLDU +34raNZJuGVyX4Ew1i+ymi/0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFuDCCA6CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQGEwJMVTEk +MCIGA1UECgwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSgwJgYDVQQDDB9H +cmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENTQ0EgMQwwCgYDVQQFEwMxMDAwHhcN +MTIxMDE1MTMzODQxWhcNMjEwMTE1MTMzODQxWjBrMQswCQYDVQQGEwJMVTEkMCIG +A1UECgwbTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMSgwJgYDVQQDDB9HcmFu +ZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENTQ0EgMQwwCgYDVQQFEwMxMDAwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNztvO7QpywUE2ObZ1DrV2HiSmFJ9Z +LsjsrdL0NiY2KWdboPQYntqlT1O2/OUbEPX0/zlUaMgwgCS/92SIO81e7tRjQMDG +Ecg8AcV43zNAWEKbDIOOzUfnVF3EMKGoxPXK8Fi7ckB2q+DDorfd3vOkMORetibE +ffoCDmBDRmWSpmzFi8NVcyMawPGaoPmgGstB52B1B3U+Gt/AAnLD/TRb6HzWhzjp +zKxw56jMPHfYfnaPHGk4T/oRa1JyCXN5JYr2j9zQqr8tTh7/i5Y9HLwja/9bZaJE +3NwUusB1CdamsHEeAw7X98FdwRf6ScTOfr3/QXyBzKQrdlIk8neT74bqO7QFd5tx +eZzJwQRAryIRUs3hFHiAt3FlblGIKy9gndFtJbzN/hy3P711wD6KQwgjTcPI3VjV +78Xt5Px/vbKgtZNWGlGKDwjoGYHM3DVxrJLuX7NLqPAJGkrRGmJKav/SgZyzPw3E +XuyePcgkI14MaZVX949tWUvP0cYyO7X9NMCePA0mK8628+Laktl2VutolXLU7MY8 +9Cc/ivFMPndNQ/RXVhKVp5tTobOXLcNhSvuFK47dDg+2wrOMACzam3QpPd100enw +wBRO+SkgxkXFxfcSGwWa1/f70E0+tvRKXOGBe0sMTZHPCpjcFpQPraHekCcy9ho3 +cBON56r9hapFowIDAQABo2cwZTASBgNVHRMBAf8ECDAGAQH/AgEAMBcGA1UdIAQQ +MA4wDAYKK4ErAgECAQABADAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0jBAwwCoAIT6P1 +x5vQeSIwEQYDVR0OBAoECE+j9ceb0HkiMA0GCSqGSIb3DQEBBQUAA4ICAQBVmXPI +z5NcQ3pi28WFp+vKflbNokc0honwkgZT6824s4H+r/PuGX27BaowhHoJ9/KKfzVs +kwKZh0/20GokyVfvLxWpYOR3o0LTwB9gzYzhyQjC3MqAdFTz6EsabgdAyjAT6PwC +i7QI1E3m7aflXdyAOixinK+0PdhhOgX5wpkMuEFwDI94W3GZVkGF+faQaOYknaJm +1QObsojbCAkfw0H8dKob6WhqHw6OeuX+lIcR/l9FRsR/a6jWDlz0Z4CxXXb/g6k5 +7iTtiO7eS9//bXLWZZjBQL5JWR+TD7OfjMca6/2bdfBT3CKUj9YCHzM8RrEUzN+w +h3ZVH1hcshLKIK0OygGMWOObXbW/aapurutobYCzhPEzu863A/1KuVH9elhvkS7v +Lvpzqb0Ktn168hLI3Do2ztc6MAgUlwa2w7x5uT0qXxRg1i73nOT9RfCepJpsPn8A +dP7WaPR5YzD8/IWzYnFeXRmv/xMS/xeqrKVxyapqzhu+yWmIHK8hbzS/BWwUwZWq +a5VP5lGVjrnnglpOnlRZvHgk71Gdh4mg2T5Y6FlKbFds51M+I/O6El0QYq57xyM6 +xNOS2fl66yEz2zuNXPQJhgJ6iCmTezbf0R+pNwB4Rqjsl6J9ARixy171o3dUG+BZ +0qd70sVJhYKElpDvbgQlRGEhmj/62duiffMw+A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFvzCCA6egAwIBAgIEQ32mlDANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJT +RzEhMB8GA1UEChMYTWluaXN0cnkgb2YgSG9tZSBBZmZhaXJzMSQwIgYDVQQLExtT +aW5nYXBvcmUgVHJpYWwgUGFzc3BvcnQgQ0EwHhcNMDUxMTE4MDkzMjAwWhcNMjAx +MTE4MTAwMjAwWjBWMQswCQYDVQQGEwJTRzEhMB8GA1UEChMYTWluaXN0cnkgb2Yg +SG9tZSBBZmZhaXJzMSQwIgYDVQQLExtTaW5nYXBvcmUgVHJpYWwgUGFzc3BvcnQg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCyib/wSS2DtWSU1eG7 +4CkC0NshXuPHWYYuGZsp94MCZruk8XeUiuXYkgXyctixRhKsk4EufZN7F17AUqOY +7jB6IB/gtV5rgNKalSlaGrf+QW9w7K9Wurn0LBNC8vFq9GTQuKQH8kxeOVYL2kJv +s/i8/ee0OyAVux1su2tieaOym/fV5qCbIs1+VLiXdmYbZYPtWK7NP+23+I/ndavb +ha2u2Xn53I+X3QczW1eqLyRi/fYohvMJ1yGjDVwgMIhEgPr1PbfzPpXZ5xdBpznI +nxnaOmjz7NZWeCZNXfwrQo+zvJ/CCaS+oUBM+KV8a3yIFWv4Isyr0lsQHRNXObTi +HIRD7M8kX242PT+DwAXtSoZTaIVFqDfLFhhPNfVbCenv3I+shpWcB2q4jMUswWfz +ydOxdFiCCL9+ob9Fo0Js+sOazsoMFe13tiDm9FBH2ec513otcQm0KP595wJJ/2XO ++/4ZIGevRsms2PdcAWkuOnCso2NJFSaLRtm5bcgghVjT3YazEbL1VSxalG0UByNn +HcRgDLt18iKxH3q9Y93ZdsfCpk4ew8oUT83M886V+K2hvEDp0X4X8mRrfVYPzlH2 +e93dgyfxrzwPT1j6rs4pGp11MX1WEA+d9p+v3w4qJSrVEGcK2ZkJ4Al5bYUzAO8Y +pUyGwUKYgQ25AiFKrqC53ejTqQIDAQABo4GUMIGRMA4GA1UdDwEB/wQEAwIBBjAS +BgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKADzIwMDUxMTE4MDkzMjAwWoEP +MjAxMTAyMTgwMTAyMDBaMB8GA1UdIwQYMBaAFEt/gJA7zGggTqTZQwY9E0jcUlin +MB0GA1UdDgQWBBRLf4CQO8xoIE6k2UMGPRNI3FJYpzANBgkqhkiG9w0BAQsFAAOC +AgEAdWm05OpN35QLKWbtIMszTbCeXDOoBxgDMmVMIimgePT97MKBqot1nmDB71tL +bOUPvTjyzGsIYDFYeMkbTs0EZ/T6MxiZknbjb08zpqoP5ft7LCugPhUcRljf3Nzg +fUtTvKtfXTI5cOjdEs/Bvj3EGcVMF1BDQsFDIabA9flpSTOAxj1xPP33aCAfcydT +2EesyZQsHlsN+Jg5eB+u6zylUgoYUeeNnf4oOyp9ZnVQ3Oo5Z5LGh/5NftzxumGS +j0LosNz1L/qBs5ExYR5Bhs2VJiButO9upWhiilstEzajyt0QuPJgTW0b21tKRASn +iCUwGC5iC+yEytujMpZdF/tKvASMYLrSXgsTeUAfRdMwrANT5ORcmQ6jwva30Vt6 +MGo6o0I/lS60pszCIfgKzOHv5Vx7BB6/oi6NeM6Lbb/UDlXPpIodM2I7VIJiO4ap +JYhOKrxzQd1e06s5FafwyJQk6OV3p+vDhRqb136YLc+Q3WxNyxKm5mhtJVgykJTi +Sm2GJCzdDFEFqELYC1SGOZxeYkrVFfKBfu167AKPwoLzrpj1jlZUYvO77xNR4Ig2 +tRySrsNd9zsjHUZPC7keBmUcg38/GUSGO9bsYtxlNCKjckuoPL1/xhh673Vn7twg +voobt3WscVQWB6vqNMipSePkULem2Xv/rLwrzrQ6NhJPSB0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF7TCCA9WgAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMCQ0kx +MTAvBgNVBAoMKENPVEUgRCdJVk9JUkUgLSBNSU5JU1RFUkUgREUgTCdJTlRFUklF +VVIxMTAvBgNVBAMMKENTQ0EgMjAwODAwMSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkg +Q09BU1QxEDAOBgNVBAUTBzIwMDgwMDEwHhcNMDgwNzAzMDAwMDAwWhcNMjExMTAy +MjM1OTU5WjCBhTELMAkGA1UEBhMCQ0kxMTAvBgNVBAoMKENPVEUgRCdJVk9JUkUg +LSBNSU5JU1RFUkUgREUgTCdJTlRFUklFVVIxMTAvBgNVBAMMKENTQ0EgMjAwODAw +MSBDT1RFIEQnSVZPSVJFIC0gSVZPUlkgQ09BU1QxEDAOBgNVBAUTBzIwMDgwMDEw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDV/xTArKQYQtNr1KoAfXLT +9ZKg3U0BJ2uk7cvuxes3vltSxkbf/KQNILJYvhUe9IRKjW9u7ztzaxcuKBhbELw9 +xOGEvIy8ERNuG9F8TE1HYb3WDN5Nww8CkXi2lUPcYu+rblhUT7fUd4glqVYJ526G +xeJX5txK9Rh6TnYc6Oh3Qilz3a/GOBb/tY2UvKElJ4kOKg83jxxl7rNrpGhzZ8Ax +fB6mCNw7noKvqWml4xBVExismE4dO6HKjYPUPhWWjTdLDQGAnHUztu8PemwwSnbc +ltNPy4T7vIGDAHyovdluG94wxJV4Pg6b8ZykE+zxOcpQWshDk/ODK9Y20+xxdoCc +MmyHLKqyH/e7LFDERVnyfNH30bxkaXZXxMyG7TsQ3ZnwsO451jRupMqNW/PTZTxs +av2YvaUBk/NDGZ/4g51OpgQp5Nv42zMpyj8khKapUe76b8Ra1hQeV99aMLuuLXgJ +febMoCxc8MZGQ1SYfnDuFzDChIa26aA+OouCUF2VtS0mjoO9/Uyt2n3uldO5ea0+ +QDAbpOmLqqHEgat/mom6uvojXjf70TbMRgASaiAry2a6wPOnF9xC6bEz0Vj9tlqk +meigFb6Cam68j4JOjXeX4/6TZYF/EYUWSvuLCrKQagsfTOOdyMUABfkAKE1OYbvv +nBkP081ciLhTEw8TswvH1wIDAQABo2YwZDAdBgNVHQ4EFgQUMM7ImI+UTXBk0Lur +mO8JXwrIAzIwDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYD +VR0jBBgwFoAUMM7ImI+UTXBk0LurmO8JXwrIAzIwDQYJKoZIhvcNAQELBQADggIB +AMe854ZzzSRt+aNlQkU2qqlZxtQftowVgnJB1jyPXG4Mb8ajHPGptrCzjfEAi4Fc +XN3YWiIcjmhRP8Z/VucXGxNRhZrbGA07J3a5l0DlwHbeyPLu+uTe0R+t5mURdxdS +RneOXESXEics7IQ1nHkn3gaCJUKQ7MmjuvgYnNbaEVI8oJND6UGsu4ZZPlFKS7oD +g8frM2tttJfcM9V64/n70w8+aobuLN5Hmx3sg/d/f6qzUDxxQmhuImFor0W4ZQ/2 +4jfPQRp1DsenWQsmkfnah8n4mQe52YYxdm2NjqrN8iburaMeARjC79wwkeCEtejG +/X19qX2FLLgMVGAa/pIhOEJGXaGjfGhqbYsTr99GqTnc087rTXZtgSK+VWGwsZd7 +gCqqEb0ZcYC0QbGGi2UuWhg44RUl6Rr4A2RP4D+xJsL9TARwmQDSB8nQwvY8ehjv +sEezqAwMfyus01m+FYGQD0YYvlh9v52jxFlrwncgERiUkXr+w3KRE2n+2IwU1Th7 +tSgQIfnA+g3xrM0L+BRP4X4+nD91qbkecqIEBGN99VaD9UOJBftsINPBgKmTF7hS +9xzDYNYJVYeNsj9/Oji9n4SK6iWRM/9r2SITVyRVe0nB0AJImSrU/4Z9H3c1A4ZE +ZRoMFto7TurIM2dRdBwO1pmL50RZlRVSlS6A0iZlkOhR +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +EYVtM3wEgdMDRwQfhResfOHqnApsPo6X9nc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGdzCCBF+gAwIBAgICA+owDQYJKoZIhvcNAQELBQAwbzEmMCQGA1UEAwwdQ1ND +QS1Jc2xhbWljIFJlcHVibGljIG9mIElSQU4xGTAXBgNVBAsMEFBvbGljZSBDQSBD +ZW50ZXIxHTAbBgNVBAoMFE1pbmlzdHJ5IG9mIEludGVyaW9yMQswCQYDVQQGEwJJ +UjAeFw0xODA5MDEwNDE0MTVaFw0xODEwMjIwNTE0MTVaMHwxCzAJBgNVBAYTAklS +MR0wGwYDVQQKDBRNaW5pc3RyeSBvZiBJbnRlcmlvcjEZMBcGA1UECwwQUG9saWNl +IENBIENlbnRlcjELMAkGA1UEBRMCMDIxJjAkBgNVBAMMHUNTQ0EtSXNsYW1pYyBS +ZXB1YmxpYyBvZiBJUkFOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA +52a8LhCTejth20l54hgHwlxKOzr3/UvPVBchs6SdEzN/WxrkSNWMO2N6+iKA9LB+ +mDgYqMhubQQcuUuWjALuh0eFFMtvj6mK8I3T+Cli1Jyk3hzkedXa9wot0Ua/o40/ +GvrfOplNdz121sqvIgJFM3RN9T4aLvTk07w0FpIw5glmzf1/FXk5jhvmTiWOahCN +gvl1jdbzLdpkHc9MMJzq7JUqFZ0H//nQi85RHdAz4ztvyolazLRA3zHhWvjsZYBI +Q7KKnapVE7JoYMnac4TNrDemIFgSwarh4GWCJmzwihjewsJyelJbut0vXngdsQoo +Y6Gt1woiqxi/mjhUgHZagR2LRG0FaF8jjmUyFal7GLtTdNQs5JEXjl0XW3s4VcTI +s0dkCGZmEOjXRFzlaIb2az4Pyftg1dhr4c7MrD7uaWWznuKUAzVN/nlN/qP3+HMw +tIBaeUCTDZkfkSKVd/XWfeTsy8paHWiNBunuij1ITiAWeIaFgiIghI66RJHJMuT0 +q+M/4nwWgHqnzc5mlNiden2fcSzBjbtzNResdbI2/cclsUtcREmaowWvpYDmMl/0 +LfofofiHn3AQOaJmeLm1Ns+PzlfKt+/rTt4WznbBRm159zs92rNmn7Sew0I0XCjD +HQi1nLFk0dtuVFZ44LmGybezz7N2DTL4eB/ltN604jsCAwDdI6OCAQ4wggEKMA4G +A1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRJiS5p +TRyWiqzhtkBD3PTMMYJ2uDA3BgNVHR8EMDAuMCygKqAohiZodHRwczovL3d3dy5p +cmljc2NhLnBvbGljZS5pci9jc2NhX2NybDANBgdngQgBAQYBBAIFADAtBgNVHRIE +JjAkhiJodHRwczovL3d3dy5pcmljc2NhLnBvbGljZS5pci9jc2NhMC0GA1UdEQQm +MCSGImh0dHBzOi8vd3d3LmlyaWNzY2EucG9saWNlLmlyL2NzY2EwHwYDVR0jBBgw +FoAUQDvO3UVWj914g8ak88oBJVhoYdMwDQYJKoZIhvcNAQELBQADggIBAHw7msNT +TPFA08qb2k5tOqFW/YW3afobZNi6kjx7eQS+Q0jJeiNhP9ewJpDitCICzmyzhs1I +BI67S75lgpI9zKKPAiuAc4/l1kUFSdoE014kk4WVEL+K3TtmkmwlNdFP0KlRNNXK +5517YyacQPmE6laiB6vq1yw0O8vkXwKSytxBc51C9D8Twj8LBHrC09awob02zFKv +eGicXK9DmjdfMv95XQYUWAHGNzZDlrpLLknZREwIfWa5Me3seo3ejbLuZzfu1SdR +h5jmfzpg16STe+cN9HfZn97pGe33pU0SecL9Hm/1wQlkXaOtqj8gsRwhekOm26gO +Dv+kzq1JIWk/WHKLKLeEJ69IsneJUPI+y4vgJT1iDq88t3dVp2WEzoRtOI2gq+dG +lZ/+D5kPXCfClXo7hxA64fHWab4C4fgBUQjanOOiuRmVXDn3BUinZgNVy1rD+kbr +pWwVexTf33j7AbtNIWjI3ROYqCcuZomdSS3szq+hrdvrWLmUfHVDQpbThnviq4UR +AyFaNYVljQrPjtZ4lKKhTZoXXUt+gpSG4e2suQV5jyPRrI8UM0+pk/Ve51xxlAbf +95TG9nhD52GciQXSCzjcLWt1OwywBKIUV7mtgJtOw/+cVEJbYQs0fV+jf5KUaBz6 ++vq3YZNkhqGXSm23LZcKoQ/rGs9l+gGgE3Yl +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGljCCBH6gAwIBAgISESKVUCbdGcMUTdKCxIZy/cZ5MA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMjMxMTE0MDAwMDAwWhcNMzIwMTE0MDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAvE04vGSek4UvGrLOSdXRPgsLOAtxd7YJL/Qi +QEHjN/1IDGWSlzQsfCzTgT+ydzMMJ01Q9cFXYrARvrbb274srPOr4HgQWMJYp+26 +BDfFPtsb0rvDhHpMFavunFIMWtSKVJ4DsZRXRv9g0FLFJ92dN+uW37ILt/GtuC+u +K7hApLryaaGW5YpIltWAGmi+5ETuJ+V8GgNHuxr3VxRqvniLnHYym+uXTGB7bMh0 +QnPeU6RlTgfUpb4jsAcflsysiiYiCrbQQIfYwgYr+XQbj9MI6XH+fvIPCzfc83t6 +rmcHJ99Vw7IkXSiD+w7wR7OAaLkv2whv8CrF4+jArBnwG4jsWH4gALloX29LzE7k +1DnthRk0KGWV2Hvj9rfszzvOB71rgat5Am0X2nRHRIwGO8lGTx/MTLCQk0eAfrwo +cwW/pjdt6mvq+0xIvWwh7EKXi6GxLSp05b4yxaSeTZsEbqvv1VpMwdzc9gbejgdF +0CqE0Mbg8Vyi8luszXGkclUrW3qBuwLxr5HW1WNe6QhP2okkWxQ/DktkDs9YY9t6 +FgNgiCg3orgBokYE3HsUMmVNhGQn5/D5v9eEzOMYG7DdtKM2opNaU4XSWKRcxylU +FqLAFbF6r2fTq00i4HAE07j9tuBezOIkx55aYVDtpInlbQQ3MCSMbRiGZi6zCAEk +1R0HaacCAwEAAaOCAagwggGkMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDIzMTExNDAwMDAwMFqBDzIwMjYxMTE0MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjCB1gYDVR0fBIHOMIHLMDGgL6AthitodHRwOi8vd3d3LnBh +c3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKgMKAuhixodHRwczovL3d3 +dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNybDAwoC6gLIYqaHR0cHM6 +Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIuY3JsMDCgLqAshipodHRw +czovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01BUi5jcmwwHQYDVR0OBBYE +FEH+v4lM1EMqMzWfVZASSyuf7muUMB8GA1UdIwQYMBaAFJH7Z0uAgv9NVAyasyNL +fw7IXevjMA0GCSqGSIb3DQEBCwUAA4ICAQACTqp5hBgD0VcRL0kjYpFg4ZuYCJ83 +iaqizwqCQjCSK0BkSNN90fj7B1SMM+yYaaGfoRUUXjFXV3GU//0HN0sbV2BbzeXK +OSis+C0qe3U/Pkq5mQzPVy/R9pmedBv8jDNprA7Kykiv3oHsO8xs6u12xWg89Tsl +rlZ0e+Nmk5WPo3n9Q8N25DQQIRWLWQnKFuZ/DJPkdwOtCzApA/DGH31qJJLCqoCu +nyuAUkqQ4stDvcS3AECWvMUa8gvV+/yqS9EMGUVPJ9pIR0/qYZhUE2yRaF/YOYKk +VWYA9r9/RZkBJ6Kp1Fr40CyhY++KmNxfFfMYDHqHsNS5DD59dzEgirkeV24nY8sD +q7BSkAfNMIxvbw2YBB6B4DtV6KBw3upRzixz7o5zw4Lv0JpPfjp0j/d1/slMnK2J +ssaNwkIbLWfOSWMfSL5OXA5d4NN4Uoey7RDgFQu89jUErqMYyH+lxbpUuSjqqNVl +PVWZDrQcPo8v4n13qZJpgCYWX1DT0UWL78JtlEsIv7WxOOkzYLiU+iNscoY+p2bf +0S1VIeZ4tcVqoJxxXn5TmHPxn5gz0CDoI7D3VaIsdmSe4NTzHfOKoTJBhXe8pcQ0 +iEJpH8RUtXh1WovJQdSYUfRIWjd/CLVkMOHatddws2uDGXuVxZjej3Is9uF7J53r +L5dr7A+ZSUhXBA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGljCCBH6gAwIBAgISESLkKc3O082SYmEsluTAxjiRMA0GCSqGSIb3DQEBCwUA +MDAxCzAJBgNVBAYTAk1BMQwwCgYDVQQKDANHb3YxEzARBgNVBAMMCkNTQ0EtTUFS +T0MwHhcNMjMxMTE0MDAwMDAwWhcNMzIwMTE0MDAwMDAwWjAwMQswCQYDVQQGEwJN +QTEMMAoGA1UECgwDR292MRMwEQYDVQQDDApDU0NBLU1BUk9DMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAvE04vGSek4UvGrLOSdXRPgsLOAtxd7YJL/Qi +QEHjN/1IDGWSlzQsfCzTgT+ydzMMJ01Q9cFXYrARvrbb274srPOr4HgQWMJYp+26 +BDfFPtsb0rvDhHpMFavunFIMWtSKVJ4DsZRXRv9g0FLFJ92dN+uW37ILt/GtuC+u +K7hApLryaaGW5YpIltWAGmi+5ETuJ+V8GgNHuxr3VxRqvniLnHYym+uXTGB7bMh0 +QnPeU6RlTgfUpb4jsAcflsysiiYiCrbQQIfYwgYr+XQbj9MI6XH+fvIPCzfc83t6 +rmcHJ99Vw7IkXSiD+w7wR7OAaLkv2whv8CrF4+jArBnwG4jsWH4gALloX29LzE7k +1DnthRk0KGWV2Hvj9rfszzvOB71rgat5Am0X2nRHRIwGO8lGTx/MTLCQk0eAfrwo +cwW/pjdt6mvq+0xIvWwh7EKXi6GxLSp05b4yxaSeTZsEbqvv1VpMwdzc9gbejgdF +0CqE0Mbg8Vyi8luszXGkclUrW3qBuwLxr5HW1WNe6QhP2okkWxQ/DktkDs9YY9t6 +FgNgiCg3orgBokYE3HsUMmVNhGQn5/D5v9eEzOMYG7DdtKM2opNaU4XSWKRcxylU +FqLAFbF6r2fTq00i4HAE07j9tuBezOIkx55aYVDtpInlbQQ3MCSMbRiGZi6zCAEk +1R0HaacCAwEAAaOCAagwggGkMA4GA1UdDwEB/wQEAwIBBjArBgNVHRAEJDAigA8y +MDIzMTExNDAwMDAwMFqBDzIwMjYxMTE0MDAwMDAwWjASBgNVHRMBAf8ECDAGAQH/ +AgEAMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHEwNNQVIwGwYDVR0SBBQwEqQQMA4x +DDAKBgNVBAcTA01BUjCB1gYDVR0fBIHOMIHLMDGgL6AthitodHRwOi8vd3d3LnBh +c3NlcG9ydC5tYS9DU0NBL0NTQ0EtTUFST0MuY3JsMDKgMKAuhixodHRwczovL3d3 +dy5wYXNzZXBvcnQubWEvQ1NDQS9DU0NBLU1BUk9DLmNybDAwoC6gLIYqaHR0cHM6 +Ly9wa2Rkb3dubG9hZDEuaWNhby5pbnQvQ1JMcy9NQVIuY3JsMDCgLqAshipodHRw +czovL3BrZGRvd25sb2FkMi5pY2FvLmludC9DUkxzL01BUi5jcmwwHQYDVR0OBBYE +FEH+v4lM1EMqMzWfVZASSyuf7muUMB8GA1UdIwQYMBaAFEH+v4lM1EMqMzWfVZAS +Syuf7muUMA0GCSqGSIb3DQEBCwUAA4ICAQAS9ujTS3UCgK1YVQLaRaQoqiv+W4xT +SlNll/85jZUK0ikjbQjCTMO2vuQvXLuYYYho07NyVQx1Oz32qAyIHw1mMDtgkUof +hQlgGxyDA//3NntOwY3N55tbYZkWAywLbIetAlxEGjpLn4oakxwuS1VB0JQoCHY6 +JvKhUoNKJdQhPbj+k/6PBMYS5NckRWQILfYkUsPg00C4IdgksJjg3jG+LjoCIhzM +2hnVQ2K9WKYdHbXTRUxLY9YS4mYsc8HaQeON8wPnAJFwntWGnd9x4n9hx3piYuSP +6GVHtd6dN5uVXf3JhC2aelgwseLkj47ma7uRF0V10zmbDWA3aw6bz3rTGEPrNU77 +rBzpR3dhubm4DOBnfuOuqMo89aY4Xl3XSg7mfajswDpSyEcYJz6RzzWBZ31WE5vX +piU1NeIHE8fknO1r+sUPl44yRKdNQ+ieR0fvazp9WuNqL9RwV/RBcuwEFZCahYEy +UGt3GcIYogui3Zmrpshqjk43UoKiTNKtJIKOlLWRTkM8jlu1lhl4r52CvhbnzBCk +qCRIYNBOXv/hi1DxKwl+sqkI3GS8eO0S0yU5iSV0UNOwN89MPfD0rW8e7mL36XEP +yhql0lTF3ANLyQRQ3u5Bxi0Hc0yj291t0hL6Xf+L2ajv4Vs6R5N2ITIxYqRAnOiK +mAA9xLGXyeQ0LA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGmTCCBIGgAwIBAgIETVqVqTANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJT +RzEhMB8GA1UECgwYTWluaXN0cnkgb2YgSG9tZSBBZmZhaXJzMR8wHQYDVQQLDBZT +aW5nYXBvcmUgUGFzc3BvcnQgQ0EyMB4XDTE2MDEyNjEwNTkwN1oXDTE5MDEyNjEx +MjkwN1owXjELMAkGA1UEBhMCU0cxITAfBgNVBAoMGE1pbmlzdHJ5IG9mIEhvbWUg +QWZmYWlyczEMMAoGA1UECwwDSUNBMR4wHAYDVQQDDBVTaW5nYXBvcmUgUGFzc3Bv +cnQgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDTQwQutPFE6D4x +rnrwGHDsPTizpIYlkheWruPR1p0SMGSo0yX5Y+4B8Sqc0XVHgmn97IksRq1uMp77 +Du5Gj8BUqflEPuh1GVrSt5tFo0EE6iVN2+3eNSWcW7UdWaZdPIUs2XW0UqGcXrk+ +59IJAZl276WH8KR0djq3naZ8cWwJovelrOIIAHC2L1tJ22L70e4CsNuEJ47zOLo6 +s8pLkhWu4BFggsnXd7Ef834aE5PToCZ9svYSUAdj9Ll9LQpwSq2LCycvxQOxD+EI +ofo1a+CFfxSvUvBQry2bc0dgM954igZsQ2/nZ0h8lyYPHD9UOIe7sHRnjFWlmjRB +CUMOKCnqx6XjVsBnnvHkpVRR5ADPGadihgrEW3t4ap8W7wuVKRLU6yrg1SRe43e+ +Q7RJl4Vzj1nvYpyWE77hP60PiJM7CGmO7gsnHLx8al94tzlDPBNvyQppdTCvVqq2 +p/P0HD7lrXo8Z8yYQC9OZ7N/Kz8/HZAHWL8brm0px8SuPNq0J+q153Gzr+WdrlfR +11Y4mtbN4XIfbRebEFJqpDuYYJBS53FPAlJwr90Xj+8StC6645x47oFZnFUgm4fC +bRJpP5wJEjy1bygGxd8w0ww4h12hflNDchjY+gUQHQy5HVkooTe2WpATji9ILSVy +CuNQ6Gt/JgqqHxE3xxwxprUdGUA4BQIDAQABo4IBajCCAWYwDgYDVR0PAQH/BAQD +AgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcM +A1NHUDANBgdngQgBAQYBBAIFADAdBgNVHQ4EFgQUMrIkHnRC3wKWSwe876CZ+Cgg +7JEwgdMGA1UdHwSByzCByDBcoFqgWIYqaHR0cHM6Ly9wa2Rkb3dubG9hZDEuaWNh +by5pbnQvQ1JMcy9TR1AuY3JshipodHRwczovL3BrZGRvd25sb2FkMi5pY2FvLmlu +dC9DUkxzL1NHUC5jcmwwaKBmoGSkYjBgMQswCQYDVQQGEwJTRzEhMB8GA1UECgwY +TWluaXN0cnkgb2YgSG9tZSBBZmZhaXJzMR8wHQYDVQQLDBZTaW5nYXBvcmUgUGFz +c3BvcnQgQ0EyMQ0wCwYDVQQDDARDUkwxMB8GA1UdIwQYMBaAFIr75dnY/GzRLhWo +yx/tIF/8Law1MA0GCSqGSIb3DQEBCwUAA4ICAQAnulEAGGr8nE74JxMAMa72Y6A+ +vznsJZzRrULCGWR3st8owDj/YYj43ppby8wZIAbOqHCGSpX6gTRkPNDmwuzHjRCw +1YFe9GUgFB/CofIkKkDvWX44TFFCdjtNwwnywrtCbWzZk85BCu6aXQhFXgT0KNhH +/tw3PM65+LLEM9VwSvhcM2FvyG8bt3zNrWFatBKJO0QrzVi6Ckd189WOxfIFDXC0 +yQAFMMOtryhviEgsSBO3fDcDjJAhq9hMEGC2XijUQXp+PYB0/ev1KLTSC8uAV/21 +BbTsLHOz6ak3FcWjwFt04Zuxrw3gIsfCSbLmhg1X/kwaLvskziQiq8qwPYs/fRSg +NEjG87CJzIY2OdK44XLgidENYqmsdYxfpgb1Y+Xhn0VP8s/1tT7gL/Q2tr+NH6L7 +iWbdzrhy2KwWabAQMxZkW/k5ALv2F21tfvLdhnusVknXhFq61UTAECttywsSWor2 +R0a30TwCtT0Sd225p6ifbfaypdQSZwdNh7VaBPR99gOkVBTQfkByXRu6XVdx6huL +KpcBBBBsDDQBSeZBcE6/0wG9Ba2FFKuP6akRhvxFEKs7ay20oT5CK8kTsCUtvG/d +8yz4/6fQcMqwwI8siX99rjN56/zFp5qhhbn8vjaZmTFw28XZLeUBVzKU8EbUkA4A +10o7wilIIBuxJGPKFQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGrTCCBJWgAwIBAgICAqEwDQYJKoZIhvcNAQEFBQAwgYQxCzAJBgNVBAYTAkxV +MT4wPAYDVQQKEzVHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIE1pbmlzdHJ5IG9m +IEZvcmVpZ24gQWZmYWlyczE1MDMGA1UEAxMsR3JhbmQtRHVjaHkgb2YgTHV4ZW1i +b3VyZyBDb3VudHJ5IFNpZ25pbmcgQ0EwHhcNMDkwODExMTI1ODU2WhcNMTcxMTEx +MTI1ODU2WjCBhDELMAkGA1UEBhMCTFUxPjA8BgNVBAoTNUdyYW5kLUR1Y2h5IG9m +IEx1eGVtYm91cmcgTWluaXN0cnkgb2YgRm9yZWlnbiBBZmZhaXJzMTUwMwYDVQQD +EyxHcmFuZC1EdWNoeSBvZiBMdXhlbWJvdXJnIENvdW50cnkgU2lnbmluZyBDQTCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALrfBZ6pUC30K2LDkc1xNPBp +rHUyFG/V1G12s1704dcZ7yVW6A8itIuSWRCUxS1VVcRTVCWyRYh4t1QmyNyWb7qt +zCARtFHs2n3N2jkN41cBYOjTCTxe4zyAw9Cf+TcV3a2rwp7BbokivYvbzEV/E0TS +2gTfYZB4G8nuU03Ag444lIIUGmTZfM8aC3/MfhVTr9HiT8ucP7fNC36ed0zVjo3p +00gRBg49rFGVXcjvPVepoVE+GZxxtqazO4EPJEdWTEo2XML36GzQt5BLRLEnuV3X +MqYR9xoGRdRg6Idei4/QEBxqbU9Hb+2bIwfPc71/7w3k83w2tQ9pcytFH4ksDOSH +vNR766u//YpPOj4MZkOd5UHavi/BNk0jFKwrwAGCdRYO9oUn6A/d6OA5RQwW0p1K +IAssT1XIhALQI38MIA3tniyd5C4qUOE2xQNzIc1EtYxt3ud+3JHDJAdaQFbf471l +4cFiIM+0ZufdqH2yi7Dj5POsjv6YCsPvFPswwYRkjR41bSDqLC0A4R1kM3UI2PhY +rDmckPURcMbpf9RulhmUlL0uKFlW0FrJccU3vxDajbl3LWzSasQvytN6ObNhNkoq +EtV4LQg5vTg6Z8Id8deTVQYuqtz/bM4Nu/Sn94q+4as+HqGHRAtqNzlqjd8fafnd +8uLen2woH527JDJ8tj/ZAgMBAAGjggElMIIBITASBgNVHRMBAf8ECDAGAQH/AgEA +ME4GA1UdIARHMEUwQwYHK4ErAQIBATA4MDYGCCsGAQUFBwIBFipodHRwOi8vcmVw +b3NpdG9yeS5HRExlUGFzc3BvcnQubHV4dHJ1c3QubHUwRwYIKwYBBQUHAQEEOzA5 +MDcGCCsGAQUFBzABhitodHRwOi8vY2EuR0RMZVBhc3Nwb3J0Lmx1eHRydXN0Lmx1 +L0NTQ0EuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwuR0RMZVBhc3Nw +b3J0Lmx1eHRydXN0Lmx1L0NTQ0EuY3JsMAsGA1UdDwQEAwIBxjATBgNVHSMEDDAK +gAhC6r77vc/FEDARBgNVHQ4ECgQIQuq++73PxRAwDQYJKoZIhvcNAQEFBQADggIB +AF3nDQK2xSsRetyfBno7JZrOvJk2ud3+jl0R2kwMkD/Zh0tGJHv4AgVcgAMF7Lx9 +EeMhN3oC2V50BQdtwV7B7OTdmCX3T1dSUHrJM1/fS5YRzpZvtP7rwHmu9eBVSXY0 +ZGLOuAQAXrns53d63Yzdg+B2Fo0SmshqG2LsuBZNlSXBjyY4Yx/dzco80OH+SWjw +UZU4PI2G8Vagio/k9eXE1b0tltqM4t2e2v/5tTFC7ZGvxlyLBgJ4RBdn9WJbK0Vd +vGGoS/3zR2l5gQO+LsviIP94SlKOKhw1oKrk4hJx1PwFDgjMjw5e5tOE8ZRxMxoU +SGnE0e8rRaTVi7UdGYDivvcLFsupFdUI9pWY6SoYlBQWnwpxevLn99kJidAf0ZGh +xlijST3AVwfUu0WD9XvXfPZEk97AUw90d35sEU6E+JnSQiCYIt7SqV2h47MezCet +1ON8hiJGcf/iU2C9dzFb15zZkUnhV4Dc1UqKdLw8Y4+lNplPYNquN+/KQplBXXQf +dQse78+QyzQqYhx445S1S12Q2dW2SahN0VKNL2/E/J2dOPEURXTg6iQP+6v5wBNb +kui3b1JQm+BP/vQ4j2RId7ptJsUq/p4c5dWvXXgZsk77Ku7X15ZnTmQiiIcAA01V +FGnQfD75BSia063nz2fWACfjIx16f0DKu5PUpJr7Vr9X +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGujCCBKKgAwIBAgIUfzEHuCgCgDwUh2nk22H3YqDp5E8wDQYJKoZIhvcNAQEF +BQAwdTELMAkGA1UEBhMCS1oxHzAdBgNVBAoTFlJlcHVibGljIG9mIEthemFraHN0 +YW4xGzAZBgNVBAsTEmVEb2N1bWVudHMgYW5kIGVJRDEoMCYGA1UEAxMfQ2VydGlm +aWNhdGUgQXV0aG9yaXR5IE9mZmxpbmUtMTAeFw0yMDAyMjAwMzU0NDNaFw00MDAy +MjAwMzU0NDNaMHUxCzAJBgNVBAYTAktaMR8wHQYDVQQKExZSZXB1YmxpYyBvZiBL +YXpha2hzdGFuMRswGQYDVQQLExJlRG9jdW1lbnRzIGFuZCBlSUQxKDAmBgNVBAMT +H0NlcnRpZmljYXRlIEF1dGhvcml0eSBPZmZsaW5lLTEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC1ofVVDk1OIe1ORT6X8lNF1U315waIH5nRsUYCAYKX +SeCwBVpwntFrmah8RXqOgWl8OIjygeZNBigkFAjlYU+FeDnV2xOgVR6FGJ3NYegk +HET3ZMZYh+/gDAtc7CcUYNDOQxD5hG/Rc/2QL3qlMsLotmLDdfHn5FvLJDJko7e1 +6p3iumwyWJB7IsflGpPCssJij/+6V34SrLYd1u8p/onxSg7PC3Vh5KOYQVAZ3FNy +3F0qpRQm3dkpmS0ZTpC5cnncSEMUj40p8BMa9JXGRn9+e/xbth4Arbvg/EDQXynQ +epo4EIC5L9pUjJoS7OSpJYzdfGYrk+tGprw8Tyr+k1g+ggYzOv5i1nYBRtqz6JGT +NqDatKaxr7oRXRs5anofYRDzCZsnlOjBun0C6cjNtSkpl770LsGz0uMRX6NjgbgR +ZeW1t6KKC6WXRmyQ80wAdy85zbhOX0Ur7iCsNRjXGFgJKFn2sttVKrboMrWE7Vk7 +hzz1jSVm/p2S+G7aHA0MAVGa6RQZF+/A1Q2VnQpblUnUJxiwEeQkvDtA1++NI1nL +JLkyEtYQzYPblrvhd9GI0/KU3PnTuWFrg25u8wbZUOnekr8LuGRibnrDnj2YF2ua +if+2roukL5U9OhShwEnchEhgAEXYjg32jixCE+JmD6X0q6f7BZ3i5rDE0cygqj+U +8QIDAQABo4IBQDCCATwwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFIAxB7goAoA8FIdp5Nth92Kg6eRPMIGyBgNVHSMEgaowgaeA +FIAxB7goAoA8FIdp5Nth92Kg6eRPoXmkdzB1MQswCQYDVQQGEwJLWjEfMB0GA1UE +ChMWUmVwdWJsaWMgb2YgS2F6YWtoc3RhbjEbMBkGA1UECxMSZURvY3VtZW50cyBh +bmQgZUlEMSgwJgYDVQQDEx9DZXJ0aWZpY2F0ZSBBdXRob3JpdHkgT2ZmbGluZS0x +ghR/MQe4KAKAPBSHaeTbYfdioOnkTzBCBgNVHSAEOzA5MDcGByqDDgMDAQEwLDAq +BggrBgEFBQcCARYeaHR0cDovL3BraS5nb3Yua3ovaXBjL3BwcnMucGRmMA0GCSqG +SIb3DQEBBQUAA4ICAQB5s08kJQBhr458/aln8dsXT0/Ph/tx9eZS2LWHAdHfqwpv +/VTbVWQrxBkKr9bMevWdZyoS26pW9iXG9xU+SuVzOr0zyTaJATzebEQ+BlllGNpZ +UD2mSpmRRpMLo751k+bDFngyu0G3nOSSZNVEINPFNzBaN5I0HbB8D2R0WGXwoIo5 +1ij6yF7MtDqNXXTTBX/ejRyy0fJ/iWjo0Ix0R0HCFM8DwaTVqMb5DZbNxatw31ah +AONt1RLdRUkG1jqddOEYcncpATkCdZ/3gk3MbBPLHPQNCCwR01U3LdbnNQOBkcK0 +85OLlapIo62YtmC241UL3nS64mCWEY0gylXy034WdqvE0gxB8CaZQ8XzdCjrITAG +mwOCS1IVwUELPPFxany7zmVLrzkHWzo3D6PVdc0C/8Dz0hrEKDIi65aBbi6iLSd3 +jXukT0s2bis8riFreqka+VAdZVMXY81fCOJL0OoWRlB7p2ee0rUndImheJcZocZ1 +jz/SnOwTscWbGNbLNwVxxganvLGwE1HEpl0f9S4l7akivXCzDaEW89FeRfHjR/CX +X9nyRURKskivgQoMcy0B0jXcdqXoqG4Ki051D8xatLOZ4qv+w9iJ9gDMFn7/VrGr +oqn9b8m+xJHkdVQzWlGn5TFBv+mN4nq35z/j/CiPOHPX//arxYOhk+Y1r328Vw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIG2DCCBMCgAwIBAgIUdiG4t2biEjw5dGq4miqb9nO2lOQwDQYJKoZIhvcNAQEF +BQAwdTELMAkGA1UEBhMCS1oxHzAdBgNVBAoTFlJlcHVibGljIG9mIEthemFraHN0 +YW4xGzAZBgNVBAsTEmVEb2N1bWVudHMgYW5kIGVJRDEoMCYGA1UEAxMfQ2VydGlm +aWNhdGUgQXV0aG9yaXR5IE9mZmxpbmUtMTAeFw0xOTA3MDkwNTU5NTRaFw0zNDEw +MDgwNTU5NTRaMHUxCzAJBgNVBAYTAktaMR8wHQYDVQQKExZSZXB1YmxpYyBvZiBL +YXpha2hzdGFuMRswGQYDVQQLExJlRG9jdW1lbnRzIGFuZCBlSUQxKDAmBgNVBAMT +H0NlcnRpZmljYXRlIEF1dGhvcml0eSBPZmZsaW5lLTEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC4+r+OfJyXsJbRO1qtWBSvuKPzHMj0+VJsMFcoKl4W +yJ9TjXEagmmf/ToRw75yBuzfde4QImTfZGbMX7rWlBPNrC/Os2zpIS/zQ5hKcY62 ++iu+mjCke3nvVUqcmPxjtIf+Moezegn6JBdl5sUbiYSktqol9+a4qYK9uWbhdyaC +iva8kBR09EIJC/jkVshKkz8MOUKy1XHZxctUsAMAsHpyIZAoiQoqvmcqpkFfMVLb +zHELkYYco/glT8ab0qqkNKqI8qZCH7xE8KSKOMxCaPCo30u1UbRUkUI2dtRBhkEC +q9aPK1TNvZCjIlOJHbIZtww0l0qOL/WTlC5I8aS+L8VH3IwyOstOe+DSpqFQmxgP +pFn9ghY9mOtZB8M4oc2SIf5Fd6LIuTekZCVbbFwyfDcD7VYfKX3hpr5GgtcpeKNa +2Se9O4+fjh9bmAVxlUKyxSPf2YctJu9Vk2RS7JPYceB+az0BJ4nhOZvW8kjWLPNm +zb9ivDWKZKu1TR27YLA+JKyy1MvghR+D7v3VYLpBtM7rMzndIXkLLJgF3auaZg4/ +7oJnZFcBDWX5g8r3tVYjYln1uTmstl/T2DbgPGiKUkCZyxNqgxrJNEAl4OZ4eHsE +T+GErglXkMtDiH3wPoZeUW3+L31wQdIXO2cY3HhKEH4qIerOYO2lfDtXu0eMYflY +dQIDAQABo4IBXjCCAVowEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFPYhuLdm4hI8OXRquJoqm/ZztpTkMIGyBgNVHSMEgaowgaeA +FPYhuLdm4hI8OXRquJoqm/ZztpTkoXmkdzB1MQswCQYDVQQGEwJLWjEfMB0GA1UE +ChMWUmVwdWJsaWMgb2YgS2F6YWtoc3RhbjEbMBkGA1UECxMSZURvY3VtZW50cyBh +bmQgZUlEMSgwJgYDVQQDEx9DZXJ0aWZpY2F0ZSBBdXRob3JpdHkgT2ZmbGluZS0x +ghR2Ibi3ZuISPDl0ariaKpv2c7aU5DBgBgNVHSAEWTBXMFUGByqDDgMDAQEwSjBI +BggrBgEFBQcCARY8aHR0cDovL3d3dy5rbmNhLmt6L2RvY3MvY2VydGlmaWNhdGlv +bl9wcmFjdGlzZV9zdGF0ZW1lbnQucGRmMA0GCSqGSIb3DQEBBQUAA4ICAQAvlTXv +7DlFOCJiq2VFnRb1kgYTYT8dSyxnH7fhA87nmfm4vTX7sz5I1nL0kG25ZZH3hVGz +uIDICmls5QMPAJtBVdLH/gF1Ob+fOb7/D9W7q7c5ll1ewMm5giWwHNnlCpTBGwym +4jd3A5wpTIx3y5hkePhYq56qNgSoXDvoDVB8efYuRTkxSHElgWlXtFmmguXGa6SK +18TmJfefPPnezEj0rbMzvOYhlRgl88qmD47EeiSTuuo5GAywGjnFwdp7MyJZxjpM +4C71R1NTK9B5OmGEek5dwhsna0Vnz5wZpwDoKR5XCzrIzCR1X4buTIqmIGgkqqGm +ldsDGRVMPoHllpjLHH787IDCMSCYzo2fy1n6X6eLjDxkLhpWrriMZHHf1sS2pMs+ +uND0W+7GrfkJkq27LSGnwO46aUlP/DXN1oFK8OaVN/q1I2+S6aJl66VVOYWbBW+X +EGm0O8m9b30fYPt95FExP1Pqt71If06A3XGO8y/bw3ImHr1QsfpMI6SOkiXgCoMJ +K+J1GT3rjrr06WFhoMMqF52j9F7n4PQc1mor3OmQ0KXR0J/2yAPvfHDmwxUPNPC1 +bytyPCYSbTTswhVWiHZWRt9V6PVSom/WG2njIf8ge8iMq/1y+xAQaavBvLMwkH7m +qLKD1Fs34HvrwGVvvu+ytqfpCFoeXQe2hpBhMQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHwDCCBaigAwIBAgIQeEqDJq6jifPUhszrRJYJ6TANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCS1cxHTAbBgNVBAoTFE1pbmlzdHJ5IG9mIEludGVyaW9yMT8w +PQYDVQQLEzZHZW5lcmFsIERlcGFydG1lbnQgb2YgTmF0aW9uYWxpdHkgYW5kIFRy +YXZlbCBEb2N1bWVudHMxEzARBgNVBAUTCjIwMTYwNDAxMDExFDASBgNVBAMTC0NT +Q0EgS3V3YWl0MB4XDTIxMDUwMTAwMDAwMFoXDTMxMDYyOTIzNTk1OVowgZgxCzAJ +BgNVBAYTAktXMR0wGwYDVQQKExRNaW5pc3RyeSBvZiBJbnRlcmlvcjE/MD0GA1UE +CxM2R2VuZXJhbCBEZXBhcnRtZW50IG9mIE5hdGlvbmFsaXR5IGFuZCBUcmF2ZWwg +RG9jdW1lbnRzMRQwEgYDVQQDEwtDU0NBIEt1d2FpdDETMBEGA1UEBRMKMjAyMTA1 +MDEwMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANadUfNwpFKRWMjr +JEctYksFgoCR0kTbx/PiVLd3qaAjPQX4QDGMFV1K/5NDEp663pf+9BKGxKqCOiBz +su0zCxaYWRUctUk8nCmmH7CHU/wCV/E7nvJfUMT0735Ap5BaE8bckGSUqEfFkUHf ++t3n0naRXmEa/nxZUZRIRyWewawyBghNJX3aOouu+lSoS2OYGKCNUdJPzN+z5ArE +qEFV+gJNY7SYEEV3E0i1xJA9EZn3+iBifVre9edVgcmrIlmRpFWZczQ81sWXDEeR +BrdmY2jsu0ViNXB9RXPhi2Ze6EUIa1VEX2s9rwBK3L7KjEaI3JEepE+EYmpwy3GI +LsiiqYI1BSe7ncMZq+qM7R1BEsautWH72otSjt/K6L5AovHGqCRlg7jn/8dbSUNT +2ZF3zj1/1Oio4H79hpc3I3ngXNStWaNZfyw508i6BSquUemjfaD/l30cHeQWNkPs +JHHOXAq5sOaZsAiraX1Rfn57HNo+eSFfU4xAUOQTViF+v+JkrZU6Yww7dLNcXtHI +Ts3i35wXnnIJJgHCuwbc3bjC70rWJ2pfr+NB099pWPNy80BxxiyuVJoSzHhDj1hn +ebDCQWlxl09JR2naAM8ne/7brO2vZuc3vtv0ffhsZB1CbgO1nxYF59AgCFc+Vzul +j2HY0BrxOyuYcOSOt+JmqXjZBOCRAgMBAAGjggICMIIB/jA1BgNVHR8ELjAsMCqg +KKAmhiRodHRwczovL2VwcC5tb2kuZ292Lmt3L2NzY2EvY3NjYS5jcmwwPgYDVR0S +BDcwNYEWY3NjYS1rdXdhaXRAbW9pLmdvdi5rd4YbaHR0cHM6Ly9lcHAubW9pLmdv +di5rdy9jc2NhMD4GA1UdEQQ3MDWBFmNzY2Eta3V3YWl0QG1vaS5nb3Yua3eGG2h0 +dHBzOi8vZXBwLm1vaS5nb3Yua3cvY3NjYTCB1AYDVR0jBIHMMIHJgBSjSmYXFZRv +usCIqJOZqUd/VU8fo6GBnqSBmzCBmDELMAkGA1UEBhMCS1cxHTAbBgNVBAoTFE1p +bmlzdHJ5IG9mIEludGVyaW9yMT8wPQYDVQQLEzZHZW5lcmFsIERlcGFydG1lbnQg +b2YgTmF0aW9uYWxpdHkgYW5kIFRyYXZlbCBEb2N1bWVudHMxEzARBgNVBAUTCjIw +MTYwNDAxMDExFDASBgNVBAMTC0NTQ0EgS3V3YWl0ghA3X7HAyCOI86TO22IQH+uu +MB0GA1UdDgQWBBRsFML1VKm2P0XzIzOfcz7Ei2sdazASBgNVHRMBAf8ECDAGAQH/ +AgEAMA4GA1UdDwEB/wQEAwIBhjArBgNVHRAEJDAigA8yMDIxMDUwMTAwMDAwMFqB +DzIwMjYwODEwMjM1OTU5WjANBgkqhkiG9w0BAQsFAAOCAgEAGVVjXWoCDHpjazPW +O0S7pnw2nGr49d3OYTKq4D6K3WSWPlTByLhNzOD0MVRyZBk4G4QoAcOVvbF+p3bC +y1HdXwzk61PX1IvVPpyjoyuA98sj6kIzd+ASnpoDgCwB3qm0sESK/r5FoRI8K/F6 +PD7hElyZLCrKf7G8hzjXNDbdc/GhRy/cG7dpunQpVt//XTkmXj4qSZevIBcaA4TE +YDV/PvwbNuaT2RcSSKRulMKEpi/Lc98Euiqy3iAbV61i7NcHtyc/4iW1t9pLfdMx +Y1hkSDDnI5jFW/HP1SPkNR30lvjNWe+dKN1fgn1lau1JbicV3uKl+rvBG845PFRh +gJhMpVtT4pnbxX8juTbxuZSGmEOF/y1whuSq0E5avROJXh7qucsW6nFWwcvBySnb +uVEH0p4GJWu0nlHvDkUdsToVHxIrKl6iGGCZDOUa++sqsUHpATnlk+8ZRojt5b+P +LbkpuOkSkV11GgrxeEHs35/SrJ5Cviy5OBeCi1wk9PAEpVG/+dKEUh+jA77w4aFr +5rKkRDH2H7GdPBhxyMR5TCwD3KSjEaoVvQYkNjBLiiLieVDqPkuBvIU1XQyfc0H4 +ODyPxZWHfvcbl0HeVSJ0bJ/LFa/RkDwYqIFsv1RtWe0SQKLDcdutDBPVKfQ1uFwl +iN+AVvlV0YQhOTiUWlvYqle/FP4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIHxDCCBaygAwIBAgIIW5BLiyHi4HswDQYJKoZIhvcNAQEFBQAwazELMAkGA1UE +BhMCTFUxJDAiBgNVBAoMG01pbmlzdHJ5IG9mIEZvcmVpZ24gQWZmYWlyczEoMCYG +A1UEAwwfR3JhbmQtRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBIDEMMAoGA1UEBRMD +MTAwMB4XDTE1MDMyNzE0Mzk1MFoXDTIxMDExNTEzMzg0MVowfTELMAkGA1UEBhMC +TFUxOzA5BgNVBAoMMkdyYW5kLUR1Y2h5IG9mIEx1eGVtYm91cmcgTWluaXN0cnkg +Rm9yZWlnbiBBZmZhaXJzMTEwLwYDVQQDDChHcmFuZC1EdWNoeSBvZiBMdXhlbWJv +dXJnIENTQ0EgZVBhc3Nwb3J0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC +AgEAz3lwA4QiEodak5Dod38pJTKrd0jBeKw7LScLef0P4RSLf6CaEN3Tp76tUTTa +R9TaLRF0togVQNBWEmMocNjlb8U8V9+xLORrE5GYqjT4COJKtbJLP8cjhrrMPyD+ +jWzFhjC8XUni76iuFFVYyVwv6SNZvkbeqwM/EyaRAB+0Q7l3s7K4Vw6W2NCqn9T4 +zbgQjWl+ht8JcPBGVUQGjpFFrWofoSeOLfztM3dvGEb5QfrSNsUOMz2AcfUPsXl3 +Eve/RbdPV24iETZyHXjixSk60TL3Q7G8EUE4Lygn4jhEXqbuKBHJ76hesl3Q9tRy +wclQVh5SuzdB0TGMm2Hn3ooPr8BIlv4WfHfN4K5wgGLAzsotkaMuHyYcqyOmWl2G +5StIgGB/TGkpUMgY8z3HNqdZ7kkufiQ6jm5DURSjJGBTs83ebORpHTbOp4AxyKf3 +n4qyP0337pZO1JuTRlSq2i5u22J7+d1O8jyHjxJDEQ65cXYrAsg78rgdtZdbHEiR +FJQZLKNvRxzyRjPgkqCECCuXn8CTwTPQ7lv21loh7D+rWrkAbzElGPNUGjcqgP9u +3deOM0X744/wQbmieu3jIQuQlMfx8IcTDXXntKieRhKaD6QIEdKHGoDi7ZTL327m +L+seaDMcvtsZfPNbcglAfC2UhkkuHepzfDIGS3k4LieQLG8CAwEAAaOCAlgwggJU +MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCsGA1UdEAQkMCKA +DzIwMTQxMTEyMTQzMTA1WoEPMjAxODExMTIxNDMxMDVaMB0GA1UdDgQWBBT77NlP +9FmkQ9GssbDT5sHjcqRrODA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vcmVwb3Np +dG9yeS5pbmNlcnQubHUvQ1NDQV9lUGFzc3BvcnQuY3JsMIIBIwYDVR0gBIIBGjCC +ARYwggESBgRVHSAAMIIBCDCB3AYIKwYBBQUHAgIwgc8egcwAZQBQAGEAcwBzAHAA +bwByAHQAIABDAG8AdQBuAHQAcgB5ACAAUwBpAGcAbgBpAG4AZwAgAEMAQQAgAEMA +ZQByAHQAaQBmAGkAYwBhAHQAZQA6ACAAVQBzAGEAZwBlADoAIABlAFAAYQBzAHMA +cABvAHIAdAAgAEQAbwBjAHUAbQBlAG4AdAAgAFMAaQBnAG4AZQByACAAQwBlAHIA +dABpAGYAaQBjAGEAdABlACAAUwBpAGcAbgBhAHQAdQByAGUAIABvAG4AbAB5AC4w +JwYIKwYBBQUHAgEWG2h0dHA6Ly9yZXBvc2l0b3J5LmluY2VydC5sdTAqBgNVHRIE +IzAhgQ5jc2NhQGluY2VydC5sdaQPMA0xCzAJBgNVBAcMAkxVMCoGA1UdEQQjMCGB +DmNzY2FAaW5jZXJ0Lmx1pA8wDTELMAkGA1UEBwwCTFUwDQYHZ4EIAQEGAQQCBQAw +EwYDVR0jBAwwCoAIT6P1x5vQeSIwDQYJKoZIhvcNAQEFBQADggIBAC5gd+hyffXq ++xBHeg0IL9SThbmv36SKyiqBQ0n2nVoJ6lXo9D7ajWJHDhjIFwYY+PTCMKwCYPsZ +kg5w7Jq/1YY0hyOE5OAAGqkfxIdohx7MA92i5Qxo05K9IC1VjXKzRw8BZ6pH4LTF +jUCGpL7aS3DM+12WpnA3xyIUyOx1NpfpeJstAYlheOv+P86WO9yNz92ANEgHk3ql +4o9nmaa7nyUEGztXkcHlqxfMn6E0fBXWt1oCynuWq6ZCqYSuwEqr/bhtGngUEHuy +xZsJhirOkK6SzKI2Orh+WKMoqJeW9ofz3EHdrdcQI/+9QApHxUx0PeUTXiA8cs0J +YScIL1CSNDZN4ILagHWVTrd6Juv5CIaujNAAt8khgwllZtn3RnzVtBmNkl9AscvQ +kAeKXZE0FWN+3TUnPAZaWP6sE60a8XqkrywS4+t+wBsOKWRt6GUbwIn5AVaoIPKt +PP9OQ9qzgg/1E3SLX7bEePwJpkCicVF9k9daF1eS0juyPU1tBmSiJ2WZZPscludH +N7EZm9wSAo5umEishw63Y7KJw53HXONqs89Cf7F5I9+CSaGJQqB8DV1IyOkZsPbr +GAnFEzjZ41k7VLrpDLRCWCmxBBLcX2ZmkGGfKhU3L+AEWmSycu8ED4K4hGmHb6F5 +R3Nhmx4doVeKc7KuLgWpgu8FfbX3TL/r +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIF3zCCA8egAwIBAgIERQp9gDANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJJ +RTEmMCQGA1UECgwdRGVwYXJ0bWVudCBvZiBGb3JlaWduIEFmZmFpcnMxGDAWBgNV +BAsMD1Bhc3Nwb3J0IE9mZmljZTEVMBMGA1UEAwwMQ1NDQSBJcmVsYW5kMB4XDTA2 +MDkxNTEwMDkwMVoXDTIxMDkxNTEwMzkwMVowZjELMAkGA1UEBhMCSUUxJjAkBgNV +BAoMHURlcGFydG1lbnQgb2YgRm9yZWlnbiBBZmZhaXJzMRgwFgYDVQQLDA9QYXNz +cG9ydCBPZmZpY2UxFTATBgNVBAMMDENTQ0EgSXJlbGFuZDCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAKklZ2Gpp+tp1j2c7i5ypgTWdreJwRlHkYdI4Xvb +pyHtcUuY+PANho6DIwGuE6rec+ge3J5TXrCrYCEBpq0q0LkKZgY4Tu/l+G1fQ8PV +uU5Z3zfUAwWYnAsZEsV5fEANOHo0EbZ6vPlLbDO8phwniYVBPkKn0Nupt9bqRdr6 +1/Bqh3lorl3HFggj6ynup+7Dm+RNzlQxPhvrT6e9G+Lphd1ZMK//xiaTOvW8L0cu +uiHPUB1A4pq/XowZE4i7RGO5g76uKEBfzfFwc3iTRouujoaoo2iTkM227w+HSM6q +kylZNmfunIdzdhiIc1TaJ5Kd+b6gPmDDcGb0tIwcvQvEgCwfCdKifSxCjSmVt+kq +sfb/WOnAT02H+tqbYpQvhY9NW4n4scP9jB6rxvys8ne0+fZAaJCIDhvQZUeGZZXC +Jyt/0oCAJWlDAbzHGxog4So7oFTysUstkfElQXU6TTwB1PkmPBXrw43lJ7G2TcJ/ +4qvp2mUp4aAcbuNkNJTbBC6f0PIxl6EGJXyxRmfxgM7FECw/wZdZSWuP8YYgyfDy +i8JV/1l182Y2VhD0J4htS17Z0/gXZc5G7scoLYgQ/WogfzzmBx9fgfdDAJTKMnUN +K4HnHYX3x76XlRbi7fnjSjega6ivC/yBUlcTF1GVQeidnBBhhoxSgE8oLQebSR0v +EhQ9AgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC +AQYwKwYDVR0QBCQwIoAPMjAwNjA5MTUxMDA5MDFagQ8yMDExMDMxNzAyMzkwMVow +HwYDVR0jBBgwFoAU1TNhmIu4ro5NeEGMAbg7NwXv3G8wHQYDVR0OBBYEFNUzYZiL +uK6OTXhBjAG4OzcF79xvMA0GCSqGSIb3DQEBCwUAA4ICAQA3yqwUQJws/XlT96vW +mll34K1WpEgdojKSNccZRogxSqFVvU3VLNLyahKoHvbnHMAn7Tq0RMOXe4TbtTYa +i7zNzealPynr7YRcS5/E/9p233iMUjg1DsntVk5jOZHLR+e13b1UtWtQbhYTj9Xs +lmotN7734JyQQv6L4zgTS+oy4n06CAahAKasELTvNHFQDjG1AOMj9iH+XAVWZ7av +CNYPfksq3DvcBGR07A0GA5JozITI2/MFUPgmykj5eBn9PnjU/isJYuiHTyqQzaFO +9JkLeWZJg6dIav9hIWbmPVvmPHbimL58zzNihyvJtcPhvfVqr8tQu4FSYMKlC+ff +xIHmE6kERCV4/4XAFk9oX/ZcnHiCyZlbIVO8DV61igjg73rhwgCUUSt+SuukpQgj +2P/TtVJCEKh3kVCWh/7xsOQree40cShSY4sSk7X6thCyM16p/VcIfAQ8L05kull3 +rN4E4j1DLk+g3H1GThvQB/izYavKiCRWIxbI/RdQC5ZFqBSVporZ+1hDjC+rbc3Q +daygDQdOyA+ozj0IS0sSez65NtDSKuctEEPIjkDXnPS2VnM0wlLuQJj0fzjnVI1M +gR6vHE+y588r76QiZn2F5O/WoO+cmVz9mW9RvA7/eVyGw98fM/IVpqZtlmqq11CF +9SNsK7fmsnqQURqsFOp2O3gbEg== +-----END CERTIFICATE----- diff --git a/app/ios/Prover.m b/app/ios/Prover.m new file mode 100644 index 000000000..ac1237263 --- /dev/null +++ b/app/ios/Prover.m @@ -0,0 +1,23 @@ +// +// Prover.m +// ProofOfPassport +// +// Created by Florent on 13/01/2024. +// + +#import +#import "React/RCTBridgeModule.h" + +@interface RCT_EXTERN_MODULE(Prover, NSObject) + +RCT_EXTERN_METHOD(runInitAction:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) + +RCT_EXTERN_METHOD(runProveAction:(NSDictionary *)inputs + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) + +RCT_EXTERN_METHOD(runVerifyAction:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) + +@end \ No newline at end of file diff --git a/app/ios/Prover.swift b/app/ios/Prover.swift new file mode 100644 index 000000000..e4aea8688 --- /dev/null +++ b/app/ios/Prover.swift @@ -0,0 +1,140 @@ + +// Prover.swift +// ProofOfPassport + +// Created by Florent on 13/01/2024. + + +import Foundation +import React +import Security +import MoproKit + +@available(iOS 15, *) +@objc(Prover) +class Prover: NSObject { + + let moproCircom = MoproKit.MoproCircom() + var generatedProof: Data? + var publicInputs: Data? + + @objc(runInitAction:reject:) + func runInitAction(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { // Update the textView on the main thread + print("Initializing library") + + // Execute long-running tasks in the background + DispatchQueue.global(qos: .userInitiated).async { + // Record start time + let start = CFAbsoluteTimeGetCurrent() + + do { + try initializeMopro() + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + + // Log the time taken for initialization + print("Initializing arkzkey took \(timeTaken) seconds.") + resolve("Done") + } catch { + // Log any errors that occurred during initialization + print("An error occurred during initialization: \(error)") + reject("PROVER", "An error occurred during initialization", error) + } + } + } + + @objc(runProveAction:resolve:reject:) + func runProveAction(_ inputs: [String: [String]], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { + // Logic for prove (generate_proof2) + do { + // format of inputs, if you want to manage it manually: + + // WORKING, SAMPLE DATA: + // let mrz: [String] = ["97","91","95","31","88","80","60","70","82","65","68","85","80","79","78","84","60","60","65","76","80","72","79","78","83","69","60","72","85","71","85","69","83","60","65","76","66","69","82","84","60","60","60","60","60","60","60","60","60","50","52","72","66","56","49","56","51","50","52","70","82","65","48","52","48","50","49","49","49","77","51","49","49","49","49","49","53","60","60","60","60","60","60","60","60","60","60","60","60","60","60","48","50"] + // let reveal_bitmap: [String] = ["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"] + // let dataHashes: [String] = ["48","130","1","37","2","1","0","48","11","6","9","96","134","72","1","101","3","4","2","1","48","130","1","17","48","37","2","1","1","4","32","176","223","31","133","108","84","158","102","70","11","165","175","196","12","201","130","25","131","46","125","156","194","28","23","55","133","157","164","135","136","220","78","48","37","2","1","2","4","32","190","82","180","235","222","33","79","50","152","136","142","35","116","224","6","242","156","141","128","248","10","61","98","86","248","45","207","210","90","232","175","38","48","37","2","1","3","4","32","0","194","104","108","237","246","97","230","116","198","69","110","26","87","17","89","110","199","108","250","36","21","39","87","110","102","250","213","174","131","171","174","48","37","2","1","11","4","32","136","155","87","144","111","15","152","127","85","25","154","81","20","58","51","75","193","116","234","0","60","30","29","30","183","141","72","247","255","203","100","124","48","37","2","1","12","4","32","41","234","106","78","31","11","114","137","237","17","92","71","134","47","62","78","189","233","201","214","53","4","47","189","201","133","6","121","34","131","64","142","48","37","2","1","13","4","32","91","222","210","193","62","222","104","82","36","41","138","253","70","15","148","208","156","45","105","171","241","195","185","43","217","162","146","201","222","89","238","38","48","37","2","1","14","4","32","76","123","216","13","51","227","72","245","59","193","238","166","103","49","23","164","171","188","194","197","156","187","249","28","198","95","69","15","182","56","54","38"] + // let eContentBytes: [String] = ["49","102","48","21","6","9","42","134","72","134","247","13","1","9","3","49","8","6","6","103","129","8","1","1","1","48","28","6","9","42","134","72","134","247","13","1","9","5","49","15","23","13","49","57","49","50","49","54","49","55","50","50","51","56","90","48","47","6","9","42","134","72","134","247","13","1","9","4","49","34","4","32","32","85","108","174","127","112","178","182","8","43","134","123","192","211","131","66","184","240","212","181","240","180","106","195","24","117","54","129","19","10","250","53"] + // let signature: [String] = ["7924608050410952186","18020331358710788578","8570093713362871693","158124167841380627","11368970785933558334","13741644704804016484","3255497432248429697","18325134696633464276","11159517223698754974","14221210644107127310","18395843719389189885","14516795783073238806","2008163829408627473","10489977208787195755","11349558951945231290","10261182129521943851","898517390497363184","7991226362010359134","16695870541274258886","3471091665352332245","9966265751297511656","15030994431171601215","10723494832064770597","14939163534927288303","13596611050508022203","12058746125656824488","7806259275107295093","9171418878976478189","16438005721800053020","315207309308375554","3950355816720285857","5415176625244763446"] + // let pubkey: [String] = ["10501872816920780427","9734403015003984321","14411195268255541454","5140370262757446136","442944543003039303","2084906169692591819","13619051978156646232","11308439966240653768","11784026229075891869","3619707049269329199","14678094225574041482","13372281921787791985","5760458619375959191","1351001273751492154","9127780359628047919","5377643070972775368","14145972494784958946","295160036043261024","12244573192558293296","13273111070076476096","15787778596745267629","12026125372525341435","17186889501189543072","1678833675164196298","11525741336698300342","9004411014119053043","3653149686233893817","3525782291631180893","13397424121878903415","12208454420188007950","5024240771370648155","15842149209258762075"] + // let address: [String] = ["897585614395172552642670145532424661022951192962"] // decimal of 0x9D392187c08fc28A86e1354aD63C70897165b982 + + // var inputs = [String: [String]]() + // inputs["mrz"] = mrz; + // inputs["reveal_bitmap"] = reveal_bitmap; + // inputs["dataHashes"] = dataHashes; + // inputs["eContentBytes"] = eContentBytes; + // inputs["signature"] = signature; + // inputs["pubkey"] = pubkey; + // inputs["address"] = address; + + print(inputs) + + let start = CFAbsoluteTimeGetCurrent() + + // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Record end time and compute duration + let end = CFAbsoluteTimeGetCurrent() + let timeTaken = end - start + print("Proof generation took \(timeTaken) seconds.") + + // Store the generated proof and public inputs for later verification + print("generateProofResult", generateProofResult) + generatedProof = generateProofResult.proof + publicInputs = generateProofResult.inputs + + // Convert Data to array of bytes + let proofBytes = [UInt8](generateProofResult.proof) + let inputsBytes = [UInt8](generateProofResult.inputs) + + print("proofBytes", proofBytes) + print("inputsBytes", inputsBytes) + + // Create a dictionary with byte arrays + let resultDict: [String: [UInt8]] = [ + "proof": proofBytes, + "inputs": inputsBytes + ] + + // Serialize dictionary to JSON + let jsonData = try JSONSerialization.data(withJSONObject: resultDict, options: []) + let jsonString = String(data: jsonData, encoding: .utf8)! + + resolve(jsonString) + } catch let error as MoproError { + print("MoproError: \(error)") + reject("PROVER", "An error occurred during proof generation", error) + } catch { + print("Unexpected error: \(error)") + reject("PROVER", "An error occurred during proof generation", error) + } + } + + @objc(runVerifyAction:reject:) + func runVerifyAction(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) { + // Logic for verify + guard let proof = generatedProof, + let publicInputs = publicInputs else { + print("Proof has not been generated yet.") + return + } + do { + // Verify Proof + let isValid = try verifyProof2(proof: proof, publicInput: publicInputs) + assert(isValid, "Proof verification should succeed") + + print("Proof verification succeeded.") + resolve(isValid) + } catch let error as MoproError { + print("MoproError: \(error)") + reject("PROVER", "An error occurred during proof verification", error) + } catch { + print("Unexpected error: \(error)") + reject("PROVER", "An error occurred during proof verification", error) + } + } +} diff --git a/app/ios/post_install.sh b/app/ios/post_install.sh new file mode 100755 index 000000000..1f28dad6a --- /dev/null +++ b/app/ios/post_install.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# update xcconfig +MODES="debug release" +XCCONFIG_PATH=Pods/Target\ Support\ Files/MoproKit +CONFIGS=" +LIBRARY_SEARCH_PATHS=\${SRCROOT}/../MoproKit/Libs +OTHER_LDFLAGS=-lmopro_ffi +USER_HEADER_SEARCH_PATHS=\${SRCROOT}/../MoproKit/include +" +for mode in ${MODES} +do + FILE_NAME=${XCCONFIG_PATH}/MoproKit.${mode}.xcconfig + for config in ${CONFIGS}; do + EXIST=$(grep -c "${config}" "${FILE_NAME}") + if [[ $EXIST -eq 0 ]]; then + echo "${config}" >> "${FILE_NAME}" + fi + done +done + +echo "Finished updating xcconfig" \ No newline at end of file diff --git a/app/mopro-core/.gitignore b/app/mopro-core/.gitignore new file mode 100644 index 000000000..6985cf1bd --- /dev/null +++ b/app/mopro-core/.gitignore @@ -0,0 +1,14 @@ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb diff --git a/app/mopro-core/Cargo.toml b/app/mopro-core/Cargo.toml new file mode 100644 index 000000000..1a63a4d30 --- /dev/null +++ b/app/mopro-core/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = "mopro-core" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[patch.crates-io] +# NOTE: Forked wasmer to work around memory limits +# See https://github.com/wasmerio/wasmer/commit/09c7070 +wasmer = { git = "https://github.com/oskarth/wasmer.git", rev = "09c7070" } + +[features] +default = [] +dylib = ["wasmer/dylib"] + +[dependencies] +ark-circom = { git = "https://github.com/arkworks-rs/circom-compat.git" } +serde = { version = "1.0", features = ["derive"] } +ark-serialize = { version = "=0.4.1", features = ["derive"] } +num-bigint = { version = "=0.4.3", default-features = false, features = [ + "rand", +] } +instant = "0.1" +wasmer = { git = "https://github.com/oskarth/wasmer.git", rev = "09c7070" } +once_cell = "1.8" + +# ZKP generation +ark-ec = { version = "=0.4.1", default-features = false, features = [ + "parallel", +] } +ark-crypto-primitives = { version = "=0.4.0" } +ark-std = { version = "=0.4.0", default-features = false, features = [ + "parallel", +] } +ark-bn254 = { version = "=0.4.0" } +ark-groth16 = { version = "=0.4.0", default-features = false, features = [ + "parallel", +] } +ark-relations = { version = "0.4", default-features = false } +ark-zkey = { path = "../ark-zkey" } + +# Error handling +thiserror = "=1.0.39" +color-eyre = "=0.6.2" +criterion = "=0.3.6" + +[build-dependencies] +color-eyre = "0.6" +enumset = "1.0.8" +wasmer = { git = "https://github.com/oskarth/wasmer.git", rev = "09c7070" } diff --git a/app/mopro-core/README.md b/app/mopro-core/README.md new file mode 100644 index 000000000..452109f1d --- /dev/null +++ b/app/mopro-core/README.md @@ -0,0 +1,47 @@ +# mopro-core + +Core mobile Rust library. For FFI, see `mopro-ffi` which is a thin wrapper for exposing UniFFI bindings around this library. + +## Overview + +TBD. + +## Examples + +Run `cargo run --example circom`. Also see `examples/circom/README.md` for more information. + +## Build dylib + +Experimental support. + +Turns `.wasm` file into a dynamic library (`.dylib`). + +Run: + +`cargo build --features dylib` + +After that you'll see location of the dylib file: + +``` +warning: Building dylib for aarch64-apple-darwin +warning: Dylib location: /Users/user/repos/github.com/oskarth/mopro/mopro-core/target/debug/aarch64-apple-darwin/keccak256.dylib +``` + +Right now this is hardcoded for `rsa`. + +Note that: +- It has to be built for the right architecture +- Have to run `install_name_tool` to adjust install name +- Run `codesign` to sign dylib for use on iOS + +### Script + +Add third argument: `dylib`: + +`./scripts/update_bindings.sh device release dylib` + +Note that `APPLE_SIGNING_IDENTITY` must be set. + +## To use ark-zkey + +Experimental support for significantly faster zkey loading. See `../ark-zkey` README for how to build arkzkey. \ No newline at end of file diff --git a/app/mopro-core/build.rs b/app/mopro-core/build.rs new file mode 100644 index 000000000..ae72e15cf --- /dev/null +++ b/app/mopro-core/build.rs @@ -0,0 +1,95 @@ +use color_eyre::eyre::Result; +use std::env; +use std::path::PathBuf; + +fn prepare_env(zkey_path: String, wasm_path: String, arkzkey_path: String) -> Result<()> { + let project_dir = env::var("CARGO_MANIFEST_DIR")?; + let zkey_file = PathBuf::from(&project_dir).join(zkey_path); + let wasm_file = PathBuf::from(&project_dir).join(wasm_path); + let arkzkey_file = PathBuf::from(&project_dir).join(arkzkey_path); + + // TODO: Right now emitting as warnings for visibility, figure out better way to do this? + println!("cargo:warning=zkey_file: {}", zkey_file.display()); + println!("cargo:warning=wasm_file: {}", wasm_file.display()); + println!("cargo:warning=arkzkey_file: {}", arkzkey_file.display()); + + // Set BUILD_RS_ZKEY_FILE and BUILD_RS_WASM_FILE env var + println!("cargo:rustc-env=BUILD_RS_ZKEY_FILE={}", zkey_file.display()); + println!("cargo:rustc-env=BUILD_RS_WASM_FILE={}", wasm_file.display()); + println!( + "cargo:rustc-env=BUILD_RS_ARKZKEY_FILE={}", + arkzkey_file.display() + ); + + Ok(()) +} + +#[cfg(feature = "dylib")] +fn build_dylib(wasm_path: String, dylib_name: String) -> Result<()> { + use std::path::Path; + use std::{fs, str::FromStr}; + + use color_eyre::eyre::eyre; + use enumset::enum_set; + use enumset::EnumSet; + + use wasmer::Cranelift; + use wasmer::Dylib; + use wasmer::Target; + use wasmer::{Module, Store, Triple}; + + let out_dir = env::var("OUT_DIR")?; + let project_dir = env::var("CARGO_MANIFEST_DIR")?; + let build_mode = env::var("PROFILE")?; + let target_arch = env::var("TARGET")?; + + let out_dir = Path::new(&out_dir).to_path_buf(); + let wasm_file = Path::new(&wasm_path).to_path_buf(); + let dylib_file = out_dir.join(&dylib_name); + let final_dir = PathBuf::from(&project_dir) + .join("target") + .join(&target_arch) + .join(build_mode); + + // if dylib_file.exists() { + // return Ok(()); + // } + + // Create a WASM engine for the target that can compile + let triple = Triple::from_str(&target_arch).map_err(|e| eyre!(e))?; + let cpu_features = enum_set!(); + let target = Target::new(triple, cpu_features); + let engine = Dylib::new(Cranelift::default()).target(target).engine(); + println!("cargo:warning=Building dylib for {}", target_arch); + + // Compile the WASM module + let store = Store::new(&engine); + let module = Module::from_file(&store, &wasm_file).unwrap(); + module.serialize_to_file(&dylib_file).unwrap(); + assert!(dylib_file.exists()); + + // Copy dylib to a more predictable path + fs::create_dir_all(&final_dir)?; + let final_path = final_dir.join(dylib_name); + fs::copy(&dylib_file, &final_path)?; + println!("cargo:warning=Dylib location: {}", final_path.display()); + + Ok(()) +} + +fn main() -> Result<()> { + // TODO: build_circuit function to builds all related artifacts, instead of doing this externally + let dir = "../../circuits"; + let circuit = "proof_of_passport"; + + let zkey_path = format!("{}/build/{}_final.zkey", dir, circuit); + let wasm_path = format!("{}/build/{}_js/{}.wasm", dir, circuit, circuit); + // TODO: Need to modify script for this + let arkzkey_path = format!("{}/build/{}_final.arkzkey", dir, circuit); + + println!("cargo:warning=arkzkey_path: {}", arkzkey_path); + + prepare_env(zkey_path, wasm_path, arkzkey_path)?; + + Ok(()) +} diff --git a/app/mopro-core/src/lib.rs b/app/mopro-core/src/lib.rs new file mode 100644 index 000000000..2ac7b546f --- /dev/null +++ b/app/mopro-core/src/lib.rs @@ -0,0 +1,8 @@ +pub mod middleware; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum MoproError { + #[error("CircomError: {0}")] + CircomError(String), +} diff --git a/app/mopro-core/src/middleware/circom/mod.rs b/app/mopro-core/src/middleware/circom/mod.rs new file mode 100644 index 000000000..0cf497fc9 --- /dev/null +++ b/app/mopro-core/src/middleware/circom/mod.rs @@ -0,0 +1,860 @@ +use self::{ + serialization::{SerializableInputs, SerializableProof, SerializableProvingKey}, + utils::{assert_paths_exists, bytes_to_bits}, +}; +use crate::MoproError; + +use std::collections::HashMap; +//use std::io::Cursor; +use std::sync::Mutex; +use std::time::Instant; + +use ark_bn254::{Bn254, Fr}; +use ark_circom::{ + CircomBuilder, + CircomCircuit, + CircomConfig, + CircomReduction, + WitnessCalculator, //read_zkey, +}; +use ark_crypto_primitives::snark::SNARK; +use ark_groth16::{prepare_verifying_key, Groth16, ProvingKey}; +use ark_std::UniformRand; + +use ark_relations::r1cs::ConstraintMatrices; +use ark_std::rand::thread_rng; +use color_eyre::Result; +use core::include_bytes; +use num_bigint::BigInt; +use once_cell::sync::{Lazy, OnceCell}; + +use wasmer::{Module, Store}; + +use ark_zkey::read_arkzkey_from_bytes; //SerializableConstraintMatrices + +#[cfg(feature = "dylib")] +use { + std::{env, path::Path}, + wasmer::Dylib, +}; + +pub mod serialization; +pub mod utils; + +type GrothBn = Groth16; + +type CircuitInputs = HashMap>; + +// TODO: Split up this namespace a bit, right now quite a lot of things going on + +pub struct CircomState { + builder: Option>, + circuit: Option>, + params: Option>, +} + +impl Default for CircomState { + fn default() -> Self { + Self::new() + } +} + +// NOTE: A lot of the contents of this file is inspired by github.com/worldcoin/semaphore-rs + +// TODO: Replace printlns with logging + +//const ZKEY_BYTES: &[u8] = include_bytes!(env!("BUILD_RS_ZKEY_FILE")); + +const ARKZKEY_BYTES: &[u8] = include_bytes!(env!("BUILD_RS_ARKZKEY_FILE")); + +// static ZKEY: Lazy<(ProvingKey, ConstraintMatrices)> = Lazy::new(|| { +// let mut reader = Cursor::new(ZKEY_BYTES); +// read_zkey(&mut reader).expect("Failed to read zkey") +// }); + +static ARKZKEY: Lazy<(ProvingKey, ConstraintMatrices)> = Lazy::new(|| { + //let mut reader = Cursor::new(ARKZKEY_BYTES); + // TODO: Use reader? More flexible; unclear if perf diff + read_arkzkey_from_bytes(ARKZKEY_BYTES).expect("Failed to read arkzkey") +}); + +const WASM: &[u8] = include_bytes!(env!("BUILD_RS_WASM_FILE")); + +/// `WITNESS_CALCULATOR` is a lazily initialized, thread-safe singleton of type `WitnessCalculator`. +/// `OnceCell` ensures that the initialization occurs exactly once, and `Mutex` allows safe shared +/// access from multiple threads. +static WITNESS_CALCULATOR: OnceCell> = OnceCell::new(); + +/// Initializes the `WITNESS_CALCULATOR` singleton with a `WitnessCalculator` instance created from +/// a specified dylib file (WASM circuit). Also initialize `ZKEY`. +#[cfg(feature = "dylib")] +pub fn initialize(dylib_path: &Path) { + println!("Initializing dylib: {:?}", dylib_path); + + WITNESS_CALCULATOR + .set(from_dylib(dylib_path)) + .expect("Failed to set WITNESS_CALCULATOR"); + + // Initialize ARKZKEY + // TODO: Speed this up even more + let now = std::time::Instant::now(); + Lazy::force(&ARKZKEY); + println!("Initializing arkzkey took: {:.2?}", now.elapsed()); +} + +#[cfg(not(feature = "dylib"))] +pub fn initialize() { + println!("Initializing library with arkzkey"); + + // Initialize ARKZKEY + // TODO: Speed this up even more! + let now = std::time::Instant::now(); + Lazy::force(&ARKZKEY); + println!("Initializing arkzkey took: {:.2?}", now.elapsed()); +} + +/// Creates a `WitnessCalculator` instance from a dylib file. +#[cfg(feature = "dylib")] +fn from_dylib(path: &Path) -> Mutex { + let store = Store::new(&Dylib::headless().engine()); + let module = unsafe { + Module::deserialize_from_file(&store, path).expect("Failed to load dylib module") + }; + let result = + WitnessCalculator::from_module(module).expect("Failed to create WitnessCalculator"); + + Mutex::new(result) +} + +// #[must_use] +// pub fn zkey() -> &'static (ProvingKey, ConstraintMatrices) { +// &ZKEY +// } + +// Experimental +#[must_use] +pub fn arkzkey() -> &'static (ProvingKey, ConstraintMatrices) { + &ARKZKEY +} + +/// Provides access to the `WITNESS_CALCULATOR` singleton, initializing it if necessary. +/// It expects the path to the dylib file to be set in the `CIRCUIT_WASM_DYLIB` environment variable. +#[cfg(feature = "dylib")] +#[must_use] +pub fn witness_calculator() -> &'static Mutex { + let var_name = "CIRCUIT_WASM_DYLIB"; + + WITNESS_CALCULATOR.get_or_init(|| { + let path = env::var(var_name).unwrap_or_else(|_| { + panic!( + "Mopro circuit WASM Dylib not initialized. \ + Please set {} environment variable to the path of the dylib file", + var_name + ) + }); + from_dylib(Path::new(&path)) + }) +} + +#[cfg(not(feature = "dylib"))] +#[must_use] +pub fn witness_calculator() -> &'static Mutex { + WITNESS_CALCULATOR.get_or_init(|| { + let store = Store::default(); + let module = Module::from_binary(&store, WASM).expect("WASM should be valid"); + let result = + WitnessCalculator::from_module(module).expect("Failed to create WitnessCalculator"); + Mutex::new(result) + }) +} + +pub fn generate_proof2( + inputs: CircuitInputs, +) -> Result<(SerializableProof, SerializableInputs), MoproError> { + let mut rng = thread_rng(); + let rng = &mut rng; + + let r = ark_bn254::Fr::rand(rng); + let s = ark_bn254::Fr::rand(rng); + + println!("Generating proof 2"); + + let now = std::time::Instant::now(); + let full_assignment = witness_calculator() + .lock() + .expect("Failed to lock witness calculator") + .calculate_witness_element::(inputs, false) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + println!("Witness generation took: {:.2?}", now.elapsed()); + + let now = std::time::Instant::now(); + //let zkey = zkey(); + let zkey = arkzkey(); + println!("Loading arkzkey took: {:.2?}", now.elapsed()); + + let public_inputs = full_assignment.as_slice()[1..zkey.1.num_instance_variables].to_vec(); + + let now = std::time::Instant::now(); + let ark_proof = Groth16::<_, CircomReduction>::create_proof_with_reduction_and_matrices( + &zkey.0, + r, + s, + &zkey.1, + zkey.1.num_instance_variables, + zkey.1.num_constraints, + full_assignment.as_slice(), + ); + + let proof = ark_proof.map_err(|e| MoproError::CircomError(e.to_string()))?; + + println!("proof generation took: {:.2?}", now.elapsed()); + + // TODO: Add SerializableInputs(inputs))) + Ok((SerializableProof(proof), SerializableInputs(public_inputs))) +} + +pub fn verify_proof2( + serialized_proof: SerializableProof, + serialized_inputs: SerializableInputs, +) -> Result { + let start = Instant::now(); + let zkey = arkzkey(); + let pvk = prepare_verifying_key(&zkey.0.vk); + + let proof_verified = + GrothBn::verify_with_processed_vk(&pvk, &serialized_inputs.0, &serialized_proof.0) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + let verification_duration = start.elapsed(); + println!("Verification time 2: {:?}", verification_duration); + Ok(proof_verified) +} + +impl CircomState { + pub fn new() -> Self { + Self { + builder: None, + circuit: None, + params: None, + } + } + + pub fn setup( + &mut self, + wasm_path: &str, + r1cs_path: &str, + ) -> Result { + assert_paths_exists(wasm_path, r1cs_path)?; + println!("Setup"); + let start = Instant::now(); + + // Load the WASM and R1CS for witness and proof generation + let cfg = self.load_config(wasm_path, r1cs_path)?; + + // Create an empty instance for setup + self.builder = Some(CircomBuilder::new(cfg)); + + // Run a trusted setup using the rng in the state + let params = self.run_trusted_setup()?; + + self.params = Some(params.clone()); + + let setup_duration = start.elapsed(); + println!("Setup time: {:?}", setup_duration); + + Ok(SerializableProvingKey(params)) + } + + // NOTE: Consider generate_proof> API + // XXX: BigInt might present problems for UniFFI + pub fn generate_proof( + &mut self, + inputs: CircuitInputs, + ) -> Result<(SerializableProof, SerializableInputs), MoproError> { + let start = Instant::now(); + println!("Generating proof"); + + let mut rng = thread_rng(); + + let builder = self.builder.as_mut().ok_or(MoproError::CircomError( + "Builder has not been set up".to_string(), + ))?; + + // Insert our inputs as key value pairs + for (key, values) in &inputs { + for value in values { + builder.push_input(&key, value.clone()); + } + } + + // Clone the builder, then build the circuit + let circom = builder + .clone() + .build() + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + // Update the circuit in self + self.circuit = Some(circom.clone()); + + let params = self.params.as_ref().ok_or(MoproError::CircomError( + "Parameters have not been set up".to_string(), + ))?; + + let inputs = circom.get_public_inputs().ok_or(MoproError::CircomError( + "Failed to get public inputs".to_string(), + ))?; + + let proof = GrothBn::prove(params, circom.clone(), &mut rng) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + let proof_duration = start.elapsed(); + println!("Proof generation time: {:?}", proof_duration); + + Ok((SerializableProof(proof), SerializableInputs(inputs))) + } + + pub fn verify_proof( + &self, + serialized_proof: SerializableProof, + serialized_inputs: SerializableInputs, + ) -> Result { + let start = Instant::now(); + + println!("Verifying proof"); + + let params = self.params.as_ref().ok_or(MoproError::CircomError( + "Parameters have not been set up".to_string(), + ))?; + + let pvk = + GrothBn::process_vk(¶ms.vk).map_err(|e| MoproError::CircomError(e.to_string()))?; + + let proof_verified = + GrothBn::verify_with_processed_vk(&pvk, &serialized_inputs.0, &serialized_proof.0) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + let verification_duration = start.elapsed(); + println!("Verification time: {:?}", verification_duration); + Ok(proof_verified) + } + + fn load_config( + &self, + wasm_path: &str, + r1cs_path: &str, + ) -> Result, MoproError> { + CircomConfig::::new(wasm_path, r1cs_path) + .map_err(|e| MoproError::CircomError(e.to_string())) + } + + fn run_trusted_setup(&mut self) -> Result, MoproError> { + let circom_setup = self + .builder + .as_mut() + .ok_or(MoproError::CircomError( + "Builder has not been set up".to_string(), + ))? + .setup(); + + let mut rng = thread_rng(); + + GrothBn::generate_random_parameters_with_reduction(circom_setup, &mut rng) + .map_err(|e| MoproError::CircomError(e.to_string())) + } +} + +// Helper function for Keccak256 example +pub fn bytes_to_circuit_inputs(bytes: &[u8]) -> CircuitInputs { + let bits = bytes_to_bits(bytes); + let big_int_bits = bits + .into_iter() + .map(|bit| BigInt::from(bit as u8)) + .collect(); + let mut inputs = HashMap::new(); + inputs.insert("in".to_string(), big_int_bits); + inputs +} + +pub fn strings_to_circuit_inputs(strings: &[&str]) -> Vec { + strings + .iter() + .map(|&value| BigInt::parse_bytes(value.as_bytes(), 10).unwrap()) + .collect() +} + +pub fn bytes_to_circuit_outputs(bytes: &[u8]) -> SerializableInputs { + let bits = bytes_to_bits(bytes); + let field_bits = bits.into_iter().map(|bit| Fr::from(bit as u8)).collect(); + SerializableInputs(field_bits) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_setup_prove_verify_simple() { + let wasm_path = "./examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm"; + let r1cs_path = "./examples/circom/multiplier2/target/multiplier2.r1cs"; + + // Instantiate CircomState + let mut circom_state = CircomState::new(); + + // Setup + let setup_res = circom_state.setup(wasm_path, r1cs_path); + assert!(setup_res.is_ok()); + + let _serialized_pk = setup_res.unwrap(); + + // Deserialize the proving key and inputs if necessary + + // Prepare inputs + let mut inputs = HashMap::new(); + let a = 3; + let b = 5; + let c = a * b; + inputs.insert("a".to_string(), vec![BigInt::from(a)]); + inputs.insert("b".to_string(), vec![BigInt::from(b)]); + // output = [public output c, public input a] + let expected_output = vec![Fr::from(c), Fr::from(a)]; + let serialized_outputs = SerializableInputs(expected_output); + + // Proof generation + let generate_proof_res = circom_state.generate_proof(inputs); + + // Check and print the error if there is one + if let Err(e) = &generate_proof_res { + println!("Error: {:?}", e); + } + + assert!(generate_proof_res.is_ok()); + + let (serialized_proof, serialized_inputs) = generate_proof_res.unwrap(); + + // Check output + assert_eq!(serialized_inputs, serialized_outputs); + + // Proof verification + let verify_res = circom_state.verify_proof(serialized_proof, serialized_inputs); + assert!(verify_res.is_ok()); + assert!(verify_res.unwrap()); // Verifying that the proof was indeed verified + } + + #[test] + fn test_setup_prove_verify_keccak() { + let wasm_path = + "./examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm"; + let r1cs_path = "./examples/circom/keccak256/target/keccak256_256_test.r1cs"; + + // Instantiate CircomState + let mut circom_state = CircomState::new(); + + // Setup + let setup_res = circom_state.setup(wasm_path, r1cs_path); + assert!(setup_res.is_ok()); + + let _serialized_pk = setup_res.unwrap(); + + // Deserialize the proving key and inputs if necessary + + // Prepare inputs + let input_vec = vec![ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ]; + + // Expected output + let expected_output_vec = vec![ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ]; + + let inputs = bytes_to_circuit_inputs(&input_vec); + let serialized_outputs = bytes_to_circuit_outputs(&expected_output_vec); + + // Proof generation + let generate_proof_res = circom_state.generate_proof(inputs); + + // Check and print the error if there is one + if let Err(e) = &generate_proof_res { + println!("Error: {:?}", e); + } + + assert!(generate_proof_res.is_ok()); + + let (serialized_proof, serialized_inputs) = generate_proof_res.unwrap(); + + // Check output + assert_eq!(serialized_inputs, serialized_outputs); + + // Proof verification + let verify_res = circom_state.verify_proof(serialized_proof, serialized_inputs); + assert!(verify_res.is_ok()); + + assert!(verify_res.unwrap()); // Verifying that the proof was indeed verified + } + + #[test] + fn test_setup_error() { + // Arrange: Create a new CircomState instance + let mut circom_state = CircomState::new(); + + let wasm_path = "badpath/multiplier2.wasm"; + let r1cs_path = "badpath/multiplier2.r1cs"; + + // Act: Call the setup method + let result = circom_state.setup(wasm_path, r1cs_path); + + // Assert: Check that the method returns an error + assert!(result.is_err()); + } + + #[cfg(feature = "dylib")] + #[test] + fn test_dylib_init_and_generate_witness() { + // Assumes that the dylib file has been built and is in the following location + let dylib_path = "target/debug/aarch64-apple-darwin/keccak256.dylib"; + + // Initialize libray + initialize(Path::new(&dylib_path)); + + let input_vec = vec![ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ]; + + let inputs = bytes_to_circuit_inputs(&input_vec); + let now = std::time::Instant::now(); + let full_assignment = witness_calculator() + .lock() + .expect("Failed to lock witness calculator") + .calculate_witness_element::(inputs, false) + .map_err(|e| MoproError::CircomError(e.to_string())); + + println!("Witness generation took: {:.2?}", now.elapsed()); + + assert!(full_assignment.is_ok()); + } + + #[test] + fn test_generate_proof2() { + // XXX: This can be done better + #[cfg(feature = "dylib")] + { + // Assumes that the dylib file has been built and is in the following location + let dylib_path = "target/debug/aarch64-apple-darwin/keccak256.dylib"; + + // Initialize libray + initialize(Path::new(&dylib_path)); + } + + let input_vec = vec![ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ]; + let expected_output_vec = vec![ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ]; + let inputs = bytes_to_circuit_inputs(&input_vec); + let serialized_outputs = bytes_to_circuit_outputs(&expected_output_vec); + + let generate_proof_res = generate_proof2(inputs); + let (serialized_proof, serialized_inputs) = generate_proof_res.unwrap(); + assert_eq!(serialized_inputs, serialized_outputs); + + // Proof verification + let verify_res = verify_proof2(serialized_proof, serialized_inputs); + assert!(verify_res.is_ok()); + assert!(verify_res.unwrap()); // Verifying that the proof was indeed verified + } + + #[ignore = "ignore for ci"] + #[test] + fn test_setup_prove_rsa() { + let wasm_path = "./examples/circom/rsa/target/main_js/main.wasm"; + let r1cs_path = "./examples/circom/rsa/target/main.r1cs"; + + // Instantiate CircomState + let mut circom_state = CircomState::new(); + + // Setup + let setup_res = circom_state.setup(wasm_path, r1cs_path); + assert!(setup_res.is_ok()); + + let _serialized_pk = setup_res.unwrap(); + + // Deserialize the proving key and inputs if necessary + + // Prepare inputs + let signature = [ + "3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493", + ]; + let modulus = [ + "13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501", + ]; + let base_message = [ + "18114495772705111902", + "2254271930739856077", + "2068851770", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + ]; + + let mut inputs: HashMap> = HashMap::new(); + inputs.insert( + "signature".to_string(), + strings_to_circuit_inputs(&signature), + ); + inputs.insert("modulus".to_string(), strings_to_circuit_inputs(&modulus)); + inputs.insert( + "base_message".to_string(), + strings_to_circuit_inputs(&base_message), + ); + + // Proof generation + let generate_proof_res = circom_state.generate_proof(inputs); + + // Check and print the error if there is one + if let Err(e) = &generate_proof_res { + println!("Error: {:?}", e); + } + + assert!(generate_proof_res.is_ok()); + + let (serialized_proof, serialized_inputs) = generate_proof_res.unwrap(); + + // Proof verification + let verify_res = circom_state.verify_proof(serialized_proof, serialized_inputs); + assert!(verify_res.is_ok()); + + assert!(verify_res.unwrap()); // Verifying that the proof was indeed verified + } + + #[ignore = "ignore for ci"] + #[test] + fn test_setup_prove_rsa2() { + // Prepare inputs + let signature = [ + "3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493", + ]; + let modulus = [ + "13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501", + ]; + let base_message = [ + "18114495772705111902", + "2254271930739856077", + "2068851770", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + ]; + + let mut inputs: HashMap> = HashMap::new(); + inputs.insert( + "signature".to_string(), + strings_to_circuit_inputs(&signature), + ); + inputs.insert("modulus".to_string(), strings_to_circuit_inputs(&modulus)); + inputs.insert( + "base_message".to_string(), + strings_to_circuit_inputs(&base_message), + ); + + // Proof generation + let generate_proof_res = generate_proof2(inputs); + + // Check and print the error if there is one + if let Err(e) = &generate_proof_res { + println!("Error: {:?}", e); + } + + assert!(generate_proof_res.is_ok()); + + let (serialized_proof, serialized_inputs) = generate_proof_res.unwrap(); + + // Proof verification + let verify_res = verify_proof2(serialized_proof, serialized_inputs); + assert!(verify_res.is_ok()); + + assert!(verify_res.unwrap()); // Verifying that the proof was indeed verified + } +} diff --git a/app/mopro-core/src/middleware/circom/serialization.rs b/app/mopro-core/src/middleware/circom/serialization.rs new file mode 100644 index 000000000..47fa40088 --- /dev/null +++ b/app/mopro-core/src/middleware/circom/serialization.rs @@ -0,0 +1,106 @@ +use ark_bn254::Bn254; +use ark_ec::pairing::Pairing; +use ark_groth16::{Proof, ProvingKey}; +use ark_serialize::{CanonicalDeserialize, CanonicalSerialize}; +use color_eyre::Result; + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug)] +pub struct SerializableProvingKey(pub ProvingKey); + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug)] +pub struct SerializableProof(pub Proof); + +#[derive(CanonicalSerialize, CanonicalDeserialize, Clone, Debug, PartialEq)] +pub struct SerializableInputs(pub Vec<::ScalarField>); + +pub fn serialize_proof(proof: &SerializableProof) -> Vec { + let mut serialized_data = Vec::new(); + proof + .serialize_uncompressed(&mut serialized_data) + .expect("Serialization failed"); + serialized_data +} + +pub fn deserialize_proof(data: Vec) -> SerializableProof { + SerializableProof::deserialize_uncompressed(&mut &data[..]).expect("Deserialization failed") +} + +pub fn serialize_proving_key(pk: &SerializableProvingKey) -> Vec { + let mut serialized_data = Vec::new(); + pk.serialize_uncompressed(&mut serialized_data) + .expect("Serialization failed"); + serialized_data +} + +pub fn deserialize_proving_key(data: Vec) -> SerializableProvingKey { + SerializableProvingKey::deserialize_uncompressed(&mut &data[..]) + .expect("Deserialization failed") +} + +pub fn serialize_inputs(inputs: &SerializableInputs) -> Vec { + let mut serialized_data = Vec::new(); + inputs + .serialize_uncompressed(&mut serialized_data) + .expect("Serialization failed"); + serialized_data +} + +pub fn deserialize_inputs(data: Vec) -> SerializableInputs { + SerializableInputs::deserialize_uncompressed(&mut &data[..]).expect("Deserialization failed") +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::middleware::circom::serialization::SerializableProvingKey; + use crate::middleware::circom::utils::assert_paths_exists; + use crate::MoproError; + use ark_bn254::Bn254; + use ark_circom::{CircomBuilder, CircomConfig}; + use ark_groth16::Groth16; + use ark_std::rand::thread_rng; + use color_eyre::Result; + + type GrothBn = Groth16; + + fn generate_serializable_proving_key( + wasm_path: &str, + r1cs_path: &str, + ) -> Result { + assert_paths_exists(wasm_path, r1cs_path)?; + + let cfg = CircomConfig::::new(wasm_path, r1cs_path) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + let builder = CircomBuilder::new(cfg); + let circom = builder.setup(); + + let mut rng = thread_rng(); + let raw_params = GrothBn::generate_random_parameters_with_reduction(circom, &mut rng) + .map_err(|e| MoproError::CircomError(e.to_string()))?; + + Ok(SerializableProvingKey(raw_params)) + } + + #[test] + fn test_serialization_deserialization() { + let wasm_path = "./examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm"; + let r1cs_path = "./examples/circom/multiplier2/target/multiplier2.r1cs"; + + // Generate a serializable proving key for testing + let serializable_pk = generate_serializable_proving_key(wasm_path, r1cs_path) + .expect("Failed to generate serializable proving key"); + + // Serialize + let serialized_data = serialize_proving_key(&serializable_pk); + + // Deserialize + let deserialized_pk = deserialize_proving_key(serialized_data); + + // Assert that the original and deserialized ProvingKeys are the same + assert_eq!( + serializable_pk.0, deserialized_pk.0, + "Original and deserialized proving keys do not match" + ); + } +} diff --git a/app/mopro-core/src/middleware/circom/utils.rs b/app/mopro-core/src/middleware/circom/utils.rs new file mode 100644 index 000000000..31d6122c0 --- /dev/null +++ b/app/mopro-core/src/middleware/circom/utils.rs @@ -0,0 +1,33 @@ +use crate::MoproError; + +use std::path::Path; + +pub fn assert_paths_exists(wasm_path: &str, r1cs_path: &str) -> Result<(), MoproError> { + // Check that the files exist - ark-circom should probably do this instead and not panic + if !Path::new(wasm_path).exists() { + return Err(MoproError::CircomError(format!( + "Path does not exist: {}", + wasm_path + ))); + } + + if !Path::new(r1cs_path).exists() { + return Err(MoproError::CircomError(format!( + "Path does not exist: {}", + r1cs_path + ))); + }; + + Ok(()) +} + +pub fn bytes_to_bits(bytes: &[u8]) -> Vec { + let mut bits = Vec::new(); + for &byte in bytes { + for j in 0..8 { + let bit = (byte >> j) & 1; + bits.push(bit == 1); + } + } + bits +} diff --git a/app/mopro-core/src/middleware/mod.rs b/app/mopro-core/src/middleware/mod.rs new file mode 100644 index 000000000..d18079a10 --- /dev/null +++ b/app/mopro-core/src/middleware/mod.rs @@ -0,0 +1 @@ +pub mod circom; diff --git a/app/mopro-ffi/.gitignore b/app/mopro-ffi/.gitignore new file mode 100644 index 000000000..8648243db --- /dev/null +++ b/app/mopro-ffi/.gitignore @@ -0,0 +1,18 @@ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb + +# kotlin generated file +jniLibs/ +src/uniffi/mopro/ \ No newline at end of file diff --git a/app/mopro-ffi/Cargo.toml b/app/mopro-ffi/Cargo.toml new file mode 100644 index 000000000..e8fbd1111 --- /dev/null +++ b/app/mopro-ffi/Cargo.toml @@ -0,0 +1,47 @@ +[package] +name = "mopro-ffi" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["lib", "cdylib", "staticlib"] +name = "mopro_ffi" + +[[bin]] +name = "uniffi-bindgen" +path = "uniffi-bindgen.rs" + +[features] +default = [] + +# If we enable dylib here it should be enabled in mopro-core as well +dylib = ["mopro-core/dylib"] + +[patch.crates-io] +# NOTE: Forked wasmer to work around memory limits +# See https://github.com/wasmerio/wasmer/commit/09c7070 +wasmer = { git = "https://github.com/oskarth/wasmer.git", rev = "09c7070" } + +[dependencies] +mopro-core = { path = "../mopro-core" } +uniffi = { version = "0.25", features = ["cli"] } +serde = { version = "1", features = ["derive"] } +bincode = "1" +ark-serialize = { version = "=0.4.1", features = ["derive"] } +num-bigint = { version = "=0.4.3", default-features = false, features = [ + "rand", +] } + +# Error handling +thiserror = "=1.0.39" +color-eyre = "=0.6.2" +criterion = "=0.3.6" + +[build-dependencies] +uniffi = { version = "0.25", features = ["build"] } + +[dev-dependencies] +uniffi = { version = "0.25", features = ["bindgen-tests"] } +ark-bn254 = { version = "=0.4.0" } diff --git a/app/mopro-ffi/Makefile b/app/mopro-ffi/Makefile new file mode 100644 index 000000000..072c25bb8 --- /dev/null +++ b/app/mopro-ffi/Makefile @@ -0,0 +1,16 @@ +TARGETS = x86_64-apple-ios aarch64-apple-ios aarch64-apple-ios-sim +BUILD_TYPES = debug release + +all: $(BUILD_TYPES) + +debug: $(TARGETS) + for target in $(TARGETS); do \ + cargo build --target $$target; \ + done + +release: + for target in $(TARGETS); do \ + cargo build --release --target $$target; \ + done + +.PHONY: all $(BUILD_TYPES) $(TARGETS) \ No newline at end of file diff --git a/app/mopro-ffi/README.md b/app/mopro-ffi/README.md new file mode 100644 index 000000000..ec8eb6e62 --- /dev/null +++ b/app/mopro-ffi/README.md @@ -0,0 +1,48 @@ +# mopro-ffi + +Thin wrapper around `mopro-core`, exposes UniFFI bindings to be used by `rust-ios`, etc. + +## Overview + +TBD. + +## Development + +### Prerequisites + +1. Ensure you have Rust installed +2. Add platform targets `rustup target add x86_64-apple-ios aarch64-apple-ios aarch64-apple-ios-sim` +3. Install `uniffi-bindgen` locally with `cargo install --bin uniffi-bindgen --path .` +4. In order to locally run the bindings tests, you will need + * Kotlin: + * `kotlinc`, the [Kotlin command-line compiler](https://kotlinlang.org/docs/command-line.html). + * `ktlint`, the [Kotlin linter used to format the generated bindings](https://ktlint.github.io/). + * The [Java Native Access](https://github.com/java-native-access/jna#download) JAR downloaded and its path + added to your `$CLASSPATH` environment variable. + * Swift: + * `swift` and `swiftc`, the [Swift command-line tools](https://swift.org/download/). + * The Swift `Foundation` package. + +### Platforms supported + +Currently iOS is the main target, but Android will soon follow. PRs welcome. + +### Building + +Run `make` to build debug and release static libraries for supported platforms. + +### Generate UniFFI bindings + +The following command generates Swift bindings: + +`uniffi-bindgen generate src/mopro.udl --language swift --out-dir target/SwiftBindings` + +## Test bindings + +To test bindings: + +`cargo test --test test_generated_bindings` + +To test bindings in release mode without warning: + +`cargo test --test test_generated_bindings --release 2>/dev/null` diff --git a/app/mopro-ffi/build.rs b/app/mopro-ffi/build.rs new file mode 100644 index 000000000..ca4b249f7 --- /dev/null +++ b/app/mopro-ffi/build.rs @@ -0,0 +1,3 @@ +fn main() { + uniffi::generate_scaffolding("src/mopro.udl").expect("Building the UDL file failed"); +} diff --git a/app/mopro-ffi/src/lib.rs b/app/mopro-ffi/src/lib.rs new file mode 100644 index 000000000..94c5c9b1b --- /dev/null +++ b/app/mopro-ffi/src/lib.rs @@ -0,0 +1,295 @@ +use mopro_core::middleware::circom; +use mopro_core::MoproError; + +use num_bigint::BigInt; +use std::collections::HashMap; +use std::path::Path; +use std::str::FromStr; +use std::sync::RwLock; + +#[derive(Debug)] +pub enum FFIError { + MoproError(mopro_core::MoproError), + SerializationError(String), +} + +#[derive(Debug, Clone)] +pub struct GenerateProofResult { + pub proof: Vec, + pub inputs: Vec, +} + +// NOTE: Make UniFFI and Rust happy, can maybe do some renaming here +#[allow(non_snake_case)] +#[derive(Debug, Clone)] +pub struct SetupResult { + pub provingKey: Vec, +} + +// pub inputs: Vec, + +impl From for FFIError { + fn from(error: mopro_core::MoproError) -> Self { + FFIError::MoproError(error) + } +} + +pub struct MoproCircom { + state: RwLock, +} + +impl Default for MoproCircom { + fn default() -> Self { + Self::new() + } +} + +#[cfg(not(feature = "dylib"))] +pub fn initialize_mopro() -> Result<(), MoproError> { + // TODO: Error handle / panic? + circom::initialize(); + Ok(()) +} + +#[cfg(feature = "dylib")] +pub fn initialize_mopro() -> Result<(), MoproError> { + println!("need to use dylib to init!"); + panic!("need to use dylib to init!"); +} + +#[cfg(feature = "dylib")] +pub fn initialize_mopro_dylib(dylib_path: String) -> Result<(), MoproError> { + // TODO: Error handle / panic? + let dylib_path = Path::new(dylib_path.as_str()); + circom::initialize(dylib_path); + Ok(()) +} + +#[cfg(not(feature = "dylib"))] +pub fn initialize_mopro_dylib(dylib_path: String) -> Result<(), MoproError> { + println!("dylib feature not enabled!"); + panic!("dylib feature not enabled!"); +} + +pub fn generate_proof2( + inputs: HashMap>, +) -> Result { + // Convert inputs to BigInt + let bigint_inputs = inputs + .into_iter() + .map(|(k, v)| { + ( + k, + v.into_iter() + .map(|i| BigInt::from_str(&i).unwrap()) + .collect(), + ) + }) + .collect(); + + let (proof, inputs) = circom::generate_proof2(bigint_inputs)?; + + let serialized_proof = circom::serialization::serialize_proof(&proof); + let serialized_inputs = circom::serialization::serialize_inputs(&inputs); + Ok(GenerateProofResult { + proof: serialized_proof, + inputs: serialized_inputs, + }) +} + +pub fn verify_proof2(proof: Vec, public_input: Vec) -> Result { + let deserialized_proof = circom::serialization::deserialize_proof(proof); + let deserialized_public_input = circom::serialization::deserialize_inputs(public_input); + let is_valid = circom::verify_proof2(deserialized_proof, deserialized_public_input)?; + Ok(is_valid) +} + +// TODO: Use FFIError::SerializationError instead +impl MoproCircom { + pub fn new() -> Self { + Self { + state: RwLock::new(circom::CircomState::new()), + } + } + + pub fn setup(&self, wasm_path: String, r1cs_path: String) -> Result { + let mut state_guard = self.state.write().unwrap(); + let pk = state_guard.setup(wasm_path.as_str(), r1cs_path.as_str())?; + Ok(SetupResult { + provingKey: circom::serialization::serialize_proving_key(&pk), + }) + } + + // inputs: circom::serialization::serialize_inputs(&inputs), + + pub fn generate_proof( + &self, + inputs: HashMap>, + ) -> Result { + let mut state_guard = self.state.write().unwrap(); + + // Convert inputs to BigInt + let bigint_inputs = inputs + .into_iter() + .map(|(k, v)| { + ( + k, + v.into_iter() + .map(|i| BigInt::from_str(&i).unwrap()) + .collect(), + ) + }) + .collect(); + + let (proof, inputs) = state_guard.generate_proof(bigint_inputs)?; + + Ok(GenerateProofResult { + proof: circom::serialization::serialize_proof(&proof), + inputs: circom::serialization::serialize_inputs(&inputs), + }) + } + + pub fn verify_proof(&self, proof: Vec, public_input: Vec) -> Result { + let state_guard = self.state.read().unwrap(); + let deserialized_proof = circom::serialization::deserialize_proof(proof); + let deserialized_public_input = circom::serialization::deserialize_inputs(public_input); + let is_valid = state_guard.verify_proof(deserialized_proof, deserialized_public_input)?; + Ok(is_valid) + } +} + +fn add(a: u32, b: u32) -> u32 { + a + b +} + +fn hello() -> String { + "Hello World from Rust".to_string() +} + +// TODO: Remove me +// UniFFI expects String type +// See https://mozilla.github.io/uniffi-rs/udl/builtin_types.html +// fn run_example(wasm_path: String, r1cs_path: String) -> Result<(), MoproError> { +// circom::run_example(wasm_path.as_str(), r1cs_path.as_str()) +// } + +uniffi::include_scaffolding!("mopro"); + +#[cfg(test)] +mod tests { + use super::*; + use ark_bn254::Fr; + use num_bigint::BigUint; + + fn bytes_to_circuit_inputs(input_vec: &Vec) -> HashMap> { + let bits = circom::utils::bytes_to_bits(&input_vec); + let converted_vec: Vec = bits + .into_iter() + .map(|bit| (bit as i32).to_string()) + .collect(); + let mut inputs = HashMap::new(); + inputs.insert("in".to_string(), converted_vec); + inputs + } + + fn bytes_to_circuit_outputs(bytes: &[u8]) -> Vec { + let bits = circom::utils::bytes_to_bits(bytes); + let field_bits = bits.into_iter().map(|bit| Fr::from(bit as u8)).collect(); + let circom_outputs = circom::serialization::SerializableInputs(field_bits); + circom::serialization::serialize_inputs(&circom_outputs) + } + + #[test] + fn add_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } + + #[test] + fn test_end_to_end() -> Result<(), MoproError> { + // Paths to your wasm and r1cs files + let wasm_path = + "./../mopro-core/examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm"; + let r1cs_path = "./../mopro-core/examples/circom/multiplier2/target/multiplier2.r1cs"; + + // Create a new MoproCircom instance + let mopro_circom = MoproCircom::new(); + + // Step 1: Setup + let setup_result = mopro_circom.setup(wasm_path.to_string(), r1cs_path.to_string())?; + assert!(setup_result.provingKey.len() > 0); + + let mut inputs = HashMap::new(); + let a = BigUint::from_str( + "21888242871839275222246405745257275088548364400416034343698204186575808495616", + ) + .unwrap(); + let b = BigUint::from(1u8); + let c = a.clone() * b.clone(); + inputs.insert("a".to_string(), vec![a.to_string()]); + inputs.insert("b".to_string(), vec![b.to_string()]); + // output = [public output c, public input a] + let expected_output = vec![Fr::from(c), Fr::from(a)]; + let circom_outputs = circom::serialization::SerializableInputs(expected_output); + let serialized_outputs = circom::serialization::serialize_inputs(&circom_outputs); + + // Step 2: Generate Proof + let generate_proof_result = mopro_circom.generate_proof(inputs)?; + let serialized_proof = generate_proof_result.proof; + let serialized_inputs = generate_proof_result.inputs; + + assert!(serialized_proof.len() > 0); + assert_eq!(serialized_inputs, serialized_outputs); + + // Step 3: Verify Proof + let is_valid = mopro_circom.verify_proof(serialized_proof, serialized_inputs)?; + assert!(is_valid); + + Ok(()) + } + + #[test] + fn test_end_to_end_keccak() -> Result<(), MoproError> { + // Paths to your wasm and r1cs files + let wasm_path = + "./../mopro-core/examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm"; + let r1cs_path = "./../mopro-core/examples/circom/keccak256/target/keccak256_256_test.r1cs"; + + // Create a new MoproCircom instance + let mopro_circom = MoproCircom::new(); + + // Step 1: Setup + let setup_result = mopro_circom.setup(wasm_path.to_string(), r1cs_path.to_string())?; + assert!(setup_result.provingKey.len() > 0); + + // Prepare inputs + let input_vec = vec![ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ]; + + // Expected output + let expected_output_vec = vec![ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ]; + + let inputs = bytes_to_circuit_inputs(&input_vec); + let serialized_outputs = bytes_to_circuit_outputs(&expected_output_vec); + + // Step 2: Generate Proof + let generate_proof_result = mopro_circom.generate_proof(inputs)?; + let serialized_proof = generate_proof_result.proof; + let serialized_inputs = generate_proof_result.inputs; + + assert!(serialized_proof.len() > 0); + assert_eq!(serialized_inputs, serialized_outputs); + + // Step 3: Verify Proof + + let is_valid = mopro_circom.verify_proof(serialized_proof, serialized_inputs)?; + assert!(is_valid); + + Ok(()) + } +} diff --git a/app/mopro-ffi/src/mopro.udl b/app/mopro-ffi/src/mopro.udl new file mode 100644 index 000000000..875a5b1b8 --- /dev/null +++ b/app/mopro-ffi/src/mopro.udl @@ -0,0 +1,43 @@ +namespace mopro { + u32 add(u32 a, u32 b); + string hello(); + + [Throws=MoproError] + void initialize_mopro(); + + [Throws=MoproError] + void initialize_mopro_dylib(string dylib_path); + + [Throws=MoproError] + GenerateProofResult generate_proof2(record> circuit_inputs); + + [Throws=MoproError] + boolean verify_proof2(bytes proof, bytes public_input); +}; + +dictionary SetupResult { + bytes provingKey; +}; + +dictionary GenerateProofResult { + bytes proof; + bytes inputs; +}; + +[Error] +enum MoproError { + "CircomError", +}; + +interface MoproCircom { + constructor(); + + [Throws=MoproError] + SetupResult setup(string wasm_path, string r1cs_path); + + [Throws=MoproError] + GenerateProofResult generate_proof(record> circuit_inputs); + + [Throws=MoproError] + boolean verify_proof(bytes proof, bytes public_input); +}; diff --git a/app/mopro-ffi/tests/bindings/test_mopro.kts b/app/mopro-ffi/tests/bindings/test_mopro.kts new file mode 100644 index 000000000..838e72fe2 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro.kts @@ -0,0 +1,21 @@ +import uniffi.mopro.* + +var wasmPath = "../mopro-core/examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm" +var r1csPath = "../mopro-core/examples/circom/multiplier2/target/multiplier2.r1cs" + +try { + var moproCircom = MoproCircom() + var setupResult = moproCircom.setup(wasmPath, r1csPath) + assert(setupResult.provingKey.size > 0) { "Proving key should not be empty" } + + val inputs = mutableMapOf>() + inputs["a"] = listOf("3") + inputs["b"] = listOf("5") + + var generateProofResult = moproCircom.generateProof(inputs) + assert(generateProofResult.proof.size > 0) { "Proof is empty" } + var isValid = moproCircom.verifyProof(generateProofResult.proof, generateProofResult.inputs) + assert(isValid) { "Proof is invalid" } +} catch (e: Exception) { + println(e) +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro.swift b/app/mopro-ffi/tests/bindings/test_mopro.swift new file mode 100644 index 000000000..7193618a7 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro.swift @@ -0,0 +1,65 @@ +import mopro +import Foundation + +let moproCircom = MoproCircom() + +let wasmPath = "./../../../../mopro-core/examples/circom/multiplier2/target/multiplier2_js/multiplier2.wasm" +let r1csPath = "./../../../../mopro-core/examples/circom/multiplier2/target/multiplier2.r1cs" + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} + +do { + // Setup + let setupResult = try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath) + assert(!setupResult.provingKey.isEmpty, "Proving key should not be empty") + + // Prepare inputs + var inputs = [String: [String]]() + let a = 3 + let b = 5 + let c = a*b + inputs["a"] = [String(a)] + inputs["b"] = [String(b)] + + // Expected outputs + let outputs: [String] = [String(c), String(a)] + let expectedOutput: [UInt8] = serializeOutputs(outputs) + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Verify Proof + assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + let isValid = try moproCircom.verifyProof(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + assert(isValid, "Proof verification should succeed") + +} catch let error as MoproError { + print("MoproError: \(error)") +} catch { + print("Unexpected error: \(error)") +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_keccak.kts b/app/mopro-ffi/tests/bindings/test_mopro_keccak.kts new file mode 100644 index 000000000..5fb5b30a8 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_keccak.kts @@ -0,0 +1,279 @@ +import uniffi.mopro.* + +var wasmPath = + "../mopro-core/examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm" +var r1csPath = "../mopro-core/examples/circom/keccak256/target/keccak256_256_test.r1cs" + +try { + var moproCircom = MoproCircom() + var setupResult = moproCircom.setup(wasmPath, r1csPath) + assert(setupResult.provingKey.size > 0) { "Proving key should not be empty" } + + val inputs = mutableMapOf>() + inputs["in"] = + listOf( + "0", + "0", + "1", + "0", + "1", + "1", + "1", + "0", + "1", + "0", + "1", + "0", + "0", + "1", + "1", + "0", + "1", + "1", + "0", + "0", + "1", + "1", + "1", + "0", + "0", + "0", + "1", + "0", + "1", + "1", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ) + + var generateProofResult = moproCircom.generateProof(inputs) + assert(generateProofResult.proof.size > 0) { "Proof is empty" } + var isValid = moproCircom.verifyProof(generateProofResult.proof, generateProofResult.inputs) + assert(isValid) { "Proof is invalid" } +} catch (e: Exception) { + println(e) +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_keccak.swift b/app/mopro-ffi/tests/bindings/test_mopro_keccak.swift new file mode 100644 index 000000000..2ca7dc476 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_keccak.swift @@ -0,0 +1,82 @@ +import mopro +import Foundation + +let moproCircom = MoproCircom() + +let wasmPath = "./../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm" +let r1csPath = "./../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test.r1cs" + +// Helper function to convert bytes to bits +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} + +do { + // Setup + let setupResult = try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath) + assert(!setupResult.provingKey.isEmpty, "Proving key should not be empty") + + // Prepare inputs + let inputVec: [UInt8] = [ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ] + let bits = bytesToBits(bytes: inputVec) + var inputs = [String: [String]]() + inputs["in"] = bits + + // Expected outputs + let outputVec: [UInt8] = [ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ] + let outputBits: [String] = bytesToBits(bytes: outputVec) + let expectedOutput: [UInt8] = serializeOutputs(outputBits) + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Verify Proof + assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + let isValid = try moproCircom.verifyProof(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + assert(isValid, "Proof verification should succeed") + +} catch let error as MoproError { + print("MoproError: \(error)") +} catch { + print("Unexpected error: \(error)") +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_keccak2.kts b/app/mopro-ffi/tests/bindings/test_mopro_keccak2.kts new file mode 100644 index 000000000..832628df9 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_keccak2.kts @@ -0,0 +1,273 @@ +import uniffi.mopro.* + +try { + initializeMopro() + + val inputs = mutableMapOf>() + inputs["in"] = + listOf( + "0", + "0", + "1", + "0", + "1", + "1", + "1", + "0", + "1", + "0", + "1", + "0", + "0", + "1", + "1", + "0", + "1", + "1", + "0", + "0", + "1", + "1", + "1", + "0", + "0", + "0", + "1", + "0", + "1", + "1", + "1", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ) + + var generateProofResult = generateProof2(inputs) + assert(generateProofResult.proof.size > 0) { "Proof is empty" } + var isValid = verifyProof2(generateProofResult.proof, generateProofResult.inputs) + assert(isValid) { "Proof is invalid" } +} catch (e: Exception) { + println(e) +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_keccak2.swift b/app/mopro-ffi/tests/bindings/test_mopro_keccak2.swift new file mode 100644 index 000000000..a489bc98c --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_keccak2.swift @@ -0,0 +1,86 @@ +import Foundation +import mopro + +//let moproCircom = MoproCircom() + +// Using zkey and generate_proof2 + +// let wasmPath = "./../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test_js/keccak256_256_test.wasm" +// let r1csPath = "./../../../../mopro-core/examples/circom/keccak256/target/keccak256_256_test.r1cs" + +// Helper function to convert bytes to bits +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} + +do { + // // Setup + // let setupResult = try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath) + // assert(!setupResult.provingKey.isEmpty, "Proving key should not be empty") + + // Prepare inputs + let inputVec: [UInt8] = [ + 116, 101, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + ] + let bits = bytesToBits(bytes: inputVec) + var inputs = [String: [String]]() + inputs["in"] = bits + + // Expected outputs + let outputVec: [UInt8] = [ + 37, 17, 98, 135, 161, 178, 88, 97, 125, 150, 143, 65, 228, 211, 170, 133, 153, 9, 88, + 212, 4, 212, 175, 238, 249, 210, 214, 116, 170, 85, 45, 21, + ] + let outputBits: [String] = bytesToBits(bytes: outputVec) + let expectedOutput: [UInt8] = serializeOutputs(outputBits) + + // // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + // let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // // Verify Proof + assert(Data(expectedOutput) == generateProofResult.inputs, "Circuit outputs mismatch the expected outputs") + + let isValid = try verifyProof2( + proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + assert(isValid, "Proof verification should succeed") + +} catch let error as MoproError { + print("MoproError: \(error)") +} catch { + print("Unexpected error: \(error)") +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_rsa.kts b/app/mopro-ffi/tests/bindings/test_mopro_rsa.kts new file mode 100644 index 000000000..15e770f08 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_rsa.kts @@ -0,0 +1,115 @@ +import uniffi.mopro.*; + +var wasmPath = "../mopro-core/examples/circom/rsa/target/main_js/main.wasm" +var r1csPath = "../mopro-core/examples/circom/rsa/target/main.r1cs" + +try { + var moproCircom = MoproCircom() + var setupResult = moproCircom.setup(wasmPath, r1csPath) + assert(setupResult.provingKey.size > 0) { "Proving key should not be empty"} + + val inputs = mutableMapOf>() + inputs["signature"] = listOf("3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493") + inputs["modulus"] = listOf("13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501",) + inputs["base_message"] = listOf("18114495772705111902", + "2254271930739856077", + "2068851770", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0",) + + var generateProofResult = moproCircom.generateProof(inputs) + assert(generateProofResult.proof.size > 0) { "Proof is empty"} + var isValid = moproCircom.verifyProof(generateProofResult.proof, generateProofResult.inputs) + assert(isValid) { "Proof is invalid"} +} catch (e: Exception) { + println(e); +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_rsa.swift b/app/mopro-ffi/tests/bindings/test_mopro_rsa.swift new file mode 100644 index 000000000..917fbbe0f --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_rsa.swift @@ -0,0 +1,174 @@ +import mopro +import Foundation + +let moproCircom = MoproCircom() + +let wasmPath = "./../../../../mopro-core/examples/circom/rsa/target/main_js/main.wasm" +let r1csPath = "./../../../../mopro-core/examples/circom/rsa/target/main.r1cs" + +// Helper function to convert bytes to bits +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} + +do { + // Setup + let setupResult = try moproCircom.setup(wasmPath: wasmPath, r1csPath: r1csPath) + assert(!setupResult.provingKey.isEmpty, "Proving key should not be empty") + + // Prepare inputs + let signature: [String] = [ + "3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493", + ] + + let modulus: [String] = [ + "13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501", + ] + let base_message: [String] = [ + "18114495772705111902", + "2254271930739856077", + "2068851770", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + ] + + var inputs = [String: [String]]() + inputs["signature"] = signature; + inputs["modulus"] = modulus; + inputs["base_message"] = base_message; + + + // Generate Proof + let generateProofResult = try moproCircom.generateProof(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Verifying the Proof + let isValid = try moproCircom.verifyProof(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + assert(isValid, "Proof verification should succeed") + +} catch let error as MoproError { + print("MoproError: \(error)") +} catch { + print("Unexpected error: \(error)") +} diff --git a/app/mopro-ffi/tests/bindings/test_mopro_rsa2.swift b/app/mopro-ffi/tests/bindings/test_mopro_rsa2.swift new file mode 100644 index 000000000..70998bd08 --- /dev/null +++ b/app/mopro-ffi/tests/bindings/test_mopro_rsa2.swift @@ -0,0 +1,167 @@ +import mopro +import Foundation + +// Helper function to convert bytes to bits +func bytesToBits(bytes: [UInt8]) -> [String] { + var bits = [String]() + for byte in bytes { + for j in 0..<8 { + let bit = (byte >> j) & 1 + bits.append(String(bit)) + } + } + return bits +} + +func serializeOutputs(_ stringArray: [String]) -> [UInt8] { + var bytesArray: [UInt8] = [] + let length = stringArray.count + var littleEndianLength = length.littleEndian + let targetLength = 32 + withUnsafeBytes(of: &littleEndianLength) { + bytesArray.append(contentsOf: $0) + } + for value in stringArray { + // TODO: should handle 254-bit input + var littleEndian = Int32(value)!.littleEndian + var byteLength = 0 + withUnsafeBytes(of: &littleEndian) { + bytesArray.append(contentsOf: $0) + byteLength = byteLength + $0.count + } + if byteLength < targetLength { + let paddingCount = targetLength - byteLength + let paddingArray = [UInt8](repeating: 0, count: paddingCount) + bytesArray.append(contentsOf: paddingArray) + } + } + return bytesArray +} + +do { + // Initialize + try initializeMopro() + + // Prepare inputs + let signature: [String] = [ + "3582320600048169363", + "7163546589759624213", + "18262551396327275695", + "4479772254206047016", + "1970274621151677644", + "6547632513799968987", + "921117808165172908", + "7155116889028933260", + "16769940396381196125", + "17141182191056257954", + "4376997046052607007", + "17471823348423771450", + "16282311012391954891", + "70286524413490741", + "1588836847166444745", + "15693430141227594668", + "13832254169115286697", + "15936550641925323613", + "323842208142565220", + "6558662646882345749", + "15268061661646212265", + "14962976685717212593", + "15773505053543368901", + "9586594741348111792", + "1455720481014374292", + "13945813312010515080", + "6352059456732816887", + "17556873002865047035", + "2412591065060484384", + "11512123092407778330", + "8499281165724578877", + "12768005853882726493", + ] + + let modulus: [String] = [ + "13792647154200341559", + "12773492180790982043", + "13046321649363433702", + "10174370803876824128", + "7282572246071034406", + "1524365412687682781", + "4900829043004737418", + "6195884386932410966", + "13554217876979843574", + "17902692039595931737", + "12433028734895890975", + "15971442058448435996", + "4591894758077129763", + "11258250015882429548", + "16399550288873254981", + "8246389845141771315", + "14040203746442788850", + "7283856864330834987", + "12297563098718697441", + "13560928146585163504", + "7380926829734048483", + "14591299561622291080", + "8439722381984777599", + "17375431987296514829", + "16727607878674407272", + "3233954801381564296", + "17255435698225160983", + "15093748890170255670", + "15810389980847260072", + "11120056430439037392", + "5866130971823719482", + "13327552690270163501", + ] + let base_message: [String] = [ + "18114495772705111902", + "2254271930739856077", + "2068851770", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + ] + + var inputs = [String: [String]]() + inputs["signature"] = signature; + inputs["modulus"] = modulus; + inputs["base_message"] = base_message; + + // Generate Proof + let generateProofResult = try generateProof2(circuitInputs: inputs) + assert(!generateProofResult.proof.isEmpty, "Proof should not be empty") + + // Verifying the Proof + let isValid = try verifyProof2(proof: generateProofResult.proof, publicInput: generateProofResult.inputs) + assert(isValid, "Proof verification should succeed") + +} catch let error as MoproError { + print("MoproError: \(error)") +} catch { + print("Unexpected error: \(error)") +} diff --git a/app/mopro-ffi/tests/test_generated_bindings.rs b/app/mopro-ffi/tests/test_generated_bindings.rs new file mode 100644 index 000000000..d88f82a2c --- /dev/null +++ b/app/mopro-ffi/tests/test_generated_bindings.rs @@ -0,0 +1,13 @@ +uniffi::build_foreign_language_testcases!( + "tests/bindings/test_mopro.swift", + "tests/bindings/test_mopro.kts", + // "tests/bindings/test_mopro.rb", + // "tests/bindings/test_mopro.py", + "tests/bindings/test_mopro_keccak.swift", + // "tests/bindings/test_mopro_keccak.kts", // FIXME: java.lang.OutOfMemoryError: Java heap space + "tests/bindings/test_mopro_keccak2.swift", + "tests/bindings/test_mopro_keccak2.kts", + "tests/bindings/test_mopro_rsa.swift", + // "tests/bindings/test_mopro_rsa.kts", // FIXME: java.lang.OutOfMemoryError: Java heap space + // "tests/bindings/test_mopro_rsa2.swift", +); diff --git a/app/mopro-ffi/uniffi-bindgen.rs b/app/mopro-ffi/uniffi-bindgen.rs new file mode 100644 index 000000000..f6cff6cf1 --- /dev/null +++ b/app/mopro-ffi/uniffi-bindgen.rs @@ -0,0 +1,3 @@ +fn main() { + uniffi::uniffi_bindgen_main() +} diff --git a/app/mopro-ffi/uniffi.toml b/app/mopro-ffi/uniffi.toml new file mode 100644 index 000000000..f14925e0c --- /dev/null +++ b/app/mopro-ffi/uniffi.toml @@ -0,0 +1,2 @@ +[bindings.swift] +module_name = "mopro" diff --git a/app/scripts/build_android_module.sh b/app/scripts/build_android_module.sh new file mode 100755 index 000000000..3e72789df --- /dev/null +++ b/app/scripts/build_android_module.sh @@ -0,0 +1,26 @@ +mkdir -p ark-circom-passport/passport +cp ../circuits/build/proof_of_passport_final.zkey ark-circom-passport/passport/ +echo "copied proof_of_passport_final.zkey to ark-circom-passport" + +ARCHITECTURE="aarch64-linux-android" + +# Check for target support +check_target_support() { + rustup target list | grep installed | grep -q "$1" +} + +# check target is installed +if ! check_target_support $ARCHITECTURE; then + rustup target add $ARCHITECTURE +else + echo "Target $ARCHITECTURE already installed, skipping." +fi + +cd android +./gradlew clean +./gradlew cargoBuild +cd .. + +mkdir -p android/react-native-passport-reader/android/src/main/jniLibs/arm64/ + cp ark-circom-passport/target/aarch64-linux-android/release/libark_circom_passport.so android/react-native-passport-reader/android/src/main/jniLibs/arm64/ + echo copied release version of android lib to android/ \ No newline at end of file diff --git a/app/scripts/build_ios_module.sh b/app/scripts/build_ios_module.sh new file mode 100755 index 000000000..d081ad0f4 --- /dev/null +++ b/app/scripts/build_ios_module.sh @@ -0,0 +1,65 @@ + +ARCHITECTURE="aarch64-apple-ios" # or "x86_64-apple-ios" for "x86_64", "aarch64-apple-ios-sim" for simulator +LIB_DIR="release" # or "debug" +PROJECT_DIR=$(pwd) + +# Assert we're in the /app dir +if [[ ! -d "mopro-ffi" || ! -d "mopro-core" || ! -d "ark-zkey" ]]; then + echo -e "${RED}Error: This script must be run from the /app dir that contains mopro-ffi, mopro-core and ark-zkey folders.${DEFAULT}" + exit 1 +fi + +# Check for target support +check_target_support() { + rustup target list | grep installed | grep -q "$1" +} + +# Install arkzkey-util binary in ark-zkey +cd ark-zkey +echo "[ark-zkey] Installing arkzkey-util..." +if ! command -v arkzkey-util &> /dev/null +then + cargo install --bin arkzkey-util --path . +else + echo "arkzkey-util already installed, skipping." +fi +cd .. + +# check target is installed +if ! check_target_support $ARCHITECTURE; then + rustup target add $ARCHITECTURE +else + echo "Target $ARCHITECTURE already installed, skipping." +fi + + +# generate ark-zkey +cd ../circuits/build +arkzkey-util proof_of_passport_final.zkey +echo "arkzkey file generation done, arkzkey file is in $(pwd)/proof_of_passport_final.arkzkey" + +cd ../../app/mopro-core +cargo build --release + +cd ../mopro-ffi +echo "Building mopro-ffi static library..." +cargo build --release --target ${ARCHITECTURE} +cp target/${ARCHITECTURE}/${LIB_DIR}/libmopro_ffi.a ../ios/MoproKit/Libs/ +echo "copied libmopro_ffi.a to ios/Moprokit/Libs/" + + +# TODO: if functions signatures change, we have to rebuild the bindings by adapting theses lines: +# cd .. +# Install uniffi-bindgen binary in mopro-ffi +# echo "[ffi] Installing uniffi-bindgen..." +# if ! command -v uniffi-bindgen &> /dev/null +# then +# cargo install --bin uniffi-bindgen --path . +# else +# echo "uniffi-bindgen already installed, skipping." +# fi +# echo "Updating mopro-ffi bindings and library..." +# uniffi-bindgen generate mopro-ffi/src/mopro.udl --language swift --out-dir ${TARGET_DIR}/SwiftBindings +# cp ${TARGET_DIR}/SwiftBindings/moproFFI.h ${MOPROKIT_DIR}/Include/ +# cp ${TARGET_DIR}/SwiftBindings/mopro.swift ${MOPROKIT_DIR}/Bindings/ +# cp ${TARGET_DIR}/SwiftBindings/moproFFI.modulemap ${MOPROKIT_DIR}/Resources/ diff --git a/app/scripts/build_rust.sh b/app/scripts/build_rust.sh deleted file mode 100755 index 01021a29a..000000000 --- a/app/scripts/build_rust.sh +++ /dev/null @@ -1,10 +0,0 @@ -cd ../android - -./gradlew clean -./gradlew cargoBuild - -cd .. - -mkdir -p android/react-native-passport-reader/android/src/main/jniLibs/arm64/ - cp ark-circom-passport/target/aarch64-linux-android/release/libark_circom_passport.so android/react-native-passport-reader/android/src/main/jniLibs/arm64/ - echo copied release version \ No newline at end of file diff --git a/app/scripts/download_current_zkey.sh b/app/scripts/download_current_zkey.sh new file mode 100755 index 000000000..9d4f17be4 --- /dev/null +++ b/app/scripts/download_current_zkey.sh @@ -0,0 +1,4 @@ +mkdir -p ../circuits/build +cd ../circuits/build +wget https://current-pop-zkey.s3.eu-north-1.amazonaws.com/proof_of_passport_final.zkey # ios +cd ../../app \ No newline at end of file diff --git a/app/src/components/CustomButton.tsx b/app/src/components/CustomButton.tsx index cdb58b8c8..eb5b31850 100644 --- a/app/src/components/CustomButton.tsx +++ b/app/src/components/CustomButton.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { TouchableOpacity, Text, StyleSheet } from 'react-native'; -const Button = ({ onPress, title }) => { +const CustomButton = ({ onPress, title }) => { return ( {title} @@ -37,4 +37,4 @@ const styles = StyleSheet.create({ }, }); -export default Button; +export default CustomButton; diff --git a/app/src/screens/EnterDetailsScreen.tsx b/app/src/screens/EnterDetailsScreen.tsx index 5b3676000..059ef30fd 100644 --- a/app/src/screens/EnterDetailsScreen.tsx +++ b/app/src/screens/EnterDetailsScreen.tsx @@ -3,11 +3,11 @@ import React, {useState} from 'react'; import { View, Text, StyleSheet } from 'react-native'; import CustomTextInput from '../components/CustomTextInput'; -import Button from '../components/CustomButton'; +import CustomButton from '../components/CustomButton'; import { ToggleGroup } from 'tamagui' import { AlignCenter, AlignLeft, AlignRight, Camera } from '@tamagui/lucide-icons' -import { XStack, YStack } from 'tamagui' import { SizableText, Tabs, H5 } from 'tamagui' +import { XStack, YStack, Button } from 'tamagui' const EnterDetailsScreen = ({ passportNumber, @@ -82,6 +82,7 @@ const styles = StyleSheet.create({ justifyContent: 'center', alignItems: 'center', backgroundColor: 'white', + paddingBottom:20, }, header: { fontSize: 22, diff --git a/circuits/circuits/helpers/LICENSE b/circuits/LICENSE similarity index 100% rename from circuits/circuits/helpers/LICENSE rename to circuits/LICENSE diff --git a/circuits/README.md b/circuits/README.md index 6d6204a30..7bc86875d 100644 --- a/circuits/README.md +++ b/circuits/README.md @@ -20,12 +20,6 @@ yarn ./scripts/build_circuit.sh ``` -#### Build only to use the app, not for running tests (dev only, not secure) - -```bash -./scripts/build_circuit.sh app-only -``` - #### Run tests ```bash diff --git a/circuits/circuits/helpers/bigint.circom b/circuits/circuits/helpers/bigint.circom deleted file mode 100644 index 092497b2e..000000000 --- a/circuits/circuits/helpers/bigint.circom +++ /dev/null @@ -1,561 +0,0 @@ -pragma circom 2.1.5; - -include "../../node_modules/circomlib/circuits/comparators.circom"; -include "../../node_modules/circomlib/circuits/bitify.circom"; -include "../../node_modules/circomlib/circuits/gates.circom"; - -include "./bigint_func.circom"; - -// addition mod 2**n with carry bit -template ModSum(n) { - assert(n <= 252); - signal input a; - signal input b; - signal output sum; - signal output carry; - - component n2b = Num2Bits(n + 1); - n2b.in <== a + b; - carry <== n2b.out[n]; - sum <== a + b - carry * (1 << n); -} - -// a - b -template ModSub(n) { - assert(n <= 252); - signal input a; - signal input b; - signal output out; - signal output borrow; - component lt = LessThan(n); - lt.in[0] <== a; - lt.in[1] <== b; - borrow <== lt.out; - out <== borrow * (1 << n) + a - b; -} - -// a - b - c -// assume a - b - c + 2**n >= 0 -template ModSubThree(n) { - assert(n + 2 <= 253); - signal input a; - signal input b; - signal input c; - assert(a - b - c + (1 << n) >= 0); - signal output out; - signal output borrow; - signal b_plus_c; - b_plus_c <== b + c; - component lt = LessThan(n + 1); - lt.in[0] <== a; - lt.in[1] <== b_plus_c; - borrow <== lt.out; - out <== borrow * (1 << n) + a - b_plus_c; -} - -template ModSumThree(n) { - assert(n + 2 <= 253); - signal input a; - signal input b; - signal input c; - signal output sum; - signal output carry; - - component n2b = Num2Bits(n + 2); - n2b.in <== a + b + c; - carry <== n2b.out[n] + 2 * n2b.out[n + 1]; - sum <== a + b + c - carry * (1 << n); -} - -template ModSumFour(n) { - assert(n + 2 <= 253); - signal input a; - signal input b; - signal input c; - signal input d; - signal output sum; - signal output carry; - - component n2b = Num2Bits(n + 2); - n2b.in <== a + b + c + d; - carry <== n2b.out[n] + 2 * n2b.out[n + 1]; - sum <== a + b + c + d - carry * (1 << n); -} - -// product mod 2**n with carry -template ModProd(n) { - assert(n <= 126); - signal input a; - signal input b; - signal output prod; - signal output carry; - - component n2b = Num2Bits(2 * n); - n2b.in <== a * b; - - component b2n1 = Bits2Num(n); - component b2n2 = Bits2Num(n); - var i; - for (i = 0; i < n; i++) { - b2n1.in[i] <== n2b.out[i]; - b2n2.in[i] <== n2b.out[i + n]; - } - prod <== b2n1.out; - carry <== b2n2.out; -} - -// split a n + m bit input into two outputs -template Split(n, m) { - assert(n <= 126); - signal input in; - signal output small; - signal output big; - - small <-- in % (1 << n); - big <-- in \ (1 << n); - - component n2b_small = Num2Bits(n); - n2b_small.in <== small; - component n2b_big = Num2Bits(m); - n2b_big.in <== big; - - in === small + big * (1 << n); -} - -// split a n + m + k bit input into three outputs -template SplitThree(n, m, k) { - assert(n <= 126); - signal input in; - signal output small; - signal output medium; - signal output big; - - small <-- in % (1 << n); - medium <-- (in \ (1 << n)) % (1 << m); - big <-- in \ (1 << n + m); - - component n2b_small = Num2Bits(n); - n2b_small.in <== small; - component n2b_medium = Num2Bits(m); - n2b_medium.in <== medium; - component n2b_big = Num2Bits(k); - n2b_big.in <== big; - - in === small + medium * (1 << n) + big * (1 << n + m); -} - -// a[i], b[i] in 0... 2**n-1 -// represent a = a[0] + a[1] * 2**n + .. + a[k - 1] * 2**(n * k) -template BigAdd(n, k) { - assert(n <= 252); - signal input a[k]; - signal input b[k]; - signal output out[k + 1]; - - component unit0 = ModSum(n); - unit0.a <== a[0]; - unit0.b <== b[0]; - out[0] <== unit0.sum; - - component unit[k - 1]; - for (var i = 1; i < k; i++) { - unit[i - 1] = ModSumThree(n); - unit[i - 1].a <== a[i]; - unit[i - 1].b <== b[i]; - if (i == 1) { - unit[i - 1].c <== unit0.carry; - } else { - unit[i - 1].c <== unit[i - 2].carry; - } - out[i] <== unit[i - 1].sum; - } - out[k] <== unit[k - 2].carry; -} - -// a and b have n-bit registers -// a has ka registers, each with NONNEGATIVE ma-bit values (ma can be > n) -// b has kb registers, each with NONNEGATIVE mb-bit values (mb can be > n) -// out has ka + kb - 1 registers, each with (ma + mb + ceil(log(max(ka, kb))))-bit values -template BigMultNoCarry(n, ma, mb, ka, kb) { - assert(ma + mb <= 253); - signal input a[ka]; - signal input b[kb]; - signal output out[ka + kb - 1]; - - var prod_val[ka + kb - 1]; - for (var i = 0; i < ka + kb - 1; i++) { - prod_val[i] = 0; - } - for (var i = 0; i < ka; i++) { - for (var j = 0; j < kb; j++) { - prod_val[i + j] += a[i] * b[j]; - } - } - for (var i = 0; i < ka + kb - 1; i++) { - out[i] <-- prod_val[i]; - } - - var a_poly[ka + kb - 1]; - var b_poly[ka + kb - 1]; - var out_poly[ka + kb - 1]; - for (var i = 0; i < ka + kb - 1; i++) { - out_poly[i] = 0; - a_poly[i] = 0; - b_poly[i] = 0; - for (var j = 0; j < ka + kb - 1; j++) { - out_poly[i] = out_poly[i] + out[j] * (i ** j); - } - for (var j = 0; j < ka; j++) { - a_poly[i] = a_poly[i] + a[j] * (i ** j); - } - for (var j = 0; j < kb; j++) { - b_poly[i] = b_poly[i] + b[j] * (i ** j); - } - } - for (var i = 0; i < ka + kb - 1; i++) { - out_poly[i] === a_poly[i] * b_poly[i]; - } -} - - -// in[i] contains longs -// out[i] contains shorts -template LongToShortNoEndCarry(n, k) { - assert(n <= 126); - signal input in[k]; - signal output out[k+1]; - - var split[k][3]; - for (var i = 0; i < k; i++) { - split[i] = SplitThreeFn(in[i], n, n, n); - } - - var carry[k]; - carry[0] = 0; - out[0] <-- split[0][0]; - if (k == 1) { - out[1] <-- split[0][1]; - } - if (k > 1) { - var sumAndCarry[2] = SplitFn(split[0][1] + split[1][0], n, n); - out[1] <-- sumAndCarry[0]; - carry[1] = sumAndCarry[1]; - } - if (k == 2) { - out[2] <-- split[1][1] + split[0][2] + carry[1]; - } - if (k > 2) { - for (var i = 2; i < k; i++) { - var sumAndCarry[2] = SplitFn(split[i][0] + split[i-1][1] + split[i-2][2] + carry[i-1], n, n); - out[i] <-- sumAndCarry[0]; - carry[i] = sumAndCarry[1]; - } - out[k] <-- split[k-1][1] + split[k-2][2] + carry[k-1]; - } - - component outRangeChecks[k+1]; - for (var i = 0; i < k+1; i++) { - outRangeChecks[i] = Num2Bits(n); - outRangeChecks[i].in <== out[i]; - } - - signal runningCarry[k]; - component runningCarryRangeChecks[k]; - runningCarry[0] <-- (in[0] - out[0]) / (1 << n); - runningCarryRangeChecks[0] = Num2Bits(n + log_ceil(k)); - runningCarryRangeChecks[0].in <== runningCarry[0]; - runningCarry[0] * (1 << n) === in[0] - out[0]; - for (var i = 1; i < k; i++) { - runningCarry[i] <-- (in[i] - out[i] + runningCarry[i-1]) / (1 << n); - runningCarryRangeChecks[i] = Num2Bits(n + log_ceil(k)); - runningCarryRangeChecks[i].in <== runningCarry[i]; - runningCarry[i] * (1 << n) === in[i] - out[i] + runningCarry[i-1]; - } - runningCarry[k-1] === out[k]; -} - -template BigMult(n, k) { - signal input a[k]; - signal input b[k]; - signal output out[2 * k]; - - component mult = BigMultNoCarry(n, n, n, k, k); - for (var i = 0; i < k; i++) { - mult.a[i] <== a[i]; - mult.b[i] <== b[i]; - } - - // no carry is possible in the highest order register - component longshort = LongToShortNoEndCarry(n, 2 * k - 1); - for (var i = 0; i < 2 * k - 1; i++) { - longshort.in[i] <== mult.out[i]; - } - for (var i = 0; i < 2 * k; i++) { - out[i] <== longshort.out[i]; - } -} - -template BigLessThan(n, k){ - signal input a[k]; - signal input b[k]; - signal output out; - - component lt[k]; - component eq[k]; - for (var i = 0; i < k; i++) { - lt[i] = LessThan(n); - lt[i].in[0] <== a[i]; - lt[i].in[1] <== b[i]; - eq[i] = IsEqual(); - eq[i].in[0] <== a[i]; - eq[i].in[1] <== b[i]; - } - - // ors[i] holds (lt[k - 1] || (eq[k - 1] && lt[k - 2]) .. || (eq[k - 1] && .. && lt[i])) - // ands[i] holds (eq[k - 1] && .. && lt[i]) - // eq_ands[i] holds (eq[k - 1] && .. && eq[i]) - component ors[k - 1]; - component ands[k - 1]; - component eq_ands[k - 1]; - for (var i = k - 2; i >= 0; i--) { - ands[i] = AND(); - eq_ands[i] = AND(); - ors[i] = OR(); - - if (i == k - 2) { - ands[i].a <== eq[k - 1].out; - ands[i].b <== lt[k - 2].out; - eq_ands[i].a <== eq[k - 1].out; - eq_ands[i].b <== eq[k - 2].out; - ors[i].a <== lt[k - 1].out; - ors[i].b <== ands[i].out; - } else { - ands[i].a <== eq_ands[i + 1].out; - ands[i].b <== lt[i].out; - eq_ands[i].a <== eq_ands[i + 1].out; - eq_ands[i].b <== eq[i].out; - ors[i].a <== ors[i + 1].out; - ors[i].b <== ands[i].out; - } - } - out <== ors[0].out; -} - -template BigIsEqual(k){ - signal input in[2][k]; - signal output out; - component isEqual[k+1]; - var sum = 0; - for(var i = 0; i < k; i++){ - isEqual[i] = IsEqual(); - isEqual[i].in[0] <== in[0][i]; - isEqual[i].in[1] <== in[1][i]; - sum = sum + isEqual[i].out; - } - - isEqual[k] = IsEqual(); - isEqual[k].in[0] <== sum; - isEqual[k].in[1] <== k; - out <== isEqual[k].out; -} - -// leading register of b should be non-zero -template BigMod(n, k) { - assert(n <= 126); - signal input a[2 * k]; - signal input b[k]; - - signal output div[k + 1]; - signal output mod[k]; - - var longdiv[2][100] = long_div(n, k, k, a, b); - for (var i = 0; i < k; i++) { - div[i] <-- longdiv[0][i]; - mod[i] <-- longdiv[1][i]; - } - div[k] <-- longdiv[0][k]; - component range_checks[k + 1]; - for (var i = 0; i <= k; i++) { - range_checks[i] = Num2Bits(n); - range_checks[i].in <== div[i]; - } - - component mul = BigMult(n, k + 1); - for (var i = 0; i < k; i++) { - mul.a[i] <== div[i]; - mul.b[i] <== b[i]; - } - mul.a[k] <== div[k]; - mul.b[k] <== 0; - - component add = BigAdd(n, 2 * k + 2); - for (var i = 0; i < 2 * k; i++) { - add.a[i] <== mul.out[i]; - if (i < k) { - add.b[i] <== mod[i]; - } else { - add.b[i] <== 0; - } - } - add.a[2 * k] <== mul.out[2 * k]; - add.a[2 * k + 1] <== mul.out[2 * k + 1]; - add.b[2 * k] <== 0; - add.b[2 * k + 1] <== 0; - - for (var i = 0; i < 2 * k; i++) { - add.out[i] === a[i]; - } - add.out[2 * k] === 0; - add.out[2 * k + 1] === 0; - - component lt = BigLessThan(n, k); - for (var i = 0; i < k; i++) { - lt.a[i] <== mod[i]; - lt.b[i] <== b[i]; - } - lt.out === 1; -} - -// a[i], b[i] in 0... 2**n-1 -// represent a = a[0] + a[1] * 2**n + .. + a[k - 1] * 2**(n * k) -// assume a >= b -template BigSub(n, k) { - assert(n <= 252); - signal input a[k]; - signal input b[k]; - signal output out[k]; - signal output underflow; - - component unit0 = ModSub(n); - unit0.a <== a[0]; - unit0.b <== b[0]; - out[0] <== unit0.out; - - component unit[k - 1]; - for (var i = 1; i < k; i++) { - unit[i - 1] = ModSubThree(n); - unit[i - 1].a <== a[i]; - unit[i - 1].b <== b[i]; - if (i == 1) { - unit[i - 1].c <== unit0.borrow; - } else { - unit[i - 1].c <== unit[i - 2].borrow; - } - out[i] <== unit[i - 1].out; - } - underflow <== unit[k - 2].borrow; -} - -// calculates (a - b) % p, where a, b < p -// note: does not assume a >= b -template BigSubModP(n, k){ - assert(n <= 252); - signal input a[k]; - signal input b[k]; - signal input p[k]; - signal output out[k]; - component sub = BigSub(n, k); - for (var i = 0; i < k; i++){ - sub.a[i] <== a[i]; - sub.b[i] <== b[i]; - } - signal flag; - flag <== sub.underflow; - component add = BigAdd(n, k); - for (var i = 0; i < k; i++){ - add.a[i] <== sub.out[i]; - add.b[i] <== flag * p[i]; - } - for (var i = 0; i < k; i++){ - out[i] <== add.out[i]; - } -} - -template BigMultModP(n, k) { - assert(n <= 252); - signal input a[k]; - signal input b[k]; - signal input p[k]; - signal output out[k]; - - component big_mult = BigMult(n, k); - for (var i = 0; i < k; i++) { - big_mult.a[i] <== a[i]; - big_mult.b[i] <== b[i]; - } - component big_mod = BigMod(n, k); - for (var i = 0; i < 2 * k; i++) { - big_mod.a[i] <== big_mult.out[i]; - } - for (var i = 0; i < k; i++) { - big_mod.b[i] <== p[i]; - } - for (var i = 0; i < k; i++) { - out[i] <== big_mod.mod[i]; - } -} - -template BigModInv(n, k) { - assert(n <= 252); - signal input in[k]; - signal input p[k]; - signal output out[k]; - - // length k - var inv[100] = mod_inv(n, k, in, p); - for (var i = 0; i < k; i++) { - out[i] <-- inv[i]; - } - component range_checks[k]; - for (var i = 0; i < k; i++) { - range_checks[i] = Num2Bits(n); - range_checks[i].in <== out[i]; - } - - component mult = BigMult(n, k); - for (var i = 0; i < k; i++) { - mult.a[i] <== in[i]; - mult.b[i] <== out[i]; - } - component mod = BigMod(n, k); - for (var i = 0; i < 2 * k; i++) { - mod.a[i] <== mult.out[i]; - } - for (var i = 0; i < k; i++) { - mod.b[i] <== p[i]; - } - mod.mod[0] === 1; - for (var i = 1; i < k; i++) { - mod.mod[i] === 0; - } -} - -// in[i] contains values in the range -2^(m-1) to 2^(m-1) -// constrain that in[] as a big integer is zero -// each limbs is n bits -template CheckCarryToZero(n, m, k) { - assert(k >= 2); - - var EPSILON = 3; - - assert(m + EPSILON <= 253); - - signal input in[k]; - - signal carry[k]; - component carryRangeChecks[k]; - for (var i = 0; i < k-1; i++){ - carryRangeChecks[i] = Num2Bits(m + EPSILON - n); - if( i == 0 ){ - carry[i] <-- in[i] / (1< 10944121435919637611123202872628637544274182200208017171849102093287904247808 ? 1 : 0; -} - -function div_ceil(m, n) { - var ret = 0; - if (m % n == 0) { - ret = m \ n; - } else { - ret = m \ n + 1; - } - return ret; -} - -function log_ceil(n) { - var n_temp = n; - for (var i = 0; i < 254; i++) { - if (n_temp == 0) { - return i; - } - n_temp = n_temp \ 2; - } - return 254; -} - -function SplitFn(in, n, m) { - return [in % (1 << n), (in \ (1 << n)) % (1 << m)]; -} - -function SplitThreeFn(in, n, m, k) { - return [in % (1 << n), (in \ (1 << n)) % (1 << m), (in \ (1 << n + m)) % (1 << k)]; -} - -// m bits per overflowed register (values are potentially negative) -// n bits per properly-sized register -// in has k registers -// out has k + ceil(m/n) - 1 + 1 registers. highest-order potentially negative, -// all others are positive -// - 1 since the last register is included in the last ceil(m/n) array -// + 1 since the carries from previous registers could push you over -function getProperRepresentation(m, n, k, in) { - var ceilMN = div_ceil(m, n); - - var out[100]; // should be out[k + ceilMN] - assert(k + ceilMN < 100); - for (var i = 0; i < k; i++) { - out[i] = in[i]; - } - for (var i = k; i < 100; i++) { - out[i] = 0; - } - assert(n <= m); - for (var i = 0; i+1 < k + ceilMN; i++) { - assert((1 << m) >= out[i] && out[i] >= -(1 << m)); - var shifted_val = out[i] + (1 << m); - assert(0 <= shifted_val && shifted_val <= (1 << (m+1))); - out[i] = shifted_val & ((1 << n) - 1); - out[i+1] += (shifted_val >> n) - (1 << (m - n)); - } - - return out; -} - -// Evaluate polynomial a at point x -function poly_eval(len, a, x) { - var v = 0; - for (var i = 0; i < len; i++) { - v += a[i] * (x ** i); - } - return v; -} - -// Interpolate a degree len-1 polynomial given its evaluations at 0..len-1 -function poly_interp(len, v) { - assert(len <= 200); - var out[200]; - for (var i = 0; i < len; i++) { - out[i] = 0; - } - - // Product_{i=0..len-1} (x-i) - var full_poly[201]; - full_poly[0] = 1; - for (var i = 0; i < len; i++) { - full_poly[i+1] = 0; - for (var j = i; j >= 0; j--) { - full_poly[j+1] += full_poly[j]; - full_poly[j] *= -i; - } - } - - for (var i = 0; i < len; i++) { - var cur_v = 1; - for (var j = 0; j < len; j++) { - if (i == j) { - // do nothing - } else { - cur_v *= i-j; - } - } - cur_v = v[i] / cur_v; - - var cur_rem = full_poly[len]; - for (var j = len-1; j >= 0; j--) { - out[j] += cur_v * cur_rem; - cur_rem = full_poly[j] + i * cur_rem; - } - assert(cur_rem == 0); - } - - return out; -} - -// 1 if true, 0 if false -function long_gt(n, k, a, b) { - for (var i = k - 1; i >= 0; i--) { - if (a[i] > b[i]) { - return 1; - } - if (a[i] < b[i]) { - return 0; - } - } - return 0; -} - -// n bits per register -// a has k registers -// b has k registers -// a >= b -function long_sub(n, k, a, b) { - var diff[100]; - var borrow[100]; - for (var i = 0; i < k; i++) { - if (i == 0) { - if (a[i] >= b[i]) { - diff[i] = a[i] - b[i]; - borrow[i] = 0; - } else { - diff[i] = a[i] - b[i] + (1 << n); - borrow[i] = 1; - } - } else { - if (a[i] >= b[i] + borrow[i - 1]) { - diff[i] = a[i] - b[i] - borrow[i - 1]; - borrow[i] = 0; - } else { - diff[i] = (1 << n) + a[i] - b[i] - borrow[i - 1]; - borrow[i] = 1; - } - } - } - return diff; -} - -// a is a n-bit scalar -// b has k registers -function long_scalar_mult(n, k, a, b) { - var out[100]; - for (var i = 0; i < 100; i++) { - out[i] = 0; - } - for (var i = 0; i < k; i++) { - var temp = out[i] + (a * b[i]); - out[i] = temp % (1 << n); - out[i + 1] = out[i + 1] + temp \ (1 << n); - } - return out; -} - - -// n bits per register -// a has k + m registers -// b has k registers -// out[0] has length m + 1 -- quotient -// out[1] has length k -- remainder -// implements algorithm of https://people.eecs.berkeley.edu/~fateman/282/F%20Wright%20notes/week4.pdf -function long_div(n, k, m, a, b){ - var out[2][100]; - m += k; - while (b[k-1] == 0) { - out[1][k] = 0; - k--; - assert(k > 0); - } - m -= k; - - var remainder[200]; - for (var i = 0; i < m + k; i++) { - remainder[i] = a[i]; - } - - var mult[200]; - var dividend[200]; - for (var i = m; i >= 0; i--) { - if (i == m) { - dividend[k] = 0; - for (var j = k - 1; j >= 0; j--) { - dividend[j] = remainder[j + m]; - } - } else { - for (var j = k; j >= 0; j--) { - dividend[j] = remainder[j + i]; - } - } - - out[0][i] = short_div(n, k, dividend, b); - - var mult_shift[100] = long_scalar_mult(n, k, out[0][i], b); - var subtrahend[200]; - for (var j = 0; j < m + k; j++) { - subtrahend[j] = 0; - } - for (var j = 0; j <= k; j++) { - if (i + j < m + k) { - subtrahend[i + j] = mult_shift[j]; - } - } - remainder = long_sub(n, m + k, remainder, subtrahend); - } - for (var i = 0; i < k; i++) { - out[1][i] = remainder[i]; - } - out[1][k] = 0; - - return out; -} - -// n bits per register -// a has k + 1 registers -// b has k registers -// assumes leading digit of b is at least 2 ** (n - 1) -// 0 <= a < (2**n) * b -function short_div_norm(n, k, a, b) { - var qhat = (a[k] * (1 << n) + a[k - 1]) \ b[k - 1]; - if (qhat > (1 << n) - 1) { - qhat = (1 << n) - 1; - } - - var mult[100] = long_scalar_mult(n, k, qhat, b); - if (long_gt(n, k + 1, mult, a) == 1) { - mult = long_sub(n, k + 1, mult, b); - if (long_gt(n, k + 1, mult, a) == 1) { - return qhat - 2; - } else { - return qhat - 1; - } - } else { - return qhat; - } -} - -// n bits per register -// a has k + 1 registers -// b has k registers -// assumes leading digit of b is non-zero -// 0 <= a < (2**n) * b -function short_div(n, k, a, b) { - var scale = (1 << n) \ (1 + b[k - 1]); - - // k + 2 registers now - var norm_a[200] = long_scalar_mult(n, k + 1, scale, a); - // k + 1 registers now - var norm_b[200] = long_scalar_mult(n, k, scale, b); - - var ret; - if (norm_b[k] != 0) { - ret = short_div_norm(n, k + 1, norm_a, norm_b); - } else { - ret = short_div_norm(n, k, norm_a, norm_b); - } - return ret; -} - -// n bits per register -// a and b both have k registers -// out[0] has length 2 * k -// adapted from BigMulShortLong and LongToShortNoEndCarry2 witness computation -function prod(n, k, a, b) { - // first compute the intermediate values. taken from BigMulShortLong - var prod_val[100]; // length is 2 * k - 1 - for (var i = 0; i < 2 * k - 1; i++) { - prod_val[i] = 0; - if (i < k) { - for (var a_idx = 0; a_idx <= i; a_idx++) { - prod_val[i] = prod_val[i] + a[a_idx] * b[i - a_idx]; - } - } else { - for (var a_idx = i - k + 1; a_idx < k; a_idx++) { - prod_val[i] = prod_val[i] + a[a_idx] * b[i - a_idx]; - } - } - } - - // now do a bunch of carrying to make sure registers not overflowed. taken from LongToShortNoEndCarry2 - var out[100]; // length is 2 * k - - var split[100][3]; // first dimension has length 2 * k - 1 - for (var i = 0; i < 2 * k - 1; i++) { - split[i] = SplitThreeFn(prod_val[i], n, n, n); - } - - var carry[100]; // length is 2 * k - 1 - carry[0] = 0; - out[0] = split[0][0]; - if (2 * k - 1 > 1) { - var sumAndCarry[2] = SplitFn(split[0][1] + split[1][0], n, n); - out[1] = sumAndCarry[0]; - carry[1] = sumAndCarry[1]; - } - if (2 * k - 1 > 2) { - for (var i = 2; i < 2 * k - 1; i++) { - var sumAndCarry[2] = SplitFn(split[i][0] + split[i-1][1] + split[i-2][2] + carry[i-1], n, n); - out[i] = sumAndCarry[0]; - carry[i] = sumAndCarry[1]; - } - out[2 * k - 1] = split[2*k-2][1] + split[2*k-3][2] + carry[2*k-2]; - } - return out; -} - -// n bits per register -// a has k registers -// p has k registers -// e has k registers -// k * n <= 500 -// p is a prime -// computes a^e mod p -function mod_exp(n, k, a, p, e) { - var eBits[500]; // length is k * n - for (var i = 0; i < k; i++) { - for (var j = 0; j < n; j++) { - eBits[j + n * i] = (e[i] >> j) & 1; - } - } - - var out[100]; // length is k - for (var i = 0; i < 100; i++) { - out[i] = 0; - } - out[0] = 1; - - // repeated squaring - for (var i = k * n - 1; i >= 0; i--) { - // multiply by a if bit is 0 - if (eBits[i] == 1) { - var temp[200]; // length 2 * k - temp = prod(n, k, out, a); - var temp2[2][100]; - temp2 = long_div(n, k, k, temp, p); - out = temp2[1]; - } - - // square, unless we're at the end - if (i > 0) { - var temp[200]; // length 2 * k - temp = prod(n, k, out, out); - var temp2[2][100]; - temp2 = long_div(n, k, k, temp, p); - out = temp2[1]; - } - - } - return out; -} - -// n bits per register -// a has k registers -// p has k registers -// k * n <= 500 -// p is a prime -// if a == 0 mod p, returns 0 -// else computes inv = a^(p-2) mod p -function mod_inv(n, k, a, p) { - var isZero = 1; - for (var i = 0; i < k; i++) { - if (a[i] != 0) { - isZero = 0; - } - } - if (isZero == 1) { - var ret[100]; - for (var i = 0; i < k; i++) { - ret[i] = 0; - } - return ret; - } - - var pCopy[100]; - for (var i = 0; i < 100; i++) { - if (i < k) { - pCopy[i] = p[i]; - } else { - pCopy[i] = 0; - } - } - - var two[100]; - for (var i = 0; i < 100; i++) { - two[i] = 0; - } - two[0] = 2; - - var pMinusTwo[100]; - pMinusTwo = long_sub(n, k, pCopy, two); // length k - var out[100]; - out = mod_exp(n, k, a, pCopy, pMinusTwo); - return out; -} - -// a, b and out are all n bits k registers -function long_sub_mod_p(n, k, a, b, p){ - var gt = long_gt(n, k, a, b); - var tmp[100]; - if(gt){ - tmp = long_sub(n, k, a, b); - } - else{ - tmp = long_sub(n, k, b, a); - } - var out[2][100]; - for(var i = k;i < 2 * k; i++){ - tmp[i] = 0; - } - out = long_div(n, k, k, tmp, p); - if(gt==0){ - tmp = long_sub(n, k, p, out[1]); - } - return tmp; -} - -// a, b, p and out are all n bits k registers -function prod_mod_p(n, k, a, b, p){ - var tmp[100]; - var result[2][100]; - tmp = prod(n, k, a, b); - result = long_div(n, k, k, tmp, p); - return result[1]; -} \ No newline at end of file diff --git a/circuits/circuits/helpers/extract.circom b/circuits/circuits/helpers/extract.circom deleted file mode 100644 index c51bc7961..000000000 --- a/circuits/circuits/helpers/extract.circom +++ /dev/null @@ -1,175 +0,0 @@ -pragma circom 2.1.2; -include "./utils.circom"; - -// circuits in this folder copied from zk-email, credits to them - -// A set of utils for shifting and packing signal arrays -// Performs extraction of reveal signals and packed signals - -// From https://github.com/iden3/circomlib/blob/master/circuits/multiplexer.circom -function log2(a) { - if (a == 0) { - return 0; - } - var n = 1; - var r = 1; - while (n n2b.in; - for (var i = 0; i<254; i++) { - n2b.out[i] ==> sign.in[i]; - } - sign.sign ==> out; -} \ No newline at end of file diff --git a/circuits/circuits/helpers/utils.circom b/circuits/circuits/helpers/utils.circom deleted file mode 100644 index 149c211db..000000000 --- a/circuits/circuits/helpers/utils.circom +++ /dev/null @@ -1,149 +0,0 @@ -pragma circom 2.1.5; - -include "../../node_modules/circomlib/circuits/bitify.circom"; -include "../../node_modules/circomlib/circuits/comparators.circom"; -include "../../node_modules/circomlib/circuits/mimcsponge.circom"; -include "./fp.circom"; - -// returns ceil(log2(a+1)) -function log2_ceil(a) { - var n = a+1; - var r = 0; - while (n>0) { - r++; - n \= 2; - } - return r; -} - -// returns ceil(log2(a+1)) -function count_packed(n, chunks) { - return (n - 1) \ chunks + 1; -} - -// Lifted from MACI https://github.com/privacy-scaling-explorations/maci/blob/v1/circuits/circom/trees/incrementalQuinTree.circom#L29 -// Bits is ceil(log2 choices) -template QuinSelector(choices, bits) { - signal input in[choices]; - signal input index; - signal output out; - - // Ensure that index < choices - component lessThan = LessThan(bits); - lessThan.in[0] <== index; - lessThan.in[1] <== choices; - lessThan.out === 1; - - component calcTotal = CalculateTotal(choices); - component eqs[choices]; - - // For each item, check whether its index equals the input index. - for (var i = 0; i < choices; i ++) { - eqs[i] = IsEqual(); - eqs[i].in[0] <== i; - eqs[i].in[1] <== index; - - // eqs[i].out is 1 if the index matches. As such, at most one input to - // calcTotal is not 0. - calcTotal.nums[i] <== eqs[i].out * in[i]; - } - - // Returns 0 + 0 + ... + item - out <== calcTotal.sum; -} - -template CalculateTotal(n) { - signal input nums[n]; - signal output sum; - - signal sums[n]; - sums[0] <== nums[0]; - - for (var i=1; i < n; i++) { - sums[i] <== sums[i - 1] + nums[i]; - } - - sum <== sums[n - 1]; -} - -// Written by us -// n bytes per signal, n = 31 usually -template Packed2Bytes(n){ - signal input in; // < 2 ^ (8 * 31) - signal output out[n]; // each out is < 64 - // Rangecheck in and out? - - // Constrain bits - component nbytes = Num2Bits(8 * n); - nbytes.in <== in; - component bytes[n]; - - for (var k = 0; k < n; k++){ - // Witness gen out - out[k] <-- (in >> (k * 8)) % 256; - - // Constrain bits to match - bytes[k] = Num2Bits(8); - bytes[k].in <== out[k]; - for (var j = 0; j < 8; j++) { - nbytes.out[k * 8 + j] === bytes[k].out[j]; - } - } -} - -// n bytes per signal, n = 31 usually (i.e. 31 8-bit values being packed into 248 bits) -// when calling this, you must constrain each 'in' value yourself to be < 256 -// TODO: Rangecheck in and out? -template Bytes2Packed(n){ - signal input in[n]; // each in value is < 256 (i.e. 2^8) - signal pow2[n+1]; // [k] is 2^k - signal in_prefix_sum[n+1]; // each [k] is in[0] + 2^8 in[1]... 2^{8k-8} in[k-1]. cont. - // [0] is 0. [1] is in[0]. [n+1] is out. - signal output out; // < 2 ^ (8 * 31) - // Rangecheck in and out? - - // Witness gen out - in_prefix_sum[0] <-- 0; - for (var k = 0; k < n; k++){ - in_prefix_sum[k+1] <-- in_prefix_sum[k] + in[k] * (2 ** (k * 8)); - } - out <-- in_prefix_sum[n]; - - // Constrain out bits - component nbytes = Num2Bits(8 * n); - nbytes.in <== out; // I think this auto-rangechecks out to be < 8*n bits. - component bytes[n]; - - for (var k = 0; k < n; k++){ - bytes[k] = Num2Bits(8); - bytes[k].in <== in[k]; - for (var j = 0; j < 8; j++) { - nbytes.out[k * 8 + j] === bytes[k].out[j]; - } - } -} - -// salt_is_message_id_from, custom_anon_from_hashed_salt = MakeAnonEmailSalt(max_email_from_len, max_message_id_len)(email_from, custom_message_id_from, shifted_message_id) -template MakeAnonEmailSalt(email_len, blinder_len) { - signal input email[email_len]; - signal input custom_message_id[blinder_len]; // previous message id, used to source past account - signal input original_message_id[blinder_len]; // previous message id, used to source past account - signal intermediate_is_message_id_from[blinder_len + 1]; - signal isEq[blinder_len]; - signal output blinder_matches; - signal output anon_salt; - - component hasher = MiMCSponge(email_len + blinder_len, 220, 1); - hasher.k <== 123; - for (var i = 0; i < email_len; i++) { - hasher.ins[i] <== email[i]; - } - intermediate_is_message_id_from[0] <== 1; - for (var i = 0; i < blinder_len; i++) { - hasher.ins[i + email_len] <== custom_message_id[i]; - isEq[i] <== IsEqual()([custom_message_id[i], original_message_id[i]]); - intermediate_is_message_id_from[i + 1] <== isEq[i] * intermediate_is_message_id_from[i]; - } - blinder_matches <== intermediate_is_message_id_from[blinder_len]; - anon_salt <== hasher.outs[0]; -} diff --git a/circuits/circuits/passport_verifier.circom b/circuits/circuits/passport_verifier.circom index 53b7ce9ad..c06ef60d5 100644 --- a/circuits/circuits/passport_verifier.circom +++ b/circuits/circuits/passport_verifier.circom @@ -1,8 +1,8 @@ pragma circom 2.1.5; -include "./rsa/rsa.circom"; +include "@zk-email/circuits/helpers/rsa.circom"; +include "@zk-email/circuits/helpers/extract.circom"; include "./sha256Bytes.circom"; -include "../node_modules/circomlib/circuits/sha256/sha256.circom"; template PassportVerifier(n, k) { signal input mrz[93]; // formatted mrz (5 + 88) chars diff --git a/circuits/circuits/proof_of_passport.circom b/circuits/circuits/proof_of_passport.circom index ba1f25046..7bfa79197 100644 --- a/circuits/circuits/proof_of_passport.circom +++ b/circuits/circuits/proof_of_passport.circom @@ -1,7 +1,7 @@ pragma circom 2.1.5; -include "../node_modules/circomlib/circuits/poseidon.circom"; -include "./helpers/extract.circom"; +include "circomlib/circuits/poseidon.circom"; +include "@zk-email/circuits/helpers/extract.circom"; include "./passport_verifier.circom"; template ProofOfPassport(n, k) { diff --git a/circuits/circuits/rsa/rsa.circom b/circuits/circuits/rsa/rsa.circom deleted file mode 100644 index 9f0327d25..000000000 --- a/circuits/circuits/rsa/rsa.circom +++ /dev/null @@ -1,156 +0,0 @@ -pragma circom 2.1.5; - -include "../helpers/fp.circom"; - -// Computes base^65537 mod modulus -// Does not necessarily reduce fully mod modulus (the answer could be -// too big by a multiple of modulus) -template FpPow65537Mod(n, k) { - signal input base[k]; - // Exponent is hardcoded at 65537 - signal input modulus[k]; - signal output out[k]; - - component doublers[16]; - component adder = FpMul(n, k); - for (var i = 0; i < 16; i++) { - doublers[i] = FpMul(n, k); - } - - for (var j = 0; j < k; j++) { - adder.p[j] <== modulus[j]; - for (var i = 0; i < 16; i++) { - doublers[i].p[j] <== modulus[j]; - } - } - for (var j = 0; j < k; j++) { - doublers[0].a[j] <== base[j]; - doublers[0].b[j] <== base[j]; - } - for (var i = 0; i + 1 < 16; i++) { - for (var j = 0; j < k; j++) { - doublers[i + 1].a[j] <== doublers[i].out[j]; - doublers[i + 1].b[j] <== doublers[i].out[j]; - } - } - for (var j = 0; j < k; j++) { - adder.a[j] <== base[j]; - adder.b[j] <== doublers[15].out[j]; - } - for (var j = 0; j < k; j++) { - out[j] <== adder.out[j]; - } -} - -template RSAPad(n, k) { - signal input modulus[k]; - signal input base_message[k]; - signal output padded_message[k]; - - var base_len = 408; - var msg_len = 256; - - signal padded_message_bits[n*k]; - - component modulus_n2b[k]; - component base_message_n2b[k]; - signal modulus_bits[n*k]; - signal base_message_bits[n*k]; - for (var i = 0; i < k; i++) { - base_message_n2b[i] = Num2Bits(n); - base_message_n2b[i].in <== base_message[i]; - for (var j = 0; j < n; j++) { - base_message_bits[i*n+j] <== base_message_n2b[i].out[j]; - } - modulus_n2b[i] = Num2Bits(n); - modulus_n2b[i].in <== modulus[i]; - for (var j = 0; j < n; j++) { - modulus_bits[i*n+j] <== modulus_n2b[i].out[j]; - } - } - - for (var i = msg_len; i < n*k; i++) { - base_message_bits[i] === 0; - } - - for (var i = 0; i < msg_len; i++) { - padded_message_bits[i] <== base_message_bits[i]; - } - - for (var i = base_len; i < base_len + 8; i++) { - padded_message_bits[i] <== 0; - } - - for (var i = msg_len; i < base_len; i++) { - padded_message_bits[i] <== (0x3031300d060960864801650304020105000420 >> (i - msg_len)) & 1; - } - - component modulus_zero[(n*k + 7 - (base_len + 8))\8]; - { - var modulus_prefix = 0; - for (var i = n*k - 1; i >= base_len + 8; i--) { - if (i+8 < n*k) { - modulus_prefix += modulus_bits[i+8]; - if (i % 8 == 0) { - var idx = (i - (base_len + 8)) / 8; - modulus_zero[idx] = IsZero(); - modulus_zero[idx].in <== modulus_prefix; - padded_message_bits[i] <== 1-modulus_zero[idx].out; - } else { - padded_message_bits[i] <== padded_message_bits[i+1]; - } - } else { - padded_message_bits[i] <== 0; - } - } - } - - // The RFC guarantees at least 8 octets of 0xff padding. - assert(base_len + 8 + 65 <= n*k); - for (var i = base_len + 8; i < base_len + 8 + 65; i++) { - padded_message_bits[i] === 1; - } - - component padded_message_b2n[k]; - for (var i = 0; i < k; i++) { - padded_message_b2n[i] = Bits2Num(n); - for (var j = 0; j < n; j++) { - padded_message_b2n[i].in[j] <== padded_message_bits[i*n+j]; - } - padded_message[i] <== padded_message_b2n[i].out; - } -} - -template RSAVerify65537(n, k) { - signal input signature[k]; - signal input modulus[k]; - signal input base_message[k]; - - component padder = RSAPad(n, k); - for (var i = 0; i < k; i++) { - padder.modulus[i] <== modulus[i]; - padder.base_message[i] <== base_message[i]; - } - - // Check that the signature is in proper form and reduced mod modulus. - component signatureRangeCheck[k]; - component bigLessThan = BigLessThan(n, k); - for (var i = 0; i < k; i++) { - signatureRangeCheck[i] = Num2Bits(n); - signatureRangeCheck[i].in <== signature[i]; - bigLessThan.a[i] <== signature[i]; - bigLessThan.b[i] <== modulus[i]; - } - bigLessThan.out === 1; - - component bigPow = FpPow65537Mod(n, k); - for (var i = 0; i < k; i++) { - bigPow.base[i] <== signature[i]; - bigPow.modulus[i] <== modulus[i]; - } - // By construction of the padding, the padded message is necessarily - // smaller than the modulus. Thus, we don't have to check that bigPow is fully reduced. - for (var i = 0; i < k; i++) { - bigPow.out[i] === padder.padded_message[i]; - } -} diff --git a/circuits/circuits/sha256Bytes.circom b/circuits/circuits/sha256Bytes.circom index fcdee1ebe..c9d1febb1 100644 --- a/circuits/circuits/sha256Bytes.circom +++ b/circuits/circuits/sha256Bytes.circom @@ -1,8 +1,7 @@ pragma circom 2.1.5; -include "../node_modules/circomlib/circuits/bitify.circom"; -include "../node_modules/circomlib/circuits/sha256/sha256.circom"; -include "../node_modules/circomlib/circuits/bitify.circom"; +include "circomlib/circuits/bitify.circom"; +include "circomlib/circuits/sha256/sha256.circom"; template Sha256Bytes(max_num_bytes) { signal input in_padded[max_num_bytes]; diff --git a/circuits/package.json b/circuits/package.json index 550716495..262002606 100644 --- a/circuits/package.json +++ b/circuits/package.json @@ -10,6 +10,7 @@ "@types/chai-as-promised": "^7.1.6", "@types/node": "^20.6.3", "@types/node-forge": "^1.3.5", + "@zk-email/circuits": "^3.2.2", "chai-as-promised": "^7.1.1", "circomlib": "^2.0.5", "js-sha256": "^0.10.1", diff --git a/circuits/scripts/build_circuit.sh b/circuits/scripts/build_circuit.sh index 6ff7025d9..4a614bc04 100755 --- a/circuits/scripts/build_circuit.sh +++ b/circuits/scripts/build_circuit.sh @@ -20,7 +20,7 @@ fi cd .. echo "compiling circuit" -circom circuits/proof_of_passport.circom --r1cs --wasm --output build +circom circuits/proof_of_passport.circom -l node_modules --r1cs --wasm --output build mkdir -p ../app/ark-circom-passport/passport/ cp build/proof_of_passport.r1cs ../app/ark-circom-passport/passport/ @@ -30,11 +30,6 @@ echo "file sizes:" echo "Size of proof_of_passport.r1cs: $(wc -c <../app/ark-circom-passport/passport/proof_of_passport.r1cs) bytes" echo "Size of proof_of_passport.wasm: $(wc -c <../app/ark-circom-passport/passport/proof_of_passport.wasm) bytes" -# If APP_ONLY is 1, exit the script here -if [ $APP_ONLY -eq 1 ]; then - exit 0 -fi - echo "building zkey" yarn snarkjs groth16 setup build/proof_of_passport.r1cs build/powersOfTau28_hez_final_20.ptau build/proof_of_passport.zkey @@ -44,5 +39,4 @@ yarn snarkjs zkey export verificationkey build/proof_of_passport_final.zkey buil yarn snarkjs zkey export solidityverifier build/proof_of_passport_final.zkey build/Verifier.sol cp build/Verifier.sol ../contracts/contracts/Verifier.sol -cp build/proof_of_passport_final.zkey ../app/ark-circom-passport/passport/ -echo "copied Verifier.sol to contracts and proof_of_passport_final.zkey to ark-circom-passport" \ No newline at end of file +echo "copied Verifier.sol to contracts" \ No newline at end of file diff --git a/circuits/yarn.lock b/circuits/yarn.lock index e75e63bca..a9c8da6b9 100644 --- a/circuits/yarn.lock +++ b/circuits/yarn.lock @@ -49,6 +49,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== +"@zk-email/circuits@^3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@zk-email/circuits/-/circuits-3.2.2.tgz#019d10e644ba1a3ad73bd8d73a66f53149c530dd" + integrity sha512-3R2y64IeNq7cnfJabAlmQflhGlNAhcR4vq9n55fAIbgpYQ8P2d4k5Aa52HK8mqaVDCnNjLlAWMni557TUqQuGg== + dependencies: + "@zk-email/zk-regex-circom" "^1.1.1" + +"@zk-email/zk-regex-circom@^1.1.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@zk-email/zk-regex-circom/-/zk-regex-circom-1.2.1.tgz#ea1adc832e8d855c9568abc438567a524a0ac962" + integrity sha512-+AoH5PdKZxatTWfwYWGkpuQ0xGaax6FwBHvdYXugkPDdgtJQYyxhItQtM79bo0djCmuwEK2X1rnYlFHBDClQeA== + dependencies: + commander "^11.0.0" + snarkjs "^0.7.0" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -256,6 +271,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +commander@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -368,6 +388,15 @@ ffjavascript@0.2.60, ffjavascript@^0.2.48: wasmcurves "0.2.2" web-worker "^1.2.0" +ffjavascript@0.2.63: + version "0.2.63" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.63.tgz#0c1216a1f123dc9181df69e144473704d2f115eb" + integrity sha512-dBgdsfGks58b66JnUZeZpGxdMIDQ4QsD3VYlRJyFVrKQHb2kJy4R2gufx5oetrTxXPT+aEjg0dOvOLg1N0on4A== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.2" + web-worker "1.2.0" + filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -773,6 +802,22 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" +snarkjs@^0.7.0: + version "0.7.3" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.3.tgz#7f703d05b810235255f2d0a70d8a9b8b3ea916e5" + integrity sha512-cDLpWqdqEJSCQNc+cXYX1XTKdUZBtYEisuOsgmXf/HUsN5WmGN+FO7HfCS+cMQT1Nzbm1a9gAEpKH6KRtDtS1Q== + dependencies: + "@iden3/binfileutils" "0.0.11" + bfj "^7.0.2" + blake2b-wasm "^2.4.0" + circom_runtime "0.1.24" + ejs "^3.1.6" + fastfile "0.0.20" + ffjavascript "0.2.63" + js-sha3 "^0.8.0" + logplease "^1.2.15" + r1csfile "0.0.47" + snarkjs@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.1.tgz#c96ecaf4db8c2eb44d60b17ee02f37ed39c821bb" @@ -928,7 +973,7 @@ wasmcurves@0.2.2: dependencies: wasmbuilder "0.0.16" -web-worker@^1.2.0: +web-worker@1.2.0, web-worker@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== diff --git a/common/src/utils/types.ts b/common/src/utils/types.ts index 3095e06e7..822f01cdf 100644 --- a/common/src/utils/types.ts +++ b/common/src/utils/types.ts @@ -4,7 +4,7 @@ export type PassportData = { mrz: string; signatureAlgorithm: string; pubKey: {modulus?: string, curveName?: string, publicKeyQ?: string}; - dataGroupHashes: DataHash[]; + dataGroupHashes: DataHash[] | number[]; eContent: number[]; encryptedDigest: number[]; }; diff --git a/common/src/utils/utils.ts b/common/src/utils/utils.ts index b71eb7b19..476289763 100644 --- a/common/src/utils/utils.ts +++ b/common/src/utils/utils.ts @@ -177,3 +177,54 @@ export function hexToSignedBytes(hexString: string): number[] { export function toUnsignedByte(signedByte: number) { return signedByte < 0 ? signedByte + 256 : signedByte; } + +export function hexStringToSignedIntArray(hexString: string) { + let result = []; + for (let i = 0; i < hexString.length; i += 2) { + let byte = parseInt(hexString.substr(i, 2), 16); + result.push(byte > 127 ? byte - 256 : byte); + } + return result; +}; + +function bytesToBigInt(bytes: number[]) { + let hex = bytes.reverse().map(byte => byte.toString(16).padStart(2, '0')).join(''); + // console.log('hex', hex) + return BigInt(`0x${hex}`).toString(); +} + +function splitInto(arr: number[], size: number) { + const res = []; + for(let i = 0; i < arr.length; i += size) { + res.push(arr.slice(i, i + size)); + } + return res; +} + +function setFirstBitOfLastByteToZero(bytes: number[]) { + bytes[bytes.length - 1] &= 0x7F; // AND with 01111111 to set the first bit of the last byte to 0 + return bytes; +} + +// from reverse engineering ark-serialize. +export function formatProofIOS(proof: number[]) { + const splittedProof = splitInto(proof, 32); + splittedProof[1] = setFirstBitOfLastByteToZero(splittedProof[1]); + splittedProof[5] = setFirstBitOfLastByteToZero(splittedProof[5]); // We might need to do the same for input 3 + splittedProof[7] = setFirstBitOfLastByteToZero(splittedProof[7]); + const proooof = splittedProof.map(bytesToBigInt); + + return { + "a": [proooof[0], proooof[1]], + "b": [ + [proooof[2], proooof[3]], + [proooof[4], proooof[5]] + ], + "c": [proooof[6], proooof[7]] + } +} + +export function formatInputsIOS(inputs: number[]) { + const splitted = splitInto(inputs.slice(8), 32); + return splitted.map(bytesToBigInt); +} \ No newline at end of file diff --git a/contracts/contracts/Verifier.sol b/contracts/contracts/Verifier.sol index 7e39d4c47..09a711651 100644 --- a/contracts/contracts/Verifier.sol +++ b/contracts/contracts/Verifier.sol @@ -37,10 +37,10 @@ contract Groth16Verifier { uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; - uint256 constant deltax1 = 3209380006197917323277329582098228339371163660926962295801164826214856517947; - uint256 constant deltax2 = 6646670050526259801819251758958211452540005804223688493722226090330926439262; - uint256 constant deltay1 = 5902942920401026834003595450475380413196841721810355915757638362939360983954; - uint256 constant deltay2 = 806822447775191833164489432648121152502993279435744441275443418978021481943; + uint256 constant deltax1 = 13332829983292634874659240068294550011141456103652018916224391594481625590699; + uint256 constant deltax2 = 21775687996720864507552980920389387944496604814608793381435179673741251662482; + uint256 constant deltay1 = 15444510239488592734510692256596834816736560818857866493410444065736122722029; + uint256 constant deltay2 = 12213750345729207307537910743738626761327252153590563067440130819625419372191; uint256 constant IC0x = 4897812530436581420070048815704719785256466787655503857610889333796081821201; diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 5191b3751..7dec0d9b6 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -18,6 +18,10 @@ const config: HardhatUserConfig = { mumbai: { url: "https://polygon-mumbai-bor.publicnode.com", accounts: [process.env.PKEY as string], + }, + sepolia: { + url: "https://rpc.notadegen.com/eth/sepolia", + accounts: [process.env.PKEY as string], } }, }; diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts index 8a565b4a5..6c5f5d9e2 100644 --- a/contracts/scripts/deploy.ts +++ b/contracts/scripts/deploy.ts @@ -13,9 +13,12 @@ async function main() { const Formatter = await ethers.getContractFactory("Formatter"); const formatter = await Formatter.deploy(); await formatter.waitForDeployment(); - await formatter.addCountryCodes(Object.entries(countryCodes)); - console.log(`Formatter deployed to ${formatter.target}`); + + const tx = await formatter.addCountryCodes(Object.entries(countryCodes)); + await tx.wait(); + console.log(`Country codes added`); + const ProofOfPassport = await ethers.getContractFactory("ProofOfPassport"); const proofOfPassport = await ProofOfPassport.deploy(verifier.target, formatter.target);