+- (void) _setCydiaSource:(NSString *)source {
+ @synchronized (HostConfig_) {
+ CydiaSource_ = source;
+ [Metadata_ setObject:source forKey:@"CydiaSource"];
+ }
+
+ Changed_ = true;
+}
+
+- (void) setCydiaSource:(NSString *)source {
+ [self performSelectorOnMainThread:@selector(_setCydiaSource:) withObject:source waitUntilDone:NO];
+}
+
+- (NSString *) cydiaSource {
+ @synchronized (HostConfig_) {
+ return (id) CydiaSource_ ?: [NSNull null];
+ }
+}
+
+- (NSArray *) getMetadataKeys {
+@synchronized (Values_) {
+ return [Values_ allKeys];
+} }
+
+- (id) getMetadataValue:(NSString *)key {
+@synchronized (Values_) {
+ return [Values_ objectForKey:key];
+} }
+
+- (void) setMetadataValue:(NSString *)key :(NSString *)value {
+@synchronized (Values_) {
+ if (value == nil || value == (id) [WebUndefined undefined] || value == (id) [NSNull null])
+ [Values_ removeObjectForKey:key];
+ else
+ [Values_ setObject:value forKey:key];
+
+ [delegate_ performSelectorOnMainThread:@selector(updateValues) withObject:nil waitUntilDone:YES];
+} }
+