text:
package pl.themolka.arcade.damage;

import pl.themolka.arcade.config.Ref;
import pl.themolka.arcade.dom.Node;
import pl.themolka.arcade.filter.Filter;
import pl.themolka.arcade.game.GameModuleParser;
import pl.themolka.arcade.parser.Context;
import pl.themolka.arcade.parser.InstallableParser;
import pl.themolka.arcade.parser.Parser;
import pl.themolka.arcade.parser.ParserLibrary;
import pl.themolka.arcade.parser.ParserException;
import pl.themolka.arcade.parser.ParserNotSupportedException;
import pl.themolka.arcade.parser.Produces;
import pl.themolka.arcade.parser.Result;

@Produces(RageGame.Config.class)
public class RageGameParser extends GameModuleParser<RageGame, RageGame.Config>
                            implements InstallableParser {
    private Parser<Ref> filterParser;

    public RageGameParser() {
        super(RageGame.class);
    }

    @Override
    public Node define(Node source) {
        return source.firstChild("rage", "instant-kill", "instantkill");
    }

    @Override
    public void install(ParserLibrary library) throws ParserNotSupportedException {
        super.install(library);
        this.filterParser = library.type(Ref.class);
    }

    @Override
    protected Result<RageGame.Config> parseNode(Context context, Node node, String name, String value) throws ParserException {
        Ref<Filter.Config<?>> filter = this.filterParser.parse(context, node.property("filter")).orDefault(Ref.empty());

        return Result.fine(node, name, value, new RageGame.Config() {
            public Ref<Filter.Config<?>> filter() { return filter; }
        });
    }
}


text:
namespace SIM.Tool.Base.Pipelines
{
  using System;
  using System.Collections.Generic;
  using SIM.Instances;
  using SIM.Pipelines.InstallModules;
  using SIM.Pipelines.Processors;
  using SIM.Products;
  using SIM.Tool.Base.Profiles;
  using SIM.Tool.Base.Wizards;
  using JetBrains.Annotations;

  [UsedImplicitly]
  public class InstallModulesWizardArgs : WizardArgs
  {
    #region Fields

    public Instance Instance { get; }

    public readonly List<Product> _Modules = new List<Product>();

    private string _WebRootPath;

    #endregion

    #region Constructors

    public InstallModulesWizardArgs()
    {
    }

    public InstallModulesWizardArgs(Instance instance)
    {
      Instance = instance;
      if (instance != null)
      {
        WebRootPath = instance.WebRootPath;
      }
    }

    #endregion

    #region Properties

    public Product ExtraPackage { get; set; }

    [UsedImplicitly]
    public string InstanceName
    {
      get
      {
        return Instance != null ? Instance.Name : string.Empty;
      }
    }

    [CanBeNull]
    public virtual Product Product
    {
      get
      {
        return Instance != null ? Instance.Product : null;
      }

      set
      {
        throw new NotImplementedException();
      }
    }

    #endregion

    #region Public Methods

    public override ProcessorArgs ToProcessorArgs()
    {
      var connectionString = ProfileManager.GetConnectionString();
      var products = _Modules;
      var product = ExtraPackage;
      if (product != null)
      {
        products.Add(product);
      }

      return new InstallModulesArgs(Instance, products, connectionString);
    }

    #endregion

    #region Public properties

    public string WebRootPath
    {
      get
      {
        return _WebRootPath ?? Instance.WebRootPath;
      }

      set
      {
        _WebRootPath = value;
      }
    }

    #endregion
  }
}

redpajama_set_name: RedPajamaGithub


text:
.class public final Landroid/content/ContentValues;
.super Ljava/lang/Object;
.source "ContentValues.java"

# interfaces
.implements Landroid/os/Parcelable;

# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Landroid/content/ContentValues$1;
    }
.end annotation

# static fields
.field public static final CREATOR:Landroid/os/Parcelable$Creator;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Landroid/os/Parcelable$Creator",
            "<",
            "Landroid/content/ContentValues;",
            ">;"
        }
    .end annotation
.end field

.field public static final TAG:Ljava/lang/String; = "ContentValues"

# instance fields
.field private mValues:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/Object;",
            ">;"
        }
    .end annotation
.end field

# direct methods
.method static constructor <clinit>()V
    .registers 1

    .prologue
    .line 461
    new-instance v0, Landroid/content/ContentValues$1;

    invoke-direct {v0}, Landroid/content/ContentValues$1;-><init>()V

    .line 460
    sput-object v0, Landroid/content/ContentValues;->CREATOR:Landroid/os/Parcelable$Creator;

    .line 32
    return-void
.end method

.method public constructor <init>()V
    .registers 3

    .prologue
    .line 41
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 44
    new-instance v0, Ljava/util/HashMap;

    const/16 v1, 0x8

    invoke-direct {v0, v1}, Ljava/util/HashMap;-><init>(I)V

    iput-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    .line 41
    return-void
.end method

.method public constructor <init>(I)V
    .registers 4
    .param p1, "size"    # I

    .prologue
    .line 52
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 53
    new-instance v0, Ljava/util/HashMap;

    const/high16 v1, 0x3f800000    # 1.0f

    invoke-direct {v0, p1, v1}, Ljava/util/HashMap;-><init>(IF)V

    iput-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    .line 52
    return-void
.end method

.method public constructor <init>(Landroid/content/ContentValues;)V
    .registers 4
    .param p1, "from"    # Landroid/content/ContentValues;

    .prologue
    .line 61
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 62
    new-instance v0, Ljava/util/HashMap;

    iget-object v1, p1, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-direct {v0, v1}, Ljava/util/HashMap;-><init>(Ljava/util/Map;)V

    iput-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    .line 61
    return-void
.end method

.method private constructor <init>(Ljava/util/HashMap;)V
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/HashMap",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/Object;",
            ">;)V"
        }
    .end annotation

    .prologue
    .line 72
    .local p1, "values":Ljava/util/HashMap;, "Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;"
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 73
    iput-object p1, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    .line 72
    return-void
.end method

.method synthetic constructor <init>(Ljava/util/HashMap;Landroid/content/ContentValues;)V
    .registers 3
    .param p1, "values"    # Ljava/util/HashMap;

    .prologue
    invoke-direct {p0, p1}, Landroid/content/ContentValues;-><init>(Ljava/util/HashMap;)V

    return-void
.end method

# virtual methods
.method public clear()V
    .registers 2

    .prologue
    .line 219
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->clear()V

    .line 218
    return-void
.end method

.method public containsKey(Ljava/lang/String;)Z
    .registers 3
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    .line 229
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public describeContents()I
    .registers 2

    .prologue
    .line 475
    const/4 v0, 0x0

    return v0
.end method

.method public equals(Ljava/lang/Object;)Z
    .registers 4
    .param p1, "object"    # Ljava/lang/Object;

    .prologue
    .line 78
    instance-of v0, p1, Landroid/content/ContentValues;

    if-nez v0, :cond_6

    .line 79
    const/4 v0, 0x0

    return v0

    .line 81
    :cond_6
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    check-cast p1, Landroid/content/ContentValues;

    .end local p1    # "object":Ljava/lang/Object;
    iget-object v1, p1, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, v1}, Ljava/util/HashMap;->equals(Ljava/lang/Object;)Z

    move-result v0

    return v0
.end method

.method public get(Ljava/lang/String;)Ljava/lang/Object;
    .registers 3
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    .line 240
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
    .registers 7
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v2, 0x0

    .line 411
    iget-object v3, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v3, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    .line 413
    .local v1, "value":Ljava/lang/Object;
    :try_start_7
    check-cast v1, Ljava/lang/Boolean;
    :try_end_9
    .catch Ljava/lang/ClassCastException; {:try_start_7 .. :try_end_9} :catch_a

    .end local v1    # "value":Ljava/lang/Object;
    return-object v1

    .line 414
    .restart local v1    # "value":Ljava/lang/Object;
    :catch_a
    move-exception v0

    .line 415
    .local v0, "e":Ljava/lang/ClassCastException;
    instance-of v3, v1, Ljava/lang/CharSequence;

    if-eqz v3, :cond_18

    .line 416
    invoke-virtual {v1}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Ljava/lang/String;)Ljava/lang/Boolean;

    move-result-object v2

    return-object v2

    .line 417
    :cond_18
    instance-of v3, v1, Ljava/lang/Number;

    if-eqz v3, :cond_2a

    .line 418
    check-cast v1, Ljava/lang/Number;

    .end local v1    # "value":Ljava/lang/Object;
    invoke-virtual {v1}, Ljava/lang/Number;->intValue()I

    move-result v3

    if-eqz v3, :cond_25

    const/4 v2, 0x1

    :cond_25
    invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v2

    return-object v2

    .line 420
    .restart local v1    # "value":Ljava/lang/Object;
    :cond_2a
    const-string/jumbo v2, "ContentValues"

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v4, "Cannot cast value for "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    const-string/jumbo v4, " to a Boolean: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 421
    const/4 v2, 0x0

    return-object v2
.end method

.method public getAsByte(Ljava/lang/String;)Ljava/lang/Byte;
    .registers 10
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v5, 0x0

    .line 336
    iget-object v4, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    .line 338
    .local v3, "value":Ljava/lang/Object;
    if-eqz v3, :cond_16

    :try_start_9
    move-object v0, v3

    check-cast v0, Ljava/lang/Number;

    move-object v4, v0

    invoke-virtual {v4}, Ljava/lang/Number;->byteValue()B

    move-result v4

    invoke-static {v4}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v4

    :goto_15
    return-object v4

    :cond_16
    move-object v4, v5

    goto :goto_15

    .line 339
    :catch_18
    move-exception v1

    .line 340
    .local v1, "e":Ljava/lang/ClassCastException;
    instance-of v4, v3, Ljava/lang/CharSequence;

    if-eqz v4, :cond_4d

    .line 342
    :try_start_1d
    invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Ljava/lang/Byte;->valueOf(Ljava/lang/String;)Ljava/lang/Byte;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v4

    return-object v4

    .line 343
    :catch_26
    move-exception v2

    .line 344
    .local v2, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot parse Byte value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " at key "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 345
    return-object v5

    .line 348
    .end local v2    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot cast value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " to a Byte: "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 349
    return-object v5
.end method

.method public getAsByteArray(Ljava/lang/String;)[B
    .registers 4
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    .line 434
    iget-object v1, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    .line 435
    .local v0, "value":Ljava/lang/Object;
    instance-of v1, v0, [B

    if-eqz v1, :cond_d

    .line 436
    check-cast v0, [B

    .end local v0    # "value":Ljava/lang/Object;
    return-object v0

    .line 438
    .restart local v0    # "value":Ljava/lang/Object;
    :cond_d
    const/4 v1, 0x0

    return-object v1
.end method

.method public getAsDouble(Ljava/lang/String;)Ljava/lang/Double;
    .registers 12
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v6, 0x0

    .line 361
    iget-object v5, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v5, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    .line 363
    .local v4, "value":Ljava/lang/Object;
    if-eqz v4, :cond_16

    :try_start_9
    move-object v0, v4

    check-cast v0, Ljava/lang/Number;

    move-object v5, v0

    invoke-virtual {v5}, Ljava/lang/Number;->doubleValue()D

    move-result-wide v8

    invoke-static {v8, v9}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v5

    :goto_15
    return-object v5

    :cond_16
    move-object v5, v6

    goto :goto_15

    .line 364
    :catch_18
    move-exception v2

    .line 365
    .local v2, "e":Ljava/lang/ClassCastException;
    instance-of v5, v4, Ljava/lang/CharSequence;

    if-eqz v5, :cond_4d

    .line 367
    :try_start_1d
    invoke-virtual {v4}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v5}, Ljava/lang/Double;->valueOf(Ljava/lang/String;)Ljava/lang/Double;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v5

    return-object v5

    .line 368
    :catch_26
    move-exception v3

    .line 369
    .local v3, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v5, "ContentValues"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v8, "Cannot parse Double value for "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v7

    const-string/jumbo v8, " at key "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v5, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 370
    return-object v6

    .line 373
    .end local v3    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v5, "ContentValues"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v8, "Cannot cast value for "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    const-string/jumbo v8, " to a Double: "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v5, v7, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 374
    return-object v6
.end method

.method public getAsFloat(Ljava/lang/String;)Ljava/lang/Float;
    .registers 10
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v5, 0x0

    .line 386
    iget-object v4, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    .line 388
    .local v3, "value":Ljava/lang/Object;
    if-eqz v3, :cond_16

    :try_start_9
    move-object v0, v3

    check-cast v0, Ljava/lang/Number;

    move-object v4, v0

    invoke-virtual {v4}, Ljava/lang/Number;->floatValue()F

    move-result v4

    invoke-static {v4}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v4

    :goto_15
    return-object v4

    :cond_16
    move-object v4, v5

    goto :goto_15

    .line 389
    :catch_18
    move-exception v1

    .line 390
    .local v1, "e":Ljava/lang/ClassCastException;
    instance-of v4, v3, Ljava/lang/CharSequence;

    if-eqz v4, :cond_4d

    .line 392
    :try_start_1d
    invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Ljava/lang/Float;->valueOf(Ljava/lang/String;)Ljava/lang/Float;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v4

    return-object v4

    .line 393
    :catch_26
    move-exception v2

    .line 394
    .local v2, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot parse Float value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " at key "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 395
    return-object v5

    .line 398
    .end local v2    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot cast value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " to a Float: "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 399
    return-object v5
.end method

.method public getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
    .registers 10
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v5, 0x0

    .line 286
    iget-object v4, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    .line 288
    .local v3, "value":Ljava/lang/Object;
    if-eqz v3, :cond_16

    :try_start_9
    move-object v0, v3

    check-cast v0, Ljava/lang/Number;

    move-object v4, v0

    invoke-virtual {v4}, Ljava/lang/Number;->intValue()I

    move-result v4

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v4

    :goto_15
    return-object v4

    :cond_16
    move-object v4, v5

    goto :goto_15

    .line 289
    :catch_18
    move-exception v1

    .line 290
    .local v1, "e":Ljava/lang/ClassCastException;
    instance-of v4, v3, Ljava/lang/CharSequence;

    if-eqz v4, :cond_4d

    .line 292
    :try_start_1d
    invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v4

    return-object v4

    .line 293
    :catch_26
    move-exception v2

    .line 294
    .local v2, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot parse Integer value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " at key "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 295
    return-object v5

    .line 298
    .end local v2    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot cast value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " to a Integer: "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 299
    return-object v5
.end method

.method public getAsLong(Ljava/lang/String;)Ljava/lang/Long;
    .registers 12
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v6, 0x0

    .line 261
    iget-object v5, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v5, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v4

    .line 263
    .local v4, "value":Ljava/lang/Object;
    if-eqz v4, :cond_16

    :try_start_9
    move-object v0, v4

    check-cast v0, Ljava/lang/Number;

    move-object v5, v0

    invoke-virtual {v5}, Ljava/lang/Number;->longValue()J

    move-result-wide v8

    invoke-static {v8, v9}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v5

    :goto_15
    return-object v5

    :cond_16
    move-object v5, v6

    goto :goto_15

    .line 264
    :catch_18
    move-exception v2

    .line 265
    .local v2, "e":Ljava/lang/ClassCastException;
    instance-of v5, v4, Ljava/lang/CharSequence;

    if-eqz v5, :cond_4d

    .line 267
    :try_start_1d
    invoke-virtual {v4}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-static {v5}, Ljava/lang/Long;->valueOf(Ljava/lang/String;)Ljava/lang/Long;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v5

    return-object v5

    .line 268
    :catch_26
    move-exception v3

    .line 269
    .local v3, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v5, "ContentValues"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v8, "Cannot parse Long value for "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v7

    const-string/jumbo v8, " at key "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v5, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 270
    return-object v6

    .line 273
    .end local v3    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v5, "ContentValues"

    new-instance v7, Ljava/lang/StringBuilder;

    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v8, "Cannot cast value for "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    const-string/jumbo v8, " to a Long: "

    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v7

    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v7

    invoke-static {v5, v7, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 274
    return-object v6
.end method

.method public getAsShort(Ljava/lang/String;)Ljava/lang/Short;
    .registers 10
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v5, 0x0

    .line 311
    iget-object v4, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    .line 313
    .local v3, "value":Ljava/lang/Object;
    if-eqz v3, :cond_16

    :try_start_9
    move-object v0, v3

    check-cast v0, Ljava/lang/Number;

    move-object v4, v0

    invoke-virtual {v4}, Ljava/lang/Number;->shortValue()S

    move-result v4

    invoke-static {v4}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
    :try_end_14
    .catch Ljava/lang/ClassCastException; {:try_start_9 .. :try_end_14} :catch_18

    move-result-object v4

    :goto_15
    return-object v4

    :cond_16
    move-object v4, v5

    goto :goto_15

    .line 314
    :catch_18
    move-exception v1

    .line 315
    .local v1, "e":Ljava/lang/ClassCastException;
    instance-of v4, v3, Ljava/lang/CharSequence;

    if-eqz v4, :cond_4d

    .line 317
    :try_start_1d
    invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Ljava/lang/Short;->valueOf(Ljava/lang/String;)Ljava/lang/Short;
    :try_end_24
    .catch Ljava/lang/NumberFormatException; {:try_start_1d .. :try_end_24} :catch_26

    move-result-object v4

    return-object v4

    .line 318
    :catch_26
    move-exception v2

    .line 319
    .local v2, "e2":Ljava/lang/NumberFormatException;
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot parse Short value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " at key "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 320
    return-object v5

    .line 323
    .end local v2    # "e2":Ljava/lang/NumberFormatException;
    :cond_4d
    const-string/jumbo v4, "ContentValues"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v7, "Cannot cast value for "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string/jumbo v7, " to a Short: "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v4, v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 324
    return-object v5
.end method

.method public getAsString(Ljava/lang/String;)Ljava/lang/String;
    .registers 5
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    const/4 v1, 0x0

    .line 250
    iget-object v2, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v2, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    .line 251
    .local v0, "value":Ljava/lang/Object;
    if-eqz v0, :cond_d

    invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String;

    move-result-object v1

    :cond_d
    return-object v1
.end method

.method public getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
    .registers 3
    .param p1, "key"    # Ljava/lang/String;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            ")",
            "Ljava/util/ArrayList",
            "<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 499
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/util/ArrayList;

    return-object v0
.end method

.method public hashCode()I
    .registers 2

    .prologue
    .line 86
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->hashCode()I

    move-result v0

    return v0
.end method

.method public keySet()Ljava/util/Set;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Set",
            "<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .prologue
    .line 457
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v0

    return-object v0
.end method

.method public put(Ljava/lang/String;Ljava/lang/Boolean;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Boolean;

    .prologue
    .line 175
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 174
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Byte;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Byte;

    .prologue
    .line 115
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 114
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Double;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Double;

    .prologue
    .line 165
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 164
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Float;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Float;

    .prologue
    .line 155
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 154
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Integer;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Integer;

    .prologue
    .line 135
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 134
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Long;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Long;

    .prologue
    .line 145
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 144
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/Short;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/Short;

    .prologue
    .line 125
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 124
    return-void
.end method

.method public put(Ljava/lang/String;Ljava/lang/String;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # Ljava/lang/String;

    .prologue
    .line 96
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 95
    return-void
.end method

.method public put(Ljava/lang/String;[B)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .param p2, "value"    # [B

    .prologue
    .line 185
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 184
    return-void
.end method

.method public putAll(Landroid/content/ContentValues;)V
    .registers 4
    .param p1, "other"    # Landroid/content/ContentValues;

    .prologue
    .line 105
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    iget-object v1, p1, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, v1}, Ljava/util/HashMap;->putAll(Ljava/util/Map;)V

    .line 104
    return-void
.end method

.method public putNull(Ljava/lang/String;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    .line 194
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    const/4 v1, 0x0

    invoke-virtual {v0, p1, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 193
    return-void
.end method

.method public putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
    .registers 4
    .param p1, "key"    # Ljava/lang/String;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/String;",
            "Ljava/util/ArrayList",
            "<",
            "Ljava/lang/String;",
            ">;)V"
        }
    .end annotation

    .annotation runtime Ljava/lang/Deprecated;
    .end annotation

    .prologue
    .line 489
    .local p2, "value":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Ljava/lang/String;>;"
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 488
    return-void
.end method

.method public remove(Ljava/lang/String;)V
    .registers 3
    .param p1, "key"    # Ljava/lang/String;

    .prologue
    .line 212
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0, p1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    .line 211
    return-void
.end method

.method public size()I
    .registers 2

    .prologue
    .line 203
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->size()I

    move-result v0

    return v0
.end method

.method public toString()Ljava/lang/String;
    .registers 7

    .prologue
    .line 508
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    .line 509
    .local v2, "sb":Ljava/lang/StringBuilder;
    iget-object v4, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v4}, Ljava/util/HashMap;->keySet()Ljava/util/Set;

    move-result-object v4

    invoke-interface {v4}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;

    move-result-object v1

    .local v1, "name$iterator":Ljava/util/Iterator;
    :goto_f
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_3a

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    .line 510
    .local v0, "name":Ljava/lang/String;
    invoke-virtual {p0, v0}, Landroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v3

    .line 511
    .local v3, "value":Ljava/lang/String;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->length()I

    move-result v4

    if-lez v4, :cond_2b

    const-string/jumbo v4, " "

    invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 512
    :cond_2b
    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    const-string/jumbo v5, "="

    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_f

    .line 514
    .end local v0    # "name":Ljava/lang/String;
    .end local v3    # "value":Ljava/lang/String;
    :cond_3a
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    return-object v4
.end method

.method public valueSet()Ljava/util/Set;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Set",
            "<",
            "Ljava/util/Map$Entry",
            "<",
            "Ljava/lang/String;",
            "Ljava/lang/Object;",
            ">;>;"
        }
    .end annotation

    .prologue
    .line 448
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {v0}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;

    move-result-object v0

    return-object v0
.end method

.method public writeToParcel(Landroid/os/Parcel;I)V
    .registers 4
    .param p1, "parcel"    # Landroid/os/Parcel;
    .param p2, "flags"    # I

    .prologue
    .line 480
    iget-object v0, p0, Landroid/content/ContentValues;->mValues:Ljava/util/HashMap;

    invoke-virtual {p1, v0}, Landroid/os/Parcel;->writeMap(Ljava/util/Map;)V

    .line 479
    return-void
.end method


text:
/** @file   ComponentAnimation.h
    @author Philip Abbet

    Declarations of the class 'Athena::Entities::ComponentAnimation'
*/

#ifndef _ATHENA_ENTITIES_COMPONENTANIMATION_H_
#define _ATHENA_ENTITIES_COMPONENTANIMATION_H_

#include <Athena-Entities/Prerequisites.h>

namespace Athena {
namespace Entities {

//----------------------------------------------------------------------------------------
/// @brief  Base class for the component animations
///
/// Each component animation is defined by:
///   - its length
///   - its time position
///   - its weight (allowing an animation to combine it with another component animation)
///   - its offset (allowing an animation to synchronize the playing of several component
///     animations)
//----------------------------------------------------------------------------------------
class ATHENA_ENTITIES_SYMBOL ComponentAnimation
{
    //_____ Construction / Destruction __________
public:
    //------------------------------------------------------------------------------------
    /// @brief  Constructor
    //------------------------------------------------------------------------------------
    ComponentAnimation()
    : m_fOffset(0.0f), m_fWeight(1.0f)
    {
    }

    //------------------------------------------------------------------------------------
    /// @brief  Destructor
    //------------------------------------------------------------------------------------
    virtual ~ComponentAnimation()
    {
    }

    //_____ Methods __________
public:
    //------------------------------------------------------------------------------------
    /// @brief  Update the animation
    ///
    /// @param  fSecondsElapsed     The number of seconds elapsed since the last update
    //------------------------------------------------------------------------------------
    inline void update(float fElapsedSeconds)
    {
        setTimePosition(getTimePosition() + fElapsedSeconds);
    }

    //------------------------------------------------------------------------------------
    /// @brief  Sets the start time offset
    ///
    /// @param  fOffset     The offset, in seconds
    //------------------------------------------------------------------------------------
    inline void setOffset(float fOffset)
    {
        m_fOffset = fOffset;
    }

    //------------------------------------------------------------------------------------
    /// @brief  Return the start time offset, in seconds
    //------------------------------------------------------------------------------------
    inline float getOffset() const
    {
        return m_fOffset;
    }

    //------------------------------------------------------------------------------------
    /// @brief  Sets the weight (influence)
    /// @param  fWeight     The weight
    //------------------------------------------------------------------------------------
    inline void setWeight(float fWeight)
    {
        m_fWeight = fWeight;
    }

    //------------------------------------------------------------------------------------
    /// @brief  Returns the weight (influence)
    //------------------------------------------------------------------------------------
    inline float getWeight() const
    {
        return m_fWeight;
    }

    //_____ Methods to implement __________
public:
    //------------------------------------------------------------------------------------
    /// @brief  Sets the current time position of this component animation
    ///
    /// @remark Don't use the 'm_fOffset' attribute in your implementation, it was already
    ///         taken into account in the 'fTimePos' parameter
    //------------------------------------------------------------------------------------
    virtual void setTimePosition(float fTimePos) = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Returns the current time position of this component animation
    ///
    /// @remark Don't use the 'm_fOffset' attribute in your implementation
    //------------------------------------------------------------------------------------
    virtual float getTimePosition() const = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Returns the length of this component animation
    ///
    /// @remark Don't use the 'm_fOffset' attribute in your implementation
    //------------------------------------------------------------------------------------
    virtual float getLength() const = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Sets the current weight (influence) of this component animation
    ///
    /// @remark Don't use the 'm_fWeight' attribute in your implementation, it was already
    ///         taken into account in the 'fWeight' parameter
    //------------------------------------------------------------------------------------
    virtual void setCurrentWeight(float fWeight) = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Returns the current weight (influence) of this component animation
    ///
    /// @remark Don't use the 'm_fWeight' attribute in your implementation
    //------------------------------------------------------------------------------------
    virtual float getCurrentWeight() const = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Enables/Disables the component animation
    //------------------------------------------------------------------------------------
    virtual void setEnabled(bool bEnabled) = 0;

    //------------------------------------------------------------------------------------
    /// @brief  Sets whether or not the component animation must loops at the start and
    ///         end of the animation if the time continues to be altered
    //------------------------------------------------------------------------------------
    virtual void setLooping(bool bLoop) = 0;

    //_____ Attributes __________
private:
    float   m_fOffset;  ///< Start time offset
    float   m_fWeight;  ///< Weight of the component animation
};

}
}

#endif


text:
django\_powerbank\.views package
================================

Submodules
----------

django\_powerbank\.views\.auth module
-------------------------------------

.. automodule:: django_powerbank.views.auth
    :members:
    :undoc-members:
    :show-inheritance:

django\_powerbank\.views\.generic module
----------------------------------------

.. automodule:: django_powerbank.views.generic
    :members:
    :undoc-members:
    :show-inheritance:

django\_powerbank\.views\.mixins module
---------------------------------------

.. automodule:: django_powerbank.views.mixins
    :members:
    :undoc-members:
    :show-inheritance:

Module contents
---------------

.. automodule:: django_powerbank.views
    :members:
    :undoc-members:
    :show-inheritance:


text:
% ==========================================================================
% % Copyright (C) 2016 Dr. Alejandro Pina Ortega
% %
% % Licensed under the Apache License, Version 2.0 (the "License");
% % you may not use this file except in compliance with the License.
% % You may obtain a copy of the License at
% %
% %      http://www.apache.org/licenses/LICENSE-2.0
% %
% % Unless required by applicable law or agreed to in writing, software
% % distributed under the License is distributed on an "AS IS" BASIS,
% % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% % See the License for the specific language governing permissions and
% % limitations under the License.
% ==========================================================================

%----------------------------------------------------------------------------------------
%	PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
%----------------------------------------------------------------------------------------

\documentclass[justified]{tufte-book} % Use the tufte-book class which in turn uses the tufte-common class

\hypersetup{colorlinks} % Comment this line if you don't wish to have colored links

\usepackage{microtype} % Improves character and word spacing
\usepackage{enumitem}
\usepackage{lipsum} % Inserts dummy text
\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{lgray}{rgb}{0.9,0.9,0.9}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\colorlet{punct}{red!60!black}
\definecolor{delim}{RGB}{20,105,176}
\colorlet{numb}{magenta!60!black}

\lstloadlanguages{Python,bash}

\lstset{ %
  language=Python,                  % the language of the code
  basicstyle=\footnotesize,       % the size of the fonts that are used for the code
  numbers=left,                   % where to put the line-numbers
  numberstyle=\tiny\color{gray},  % the style that is used for the line-numbers
  stepnumber=1,                   % the step between two line-numbers. If it's 1, each line
                                  % will be numbered
  numbersep=5pt,                  % how far the line-numbers are from the code
  backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
  showspaces=false,               % show spaces adding particular underscores
  showstringspaces=false,         % underline spaces within strings
  showtabs=false,                 % show tabs within strings adding particular underscores
  frame=single,                   % adds a frame around the code
  rulecolor=\color{black},        % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. commens (green here))
  tabsize=4,                      % sets default tabsize to 2 spaces
  captionpos=b,                   % sets the caption-position to bottom
  breaklines=true,                % sets automatic line breaking
  breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
  title=\lstname,                 % show the filename of files included with \lstinputlisting;
                                  % also try caption instead of title
  keywordstyle=\color{blue},          % keyword style
  commentstyle=\color{dkgreen},       % comment style
  stringstyle=\color{mauve},         % string literal style
  escapeinside={\%*}{*)},            % if you want to add a comment within your code
  morekeywords={*,...}               % if you want to add more keywords to the set
}

  \lstset{%
    language=bash,
    basicstyle=\normalfont\ttfamily\footnotesize,
    otherkeywords={=, +, [, ], (, ), \{, \}, *, <, >, python},
    % bash commands from:
    %http://www.math.montana.edu/Rweb/Rhelp/00Index.html
    emph={git, clone, uffema,test},
    breaklines=true,
    keywordstyle=\color{red},
    stringstyle=\color{red},
    emphstyle=\color{blue}\bfseries,
    commentstyle=\color{gray}\slshape,
     backgroundcolor=\color{lgray},  % choose the background color. You must add \usepackage{color}
  }

\lstdefinelanguage{json}{
    basicstyle=\normalfont\ttfamily\footnotesize,
    numbers=left,
    numberstyle=\scriptsize,
    stepnumber=1,
    numbersep=8pt,
    showstringspaces=false,
    breaklines=true,
    frame=lines,
    otherkeywords={Float, String, Integer,null},
     emph={machine,type,stator,oSr,iSr,Ns,Sl,slots,dimension,SOpos,Spos,h0,h1,h2,h3,w0,w1,w2,material, name,BHcurve,B,H,resistivity,winding,Layers,LayersType,Conn,NoPhases,Cseries,Cparallel,Cturns,wih,condDiam,Cpitch,A,C,D,E,F,CM,CM1,CM2,rotor,oRr,iRr,pp,Rl,magnets,pockets,magnetisation,Br,mur,Ml,Mw,Mps,iMr,delta},
    keywordstyle=\color{blue},
    emphstyle=\color{violet}\bfseries,
    backgroundcolor=\color{lgray},
    literate=
      {"}{{{\color{red}{"}}}}{1}
      {:}{{{\color{punct}{:}}}}{1}
      {,}{{{\color{punct}{,}}}}{1}
      {\{}{{{\color{delim}{\{}}}}{1}
      {\}}{{{\color{delim}{\}}}}}{1}
      {[}{{{\color{delim}{[}}}}{1}
      {]}{{{\color{delim}{]}}}}{1},
}

\usepackage{booktabs} % Better horizontal rules in tables

\usepackage{graphicx} % Needed to insert images into the document
\graphicspath{{../../images/}} % Sets the default location of pictures
\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio} % Improves figure scaling

\usepackage{fancyvrb} % Allows customization of verbatim environments
\fvset{fontsize=\normalsize} % The font size of all verbatim text can be changed here

\newcommand{\hangp}[1]{\makebox[0pt][r]{(}#1\makebox[0pt][l]{)}} % New command to create parentheses around text in tables which take up no horizontal space - this improves column spacing
\newcommand{\hangstar}{\makebox[0pt][l]{*}} % New command to create asterisks in tables which take up no horizontal space - this improves column spacing

\usepackage{xspace} % Used for printing a trailing space better than using a tilde (~) using the \xspace command
\newcommand{\uffemaVersion}{0.1}
\newcommand{\monthyear}{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi\space\number\year} % A command to print the current month and year

\newcommand{\openepigraph}[2]{ % This block sets up a command for printing an epigraph with 2 arguments - the quote and the author
\begin{fullwidth}
\sffamily\large
\begin{doublespace}
\noindent\allcaps{#1}\\ % The quote
\noindent\allcaps{#2} % The author
\end{doublespace}
\end{fullwidth}
}

\newcommand{\blankpage}{\newpage\hbox{}\thispagestyle{empty}\newpage} % Command to insert a blank page

\setcounter{secnumdepth}{2}

\usepackage{makeidx} % Used to generate the index
\makeindex % Generate the index which is printed at the end of the document

%----------------------------------------------------------------------------------------
%	BOOK META-INFORMATION
%----------------------------------------------------------------------------------------

%\title{UFFEMA: \newline Unified Framework for Electric Machine Analysis \newline REFERENCE MANUAL VERSION 0.1} % Title of the book

%\author{UFFEMA Developers} % Author

%\publisher{Dr. A. J. Pi\~{n}a Ortega} % Publisher

%----------------------------------------------------------------------------------------

\begin{document}

 \frontmatter

\begin{titlepage}
\begin{fullwidth}

	\centering
%	\includegraphics[width=0.15\textwidth]{example-image-1x1}\par\vspace{1cm}
	{\LARGE \textit{UFFEMA DEVELOPERS} \par}
	\vspace{5cm}
	{\fontsize{40}{50}\selectfont\bfseries UFFEMA:\par}
	{\fontsize{30}{40}\selectfont\itshape\bfseries Unified Framework for Electric Machine Analysis\par}
	\vspace{2cm}
	{\LARGE\flushright  REFERENCE MANUAL VERSION $\uffemaVersion$\par}
	\vspace{7cm}
	{\Large\itshape A. J. Pi\~{n}a Ortega\par}

	\vfill

% Bottom of the page
	{\large \today\par}

\end{fullwidth}
\end{titlepage}

%----------------------------------------------------------------------------------------
%	EPIGRAPH
%----------------------------------------------------------------------------------------

%\thispagestyle{empty}
%\openepigraph{Quotation 1}{Author, {\itshape Source}}
%\vfill
%\openepigraph{Quotation 2}{Author}
%\vfill
%\openepigraph{Quotation 3}{Author}

%----------------------------------------------------------------------------------------

%\maketitle % Print the title page

%----------------------------------------------------------------------------------------
%	COPYRIGHT PAGE
%----------------------------------------------------------------------------------------

\newpage
\begin{fullwidth}
~\vfill
\thispagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}
Copyright \copyright\ \the\year\ A. J. Pi\~{n}a Ortega

\par\smallcaps{Powered by UFFEMA DEVELOPERS}

\par\smallcaps{\url{https://github.com/ajpina/uffema}}

\par Licensed under the Apache License, Version 2.0 (the ``License''); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at \url{http://www.apache.org/licenses/LICENSE-2.0}. Unless
required by applicable law or agreed to in writing, software distributed
under the License is distributed on an \smallcaps{``AS IS'' BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND}, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.\index{license}

\par\textit{First printing, \monthyear}
\end{fullwidth}

%----------------------------------------------------------------------------------------
\begin{fullwidth}
\tableofcontents % Print the table of contents

%----------------------------------------------------------------------------------------

\listoffigures % Print a list of figures

%----------------------------------------------------------------------------------------

\listoftables % Print a list of tables
\end{fullwidth}
%----------------------------------------------------------------------------------------
%	DEDICATION PAGE
%----------------------------------------------------------------------------------------

%\cleardoublepage
%~\vfill
%\begin{doublespace}
%\noindent\fontsize{18}{22}\selectfont\itshape
%\nohyphenation
%Dedicated to my family and friends.
%\end{doublespace}
%\vfill
%\vfill

%----------------------------------------------------------------------------------------
%	INTRODUCTION
%----------------------------------------------------------------------------------------

\cleardoublepage
\chapter*{Introduction} % The asterisk leaves out this chapter from the table of contents
\begin{fullwidth}
The \textbf{U}nified \textbf{F}ramework \textbf{F}or \textbf{E}lectric \textbf{M}achine \textbf{A}nalysis (UFFEMA) describes with parameters the geometries found in electric machines. Although it would be unrealistic cover all possible shapes or all small details that creative designers put into their models when trying to enhance specific machine behaviours, this document will try to gather the most common geometries of the most common rotating electric machines.

This reference should become a living document that will be incorporating features and evolving such as electric machines have done it since their conception. The present manual corresponds to UFFEMA software version \uffemaVersion.
\end{fullwidth}
\begin{figure*}[h]
\includegraphics[width=\linewidth]{Overview.pdf}
\caption{ Composition of rotating electric machines
%\emph{Notice that this figure takes up the full page width.}
}
\label{fig:overview}
\end{figure*}

Throughout this document, rotating electric machines will be referred simply as electric machines, so the perspicacious readers will probably complain on that terminology since linear machines or transformers are not treated here.  Hence, we apologise for appropriating the definition.
\begin{fullwidth}
The abstraction of Figure \ref{fig:overview} shows the first level of simplicity of electric machines and the sort of relationships will be found along this manual. From this definition, a \textit{RotatingMachine} must have one or more \textit{Rotor}, \textit{Stator} as well as \textit{Flux}. Either \textit{Rotor} or \textit{Stator} might be of \textit{Inner}, \textit{Middle} or \textit{Outer} construction.
\end{fullwidth}
 \begin{figure*}[h]
 \includegraphics[width=\linewidth]{RotatingMachine.pdf}
 \caption{Classification of rotating electric machines
 %\emph{Notice that this figure takes up the full page width.}
 }
 \label{fig:fullfig}
 \end{figure*}

Initially, this document will be dealing with geometries that can be included on machines of \textit{Radial} or \textit{Axial} \textit{Flux}.

UFFEMA follows the oriented-object paradigm in order to provide the users and developers with a set of objects that can be used to fully define an electric machine. These objects can be serialized and sent to solvers based upon either analytical or numerical methods.

UFFEMA is a framework independent of solving method, but intended to be seamlessly integrated with open-source solvers. At the moment of writing this manual, UFFEMA is being developed in parallel with EMANPY\cite{ajpina_emanpy_2018} and EMANFES\cite{ajpina_emanfes_2018}.

At first, a classification for electric machines needed to be agreed in order to be followed and develop the framework. Therefore, rather than trying to make up a new one, it was better idea to review some books on history and new trends on rotating machines.

A classification for electric machines has been given by \cite{ktchau_2015}, which includes not only conventional machines such as induction and permanent magnet but it also adds recent developments on flux-switching and vernier machines.

An excerpt of the classification is shown in Figure \ref{fig:fullfig}, each chapter of this manual deals in further detail with a type of electric machine, examples are also given for each machine.

%----------------------------------------------------------------------------------------

\mainmatter

%----------------------------------------------------------------------------------------
%	CHAPTER 1
%----------------------------------------------------------------------------------------

\chapter{Installation}
\label{ch:installation}

\section{How to Get UFFEMA}
\begin{fullwidth}
The source code of UFFEMA is available for free download from its repository in GitHub at \url{https://github.com/ajpina/uffema} and is licensed under the Apache License, Version 2.0. Repository can be cloned as follows,
\end{fullwidth}

\begin{lstlisting}[language=bash, escapeinside=@@]
$ git clone  @https://github.com/ajpina/uffema@
\end{lstlisting}

\section{Requirements}
\begin{fullwidth}
A rotating machine is set through a configuration file. The framework is being developed with Python 3.6 and configuration files must be in JSON format. The following dependences need to be met in order to run UFFEMA:
\end{fullwidth}
\begin{itemize}
\item Python 3.6
\item Numpy 1.13
\end{itemize}

\section{Running UFFEMA}
\begin{fullwidth}
Being a framework, UFFEMA does not have graphical interface and the only output that produces is a python object that contains information regarding geometry, materials and connection of a rotating electric machine. As such, the objects are intended to be embedded in your own python code. However, a command-line-based  program is included to test the installation. The program reads an electric machine definition file in JSON format and prints a string version of the python object created. The input files are usually given with extension '\textbf{.msf}' (machine settings file) even though there is no need to specify the extension, it helps to keep the machines organized in the working folder.
\end{fullwidth}
\begin{lstlisting}[language=bash]
$ export PYTHONPATH=$PYTHONPATH:<directory>/uffema
$ cd uffema/tests
$ python uffema-test options [filename]
\end{lstlisting}

The following options are currently supported by \textbf{\texttt{uffema-test}}:
 \begin{description}[leftmargin=1cm, style=nextline]
\item [{\normalfont\ttfamily{\textbf{-v}}}]  \hfil \newline Prints the version.
 \item [{\normalfont\ttfamily{\textbf{-f}}}]  {\ttfamily{filename}} \\ Reads the machine settings file and creates a python instance.
 \end{description}

%----------------------------------------------------------------------------------------
%	CHAPTER 1
%----------------------------------------------------------------------------------------

\chapter{Rotating Machines}
\label{ch:rotating_machines}
\begin{fullwidth}
A rotating machine is set through a configuration file. The framework is being developed with Python 3.6 and configuration files must be in JSON format. In general, an electric machine consists of a stator and a rotor, this section of the manual deals with the stator's configuration, which is very similar in conventional machines. A separated chapter will be added in order to address stators of such machines that does not fit into this category, for instance, recent developments have aimed to insert permanent magnets or field windings into the stator.
\end{fullwidth}
\begin{figure*}[h]
\includegraphics[width=\linewidth]{Stator.pdf}
\caption{Stator architecture.}
\label{fig:stator}
\end{figure*}

Several chapters are included in this manual in order to explain each type of machine technology. Moreover, the rotor architecture is let to be explained in those chapters since its geometry is mostly defined by the type of rotating machine.

\section{Stator}
\begin{fullwidth}
As can be seen in Figure \ref{fig:stator}, at least one stator is found in a rotating machine and is characterized by having slots, windings in its slots, as well as made of a material (usually soft magnetic). The parameters recognized by UFFEMA are as follows,
\end{fullwidth}
\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{type}}: \textit{String}}] Type of stator, for instance, \textit{standardouter}, \textit{standardinner}, etc.
\item[\normalfont{\ttfamily{\textbf{oSr}}: \textit{Float}}] Stator outer radius.
\item[\normalfont{\ttfamily{\textbf{iSr}}: \textit{Float}}] Stator inner radius.
\item[\normalfont{\ttfamily{\textbf{Ns}}: \textit{Integer}}] Number of slots.
\item[\normalfont{\ttfamily{\textbf{Sl}}: \textit{Float}}] Length of stator stack.
\item[\normalfont{\ttfamily{\textbf{slots}}: \textit{Object}}] Settings for stator slots according to object detailed in chapter \ref{ch:slots}.
\item[\normalfont{\ttfamily{\textbf{material}}: \textit{Object}}] Settings for stator material according to object detailed in chapter \ref{ch:material}.
\item[\normalfont{\ttfamily{\textbf{winding}}: \textit{Object}}] Settings for stator windings according to object detailed in chapter \ref{ch:windings}.
\end{description}

The example for the settings file in JSON format is given below,

\begin{lstlisting}[language=json]
{
	 "machine" : {
    	"type" : String,
    	"stator" : {
      		"type" :  String,
     		"oSr" : Float,
      		"iSr" : Float,
      		"Ns" : Integer,
      		"Sl" : Float,
      		"slots" : {...},
      		"material" : {...},
      		"winding" : {...}
		},
}
\end{lstlisting}

\chapter{Slots}
\label{ch:slots}
\begin{fullwidth}
The number of slots where the conductors are to be inserted are defined in the parent component, either stator or rotor. However, the "slots" object must contain type and dimension. Additional parameters for the position of slots on the parent component, for instance, \texttt{\textbf{SOpos}} and \texttt{\textbf{Spos}} are inserted in the \texttt{\textbf{dimension}} field. These are angles for the placement of slot openings and coil regions, respectively. Even though these might be calculated most of the cases with the total number of slots, are particularly useful for an asymmetrical arrangement.
\end{fullwidth}
\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{type}}: \textit{String}}] Type of slot, for instance, \textit{type$0$}, \textit{type$1$}, etc.
\item[\normalfont{\ttfamily{\textbf{dimension}}: \textit{Array}}] List of parameters that define the geometry according with its \texttt{\textbf{type}}.
\end{description}

\begin{lstlisting}[language=json]
"slots" : {
	"type" :  String,
	"dimension": [
		{
			"SOpos" : Float,
			"Spos" : Float,
			...
		},
		{
			"SOpos" : Float,
			"Spos" : Float,
			...
		},
	]
}
\end{lstlisting}

\begin{marginfigure}
\includegraphics[width=\linewidth]{Slot_Type_0_parameters.pdf}
\caption{Parameters for slot type $0$.}
\label{fig:slot_type_0_parameters}
\end{marginfigure}

Other parameters follow the two aforementioned, these depend on the type of the slot selected. More detail about the parameters for each slot supported by UFFEMA are described in the next sections.

\section[Type 0]{Type $0$}
The following parameters set forth slot opening, wedge and coil regions for slots type $0$ (type$0$), according to Figure \ref{fig:slot_type_0_parameters} and \ref{fig:slot_type_0}, are also embedded in \texttt{\textbf{dimension}} field.  The latter figure shows points, lines and loops in order to build surfaces if the geometry is to be meshed.

\begin{marginfigure}
\includegraphics[width=\linewidth]{Slot_Type_0.pdf}
\caption{Type $0$. Points, lines and loops.}
\label{fig:slot_type_0}
\end{marginfigure}

\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{w0}}: \textit{Float}}] Slot opening width.
\item[\normalfont{\ttfamily{\textbf{w1}}: \textit{Float}}] Wedge region width.
\item[\normalfont{\ttfamily{\textbf{w2}}: \textit{Float}}] Coil region width.
\item[\normalfont{\ttfamily{\textbf{h0}}: \textit{Float}}] Slot opening height.
\item[\normalfont{\ttfamily{\textbf{h1}}: \textit{Float}}] Wedge region height.
\item[\normalfont{\ttfamily{\textbf{h2}}: \textit{Float}}] Coil region height.
\item[\normalfont{\ttfamily{\textbf{h3}}: \textit{Float}}] Slot bottom height.
\end{description}

\section[Type 1]{Type $1$}
The following parameters set forth slot opening and coil regions for slots type $1$ (type$1$), according to Figure \ref{fig:slot_type_1_parameters} and \ref{fig:slot_type_1}. Note that slots of type $1$ do not show wedge regions and toothtips are concentric.  These parameters are also embedded in \texttt{\textbf{dimension}} field.  The latter figure shows points, lines and loops in order to build surfaces if the geometry is to be meshed.

\begin{marginfigure}
\includegraphics[width=\linewidth]{Slot_Type_1_parameters.pdf}
\caption{Parameters for slot type $1$.}
\label{fig:slot_type_1_parameters}
\end{marginfigure}

\begin{marginfigure}
\includegraphics[width=\linewidth]{Slot_Type_1.pdf}
\caption{Type $1$. Points, lines and loops.}
\label{fig:slot_type_1}
\end{marginfigure}

\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{w0}}: \textit{Float}}] Slot opening width.
\item[\normalfont{\ttfamily{\textbf{w1}}: \textit{Float}}] Wedge region width.
\item[\normalfont{\ttfamily{\textbf{w2}}: \textit{Float}}] Coil region width.
\item[\normalfont{\ttfamily{\textbf{h0}}: \textit{Float}}] Slot opening height.
\item[\normalfont{\ttfamily{\textbf{h2}}: \textit{Float}}] Coil region height.
\end{description}

\section[Type 2]{Type $2$}
TO-DO: Implemented and documentation will be added shortly.

\section[Type 3]{Type $3$}
TO-DO: Implemented and documentation will be added shortly.

\section[Type 4]{Type $4$}
TO-DO: Implemented and documentation will be added shortly.

\chapter{Windings}\label{ch:windings}
\begin{fullwidth}
Windings consist of conductors that are conventionally inserted in the stator although there exist machines such as synchronous generator and induction motors, to name a few, where field windings and rotor bars can also be deemed as windings.
Conductors are inserted into slots and overall coils can be arranged in multiple ways. In the current version of UFFEMA, windings can be distributed\index{distributed} or concentrated\index{concentrated} and embedded in a layered manner.
The following fields can be used to define the windings.
\end{fullwidth}

\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{material}}: \textit{Object}}] Settings for conductor material according to object detailed in chapter \ref{ch:material}.
\item[\normalfont{\ttfamily{\textbf{Layers}}: \textit{Integer}}] Number of layers that will be arranged in the slots according with its \texttt{\textbf{LayersType}}.
\item[\normalfont{\ttfamily{\textbf{LayersType}}: \textit{String}}] Type of arrangement in the slots, i.e., \texttt{\textit{sidebyside}} or \texttt{\textit{topbottom}}, as long as layer number is even.
\item[\normalfont{\ttfamily{\textbf{type}}: \textit{String}}] Winding coils arrangement, i.e., \texttt{\textit{concentrated}} or \texttt{\textit{distributed}}.

\begin{marginfigure}
\includegraphics[width=4cm]{winding_twolayer_sidebyside.pdf}
\caption{Two layers, side by side coils.}
\label{fig:winding_twolayer_sidebyside}
\end{marginfigure}

\item[\normalfont{\ttfamily{\textbf{Conn}}: \textit{String}}] Type of winding connection, i.e., \texttt{\textit{wye}} or \texttt{\textit{delta}}.
\item[\normalfont{\ttfamily{\textbf{NoPhases}}: \textit{Integer}}] Number of phases.
\item[\normalfont{\ttfamily{\textbf{Cseries}}: \textit{Integer}}] Number of coils in series.
\item[\normalfont{\ttfamily{\textbf{Cparallel}}: \textit{Integer}}] Number of coils in parallel.
\item[\normalfont{\ttfamily{\textbf{Cturns}}: \textit{Integer}}] Number of turns per coil.
\item[\normalfont{\ttfamily{\textbf{wih}}: \textit{Integer}}] Number of wires in hand or stranded conductors.
\item[\normalfont{\ttfamily{\textbf{condDiam}}: \textit{Float}}] Conductor diameter.
\item[\normalfont{\ttfamily{\textbf{Cpitch}}: \textit{Integer}}] Coil pitch.
\item[\normalfont{\ttfamily{\textbf{CM}}: \textit{Array}}] Connection matrix, it is a list of parameters that define what conductors are inserted into the slots.
\end{description}

The connection matrix generally has dimension \textbf{Ns} by \textbf{NoPhases} for each coil side. There can be from zero to several coil sides within a slot. For instance, Figures \ref{fig:winding_onelayer}-\ref{fig:winding_fourlayer} show one coil side which refers to split a slot into two parts side by side. Therefore, the conductor area in the figures are symmetrical with respect to the leftmost vertical line.

\begin{marginfigure}
\includegraphics[width=4cm]{winding_onelayer.pdf}
\caption{One layer coils.}
\label{fig:winding_onelayer}
\end{marginfigure}

\begin{lstlisting}[language=json]
"winding" : {
	"material" :  {...},
	"Layers" : Integer,
	"LayersType" : String,
	"type" : String,
	"Conn" : String,
	"NoPhases" : Integer,
	"Cseries" : Integer,
	"Cparallel" : Integer,
	"Cturns" : Integer,
	"wih" : Integer,
	"condDiam" : Float,
	"Cpitch" : Integer,
	"CM" : {
		"CM1" : [
			{"Phase" : Value, ... },
            ...
          ],
          "CM2" : [
          	{"Phase" : Value, ... },
          	...
          ]
	 }
}
\end{lstlisting}

\begin{marginfigure}
\includegraphics[width=4cm]{winding_twolayer_topbottom.pdf}
\caption{Two layer, top and bottom coils.}
\label{fig:winding_twolayer_topbottom}
\end{marginfigure}

For the connection matrix to be defined, coil sides \textbf{CM\#} need to be listed and each one consists of conductors belonging to the machine phases. Phases are \textbf{A} to  \textbf{F} to denote one-phase to six-phases machine, respectively. Additionally, a value of $1$ means current flowing positively perpendicular to the machine plane, namely +Z if it's assumed that geometry sits on XY-plane. On the contrary, $-1$ will indicate negative current going into -Z direction.

\section[One Layer]{One Layer}
Figure \ref{fig:winding_onelayer} shows points, lines and loops in order to build surfaces if the geometry is to be meshed. The conductor area results of merging the inner rectangle of both slot sides, whilst the outer one defines slot liner or insulation area. As a result, connection matrix requires only one coil side to be set.

\section[Two Layers - Side by Side]{Two Layers - Side by Side}
Figure \ref{fig:winding_twolayer_sidebyside} shows points, lines and loops in order to build surfaces if the geometry is to be meshed. The conductor area will not be merged to its mirror, therefore the connection matrix needs the two coil sides since each conductor area might belong to different phase. The outer rectangle defines slot liner or insulation area.

\section[Two Layers - Top and Bottom]{Two Layers - Top and Bottom}
Figure \ref{fig:winding_twolayer_topbottom} shows points, lines and loops in order to build surfaces if the geometry is to be meshed. Analogous to previous configuration, with the difference that conductor areas are arranged vertically and will be merged to its mirror. Connection matrix and insulation area remain same as before.

\begin{marginfigure}
\includegraphics[width=4cm]{winding_fourlayer.pdf}
\caption{Four layer coils.}
\label{fig:winding_fourlayer}
\end{marginfigure}

\section[Three Layers]{Three Layers}
TO-DO: No implemented yet.

\section[Four Layers]{Four Layers}
TO-DO: No implemented yet.

\section[Multiple Layers]{Multiple Layers}
TO-DO: No implemented yet.

\section[Stranded Conductors]{Stranded Conductors}
TO-DO: No implemented yet.

\chapter{Permanent Magnet Synchronous Machines}
\label{ch:pmsm}
\begin{fullwidth}
Rotor configuration mostly defines the type of electric machine, for instance, a permanent magnet synchronous machine consists of at least one rotor with magnets, pockets (none if SPM) and a material which rotor is made of. Figure \ref{fig:pmsm} shows that UFFEMA defines a Permanent Magnet machines with a rotor that can be of type IPM or SPM. Several subcategories are implemented for each and set forth in the following sections.
\end{fullwidth}

\begin{figure*}[h]
\includegraphics[width=\linewidth]{Rotor_PermanentMagnet.pdf}
\caption{Configuration of permanent magnet synchronous machines.}
\label{fig:pmsm}
\end{figure*}

\section{Rotor}
\begin{fullwidth}
As can be seen in Figure \ref{fig:pmsm}, at least one rotor is found in a rotating machine and is generally  characterized by having dimensions, pole pairs and material. The rest of parameters that describe magnet and magnet pockets features depends on each particular type of rotor configuration. The parameters recognized by UFFEMA are as follows,
\end{fullwidth}
\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{type}}: \textit{String}}] Type of rotor, for instance, \textit{spm0}, \textit{ipm0}, etc.
\item[\normalfont{\ttfamily{\textbf{oRr}}: \textit{Float}}] Rotor outer radius.
\item[\normalfont{\ttfamily{\textbf{iRr}}: \textit{Float}}] Rotor inner radius.
\item[\normalfont{\ttfamily{\textbf{pp}}: \textit{Integer}}] Number of pole pairs.
\item[\normalfont{\ttfamily{\textbf{Rl}}: \textit{Float}}] Length of rotor stack.
\item[\normalfont{\ttfamily{\textbf{magnets}}: \textit{Object}}] Settings for rotor magnets according to type of rotor.
\item[\normalfont{\ttfamily{\textbf{material}}: \textit{Object}}] Settings for rotor material according to object detailed in chapter \ref{ch:material}.
\item[\normalfont{\ttfamily{\textbf{pockets}}: \textit{Object}}] Settings for magnet pockets according to type of rotor.
\end{description}

The example for the settings file in JSON format is given below,

\begin{lstlisting}[language=json]
{
	 "machine" : {
    	"type" : String,
    	"rotor" : {
      		"type" :  String,
     		"oRr" : Float,
      		"iRr" : Float,
      		"pp" : Integer,
      		"Rl" : Float,
      		"magnets" : {...},
      		"pockets" : {...},
      		"material" : {...}
		},
}
\end{lstlisting}

\begin{marginfigure}
\includegraphics[width=\linewidth]{SPM_0_parameters.pdf}
\caption{Parameters for rotor of surface permanent magnet motor type $0$.}
\label{fig:spm0_parameters}
\end{marginfigure}

\section{Rotor Types}
Rotor type is tightly linked to magnet and pocket type. Hence, the next sections, that deal with type of permanent magnet rotors currently supported by UFFEMA, includes their own definition for its magnets and pockets.
\subsection{SPM Type $0$}
The following parameters set forth magnet settings for surface permanent magnet machines with rotor type $0$ (spm$0$), according to Figure \ref{fig:spm0_parameters} and \ref{fig:spm0}. Notice that this geometry does not require to include any magnet pocket settings. The latter figure shows points, lines and loops in order to build surfaces if the geometry is to be meshed. Settings for rotor material and magnet material are according to object detailed in chapter \ref{ch:material}. This type of rotor only supports \textit{arc} magnets and these should be defined as follows:

\begin{description}[leftmargin=4.5cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{type}}: \textit{String}}] Magnet type, i.e., \textit{arc}.
\item[\normalfont{\ttfamily{\textbf{magnetisation}}: \textit{String}}] Type of magnetisation, i.e., \textit{parallel}, \textit{radial}, \textit{halbach}, etc.
\item[\normalfont{\ttfamily{\textbf{material}}: \textit{Object}}] Settings according to object detailed in chapter \ref{ch:material}.
\item[\normalfont{\ttfamily{\textbf{dimension}}: \textit{Array}}] List of parameters that defines geometry for each magnet..
\end{description}

\begin{marginfigure}
\includegraphics[width=\linewidth]{SPM_0.pdf}
\caption{Rotor of surface permanent magnet motor type $0$. Points, lines and loops.}
\label{fig:spm0}
\end{marginfigure}

The length of the array \textbf{dimension} must be twice the value of \textbf{pp}, which allows to define an asymmetrical geometry being each magnet independently set. The parameters for magnets of type \textit{arc} are:

\begin{description}[leftmargin=4.5cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{Ml}}: \textit{Float}}] Magnet thickness, or magnet length measured radially.
\item[\normalfont{\ttfamily{\textbf{Mw}}: \textit{Float}}] Magnet width.
\item[\normalfont{\ttfamily{\textbf{Mps}}: \textit{Float}}] Pole shaping ratio, between $0$ and $1$. It scales accordingly the magnet length (\texttt{\textbf{Ml}}) at the sides.
\item[\normalfont{\ttfamily{\textbf{iMr}}: \textit{Float}}] Radius of magnet inner arc, for \texttt{\textit{spm0}}, this value should be the same as  \texttt{\textbf{oRr}}.
\item[\normalfont{\ttfamily{\textbf{delta}}: \textit{Float}}] Angle to tangentially shift magnets from their centre.
\end{description}

\section[SPM Type 1]{SPM Type $1$}
TO-DO: Implemented and documentation will be added shortly.

\subsection[IPM Type 0]{IPM Type $0$}
TO-DO: Implemented and documentation will be added shortly.

\subsection[IPM Type 1]{IPM Type $1$}
TO-DO: Implemented and documentation will be added shortly.

\chapter{Material}\label{ch:material}
\begin{fullwidth}
This object can be used to define either magnetic or non-magnetic materials. Most of its fields are explained below however it is noteworthy that not all of these are mandatory and should vary depending of the nature of material being defined.
\end{fullwidth}

\begin{description}[leftmargin=4cm, style=nextline]
\item[\normalfont{\ttfamily{\textbf{name}}: \textit{String}}] Material identification.
\item[\normalfont{\ttfamily{\textbf{BHcurve}}: \textit{Array}}] Values of \texttt{\textit{B}} and \texttt{\textit{H}} in order to define Induction curves.
\item[\normalfont{\ttfamily{\textbf{resistivity}}: \textit{Float}}] Material resistivity.
\item[\normalfont{\ttfamily{\textbf{Br}}: \textit{Float}}] Residual flux for hard magnetic materials..
\item[\normalfont{\ttfamily{\textbf{mur}}: \textit{Float}}] Relative permeability.
\end{description}

The example for the settings file in JSON format is given below,

\begin{lstlisting}[language=json]
"material" : {
 	"name" : String,
   	"BHcurve" : [
     		{"B" : Float, "H" : Float },
     		...
     	],
    	"resistivity" : Float,
     	"Br" : Float,
     	"mur" : Float
}

\end{lstlisting}

\chapter{Examples}\label{ch:examples}
Examples are available in the source code and located in the folder \textbf{uffema/tests}.

\section[Motor 0]{File: motor\_$0$.msf}
Surface permanent magnet motor. \marginnote{This example shows a fractional slot concentrated winding machine (FSCW) with nine slots, six poles and surface permanent magnet rotor. It is a inner rotor configuration of type \textit{spm0}, with Neodymium magnets, three-phase winding and steel M80065A.}

\begin{lstlisting}[language=json]
{
  "machine" : {
    "type" : "spm",
    "stator" : {
      "type" : "standardouter",
      "oSr" : 42.5e-3,
      "iSr" : 18.98e-3,
      "Ns" : 9,
      "Sl" : 36.5e-3,
      "slots" : {
        "type": "type0",
        "dimension": [
          {
            "SOpos": 20.0,
            "Spos": 20.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 60.0,
            "Spos": 60.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 100.0,
            "Spos": 100.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 140.0,
            "Spos": 140.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 180.0,
            "Spos": 180.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 220.0,
            "Spos": 220.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 260.0,
            "Spos": 260.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 300.0,
            "Spos": 300.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          },
          {
            "SOpos": 340.0,
            "Spos": 340.0,
            "h0": 0.89e-3,
            "h1": 1.5e-3,
            "h2": 18.5e-3,
            "h3": 1e-3,
            "w0": 2.55e-3,
            "w1": 6.4e-3,
            "w2": 16.4e-3
          }
        ]
      },
      "material" : {
        "name" : "stator_steel_M800_65A",
        "BHcurve" : [
          {"B" : 0.0, "H" : 0.0},
          {"B" : 0.1, "H" : 74.7},
          {"B" : 0.2, "H" : 97.5},
          {"B" : 0.3, "H" : 110},
          {"B" : 0.4, "H" : 120},
          {"B" : 0.5, "H" : 130},
          {"B" : 0.6, "H" : 140},
          {"B" : 0.7, "H" : 150},
          {"B" : 0.8, "H" : 162},
          {"B" : 0.9, "H" : 175},
          {"B" : 1.0, "H" : 190},
          {"B" : 1.1, "H" : 208},
          {"B" : 1.2, "H" : 227},
          {"B" : 1.3, "H" : 265},
          {"B" : 1.4, "H" : 366},
          {"B" : 1.5, "H" : 633},
          {"B" : 1.6, "H" : 1490},
          {"B" : 1.7, "H" : 3670},
          {"B" : 1.8, "H" : 7420},
          {"B" : 1.9, "H" : 13000},
          {"B" : 2.0, "H" : 21000},
          {"B" : 2.1, "H" : 34000},
          {"B" : 2.2, "H" : 55000},
          {"B" : 2.3, "H" : 88000},
          {"B" : 2.4, "H" : 140000},
          {"B" : 2.5, "H" : 220000},
          {"B" : 2.6, "H" : 349000},
          {"B" : 2.7, "H" : 550000},
          {"B" : 2.8, "H" : 860000},
          {"B" : 2.9, "H" : 1350000},
          {"B" : 3.0, "H" : 2200000},
          {"B" : 4.0, "H" : 60000000}
        ],
        "resistivity" : 1e-4
      },
      "winding" : {
        "material" : {
          "name" : "copper",
          "BHcurve" : null,
          "resistivity" : 1.724e-8
        },
        "Layers" : 2,
        "LayersType" : "sidebyside",
        "type" : "concentrated",
        "Conn" : "wye",
        "NoPhases" : 3,
        "Cseries" : 1,
        "Cparallel" : 3,
        "Cturns" : 22,
        "wih" : 1,
        "condDiam" : 1.52e-3,
        "Cpitch" : 1,
        "CM" : {
          "CM1" : [
            {"A" : 0, "B" : 1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : 1, "D" : null, "E" : null, "F" : null },
            {"A" : 1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : 1, "D" : null, "E" : null, "F" : null },
            {"A" : 1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : 1, "D" : null, "E" : null, "F" : null },
            {"A" : 1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null }
          ],
          "CM2" : [
            {"A" : -1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : -1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : -1, "D" : null, "E" : null, "F" : null },
            {"A" : -1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : -1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : -1, "D" : null, "E" : null, "F" : null },
            {"A" : -1, "B" : 0, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : -1, "C" : 0, "D" : null, "E" : null, "F" : null },
            {"A" : 0, "B" : 0, "C" : -1, "D" : null, "E" : null, "F" : null }
          ]
        }
      }
    },
    "rotor" : {
      "type" : "spm0",
      "oRr" : 15.2e-3,
      "iRr" : 6e-3,
      "pp" : 3,
      "Rl" : 36.5e-3,
      "magnets" : {
        "type" : "arc",
        "magnetisation" : "parallel",
        "material" : {
          "name" : "NdFeB32",
          "BHcurve" : null,
          "resistivity" : 1e-6,
          "Br" : 1.21,
          "mur" : 1.071
        },
        "dimension" : [
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          },
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          },
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          },
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          },
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          },
          {
            "Ml" : 2.98e-3,
            "Mw" : 13.6e-3,
            "Mps" : 1.0,
            "iMr" : 15.2e-3,
            "delta" : 0
          }
        ]
      },
      "material" : {
        "name" : "rotor_steel_M800_65A",
        "BHcurve" : [
          {"B" : 0.0, "H" : 0.0},
          {"B" : 0.1, "H" : 74.7},
          {"B" : 0.2, "H" : 97.5},
          {"B" : 0.3, "H" : 110},
          {"B" : 0.4, "H" : 120},
          {"B" : 0.5, "H" : 130},
          {"B" : 0.6, "H" : 140},
          {"B" : 0.7, "H" : 150},
          {"B" : 0.8, "H" : 162},
          {"B" : 0.9, "H" : 175},
          {"B" : 1.0, "H" : 190},
          {"B" : 1.1, "H" : 208},
          {"B" : 1.2, "H" : 227},
          {"B" : 1.3, "H" : 265},
          {"B" : 1.4, "H" : 366},
          {"B" : 1.5, "H" : 633},
          {"B" : 1.6, "H" : 1490},
          {"B" : 1.7, "H" : 3670},
          {"B" : 1.8, "H" : 7420},
          {"B" : 1.9, "H" : 13000},
          {"B" : 2.0, "H" : 21000},
          {"B" : 2.1, "H" : 34000},
          {"B" : 2.2, "H" : 55000},
          {"B" : 2.3, "H" : 88000},
          {"B" : 2.4, "H" : 140000},
          {"B" : 2.5, "H" : 220000},
          {"B" : 2.6, "H" : 349000},
          {"B" : 2.7, "H" : 550000},
          {"B" : 2.8, "H" : 860000},
          {"B" : 2.9, "H" : 1350000},
          {"B" : 3.0, "H" : 2200000},
          {"B" : 4.0, "H" : 60000000}
        ],
        "resistivity" : 1e-4
      },
      "init_pos" : -30.0
    }
  }
}
\end{lstlisting}

%----------------------------------------------------------------------------------------

\backmatter

%----------------------------------------------------------------------------------------
%	BIBLIOGRAPHY
%----------------------------------------------------------------------------------------

\bibliography{uffema-refman-bib} % Use the bibliography.bib file for the bibliography
\bibliographystyle{plainnat} % Use the plainnat style of referencing

%----------------------------------------------------------------------------------------

\printindex % Print the index at the very end of the document

\end{document}