message: Protect against null items
  Fixes
diff: @@ -269,13 +269,13 @@ class D1LoadoutBuilder extends React.Component<Props, State> {
  {t('LB.Vendor')} {loadingVendors && <AppIcon spinning={true} icon={refreshIcon} />}
  </label>
  <div className="loadout-builder-section">
  - {_.sortBy(
  - bucket[type].filter((i) => i.primStat!.value >= 280),
  - (i) => -i.quality!.min
  + {_.sortBy(bucket[type].filter((i) => i.primStat && i.primStat.value >= 280), (i) =>
  + i.quality ? -i.quality.min : 0
  ).map((item) => (
  <div key={item.index} className="item-container">
  <div className="item-stats">
  - {item.stats!.map((stat) => (
  + {item.stats &&
  + item.stats.map((stat) => (
  <div
  key={stat.id}
  style={getColor(
  @@ -794,8 +794,11 @@ const unwantedPerkHashes = [
  ];
  function filterPerks(perks: D1GridNode[], item: D1Item) {
  + if (!item.talentGrid) {
  + return [];
  + }
  // ['Infuse', 'Twist Fate', 'Reforge Artifact', 'Reforge Shell', 'Increase Intellect', 'Increase Discipline', 'Increase Strength', 'Deactivate Chroma']
  - return _.uniqBy(perks.concat(item.talentGrid!.nodes), (node: any) => node.hash).filter(
  + return _.uniqBy(perks.concat(item.talentGrid.nodes), (node: any) => node.hash).filter(
  (node: any) => !unwantedPerkHashes.includes(node.hash)
  );
  }
  