Commit dba9d2120224ebb592b363e69b82fff877099413

Authored by 毕珂
0 parents

GTMBase64模块

Showing 61 changed files with 4120 additions and 0 deletions
DSGTMBase64.podspec 0 → 100644
  1 +++ a/DSGTMBase64.podspec
  1 +Pod::Spec.new do |s|
  2 +
  3 + s.name = "DSGTMBase64"
  4 + s.version = "0.0.1"
  5 + s.summary = "电商分类模块"
  6 + s.homepage = "http://bj.gitlab.cnlive.com/DSIOSTeam"
  7 + s.authors = { "DSIOSTeam" => "694092596@qq.com" }
  8 + s.license = "MIT"
  9 + s.source = { :git => 'http://bj.gitlab.cnlive.com/DSIOSTeam/DSGTMBase64.git', :tag => s.version.to_s }
  10 + s.ios.deployment_target = '9.0'
  11 + s.source_files = "DSGTMBase64/Classes/*"
  12 + s.frameworks = 'Foundation'
  13 +end
DSGTMBase64/Assets/.gitkeep 0 → 100644
  1 +++ a/DSGTMBase64/Assets/.gitkeep
DSGTMBase64/Classes/.gitkeep 0 → 100644
  1 +++ a/DSGTMBase64/Classes/.gitkeep
DSGTMBase64/Classes/DSGTMBase64.h 0 → 100755
  1 +++ a/DSGTMBase64/Classes/DSGTMBase64.h
  1 +//
  2 +// DSGTMBase64.h
  3 +//
  4 +// Copyright 2006-2008 Google Inc.
  5 +//
  6 +// Licensed under the Apache License, Version 2.0 (the "License"); you may not
  7 +// use this file except in compliance with the License. You may obtain a copy
  8 +// of the License at
  9 +//
  10 +// http://www.apache.org/licenses/LICENSE-2.0
  11 +//
  12 +// Unless required by applicable law or agreed to in writing, software
  13 +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  14 +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  15 +// License for the specific language governing permissions and limitations under
  16 +// the License.
  17 +//
  18 +
  19 +#import <Foundation/Foundation.h>
  20 +#import "DSGTMDefines.h"
  21 +
  22 +// DSGTMBase64
  23 +//
  24 +/// Helper for handling Base64 and WebSafeBase64 encodings
  25 +//
  26 +/// The webSafe methods use different character set and also the results aren't
  27 +/// always padded to a multiple of 4 characters. This is done so the resulting
  28 +/// data can be used in urls and url query arguments without needing any
  29 +/// encoding. You must use the webSafe* methods together, the data does not
  30 +/// interop with the RFC methods.
  31 +//
  32 +@interface DSGTMBase64 : NSObject
  33 +
  34 +//
  35 +// Standard Base64 (RFC) handling
  36 +//
  37 +
  38 +// encodeData:
  39 +//
  40 +/// Base64 encodes contents of the NSData object.
  41 +//
  42 +/// Returns:
  43 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  44 +//
  45 ++(NSData *)encodeData:(NSData *)data;
  46 +
  47 +// decodeData:
  48 +//
  49 +/// Base64 decodes contents of the NSData object.
  50 +//
  51 +/// Returns:
  52 +/// A new autoreleased NSData with the decoded payload. nil for any error.
  53 +//
  54 ++(NSData *)decodeData:(NSData *)data;
  55 +
  56 +// encodeBytes:length:
  57 +//
  58 +/// Base64 encodes the data pointed at by |bytes|.
  59 +//
  60 +/// Returns:
  61 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  62 +//
  63 ++(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length;
  64 +
  65 +// decodeBytes:length:
  66 +//
  67 +/// Base64 decodes the data pointed at by |bytes|.
  68 +//
  69 +/// Returns:
  70 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  71 +//
  72 ++(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length;
  73 +
  74 +// stringByEncodingData:
  75 +//
  76 +/// Base64 encodes contents of the NSData object.
  77 +//
  78 +/// Returns:
  79 +/// A new autoreleased NSString with the encoded payload. nil for any error.
  80 +//
  81 ++(NSString *)stringByEncodingData:(NSData *)data;
  82 +
  83 +// stringByEncodingBytes:length:
  84 +//
  85 +/// Base64 encodes the data pointed at by |bytes|.
  86 +//
  87 +/// Returns:
  88 +/// A new autoreleased NSString with the encoded payload. nil for any error.
  89 +//
  90 ++(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length;
  91 +
  92 +// decodeString:
  93 +//
  94 +/// Base64 decodes contents of the NSString.
  95 +//
  96 +/// Returns:
  97 +/// A new autoreleased NSData with the decoded payload. nil for any error.
  98 +//
  99 ++(NSData *)decodeString:(NSString *)string;
  100 +
  101 +//
  102 +// Modified Base64 encoding so the results can go onto urls.
  103 +//
  104 +// The changes are in the characters generated and also allows the result to
  105 +// not be padded to a multiple of 4.
  106 +// Must use the matching call to encode/decode, won't interop with the
  107 +// RFC versions.
  108 +//
  109 +
  110 +// webSafeEncodeData:padded:
  111 +//
  112 +/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
  113 +/// then padding characters are added so the result length is a multiple of 4.
  114 +//
  115 +/// Returns:
  116 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  117 +//
  118 ++(NSData *)webSafeEncodeData:(NSData *)data
  119 + padded:(BOOL)padded;
  120 +
  121 +// webSafeDecodeData:
  122 +//
  123 +/// WebSafe Base64 decodes contents of the NSData object.
  124 +//
  125 +/// Returns:
  126 +/// A new autoreleased NSData with the decoded payload. nil for any error.
  127 +//
  128 ++(NSData *)webSafeDecodeData:(NSData *)data;
  129 +
  130 +// webSafeEncodeBytes:length:padded:
  131 +//
  132 +/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
  133 +/// then padding characters are added so the result length is a multiple of 4.
  134 +//
  135 +/// Returns:
  136 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  137 +//
  138 ++(NSData *)webSafeEncodeBytes:(const void *)bytes
  139 + length:(NSUInteger)length
  140 + padded:(BOOL)padded;
  141 +
  142 +// webSafeDecodeBytes:length:
  143 +//
  144 +/// WebSafe Base64 decodes the data pointed at by |bytes|.
  145 +//
  146 +/// Returns:
  147 +/// A new autoreleased NSData with the encoded payload. nil for any error.
  148 +//
  149 ++(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length;
  150 +
  151 +// stringByWebSafeEncodingData:padded:
  152 +//
  153 +/// WebSafe Base64 encodes contents of the NSData object. If |padded| is YES
  154 +/// then padding characters are added so the result length is a multiple of 4.
  155 +//
  156 +/// Returns:
  157 +/// A new autoreleased NSString with the encoded payload. nil for any error.
  158 +//
  159 ++(NSString *)stringByWebSafeEncodingData:(NSData *)data
  160 + padded:(BOOL)padded;
  161 +
  162 +// stringByWebSafeEncodingBytes:length:padded:
  163 +//
  164 +/// WebSafe Base64 encodes the data pointed at by |bytes|. If |padded| is YES
  165 +/// then padding characters are added so the result length is a multiple of 4.
  166 +//
  167 +/// Returns:
  168 +/// A new autoreleased NSString with the encoded payload. nil for any error.
  169 +//
  170 ++(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
  171 + length:(NSUInteger)length
  172 + padded:(BOOL)padded;
  173 +
  174 +// webSafeDecodeString:
  175 +//
  176 +/// WebSafe Base64 decodes contents of the NSString.
  177 +//
  178 +/// Returns:
  179 +/// A new autoreleased NSData with the decoded payload. nil for any error.
  180 +//
  181 ++(NSData *)webSafeDecodeString:(NSString *)string;
  182 +
  183 +@end
DSGTMBase64/Classes/DSGTMBase64.m 0 → 100755
  1 +++ a/DSGTMBase64/Classes/DSGTMBase64.m
  1 +//
  2 +// DSGTMBase64.m
  3 +//
  4 +// Copyright 2006-2008 Google Inc.
  5 +//
  6 +// Licensed under the Apache License, Version 2.0 (the "License"); you may not
  7 +// use this file except in compliance with the License. You may obtain a copy
  8 +// of the License at
  9 +//
  10 +// http://www.apache.org/licenses/LICENSE-2.0
  11 +//
  12 +// Unless required by applicable law or agreed to in writing, software
  13 +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  14 +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  15 +// License for the specific language governing permissions and limitations under
  16 +// the License.
  17 +//
  18 +
  19 +#import "DSGTMBase64.h"
  20 +#import "DSGTMDefines.h"
  21 +
  22 +static const char *kBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  23 +static const char *kWebSafeBase64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  24 +static const char kBase64PaddingChar = '=';
  25 +static const char kBase64InvalidChar = 99;
  26 +
  27 +static const char kBase64DecodeChars[] = {
  28 + // This array was generated by the following code:
  29 + // #include <sys/time.h>
  30 + // #include <stdlib.h>
  31 + // #include <string.h>
  32 + // main()
  33 + // {
  34 + // static const char Base64[] =
  35 + // "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  36 + // char *pos;
  37 + // int idx, i, j;
  38 + // printf(" ");
  39 + // for (i = 0; i < 255; i += 8) {
  40 + // for (j = i; j < i + 8; j++) {
  41 + // pos = strchr(Base64, j);
  42 + // if ((pos == NULL) || (j == 0))
  43 + // idx = 99;
  44 + // else
  45 + // idx = pos - Base64;
  46 + // if (idx == 99)
  47 + // printf(" %2d, ", idx);
  48 + // else
  49 + // printf(" %2d/*%c*/,", idx, j);
  50 + // }
  51 + // printf("\n ");
  52 + // }
  53 + // }
  54 + 99, 99, 99, 99, 99, 99, 99, 99,
  55 + 99, 99, 99, 99, 99, 99, 99, 99,
  56 + 99, 99, 99, 99, 99, 99, 99, 99,
  57 + 99, 99, 99, 99, 99, 99, 99, 99,
  58 + 99, 99, 99, 99, 99, 99, 99, 99,
  59 + 99, 99, 99, 62/*+*/, 99, 99, 99, 63/*/ */,
  60 + 52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/,
  61 + 60/*8*/, 61/*9*/, 99, 99, 99, 99, 99, 99,
  62 + 99, 0/*A*/, 1/*B*/, 2/*C*/, 3/*D*/, 4/*E*/, 5/*F*/, 6/*G*/,
  63 + 7/*H*/, 8/*I*/, 9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/,
  64 + 15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/,
  65 + 23/*X*/, 24/*Y*/, 25/*Z*/, 99, 99, 99, 99, 99,
  66 + 99, 26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/,
  67 + 33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/,
  68 + 41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/,
  69 + 49/*x*/, 50/*y*/, 51/*z*/, 99, 99, 99, 99, 99,
  70 + 99, 99, 99, 99, 99, 99, 99, 99,
  71 + 99, 99, 99, 99, 99, 99, 99, 99,
  72 + 99, 99, 99, 99, 99, 99, 99, 99,
  73 + 99, 99, 99, 99, 99, 99, 99, 99,
  74 + 99, 99, 99, 99, 99, 99, 99, 99,
  75 + 99, 99, 99, 99, 99, 99, 99, 99,
  76 + 99, 99, 99, 99, 99, 99, 99, 99,
  77 + 99, 99, 99, 99, 99, 99, 99, 99,
  78 + 99, 99, 99, 99, 99, 99, 99, 99,
  79 + 99, 99, 99, 99, 99, 99, 99, 99,
  80 + 99, 99, 99, 99, 99, 99, 99, 99,
  81 + 99, 99, 99, 99, 99, 99, 99, 99,
  82 + 99, 99, 99, 99, 99, 99, 99, 99,
  83 + 99, 99, 99, 99, 99, 99, 99, 99,
  84 + 99, 99, 99, 99, 99, 99, 99, 99,
  85 + 99, 99, 99, 99, 99, 99, 99, 99
  86 +};
  87 +
  88 +static const char kWebSafeBase64DecodeChars[] = {
  89 + // This array was generated by the following code:
  90 + // #include <sys/time.h>
  91 + // #include <stdlib.h>
  92 + // #include <string.h>
  93 + // main()
  94 + // {
  95 + // static const char Base64[] =
  96 + // "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  97 + // char *pos;
  98 + // int idx, i, j;
  99 + // printf(" ");
  100 + // for (i = 0; i < 255; i += 8) {
  101 + // for (j = i; j < i + 8; j++) {
  102 + // pos = strchr(Base64, j);
  103 + // if ((pos == NULL) || (j == 0))
  104 + // idx = 99;
  105 + // else
  106 + // idx = pos - Base64;
  107 + // if (idx == 99)
  108 + // printf(" %2d, ", idx);
  109 + // else
  110 + // printf(" %2d/*%c*/,", idx, j);
  111 + // }
  112 + // printf("\n ");
  113 + // }
  114 + // }
  115 + 99, 99, 99, 99, 99, 99, 99, 99,
  116 + 99, 99, 99, 99, 99, 99, 99, 99,
  117 + 99, 99, 99, 99, 99, 99, 99, 99,
  118 + 99, 99, 99, 99, 99, 99, 99, 99,
  119 + 99, 99, 99, 99, 99, 99, 99, 99,
  120 + 99, 99, 99, 99, 99, 62/*-*/, 99, 99,
  121 + 52/*0*/, 53/*1*/, 54/*2*/, 55/*3*/, 56/*4*/, 57/*5*/, 58/*6*/, 59/*7*/,
  122 + 60/*8*/, 61/*9*/, 99, 99, 99, 99, 99, 99,
  123 + 99, 0/*A*/, 1/*B*/, 2/*C*/, 3/*D*/, 4/*E*/, 5/*F*/, 6/*G*/,
  124 + 7/*H*/, 8/*I*/, 9/*J*/, 10/*K*/, 11/*L*/, 12/*M*/, 13/*N*/, 14/*O*/,
  125 + 15/*P*/, 16/*Q*/, 17/*R*/, 18/*S*/, 19/*T*/, 20/*U*/, 21/*V*/, 22/*W*/,
  126 + 23/*X*/, 24/*Y*/, 25/*Z*/, 99, 99, 99, 99, 63/*_*/,
  127 + 99, 26/*a*/, 27/*b*/, 28/*c*/, 29/*d*/, 30/*e*/, 31/*f*/, 32/*g*/,
  128 + 33/*h*/, 34/*i*/, 35/*j*/, 36/*k*/, 37/*l*/, 38/*m*/, 39/*n*/, 40/*o*/,
  129 + 41/*p*/, 42/*q*/, 43/*r*/, 44/*s*/, 45/*t*/, 46/*u*/, 47/*v*/, 48/*w*/,
  130 + 49/*x*/, 50/*y*/, 51/*z*/, 99, 99, 99, 99, 99,
  131 + 99, 99, 99, 99, 99, 99, 99, 99,
  132 + 99, 99, 99, 99, 99, 99, 99, 99,
  133 + 99, 99, 99, 99, 99, 99, 99, 99,
  134 + 99, 99, 99, 99, 99, 99, 99, 99,
  135 + 99, 99, 99, 99, 99, 99, 99, 99,
  136 + 99, 99, 99, 99, 99, 99, 99, 99,
  137 + 99, 99, 99, 99, 99, 99, 99, 99,
  138 + 99, 99, 99, 99, 99, 99, 99, 99,
  139 + 99, 99, 99, 99, 99, 99, 99, 99,
  140 + 99, 99, 99, 99, 99, 99, 99, 99,
  141 + 99, 99, 99, 99, 99, 99, 99, 99,
  142 + 99, 99, 99, 99, 99, 99, 99, 99,
  143 + 99, 99, 99, 99, 99, 99, 99, 99,
  144 + 99, 99, 99, 99, 99, 99, 99, 99,
  145 + 99, 99, 99, 99, 99, 99, 99, 99,
  146 + 99, 99, 99, 99, 99, 99, 99, 99
  147 +};
  148 +
  149 +
  150 +// Tests a character to see if it's a whitespace character.
  151 +//
  152 +// Returns:
  153 +// YES if the character is a whitespace character.
  154 +// NO if the character is not a whitespace character.
  155 +//
  156 +GTM_INLINE BOOL IsSpace(unsigned char c) {
  157 + // we use our own mapping here because we don't want anything w/ locale
  158 + // support.
  159 + static BOOL kSpaces[256] = {
  160 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, // 0-9
  161 + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 10-19
  162 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20-29
  163 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, // 30-39
  164 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40-49
  165 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50-59
  166 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60-69
  167 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70-79
  168 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 80-89
  169 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 90-99
  170 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 100-109
  171 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 110-119
  172 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 120-129
  173 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 130-139
  174 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 140-149
  175 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 150-159
  176 + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160-169
  177 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170-179
  178 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 180-189
  179 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 190-199
  180 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 200-209
  181 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 210-219
  182 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 220-229
  183 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 230-239
  184 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 240-249
  185 + 0, 0, 0, 0, 0, 1, // 250-255
  186 + };
  187 + return kSpaces[c];
  188 +}
  189 +
  190 +// Calculate how long the data will be once it's base64 encoded.
  191 +//
  192 +// Returns:
  193 +// The guessed encoded length for a source length
  194 +//
  195 +GTM_INLINE NSUInteger CalcEncodedLength(NSUInteger srcLen, BOOL padded) {
  196 + NSUInteger intermediate_result = 8 * srcLen + 5;
  197 + NSUInteger len = intermediate_result / 6;
  198 + if (padded) {
  199 + len = ((len + 3) / 4) * 4;
  200 + }
  201 + return len;
  202 +}
  203 +
  204 +// Tries to calculate how long the data will be once it's base64 decoded.
  205 +// Unlike the above, this is always an upperbound, since the source data
  206 +// could have spaces and might end with the padding characters on them.
  207 +//
  208 +// Returns:
  209 +// The guessed decoded length for a source length
  210 +//
  211 +GTM_INLINE NSUInteger GuessDecodedLength(NSUInteger srcLen) {
  212 + return (srcLen + 3) / 4 * 3;
  213 +}
  214 +
  215 +
  216 +@interface DSGTMBase64 (PrivateMethods)
  217 +
  218 ++(NSData *)baseEncode:(const void *)bytes
  219 + length:(NSUInteger)length
  220 + charset:(const char *)charset
  221 + padded:(BOOL)padded;
  222 +
  223 ++(NSData *)baseDecode:(const void *)bytes
  224 + length:(NSUInteger)length
  225 + charset:(const char*)charset
  226 + requirePadding:(BOOL)requirePadding;
  227 +
  228 ++(NSUInteger)baseEncode:(const char *)srcBytes
  229 + srcLen:(NSUInteger)srcLen
  230 + destBytes:(char *)destBytes
  231 + destLen:(NSUInteger)destLen
  232 + charset:(const char *)charset
  233 + padded:(BOOL)padded;
  234 +
  235 ++(NSUInteger)baseDecode:(const char *)srcBytes
  236 + srcLen:(NSUInteger)srcLen
  237 + destBytes:(char *)destBytes
  238 + destLen:(NSUInteger)destLen
  239 + charset:(const char *)charset
  240 + requirePadding:(BOOL)requirePadding;
  241 +
  242 +@end
  243 +
  244 +
  245 +@implementation DSGTMBase64
  246 +
  247 +//
  248 +// Standard Base64 (RFC) handling
  249 +//
  250 +
  251 ++(NSData *)encodeData:(NSData *)data {
  252 + return [self baseEncode:[data bytes]
  253 + length:[data length]
  254 + charset:kBase64EncodeChars
  255 + padded:YES];
  256 +}
  257 +
  258 ++(NSData *)decodeData:(NSData *)data {
  259 + return [self baseDecode:[data bytes]
  260 + length:[data length]
  261 + charset:kBase64DecodeChars
  262 + requirePadding:YES];
  263 +}
  264 +
  265 ++(NSData *)encodeBytes:(const void *)bytes length:(NSUInteger)length {
  266 + return [self baseEncode:bytes
  267 + length:length
  268 + charset:kBase64EncodeChars
  269 + padded:YES];
  270 +}
  271 +
  272 ++(NSData *)decodeBytes:(const void *)bytes length:(NSUInteger)length {
  273 + return [self baseDecode:bytes
  274 + length:length
  275 + charset:kBase64DecodeChars
  276 + requirePadding:YES];
  277 +}
  278 +
  279 ++(NSString *)stringByEncodingData:(NSData *)data {
  280 + NSString *result = nil;
  281 + NSData *converted = [self baseEncode:[data bytes]
  282 + length:[data length]
  283 + charset:kBase64EncodeChars
  284 + padded:YES];
  285 + if (converted) {
  286 + result = [[NSString alloc] initWithData:converted
  287 + encoding:NSASCIIStringEncoding] ;
  288 + }
  289 + return result;
  290 +}
  291 +
  292 ++(NSString *)stringByEncodingBytes:(const void *)bytes length:(NSUInteger)length {
  293 + NSString *result = nil;
  294 + NSData *converted = [self baseEncode:bytes
  295 + length:length
  296 + charset:kBase64EncodeChars
  297 + padded:YES];
  298 + if (converted) {
  299 + result = [[NSString alloc] initWithData:converted
  300 + encoding:NSASCIIStringEncoding] ;
  301 + }
  302 + return result;
  303 +}
  304 +
  305 ++(NSData *)decodeString:(NSString *)string {
  306 + NSData *result = nil;
  307 + NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
  308 + if (data) {
  309 + result = [self baseDecode:[data bytes]
  310 + length:[data length]
  311 + charset:kBase64DecodeChars
  312 + requirePadding:YES];
  313 + }
  314 + return result;
  315 +}
  316 +
  317 +//
  318 +// Modified Base64 encoding so the results can go onto urls.
  319 +//
  320 +// The changes are in the characters generated and also the result isn't
  321 +// padded to a multiple of 4.
  322 +// Must use the matching call to encode/decode, won't interop with the
  323 +// RFC versions.
  324 +//
  325 +
  326 ++(NSData *)webSafeEncodeData:(NSData *)data
  327 + padded:(BOOL)padded {
  328 + return [self baseEncode:[data bytes]
  329 + length:[data length]
  330 + charset:kWebSafeBase64EncodeChars
  331 + padded:padded];
  332 +}
  333 +
  334 ++(NSData *)webSafeDecodeData:(NSData *)data {
  335 + return [self baseDecode:[data bytes]
  336 + length:[data length]
  337 + charset:kWebSafeBase64DecodeChars
  338 + requirePadding:NO];
  339 +}
  340 +
  341 ++(NSData *)webSafeEncodeBytes:(const void *)bytes
  342 + length:(NSUInteger)length
  343 + padded:(BOOL)padded {
  344 + return [self baseEncode:bytes
  345 + length:length
  346 + charset:kWebSafeBase64EncodeChars
  347 + padded:padded];
  348 +}
  349 +
  350 ++(NSData *)webSafeDecodeBytes:(const void *)bytes length:(NSUInteger)length {
  351 + return [self baseDecode:bytes
  352 + length:length
  353 + charset:kWebSafeBase64DecodeChars
  354 + requirePadding:NO];
  355 +}
  356 +
  357 ++(NSString *)stringByWebSafeEncodingData:(NSData *)data
  358 + padded:(BOOL)padded {
  359 + NSString *result = nil;
  360 + NSData *converted = [self baseEncode:[data bytes]
  361 + length:[data length]
  362 + charset:kWebSafeBase64EncodeChars
  363 + padded:padded];
  364 + if (converted) {
  365 + result = [[NSString alloc] initWithData:converted
  366 + encoding:NSASCIIStringEncoding];
  367 + }
  368 + return result;
  369 +}
  370 +
  371 ++(NSString *)stringByWebSafeEncodingBytes:(const void *)bytes
  372 + length:(NSUInteger)length
  373 + padded:(BOOL)padded {
  374 + NSString *result = nil;
  375 + NSData *converted = [self baseEncode:bytes
  376 + length:length
  377 + charset:kWebSafeBase64EncodeChars
  378 + padded:padded];
  379 + if (converted) {
  380 + result = [[NSString alloc] initWithData:converted
  381 + encoding:NSASCIIStringEncoding] ;
  382 + }
  383 + return result;
  384 +}
  385 +
  386 ++(NSData *)webSafeDecodeString:(NSString *)string {
  387 + NSData *result = nil;
  388 + NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
  389 + if (data) {
  390 + result = [self baseDecode:[data bytes]
  391 + length:[data length]
  392 + charset:kWebSafeBase64DecodeChars
  393 + requirePadding:NO];
  394 + }
  395 + return result;
  396 +}
  397 +
  398 +@end
  399 +
  400 +@implementation DSGTMBase64 (PrivateMethods)
  401 +
  402 +//
  403 +// baseEncode:length:charset:padded:
  404 +//
  405 +// Does the common lifting of creating the dest NSData. it creates & sizes the
  406 +// data for the results. |charset| is the characters to use for the encoding
  407 +// of the data. |padding| controls if the encoded data should be padded to a
  408 +// multiple of 4.
  409 +//
  410 +// Returns:
  411 +// an autorelease NSData with the encoded data, nil if any error.
  412 +//
  413 ++(NSData *)baseEncode:(const void *)bytes
  414 + length:(NSUInteger)length
  415 + charset:(const char *)charset
  416 + padded:(BOOL)padded {
  417 + // how big could it be?
  418 + NSUInteger maxLength = CalcEncodedLength(length, padded);
  419 + // make space
  420 + NSMutableData *result = [NSMutableData data];
  421 + [result setLength:maxLength];
  422 + // do it
  423 + NSUInteger finalLength = [self baseEncode:bytes
  424 + srcLen:length
  425 + destBytes:[result mutableBytes]
  426 + destLen:[result length]
  427 + charset:charset
  428 + padded:padded];
  429 + if (finalLength) {
  430 + _GTMDevAssert(finalLength == maxLength, @"how did we calc the length wrong?");
  431 + } else {
  432 + // shouldn't happen, this means we ran out of space
  433 + result = nil;
  434 + }
  435 + return result;
  436 +}
  437 +
  438 +//
  439 +// baseDecode:length:charset:requirePadding:
  440 +//
  441 +// Does the common lifting of creating the dest NSData. it creates & sizes the
  442 +// data for the results. |charset| is the characters to use for the decoding
  443 +// of the data.
  444 +//
  445 +// Returns:
  446 +// an autorelease NSData with the decoded data, nil if any error.
  447 +//
  448 +//
  449 ++(NSData *)baseDecode:(const void *)bytes
  450 + length:(NSUInteger)length
  451 + charset:(const char *)charset
  452 + requirePadding:(BOOL)requirePadding {
  453 + // could try to calculate what it will end up as
  454 + NSUInteger maxLength = GuessDecodedLength(length);
  455 + // make space
  456 + NSMutableData *result = [NSMutableData data];
  457 + [result setLength:maxLength];
  458 + // do it
  459 + NSUInteger finalLength = [self baseDecode:bytes
  460 + srcLen:length
  461 + destBytes:[result mutableBytes]
  462 + destLen:[result length]
  463 + charset:charset
  464 + requirePadding:requirePadding];
  465 + if (finalLength) {
  466 + if (finalLength != maxLength) {
  467 + // resize down to how big it was
  468 + [result setLength:finalLength];
  469 + }
  470 + } else {
  471 + // either an error in the args, or we ran out of space
  472 + result = nil;
  473 + }
  474 + return result;
  475 +}
  476 +
  477 +//
  478 +// baseEncode:srcLen:destBytes:destLen:charset:padded:
  479 +//
  480 +// Encodes the buffer into the larger. returns the length of the encoded
  481 +// data, or zero for an error.
  482 +// |charset| is the characters to use for the encoding
  483 +// |padded| tells if the result should be padded to a multiple of 4.
  484 +//
  485 +// Returns:
  486 +// the length of the encoded data. zero if any error.
  487 +//
  488 ++(NSUInteger)baseEncode:(const char *)srcBytes
  489 + srcLen:(NSUInteger)srcLen
  490 + destBytes:(char *)destBytes
  491 + destLen:(NSUInteger)destLen
  492 + charset:(const char *)charset
  493 + padded:(BOOL)padded {
  494 + if (!srcLen || !destLen || !srcBytes || !destBytes) {
  495 + return 0;
  496 + }
  497 +
  498 + char *curDest = destBytes;
  499 + const unsigned char *curSrc = (const unsigned char *)(srcBytes);
  500 +
  501 + // Three bytes of data encodes to four characters of cyphertext.
  502 + // So we can pump through three-byte chunks atomically.
  503 + while (srcLen > 2) {
  504 + // space?
  505 + _GTMDevAssert(destLen >= 4, @"our calc for encoded length was wrong");
  506 + curDest[0] = charset[curSrc[0] >> 2];
  507 + curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)];
  508 + curDest[2] = charset[((curSrc[1] & 0x0f) << 2) + (curSrc[2] >> 6)];
  509 + curDest[3] = charset[curSrc[2] & 0x3f];
  510 +
  511 + curDest += 4;
  512 + curSrc += 3;
  513 + srcLen -= 3;
  514 + destLen -= 4;
  515 + }
  516 +
  517 + // now deal with the tail (<=2 bytes)
  518 + switch (srcLen) {
  519 + case 0:
  520 + // Nothing left; nothing more to do.
  521 + break;
  522 + case 1:
  523 + // One byte left: this encodes to two characters, and (optionally)
  524 + // two pad characters to round out the four-character cypherblock.
  525 + _GTMDevAssert(destLen >= 2, @"our calc for encoded length was wrong");
  526 + curDest[0] = charset[curSrc[0] >> 2];
  527 + curDest[1] = charset[(curSrc[0] & 0x03) << 4];
  528 + curDest += 2;
  529 + destLen -= 2;
  530 + if (padded) {
  531 + _GTMDevAssert(destLen >= 2, @"our calc for encoded length was wrong");
  532 + curDest[0] = kBase64PaddingChar;
  533 + curDest[1] = kBase64PaddingChar;
  534 + curDest += 2;
  535 + }
  536 + break;
  537 + case 2:
  538 + // Two bytes left: this encodes to three characters, and (optionally)
  539 + // one pad character to round out the four-character cypherblock.
  540 + _GTMDevAssert(destLen >= 3, @"our calc for encoded length was wrong");
  541 + curDest[0] = charset[curSrc[0] >> 2];
  542 + curDest[1] = charset[((curSrc[0] & 0x03) << 4) + (curSrc[1] >> 4)];
  543 + curDest[2] = charset[(curSrc[1] & 0x0f) << 2];
  544 + curDest += 3;
  545 + destLen -= 3;
  546 + if (padded) {
  547 + _GTMDevAssert(destLen >= 1, @"our calc for encoded length was wrong");
  548 + curDest[0] = kBase64PaddingChar;
  549 + curDest += 1;
  550 + }
  551 + break;
  552 + }
  553 + // return the length
  554 + return (curDest - destBytes);
  555 +}
  556 +
  557 +//
  558 +// baseDecode:srcLen:destBytes:destLen:charset:requirePadding:
  559 +//
  560 +// Decodes the buffer into the larger. returns the length of the decoded
  561 +// data, or zero for an error.
  562 +// |charset| is the character decoding buffer to use
  563 +//
  564 +// Returns:
  565 +// the length of the encoded data. zero if any error.
  566 +//
  567 ++(NSUInteger)baseDecode:(const char *)srcBytes
  568 + srcLen:(NSUInteger)srcLen
  569 + destBytes:(char *)destBytes
  570 + destLen:(NSUInteger)destLen
  571 + charset:(const char *)charset
  572 + requirePadding:(BOOL)requirePadding {
  573 + if (!srcLen || !destLen || !srcBytes || !destBytes) {
  574 + return 0;
  575 + }
  576 +
  577 + int decode;
  578 + NSUInteger destIndex = 0;
  579 + int state = 0;
  580 + char ch = 0;
  581 + while (srcLen-- && (ch = *srcBytes++) != 0) {
  582 + if (IsSpace(ch)) // Skip whitespace
  583 + continue;
  584 +
  585 + if (ch == kBase64PaddingChar)
  586 + break;
  587 +
  588 + decode = charset[(unsigned int)ch];
  589 + if (decode == kBase64InvalidChar)
  590 + return 0;
  591 +
  592 + // Four cyphertext characters decode to three bytes.
  593 + // Therefore we can be in one of four states.
  594 + switch (state) {
  595 + case 0:
  596 + // We're at the beginning of a four-character cyphertext block.
  597 + // This sets the high six bits of the first byte of the
  598 + // plaintext block.
  599 + _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong");
  600 + destBytes[destIndex] = decode << 2;
  601 + state = 1;
  602 + break;
  603 + case 1:
  604 + // We're one character into a four-character cyphertext block.
  605 + // This sets the low two bits of the first plaintext byte,
  606 + // and the high four bits of the second plaintext byte.
  607 + _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong");
  608 + destBytes[destIndex] |= decode >> 4;
  609 + destBytes[destIndex+1] = (decode & 0x0f) << 4;
  610 + destIndex++;
  611 + state = 2;
  612 + break;
  613 + case 2:
  614 + // We're two characters into a four-character cyphertext block.
  615 + // This sets the low four bits of the second plaintext
  616 + // byte, and the high two bits of the third plaintext byte.
  617 + // However, if this is the end of data, and those two
  618 + // bits are zero, it could be that those two bits are
  619 + // leftovers from the encoding of data that had a length
  620 + // of two mod three.
  621 + _GTMDevAssert((destIndex+1) < destLen, @"our calc for decoded length was wrong");
  622 + destBytes[destIndex] |= decode >> 2;
  623 + destBytes[destIndex+1] = (decode & 0x03) << 6;
  624 + destIndex++;
  625 + state = 3;
  626 + break;
  627 + case 3:
  628 + // We're at the last character of a four-character cyphertext block.
  629 + // This sets the low six bits of the third plaintext byte.
  630 + _GTMDevAssert(destIndex < destLen, @"our calc for decoded length was wrong");
  631 + destBytes[destIndex] |= decode;
  632 + destIndex++;
  633 + state = 0;
  634 + break;
  635 + }
  636 + }
  637 +
  638 + // We are done decoding Base-64 chars. Let's see if we ended
  639 + // on a byte boundary, and/or with erroneous trailing characters.
  640 + if (ch == kBase64PaddingChar) { // We got a pad char
  641 + if ((state == 0) || (state == 1)) {
  642 + return 0; // Invalid '=' in first or second position
  643 + }
  644 + if (srcLen == 0) {
  645 + if (state == 2) { // We run out of input but we still need another '='
  646 + return 0;
  647 + }
  648 + // Otherwise, we are in state 3 and only need this '='
  649 + } else {
  650 + if (state == 2) { // need another '='
  651 + while ((ch = *srcBytes++) && (srcLen-- > 0)) {
  652 + if (!IsSpace(ch))
  653 + break;
  654 + }
  655 + if (ch != kBase64PaddingChar) {
  656 + return 0;
  657 + }
  658 + }
  659 + // state = 1 or 2, check if all remain padding is space
  660 + while ((ch = *srcBytes++) && (srcLen-- > 0)) {
  661 + if (!IsSpace(ch)) {
  662 + return 0;
  663 + }
  664 + }
  665 + }
  666 + } else {
  667 + // We ended by seeing the end of the string.
  668 +
  669 + if (requirePadding) {
  670 + // If we require padding, then anything but state 0 is an error.
  671 + if (state != 0) {
  672 + return 0;
  673 + }
  674 + } else {
  675 + // Make sure we have no partial bytes lying around. Note that we do not
  676 + // require trailing '=', so states 2 and 3 are okay too.
  677 + if (state == 1) {
  678 + return 0;
  679 + }
  680 + }
  681 + }
  682 +
  683 + // If then next piece of output was valid and got written to it means we got a
  684 + // very carefully crafted input that appeared valid but contains some trailing
  685 + // bits past the real length, so just toss the thing.
  686 + if ((destIndex < destLen) &&
  687 + (destBytes[destIndex] != 0)) {
  688 + return 0;
  689 + }
  690 +
  691 + return destIndex;
  692 +}
  693 +
  694 +@end
DSGTMBase64/Classes/DSGTMDefines.h 0 → 100755
  1 +++ a/DSGTMBase64/Classes/DSGTMDefines.h
  1 +//
  2 +// DSGTMDefines.h
  3 +//
  4 +// Copyright 2008 Google Inc.
  5 +//
  6 +// Licensed under the Apache License, Version 2.0 (the "License"); you may not
  7 +// use this file except in compliance with the License. You may obtain a copy
  8 +// of the License at
  9 +//
  10 +// http://www.apache.org/licenses/LICENSE-2.0
  11 +//
  12 +// Unless required by applicable law or agreed to in writing, software
  13 +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  14 +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  15 +// License for the specific language governing permissions and limitations under
  16 +// the License.
  17 +//
  18 +
  19 +// ============================================================================
  20 +
  21 +#include <AvailabilityMacros.h>
  22 +#include <TargetConditionals.h>
  23 +
  24 +#if TARGET_OS_IPHONE
  25 +#include <Availability.h>
  26 +#endif // TARGET_OS_IPHONE
  27 +
  28 +// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs
  29 +#ifndef MAC_OS_X_VERSION_10_5
  30 +#define MAC_OS_X_VERSION_10_5 1050
  31 +#endif
  32 +#ifndef MAC_OS_X_VERSION_10_6
  33 +#define MAC_OS_X_VERSION_10_6 1060
  34 +#endif
  35 +#ifndef MAC_OS_X_VERSION_10_7
  36 +#define MAC_OS_X_VERSION_10_7 1070
  37 +#endif
  38 +
  39 +// Not all __IPHONE_X macros defined in past SDKs
  40 +#ifndef __IPHONE_3_0
  41 +#define __IPHONE_3_0 30000
  42 +#endif
  43 +#ifndef __IPHONE_3_1
  44 +#define __IPHONE_3_1 30100
  45 +#endif
  46 +#ifndef __IPHONE_3_2
  47 +#define __IPHONE_3_2 30200
  48 +#endif
  49 +#ifndef __IPHONE_4_0
  50 +#define __IPHONE_4_0 40000
  51 +#endif
  52 +#ifndef __IPHONE_4_3
  53 +#define __IPHONE_4_3 40300
  54 +#endif
  55 +#ifndef __IPHONE_5_0
  56 +#define __IPHONE_5_0 50000
  57 +#endif
  58 +
  59 +// ----------------------------------------------------------------------------
  60 +// CPP symbols that can be overridden in a prefix to control how the toolbox
  61 +// is compiled.
  62 +// ----------------------------------------------------------------------------
  63 +
  64 +
  65 +// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and
  66 +// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens
  67 +// when a validation fails. If you implement your own validators, you may want
  68 +// to control their internals using the same macros for consistency.
  69 +#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
  70 +#define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0
  71 +#endif
  72 +
  73 +// Give ourselves a consistent way to do inlines. Apple's macros even use
  74 +// a few different actual definitions, so we're based off of the foundation
  75 +// one.
  76 +#if !defined(GTM_INLINE)
  77 +#if (defined (__GNUC__) && (__GNUC__ == 4)) || defined (__clang__)
  78 +#define GTM_INLINE static __inline__ __attribute__((always_inline))
  79 +#else
  80 +#define GTM_INLINE static __inline__
  81 +#endif
  82 +#endif
  83 +
  84 +// Give ourselves a consistent way of doing externs that links up nicely
  85 +// when mixing objc and objc++
  86 +#if !defined (GTM_EXTERN)
  87 +#if defined __cplusplus
  88 +#define GTM_EXTERN extern "C"
  89 +#define GTM_EXTERN_C_BEGIN extern "C" {
  90 +#define GTM_EXTERN_C_END }
  91 +#else
  92 +#define GTM_EXTERN extern
  93 +#define GTM_EXTERN_C_BEGIN
  94 +#define GTM_EXTERN_C_END
  95 +#endif
  96 +#endif
  97 +
  98 +// Give ourselves a consistent way of exporting things if we have visibility
  99 +// set to hidden.
  100 +#if !defined (GTM_EXPORT)
  101 +#define GTM_EXPORT __attribute__((visibility("default")))
  102 +#endif
  103 +
  104 +// Give ourselves a consistent way of declaring something as unused. This
  105 +// doesn't use __unused because that is only supported in gcc 4.2 and greater.
  106 +#if !defined (GTM_UNUSED)
  107 +#define GTM_UNUSED(x) ((void)(x))
  108 +#endif
  109 +
  110 +// _GTMDevLog & _GTMDevAssert
  111 +//
  112 +// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for
  113 +// developer level errors. This implementation simply macros to NSLog/NSAssert.
  114 +// It is not intended to be a general logging/reporting system.
  115 +//
  116 +// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert
  117 +// for a little more background on the usage of these macros.
  118 +//
  119 +// _GTMDevLog log some error/problem in debug builds
  120 +// _GTMDevAssert assert if conditon isn't met w/in a method/function
  121 +// in all builds.
  122 +//
  123 +// To replace this system, just provide different macro definitions in your
  124 +// prefix header. Remember, any implementation you provide *must* be thread
  125 +// safe since this could be called by anything in what ever situtation it has
  126 +// been placed in.
  127 +//
  128 +
  129 +// We only define the simple macros if nothing else has defined this.
  130 +#ifndef _GTMDevLog
  131 +
  132 +#ifdef DEBUG
  133 +#define _GTMDevLog(...) NSLog(__VA_ARGS__)
  134 +#else
  135 +#define _GTMDevLog(...) do { } while (0)
  136 +#endif
  137 +
  138 +#endif // _GTMDevLog
  139 +
  140 +#ifndef _GTMDevAssert
  141 +// we directly invoke the NSAssert handler so we can pass on the varargs
  142 +// (NSAssert doesn't have a macro we can use that takes varargs)
  143 +#if !defined(NS_BLOCK_ASSERTIONS)
  144 +#define _GTMDevAssert(condition, ...) \
  145 +do { \
  146 +if (!(condition)) { \
  147 +[[NSAssertionHandler currentHandler] \
  148 +handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
  149 +file:[NSString stringWithUTF8String:__FILE__] \
  150 +lineNumber:__LINE__ \
  151 +description:__VA_ARGS__]; \
  152 +} \
  153 +} while(0)
  154 +#else // !defined(NS_BLOCK_ASSERTIONS)
  155 +#define _GTMDevAssert(condition, ...) do { } while (0)
  156 +#endif // !defined(NS_BLOCK_ASSERTIONS)
  157 +
  158 +#endif // _GTMDevAssert
  159 +
  160 +// _GTMCompileAssert
  161 +// _GTMCompileAssert is an assert that is meant to fire at compile time if you
  162 +// want to check things at compile instead of runtime. For example if you
  163 +// want to check that a wchar is 4 bytes instead of 2 you would use
  164 +// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X)
  165 +// Note that the second "arg" is not in quotes, and must be a valid processor
  166 +// symbol in it's own right (no spaces, punctuation etc).
  167 +
  168 +// Wrapping this in an #ifndef allows external groups to define their own
  169 +// compile time assert scheme.
  170 +#ifndef _GTMCompileAssert
  171 +// We got this technique from here:
  172 +// http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html
  173 +
  174 +#define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg
  175 +#define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg)
  176 +#define _GTMCompileAssert(test, msg) \
  177 +typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ]
  178 +#endif // _GTMCompileAssert
  179 +
  180 +// ----------------------------------------------------------------------------
  181 +// CPP symbols defined based on the project settings so the GTM code has
  182 +// simple things to test against w/o scattering the knowledge of project
  183 +// setting through all the code.
  184 +// ----------------------------------------------------------------------------
  185 +
  186 +// Provide a single constant CPP symbol that all of GTM uses for ifdefing
  187 +// iPhone code.
  188 +#if TARGET_OS_IPHONE // iPhone SDK
  189 +// For iPhone specific stuff
  190 +#define GTM_IPHONE_SDK 1
  191 +#if TARGET_IPHONE_SIMULATOR
  192 +#define GTM_IPHONE_SIMULATOR 1
  193 +#else
  194 +#define GTM_IPHONE_DEVICE 1
  195 +#endif // TARGET_IPHONE_SIMULATOR
  196 +// By default, GTM has provided it's own unittesting support, define this
  197 +// to use the support provided by Xcode, especially for the Xcode4 support
  198 +// for unittesting.
  199 +#ifndef GTM_IPHONE_USE_SENTEST
  200 +#define GTM_IPHONE_USE_SENTEST 0
  201 +#endif
  202 +#else
  203 +// For MacOS specific stuff
  204 +#define GTM_MACOS_SDK 1
  205 +#endif
  206 +
  207 +// Some of our own availability macros
  208 +#if GTM_MACOS_SDK
  209 +#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE
  210 +#define GTM_AVAILABLE_ONLY_ON_MACOS
  211 +#else
  212 +#define GTM_AVAILABLE_ONLY_ON_IPHONE
  213 +#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE
  214 +#endif
  215 +
  216 +// Provide a symbol to include/exclude extra code for GC support. (This mainly
  217 +// just controls the inclusion of finalize methods).
  218 +#ifndef GTM_SUPPORT_GC
  219 +#if GTM_IPHONE_SDK
  220 +// iPhone never needs GC
  221 +#define GTM_SUPPORT_GC 0
  222 +#else
  223 +// We can't find a symbol to tell if GC is supported/required, so best we
  224 +// do on Mac targets is include it if we're on 10.5 or later.
  225 +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
  226 +#define GTM_SUPPORT_GC 0
  227 +#else
  228 +#define GTM_SUPPORT_GC 1
  229 +#endif
  230 +#endif
  231 +#endif
  232 +
  233 +// To simplify support for 64bit (and Leopard in general), we provide the type
  234 +// defines for non Leopard SDKs
  235 +#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
  236 +// NSInteger/NSUInteger and Max/Mins
  237 +#ifndef NSINTEGER_DEFINED
  238 +#if __LP64__ || NS_BUILD_32_LIKE_64
  239 +typedef long NSInteger;
  240 +typedef unsigned long NSUInteger;
  241 +#else
  242 +typedef int NSInteger;
  243 +typedef unsigned int NSUInteger;
  244 +#endif
  245 +#define NSIntegerMax LONG_MAX
  246 +#define NSIntegerMin LONG_MIN
  247 +#define NSUIntegerMax ULONG_MAX
  248 +#define NSINTEGER_DEFINED 1
  249 +#endif // NSINTEGER_DEFINED
  250 +// CGFloat
  251 +#ifndef CGFLOAT_DEFINED
  252 +#if defined(__LP64__) && __LP64__
  253 +// This really is an untested path (64bit on Tiger?)
  254 +typedef double CGFloat;
  255 +#define CGFLOAT_MIN DBL_MIN
  256 +#define CGFLOAT_MAX DBL_MAX
  257 +#define CGFLOAT_IS_DOUBLE 1
  258 +#else /* !defined(__LP64__) || !__LP64__ */
  259 +typedef float CGFloat;
  260 +#define CGFLOAT_MIN FLT_MIN
  261 +#define CGFLOAT_MAX FLT_MAX
  262 +#define CGFLOAT_IS_DOUBLE 0
  263 +#endif /* !defined(__LP64__) || !__LP64__ */
  264 +#define CGFLOAT_DEFINED 1
  265 +#endif // CGFLOAT_DEFINED
  266 +#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
  267 +
  268 +// Some support for advanced clang static analysis functionality
  269 +// See http://clang-analyzer.llvm.org/annotations.html
  270 +#ifndef __has_feature // Optional.
  271 +#define __has_feature(x) 0 // Compatibility with non-clang compilers.
  272 +#endif
  273 +
  274 +#ifndef NS_RETURNS_RETAINED
  275 +#if __has_feature(attribute_ns_returns_retained)
  276 +#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
  277 +#else
  278 +#define NS_RETURNS_RETAINED
  279 +#endif
  280 +#endif
  281 +
  282 +#ifndef NS_RETURNS_NOT_RETAINED
  283 +#if __has_feature(attribute_ns_returns_not_retained)
  284 +#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
  285 +#else
  286 +#define NS_RETURNS_NOT_RETAINED
  287 +#endif
  288 +#endif
  289 +
  290 +#ifndef CF_RETURNS_RETAINED
  291 +#if __has_feature(attribute_cf_returns_retained)
  292 +#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
  293 +#else
  294 +#define CF_RETURNS_RETAINED
  295 +#endif
  296 +#endif
  297 +
  298 +#ifndef CF_RETURNS_NOT_RETAINED
  299 +#if __has_feature(attribute_cf_returns_not_retained)
  300 +#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
  301 +#else
  302 +#define CF_RETURNS_NOT_RETAINED
  303 +#endif
  304 +#endif
  305 +
  306 +#ifndef NS_CONSUMED
  307 +#if __has_feature(attribute_ns_consumed)
  308 +#define NS_CONSUMED __attribute__((ns_consumed))
  309 +#else
  310 +#define NS_CONSUMED
  311 +#endif
  312 +#endif
  313 +
  314 +#ifndef CF_CONSUMED
  315 +#if __has_feature(attribute_cf_consumed)
  316 +#define CF_CONSUMED __attribute__((cf_consumed))
  317 +#else
  318 +#define CF_CONSUMED
  319 +#endif
  320 +#endif
  321 +
  322 +#ifndef NS_CONSUMES_SELF
  323 +#if __has_feature(attribute_ns_consumes_self)
  324 +#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
  325 +#else
  326 +#define NS_CONSUMES_SELF
  327 +#endif
  328 +#endif
  329 +
  330 +// Defined on 10.6 and above.
  331 +#ifndef NS_FORMAT_ARGUMENT
  332 +#define NS_FORMAT_ARGUMENT(A)
  333 +#endif
  334 +
  335 +// Defined on 10.6 and above.
  336 +#ifndef NS_FORMAT_FUNCTION
  337 +#define NS_FORMAT_FUNCTION(F,A)
  338 +#endif
  339 +
  340 +// Defined on 10.6 and above.
  341 +#ifndef CF_FORMAT_ARGUMENT
  342 +#define CF_FORMAT_ARGUMENT(A)
  343 +#endif
  344 +
  345 +// Defined on 10.6 and above.
  346 +#ifndef CF_FORMAT_FUNCTION
  347 +#define CF_FORMAT_FUNCTION(F,A)
  348 +#endif
  349 +
  350 +#ifndef GTM_NONNULL
  351 +#define GTM_NONNULL(x) __attribute__((nonnull(x)))
  352 +#endif
  353 +
  354 +#ifdef __OBJC__
  355 +
  356 +// Declared here so that it can easily be used for logging tracking if
  357 +// necessary. See GTMUnitTestDevLog.h for details.
  358 +@class NSString;
  359 +GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...);
  360 +
  361 +// Macro to allow you to create NSStrings out of other macros.
  362 +// #define FOO foo
  363 +// NSString *fooString = GTM_NSSTRINGIFY(FOO);
  364 +#if !defined (GTM_NSSTRINGIFY)
  365 +#define GTM_NSSTRINGIFY_INNER(x) @#x
  366 +#define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x)
  367 +#endif
  368 +
  369 +// Macro to allow fast enumeration when building for 10.5 or later, and
  370 +// reliance on NSEnumerator for 10.4. Remember, NSDictionary w/ FastEnumeration
  371 +// does keys, so pick the right thing, nothing is done on the FastEnumeration
  372 +// side to be sure you're getting what you wanted.
  373 +#ifndef GTM_FOREACH_OBJECT
  374 +#if TARGET_OS_IPHONE || !(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
  375 +#define GTM_FOREACH_ENUMEREE(element, enumeration) \
  376 +for (element in enumeration)
  377 +#define GTM_FOREACH_OBJECT(element, collection) \
  378 +for (element in collection)
  379 +#define GTM_FOREACH_KEY(element, collection) \
  380 +for (element in collection)
  381 +#else
  382 +#define GTM_FOREACH_ENUMEREE(element, enumeration) \
  383 +for (NSEnumerator *_ ## element ## _enum = enumeration; \
  384 +(element = [_ ## element ## _enum nextObject]) != nil; )
  385 +#define GTM_FOREACH_OBJECT(element, collection) \
  386 +GTM_FOREACH_ENUMEREE(element, [collection objectEnumerator])
  387 +#define GTM_FOREACH_KEY(element, collection) \
  388 +GTM_FOREACH_ENUMEREE(element, [collection keyEnumerator])
  389 +#endif
  390 +#endif
  391 +
  392 +// ============================================================================
  393 +
  394 +// To simplify support for both Leopard and Snow Leopard we declare
  395 +// the Snow Leopard protocols that we need here.
  396 +#if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
  397 +#define GTM_10_6_PROTOCOLS_DEFINED 1
  398 +@protocol NSConnectionDelegate
  399 +@end
  400 +@protocol NSAnimationDelegate
  401 +@end
  402 +@protocol NSImageDelegate
  403 +@end
  404 +@protocol NSTabViewDelegate
  405 +@end
  406 +#endif // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
  407 +
  408 +// GTM_SEL_STRING is for specifying selector (usually property) names to KVC
  409 +// or KVO methods.
  410 +// In debug it will generate warnings for undeclared selectors if
  411 +// -Wunknown-selector is turned on.
  412 +// In release it will have no runtime overhead.
  413 +#ifndef GTM_SEL_STRING
  414 +#ifdef DEBUG
  415 +#define GTM_SEL_STRING(selName) NSStringFromSelector(@selector(selName))
  416 +#else
  417 +#define GTM_SEL_STRING(selName) @#selName
  418 +#endif // DEBUG
  419 +#endif // GTM_SEL_STRING
  420 +
  421 +#endif // __OBJC__
Example/DSGTMBase64.xcodeproj/project.pbxproj 0 → 100644
  1 +++ a/Example/DSGTMBase64.xcodeproj/project.pbxproj
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 46;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 1A300006E80FADC96D405536 /* Pods_DSGTMBase64_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FC5033DA3F9F1F2BC821B24 /* Pods_DSGTMBase64_Example.framework */; };
  11 + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
  12 + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
  13 + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
  14 + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; };
  15 + 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; };
  16 + 6003F59E195388D20070C39A /* DSAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* DSAppDelegate.m */; };
  17 + 6003F5A7195388D20070C39A /* DSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* DSViewController.m */; };
  18 + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; };
  19 + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; };
  20 + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
  21 + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
  22 + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; };
  23 + 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
  24 + 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; };
  25 + 820A11B2508467D457BFE795 /* Pods_DSGTMBase64_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58A6A8FCA1AEFBB4A8E1E72C /* Pods_DSGTMBase64_Tests.framework */; };
  26 + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
  27 +/* End PBXBuildFile section */
  28 +
  29 +/* Begin PBXContainerItemProxy section */
  30 + 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = {
  31 + isa = PBXContainerItemProxy;
  32 + containerPortal = 6003F582195388D10070C39A /* Project object */;
  33 + proxyType = 1;
  34 + remoteGlobalIDString = 6003F589195388D20070C39A;
  35 + remoteInfo = DSGTMBase64;
  36 + };
  37 +/* End PBXContainerItemProxy section */
  38 +
  39 +/* Begin PBXFileReference section */
  40 + 4FC5033DA3F9F1F2BC821B24 /* Pods_DSGTMBase64_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DSGTMBase64_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  41 + 56AFEEBF90F51120B864AAD9 /* Pods-DSGTMBase64_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DSGTMBase64_Example.release.xcconfig"; path = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.release.xcconfig"; sourceTree = "<group>"; };
  42 + 58A6A8FCA1AEFBB4A8E1E72C /* Pods_DSGTMBase64_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DSGTMBase64_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  43 + 6003F58A195388D20070C39A /* DSGTMBase64_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DSGTMBase64_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
  44 + 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
  45 + 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
  46 + 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
  47 + 6003F595195388D20070C39A /* DSGTMBase64-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DSGTMBase64-Info.plist"; sourceTree = "<group>"; };
  48 + 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
  49 + 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
  50 + 6003F59B195388D20070C39A /* DSGTMBase64-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DSGTMBase64-Prefix.pch"; sourceTree = "<group>"; };
  51 + 6003F59C195388D20070C39A /* DSAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSAppDelegate.h; sourceTree = "<group>"; };
  52 + 6003F59D195388D20070C39A /* DSAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DSAppDelegate.m; sourceTree = "<group>"; };
  53 + 6003F5A5195388D20070C39A /* DSViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DSViewController.h; sourceTree = "<group>"; };
  54 + 6003F5A6195388D20070C39A /* DSViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DSViewController.m; sourceTree = "<group>"; };
  55 + 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
  56 + 6003F5AE195388D20070C39A /* DSGTMBase64_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DSGTMBase64_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  57 + 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
  58 + 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = "<group>"; };
  59 + 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
  60 + 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = "<group>"; };
  61 + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
  62 + 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  63 + 83CEFD649C13C871E331DF03 /* Pods-DSGTMBase64_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DSGTMBase64_Tests.release.xcconfig"; path = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.release.xcconfig"; sourceTree = "<group>"; };
  64 + 8629A13794264E442DFEB40F /* Pods-DSGTMBase64_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DSGTMBase64_Example.debug.xcconfig"; path = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.debug.xcconfig"; sourceTree = "<group>"; };
  65 + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  66 + 9910A38ED486479FA31483AE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
  67 + A190525375824A0839392833 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
  68 + C3B1A5C92DB1B766A6F53E03 /* DSGTMBase64.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = DSGTMBase64.podspec; path = ../DSGTMBase64.podspec; sourceTree = "<group>"; };
  69 + D5C488170ADF5FBC57DC94C8 /* Pods-DSGTMBase64_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DSGTMBase64_Tests.debug.xcconfig"; path = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.debug.xcconfig"; sourceTree = "<group>"; };
  70 +/* End PBXFileReference section */
  71 +
  72 +/* Begin PBXFrameworksBuildPhase section */
  73 + 6003F587195388D20070C39A /* Frameworks */ = {
  74 + isa = PBXFrameworksBuildPhase;
  75 + buildActionMask = 2147483647;
  76 + files = (
  77 + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */,
  78 + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */,
  79 + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */,
  80 + 1A300006E80FADC96D405536 /* Pods_DSGTMBase64_Example.framework in Frameworks */,
  81 + );
  82 + runOnlyForDeploymentPostprocessing = 0;
  83 + };
  84 + 6003F5AB195388D20070C39A /* Frameworks */ = {
  85 + isa = PBXFrameworksBuildPhase;
  86 + buildActionMask = 2147483647;
  87 + files = (
  88 + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */,
  89 + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */,
  90 + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */,
  91 + 820A11B2508467D457BFE795 /* Pods_DSGTMBase64_Tests.framework in Frameworks */,
  92 + );
  93 + runOnlyForDeploymentPostprocessing = 0;
  94 + };
  95 +/* End PBXFrameworksBuildPhase section */
  96 +
  97 +/* Begin PBXGroup section */
  98 + 030EC5CFB7E4B6B1C068FC06 /* Pods */ = {
  99 + isa = PBXGroup;
  100 + children = (
  101 + 8629A13794264E442DFEB40F /* Pods-DSGTMBase64_Example.debug.xcconfig */,
  102 + 56AFEEBF90F51120B864AAD9 /* Pods-DSGTMBase64_Example.release.xcconfig */,
  103 + D5C488170ADF5FBC57DC94C8 /* Pods-DSGTMBase64_Tests.debug.xcconfig */,
  104 + 83CEFD649C13C871E331DF03 /* Pods-DSGTMBase64_Tests.release.xcconfig */,
  105 + );
  106 + path = Pods;
  107 + sourceTree = "<group>";
  108 + };
  109 + 6003F581195388D10070C39A = {
  110 + isa = PBXGroup;
  111 + children = (
  112 + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
  113 + 6003F593195388D20070C39A /* Example for DSGTMBase64 */,
  114 + 6003F5B5195388D20070C39A /* Tests */,
  115 + 6003F58C195388D20070C39A /* Frameworks */,
  116 + 6003F58B195388D20070C39A /* Products */,
  117 + 030EC5CFB7E4B6B1C068FC06 /* Pods */,
  118 + );
  119 + sourceTree = "<group>";
  120 + };
  121 + 6003F58B195388D20070C39A /* Products */ = {
  122 + isa = PBXGroup;
  123 + children = (
  124 + 6003F58A195388D20070C39A /* DSGTMBase64_Example.app */,
  125 + 6003F5AE195388D20070C39A /* DSGTMBase64_Tests.xctest */,
  126 + );
  127 + name = Products;
  128 + sourceTree = "<group>";
  129 + };
  130 + 6003F58C195388D20070C39A /* Frameworks */ = {
  131 + isa = PBXGroup;
  132 + children = (
  133 + 6003F58D195388D20070C39A /* Foundation.framework */,
  134 + 6003F58F195388D20070C39A /* CoreGraphics.framework */,
  135 + 6003F591195388D20070C39A /* UIKit.framework */,
  136 + 6003F5AF195388D20070C39A /* XCTest.framework */,
  137 + 4FC5033DA3F9F1F2BC821B24 /* Pods_DSGTMBase64_Example.framework */,
  138 + 58A6A8FCA1AEFBB4A8E1E72C /* Pods_DSGTMBase64_Tests.framework */,
  139 + );
  140 + name = Frameworks;
  141 + sourceTree = "<group>";
  142 + };
  143 + 6003F593195388D20070C39A /* Example for DSGTMBase64 */ = {
  144 + isa = PBXGroup;
  145 + children = (
  146 + 6003F59C195388D20070C39A /* DSAppDelegate.h */,
  147 + 6003F59D195388D20070C39A /* DSAppDelegate.m */,
  148 + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */,
  149 + 6003F5A5195388D20070C39A /* DSViewController.h */,
  150 + 6003F5A6195388D20070C39A /* DSViewController.m */,
  151 + 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */,
  152 + 6003F5A8195388D20070C39A /* Images.xcassets */,
  153 + 6003F594195388D20070C39A /* Supporting Files */,
  154 + );
  155 + name = "Example for DSGTMBase64";
  156 + path = DSGTMBase64;
  157 + sourceTree = "<group>";
  158 + };
  159 + 6003F594195388D20070C39A /* Supporting Files */ = {
  160 + isa = PBXGroup;
  161 + children = (
  162 + 6003F595195388D20070C39A /* DSGTMBase64-Info.plist */,
  163 + 6003F596195388D20070C39A /* InfoPlist.strings */,
  164 + 6003F599195388D20070C39A /* main.m */,
  165 + 6003F59B195388D20070C39A /* DSGTMBase64-Prefix.pch */,
  166 + );
  167 + name = "Supporting Files";
  168 + sourceTree = "<group>";
  169 + };
  170 + 6003F5B5195388D20070C39A /* Tests */ = {
  171 + isa = PBXGroup;
  172 + children = (
  173 + 6003F5BB195388D20070C39A /* Tests.m */,
  174 + 6003F5B6195388D20070C39A /* Supporting Files */,
  175 + );
  176 + path = Tests;
  177 + sourceTree = "<group>";
  178 + };
  179 + 6003F5B6195388D20070C39A /* Supporting Files */ = {
  180 + isa = PBXGroup;
  181 + children = (
  182 + 6003F5B7195388D20070C39A /* Tests-Info.plist */,
  183 + 6003F5B8195388D20070C39A /* InfoPlist.strings */,
  184 + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */,
  185 + );
  186 + name = "Supporting Files";
  187 + sourceTree = "<group>";
  188 + };
  189 + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = {
  190 + isa = PBXGroup;
  191 + children = (
  192 + C3B1A5C92DB1B766A6F53E03 /* DSGTMBase64.podspec */,
  193 + 9910A38ED486479FA31483AE /* README.md */,
  194 + A190525375824A0839392833 /* LICENSE */,
  195 + );
  196 + name = "Podspec Metadata";
  197 + sourceTree = "<group>";
  198 + };
  199 +/* End PBXGroup section */
  200 +
  201 +/* Begin PBXNativeTarget section */
  202 + 6003F589195388D20070C39A /* DSGTMBase64_Example */ = {
  203 + isa = PBXNativeTarget;
  204 + buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "DSGTMBase64_Example" */;
  205 + buildPhases = (
  206 + AB15CC5333B4FD24298B864E /* [CP] Check Pods Manifest.lock */,
  207 + 6003F586195388D20070C39A /* Sources */,
  208 + 6003F587195388D20070C39A /* Frameworks */,
  209 + 6003F588195388D20070C39A /* Resources */,
  210 + 5CA6394DBAD3ED5CB878E4A9 /* [CP] Embed Pods Frameworks */,
  211 + );
  212 + buildRules = (
  213 + );
  214 + dependencies = (
  215 + );
  216 + name = DSGTMBase64_Example;
  217 + productName = DSGTMBase64;
  218 + productReference = 6003F58A195388D20070C39A /* DSGTMBase64_Example.app */;
  219 + productType = "com.apple.product-type.application";
  220 + };
  221 + 6003F5AD195388D20070C39A /* DSGTMBase64_Tests */ = {
  222 + isa = PBXNativeTarget;
  223 + buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "DSGTMBase64_Tests" */;
  224 + buildPhases = (
  225 + 1AE9DBFC55EC59A0D0CA4187 /* [CP] Check Pods Manifest.lock */,
  226 + 6003F5AA195388D20070C39A /* Sources */,
  227 + 6003F5AB195388D20070C39A /* Frameworks */,
  228 + 6003F5AC195388D20070C39A /* Resources */,
  229 + );
  230 + buildRules = (
  231 + );
  232 + dependencies = (
  233 + 6003F5B4195388D20070C39A /* PBXTargetDependency */,
  234 + );
  235 + name = DSGTMBase64_Tests;
  236 + productName = DSGTMBase64Tests;
  237 + productReference = 6003F5AE195388D20070C39A /* DSGTMBase64_Tests.xctest */;
  238 + productType = "com.apple.product-type.bundle.unit-test";
  239 + };
  240 +/* End PBXNativeTarget section */
  241 +
  242 +/* Begin PBXProject section */
  243 + 6003F582195388D10070C39A /* Project object */ = {
  244 + isa = PBXProject;
  245 + attributes = {
  246 + CLASSPREFIX = DS;
  247 + LastUpgradeCheck = 0720;
  248 + ORGANIZATIONNAME = "694092596@qq.com";
  249 + TargetAttributes = {
  250 + 6003F589195388D20070C39A = {
  251 + DevelopmentTeam = 94X49GG3ZW;
  252 + };
  253 + 6003F5AD195388D20070C39A = {
  254 + TestTargetID = 6003F589195388D20070C39A;
  255 + };
  256 + };
  257 + };
  258 + buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "DSGTMBase64" */;
  259 + compatibilityVersion = "Xcode 3.2";
  260 + developmentRegion = English;
  261 + hasScannedForEncodings = 0;
  262 + knownRegions = (
  263 + English,
  264 + en,
  265 + Base,
  266 + );
  267 + mainGroup = 6003F581195388D10070C39A;
  268 + productRefGroup = 6003F58B195388D20070C39A /* Products */;
  269 + projectDirPath = "";
  270 + projectRoot = "";
  271 + targets = (
  272 + 6003F589195388D20070C39A /* DSGTMBase64_Example */,
  273 + 6003F5AD195388D20070C39A /* DSGTMBase64_Tests */,
  274 + );
  275 + };
  276 +/* End PBXProject section */
  277 +
  278 +/* Begin PBXResourcesBuildPhase section */
  279 + 6003F588195388D20070C39A /* Resources */ = {
  280 + isa = PBXResourcesBuildPhase;
  281 + buildActionMask = 2147483647;
  282 + files = (
  283 + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */,
  284 + 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */,
  285 + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */,
  286 + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */,
  287 + );
  288 + runOnlyForDeploymentPostprocessing = 0;
  289 + };
  290 + 6003F5AC195388D20070C39A /* Resources */ = {
  291 + isa = PBXResourcesBuildPhase;
  292 + buildActionMask = 2147483647;
  293 + files = (
  294 + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */,
  295 + );
  296 + runOnlyForDeploymentPostprocessing = 0;
  297 + };
  298 +/* End PBXResourcesBuildPhase section */
  299 +
  300 +/* Begin PBXShellScriptBuildPhase section */
  301 + 1AE9DBFC55EC59A0D0CA4187 /* [CP] Check Pods Manifest.lock */ = {
  302 + isa = PBXShellScriptBuildPhase;
  303 + buildActionMask = 2147483647;
  304 + files = (
  305 + );
  306 + inputFileListPaths = (
  307 + );
  308 + inputPaths = (
  309 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  310 + "${PODS_ROOT}/Manifest.lock",
  311 + );
  312 + name = "[CP] Check Pods Manifest.lock";
  313 + outputFileListPaths = (
  314 + );
  315 + outputPaths = (
  316 + "$(DERIVED_FILE_DIR)/Pods-DSGTMBase64_Tests-checkManifestLockResult.txt",
  317 + );
  318 + runOnlyForDeploymentPostprocessing = 0;
  319 + shellPath = /bin/sh;
  320 + 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";
  321 + showEnvVarsInLog = 0;
  322 + };
  323 + 5CA6394DBAD3ED5CB878E4A9 /* [CP] Embed Pods Frameworks */ = {
  324 + isa = PBXShellScriptBuildPhase;
  325 + buildActionMask = 2147483647;
  326 + files = (
  327 + );
  328 + inputPaths = (
  329 + "${PODS_ROOT}/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-frameworks.sh",
  330 + "${BUILT_PRODUCTS_DIR}/DSGTMBase64/DSGTMBase64.framework",
  331 + );
  332 + name = "[CP] Embed Pods Frameworks";
  333 + outputPaths = (
  334 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DSGTMBase64.framework",
  335 + );
  336 + runOnlyForDeploymentPostprocessing = 0;
  337 + shellPath = /bin/sh;
  338 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-frameworks.sh\"\n";
  339 + showEnvVarsInLog = 0;
  340 + };
  341 + AB15CC5333B4FD24298B864E /* [CP] Check Pods Manifest.lock */ = {
  342 + isa = PBXShellScriptBuildPhase;
  343 + buildActionMask = 2147483647;
  344 + files = (
  345 + );
  346 + inputFileListPaths = (
  347 + );
  348 + inputPaths = (
  349 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  350 + "${PODS_ROOT}/Manifest.lock",
  351 + );
  352 + name = "[CP] Check Pods Manifest.lock";
  353 + outputFileListPaths = (
  354 + );
  355 + outputPaths = (
  356 + "$(DERIVED_FILE_DIR)/Pods-DSGTMBase64_Example-checkManifestLockResult.txt",
  357 + );
  358 + runOnlyForDeploymentPostprocessing = 0;
  359 + shellPath = /bin/sh;
  360 + 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";
  361 + showEnvVarsInLog = 0;
  362 + };
  363 +/* End PBXShellScriptBuildPhase section */
  364 +
  365 +/* Begin PBXSourcesBuildPhase section */
  366 + 6003F586195388D20070C39A /* Sources */ = {
  367 + isa = PBXSourcesBuildPhase;
  368 + buildActionMask = 2147483647;
  369 + files = (
  370 + 6003F59E195388D20070C39A /* DSAppDelegate.m in Sources */,
  371 + 6003F5A7195388D20070C39A /* DSViewController.m in Sources */,
  372 + 6003F59A195388D20070C39A /* main.m in Sources */,
  373 + );
  374 + runOnlyForDeploymentPostprocessing = 0;
  375 + };
  376 + 6003F5AA195388D20070C39A /* Sources */ = {
  377 + isa = PBXSourcesBuildPhase;
  378 + buildActionMask = 2147483647;
  379 + files = (
  380 + 6003F5BC195388D20070C39A /* Tests.m in Sources */,
  381 + );
  382 + runOnlyForDeploymentPostprocessing = 0;
  383 + };
  384 +/* End PBXSourcesBuildPhase section */
  385 +
  386 +/* Begin PBXTargetDependency section */
  387 + 6003F5B4195388D20070C39A /* PBXTargetDependency */ = {
  388 + isa = PBXTargetDependency;
  389 + target = 6003F589195388D20070C39A /* DSGTMBase64_Example */;
  390 + targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */;
  391 + };
  392 +/* End PBXTargetDependency section */
  393 +
  394 +/* Begin PBXVariantGroup section */
  395 + 6003F596195388D20070C39A /* InfoPlist.strings */ = {
  396 + isa = PBXVariantGroup;
  397 + children = (
  398 + 6003F597195388D20070C39A /* en */,
  399 + );
  400 + name = InfoPlist.strings;
  401 + sourceTree = "<group>";
  402 + };
  403 + 6003F5B8195388D20070C39A /* InfoPlist.strings */ = {
  404 + isa = PBXVariantGroup;
  405 + children = (
  406 + 6003F5B9195388D20070C39A /* en */,
  407 + );
  408 + name = InfoPlist.strings;
  409 + sourceTree = "<group>";
  410 + };
  411 + 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = {
  412 + isa = PBXVariantGroup;
  413 + children = (
  414 + 71719F9E1E33DC2100824A3D /* Base */,
  415 + );
  416 + name = LaunchScreen.storyboard;
  417 + sourceTree = "<group>";
  418 + };
  419 +/* End PBXVariantGroup section */
  420 +
  421 +/* Begin XCBuildConfiguration section */
  422 + 6003F5BD195388D20070C39A /* Debug */ = {
  423 + isa = XCBuildConfiguration;
  424 + buildSettings = {
  425 + ALWAYS_SEARCH_USER_PATHS = NO;
  426 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  427 + CLANG_CXX_LIBRARY = "libc++";
  428 + CLANG_ENABLE_MODULES = YES;
  429 + CLANG_ENABLE_OBJC_ARC = YES;
  430 + CLANG_WARN_BOOL_CONVERSION = YES;
  431 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  432 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  433 + CLANG_WARN_EMPTY_BODY = YES;
  434 + CLANG_WARN_ENUM_CONVERSION = YES;
  435 + CLANG_WARN_INT_CONVERSION = YES;
  436 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  437 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  438 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  439 + COPY_PHASE_STRIP = NO;
  440 + ENABLE_TESTABILITY = YES;
  441 + GCC_C_LANGUAGE_STANDARD = gnu99;
  442 + GCC_DYNAMIC_NO_PIC = NO;
  443 + GCC_OPTIMIZATION_LEVEL = 0;
  444 + GCC_PREPROCESSOR_DEFINITIONS = (
  445 + "DEBUG=1",
  446 + "$(inherited)",
  447 + );
  448 + GCC_SYMBOLS_PRIVATE_EXTERN = NO;
  449 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  450 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  451 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  452 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  453 + GCC_WARN_UNUSED_FUNCTION = YES;
  454 + GCC_WARN_UNUSED_VARIABLE = YES;
  455 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  456 + ONLY_ACTIVE_ARCH = YES;
  457 + SDKROOT = iphoneos;
  458 + TARGETED_DEVICE_FAMILY = "1,2";
  459 + };
  460 + name = Debug;
  461 + };
  462 + 6003F5BE195388D20070C39A /* Release */ = {
  463 + isa = XCBuildConfiguration;
  464 + buildSettings = {
  465 + ALWAYS_SEARCH_USER_PATHS = NO;
  466 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  467 + CLANG_CXX_LIBRARY = "libc++";
  468 + CLANG_ENABLE_MODULES = YES;
  469 + CLANG_ENABLE_OBJC_ARC = YES;
  470 + CLANG_WARN_BOOL_CONVERSION = YES;
  471 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  472 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  473 + CLANG_WARN_EMPTY_BODY = YES;
  474 + CLANG_WARN_ENUM_CONVERSION = YES;
  475 + CLANG_WARN_INT_CONVERSION = YES;
  476 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  477 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  478 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  479 + COPY_PHASE_STRIP = YES;
  480 + ENABLE_NS_ASSERTIONS = NO;
  481 + GCC_C_LANGUAGE_STANDARD = gnu99;
  482 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  483 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  484 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  485 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  486 + GCC_WARN_UNUSED_FUNCTION = YES;
  487 + GCC_WARN_UNUSED_VARIABLE = YES;
  488 + IPHONEOS_DEPLOYMENT_TARGET = 9.3;
  489 + SDKROOT = iphoneos;
  490 + TARGETED_DEVICE_FAMILY = "1,2";
  491 + VALIDATE_PRODUCT = YES;
  492 + };
  493 + name = Release;
  494 + };
  495 + 6003F5C0195388D20070C39A /* Debug */ = {
  496 + isa = XCBuildConfiguration;
  497 + baseConfigurationReference = 8629A13794264E442DFEB40F /* Pods-DSGTMBase64_Example.debug.xcconfig */;
  498 + buildSettings = {
  499 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  500 + DEVELOPMENT_TEAM = 94X49GG3ZW;
  501 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  502 + GCC_PREFIX_HEADER = "DSGTMBase64/DSGTMBase64-Prefix.pch";
  503 + INFOPLIST_FILE = "DSGTMBase64/DSGTMBase64-Info.plist";
  504 + MODULE_NAME = ExampleApp;
  505 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  506 + PRODUCT_NAME = "$(TARGET_NAME)";
  507 + SWIFT_VERSION = 4.0;
  508 + WRAPPER_EXTENSION = app;
  509 + };
  510 + name = Debug;
  511 + };
  512 + 6003F5C1195388D20070C39A /* Release */ = {
  513 + isa = XCBuildConfiguration;
  514 + baseConfigurationReference = 56AFEEBF90F51120B864AAD9 /* Pods-DSGTMBase64_Example.release.xcconfig */;
  515 + buildSettings = {
  516 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  517 + DEVELOPMENT_TEAM = 94X49GG3ZW;
  518 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  519 + GCC_PREFIX_HEADER = "DSGTMBase64/DSGTMBase64-Prefix.pch";
  520 + INFOPLIST_FILE = "DSGTMBase64/DSGTMBase64-Info.plist";
  521 + MODULE_NAME = ExampleApp;
  522 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  523 + PRODUCT_NAME = "$(TARGET_NAME)";
  524 + SWIFT_VERSION = 4.0;
  525 + WRAPPER_EXTENSION = app;
  526 + };
  527 + name = Release;
  528 + };
  529 + 6003F5C3195388D20070C39A /* Debug */ = {
  530 + isa = XCBuildConfiguration;
  531 + baseConfigurationReference = D5C488170ADF5FBC57DC94C8 /* Pods-DSGTMBase64_Tests.debug.xcconfig */;
  532 + buildSettings = {
  533 + BUNDLE_LOADER = "$(TEST_HOST)";
  534 + FRAMEWORK_SEARCH_PATHS = (
  535 + "$(PLATFORM_DIR)/Developer/Library/Frameworks",
  536 + "$(inherited)",
  537 + "$(DEVELOPER_FRAMEWORKS_DIR)",
  538 + );
  539 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  540 + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
  541 + GCC_PREPROCESSOR_DEFINITIONS = (
  542 + "DEBUG=1",
  543 + "$(inherited)",
  544 + );
  545 + INFOPLIST_FILE = "Tests/Tests-Info.plist";
  546 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  547 + PRODUCT_NAME = "$(TARGET_NAME)";
  548 + SWIFT_VERSION = 4.0;
  549 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DSGTMBase64_Example.app/DSGTMBase64_Example";
  550 + WRAPPER_EXTENSION = xctest;
  551 + };
  552 + name = Debug;
  553 + };
  554 + 6003F5C4195388D20070C39A /* Release */ = {
  555 + isa = XCBuildConfiguration;
  556 + baseConfigurationReference = 83CEFD649C13C871E331DF03 /* Pods-DSGTMBase64_Tests.release.xcconfig */;
  557 + buildSettings = {
  558 + BUNDLE_LOADER = "$(TEST_HOST)";
  559 + FRAMEWORK_SEARCH_PATHS = (
  560 + "$(PLATFORM_DIR)/Developer/Library/Frameworks",
  561 + "$(inherited)",
  562 + "$(DEVELOPER_FRAMEWORKS_DIR)",
  563 + );
  564 + GCC_PRECOMPILE_PREFIX_HEADER = YES;
  565 + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
  566 + INFOPLIST_FILE = "Tests/Tests-Info.plist";
  567 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  568 + PRODUCT_NAME = "$(TARGET_NAME)";
  569 + SWIFT_VERSION = 4.0;
  570 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DSGTMBase64_Example.app/DSGTMBase64_Example";
  571 + WRAPPER_EXTENSION = xctest;
  572 + };
  573 + name = Release;
  574 + };
  575 +/* End XCBuildConfiguration section */
  576 +
  577 +/* Begin XCConfigurationList section */
  578 + 6003F585195388D10070C39A /* Build configuration list for PBXProject "DSGTMBase64" */ = {
  579 + isa = XCConfigurationList;
  580 + buildConfigurations = (
  581 + 6003F5BD195388D20070C39A /* Debug */,
  582 + 6003F5BE195388D20070C39A /* Release */,
  583 + );
  584 + defaultConfigurationIsVisible = 0;
  585 + defaultConfigurationName = Release;
  586 + };
  587 + 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "DSGTMBase64_Example" */ = {
  588 + isa = XCConfigurationList;
  589 + buildConfigurations = (
  590 + 6003F5C0195388D20070C39A /* Debug */,
  591 + 6003F5C1195388D20070C39A /* Release */,
  592 + );
  593 + defaultConfigurationIsVisible = 0;
  594 + defaultConfigurationName = Release;
  595 + };
  596 + 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "DSGTMBase64_Tests" */ = {
  597 + isa = XCConfigurationList;
  598 + buildConfigurations = (
  599 + 6003F5C3195388D20070C39A /* Debug */,
  600 + 6003F5C4195388D20070C39A /* Release */,
  601 + );
  602 + defaultConfigurationIsVisible = 0;
  603 + defaultConfigurationName = Release;
  604 + };
  605 +/* End XCConfigurationList section */
  606 + };
  607 + rootObject = 6003F582195388D10070C39A /* Project object */;
  608 +}
Example/DSGTMBase64.xcodeproj/project.xcworkspace/contents.xcworkspacedata 0 → 100644
  1 +++ a/Example/DSGTMBase64.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "self:DSGTMBase64.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
Example/DSGTMBase64.xcodeproj/xcshareddata/xcschemes/DSGTMBase64-Example.xcscheme 0 → 100644
  1 +++ a/Example/DSGTMBase64.xcodeproj/xcshareddata/xcschemes/DSGTMBase64-Example.xcscheme
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "0720"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "6003F589195388D20070C39A"
  18 + BuildableName = "DSGTMBase64_Example.app"
  19 + BlueprintName = "DSGTMBase64_Example"
  20 + ReferencedContainer = "container:DSGTMBase64.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + <TestableReference
  32 + skipped = "NO">
  33 + <BuildableReference
  34 + BuildableIdentifier = "primary"
  35 + BlueprintIdentifier = "6003F5AD195388D20070C39A"
  36 + BuildableName = "DSGTMBase64_Tests.xctest"
  37 + BlueprintName = "DSGTMBase64_Tests"
  38 + ReferencedContainer = "container:DSGTMBase64.xcodeproj">
  39 + </BuildableReference>
  40 + </TestableReference>
  41 + </Testables>
  42 + <MacroExpansion>
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "6003F589195388D20070C39A"
  46 + BuildableName = "DSGTMBase64_Example.app"
  47 + BlueprintName = "DSGTMBase64_Example"
  48 + ReferencedContainer = "container:DSGTMBase64.xcodeproj">
  49 + </BuildableReference>
  50 + </MacroExpansion>
  51 + <AdditionalOptions>
  52 + </AdditionalOptions>
  53 + </TestAction>
  54 + <LaunchAction
  55 + buildConfiguration = "Debug"
  56 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  57 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  58 + launchStyle = "0"
  59 + useCustomWorkingDirectory = "NO"
  60 + ignoresPersistentStateOnLaunch = "NO"
  61 + debugDocumentVersioning = "YES"
  62 + debugServiceExtension = "internal"
  63 + allowLocationSimulation = "YES">
  64 + <BuildableProductRunnable
  65 + runnableDebuggingMode = "0">
  66 + <BuildableReference
  67 + BuildableIdentifier = "primary"
  68 + BlueprintIdentifier = "6003F589195388D20070C39A"
  69 + BuildableName = "DSGTMBase64_Example.app"
  70 + BlueprintName = "DSGTMBase64_Example"
  71 + ReferencedContainer = "container:DSGTMBase64.xcodeproj">
  72 + </BuildableReference>
  73 + </BuildableProductRunnable>
  74 + <AdditionalOptions>
  75 + </AdditionalOptions>
  76 + </LaunchAction>
  77 + <ProfileAction
  78 + buildConfiguration = "Release"
  79 + shouldUseLaunchSchemeArgsEnv = "YES"
  80 + savedToolIdentifier = ""
  81 + useCustomWorkingDirectory = "NO"
  82 + debugDocumentVersioning = "YES">
  83 + <BuildableProductRunnable
  84 + runnableDebuggingMode = "0">
  85 + <BuildableReference
  86 + BuildableIdentifier = "primary"
  87 + BlueprintIdentifier = "6003F589195388D20070C39A"
  88 + BuildableName = "DSGTMBase64_Example.app"
  89 + BlueprintName = "DSGTMBase64_Example"
  90 + ReferencedContainer = "container:DSGTMBase64.xcodeproj">
  91 + </BuildableReference>
  92 + </BuildableProductRunnable>
  93 + </ProfileAction>
  94 + <AnalyzeAction
  95 + buildConfiguration = "Debug">
  96 + </AnalyzeAction>
  97 + <ArchiveAction
  98 + buildConfiguration = "Release"
  99 + revealArchiveInOrganizer = "YES">
  100 + </ArchiveAction>
  101 +</Scheme>
Example/DSGTMBase64.xcworkspace/contents.xcworkspacedata 0 → 100644
  1 +++ a/Example/DSGTMBase64.xcworkspace/contents.xcworkspacedata
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:DSGTMBase64.xcodeproj">
  6 + </FileRef>
  7 + <FileRef
  8 + location = "group:Pods/Pods.xcodeproj">
  9 + </FileRef>
  10 +</Workspace>
Example/DSGTMBase64.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 0 → 100644
  1 +++ a/Example/DSGTMBase64.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
Example/DSGTMBase64/Base.lproj/LaunchScreen.storyboard 0 → 100644
  1 +++ a/Example/DSGTMBase64/Base.lproj/LaunchScreen.storyboard
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <scenes>
  12 + <!--View Controller-->
  13 + <scene sceneID="EHf-IW-A2E">
  14 + <objects>
  15 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
  18 + <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
  19 + </layoutGuides>
  20 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  21 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  22 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  24 + </view>
  25 + </viewController>
  26 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  27 + </objects>
  28 + <point key="canvasLocation" x="53" y="375"/>
  29 + </scene>
  30 + </scenes>
  31 +</document>
Example/DSGTMBase64/Base.lproj/Main.storyboard 0 → 100644
  1 +++ a/Example/DSGTMBase64/Base.lproj/Main.storyboard
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="whP-gf-Uak">
  3 + <device id="retina4_7" orientation="portrait">
  4 + <adaptation id="fullscreen"/>
  5 + </device>
  6 + <dependencies>
  7 + <deployment identifier="iOS"/>
  8 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
  9 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  10 + </dependencies>
  11 + <scenes>
  12 + <!--View Controller-->
  13 + <scene sceneID="wQg-tq-qST">
  14 + <objects>
  15 + <viewController id="whP-gf-Uak" customClass="DSViewController" sceneMemberID="viewController">
  16 + <layoutGuides>
  17 + <viewControllerLayoutGuide type="top" id="uEw-UM-LJ8"/>
  18 + <viewControllerLayoutGuide type="bottom" id="Mvr-aV-6Um"/>
  19 + </layoutGuides>
  20 + <view key="view" contentMode="scaleToFill" id="TpU-gO-2f1">
  21 + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
  22 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  23 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  24 + </view>
  25 + </viewController>
  26 + <placeholder placeholderIdentifier="IBFirstResponder" id="tc2-Qw-aMS" userLabel="First Responder" sceneMemberID="firstResponder"/>
  27 + </objects>
  28 + <point key="canvasLocation" x="305" y="433"/>
  29 + </scene>
  30 + </scenes>
  31 +</document>
Example/DSGTMBase64/DSAppDelegate.h 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSAppDelegate.h
  1 +//
  2 +// DSAppDelegate.h
  3 +// DSGTMBase64
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +
  11 +@interface DSAppDelegate : UIResponder <UIApplicationDelegate>
  12 +
  13 +@property (strong, nonatomic) UIWindow *window;
  14 +
  15 +@end
Example/DSGTMBase64/DSAppDelegate.m 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSAppDelegate.m
  1 +//
  2 +// DSAppDelegate.m
  3 +// DSGTMBase64
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import "DSAppDelegate.h"
  10 +
  11 +@implementation DSAppDelegate
  12 +
  13 +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  14 +{
  15 + // Override point for customization after application launch.
  16 + return YES;
  17 +}
  18 +
  19 +- (void)applicationWillResignActive:(UIApplication *)application
  20 +{
  21 + // 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.
  22 + // 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.
  23 +}
  24 +
  25 +- (void)applicationDidEnterBackground:(UIApplication *)application
  26 +{
  27 + // 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.
  28 + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
  29 +}
  30 +
  31 +- (void)applicationWillEnterForeground:(UIApplication *)application
  32 +{
  33 + // 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.
  34 +}
  35 +
  36 +- (void)applicationDidBecomeActive:(UIApplication *)application
  37 +{
  38 + // 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.
  39 +}
  40 +
  41 +- (void)applicationWillTerminate:(UIApplication *)application
  42 +{
  43 + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
  44 +}
  45 +
  46 +@end
Example/DSGTMBase64/DSGTMBase64-Info.plist 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSGTMBase64-Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleDisplayName</key>
  8 + <string>${PRODUCT_NAME}</string>
  9 + <key>CFBundleExecutable</key>
  10 + <string>${EXECUTABLE_NAME}</string>
  11 + <key>CFBundleIdentifier</key>
  12 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  13 + <key>CFBundleInfoDictionaryVersion</key>
  14 + <string>6.0</string>
  15 + <key>CFBundleName</key>
  16 + <string>${PRODUCT_NAME}</string>
  17 + <key>CFBundlePackageType</key>
  18 + <string>APPL</string>
  19 + <key>CFBundleShortVersionString</key>
  20 + <string>1.0</string>
  21 + <key>CFBundleSignature</key>
  22 + <string>????</string>
  23 + <key>CFBundleVersion</key>
  24 + <string>1.0</string>
  25 + <key>LSRequiresIPhoneOS</key>
  26 + <true/>
  27 + <key>UILaunchStoryboardName</key>
  28 + <string>LaunchScreen</string>
  29 + <key>UIMainStoryboardFile</key>
  30 + <string>Main</string>
  31 + <key>UIRequiredDeviceCapabilities</key>
  32 + <array>
  33 + <string>armv7</string>
  34 + </array>
  35 + <key>UISupportedInterfaceOrientations</key>
  36 + <array>
  37 + <string>UIInterfaceOrientationPortrait</string>
  38 + <string>UIInterfaceOrientationLandscapeLeft</string>
  39 + <string>UIInterfaceOrientationLandscapeRight</string>
  40 + </array>
  41 + <key>UISupportedInterfaceOrientations~ipad</key>
  42 + <array>
  43 + <string>UIInterfaceOrientationPortrait</string>
  44 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  45 + <string>UIInterfaceOrientationLandscapeLeft</string>
  46 + <string>UIInterfaceOrientationLandscapeRight</string>
  47 + </array>
  48 +</dict>
  49 +</plist>
Example/DSGTMBase64/DSGTMBase64-Prefix.pch 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSGTMBase64-Prefix.pch
  1 +//
  2 +// Prefix header
  3 +//
  4 +// The contents of this file are implicitly included at the beginning of every source file.
  5 +//
  6 +
  7 +#import <Availability.h>
  8 +
  9 +#ifndef __IPHONE_5_0
  10 +#warning "This project uses features only available in iOS SDK 5.0 and later."
  11 +#endif
  12 +
  13 +#ifdef __OBJC__
  14 + @import UIKit;
  15 + @import Foundation;
  16 +#endif
Example/DSGTMBase64/DSViewController.h 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSViewController.h
  1 +//
  2 +// DSViewController.h
  3 +// DSGTMBase64
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +
  11 +@interface DSViewController : UIViewController
  12 +
  13 +@end
Example/DSGTMBase64/DSViewController.m 0 → 100644
  1 +++ a/Example/DSGTMBase64/DSViewController.m
  1 +//
  2 +// DSViewController.m
  3 +// DSGTMBase64
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import "DSViewController.h"
  10 +
  11 +@interface DSViewController ()
  12 +
  13 +@end
  14 +
  15 +@implementation DSViewController
  16 +
  17 +- (void)viewDidLoad
  18 +{
  19 + [super viewDidLoad];
  20 + // Do any additional setup after loading the view, typically from a nib.
  21 +}
  22 +
  23 +- (void)didReceiveMemoryWarning
  24 +{
  25 + [super didReceiveMemoryWarning];
  26 + // Dispose of any resources that can be recreated.
  27 +}
  28 +
  29 +@end
Example/DSGTMBase64/Images.xcassets/AppIcon.appiconset/Contents.json 0 → 100644
  1 +++ a/Example/DSGTMBase64/Images.xcassets/AppIcon.appiconset/Contents.json
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "iphone",
  5 + "size" : "20x20",
  6 + "scale" : "2x"
  7 + },
  8 + {
  9 + "idiom" : "iphone",
  10 + "size" : "20x20",
  11 + "scale" : "3x"
  12 + },
  13 + {
  14 + "idiom" : "iphone",
  15 + "size" : "29x29",
  16 + "scale" : "2x"
  17 + },
  18 + {
  19 + "idiom" : "iphone",
  20 + "size" : "29x29",
  21 + "scale" : "3x"
  22 + },
  23 + {
  24 + "idiom" : "iphone",
  25 + "size" : "40x40",
  26 + "scale" : "2x"
  27 + },
  28 + {
  29 + "idiom" : "iphone",
  30 + "size" : "40x40",
  31 + "scale" : "3x"
  32 + },
  33 + {
  34 + "idiom" : "iphone",
  35 + "size" : "60x60",
  36 + "scale" : "2x"
  37 + },
  38 + {
  39 + "idiom" : "iphone",
  40 + "size" : "60x60",
  41 + "scale" : "3x"
  42 + },
  43 + {
  44 + "idiom" : "ipad",
  45 + "size" : "20x20",
  46 + "scale" : "1x"
  47 + },
  48 + {
  49 + "idiom" : "ipad",
  50 + "size" : "20x20",
  51 + "scale" : "2x"
  52 + },
  53 + {
  54 + "idiom" : "ipad",
  55 + "size" : "29x29",
  56 + "scale" : "1x"
  57 + },
  58 + {
  59 + "idiom" : "ipad",
  60 + "size" : "29x29",
  61 + "scale" : "2x"
  62 + },
  63 + {
  64 + "idiom" : "ipad",
  65 + "size" : "40x40",
  66 + "scale" : "1x"
  67 + },
  68 + {
  69 + "idiom" : "ipad",
  70 + "size" : "40x40",
  71 + "scale" : "2x"
  72 + },
  73 + {
  74 + "idiom" : "ipad",
  75 + "size" : "76x76",
  76 + "scale" : "1x"
  77 + },
  78 + {
  79 + "idiom" : "ipad",
  80 + "size" : "76x76",
  81 + "scale" : "2x"
  82 + },
  83 + {
  84 + "idiom" : "ipad",
  85 + "size" : "83.5x83.5",
  86 + "scale" : "2x"
  87 + },
  88 + {
  89 + "idiom" : "ios-marketing",
  90 + "size" : "1024x1024",
  91 + "scale" : "1x"
  92 + }
  93 + ],
  94 + "info" : {
  95 + "version" : 1,
  96 + "author" : "xcode"
  97 + }
  98 +}
Example/DSGTMBase64/en.lproj/InfoPlist.strings 0 → 100644
  1 +++ a/Example/DSGTMBase64/en.lproj/InfoPlist.strings
  1 +/* Localized versions of Info.plist keys */
  2 +
Example/DSGTMBase64/main.m 0 → 100644
  1 +++ a/Example/DSGTMBase64/main.m
  1 +//
  2 +// main.m
  3 +// DSGTMBase64
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +@import UIKit;
  10 +#import "DSAppDelegate.h"
  11 +
  12 +int main(int argc, char * argv[])
  13 +{
  14 + @autoreleasepool {
  15 + return UIApplicationMain(argc, argv, nil, NSStringFromClass([DSAppDelegate class]));
  16 + }
  17 +}
Example/Podfile 0 → 100644
  1 +++ a/Example/Podfile
  1 +use_frameworks!
  2 +
  3 +platform :ios, '8.0'
  4 +
  5 +target 'DSGTMBase64_Example' do
  6 + pod 'DSGTMBase64', :path => '../'
  7 +
  8 + target 'DSGTMBase64_Tests' do
  9 + inherit! :search_paths
  10 +
  11 +
  12 + end
  13 +end
Example/Podfile.lock 0 → 100644
  1 +++ a/Example/Podfile.lock
  1 +PODS:
  2 + - DSGTMBase64 (0.0.1)
  3 +
  4 +DEPENDENCIES:
  5 + - DSGTMBase64 (from `../`)
  6 +
  7 +EXTERNAL SOURCES:
  8 + DSGTMBase64:
  9 + :path: "../"
  10 +
  11 +SPEC CHECKSUMS:
  12 + DSGTMBase64: afd7eb786e899cc35f2fe2181726be146ee4d107
  13 +
  14 +PODFILE CHECKSUM: f36dfaff6cd4d433415b8d12e29c6d3c89e9ef97
  15 +
  16 +COCOAPODS: 1.8.4
Example/Pods/Local Podspecs/DSGTMBase64.podspec.json 0 → 100644
  1 +++ a/Example/Pods/Local Podspecs/DSGTMBase64.podspec.json
  1 +{
  2 + "name": "DSGTMBase64",
  3 + "version": "0.0.1",
  4 + "summary": "电商分类模块",
  5 + "homepage": "http://bj.gitlab.cnlive.com/DSIOSTeam",
  6 + "authors": {
  7 + "DSIOSTeam": "694092596@qq.com"
  8 + },
  9 + "license": "MIT",
  10 + "source": {
  11 + "git": "http://bj.gitlab.cnlive.com/DSIOSTeam/DSGTMBase64.git",
  12 + "tag": "0.0.1"
  13 + },
  14 + "platforms": {
  15 + "ios": "9.0"
  16 + },
  17 + "source_files": "DSGTMBase64/Classes/*",
  18 + "frameworks": "Foundation"
  19 +}
Example/Pods/Manifest.lock 0 → 100644
  1 +++ a/Example/Pods/Manifest.lock
  1 +PODS:
  2 + - DSGTMBase64 (0.0.1)
  3 +
  4 +DEPENDENCIES:
  5 + - DSGTMBase64 (from `../`)
  6 +
  7 +EXTERNAL SOURCES:
  8 + DSGTMBase64:
  9 + :path: "../"
  10 +
  11 +SPEC CHECKSUMS:
  12 + DSGTMBase64: afd7eb786e899cc35f2fe2181726be146ee4d107
  13 +
  14 +PODFILE CHECKSUM: f36dfaff6cd4d433415b8d12e29c6d3c89e9ef97
  15 +
  16 +COCOAPODS: 1.8.4
Example/Pods/Pods.xcodeproj/project.pbxproj 0 → 100644
  1 +++ a/Example/Pods/Pods.xcodeproj/project.pbxproj
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 46;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 08E72C4E928550617817E44CE00D3AD3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
  11 + 197EE11255DD04FA607BE58C8F034EE9 /* DSGTMBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C84F156059115E4DA731B8BAE26CEA6 /* DSGTMBase64.m */; };
  12 + 1BA90C53741C9E6DEA89CDA733070D66 /* Pods-DSGTMBase64_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A7019F401E0B0CF84A2A1A833DA09225 /* Pods-DSGTMBase64_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
  13 + 2CF3C6215023731EED81FAA1F7E50A9E /* DSGTMBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = DCE88F4988DA97D675FFA3E65F92CA86 /* DSGTMBase64.h */; settings = {ATTRIBUTES = (Public, ); }; };
  14 + 326916FE6BEC51DDA42888D50D62BF18 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
  15 + 67872B4094DC6957642D68F15086AEE8 /* Pods-DSGTMBase64_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EF4636B3A6600ADC67B638809556831 /* Pods-DSGTMBase64_Example-dummy.m */; };
  16 + A33EF83D40CF8A377C4C3E4EDBAD04BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; };
  17 + C8E2768CF41D66F2CB479353FF4AA1F8 /* Pods-DSGTMBase64_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B90EC7B42945E1424B94D3F19EFAB9 /* Pods-DSGTMBase64_Tests-dummy.m */; };
  18 + CE59951A58F7D36EF2055F911947472D /* DSGTMBase64-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A479F17372481C9B6934BC526AD64B01 /* DSGTMBase64-dummy.m */; };
  19 + D5A9DE72708D817F478B48C2CDFD81E2 /* Pods-DSGTMBase64_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C56F1CD799A624804132E1616A6C31F7 /* Pods-DSGTMBase64_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
  20 + E0804E8FC96F93BF4C6FFB3241B10805 /* DSGTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = BEEC3B86FB34B90AA8B3CFD4A04A3243 /* DSGTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
  21 + EAC9A12E783EB52059672E33ED6BD339 /* DSGTMBase64-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E929513F917B0F7981C7D01540251037 /* DSGTMBase64-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
  22 +/* End PBXBuildFile section */
  23 +
  24 +/* Begin PBXContainerItemProxy section */
  25 + 89CAC612C38C331700CE956898E2EFD1 /* PBXContainerItemProxy */ = {
  26 + isa = PBXContainerItemProxy;
  27 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  28 + proxyType = 1;
  29 + remoteGlobalIDString = D91A72F6E1666ED4F467B2F77618B7E8;
  30 + remoteInfo = DSGTMBase64;
  31 + };
  32 + FF19E08EC94147E34799493C00B3C834 /* PBXContainerItemProxy */ = {
  33 + isa = PBXContainerItemProxy;
  34 + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  35 + proxyType = 1;
  36 + remoteGlobalIDString = 6B9792D042E462DB81D72600D4F5356D;
  37 + remoteInfo = "Pods-DSGTMBase64_Example";
  38 + };
  39 +/* End PBXContainerItemProxy section */
  40 +
  41 +/* Begin PBXFileReference section */
  42 + 0C84F156059115E4DA731B8BAE26CEA6 /* DSGTMBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSGTMBase64.m; path = DSGTMBase64/Classes/DSGTMBase64.m; sourceTree = "<group>"; };
  43 + 0EF4636B3A6600ADC67B638809556831 /* Pods-DSGTMBase64_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DSGTMBase64_Example-dummy.m"; sourceTree = "<group>"; };
  44 + 2352208E00A1C15354F0157A61EA3B55 /* DSGTMBase64-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DSGTMBase64-prefix.pch"; sourceTree = "<group>"; };
  45 + 30B90EC7B42945E1424B94D3F19EFAB9 /* Pods-DSGTMBase64_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DSGTMBase64_Tests-dummy.m"; sourceTree = "<group>"; };
  46 + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
  47 + 35EE538002631993ABB7859174C2A993 /* Pods-DSGTMBase64_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DSGTMBase64_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
  48 + 41DE1EECCC51CFA4A5400C2E4D9E5194 /* Pods-DSGTMBase64_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DSGTMBase64_Example.debug.xcconfig"; sourceTree = "<group>"; };
  49 + 4A634A61A3C889AE20B26664C623412F /* Pods-DSGTMBase64_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DSGTMBase64_Example-acknowledgements.plist"; sourceTree = "<group>"; };
  50 + 4B4F6C3BB33ADE44AF412F8299B8911B /* Pods-DSGTMBase64_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DSGTMBase64_Example-frameworks.sh"; sourceTree = "<group>"; };
  51 + 5506D1A5CA26DFF79E7F307F9EE207FB /* DSGTMBase64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DSGTMBase64.framework; path = DSGTMBase64.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  52 + 74429431FAE2AAD498F710A58E86C7F7 /* Pods-DSGTMBase64_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DSGTMBase64_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
  53 + 7797B04F96D398CFFCF5EE65D20A84BC /* Pods-DSGTMBase64_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DSGTMBase64_Example-Info.plist"; sourceTree = "<group>"; };
  54 + 796054019892A41A47DAACC65B02009B /* Pods_DSGTMBase64_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DSGTMBase64_Tests.framework; path = "Pods-DSGTMBase64_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
  55 + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  56 + A479F17372481C9B6934BC526AD64B01 /* DSGTMBase64-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DSGTMBase64-dummy.m"; sourceTree = "<group>"; };
  57 + A5F2F7393939A56B2D1E84612B202BBA /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
  58 + A7019F401E0B0CF84A2A1A833DA09225 /* Pods-DSGTMBase64_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DSGTMBase64_Tests-umbrella.h"; sourceTree = "<group>"; };
  59 + AA97702B66BA6A8F005E5FB2BBCBDCC3 /* Pods-DSGTMBase64_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DSGTMBase64_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
  60 + BD96A5A877D5E5365D86E75B60A54D54 /* Pods-DSGTMBase64_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DSGTMBase64_Tests.modulemap"; sourceTree = "<group>"; };
  61 + BEEC3B86FB34B90AA8B3CFD4A04A3243 /* DSGTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSGTMDefines.h; path = DSGTMBase64/Classes/DSGTMDefines.h; sourceTree = "<group>"; };
  62 + C56F1CD799A624804132E1616A6C31F7 /* Pods-DSGTMBase64_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DSGTMBase64_Example-umbrella.h"; sourceTree = "<group>"; };
  63 + C6AA0FB7E503423D2F4DE364C3C8E6D1 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
  64 + CC72DF2067BD792A4B5CDF5DE17844CA /* Pods-DSGTMBase64_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DSGTMBase64_Tests.release.xcconfig"; sourceTree = "<group>"; };
  65 + CF0CF93E16CE7EE11520ABA6F1F08143 /* DSGTMBase64.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = DSGTMBase64.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
  66 + DB6CF3A147E45AF3F05C7AF97CD12B63 /* Pods-DSGTMBase64_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DSGTMBase64_Example.release.xcconfig"; sourceTree = "<group>"; };
  67 + DCE88F4988DA97D675FFA3E65F92CA86 /* DSGTMBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSGTMBase64.h; path = DSGTMBase64/Classes/DSGTMBase64.h; sourceTree = "<group>"; };
  68 + DF8AE0A9EF405DD28663D5C9B672D2FD /* DSGTMBase64-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DSGTMBase64-Info.plist"; sourceTree = "<group>"; };
  69 + E5D0208E9F27216D74F711749922F02E /* Pods-DSGTMBase64_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DSGTMBase64_Tests-Info.plist"; sourceTree = "<group>"; };
  70 + E929513F917B0F7981C7D01540251037 /* DSGTMBase64-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DSGTMBase64-umbrella.h"; sourceTree = "<group>"; };
  71 + EA79EBA11D1C5030AB8FFC52518925F0 /* Pods-DSGTMBase64_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DSGTMBase64_Tests.debug.xcconfig"; sourceTree = "<group>"; };
  72 + EAAA18D1D543E87F7D18BFB7F7C778B6 /* Pods-DSGTMBase64_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DSGTMBase64_Example.modulemap"; sourceTree = "<group>"; };
  73 + EB7A9B9112467C6AE9C83DD94D0B28DC /* Pods_DSGTMBase64_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DSGTMBase64_Example.framework; path = "Pods-DSGTMBase64_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
  74 + EC69FE9272760815598A62E2D53BC661 /* DSGTMBase64.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DSGTMBase64.xcconfig; sourceTree = "<group>"; };
  75 + FD2D6883BAE61E476128BDFC270A7729 /* DSGTMBase64.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DSGTMBase64.modulemap; sourceTree = "<group>"; };
  76 +/* End PBXFileReference section */
  77 +
  78 +/* Begin PBXFrameworksBuildPhase section */
  79 + 1461E2D6D441C2B517C64C8F278D62BC /* Frameworks */ = {
  80 + isa = PBXFrameworksBuildPhase;
  81 + buildActionMask = 2147483647;
  82 + files = (
  83 + 326916FE6BEC51DDA42888D50D62BF18 /* Foundation.framework in Frameworks */,
  84 + );
  85 + runOnlyForDeploymentPostprocessing = 0;
  86 + };
  87 + 677D647B8DE273CE7EE989B7DC75D80F /* Frameworks */ = {
  88 + isa = PBXFrameworksBuildPhase;
  89 + buildActionMask = 2147483647;
  90 + files = (
  91 + 08E72C4E928550617817E44CE00D3AD3 /* Foundation.framework in Frameworks */,
  92 + );
  93 + runOnlyForDeploymentPostprocessing = 0;
  94 + };
  95 + 71C568FD5135D6B79B5A10B61C02A61B /* Frameworks */ = {
  96 + isa = PBXFrameworksBuildPhase;
  97 + buildActionMask = 2147483647;
  98 + files = (
  99 + A33EF83D40CF8A377C4C3E4EDBAD04BC /* Foundation.framework in Frameworks */,
  100 + );
  101 + runOnlyForDeploymentPostprocessing = 0;
  102 + };
  103 +/* End PBXFrameworksBuildPhase section */
  104 +
  105 +/* Begin PBXGroup section */
  106 + 07651E085490CD49A38E79F1E247C1D3 /* Pod */ = {
  107 + isa = PBXGroup;
  108 + children = (
  109 + CF0CF93E16CE7EE11520ABA6F1F08143 /* DSGTMBase64.podspec */,
  110 + A5F2F7393939A56B2D1E84612B202BBA /* LICENSE */,
  111 + C6AA0FB7E503423D2F4DE364C3C8E6D1 /* README.md */,
  112 + );
  113 + name = Pod;
  114 + sourceTree = "<group>";
  115 + };
  116 + 92E9C98403BE7A15AE1DABC274417AD4 /* Pods-DSGTMBase64_Tests */ = {
  117 + isa = PBXGroup;
  118 + children = (
  119 + BD96A5A877D5E5365D86E75B60A54D54 /* Pods-DSGTMBase64_Tests.modulemap */,
  120 + 74429431FAE2AAD498F710A58E86C7F7 /* Pods-DSGTMBase64_Tests-acknowledgements.markdown */,
  121 + 35EE538002631993ABB7859174C2A993 /* Pods-DSGTMBase64_Tests-acknowledgements.plist */,
  122 + 30B90EC7B42945E1424B94D3F19EFAB9 /* Pods-DSGTMBase64_Tests-dummy.m */,
  123 + E5D0208E9F27216D74F711749922F02E /* Pods-DSGTMBase64_Tests-Info.plist */,
  124 + A7019F401E0B0CF84A2A1A833DA09225 /* Pods-DSGTMBase64_Tests-umbrella.h */,
  125 + EA79EBA11D1C5030AB8FFC52518925F0 /* Pods-DSGTMBase64_Tests.debug.xcconfig */,
  126 + CC72DF2067BD792A4B5CDF5DE17844CA /* Pods-DSGTMBase64_Tests.release.xcconfig */,
  127 + );
  128 + name = "Pods-DSGTMBase64_Tests";
  129 + path = "Target Support Files/Pods-DSGTMBase64_Tests";
  130 + sourceTree = "<group>";
  131 + };
  132 + 9737CB28B9D7B21FFD40F3128E420EE9 /* Support Files */ = {
  133 + isa = PBXGroup;
  134 + children = (
  135 + FD2D6883BAE61E476128BDFC270A7729 /* DSGTMBase64.modulemap */,
  136 + EC69FE9272760815598A62E2D53BC661 /* DSGTMBase64.xcconfig */,
  137 + A479F17372481C9B6934BC526AD64B01 /* DSGTMBase64-dummy.m */,
  138 + DF8AE0A9EF405DD28663D5C9B672D2FD /* DSGTMBase64-Info.plist */,
  139 + 2352208E00A1C15354F0157A61EA3B55 /* DSGTMBase64-prefix.pch */,
  140 + E929513F917B0F7981C7D01540251037 /* DSGTMBase64-umbrella.h */,
  141 + );
  142 + name = "Support Files";
  143 + path = "Example/Pods/Target Support Files/DSGTMBase64";
  144 + sourceTree = "<group>";
  145 + };
  146 + C0834CEBB1379A84116EF29F93051C60 /* iOS */ = {
  147 + isa = PBXGroup;
  148 + children = (
  149 + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */,
  150 + );
  151 + name = iOS;
  152 + sourceTree = "<group>";
  153 + };
  154 + C28B60BB881228A33E003EA95CABBE6A /* Development Pods */ = {
  155 + isa = PBXGroup;
  156 + children = (
  157 + E180CE8C6FA97D96D80FBCB059CA868D /* DSGTMBase64 */,
  158 + );
  159 + name = "Development Pods";
  160 + sourceTree = "<group>";
  161 + };
  162 + CF1408CF629C7361332E53B88F7BD30C = {
  163 + isa = PBXGroup;
  164 + children = (
  165 + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
  166 + C28B60BB881228A33E003EA95CABBE6A /* Development Pods */,
  167 + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
  168 + E20449CBD3AFD892B18AEA63FD137429 /* Products */,
  169 + D6AF41CF699CFD60ACF8157C24285E3C /* Targets Support Files */,
  170 + );
  171 + sourceTree = "<group>";
  172 + };
  173 + D0C7159DFB54CA8B6A3112A71282D8A7 /* Pods-DSGTMBase64_Example */ = {
  174 + isa = PBXGroup;
  175 + children = (
  176 + EAAA18D1D543E87F7D18BFB7F7C778B6 /* Pods-DSGTMBase64_Example.modulemap */,
  177 + AA97702B66BA6A8F005E5FB2BBCBDCC3 /* Pods-DSGTMBase64_Example-acknowledgements.markdown */,
  178 + 4A634A61A3C889AE20B26664C623412F /* Pods-DSGTMBase64_Example-acknowledgements.plist */,
  179 + 0EF4636B3A6600ADC67B638809556831 /* Pods-DSGTMBase64_Example-dummy.m */,
  180 + 4B4F6C3BB33ADE44AF412F8299B8911B /* Pods-DSGTMBase64_Example-frameworks.sh */,
  181 + 7797B04F96D398CFFCF5EE65D20A84BC /* Pods-DSGTMBase64_Example-Info.plist */,
  182 + C56F1CD799A624804132E1616A6C31F7 /* Pods-DSGTMBase64_Example-umbrella.h */,
  183 + 41DE1EECCC51CFA4A5400C2E4D9E5194 /* Pods-DSGTMBase64_Example.debug.xcconfig */,
  184 + DB6CF3A147E45AF3F05C7AF97CD12B63 /* Pods-DSGTMBase64_Example.release.xcconfig */,
  185 + );
  186 + name = "Pods-DSGTMBase64_Example";
  187 + path = "Target Support Files/Pods-DSGTMBase64_Example";
  188 + sourceTree = "<group>";
  189 + };
  190 + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
  191 + isa = PBXGroup;
  192 + children = (
  193 + C0834CEBB1379A84116EF29F93051C60 /* iOS */,
  194 + );
  195 + name = Frameworks;
  196 + sourceTree = "<group>";
  197 + };
  198 + D6AF41CF699CFD60ACF8157C24285E3C /* Targets Support Files */ = {
  199 + isa = PBXGroup;
  200 + children = (
  201 + D0C7159DFB54CA8B6A3112A71282D8A7 /* Pods-DSGTMBase64_Example */,
  202 + 92E9C98403BE7A15AE1DABC274417AD4 /* Pods-DSGTMBase64_Tests */,
  203 + );
  204 + name = "Targets Support Files";
  205 + sourceTree = "<group>";
  206 + };
  207 + E180CE8C6FA97D96D80FBCB059CA868D /* DSGTMBase64 */ = {
  208 + isa = PBXGroup;
  209 + children = (
  210 + DCE88F4988DA97D675FFA3E65F92CA86 /* DSGTMBase64.h */,
  211 + 0C84F156059115E4DA731B8BAE26CEA6 /* DSGTMBase64.m */,
  212 + BEEC3B86FB34B90AA8B3CFD4A04A3243 /* DSGTMDefines.h */,
  213 + 07651E085490CD49A38E79F1E247C1D3 /* Pod */,
  214 + 9737CB28B9D7B21FFD40F3128E420EE9 /* Support Files */,
  215 + );
  216 + name = DSGTMBase64;
  217 + path = ../..;
  218 + sourceTree = "<group>";
  219 + };
  220 + E20449CBD3AFD892B18AEA63FD137429 /* Products */ = {
  221 + isa = PBXGroup;
  222 + children = (
  223 + 5506D1A5CA26DFF79E7F307F9EE207FB /* DSGTMBase64.framework */,
  224 + EB7A9B9112467C6AE9C83DD94D0B28DC /* Pods_DSGTMBase64_Example.framework */,
  225 + 796054019892A41A47DAACC65B02009B /* Pods_DSGTMBase64_Tests.framework */,
  226 + );
  227 + name = Products;
  228 + sourceTree = "<group>";
  229 + };
  230 +/* End PBXGroup section */
  231 +
  232 +/* Begin PBXHeadersBuildPhase section */
  233 + 399DD2806F0AA695FCF8CC95D779119D /* Headers */ = {
  234 + isa = PBXHeadersBuildPhase;
  235 + buildActionMask = 2147483647;
  236 + files = (
  237 + D5A9DE72708D817F478B48C2CDFD81E2 /* Pods-DSGTMBase64_Example-umbrella.h in Headers */,
  238 + );
  239 + runOnlyForDeploymentPostprocessing = 0;
  240 + };
  241 + 5A5B1556AB4BCA8ED897AB839DF46CE1 /* Headers */ = {
  242 + isa = PBXHeadersBuildPhase;
  243 + buildActionMask = 2147483647;
  244 + files = (
  245 + 1BA90C53741C9E6DEA89CDA733070D66 /* Pods-DSGTMBase64_Tests-umbrella.h in Headers */,
  246 + );
  247 + runOnlyForDeploymentPostprocessing = 0;
  248 + };
  249 + 9C595C5476754DA1A872936E2A7E98E9 /* Headers */ = {
  250 + isa = PBXHeadersBuildPhase;
  251 + buildActionMask = 2147483647;
  252 + files = (
  253 + EAC9A12E783EB52059672E33ED6BD339 /* DSGTMBase64-umbrella.h in Headers */,
  254 + 2CF3C6215023731EED81FAA1F7E50A9E /* DSGTMBase64.h in Headers */,
  255 + E0804E8FC96F93BF4C6FFB3241B10805 /* DSGTMDefines.h in Headers */,
  256 + );
  257 + runOnlyForDeploymentPostprocessing = 0;
  258 + };
  259 +/* End PBXHeadersBuildPhase section */
  260 +
  261 +/* Begin PBXNativeTarget section */
  262 + 207EC704CA2934761628032B4DD05FCA /* Pods-DSGTMBase64_Tests */ = {
  263 + isa = PBXNativeTarget;
  264 + buildConfigurationList = E199AA29D6A375A00393BE8D7325F506 /* Build configuration list for PBXNativeTarget "Pods-DSGTMBase64_Tests" */;
  265 + buildPhases = (
  266 + 5A5B1556AB4BCA8ED897AB839DF46CE1 /* Headers */,
  267 + 5738210C62AF12AA44D419F68D4AE1B3 /* Sources */,
  268 + 677D647B8DE273CE7EE989B7DC75D80F /* Frameworks */,
  269 + 0853526455184F353C97558FB05DDE90 /* Resources */,
  270 + );
  271 + buildRules = (
  272 + );
  273 + dependencies = (
  274 + B09994AE30BFF5616CF8C37F73EB939E /* PBXTargetDependency */,
  275 + );
  276 + name = "Pods-DSGTMBase64_Tests";
  277 + productName = "Pods-DSGTMBase64_Tests";
  278 + productReference = 796054019892A41A47DAACC65B02009B /* Pods_DSGTMBase64_Tests.framework */;
  279 + productType = "com.apple.product-type.framework";
  280 + };
  281 + 6B9792D042E462DB81D72600D4F5356D /* Pods-DSGTMBase64_Example */ = {
  282 + isa = PBXNativeTarget;
  283 + buildConfigurationList = 768314A94690AD974F0D8E776DAC8115 /* Build configuration list for PBXNativeTarget "Pods-DSGTMBase64_Example" */;
  284 + buildPhases = (
  285 + 399DD2806F0AA695FCF8CC95D779119D /* Headers */,
  286 + F67E9EAD7D8CED76F30A327032C87D38 /* Sources */,
  287 + 71C568FD5135D6B79B5A10B61C02A61B /* Frameworks */,
  288 + 43351252B515E160E0315AB8B82DDECC /* Resources */,
  289 + );
  290 + buildRules = (
  291 + );
  292 + dependencies = (
  293 + 4D0892D456F90E1BEEAEA303F22F4C7C /* PBXTargetDependency */,
  294 + );
  295 + name = "Pods-DSGTMBase64_Example";
  296 + productName = "Pods-DSGTMBase64_Example";
  297 + productReference = EB7A9B9112467C6AE9C83DD94D0B28DC /* Pods_DSGTMBase64_Example.framework */;
  298 + productType = "com.apple.product-type.framework";
  299 + };
  300 + D91A72F6E1666ED4F467B2F77618B7E8 /* DSGTMBase64 */ = {
  301 + isa = PBXNativeTarget;
  302 + buildConfigurationList = 312ACC4FB2FE0FD60AC19FEBAAB5450F /* Build configuration list for PBXNativeTarget "DSGTMBase64" */;
  303 + buildPhases = (
  304 + 9C595C5476754DA1A872936E2A7E98E9 /* Headers */,
  305 + 18B83F3A2AA2940DEF634AF22EF76BDA /* Sources */,
  306 + 1461E2D6D441C2B517C64C8F278D62BC /* Frameworks */,
  307 + F970B933DA51229CCD35B741DC757D4A /* Resources */,
  308 + );
  309 + buildRules = (
  310 + );
  311 + dependencies = (
  312 + );
  313 + name = DSGTMBase64;
  314 + productName = DSGTMBase64;
  315 + productReference = 5506D1A5CA26DFF79E7F307F9EE207FB /* DSGTMBase64.framework */;
  316 + productType = "com.apple.product-type.framework";
  317 + };
  318 +/* End PBXNativeTarget section */
  319 +
  320 +/* Begin PBXProject section */
  321 + BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
  322 + isa = PBXProject;
  323 + attributes = {
  324 + LastSwiftUpdateCheck = 1100;
  325 + LastUpgradeCheck = 1100;
  326 + };
  327 + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
  328 + compatibilityVersion = "Xcode 3.2";
  329 + developmentRegion = en;
  330 + hasScannedForEncodings = 0;
  331 + knownRegions = (
  332 + en,
  333 + Base,
  334 + );
  335 + mainGroup = CF1408CF629C7361332E53B88F7BD30C;
  336 + productRefGroup = E20449CBD3AFD892B18AEA63FD137429 /* Products */;
  337 + projectDirPath = "";
  338 + projectRoot = "";
  339 + targets = (
  340 + D91A72F6E1666ED4F467B2F77618B7E8 /* DSGTMBase64 */,
  341 + 6B9792D042E462DB81D72600D4F5356D /* Pods-DSGTMBase64_Example */,
  342 + 207EC704CA2934761628032B4DD05FCA /* Pods-DSGTMBase64_Tests */,
  343 + );
  344 + };
  345 +/* End PBXProject section */
  346 +
  347 +/* Begin PBXResourcesBuildPhase section */
  348 + 0853526455184F353C97558FB05DDE90 /* Resources */ = {
  349 + isa = PBXResourcesBuildPhase;
  350 + buildActionMask = 2147483647;
  351 + files = (
  352 + );
  353 + runOnlyForDeploymentPostprocessing = 0;
  354 + };
  355 + 43351252B515E160E0315AB8B82DDECC /* Resources */ = {
  356 + isa = PBXResourcesBuildPhase;
  357 + buildActionMask = 2147483647;
  358 + files = (
  359 + );
  360 + runOnlyForDeploymentPostprocessing = 0;
  361 + };
  362 + F970B933DA51229CCD35B741DC757D4A /* Resources */ = {
  363 + isa = PBXResourcesBuildPhase;
  364 + buildActionMask = 2147483647;
  365 + files = (
  366 + );
  367 + runOnlyForDeploymentPostprocessing = 0;
  368 + };
  369 +/* End PBXResourcesBuildPhase section */
  370 +
  371 +/* Begin PBXSourcesBuildPhase section */
  372 + 18B83F3A2AA2940DEF634AF22EF76BDA /* Sources */ = {
  373 + isa = PBXSourcesBuildPhase;
  374 + buildActionMask = 2147483647;
  375 + files = (
  376 + CE59951A58F7D36EF2055F911947472D /* DSGTMBase64-dummy.m in Sources */,
  377 + 197EE11255DD04FA607BE58C8F034EE9 /* DSGTMBase64.m in Sources */,
  378 + );
  379 + runOnlyForDeploymentPostprocessing = 0;
  380 + };
  381 + 5738210C62AF12AA44D419F68D4AE1B3 /* Sources */ = {
  382 + isa = PBXSourcesBuildPhase;
  383 + buildActionMask = 2147483647;
  384 + files = (
  385 + C8E2768CF41D66F2CB479353FF4AA1F8 /* Pods-DSGTMBase64_Tests-dummy.m in Sources */,
  386 + );
  387 + runOnlyForDeploymentPostprocessing = 0;
  388 + };
  389 + F67E9EAD7D8CED76F30A327032C87D38 /* Sources */ = {
  390 + isa = PBXSourcesBuildPhase;
  391 + buildActionMask = 2147483647;
  392 + files = (
  393 + 67872B4094DC6957642D68F15086AEE8 /* Pods-DSGTMBase64_Example-dummy.m in Sources */,
  394 + );
  395 + runOnlyForDeploymentPostprocessing = 0;
  396 + };
  397 +/* End PBXSourcesBuildPhase section */
  398 +
  399 +/* Begin PBXTargetDependency section */
  400 + 4D0892D456F90E1BEEAEA303F22F4C7C /* PBXTargetDependency */ = {
  401 + isa = PBXTargetDependency;
  402 + name = DSGTMBase64;
  403 + target = D91A72F6E1666ED4F467B2F77618B7E8 /* DSGTMBase64 */;
  404 + targetProxy = 89CAC612C38C331700CE956898E2EFD1 /* PBXContainerItemProxy */;
  405 + };
  406 + B09994AE30BFF5616CF8C37F73EB939E /* PBXTargetDependency */ = {
  407 + isa = PBXTargetDependency;
  408 + name = "Pods-DSGTMBase64_Example";
  409 + target = 6B9792D042E462DB81D72600D4F5356D /* Pods-DSGTMBase64_Example */;
  410 + targetProxy = FF19E08EC94147E34799493C00B3C834 /* PBXContainerItemProxy */;
  411 + };
  412 +/* End PBXTargetDependency section */
  413 +
  414 +/* Begin XCBuildConfiguration section */
  415 + 1AF8D59FEE8479F830EBF8DAC9842429 /* Release */ = {
  416 + isa = XCBuildConfiguration;
  417 + baseConfigurationReference = EC69FE9272760815598A62E2D53BC661 /* DSGTMBase64.xcconfig */;
  418 + buildSettings = {
  419 + CODE_SIGN_IDENTITY = "";
  420 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  421 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  422 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  423 + CURRENT_PROJECT_VERSION = 1;
  424 + DEFINES_MODULE = YES;
  425 + DYLIB_COMPATIBILITY_VERSION = 1;
  426 + DYLIB_CURRENT_VERSION = 1;
  427 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  428 + GCC_PREFIX_HEADER = "Target Support Files/DSGTMBase64/DSGTMBase64-prefix.pch";
  429 + INFOPLIST_FILE = "Target Support Files/DSGTMBase64/DSGTMBase64-Info.plist";
  430 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  431 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  432 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  433 + MODULEMAP_FILE = "Target Support Files/DSGTMBase64/DSGTMBase64.modulemap";
  434 + PRODUCT_MODULE_NAME = DSGTMBase64;
  435 + PRODUCT_NAME = DSGTMBase64;
  436 + SDKROOT = iphoneos;
  437 + SKIP_INSTALL = YES;
  438 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
  439 + SWIFT_VERSION = 4.0;
  440 + TARGETED_DEVICE_FAMILY = "1,2";
  441 + VALIDATE_PRODUCT = YES;
  442 + VERSIONING_SYSTEM = "apple-generic";
  443 + VERSION_INFO_PREFIX = "";
  444 + };
  445 + name = Release;
  446 + };
  447 + 1DC30D5C1C548D73150932572A4D67C1 /* Release */ = {
  448 + isa = XCBuildConfiguration;
  449 + baseConfigurationReference = CC72DF2067BD792A4B5CDF5DE17844CA /* Pods-DSGTMBase64_Tests.release.xcconfig */;
  450 + buildSettings = {
  451 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  452 + CODE_SIGN_IDENTITY = "";
  453 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  454 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  455 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  456 + CURRENT_PROJECT_VERSION = 1;
  457 + DEFINES_MODULE = YES;
  458 + DYLIB_COMPATIBILITY_VERSION = 1;
  459 + DYLIB_CURRENT_VERSION = 1;
  460 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  461 + INFOPLIST_FILE = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-Info.plist";
  462 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  463 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  464 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  465 + MACH_O_TYPE = staticlib;
  466 + MODULEMAP_FILE = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.modulemap";
  467 + OTHER_LDFLAGS = "";
  468 + OTHER_LIBTOOLFLAGS = "";
  469 + PODS_ROOT = "$(SRCROOT)";
  470 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  471 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  472 + SDKROOT = iphoneos;
  473 + SKIP_INSTALL = YES;
  474 + TARGETED_DEVICE_FAMILY = "1,2";
  475 + VALIDATE_PRODUCT = YES;
  476 + VERSIONING_SYSTEM = "apple-generic";
  477 + VERSION_INFO_PREFIX = "";
  478 + };
  479 + name = Release;
  480 + };
  481 + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = {
  482 + isa = XCBuildConfiguration;
  483 + buildSettings = {
  484 + ALWAYS_SEARCH_USER_PATHS = NO;
  485 + CLANG_ANALYZER_NONNULL = YES;
  486 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  487 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  488 + CLANG_CXX_LIBRARY = "libc++";
  489 + CLANG_ENABLE_MODULES = YES;
  490 + CLANG_ENABLE_OBJC_ARC = YES;
  491 + CLANG_ENABLE_OBJC_WEAK = YES;
  492 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  493 + CLANG_WARN_BOOL_CONVERSION = YES;
  494 + CLANG_WARN_COMMA = YES;
  495 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  496 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  497 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  498 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  499 + CLANG_WARN_EMPTY_BODY = YES;
  500 + CLANG_WARN_ENUM_CONVERSION = YES;
  501 + CLANG_WARN_INFINITE_RECURSION = YES;
  502 + CLANG_WARN_INT_CONVERSION = YES;
  503 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  504 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  505 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  506 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  507 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  508 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  509 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  510 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
  511 + CLANG_WARN_UNREACHABLE_CODE = YES;
  512 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  513 + COPY_PHASE_STRIP = NO;
  514 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  515 + ENABLE_NS_ASSERTIONS = NO;
  516 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  517 + GCC_C_LANGUAGE_STANDARD = gnu11;
  518 + GCC_NO_COMMON_BLOCKS = YES;
  519 + GCC_PREPROCESSOR_DEFINITIONS = (
  520 + "POD_CONFIGURATION_RELEASE=1",
  521 + "$(inherited)",
  522 + );
  523 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  524 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  525 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  526 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  527 + GCC_WARN_UNUSED_FUNCTION = YES;
  528 + GCC_WARN_UNUSED_VARIABLE = YES;
  529 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  530 + MTL_ENABLE_DEBUG_INFO = NO;
  531 + MTL_FAST_MATH = YES;
  532 + PRODUCT_NAME = "$(TARGET_NAME)";
  533 + STRIP_INSTALLED_PRODUCT = NO;
  534 + SWIFT_COMPILATION_MODE = wholemodule;
  535 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  536 + SWIFT_VERSION = 5.0;
  537 + SYMROOT = "${SRCROOT}/../build";
  538 + };
  539 + name = Release;
  540 + };
  541 + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = {
  542 + isa = XCBuildConfiguration;
  543 + buildSettings = {
  544 + ALWAYS_SEARCH_USER_PATHS = NO;
  545 + CLANG_ANALYZER_NONNULL = YES;
  546 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  547 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  548 + CLANG_CXX_LIBRARY = "libc++";
  549 + CLANG_ENABLE_MODULES = YES;
  550 + CLANG_ENABLE_OBJC_ARC = YES;
  551 + CLANG_ENABLE_OBJC_WEAK = YES;
  552 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  553 + CLANG_WARN_BOOL_CONVERSION = YES;
  554 + CLANG_WARN_COMMA = YES;
  555 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  556 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  557 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  558 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  559 + CLANG_WARN_EMPTY_BODY = YES;
  560 + CLANG_WARN_ENUM_CONVERSION = YES;
  561 + CLANG_WARN_INFINITE_RECURSION = YES;
  562 + CLANG_WARN_INT_CONVERSION = YES;
  563 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  564 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  565 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  566 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  567 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  568 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  569 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  570 + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
  571 + CLANG_WARN_UNREACHABLE_CODE = YES;
  572 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  573 + COPY_PHASE_STRIP = NO;
  574 + DEBUG_INFORMATION_FORMAT = dwarf;
  575 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  576 + ENABLE_TESTABILITY = YES;
  577 + GCC_C_LANGUAGE_STANDARD = gnu11;
  578 + GCC_DYNAMIC_NO_PIC = NO;
  579 + GCC_NO_COMMON_BLOCKS = YES;
  580 + GCC_OPTIMIZATION_LEVEL = 0;
  581 + GCC_PREPROCESSOR_DEFINITIONS = (
  582 + "POD_CONFIGURATION_DEBUG=1",
  583 + "DEBUG=1",
  584 + "$(inherited)",
  585 + );
  586 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  587 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  588 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  589 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  590 + GCC_WARN_UNUSED_FUNCTION = YES;
  591 + GCC_WARN_UNUSED_VARIABLE = YES;
  592 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  593 + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
  594 + MTL_FAST_MATH = YES;
  595 + ONLY_ACTIVE_ARCH = YES;
  596 + PRODUCT_NAME = "$(TARGET_NAME)";
  597 + STRIP_INSTALLED_PRODUCT = NO;
  598 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  599 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  600 + SWIFT_VERSION = 5.0;
  601 + SYMROOT = "${SRCROOT}/../build";
  602 + };
  603 + name = Debug;
  604 + };
  605 + 9A113520F9BC2EFF4AFC71D670B72879 /* Debug */ = {
  606 + isa = XCBuildConfiguration;
  607 + baseConfigurationReference = EC69FE9272760815598A62E2D53BC661 /* DSGTMBase64.xcconfig */;
  608 + buildSettings = {
  609 + CODE_SIGN_IDENTITY = "";
  610 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  611 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  612 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  613 + CURRENT_PROJECT_VERSION = 1;
  614 + DEFINES_MODULE = YES;
  615 + DYLIB_COMPATIBILITY_VERSION = 1;
  616 + DYLIB_CURRENT_VERSION = 1;
  617 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  618 + GCC_PREFIX_HEADER = "Target Support Files/DSGTMBase64/DSGTMBase64-prefix.pch";
  619 + INFOPLIST_FILE = "Target Support Files/DSGTMBase64/DSGTMBase64-Info.plist";
  620 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  621 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
  622 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  623 + MODULEMAP_FILE = "Target Support Files/DSGTMBase64/DSGTMBase64.modulemap";
  624 + PRODUCT_MODULE_NAME = DSGTMBase64;
  625 + PRODUCT_NAME = DSGTMBase64;
  626 + SDKROOT = iphoneos;
  627 + SKIP_INSTALL = YES;
  628 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
  629 + SWIFT_VERSION = 4.0;
  630 + TARGETED_DEVICE_FAMILY = "1,2";
  631 + VERSIONING_SYSTEM = "apple-generic";
  632 + VERSION_INFO_PREFIX = "";
  633 + };
  634 + name = Debug;
  635 + };
  636 + AB2B967726FC9CD802800194B15CC1B1 /* Debug */ = {
  637 + isa = XCBuildConfiguration;
  638 + baseConfigurationReference = EA79EBA11D1C5030AB8FFC52518925F0 /* Pods-DSGTMBase64_Tests.debug.xcconfig */;
  639 + buildSettings = {
  640 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  641 + CODE_SIGN_IDENTITY = "";
  642 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  643 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  644 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  645 + CURRENT_PROJECT_VERSION = 1;
  646 + DEFINES_MODULE = YES;
  647 + DYLIB_COMPATIBILITY_VERSION = 1;
  648 + DYLIB_CURRENT_VERSION = 1;
  649 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  650 + INFOPLIST_FILE = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-Info.plist";
  651 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  652 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  653 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  654 + MACH_O_TYPE = staticlib;
  655 + MODULEMAP_FILE = "Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.modulemap";
  656 + OTHER_LDFLAGS = "";
  657 + OTHER_LIBTOOLFLAGS = "";
  658 + PODS_ROOT = "$(SRCROOT)";
  659 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  660 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  661 + SDKROOT = iphoneos;
  662 + SKIP_INSTALL = YES;
  663 + TARGETED_DEVICE_FAMILY = "1,2";
  664 + VERSIONING_SYSTEM = "apple-generic";
  665 + VERSION_INFO_PREFIX = "";
  666 + };
  667 + name = Debug;
  668 + };
  669 + B8E6349915BFF60DAE0B5D94AF7D4F1D /* Debug */ = {
  670 + isa = XCBuildConfiguration;
  671 + baseConfigurationReference = 41DE1EECCC51CFA4A5400C2E4D9E5194 /* Pods-DSGTMBase64_Example.debug.xcconfig */;
  672 + buildSettings = {
  673 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  674 + CODE_SIGN_IDENTITY = "";
  675 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  676 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  677 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  678 + CURRENT_PROJECT_VERSION = 1;
  679 + DEFINES_MODULE = YES;
  680 + DYLIB_COMPATIBILITY_VERSION = 1;
  681 + DYLIB_CURRENT_VERSION = 1;
  682 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  683 + INFOPLIST_FILE = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-Info.plist";
  684 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  685 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  686 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  687 + MACH_O_TYPE = staticlib;
  688 + MODULEMAP_FILE = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.modulemap";
  689 + OTHER_LDFLAGS = "";
  690 + OTHER_LIBTOOLFLAGS = "";
  691 + PODS_ROOT = "$(SRCROOT)";
  692 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  693 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  694 + SDKROOT = iphoneos;
  695 + SKIP_INSTALL = YES;
  696 + TARGETED_DEVICE_FAMILY = "1,2";
  697 + VERSIONING_SYSTEM = "apple-generic";
  698 + VERSION_INFO_PREFIX = "";
  699 + };
  700 + name = Debug;
  701 + };
  702 + EF874B557B659CCE8B1343FF6C18DD0E /* Release */ = {
  703 + isa = XCBuildConfiguration;
  704 + baseConfigurationReference = DB6CF3A147E45AF3F05C7AF97CD12B63 /* Pods-DSGTMBase64_Example.release.xcconfig */;
  705 + buildSettings = {
  706 + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
  707 + CODE_SIGN_IDENTITY = "";
  708 + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
  709 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
  710 + "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
  711 + CURRENT_PROJECT_VERSION = 1;
  712 + DEFINES_MODULE = YES;
  713 + DYLIB_COMPATIBILITY_VERSION = 1;
  714 + DYLIB_CURRENT_VERSION = 1;
  715 + DYLIB_INSTALL_NAME_BASE = "@rpath";
  716 + INFOPLIST_FILE = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-Info.plist";
  717 + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
  718 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  719 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
  720 + MACH_O_TYPE = staticlib;
  721 + MODULEMAP_FILE = "Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.modulemap";
  722 + OTHER_LDFLAGS = "";
  723 + OTHER_LIBTOOLFLAGS = "";
  724 + PODS_ROOT = "$(SRCROOT)";
  725 + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
  726 + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
  727 + SDKROOT = iphoneos;
  728 + SKIP_INSTALL = YES;
  729 + TARGETED_DEVICE_FAMILY = "1,2";
  730 + VALIDATE_PRODUCT = YES;
  731 + VERSIONING_SYSTEM = "apple-generic";
  732 + VERSION_INFO_PREFIX = "";
  733 + };
  734 + name = Release;
  735 + };
  736 +/* End XCBuildConfiguration section */
  737 +
  738 +/* Begin XCConfigurationList section */
  739 + 312ACC4FB2FE0FD60AC19FEBAAB5450F /* Build configuration list for PBXNativeTarget "DSGTMBase64" */ = {
  740 + isa = XCConfigurationList;
  741 + buildConfigurations = (
  742 + 9A113520F9BC2EFF4AFC71D670B72879 /* Debug */,
  743 + 1AF8D59FEE8479F830EBF8DAC9842429 /* Release */,
  744 + );
  745 + defaultConfigurationIsVisible = 0;
  746 + defaultConfigurationName = Release;
  747 + };
  748 + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
  749 + isa = XCConfigurationList;
  750 + buildConfigurations = (
  751 + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */,
  752 + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */,
  753 + );
  754 + defaultConfigurationIsVisible = 0;
  755 + defaultConfigurationName = Release;
  756 + };
  757 + 768314A94690AD974F0D8E776DAC8115 /* Build configuration list for PBXNativeTarget "Pods-DSGTMBase64_Example" */ = {
  758 + isa = XCConfigurationList;
  759 + buildConfigurations = (
  760 + B8E6349915BFF60DAE0B5D94AF7D4F1D /* Debug */,
  761 + EF874B557B659CCE8B1343FF6C18DD0E /* Release */,
  762 + );
  763 + defaultConfigurationIsVisible = 0;
  764 + defaultConfigurationName = Release;
  765 + };
  766 + E199AA29D6A375A00393BE8D7325F506 /* Build configuration list for PBXNativeTarget "Pods-DSGTMBase64_Tests" */ = {
  767 + isa = XCConfigurationList;
  768 + buildConfigurations = (
  769 + AB2B967726FC9CD802800194B15CC1B1 /* Debug */,
  770 + 1DC30D5C1C548D73150932572A4D67C1 /* Release */,
  771 + );
  772 + defaultConfigurationIsVisible = 0;
  773 + defaultConfigurationName = Release;
  774 + };
  775 +/* End XCConfigurationList section */
  776 + };
  777 + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
  778 +}
Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/DSGTMBase64.xcscheme 0 → 100644
  1 +++ a/Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/DSGTMBase64.xcscheme
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1100"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForAnalyzing = "YES"
  11 + buildForTesting = "YES"
  12 + buildForRunning = "YES"
  13 + buildForProfiling = "YES"
  14 + buildForArchiving = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "D91A72F6E1666ED4F467B2F77618B7E8"
  18 + BuildableName = "DSGTMBase64.framework"
  19 + BlueprintName = "DSGTMBase64"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  27 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  28 + shouldUseLaunchSchemeArgsEnv = "YES"
  29 + buildConfiguration = "Debug">
  30 + <AdditionalOptions>
  31 + </AdditionalOptions>
  32 + </TestAction>
  33 + <LaunchAction
  34 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  35 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  36 + launchStyle = "0"
  37 + useCustomWorkingDirectory = "NO"
  38 + ignoresPersistentStateOnLaunch = "NO"
  39 + debugDocumentVersioning = "YES"
  40 + debugServiceExtension = "internal"
  41 + buildConfiguration = "Debug"
  42 + allowLocationSimulation = "YES">
  43 + <AdditionalOptions>
  44 + </AdditionalOptions>
  45 + </LaunchAction>
  46 + <ProfileAction
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES"
  50 + buildConfiguration = "Release"
  51 + shouldUseLaunchSchemeArgsEnv = "YES">
  52 + </ProfileAction>
  53 + <AnalyzeAction
  54 + buildConfiguration = "Debug">
  55 + </AnalyzeAction>
  56 + <ArchiveAction
  57 + buildConfiguration = "Release"
  58 + revealArchiveInOrganizer = "YES">
  59 + </ArchiveAction>
  60 +</Scheme>
Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/Pods-DSGTMBase64_Example.xcscheme 0 → 100644
  1 +++ a/Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/Pods-DSGTMBase64_Example.xcscheme
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1100"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "6B9792D042E462DB81D72600D4F5356D"
  18 + BuildableName = "Pods_DSGTMBase64_Example.framework"
  19 + BlueprintName = "Pods-DSGTMBase64_Example"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/Pods-DSGTMBase64_Tests.xcscheme 0 → 100644
  1 +++ a/Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/Pods-DSGTMBase64_Tests.xcscheme
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1100"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "207EC704CA2934761628032B4DD05FCA"
  18 + BuildableName = "Pods_DSGTMBase64_Tests.framework"
  19 + BlueprintName = "Pods-DSGTMBase64_Tests"
  20 + ReferencedContainer = "container:Pods.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + </TestAction>
  33 + <LaunchAction
  34 + buildConfiguration = "Debug"
  35 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  36 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  37 + launchStyle = "0"
  38 + useCustomWorkingDirectory = "NO"
  39 + ignoresPersistentStateOnLaunch = "NO"
  40 + debugDocumentVersioning = "YES"
  41 + debugServiceExtension = "internal"
  42 + allowLocationSimulation = "YES">
  43 + </LaunchAction>
  44 + <ProfileAction
  45 + buildConfiguration = "Release"
  46 + shouldUseLaunchSchemeArgsEnv = "YES"
  47 + savedToolIdentifier = ""
  48 + useCustomWorkingDirectory = "NO"
  49 + debugDocumentVersioning = "YES">
  50 + </ProfileAction>
  51 + <AnalyzeAction
  52 + buildConfiguration = "Debug">
  53 + </AnalyzeAction>
  54 + <ArchiveAction
  55 + buildConfiguration = "Release"
  56 + revealArchiveInOrganizer = "YES">
  57 + </ArchiveAction>
  58 +</Scheme>
Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/xcschememanagement.plist 0 → 100644
  1 +++ a/Example/Pods/Pods.xcodeproj/xcuserdata/zhaolin.xcuserdatad/xcschemes/xcschememanagement.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>SchemeUserState</key>
  6 + <dict>
  7 + <key>DSGTMBase64.xcscheme</key>
  8 + <dict>
  9 + <key>isShown</key>
  10 + <false/>
  11 + </dict>
  12 + <key>Pods-DSGTMBase64_Example.xcscheme</key>
  13 + <dict>
  14 + <key>isShown</key>
  15 + <false/>
  16 + </dict>
  17 + <key>Pods-DSGTMBase64_Tests.xcscheme</key>
  18 + <dict>
  19 + <key>isShown</key>
  20 + <false/>
  21 + </dict>
  22 + </dict>
  23 + <key>SuppressBuildableAutocreation</key>
  24 + <dict/>
  25 +</dict>
  26 +</plist>
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-Info.plist 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>${EXECUTABLE_NAME}</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>${PRODUCT_NAME}</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>0.0.1</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>${CURRENT_PROJECT_VERSION}</string>
  23 + <key>NSPrincipalClass</key>
  24 + <string></string>
  25 +</dict>
  26 +</plist>
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-dummy.m 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-dummy.m
  1 +#import <Foundation/Foundation.h>
  2 +@interface PodsDummy_DSGTMBase64 : NSObject
  3 +@end
  4 +@implementation PodsDummy_DSGTMBase64
  5 +@end
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-prefix.pch 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-prefix.pch
  1 +#ifdef __OBJC__
  2 +#import <UIKit/UIKit.h>
  3 +#else
  4 +#ifndef FOUNDATION_EXPORT
  5 +#if defined(__cplusplus)
  6 +#define FOUNDATION_EXPORT extern "C"
  7 +#else
  8 +#define FOUNDATION_EXPORT extern
  9 +#endif
  10 +#endif
  11 +#endif
  12 +
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-umbrella.h 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64-umbrella.h
  1 +#ifdef __OBJC__
  2 +#import <UIKit/UIKit.h>
  3 +#else
  4 +#ifndef FOUNDATION_EXPORT
  5 +#if defined(__cplusplus)
  6 +#define FOUNDATION_EXPORT extern "C"
  7 +#else
  8 +#define FOUNDATION_EXPORT extern
  9 +#endif
  10 +#endif
  11 +#endif
  12 +
  13 +#import "DSGTMBase64.h"
  14 +#import "DSGTMDefines.h"
  15 +
  16 +FOUNDATION_EXPORT double DSGTMBase64VersionNumber;
  17 +FOUNDATION_EXPORT const unsigned char DSGTMBase64VersionString[];
  18 +
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64.modulemap 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64.modulemap
  1 +framework module DSGTMBase64 {
  2 + umbrella header "DSGTMBase64-umbrella.h"
  3 +
  4 + export *
  5 + module * { export * }
  6 +}
Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64.xcconfig 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/DSGTMBase64/DSGTMBase64.xcconfig
  1 +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64
  2 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
  3 +OTHER_LDFLAGS = $(inherited) -framework "Foundation"
  4 +PODS_BUILD_DIR = ${BUILD_DIR}
  5 +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  6 +PODS_ROOT = ${SRCROOT}
  7 +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
  8 +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
  9 +SKIP_INSTALL = YES
  10 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-Info.plist 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>${EXECUTABLE_NAME}</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>${PRODUCT_NAME}</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>${CURRENT_PROJECT_VERSION}</string>
  23 + <key>NSPrincipalClass</key>
  24 + <string></string>
  25 +</dict>
  26 +</plist>
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-acknowledgements.markdown 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-acknowledgements.markdown
  1 +# Acknowledgements
  2 +This application makes use of the following third party libraries:
  3 +
  4 +## DSGTMBase64
  5 +
  6 +Copyright (c) 2020 694092596@qq.com <694092596@qq.com>
  7 +
  8 +Permission is hereby granted, free of charge, to any person obtaining a copy
  9 +of this software and associated documentation files (the "Software"), to deal
  10 +in the Software without restriction, including without limitation the rights
  11 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12 +copies of the Software, and to permit persons to whom the Software is
  13 +furnished to do so, subject to the following conditions:
  14 +
  15 +The above copyright notice and this permission notice shall be included in
  16 +all copies or substantial portions of the Software.
  17 +
  18 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  21 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  22 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  23 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  24 +THE SOFTWARE.
  25 +
  26 +Generated by CocoaPods - https://cocoapods.org
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-acknowledgements.plist 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-acknowledgements.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreferenceSpecifiers</key>
  6 + <array>
  7 + <dict>
  8 + <key>FooterText</key>
  9 + <string>This application makes use of the following third party libraries:</string>
  10 + <key>Title</key>
  11 + <string>Acknowledgements</string>
  12 + <key>Type</key>
  13 + <string>PSGroupSpecifier</string>
  14 + </dict>
  15 + <dict>
  16 + <key>FooterText</key>
  17 + <string>Copyright (c) 2020 694092596@qq.com &lt;694092596@qq.com&gt;
  18 +
  19 +Permission is hereby granted, free of charge, to any person obtaining a copy
  20 +of this software and associated documentation files (the "Software"), to deal
  21 +in the Software without restriction, including without limitation the rights
  22 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  23 +copies of the Software, and to permit persons to whom the Software is
  24 +furnished to do so, subject to the following conditions:
  25 +
  26 +The above copyright notice and this permission notice shall be included in
  27 +all copies or substantial portions of the Software.
  28 +
  29 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  30 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  31 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  32 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  33 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  34 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  35 +THE SOFTWARE.
  36 +</string>
  37 + <key>License</key>
  38 + <string>MIT</string>
  39 + <key>Title</key>
  40 + <string>DSGTMBase64</string>
  41 + <key>Type</key>
  42 + <string>PSGroupSpecifier</string>
  43 + </dict>
  44 + <dict>
  45 + <key>FooterText</key>
  46 + <string>Generated by CocoaPods - https://cocoapods.org</string>
  47 + <key>Title</key>
  48 + <string></string>
  49 + <key>Type</key>
  50 + <string>PSGroupSpecifier</string>
  51 + </dict>
  52 + </array>
  53 + <key>StringsTable</key>
  54 + <string>Acknowledgements</string>
  55 + <key>Title</key>
  56 + <string>Acknowledgements</string>
  57 +</dict>
  58 +</plist>
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-dummy.m 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-dummy.m
  1 +#import <Foundation/Foundation.h>
  2 +@interface PodsDummy_Pods_DSGTMBase64_Example : NSObject
  3 +@end
  4 +@implementation PodsDummy_Pods_DSGTMBase64_Example
  5 +@end
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-frameworks.sh 0 → 100755
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-frameworks.sh
  1 +#!/bin/sh
  2 +set -e
  3 +set -u
  4 +set -o pipefail
  5 +
  6 +function on_error {
  7 + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
  8 +}
  9 +trap 'on_error $LINENO' ERR
  10 +
  11 +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
  12 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
  13 + # frameworks to, so exit 0 (signalling the script phase was successful).
  14 + exit 0
  15 +fi
  16 +
  17 +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  18 +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  19 +
  20 +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
  21 +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
  22 +
  23 +# Used as a return value for each invocation of `strip_invalid_archs` function.
  24 +STRIP_BINARY_RETVAL=0
  25 +
  26 +# This protects against multiple targets copying the same framework dependency at the same time. The solution
  27 +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
  28 +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
  29 +
  30 +# Copies and strips a vendored framework
  31 +install_framework()
  32 +{
  33 + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
  34 + local source="${BUILT_PRODUCTS_DIR}/$1"
  35 + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
  36 + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
  37 + elif [ -r "$1" ]; then
  38 + local source="$1"
  39 + fi
  40 +
  41 + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
  42 +
  43 + if [ -L "${source}" ]; then
  44 + echo "Symlinked..."
  45 + source="$(readlink "${source}")"
  46 + fi
  47 +
  48 + # Use filter instead of exclude so missing patterns don't throw errors.
  49 + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
  50 + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
  51 +
  52 + local basename
  53 + basename="$(basename -s .framework "$1")"
  54 + binary="${destination}/${basename}.framework/${basename}"
  55 +
  56 + if ! [ -r "$binary" ]; then
  57 + binary="${destination}/${basename}"
  58 + elif [ -L "${binary}" ]; then
  59 + echo "Destination binary is symlinked..."
  60 + dirname="$(dirname "${binary}")"
  61 + binary="${dirname}/$(readlink "${binary}")"
  62 + fi
  63 +
  64 + # Strip invalid architectures so "fat" simulator / device frameworks work on device
  65 + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
  66 + strip_invalid_archs "$binary"
  67 + fi
  68 +
  69 + # Resign the code if required by the build settings to avoid unstable apps
  70 + code_sign_if_enabled "${destination}/$(basename "$1")"
  71 +
  72 + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
  73 + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
  74 + local swift_runtime_libs
  75 + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u)
  76 + for lib in $swift_runtime_libs; do
  77 + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  78 + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  79 + code_sign_if_enabled "${destination}/${lib}"
  80 + done
  81 + fi
  82 +}
  83 +
  84 +# Copies and strips a vendored dSYM
  85 +install_dsym() {
  86 + local source="$1"
  87 + if [ -r "$source" ]; then
  88 + # Copy the dSYM into a the targets temp dir.
  89 + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
  90 + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
  91 +
  92 + local basename
  93 + basename="$(basename -s .framework.dSYM "$source")"
  94 + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
  95 +
  96 + # Strip invalid architectures so "fat" simulator / device frameworks work on device
  97 + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then
  98 + strip_invalid_archs "$binary"
  99 + fi
  100 +
  101 + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
  102 + # Move the stripped file into its final destination.
  103 + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
  104 + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
  105 + else
  106 + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
  107 + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
  108 + fi
  109 + fi
  110 +}
  111 +
  112 +# Copies the bcsymbolmap files of a vendored framework
  113 +install_bcsymbolmap() {
  114 + local bcsymbolmap_path="$1"
  115 + local destination="${BUILT_PRODUCTS_DIR}"
  116 + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}""
  117 + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"
  118 +}
  119 +
  120 +# Signs a framework with the provided identity
  121 +code_sign_if_enabled() {
  122 + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
  123 + # Use the current code_sign_identity
  124 + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
  125 + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
  126 +
  127 + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
  128 + code_sign_cmd="$code_sign_cmd &"
  129 + fi
  130 + echo "$code_sign_cmd"
  131 + eval "$code_sign_cmd"
  132 + fi
  133 +}
  134 +
  135 +# Strip invalid architectures
  136 +strip_invalid_archs() {
  137 + binary="$1"
  138 + # Get architectures for current target binary
  139 + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
  140 + # Intersect them with the architectures we are building for
  141 + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
  142 + # If there are no archs supported by this binary then warn the user
  143 + if [[ -z "$intersected_archs" ]]; then
  144 + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
  145 + STRIP_BINARY_RETVAL=0
  146 + return
  147 + fi
  148 + stripped=""
  149 + for arch in $binary_archs; do
  150 + if ! [[ "${ARCHS}" == *"$arch"* ]]; then
  151 + # Strip non-valid architectures in-place
  152 + lipo -remove "$arch" -output "$binary" "$binary"
  153 + stripped="$stripped $arch"
  154 + fi
  155 + done
  156 + if [[ "$stripped" ]]; then
  157 + echo "Stripped $binary of architectures:$stripped"
  158 + fi
  159 + STRIP_BINARY_RETVAL=1
  160 +}
  161 +
  162 +
  163 +if [[ "$CONFIGURATION" == "Debug" ]]; then
  164 + install_framework "${BUILT_PRODUCTS_DIR}/DSGTMBase64/DSGTMBase64.framework"
  165 +fi
  166 +if [[ "$CONFIGURATION" == "Release" ]]; then
  167 + install_framework "${BUILT_PRODUCTS_DIR}/DSGTMBase64/DSGTMBase64.framework"
  168 +fi
  169 +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
  170 + wait
  171 +fi
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-umbrella.h 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example-umbrella.h
  1 +#ifdef __OBJC__
  2 +#import <UIKit/UIKit.h>
  3 +#else
  4 +#ifndef FOUNDATION_EXPORT
  5 +#if defined(__cplusplus)
  6 +#define FOUNDATION_EXPORT extern "C"
  7 +#else
  8 +#define FOUNDATION_EXPORT extern
  9 +#endif
  10 +#endif
  11 +#endif
  12 +
  13 +
  14 +FOUNDATION_EXPORT double Pods_DSGTMBase64_ExampleVersionNumber;
  15 +FOUNDATION_EXPORT const unsigned char Pods_DSGTMBase64_ExampleVersionString[];
  16 +
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.debug.xcconfig 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.debug.xcconfig
  1 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64"
  2 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
  3 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64/DSGTMBase64.framework/Headers"
  4 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
  5 +OTHER_LDFLAGS = $(inherited) -framework "DSGTMBase64" -framework "Foundation"
  6 +PODS_BUILD_DIR = ${BUILD_DIR}
  7 +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  8 +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
  9 +PODS_ROOT = ${SRCROOT}/Pods
  10 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.modulemap 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.modulemap
  1 +framework module Pods_DSGTMBase64_Example {
  2 + umbrella header "Pods-DSGTMBase64_Example-umbrella.h"
  3 +
  4 + export *
  5 + module * { export * }
  6 +}
Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.release.xcconfig 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Example/Pods-DSGTMBase64_Example.release.xcconfig
  1 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64"
  2 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
  3 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64/DSGTMBase64.framework/Headers"
  4 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
  5 +OTHER_LDFLAGS = $(inherited) -framework "DSGTMBase64" -framework "Foundation"
  6 +PODS_BUILD_DIR = ${BUILD_DIR}
  7 +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  8 +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
  9 +PODS_ROOT = ${SRCROOT}/Pods
  10 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-Info.plist 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>${EXECUTABLE_NAME}</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>${PRODUCT_NAME}</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>${CURRENT_PROJECT_VERSION}</string>
  23 + <key>NSPrincipalClass</key>
  24 + <string></string>
  25 +</dict>
  26 +</plist>
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-acknowledgements.markdown 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-acknowledgements.markdown
  1 +# Acknowledgements
  2 +This application makes use of the following third party libraries:
  3 +Generated by CocoaPods - https://cocoapods.org
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-acknowledgements.plist 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-acknowledgements.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreferenceSpecifiers</key>
  6 + <array>
  7 + <dict>
  8 + <key>FooterText</key>
  9 + <string>This application makes use of the following third party libraries:</string>
  10 + <key>Title</key>
  11 + <string>Acknowledgements</string>
  12 + <key>Type</key>
  13 + <string>PSGroupSpecifier</string>
  14 + </dict>
  15 + <dict>
  16 + <key>FooterText</key>
  17 + <string>Generated by CocoaPods - https://cocoapods.org</string>
  18 + <key>Title</key>
  19 + <string></string>
  20 + <key>Type</key>
  21 + <string>PSGroupSpecifier</string>
  22 + </dict>
  23 + </array>
  24 + <key>StringsTable</key>
  25 + <string>Acknowledgements</string>
  26 + <key>Title</key>
  27 + <string>Acknowledgements</string>
  28 +</dict>
  29 +</plist>
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-dummy.m 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-dummy.m
  1 +#import <Foundation/Foundation.h>
  2 +@interface PodsDummy_Pods_DSGTMBase64_Tests : NSObject
  3 +@end
  4 +@implementation PodsDummy_Pods_DSGTMBase64_Tests
  5 +@end
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-umbrella.h 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests-umbrella.h
  1 +#ifdef __OBJC__
  2 +#import <UIKit/UIKit.h>
  3 +#else
  4 +#ifndef FOUNDATION_EXPORT
  5 +#if defined(__cplusplus)
  6 +#define FOUNDATION_EXPORT extern "C"
  7 +#else
  8 +#define FOUNDATION_EXPORT extern
  9 +#endif
  10 +#endif
  11 +#endif
  12 +
  13 +
  14 +FOUNDATION_EXPORT double Pods_DSGTMBase64_TestsVersionNumber;
  15 +FOUNDATION_EXPORT const unsigned char Pods_DSGTMBase64_TestsVersionString[];
  16 +
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.debug.xcconfig 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.debug.xcconfig
  1 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64"
  2 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
  3 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64/DSGTMBase64.framework/Headers"
  4 +OTHER_LDFLAGS = $(inherited) -framework "DSGTMBase64" -framework "Foundation"
  5 +PODS_BUILD_DIR = ${BUILD_DIR}
  6 +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  7 +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
  8 +PODS_ROOT = ${SRCROOT}/Pods
  9 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.modulemap 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.modulemap
  1 +framework module Pods_DSGTMBase64_Tests {
  2 + umbrella header "Pods-DSGTMBase64_Tests-umbrella.h"
  3 +
  4 + export *
  5 + module * { export * }
  6 +}
Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.release.xcconfig 0 → 100644
  1 +++ a/Example/Pods/Target Support Files/Pods-DSGTMBase64_Tests/Pods-DSGTMBase64_Tests.release.xcconfig
  1 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64"
  2 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
  3 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DSGTMBase64/DSGTMBase64.framework/Headers"
  4 +OTHER_LDFLAGS = $(inherited) -framework "DSGTMBase64" -framework "Foundation"
  5 +PODS_BUILD_DIR = ${BUILD_DIR}
  6 +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
  7 +PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
  8 +PODS_ROOT = ${SRCROOT}/Pods
  9 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
Example/Tests/Tests-Info.plist 0 → 100644
  1 +++ a/Example/Tests/Tests-Info.plist
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>${EXECUTABLE_NAME}</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundlePackageType</key>
  14 + <string>BNDL</string>
  15 + <key>CFBundleShortVersionString</key>
  16 + <string>1.0</string>
  17 + <key>CFBundleSignature</key>
  18 + <string>????</string>
  19 + <key>CFBundleVersion</key>
  20 + <string>1</string>
  21 +</dict>
  22 +</plist>
Example/Tests/Tests-Prefix.pch 0 → 100644
  1 +++ a/Example/Tests/Tests-Prefix.pch
  1 +// The contents of this file are implicitly included at the beginning of every test case source file.
  2 +
  3 +#ifdef __OBJC__
  4 +
  5 +
  6 +
  7 +#endif
Example/Tests/Tests.m 0 → 100644
  1 +++ a/Example/Tests/Tests.m
  1 +//
  2 +// DSGTMBase64Tests.m
  3 +// DSGTMBase64Tests
  4 +//
  5 +// Created by 694092596@qq.com on 01/21/2020.
  6 +// Copyright (c) 2020 694092596@qq.com. All rights reserved.
  7 +//
  8 +
  9 +@import XCTest;
  10 +
  11 +@interface Tests : XCTestCase
  12 +
  13 +@end
  14 +
  15 +@implementation Tests
  16 +
  17 +- (void)setUp
  18 +{
  19 + [super setUp];
  20 + // Put setup code here. This method is called before the invocation of each test method in the class.
  21 +}
  22 +
  23 +- (void)tearDown
  24 +{
  25 + // Put teardown code here. This method is called after the invocation of each test method in the class.
  26 + [super tearDown];
  27 +}
  28 +
  29 +- (void)testExample
  30 +{
  31 + XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
  32 +}
  33 +
  34 +@end
  35 +
Example/Tests/en.lproj/InfoPlist.strings 0 → 100644
  1 +++ a/Example/Tests/en.lproj/InfoPlist.strings
  1 +/* Localized versions of Info.plist keys */
  2 +
LICENSE 0 → 100644
  1 +++ a/LICENSE
  1 +Copyright (c) 2020 694092596@qq.com <694092596@qq.com>
  2 +
  3 +Permission is hereby granted, free of charge, to any person obtaining a copy
  4 +of this software and associated documentation files (the "Software"), to deal
  5 +in the Software without restriction, including without limitation the rights
  6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7 +copies of the Software, and to permit persons to whom the Software is
  8 +furnished to do so, subject to the following conditions:
  9 +
  10 +The above copyright notice and this permission notice shall be included in
  11 +all copies or substantial portions of the Software.
  12 +
  13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19 +THE SOFTWARE.
README.md 0 → 100644
  1 +++ a/README.md
  1 +# DSGTMBase64
  2 +
  3 +[![CI Status](https://img.shields.io/travis/694092596@qq.com/DSGTMBase64.svg?style=flat)](https://travis-ci.org/694092596@qq.com/DSGTMBase64)
  4 +[![Version](https://img.shields.io/cocoapods/v/DSGTMBase64.svg?style=flat)](https://cocoapods.org/pods/DSGTMBase64)
  5 +[![License](https://img.shields.io/cocoapods/l/DSGTMBase64.svg?style=flat)](https://cocoapods.org/pods/DSGTMBase64)
  6 +[![Platform](https://img.shields.io/cocoapods/p/DSGTMBase64.svg?style=flat)](https://cocoapods.org/pods/DSGTMBase64)
  7 +
  8 +## Example
  9 +
  10 +To run the example project, clone the repo, and run `pod install` from the Example directory first.
  11 +
  12 +## Requirements
  13 +
  14 +## Installation
  15 +
  16 +DSGTMBase64 is available through [CocoaPods](https://cocoapods.org). To install
  17 +it, simply add the following line to your Podfile:
  18 +
  19 +```ruby
  20 +pod 'DSGTMBase64'
  21 +```
  22 +
  23 +## Author
  24 +
  25 +694092596@qq.com, 694092596@qq.com
  26 +
  27 +## License
  28 +
  29 +DSGTMBase64 is available under the MIT license. See the LICENSE file for more info.
_Pods.xcodeproj 0 → 120000
  1 +++ a/_Pods.xcodeproj
  1 +Example/Pods/Pods.xcodeproj
0 \ No newline at end of file 2 \ No newline at end of file