Merge branch 'mcgrews3-master'
diff --git a/lib/pbxProject.js b/lib/pbxProject.js
index 435bcd9..833a9bc 100644
--- a/lib/pbxProject.js
+++ b/lib/pbxProject.js
@@ -132,9 +132,22 @@
     return file;

 }

 

-pbxProject.prototype.addSourceFile = function(path, opt) {

+/**

+ *

+ * @param path {String}

+ * @param opt {Object} see pbxFile for avail options

+ * @param group {String} group key

+ * @returns {Object} file; see pbxFile

+ */

+pbxProject.prototype.addSourceFile = function (path, opt, group) {

+    var file;

+    if (group) {

+        file = this.addFile(path, group, opt);

+    }

+    else {

+        file = this.addPluginFile(path, opt);

+    }

 

-    var file = this.addPluginFile(path, opt);

     if (!file) return false;

 

     file.target = opt ? opt.target : undefined;

@@ -146,9 +159,21 @@
     return file;

 }

 

-

-pbxProject.prototype.removeSourceFile = function(path, opt) {

-    var file = this.removePluginFile(path, opt)

+/**

+ *

+ * @param path {String}

+ * @param opt {Object} see pbxFile for avail options

+ * @param group {String} group key

+ * @returns {Object} file; see pbxFile

+ */

+pbxProject.prototype.removeSourceFile = function (path, opt, group) {

+    var file;

+    if (group) {

+        file = this.removeFile(path, group, opt);

+    }

+    else {

+        file = this.removePluginFile(path, opt);

+    }

     file.target = opt ? opt.target : undefined;

     this.removeFromPbxBuildFileSection(file);        // PBXBuildFile

     this.removeFromPbxSourcesBuildPhase(file);       // PBXSourcesBuildPhase

@@ -156,12 +181,36 @@
     return file;

 }

 

-pbxProject.prototype.addHeaderFile = function(path, opt) {

-    return this.addPluginFile(path, opt)

+/**

+ *

+ * @param path {String}

+ * @param opt {Object} see pbxFile for avail options

+ * @param group {String} group key

+ * @returns {Object} file; see pbxFile

+ */

+pbxProject.prototype.addHeaderFile = function (path, opt, group) {

+    if (group) {

+        return this.addFile(path, group, opt);

+    }

+    else {

+        return this.addPluginFile(path, opt);

+    }

 }

 

-pbxProject.prototype.removeHeaderFile = function(path, opt) {

-    return this.removePluginFile(path, opt)

+/**

+ *

+ * @param path {String}

+ * @param opt {Object} see pbxFile for avail options

+ * @param group {String} group key

+ * @returns {Object} file; see pbxFile

+ */

+pbxProject.prototype.removeHeaderFile = function (path, opt, group) {

+    if (group) {

+        return this.removeFile(path, group, opt);

+    }

+    else {

+        return this.removePluginFile(path, opt);

+    }

 }

 

 pbxProject.prototype.addResourceFile = function(path, opt) {

@@ -746,7 +795,20 @@
 }

 

 pbxProject.prototype.pbxGroupByName = function(name) {

-    return this.pbxItemByComment(name, 'PBXGroup');

+    var groups = this.hash.project.objects['PBXGroup'],

+        key, groupKey;

+

+    for (key in groups) {

+        // only look for comments

+        if (!COMMENT_KEY.test(key)) continue;

+

+        if (groups[key] == name) {

+            groupKey = key.split(COMMENT_KEY)[0];

+            return groups[groupKey];

+        }

+    }

+

+    return null;

 }

 

 pbxProject.prototype.pbxTargetByName = function(name) {

@@ -824,9 +886,22 @@
 }

 

 

-pbxProject.prototype.updateBuildProperty = function(prop, value) {

-    var config = this.pbxXCBuildConfigurationSection();

-    propReplace(config, prop, value);

+/**

+ *

+ * @param prop {String}

+ * @param value {String|Array|Object|Number|Boolean}

+ * @param build {String} Release or Debug

+ */

+pbxProject.prototype.updateBuildProperty = function(prop, value, build) {

+    var configs = this.pbxXCBuildConfigurationSection();

+    for (var configName in configs) {

+        if (!COMMENT_KEY.test(configName)) {

+            var config = configs[configName];

+            if ( (build && config.name === build) || (!build) ) {

+                config.buildSettings[prop] = value;

+            }

+        }

+    }

 }

 

 pbxProject.prototype.updateProductName = function(name) {

@@ -1364,4 +1439,161 @@
     }

 }

 

+/*** NEW ***/

+

+pbxProject.prototype.addToPbxGroup = function (file, groupKey) {

+    var group = this.getPBXGroupByKey(groupKey);

+    if (group && group.children !== undefined) {

+        if (typeof file === 'string') {

+            //Group Key

+            var childGroup = {

+                value:file,

+                comment: this.getPBXGroupByKey(file).name

+            };

+

+            group.children.push(childGroup);

+        }

+        else {

+            //File Object

+            group.children.push(pbxGroupChild(file));

+        }

+    }

+}

+

+pbxProject.prototype.removeFromPbxGroup = function (file, groupKey) {

+    var group = this.getPBXGroupByKey(groupKey);

+    if (group) {

+        var groupChildren = group.children, i;

+        for(i in groupChildren) {

+            if(pbxGroupChild(file).value == groupChildren[i].value &&

+                pbxGroupChild(file).comment == groupChildren[i].comment) {

+                groupChildren.splice(i, 1);

+                break;

+            }

+        }

+    }

+}

+

+pbxProject.prototype.getPBXGroupByKey = function(key) {

+    return this.hash.project.objects['PBXGroup'][key];

+};

+

+pbxProject.prototype.findPBXGroupKey = function(criteria) {

+    var groups = this.hash.project.objects['PBXGroup'];

+    var target;

+

+    for (var key in groups) {

+        // only look for comments

+        if (COMMENT_KEY.test(key)) continue;

+

+        var group = groups[key];

+        if (criteria && criteria.path && criteria.name) {

+            if (criteria.path === group.path && criteria.name === group.name) {

+                target = key;

+                break

+            }

+        }

+        else if (criteria && criteria.path) {

+            if (criteria.path === group.path) {

+                target = key;

+                break

+            }

+        }

+        else if (criteria && criteria.name) {

+            if (criteria.name === group.name) {

+                target = key;

+                break

+            }

+        }

+    }

+

+    return target;

+}

+

+pbxProject.prototype.pbxCreateGroup = function(name, pathName) {

+

+    //Create object

+    var model = {

+        isa:"PBXGroup",

+        children: [],

+        name: name,

+        path: pathName,

+        sourceTree: '"<group>"'

+    };

+    var key = this.generateUuid();

+

+    //Create comment

+    var commendId = key + '_comment';

+

+    //add obj and commentObj to groups;

+    var groups = this.hash.project.objects['PBXGroup'];

+    groups[commendId] = name;

+    groups[key] = model;

+

+    return key;

+}

+

+

+pbxProject.prototype.getPBXObject = function(name) {

+    return this.hash.project.objects[name];

+}

+

+

+

+pbxProject.prototype.addFile = function (path, group, opt) {

+    var file = new pbxFile(path, opt);

+

+    // null is better for early errors

+    if (this.hasFile(file.path)) return null;

+

+    file.fileRef = this.generateUuid();

+

+    this.addToPbxFileReferenceSection(file);    // PBXFileReference

+    this.addToPbxGroup(file, group);            // PBXGroup

+

+    return file;

+}

+

+pbxProject.prototype.removeFile = function (path, group, opt) {

+    var file = new pbxFile(path, opt);

+

+    this.removeFromPbxFileReferenceSection(file);    // PBXFileReference

+    this.removeFromPbxGroup(file, group);            // PBXGroup

+

+    return file;

+}

+

+

+

+pbxProject.prototype.getBuildProperty = function(prop, build) {

+    var target;

+    var configs = this.pbxXCBuildConfigurationSection();

+    for (var configName in configs) {

+        if (!COMMENT_KEY.test(configName)) {

+            var config = configs[configName];

+            if ( (build && config.name === build) || (build === undefined) ) {

+                if (config.buildSettings[prop] !== undefined) {

+                    target = config.buildSettings[prop];

+                }

+            }

+        }

+    }

+    return target;

+}

+

+pbxProject.prototype.getBuildConfigByName = function(name) {

+    var target = {};

+    var configs = this.pbxXCBuildConfigurationSection();

+    for (var configName in configs) {

+        if (!COMMENT_KEY.test(configName)) {

+            var config = configs[configName];

+            if (config.name === name)  {

+                target[configName] = config;

+            }

+        }

+    }

+    return target;

+}

+

+

 module.exports = pbxProject;

diff --git a/test/group.js b/test/group.js
new file mode 100644
index 0000000..8523b83
--- /dev/null
+++ b/test/group.js
@@ -0,0 +1,320 @@
+var pbx = require('../lib/pbxProject'),
+    project,
+    projectHash;
+
+var findChildInGroup = function(obj, target) {
+    var found = false;
+
+    for (var i = 0, j = obj.children.length; i < j; i++) {
+        if (obj.children[i].value === target) {
+            found = true;
+            break;
+        }
+    }
+
+    return found;
+}
+
+var findFileByUUID = function(obj, target) {
+    var found = false;
+
+    for (var k = 0, l = obj.files.length; k < l; k++) {
+        if (obj.files[k].value === target) {
+            found = true;
+            break;
+        }
+    }
+
+    return found;
+}
+
+var findByFileRef = function(obj, target) {
+    var found = false;
+
+    for (var property in obj) {
+        if (!/comment/.test(property)) {
+            if (obj[property].fileRef === target) {
+                found = true;
+                break;
+            }
+        }
+    }
+    return found;
+}
+
+var findByName = function(obj, target) {
+    var found = false;
+    for (var property in obj) {
+        if (!/comment/.test(property)) {
+            var value = obj[property];
+            if (value.name === target) {
+                found = true;
+            }
+        }
+    }
+    return found;
+}
+
+exports.setUp = function(callback) {
+    project = new pbx('test/parser/projects/group.pbxproj');
+    projectHash = project.parseSync();
+    callback();
+}
+
+exports.getGroupByKey = {
+    'should return PBXGroup for Classes': function(test) {
+        var groupKey = project.findPBXGroupKey({name: 'Classes'});
+        var group = project.getPBXGroupByKey(groupKey);
+        test.ok(group.name === 'Classes');
+        test.done();
+    },
+    'should return PBXGroup for Plugins': function(test) {
+        var groupKey = project.findPBXGroupKey({name: 'Plugins'});
+        var group = project.getPBXGroupByKey(groupKey);
+        test.ok(group.name === 'Plugins');
+        test.done();
+    }
+}
+
+exports.createGroup = {
+    'should create a new Test Group': function(test) {
+        var found = false;
+        var groups = project.getPBXObject('PBXGroup');
+
+        var found = findByName(groups, 'Test');
+        test.ok(found === false);
+
+
+        var group = project.findPBXGroupKey({name:'Test'});
+        test.ok(group === undefined);
+
+        project.pbxCreateGroup('Test', 'Test');
+
+        groups = project.getPBXObject('PBXGroup');
+        found = findByName(groups, 'Test');
+        test.ok(found === true);
+
+        group = project.findPBXGroupKey({name:'Test'});
+        test.ok(typeof group === 'string');
+        test.done();
+    }
+}
+
+exports.findGroupKey = {
+    'should return a valid group key':function(test) {
+        var keyByName = project.findPBXGroupKey({ name: 'Classes'});
+        var keyByPath = project.findPBXGroupKey({ path: 'icons'});
+        var keyByPathName = project.findPBXGroupKey({ path: '"HelloCordova/Plugins"', name: 'Plugins'});
+        var nonExistingKey = project.findPBXGroupKey({ name: 'Foo'});
+
+        test.ok(keyByName === '080E96DDFE201D6D7F000001');
+        test.ok(keyByPath === '308D052D1370CCF300D202BF');
+        test.ok(keyByPathName === '307C750510C5A3420062BCA9');
+        test.ok(nonExistingKey === undefined);
+
+        test.done();
+    }
+}
+
+exports.addGroupToGroup = {
+    'should create a new test group then add group to Classes group': function(test) {
+        var testKey = project.pbxCreateGroup('Test', 'Test');
+        var classesKey = project.findPBXGroupKey({name: 'Classes'});
+        project.addToPbxGroup(testKey, classesKey);
+
+        var classesGroup = project.getPBXGroupByKey(classesKey);
+        var foundTestGroup = false;
+        for (var i = 0, j = classesGroup.children.length; i < j; i++) {
+            var child = classesGroup.children[i];
+            if (child.value === testKey && child.comment === 'Test') {
+                foundTestGroup = true;
+            }
+        }
+
+        test.ok(foundTestGroup);
+
+        test.done();
+    }
+}
+
+exports.addSourceFileToGroup = {
+    'should create group + add source file' : function(test) {
+        var testKey = project.pbxCreateGroup('Test', 'Test');
+        var file = project.addSourceFile('Notifications.m', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(foundInGroup);
+
+        var foundInBuildFileSection = findByFileRef(project.pbxBuildFileSection(), file.fileRef);
+        test.ok(foundInBuildFileSection);
+
+        var foundInBuildPhase = findFileByUUID(project.pbxSourcesBuildPhaseObj(), file.uuid);
+        test.ok(foundInBuildPhase);
+
+        test.done();
+    }
+}
+
+exports.removeSourceFileFromGroup = {
+    'should create group + add source file then remove source file' : function(test) {
+        var testKey = project.pbxCreateGroup('Test', 'Test');
+        var file = project.addSourceFile('Notifications.m', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(foundInGroup);
+
+        var foundInBuildFileSection = findByFileRef(project.pbxBuildFileSection(), file.fileRef);
+        test.ok(foundInBuildFileSection);
+
+        var foundInBuildPhase = findFileByUUID(project.pbxSourcesBuildPhaseObj(), file.uuid);
+        test.ok(foundInBuildPhase);
+
+        project.removeSourceFile('Notifications.m', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(!foundInGroup);
+
+        var foundInBuildFileSection = findByFileRef(project.pbxBuildFileSection(), file.fileRef);
+        test.ok(!foundInBuildFileSection);
+
+        var foundInBuildPhase = findFileByUUID(project.pbxSourcesBuildPhaseObj(), file.uuid);
+        test.ok(!foundInBuildPhase);
+
+        test.done();
+    }
+}
+
+exports.addHeaderFileToGroup = {
+    'should create group + add source file' : function(test) {
+        var testKey = project.pbxCreateGroup('Test', 'Test');
+        var file = project.addHeaderFile('Notifications.h', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(foundInGroup);
+
+        test.done();
+    }
+}
+
+exports.removeHeaderFileFromGroup = {
+    'should create group + add source file then remove source file' : function(test) {
+        var testKey = project.pbxCreateGroup('Test', 'Test');
+        var file = project.addHeaderFile('Notifications.h', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(foundInGroup);
+
+        project.removeHeaderFile('Notifications.h', {}, testKey);
+
+        var foundInGroup = findChildInGroup(project.getPBXGroupByKey(testKey),file.fileRef );
+        test.ok(!foundInGroup);
+
+        test.done();
+    }
+}
+
+exports.retrieveBuildPropertyForBuild = {
+    'should retrieve valid build property ':function(test) {
+        var releaseTargetedDeviceFamily = project.getBuildProperty('TARGETED_DEVICE_FAMILY', 'Release');
+        var debugTargetedDeviceFamily = project.getBuildProperty('TARGETED_DEVICE_FAMILY', 'Debug');
+        var nonExistingProperty = project.getBuildProperty('FOO', 'Debug');
+        var nonExistingBuild = project.getBuildProperty('TARGETED_DEVICE_FAMILY', 'Foo');
+
+        test.equal(releaseTargetedDeviceFamily, '"1,2"');
+        test.equal(debugTargetedDeviceFamily,'"1"');
+        test.equal(nonExistingProperty, undefined);
+        test.equal(nonExistingBuild, undefined);
+
+        test.done();
+    }
+}
+
+exports.retrieveBuildConfigByName = {
+    'should retrieve valid build config':function(test) {
+        var releaseBuildConfig = project.getBuildConfigByName('Release');
+        for (var property in releaseBuildConfig) {
+            var value = releaseBuildConfig[property];
+            test.ok(value.name === 'Release');
+        }
+
+        var debugBuildConfig = project.getBuildConfigByName('Debug');
+        for (var property in debugBuildConfig) {
+            var value = debugBuildConfig[property];
+            test.ok(value.name === 'Debug');
+        }
+
+        var nonExistingBuildConfig = project.getBuildConfigByName('Foo');
+        test.deepEqual(nonExistingBuildConfig, {});
+
+        test.done();
+    }
+}
+
+/* This proves the issue in 0.6.7
+exports.validatePropReplaceException = {
+    'should throw TypeError for updateBuildProperty VALID_ARCHS when none existed' : function(test) {
+        test.throws(
+            function() {
+                project.updateBuildProperty('VALID_ARCHS', '"armv7 armv7s');
+            },
+            TypeError,
+            "Object object has no method 'hasOwnProperty'"
+        );
+        test.done();
+    }
+}
+*/
+
+exports.validatePropReplaceFix = {
+    'should create build configuration for VALID_ARCHS when none existed' : function(test) {
+        project.updateBuildProperty('VALID_ARCHS', '"armv7 armv7s"', 'Debug');
+        test.done();
+    }
+}
+
+exports.validateHasFile = {
+    'should return true for has file MainViewController.m': function(test) {
+        var result = project.hasFile('MainViewController.m');
+        test.ok(result.path == "MainViewController.m");
+        test.done();
+    }
+}
+
+exports.testWritingPBXProject = {
+
+    'should successfully write to PBXProject TargetAttributes': function(test) {
+        var pbxProjectObj = project.getPBXObject('PBXProject');
+        var pbxProject;
+        for (var property in pbxProjectObj) {
+            if (!/comment/.test(property)) {
+                pbxProject = pbxProjectObj[property];
+            }
+        }
+
+        var target;
+        var projectTargets = pbxProject.targets;
+        for (var i = 0, j = pbxProject.targets.length; i < j; i++ ) {
+            target = pbxProject.targets[i].value;
+        }
+
+        pbxProject.attributes.TargetAttributes = {};
+        pbxProject.attributes.TargetAttributes[target] = {
+            DevelopmentTeam: 'N6X4RJZZ5D',
+            SystemCapabilities: {
+                "com.apple.BackgroundModes": {
+                    enabled : 0
+                },
+                "com.apple.DataProtection" : {
+                    enabled : 0
+                },
+                "com.apple.Keychain" : {
+                    enabled: 1
+                }
+            }
+        };
+
+        var output = project.writeSync();
+
+        test.done();
+    }
+}
\ No newline at end of file
diff --git a/test/parser/projects/group.pbxproj b/test/parser/projects/group.pbxproj
new file mode 100644
index 0000000..700242c
--- /dev/null
+++ b/test/parser/projects/group.pbxproj
@@ -0,0 +1,575 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; };
+		1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
+		288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
+		301BF552109A68D80062928A /* libCordova.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF535109A57CC0062928A /* libCordova.a */; };
+		302D95F114D2391D003F00A1 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 302D95EF14D2391D003F00A1 /* MainViewController.m */; };
+		302D95F214D2391D003F00A1 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 302D95F014D2391D003F00A1 /* MainViewController.xib */; };
+		305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */; };
+		3088BBBD154F3926009F9C59 /* Default-Landscape@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB7154F3926009F9C59 /* Default-Landscape@2x~ipad.png */; };
+		3088BBBE154F3926009F9C59 /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB8154F3926009F9C59 /* Default-Landscape~ipad.png */; };
+		3088BBBF154F3926009F9C59 /* Default-Portrait@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBB9154F3926009F9C59 /* Default-Portrait@2x~ipad.png */; };
+		3088BBC0154F3926009F9C59 /* Default-Portrait~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBBA154F3926009F9C59 /* Default-Portrait~ipad.png */; };
+		3088BBC1154F3926009F9C59 /* Default@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBBB154F3926009F9C59 /* Default@2x~iphone.png */; };
+		3088BBC2154F3926009F9C59 /* Default~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 3088BBBC154F3926009F9C59 /* Default~iphone.png */; };
+		308D05371370CCF300D202BF /* icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 308D052E1370CCF300D202BF /* icon-72.png */; };
+		308D05381370CCF300D202BF /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 308D052F1370CCF300D202BF /* icon.png */; };
+		308D05391370CCF300D202BF /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 308D05301370CCF300D202BF /* icon@2x.png */; };
+		30B4F30019D5E07200D9F7D8 /* Default-667h.png in Resources */ = {isa = PBXBuildFile; fileRef = 30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */; };
+		30B4F30119D5E07200D9F7D8 /* Default-736h.png in Resources */ = {isa = PBXBuildFile; fileRef = 30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */; };
+		30B4F30219D5E07200D9F7D8 /* Default-Landscape-736h.png in Resources */ = {isa = PBXBuildFile; fileRef = 30B4F2FF19D5E07200D9F7D8 /* Default-Landscape-736h.png */; };
+		30C1856619D5FC0A00212699 /* icon-60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30C1856519D5FC0A00212699 /* icon-60@3x.png */; };
+		30FC414916E50CA1004E6F35 /* icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30FC414816E50CA1004E6F35 /* icon-72@2x.png */; };
+		5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */; };
+		7E7966DE1810823500FA85AD /* icon-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D41810823500FA85AD /* icon-40.png */; };
+		7E7966DF1810823500FA85AD /* icon-40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D51810823500FA85AD /* icon-40@2x.png */; };
+		7E7966E01810823500FA85AD /* icon-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D61810823500FA85AD /* icon-50.png */; };
+		7E7966E11810823500FA85AD /* icon-50@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D71810823500FA85AD /* icon-50@2x.png */; };
+		7E7966E21810823500FA85AD /* icon-60.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D81810823500FA85AD /* icon-60.png */; };
+		7E7966E31810823500FA85AD /* icon-60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D91810823500FA85AD /* icon-60@2x.png */; };
+		7E7966E41810823500FA85AD /* icon-76.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DA1810823500FA85AD /* icon-76.png */; };
+		7E7966E51810823500FA85AD /* icon-76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DB1810823500FA85AD /* icon-76@2x.png */; };
+		7E7966E61810823500FA85AD /* icon-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DC1810823500FA85AD /* icon-small.png */; };
+		7E7966E71810823500FA85AD /* icon-small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DD1810823500FA85AD /* icon-small@2x.png */; };
+		D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		301BF534109A57CC0062928A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = D2AAC07E0554694100DB518D;
+			remoteInfo = CordovaLib;
+		};
+		301BF550109A68C00062928A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = D2AAC07D0554694100DB518D;
+			remoteInfo = CordovaLib;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+		1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		1D6058910D05DD3D006BFB54 /* HelloCordova.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HelloCordova.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		1F766FDD13BBADB100FB74C0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = "<group>"; };
+		1F766FE013BBADB100FB74C0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = "<group>"; };
+		288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = "CordovaLib/CordovaLib.xcodeproj"; sourceTree = "<group>"; };
+		301BF56E109A69640062928A /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = SOURCE_ROOT; };
+		302D95EE14D2391D003F00A1 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = "<group>"; };
+		302D95EF14D2391D003F00A1 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = "<group>"; };
+		302D95F014D2391D003F00A1 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainViewController.xib; sourceTree = "<group>"; };
+		305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+		3088BBB7154F3926009F9C59 /* Default-Landscape@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape@2x~ipad.png"; sourceTree = "<group>"; };
+		3088BBB8154F3926009F9C59 /* Default-Landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape~ipad.png"; sourceTree = "<group>"; };
+		3088BBB9154F3926009F9C59 /* Default-Portrait@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait@2x~ipad.png"; sourceTree = "<group>"; };
+		3088BBBA154F3926009F9C59 /* Default-Portrait~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait~ipad.png"; sourceTree = "<group>"; };
+		3088BBBB154F3926009F9C59 /* Default@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x~iphone.png"; sourceTree = "<group>"; };
+		3088BBBC154F3926009F9C59 /* Default~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default~iphone.png"; sourceTree = "<group>"; };
+		308D052E1370CCF300D202BF /* icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-72.png"; sourceTree = "<group>"; };
+		308D052F1370CCF300D202BF /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
+		308D05301370CCF300D202BF /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon@2x.png"; sourceTree = "<group>"; };
+		30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h.png"; sourceTree = "<group>"; };
+		30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h.png"; sourceTree = "<group>"; };
+		30B4F2FF19D5E07200D9F7D8 /* Default-Landscape-736h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape-736h.png"; sourceTree = "<group>"; };
+		30C1856519D5FC0A00212699 /* icon-60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-60@3x.png"; sourceTree = "<group>"; };
+		30FC414816E50CA1004E6F35 /* icon-72@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-72@2x.png"; sourceTree = "<group>"; };
+		32CA4F630368D1EE00C91783 /* HelloCordova-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "HelloCordova-Prefix.pch"; sourceTree = "<group>"; };
+		5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
+		7E7966D41810823500FA85AD /* icon-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40.png"; sourceTree = "<group>"; };
+		7E7966D51810823500FA85AD /* icon-40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40@2x.png"; sourceTree = "<group>"; };
+		7E7966D61810823500FA85AD /* icon-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-50.png"; sourceTree = "<group>"; };
+		7E7966D71810823500FA85AD /* icon-50@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-50@2x.png"; sourceTree = "<group>"; };
+		7E7966D81810823500FA85AD /* icon-60.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-60.png"; sourceTree = "<group>"; };
+		7E7966D91810823500FA85AD /* icon-60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-60@2x.png"; sourceTree = "<group>"; };
+		7E7966DA1810823500FA85AD /* icon-76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-76.png"; sourceTree = "<group>"; };
+		7E7966DB1810823500FA85AD /* icon-76@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-76@2x.png"; sourceTree = "<group>"; };
+		7E7966DC1810823500FA85AD /* icon-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-small.png"; sourceTree = "<group>"; };
+		7E7966DD1810823500FA85AD /* icon-small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-small@2x.png"; sourceTree = "<group>"; };
+		8D1107310486CEB800E47090 /* HelloCordova-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "HelloCordova-Info.plist"; path = "../HelloCordova-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
+		D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x~iphone.png"; sourceTree = "<group>"; };
+		EB87FDF21871DA7A0020F90C /* merges */ = {isa = PBXFileReference; lastKnownFileType = folder; name = merges; path = ../../merges; sourceTree = "<group>"; };
+		EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = "<group>"; };
+		EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = "<group>"; };
+		F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = "HelloCordova/config.xml"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */,
+				301BF552109A68D80062928A /* libCordova.a in Frameworks */,
+				288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
+				305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		080E96DDFE201D6D7F000001 /* Classes */ = {
+			isa = PBXGroup;
+			children = (
+				302D95EE14D2391D003F00A1 /* MainViewController.h */,
+				302D95EF14D2391D003F00A1 /* MainViewController.m */,
+				302D95F014D2391D003F00A1 /* MainViewController.xib */,
+				1D3623240D0F684500981E51 /* AppDelegate.h */,
+				1D3623250D0F684500981E51 /* AppDelegate.m */,
+			);
+			name = Classes;
+			path = "HelloCordova/Classes";
+			sourceTree = SOURCE_ROOT;
+		};
+		19C28FACFE9D520D11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				1D6058910D05DD3D006BFB54 /* HelloCordova.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
+			isa = PBXGroup;
+			children = (
+				EB87FDF41871DAF40020F90C /* config.xml */,
+				EB87FDF31871DA8E0020F90C /* www */,
+				EB87FDF21871DA7A0020F90C /* merges */,
+				EB87FDF11871DA420020F90C /* Staging */,
+				301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */,
+				080E96DDFE201D6D7F000001 /* Classes */,
+				307C750510C5A3420062BCA9 /* Plugins */,
+				29B97315FDCFA39411CA2CEA /* Other Sources */,
+				29B97317FDCFA39411CA2CEA /* Resources */,
+				29B97323FDCFA39411CA2CEA /* Frameworks */,
+				19C28FACFE9D520D11CA2CBB /* Products */,
+			);
+			name = CustomTemplate;
+			sourceTree = "<group>";
+		};
+		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
+			isa = PBXGroup;
+			children = (
+				32CA4F630368D1EE00C91783 /* HelloCordova-Prefix.pch */,
+				29B97316FDCFA39411CA2CEA /* main.m */,
+			);
+			name = "Other Sources";
+			path = "HelloCordova";
+			sourceTree = "<group>";
+		};
+		29B97317FDCFA39411CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				308D052D1370CCF300D202BF /* icons */,
+				308D05311370CCF300D202BF /* splash */,
+				8D1107310486CEB800E47090 /* HelloCordova-Info.plist */,
+			);
+			name = Resources;
+			path = "HelloCordova/Resources";
+			sourceTree = "<group>";
+		};
+		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */,
+				288765FC0DF74451002DB57D /* CoreGraphics.framework */,
+				305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		301BF52E109A57CC0062928A /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				301BF535109A57CC0062928A /* libCordova.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		307C750510C5A3420062BCA9 /* Plugins */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Plugins;
+			path = "HelloCordova/Plugins";
+			sourceTree = SOURCE_ROOT;
+		};
+		308D052D1370CCF300D202BF /* icons */ = {
+			isa = PBXGroup;
+			children = (
+				30C1856519D5FC0A00212699 /* icon-60@3x.png */,
+				7E7966D41810823500FA85AD /* icon-40.png */,
+				7E7966D51810823500FA85AD /* icon-40@2x.png */,
+				7E7966D61810823500FA85AD /* icon-50.png */,
+				7E7966D71810823500FA85AD /* icon-50@2x.png */,
+				7E7966D81810823500FA85AD /* icon-60.png */,
+				7E7966D91810823500FA85AD /* icon-60@2x.png */,
+				7E7966DA1810823500FA85AD /* icon-76.png */,
+				7E7966DB1810823500FA85AD /* icon-76@2x.png */,
+				7E7966DC1810823500FA85AD /* icon-small.png */,
+				7E7966DD1810823500FA85AD /* icon-small@2x.png */,
+				30FC414816E50CA1004E6F35 /* icon-72@2x.png */,
+				308D052E1370CCF300D202BF /* icon-72.png */,
+				308D052F1370CCF300D202BF /* icon.png */,
+				308D05301370CCF300D202BF /* icon@2x.png */,
+			);
+			path = icons;
+			sourceTree = "<group>";
+		};
+		308D05311370CCF300D202BF /* splash */ = {
+			isa = PBXGroup;
+			children = (
+				30B4F2FD19D5E07200D9F7D8 /* Default-667h.png */,
+				30B4F2FE19D5E07200D9F7D8 /* Default-736h.png */,
+				30B4F2FF19D5E07200D9F7D8 /* Default-Landscape-736h.png */,
+				D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */,
+				3088BBB7154F3926009F9C59 /* Default-Landscape@2x~ipad.png */,
+				3088BBB8154F3926009F9C59 /* Default-Landscape~ipad.png */,
+				3088BBB9154F3926009F9C59 /* Default-Portrait@2x~ipad.png */,
+				3088BBBA154F3926009F9C59 /* Default-Portrait~ipad.png */,
+				3088BBBB154F3926009F9C59 /* Default@2x~iphone.png */,
+				3088BBBC154F3926009F9C59 /* Default~iphone.png */,
+			);
+			path = splash;
+			sourceTree = "<group>";
+		};
+		EB87FDF11871DA420020F90C /* Staging */ = {
+			isa = PBXGroup;
+			children = (
+				F840E1F0165FE0F500CFE078 /* config.xml */,
+				301BF56E109A69640062928A /* www */,
+			);
+			name = Staging;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		1D6058900D05DD3D006BFB54 /* HelloCordova */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "HelloCordova" */;
+			buildPhases = (
+				304B58A110DAC018002A0835 /* Copy www directory */,
+				1D60588D0D05DD3D006BFB54 /* Resources */,
+				1D60588E0D05DD3D006BFB54 /* Sources */,
+				1D60588F0D05DD3D006BFB54 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				301BF551109A68C00062928A /* PBXTargetDependency */,
+			);
+			name = "HelloCordova";
+			productName = "HelloCordova";
+			productReference = 1D6058910D05DD3D006BFB54 /* HelloCordova.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		29B97313FDCFA39411CA2CEA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0510;
+			};
+			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "__CLI__" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				en,
+				es,
+				de,
+				se,
+			);
+			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
+			projectDirPath = "";
+			projectReferences = (
+				{
+					ProductGroup = 301BF52E109A57CC0062928A /* Products */;
+					ProjectRef = 301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */;
+				},
+			);
+			projectRoot = "";
+			targets = (
+				1D6058900D05DD3D006BFB54 /* HelloCordova */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+		301BF535109A57CC0062928A /* libCordova.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libCordova.a;
+			remoteRef = 301BF534109A57CC0062928A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+		1D60588D0D05DD3D006BFB54 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7E7966E41810823500FA85AD /* icon-76.png in Resources */,
+				7E7966DF1810823500FA85AD /* icon-40@2x.png in Resources */,
+				308D05371370CCF300D202BF /* icon-72.png in Resources */,
+				30B4F30119D5E07200D9F7D8 /* Default-736h.png in Resources */,
+				308D05381370CCF300D202BF /* icon.png in Resources */,
+				308D05391370CCF300D202BF /* icon@2x.png in Resources */,
+				302D95F214D2391D003F00A1 /* MainViewController.xib in Resources */,
+				7E7966E01810823500FA85AD /* icon-50.png in Resources */,
+				7E7966E31810823500FA85AD /* icon-60@2x.png in Resources */,
+				7E7966E61810823500FA85AD /* icon-small.png in Resources */,
+				3088BBBD154F3926009F9C59 /* Default-Landscape@2x~ipad.png in Resources */,
+				3088BBBE154F3926009F9C59 /* Default-Landscape~ipad.png in Resources */,
+				3088BBBF154F3926009F9C59 /* Default-Portrait@2x~ipad.png in Resources */,
+				7E7966E71810823500FA85AD /* icon-small@2x.png in Resources */,
+				3088BBC0154F3926009F9C59 /* Default-Portrait~ipad.png in Resources */,
+				30B4F30019D5E07200D9F7D8 /* Default-667h.png in Resources */,
+				7E7966DE1810823500FA85AD /* icon-40.png in Resources */,
+				3088BBC1154F3926009F9C59 /* Default@2x~iphone.png in Resources */,
+				7E7966E21810823500FA85AD /* icon-60.png in Resources */,
+				3088BBC2154F3926009F9C59 /* Default~iphone.png in Resources */,
+				D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in Resources */,
+				30B4F30219D5E07200D9F7D8 /* Default-Landscape-736h.png in Resources */,
+				30C1856619D5FC0A00212699 /* icon-60@3x.png in Resources */,
+				7E7966E11810823500FA85AD /* icon-50@2x.png in Resources */,
+				7E7966E51810823500FA85AD /* icon-76@2x.png in Resources */,
+				30FC414916E50CA1004E6F35 /* icon-72@2x.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		304B58A110DAC018002A0835 /* Copy www directory */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Copy www directory";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cordova/lib/copy-www-build-step.sh";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		1D60588E0D05DD3D006BFB54 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				1D60589B0D05DD56006BFB54 /* main.m in Sources */,
+				1D3623260D0F684500981E51 /* AppDelegate.m in Sources */,
+				302D95F114D2391D003F00A1 /* MainViewController.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		301BF551109A68C00062928A /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = CordovaLib;
+			targetProxy = 301BF550109A68C00062928A /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		1D6058940D05DD3E006BFB54 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "HelloCordova/HelloCordova-Prefix.pch";
+				GCC_THUMB_SUPPORT = NO;
+				GCC_VERSION = "";
+				INFOPLIST_FILE = "HelloCordova/HelloCordova-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				OTHER_LDFLAGS = (
+					"-weak_framework",
+					CoreFoundation,
+					"-weak_framework",
+					UIKit,
+					"-weak_framework",
+					AVFoundation,
+					"-weak_framework",
+					CoreMedia,
+					"-weak-lSystem",
+					"-ObjC",
+				);
+				PRODUCT_NAME = "HelloCordova";
+				TARGETED_DEVICE_FAMILY = "1";
+			};
+			name = Debug;
+		};
+		1D6058950D05DD3E006BFB54 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				COPY_PHASE_STRIP = YES;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "HelloCordova/HelloCordova-Prefix.pch";
+				GCC_THUMB_SUPPORT = NO;
+				GCC_VERSION = "";
+				INFOPLIST_FILE = "HelloCordova/HelloCordova-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				OTHER_LDFLAGS = (
+					"-weak_framework",
+					CoreFoundation,
+					"-weak_framework",
+					UIKit,
+					"-weak_framework",
+					AVFoundation,
+					"-weak_framework",
+					CoreMedia,
+					"-weak-lSystem",
+					"-ObjC",
+				);
+				PRODUCT_NAME = "HelloCordova";
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+		C01FCF4F08A954540054247B /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_THUMB_SUPPORT = NO;
+				GCC_VERSION = "";
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"",
+					"\"$(OBJROOT)/UninstalledProducts/include\"",
+					"\"$(BUILT_PRODUCTS_DIR)\"",
+				);
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = (
+					"-weak_framework",
+					CoreFoundation,
+					"-weak_framework",
+					UIKit,
+					"-weak_framework",
+					AVFoundation,
+					"-weak_framework",
+					CoreMedia,
+					"-weak-lSystem",
+					"-ObjC",
+				);
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = NO;
+				USER_HEADER_SEARCH_PATHS = "";
+			};
+			name = Debug;
+		};
+		C01FCF5008A954540054247B /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				GCC_C_LANGUAGE_STANDARD = c99;
+				GCC_THUMB_SUPPORT = NO;
+				GCC_VERSION = "";
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = (
+					"\"$(TARGET_BUILD_DIR)/usr/local/lib/include\"",
+					"\"$(OBJROOT)/UninstalledProducts/include\"",
+					"\"$(BUILT_PRODUCTS_DIR)\"",
+				);
+				IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+				OTHER_LDFLAGS = (
+					"-weak_framework",
+					CoreFoundation,
+					"-weak_framework",
+					UIKit,
+					"-weak_framework",
+					AVFoundation,
+					"-weak_framework",
+					CoreMedia,
+					"-weak-lSystem",
+					"-ObjC",
+				);
+				SDKROOT = iphoneos;
+				SKIP_INSTALL = NO;
+				USER_HEADER_SEARCH_PATHS = "";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "HelloCordova" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1D6058940D05DD3E006BFB54 /* Debug */,
+				1D6058950D05DD3E006BFB54 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "__CLI__" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C01FCF4F08A954540054247B /* Debug */,
+				C01FCF5008A954540054247B /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
+}